wowok 2.1.40 → 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.js +1 -253
- package/dist/cjs/bcs/effects.js +1 -199
- package/dist/cjs/bcs/index.js +1 -51
- package/dist/cjs/bcs/pure.js +1 -36
- package/dist/cjs/bcs/type-tag-serializer.js +1 -104
- package/dist/cjs/bcs/types.js +1 -3
- package/dist/cjs/client/index.js +1 -4
- package/dist/cjs/client/network.js +1 -15
- package/dist/cjs/cryptography/index.js +1 -6
- package/dist/cjs/cryptography/intent.js +1 -14
- package/dist/cjs/cryptography/keypair.js +1 -74
- package/dist/cjs/cryptography/mnemonics.js +1 -20
- package/dist/cjs/cryptography/publickey.js +1 -80
- package/dist/cjs/cryptography/signature-scheme.js +1 -22
- package/dist/cjs/cryptography/signature.js +1 -41
- package/dist/cjs/experimental/cache.js +1 -58
- package/dist/cjs/experimental/client.js +1 -19
- package/dist/cjs/experimental/core.js +1 -80
- package/dist/cjs/experimental/errors.js +1 -24
- package/dist/cjs/experimental/index.js +1 -5
- package/dist/cjs/experimental/persistent-storage.js +1 -220
- package/dist/cjs/experimental/persistent-storage.test.js +1 -144
- package/dist/cjs/experimental/transports/utils.js +1 -96
- package/dist/cjs/experimental/types.js +1 -1
- package/dist/cjs/faucet/faucet.js +1 -99
- package/dist/cjs/faucet/index.js +1 -1
- package/dist/cjs/grpc/client.js +1 -42
- package/dist/cjs/grpc/core.js +1 -587
- package/dist/cjs/grpc/index.js +1 -2
- package/dist/cjs/grpc/proto/google/protobuf/any.js +1 -106
- package/dist/cjs/grpc/proto/google/protobuf/duration.js +1 -58
- package/dist/cjs/grpc/proto/google/protobuf/empty.js +1 -7
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +1 -47
- package/dist/cjs/grpc/proto/google/protobuf/struct.js +1 -191
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +1 -91
- package/dist/cjs/grpc/proto/google/rpc/error_details.js +1 -265
- package/dist/cjs/grpc/proto/google/rpc/status.js +1 -23
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +1 -46
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +1 -29
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +1 -22
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +1 -54
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -60
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -144
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +1 -271
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +1 -64
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +1 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +1 -62
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -64
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +1 -481
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +1 -40
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +1 -61
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +1 -57
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +1 -39
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +1 -329
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +1 -447
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +1 -27
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +1 -206
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +1 -19
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +1 -109
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +1 -90
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +1 -30
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +1 -39
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +1 -30
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +1 -501
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -10
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +1 -15
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -62
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +1 -31
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +1 -504
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +1 -15
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +1 -37
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +1 -709
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1 -950
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +1 -19
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -144
- package/dist/cjs/index.js +1 -22
- package/dist/cjs/jsonRpc/client.js +1 -516
- package/dist/cjs/jsonRpc/core.js +1 -587
- package/dist/cjs/jsonRpc/errors.js +1 -38
- package/dist/cjs/jsonRpc/http-transport.js +1 -70
- package/dist/cjs/jsonRpc/index.js +1 -3
- package/dist/cjs/jsonRpc/json-rpc-resolver.js +1 -296
- package/dist/cjs/jsonRpc/rpc-websocket-client.js +1 -155
- package/dist/cjs/jsonRpc/types/chain.js +1 -1
- package/dist/cjs/jsonRpc/types/changes.js +1 -1
- package/dist/cjs/jsonRpc/types/coins.js +1 -1
- package/dist/cjs/jsonRpc/types/common.js +1 -1
- package/dist/cjs/jsonRpc/types/generated.js +1 -1
- package/dist/cjs/jsonRpc/types/index.js +1 -1
- package/dist/cjs/jsonRpc/types/params.js +1 -1
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +1 -58
- package/dist/cjs/keypairs/ed25519/index.js +1 -2
- package/dist/cjs/keypairs/ed25519/keypair.js +1 -90
- package/dist/cjs/keypairs/ed25519/publickey.js +1 -50
- package/dist/cjs/keypairs/index.js +1 -4
- package/dist/cjs/keypairs/passkey/index.js +1 -2
- package/dist/cjs/keypairs/passkey/keypair.js +1 -155
- package/dist/cjs/keypairs/passkey/publickey.js +1 -117
- package/dist/cjs/keypairs/passkey/types.js +1 -1
- package/dist/cjs/keypairs/secp256k1/index.js +1 -2
- package/dist/cjs/keypairs/secp256k1/keypair.js +1 -82
- package/dist/cjs/keypairs/secp256k1/publickey.js +1 -51
- package/dist/cjs/keypairs/secp256r1/index.js +1 -2
- package/dist/cjs/keypairs/secp256r1/keypair.js +1 -78
- package/dist/cjs/keypairs/secp256r1/publickey.js +1 -52
- package/dist/cjs/multisig/index.js +1 -2
- package/dist/cjs/multisig/publickey.js +1 -201
- package/dist/cjs/multisig/signer.js +1 -58
- package/dist/cjs/transactions/Arguments.js +1 -9
- package/dist/cjs/transactions/Commands.js +1 -102
- package/dist/cjs/transactions/Inputs.js +1 -52
- package/dist/cjs/transactions/ObjectCache.js +1 -205
- package/dist/cjs/transactions/Transaction.js +1 -574
- package/dist/cjs/transactions/TransactionData.js +1 -409
- package/dist/cjs/transactions/__tests__/Transaction.test.js +1 -160
- package/dist/cjs/transactions/__tests__/bcs.test.js +1 -182
- package/dist/cjs/transactions/data/internal.js +1 -169
- package/dist/cjs/transactions/data/v1.js +1 -469
- package/dist/cjs/transactions/data/v2.js +1 -97
- package/dist/cjs/transactions/executor/caching.js +1 -65
- package/dist/cjs/transactions/executor/parallel.js +1 -347
- package/dist/cjs/transactions/executor/queue.js +1 -59
- package/dist/cjs/transactions/executor/serial.js +1 -99
- package/dist/cjs/transactions/hash.js +1 -8
- package/dist/cjs/transactions/index.js +1 -12
- package/dist/cjs/transactions/intents/CoinWithBalance.js +1 -145
- package/dist/cjs/transactions/object.js +1 -87
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +1 -11
- package/dist/cjs/transactions/pure.js +1 -36
- package/dist/cjs/transactions/resolve.js +1 -69
- package/dist/cjs/transactions/serializer.js +1 -167
- package/dist/cjs/transactions/utils.js +1 -121
- package/dist/cjs/utils/constants.js +1 -18
- package/dist/cjs/utils/derived-objects.js +1 -8
- package/dist/cjs/utils/dynamic-fields.js +1 -17
- package/dist/cjs/utils/format.js +1 -11
- package/dist/cjs/utils/index.js +1 -8
- package/dist/cjs/utils/move-registry.js +1 -24
- package/dist/cjs/utils/sui-types.js +1 -66
- package/dist/cjs/utils/suins.js +1 -33
- package/dist/cjs/verify/index.js +1 -1
- package/dist/cjs/verify/verify.js +1 -87
- package/dist/cjs/version.js +1 -2
- package/dist/cjs/w/call/allocation.js +1 -345
- package/dist/cjs/w/call/arb.js +1 -103
- package/dist/cjs/w/call/arbitration.js +1 -1192
- package/dist/cjs/w/call/base.js +1 -293
- package/dist/cjs/w/call/contact.js +1 -345
- package/dist/cjs/w/call/demand.js +1 -681
- package/dist/cjs/w/call/entity.js +1 -173
- package/dist/cjs/w/call/guard-ins.js +1 -4449
- package/dist/cjs/w/call/guard.d.ts +111 -0
- package/dist/cjs/w/call/guard.js +1 -1048
- package/dist/cjs/w/call/index.js +1 -22
- package/dist/cjs/w/call/machine.js +1 -1127
- package/dist/cjs/w/call/order.js +1 -337
- package/dist/cjs/w/call/passport.js +1 -220
- package/dist/cjs/w/call/payment.js +1 -178
- package/dist/cjs/w/call/permission.js +1 -1162
- package/dist/cjs/w/call/personal.js +1 -139
- package/dist/cjs/w/call/progress.js +1 -678
- package/dist/cjs/w/call/proof.js +1 -66
- package/dist/cjs/w/call/repository.js +1 -1024
- package/dist/cjs/w/call/resource.js +1 -108
- package/dist/cjs/w/call/reward.js +1 -675
- package/dist/cjs/w/call/service.js +1 -1960
- package/dist/cjs/w/call/treasury.js +1 -873
- package/dist/cjs/w/call/util.d.ts +1 -0
- package/dist/cjs/w/call/util.js +1 -566
- package/dist/cjs/w/common.js +1 -571
- package/dist/cjs/w/exception.js +1 -618
- package/dist/cjs/w/index.js +1 -8
- package/dist/cjs/w/local/account.js +1 -656
- package/dist/cjs/w/local/cache.js +1 -161
- package/dist/cjs/w/local/config.js +1 -43
- package/dist/cjs/w/local/index.js +1 -228
- package/dist/cjs/w/local/local.js +1 -574
- package/dist/cjs/w/local/storage.js +1 -185
- package/dist/cjs/w/local/token.js +1 -131
- package/dist/cjs/w/local/util.js +1 -26
- package/dist/cjs/w/local/wip.js +1 -864
- package/dist/cjs/w/messenger/crypto.js +1 -380
- package/dist/cjs/w/messenger/index.js +1 -4
- package/dist/cjs/w/messenger/messenger-api.js +1 -1154
- package/dist/cjs/w/messenger/messenger-manager.js +1 -1003
- package/dist/cjs/w/messenger/messenger.js +1 -1093
- package/dist/cjs/w/messenger/server.js +1 -343
- package/dist/cjs/w/messenger/session.js +1 -628
- package/dist/cjs/w/messenger/storage.js +1 -1023
- package/dist/cjs/w/messenger/templates/wts-html-template.js +1 -371
- package/dist/cjs/w/messenger/types.js +1 -76
- package/dist/cjs/w/messenger/utils.js +1 -12
- package/dist/cjs/w/query/bult-in.js +1 -95
- package/dist/cjs/w/query/event.js +1 -137
- package/dist/cjs/w/query/index.js +1 -5
- package/dist/cjs/w/query/object.js +1 -1550
- package/dist/cjs/w/query/received.js +1 -62
- package/dist/cjs/w/query/util.js +1 -49
- package/dist/cjs/w/util.js +1 -587
- package/dist/esm/bcs/bcs.js +1 -253
- package/dist/esm/bcs/effects.js +1 -199
- package/dist/esm/bcs/index.js +1 -51
- package/dist/esm/bcs/pure.js +1 -36
- package/dist/esm/bcs/type-tag-serializer.js +1 -104
- package/dist/esm/bcs/types.js +1 -3
- package/dist/esm/client/index.js +1 -4
- package/dist/esm/client/network.js +1 -15
- package/dist/esm/cryptography/index.js +1 -6
- package/dist/esm/cryptography/intent.js +1 -14
- package/dist/esm/cryptography/keypair.js +1 -74
- package/dist/esm/cryptography/mnemonics.js +1 -20
- package/dist/esm/cryptography/publickey.js +1 -80
- package/dist/esm/cryptography/signature-scheme.js +1 -22
- package/dist/esm/cryptography/signature.js +1 -41
- package/dist/esm/experimental/cache.js +1 -58
- package/dist/esm/experimental/client.js +1 -19
- package/dist/esm/experimental/core.js +1 -80
- package/dist/esm/experimental/errors.js +1 -24
- package/dist/esm/experimental/index.js +1 -5
- package/dist/esm/experimental/persistent-storage.js +1 -220
- package/dist/esm/experimental/persistent-storage.test.js +1 -144
- package/dist/esm/experimental/transports/utils.js +1 -96
- package/dist/esm/experimental/types.js +1 -1
- package/dist/esm/faucet/faucet.js +1 -99
- package/dist/esm/faucet/index.js +1 -1
- package/dist/esm/grpc/client.js +1 -42
- package/dist/esm/grpc/core.js +1 -587
- package/dist/esm/grpc/index.js +1 -2
- package/dist/esm/grpc/proto/google/protobuf/any.js +1 -106
- package/dist/esm/grpc/proto/google/protobuf/duration.js +1 -58
- package/dist/esm/grpc/proto/google/protobuf/empty.js +1 -7
- package/dist/esm/grpc/proto/google/protobuf/field_mask.js +1 -47
- package/dist/esm/grpc/proto/google/protobuf/struct.js +1 -191
- package/dist/esm/grpc/proto/google/protobuf/timestamp.js +1 -91
- package/dist/esm/grpc/proto/google/rpc/error_details.js +1 -265
- package/dist/esm/grpc/proto/google/rpc/status.js +1 -23
- package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +1 -46
- package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +1 -29
- package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +1 -22
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +1 -54
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -60
- package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -144
- package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +1 -271
- package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +1 -64
- package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +1 -6
- package/dist/esm/grpc/proto/sui/rpc/v2/event.js +1 -62
- package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -64
- package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +1 -481
- package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +1 -40
- package/dist/esm/grpc/proto/sui/rpc/v2/input.js +1 -61
- package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +1 -57
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +1 -39
- package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +1 -329
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +1 -447
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +1 -27
- package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +1 -206
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +1 -19
- package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +1 -109
- package/dist/esm/grpc/proto/sui/rpc/v2/object.js +1 -90
- package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +1 -30
- package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +1 -39
- package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +1 -30
- package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +1 -501
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -10
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +1 -15
- package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -62
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +1 -31
- package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +1 -504
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +1 -15
- package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +1 -37
- package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +1 -709
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1 -950
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +1 -19
- package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -144
- package/dist/esm/index.js +1 -22
- package/dist/esm/jsonRpc/client.js +1 -516
- package/dist/esm/jsonRpc/core.js +1 -587
- package/dist/esm/jsonRpc/errors.js +1 -38
- package/dist/esm/jsonRpc/http-transport.js +1 -70
- package/dist/esm/jsonRpc/index.js +1 -3
- package/dist/esm/jsonRpc/json-rpc-resolver.js +1 -296
- package/dist/esm/jsonRpc/rpc-websocket-client.js +1 -155
- package/dist/esm/jsonRpc/types/chain.js +1 -1
- package/dist/esm/jsonRpc/types/changes.js +1 -1
- package/dist/esm/jsonRpc/types/coins.js +1 -1
- package/dist/esm/jsonRpc/types/common.js +1 -1
- package/dist/esm/jsonRpc/types/generated.js +1 -1
- package/dist/esm/jsonRpc/types/index.js +1 -1
- package/dist/esm/jsonRpc/types/params.js +1 -1
- package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +1 -58
- package/dist/esm/keypairs/ed25519/index.js +1 -2
- package/dist/esm/keypairs/ed25519/keypair.js +1 -90
- package/dist/esm/keypairs/ed25519/publickey.js +1 -50
- package/dist/esm/keypairs/index.js +1 -4
- package/dist/esm/keypairs/passkey/index.js +1 -2
- package/dist/esm/keypairs/passkey/keypair.js +1 -155
- package/dist/esm/keypairs/passkey/publickey.js +1 -117
- package/dist/esm/keypairs/passkey/types.js +1 -1
- package/dist/esm/keypairs/secp256k1/index.js +1 -2
- package/dist/esm/keypairs/secp256k1/keypair.js +1 -82
- package/dist/esm/keypairs/secp256k1/publickey.js +1 -51
- package/dist/esm/keypairs/secp256r1/index.js +1 -2
- package/dist/esm/keypairs/secp256r1/keypair.js +1 -78
- package/dist/esm/keypairs/secp256r1/publickey.js +1 -52
- package/dist/esm/multisig/index.js +1 -2
- package/dist/esm/multisig/publickey.js +1 -201
- package/dist/esm/multisig/signer.js +1 -58
- package/dist/esm/transactions/Arguments.js +1 -9
- package/dist/esm/transactions/Commands.js +1 -102
- package/dist/esm/transactions/Inputs.js +1 -52
- package/dist/esm/transactions/ObjectCache.js +1 -205
- package/dist/esm/transactions/Transaction.js +1 -574
- package/dist/esm/transactions/TransactionData.js +1 -409
- package/dist/esm/transactions/__tests__/Transaction.test.js +1 -160
- package/dist/esm/transactions/__tests__/bcs.test.js +1 -182
- package/dist/esm/transactions/data/internal.js +1 -169
- package/dist/esm/transactions/data/v1.js +1 -469
- package/dist/esm/transactions/data/v2.js +1 -97
- package/dist/esm/transactions/executor/caching.js +1 -65
- package/dist/esm/transactions/executor/parallel.js +1 -347
- package/dist/esm/transactions/executor/queue.js +1 -59
- package/dist/esm/transactions/executor/serial.js +1 -99
- package/dist/esm/transactions/hash.js +1 -8
- package/dist/esm/transactions/index.js +1 -12
- package/dist/esm/transactions/intents/CoinWithBalance.js +1 -145
- package/dist/esm/transactions/object.js +1 -87
- package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +1 -11
- package/dist/esm/transactions/pure.js +1 -36
- package/dist/esm/transactions/resolve.js +1 -69
- package/dist/esm/transactions/serializer.js +1 -167
- package/dist/esm/transactions/utils.js +1 -121
- package/dist/esm/utils/constants.js +1 -18
- package/dist/esm/utils/derived-objects.js +1 -8
- package/dist/esm/utils/dynamic-fields.js +1 -17
- package/dist/esm/utils/format.js +1 -11
- package/dist/esm/utils/index.js +1 -8
- package/dist/esm/utils/move-registry.js +1 -24
- package/dist/esm/utils/sui-types.js +1 -66
- package/dist/esm/utils/suins.js +1 -33
- package/dist/esm/verify/index.js +1 -1
- package/dist/esm/verify/verify.js +1 -87
- package/dist/esm/version.js +1 -2
- package/dist/esm/w/call/allocation.js +1 -345
- package/dist/esm/w/call/arb.js +1 -103
- package/dist/esm/w/call/arbitration.js +1 -1192
- package/dist/esm/w/call/base.js +1 -293
- package/dist/esm/w/call/contact.js +1 -345
- package/dist/esm/w/call/demand.js +1 -681
- package/dist/esm/w/call/entity.js +1 -173
- package/dist/esm/w/call/guard-ins.js +1 -4449
- package/dist/esm/w/call/guard.d.ts +111 -0
- package/dist/esm/w/call/guard.js +1 -1048
- package/dist/esm/w/call/index.js +1 -22
- package/dist/esm/w/call/machine.js +1 -1127
- package/dist/esm/w/call/order.js +1 -337
- package/dist/esm/w/call/passport.js +1 -220
- package/dist/esm/w/call/payment.js +1 -178
- package/dist/esm/w/call/permission.js +1 -1162
- package/dist/esm/w/call/personal.js +1 -139
- package/dist/esm/w/call/progress.js +1 -678
- package/dist/esm/w/call/proof.js +1 -66
- package/dist/esm/w/call/repository.js +1 -1024
- package/dist/esm/w/call/resource.js +1 -108
- package/dist/esm/w/call/reward.js +1 -675
- package/dist/esm/w/call/service.js +1 -1960
- package/dist/esm/w/call/treasury.js +1 -873
- package/dist/esm/w/call/util.d.ts +1 -0
- package/dist/esm/w/call/util.js +1 -566
- package/dist/esm/w/common.js +1 -571
- package/dist/esm/w/exception.js +1 -618
- package/dist/esm/w/index.js +1 -8
- package/dist/esm/w/local/account.js +1 -656
- package/dist/esm/w/local/cache.js +1 -161
- package/dist/esm/w/local/config.js +1 -43
- package/dist/esm/w/local/index.js +1 -228
- package/dist/esm/w/local/local.js +1 -574
- package/dist/esm/w/local/storage.js +1 -185
- package/dist/esm/w/local/token.js +1 -131
- package/dist/esm/w/local/util.js +1 -26
- package/dist/esm/w/local/wip.js +1 -864
- package/dist/esm/w/messenger/crypto.js +1 -380
- package/dist/esm/w/messenger/index.js +1 -4
- package/dist/esm/w/messenger/messenger-api.js +1 -1154
- package/dist/esm/w/messenger/messenger-manager.js +1 -1003
- package/dist/esm/w/messenger/messenger.js +1 -1093
- package/dist/esm/w/messenger/server.js +1 -343
- package/dist/esm/w/messenger/session.js +1 -628
- package/dist/esm/w/messenger/storage.js +1 -1023
- package/dist/esm/w/messenger/templates/wts-html-template.js +1 -371
- package/dist/esm/w/messenger/types.js +1 -76
- package/dist/esm/w/messenger/utils.js +1 -12
- package/dist/esm/w/query/bult-in.js +1 -95
- package/dist/esm/w/query/event.js +1 -137
- package/dist/esm/w/query/index.js +1 -5
- package/dist/esm/w/query/object.js +1 -1550
- package/dist/esm/w/query/received.js +1 -62
- package/dist/esm/w/query/util.js +1 -49
- package/dist/esm/w/util.js +1 -587
- package/package.json +5 -2
|
@@ -1,371 +1 @@
|
|
|
1
|
-
export function escapeHtml(text) {
|
|
2
|
-
if (!text)
|
|
3
|
-
return "";
|
|
4
|
-
return text
|
|
5
|
-
.replace(/&/g, "&")
|
|
6
|
-
.replace(/</g, "<")
|
|
7
|
-
.replace(/>/g, ">")
|
|
8
|
-
.replace(/"/g, """)
|
|
9
|
-
.replace(/'/g, "'");
|
|
10
|
-
}
|
|
11
|
-
export function formatFileSize(bytes) {
|
|
12
|
-
if (bytes < 1024)
|
|
13
|
-
return bytes + " B";
|
|
14
|
-
if (bytes < 1024 * 1024)
|
|
15
|
-
return (bytes / 1024).toFixed(1) + " KB";
|
|
16
|
-
return (bytes / (1024 * 1024)).toFixed(1) + " MB";
|
|
17
|
-
}
|
|
18
|
-
export function isNonTextMessage(msg) {
|
|
19
|
-
return !!msg.zipMetadata;
|
|
20
|
-
}
|
|
21
|
-
export function getFileTypeLabel(msg) {
|
|
22
|
-
if (msg.zipMetadata?.contentType) {
|
|
23
|
-
return msg.zipMetadata.contentType.toUpperCase();
|
|
24
|
-
}
|
|
25
|
-
const fileName = msg.zipMetadata?.fileName || "";
|
|
26
|
-
if (fileName.endsWith(".wts"))
|
|
27
|
-
return "WTS";
|
|
28
|
-
if (fileName.endsWith(".wip"))
|
|
29
|
-
return "WIP";
|
|
30
|
-
if (fileName.endsWith(".zip"))
|
|
31
|
-
return "ZIP";
|
|
32
|
-
if (fileName.endsWith(".json"))
|
|
33
|
-
return "JSON";
|
|
34
|
-
if (fileName.endsWith(".txt"))
|
|
35
|
-
return "TXT";
|
|
36
|
-
if (msg.zipMetadata)
|
|
37
|
-
return "ZIP";
|
|
38
|
-
return "FILE";
|
|
39
|
-
}
|
|
40
|
-
export function getThemeColors(theme) {
|
|
41
|
-
return {
|
|
42
|
-
bgColor: theme === "dark" ? "#1a1a1a" : "#ffffff",
|
|
43
|
-
textColor: theme === "dark" ? "#e0e0e0" : "#333333",
|
|
44
|
-
borderColor: theme === "dark" ? "#444444" : "#e0e0e0",
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
export function getMessageColors(theme, isMyMessage) {
|
|
48
|
-
if (isMyMessage) {
|
|
49
|
-
return {
|
|
50
|
-
bgColor: theme === "dark" ? "#1a365d" : "#e3f2fd",
|
|
51
|
-
borderColor: theme === "dark" ? "#3b82f6" : "#90caf9",
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return {
|
|
56
|
-
bgColor: theme === "dark" ? "#1e3a2f" : "#e8f5e9",
|
|
57
|
-
borderColor: theme === "dark" ? "#10b981" : "#a5d6a7",
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export function generateFileButton(msg, index, theme) {
|
|
62
|
-
if (!msg.plaintext || !msg.zipMetadata?.fileName)
|
|
63
|
-
return "";
|
|
64
|
-
const fileName = msg.zipMetadata.fileName;
|
|
65
|
-
const fileData = msg.plaintext;
|
|
66
|
-
const fileSize = msg.zipMetadata.fileSize || 0;
|
|
67
|
-
const fileType = getFileTypeLabel(msg);
|
|
68
|
-
const bgColor = theme === "dark" ? "#2a3f2a" : "#e8f5e9";
|
|
69
|
-
const borderColor = theme === "dark" ? "#4caf50" : "#4caf50";
|
|
70
|
-
const textColor = theme === "dark" ? "#81c784" : "#2e7d32";
|
|
71
|
-
const buttonBg = "#4caf50";
|
|
72
|
-
const buttonHover = "#45a049";
|
|
73
|
-
return `
|
|
74
|
-
<div style="margin: 12px 0; padding: 16px; background: ${bgColor}; border: 1px solid ${borderColor}; border-radius: 8px; text-align: center;">
|
|
75
|
-
<div style="font-size: 14px; color: ${textColor}; margin-bottom: 8px;">
|
|
76
|
-
📎 ${escapeHtml(fileType)} File
|
|
77
|
-
<span style="font-size: 12px; color: #666;">(${formatFileSize(fileSize)})</span>
|
|
78
|
-
</div>
|
|
79
|
-
<button
|
|
80
|
-
onclick="saveFile${index}()"
|
|
81
|
-
style="padding: 10px 24px; background: ${buttonBg}; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 14px;"
|
|
82
|
-
onmouseover="this.style.background='${buttonHover}'"
|
|
83
|
-
onmouseout="this.style.background='${buttonBg}'"
|
|
84
|
-
>
|
|
85
|
-
💾 Save ${escapeHtml(fileName)}
|
|
86
|
-
</button>
|
|
87
|
-
</div>
|
|
88
|
-
<script>
|
|
89
|
-
function saveFile${index}() {
|
|
90
|
-
try {
|
|
91
|
-
const base64Data = "${escapeHtml(fileData)}";
|
|
92
|
-
const byteCharacters = atob(base64Data);
|
|
93
|
-
const byteNumbers = new Array(byteCharacters.length);
|
|
94
|
-
for (let i = 0; i < byteCharacters.length; i++) {
|
|
95
|
-
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
96
|
-
}
|
|
97
|
-
const byteArray = new Uint8Array(byteNumbers);
|
|
98
|
-
|
|
99
|
-
let mimeType = "application/octet-stream";
|
|
100
|
-
const fileName = "${escapeHtml(fileName)}";
|
|
101
|
-
if (fileName.endsWith('.json')) mimeType = "application/json";
|
|
102
|
-
else if (fileName.endsWith('.zip')) mimeType = "application/zip";
|
|
103
|
-
else if (fileName.endsWith('.txt')) mimeType = "text/plain";
|
|
104
|
-
|
|
105
|
-
const blob = new Blob([byteArray], { type: mimeType });
|
|
106
|
-
const url = URL.createObjectURL(blob);
|
|
107
|
-
const a = document.createElement("a");
|
|
108
|
-
a.href = url;
|
|
109
|
-
a.download = fileName;
|
|
110
|
-
document.body.appendChild(a);
|
|
111
|
-
a.click();
|
|
112
|
-
document.body.removeChild(a);
|
|
113
|
-
URL.revokeObjectURL(url);
|
|
114
|
-
} catch (e) {
|
|
115
|
-
alert('保存文件失败: ' + e.message);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
<\/script>
|
|
119
|
-
`;
|
|
120
|
-
}
|
|
121
|
-
export function generateMessageHtml(msg, index, data) {
|
|
122
|
-
const { theme, borderColor, myAddress, maxLastReceivedLeafIndex } = data;
|
|
123
|
-
const isNonText = isNonTextMessage(msg);
|
|
124
|
-
const isMyMessage = msg.from.toLowerCase() === myAddress.toLowerCase();
|
|
125
|
-
const isDeliveredAndDecrypted = isMyMessage &&
|
|
126
|
-
maxLastReceivedLeafIndex >= 0 &&
|
|
127
|
-
msg.leafIndex <= maxLastReceivedLeafIndex;
|
|
128
|
-
const colors = getMessageColors(theme, isMyMessage);
|
|
129
|
-
const contentBgColor = theme === "dark" ? "#333333" : "#ffffff";
|
|
130
|
-
let contentHtml = "";
|
|
131
|
-
if (isNonText) {
|
|
132
|
-
contentHtml = generateFileButton(msg, index, theme);
|
|
133
|
-
}
|
|
134
|
-
else if (msg.plaintext) {
|
|
135
|
-
contentHtml = `<div style="margin: 12px 0; padding: 12px; background: ${contentBgColor}; border: 1px solid ${borderColor}; border-radius: 4px; font-size: 14px; line-height: 1.6; max-height: calc(1.6em * 6); overflow-y: auto; white-space: pre-wrap; word-break: break-word;">${escapeHtml(msg.plaintext)}</div>`;
|
|
136
|
-
}
|
|
137
|
-
const metaHtml = [
|
|
138
|
-
`<div>Merkle Root: ${escapeHtml(msg.merkleRoot)}</div>`,
|
|
139
|
-
msg.arkConfirmed
|
|
140
|
-
? `<div>ARK Confirmed: ${escapeHtml(msg.arkConfirmed.recipient)} at ${new Date(msg.arkConfirmed.timestamp).toLocaleString()}</div>`
|
|
141
|
-
: "",
|
|
142
|
-
msg.guardAddress
|
|
143
|
-
? `<div>Guard: ${escapeHtml(msg.guardAddress)}</div>`
|
|
144
|
-
: "",
|
|
145
|
-
msg.passportAddress
|
|
146
|
-
? `<div>Passport: ${escapeHtml(msg.passportAddress)}</div>`
|
|
147
|
-
: "",
|
|
148
|
-
]
|
|
149
|
-
.filter(Boolean)
|
|
150
|
-
.join("");
|
|
151
|
-
return `
|
|
152
|
-
<div style="margin: 16px 0; padding: 16px; border: 1px solid ${colors.borderColor}; border-radius: 8px; background: ${colors.bgColor};">
|
|
153
|
-
<div style="display: flex; justify-content: space-between; margin-bottom: 8px; font-size: 12px; color: #666;">
|
|
154
|
-
<span>From: ${escapeHtml(msg.from.slice(0, 6))}...${escapeHtml(msg.from.slice(-3))} To: ${escapeHtml(msg.to.slice(0, 6))}...${escapeHtml(msg.to.slice(-3))}</span>
|
|
155
|
-
<span>${new Date(msg.timestamp).toLocaleString()}</span>
|
|
156
|
-
</div>
|
|
157
|
-
${contentHtml}
|
|
158
|
-
<div style="margin: 8px 0; font-size: 11px; color: #666;">
|
|
159
|
-
${metaHtml}
|
|
160
|
-
</div>
|
|
161
|
-
<div style="font-size: 11px; color: #888; margin-top: 8px; padding-top: 8px; border-top: 1px solid ${borderColor}; display: flex; justify-content: space-between; align-items: center;">
|
|
162
|
-
<div>Leaf Index: ${msg.leafIndex}</div>
|
|
163
|
-
${isDeliveredAndDecrypted ? `<span style="color: #4caf50;">Delivered & Decrypted</span>` : ""}
|
|
164
|
-
</div>
|
|
165
|
-
</div>
|
|
166
|
-
`;
|
|
167
|
-
}
|
|
168
|
-
export function generateSignatureHtml(verifyResult, theme, textColor) {
|
|
169
|
-
if (!verifyResult.signatures || verifyResult.signatures.length === 0) {
|
|
170
|
-
return "";
|
|
171
|
-
}
|
|
172
|
-
const bgColor = theme === "dark" ? "#2a3f2a" : "#e8f5e9";
|
|
173
|
-
const headerColor = theme === "dark" ? "#81c784" : "#2e7d32";
|
|
174
|
-
const signaturesHtml = verifyResult.signatures
|
|
175
|
-
.map((s, idx) => `
|
|
176
|
-
<div style="font-size: 10px; color: ${textColor}; margin-left: 8px;">
|
|
177
|
-
${idx + 1}. ${s.address ? escapeHtml(s.address.slice(0, 6)) + "..." + escapeHtml(s.address.slice(-3)) : "Unknown"}:
|
|
178
|
-
${s.valid ? '<span style="color: #4caf50;">✓ Valid</span>' : '<span style="color: #f44336;">✗ Invalid</span>'}
|
|
179
|
-
</div>
|
|
180
|
-
`)
|
|
181
|
-
.join("");
|
|
182
|
-
return `
|
|
183
|
-
<div style="margin-top: 8px; padding: 8px; background: ${bgColor}; border-radius: 4px;">
|
|
184
|
-
<div style="font-size: 11px; color: ${headerColor}; margin-bottom: 4px;">
|
|
185
|
-
✓ Signature Verification (${verifyResult.signatures.length} signature${verifyResult.signatures.length > 1 ? "s" : ""})
|
|
186
|
-
</div>
|
|
187
|
-
${signaturesHtml}
|
|
188
|
-
</div>
|
|
189
|
-
`;
|
|
190
|
-
}
|
|
191
|
-
const MESSAGES_PER_PAGE = 100;
|
|
192
|
-
export function generateHtmlPage(data) {
|
|
193
|
-
const { title, theme, bgColor, textColor, borderColor, meta, payload, verifyResult, maxLastReceivedLeafIndex, } = data;
|
|
194
|
-
const totalMessages = payload.messages.length;
|
|
195
|
-
const totalPages = Math.ceil(totalMessages / MESSAGES_PER_PAGE);
|
|
196
|
-
const pagesHtml = [];
|
|
197
|
-
for (let page = 0; page < totalPages; page++) {
|
|
198
|
-
const start = page * MESSAGES_PER_PAGE;
|
|
199
|
-
const end = Math.min(start + MESSAGES_PER_PAGE, totalMessages);
|
|
200
|
-
const pageMessages = payload.messages.slice(start, end);
|
|
201
|
-
const pageMessagesHtml = pageMessages
|
|
202
|
-
.map((msg, index) => generateMessageHtml(msg, start + index, data))
|
|
203
|
-
.join("");
|
|
204
|
-
pagesHtml.push({
|
|
205
|
-
pageNum: page + 1,
|
|
206
|
-
html: `<div class="page" data-page="${page + 1}" style="display: ${page === 0 ? "block" : "none"};">${pageMessagesHtml}</div>`,
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
const paginationHtml = totalPages > 1
|
|
210
|
-
? generatePaginationHtml(totalPages, theme, textColor)
|
|
211
|
-
: "";
|
|
212
|
-
const allPagesHtml = pagesHtml.map((p) => p.html).join("");
|
|
213
|
-
const signatureHtml = generateSignatureHtml(verifyResult, theme, textColor);
|
|
214
|
-
const verificationStatus = verifyResult.valid
|
|
215
|
-
? `<span style="color: #4caf50; margin-left: 8px;">✓ The accuracy, sequentiality, and integrity of the messages are verified without tampering</span>`
|
|
216
|
-
: `<span style="color: #ff9800; margin-left: 8px;">⚠ ${verifyResult.error || "Hash mismatch - content has been tampered"}</span>`;
|
|
217
|
-
const lastReceivedHtml = maxLastReceivedLeafIndex >= 0
|
|
218
|
-
? `<div>Delivered & Decrypted Leaf Index: ${maxLastReceivedLeafIndex} (sent messages are only confirmed as decrypted after receiving a reply from the other party)</div>`
|
|
219
|
-
: "";
|
|
220
|
-
return `<!DOCTYPE html>
|
|
221
|
-
<html lang="en">
|
|
222
|
-
<head>
|
|
223
|
-
<meta charset="UTF-8">
|
|
224
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
225
|
-
<title>${escapeHtml(title)}</title>
|
|
226
|
-
<style>
|
|
227
|
-
body {
|
|
228
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
229
|
-
max-width: 800px;
|
|
230
|
-
margin: 0 auto;
|
|
231
|
-
padding: 20px;
|
|
232
|
-
background: ${bgColor};
|
|
233
|
-
color: ${textColor};
|
|
234
|
-
}
|
|
235
|
-
.header {
|
|
236
|
-
border-bottom: 2px solid ${borderColor};
|
|
237
|
-
padding-bottom: 16px;
|
|
238
|
-
margin-bottom: 24px;
|
|
239
|
-
}
|
|
240
|
-
.meta {
|
|
241
|
-
font-size: 12px;
|
|
242
|
-
color: #666;
|
|
243
|
-
margin-top: 8px;
|
|
244
|
-
}
|
|
245
|
-
.note {
|
|
246
|
-
font-size: 11px;
|
|
247
|
-
color: #999;
|
|
248
|
-
margin-top: 12px;
|
|
249
|
-
padding: 8px;
|
|
250
|
-
background: ${theme === "dark" ? "#2a2a2a" : "#f5f5f5"};
|
|
251
|
-
border-radius: 4px;
|
|
252
|
-
font-style: italic;
|
|
253
|
-
}
|
|
254
|
-
.pagination {
|
|
255
|
-
display: flex;
|
|
256
|
-
justify-content: center;
|
|
257
|
-
align-items: center;
|
|
258
|
-
gap: 8px;
|
|
259
|
-
margin-top: 24px;
|
|
260
|
-
padding: 16px;
|
|
261
|
-
border-top: 1px solid ${borderColor};
|
|
262
|
-
}
|
|
263
|
-
.pagination button {
|
|
264
|
-
padding: 8px 16px;
|
|
265
|
-
border: 1px solid ${borderColor};
|
|
266
|
-
background: ${theme === "dark" ? "#333" : "#fff"};
|
|
267
|
-
color: ${textColor};
|
|
268
|
-
cursor: pointer;
|
|
269
|
-
border-radius: 4px;
|
|
270
|
-
font-size: 14px;
|
|
271
|
-
}
|
|
272
|
-
.pagination button:hover:not(:disabled) {
|
|
273
|
-
background: ${theme === "dark" ? "#444" : "#f0f0f0"};
|
|
274
|
-
}
|
|
275
|
-
.pagination button:disabled {
|
|
276
|
-
opacity: 0.5;
|
|
277
|
-
cursor: not-allowed;
|
|
278
|
-
}
|
|
279
|
-
.pagination .page-info {
|
|
280
|
-
font-size: 14px;
|
|
281
|
-
color: #666;
|
|
282
|
-
}
|
|
283
|
-
.page {
|
|
284
|
-
animation: fadeIn 0.3s ease-in;
|
|
285
|
-
}
|
|
286
|
-
@keyframes fadeIn {
|
|
287
|
-
from { opacity: 0; }
|
|
288
|
-
to { opacity: 1; }
|
|
289
|
-
}
|
|
290
|
-
</style>
|
|
291
|
-
</head>
|
|
292
|
-
<body>
|
|
293
|
-
<div class="header">
|
|
294
|
-
<h1>Witness Timestamped Sequence</h1>
|
|
295
|
-
<div class="note">
|
|
296
|
-
Important Note: This page is for message browsing and verification reference only. Please verify whether the message sequence has been tampered with through the 'verify_wts' API using the WTS file.
|
|
297
|
-
</div>
|
|
298
|
-
<div style="font-size: 14px; color: #666; margin-top: 4px;">
|
|
299
|
-
${new Date(meta.startTime).toLocaleDateString()} - ${new Date(meta.endTime).toLocaleDateString()}
|
|
300
|
-
${verificationStatus}
|
|
301
|
-
</div>
|
|
302
|
-
<div class="meta">
|
|
303
|
-
<div>Messages: ${meta.messageCount} | Time: ${new Date(meta.startTime).toLocaleString()} - ${new Date(meta.endTime).toLocaleString()}</div>
|
|
304
|
-
<div style="word-break: break-all;">Merkle Root: ${escapeHtml(meta.merkleRoot)}</div>
|
|
305
|
-
${lastReceivedHtml}
|
|
306
|
-
<div style="color: ${theme === "dark" ? "#3b82f6" : "#1976d2"};">Creator: ${escapeHtml(meta.creator)}</div>
|
|
307
|
-
<div style="color: ${theme === "dark" ? "#10b981" : "#2e7d32"};">Participant: ${escapeHtml(meta.participant)}</div>
|
|
308
|
-
${signatureHtml}
|
|
309
|
-
</div>
|
|
310
|
-
</div>
|
|
311
|
-
<div id="messages-container">
|
|
312
|
-
${allPagesHtml}
|
|
313
|
-
</div>
|
|
314
|
-
${paginationHtml}
|
|
315
|
-
<script>
|
|
316
|
-
(function() {
|
|
317
|
-
let currentPage = 1;
|
|
318
|
-
const totalPages = ${totalPages};
|
|
319
|
-
|
|
320
|
-
function showPage(pageNum) {
|
|
321
|
-
// 隐藏所有页面
|
|
322
|
-
document.querySelectorAll('.page').forEach(page => {
|
|
323
|
-
page.style.display = 'none';
|
|
324
|
-
});
|
|
325
|
-
// 显示目标页面
|
|
326
|
-
const targetPage = document.querySelector('.page[data-page="' + pageNum + '"]');
|
|
327
|
-
if (targetPage) {
|
|
328
|
-
targetPage.style.display = 'block';
|
|
329
|
-
}
|
|
330
|
-
currentPage = pageNum;
|
|
331
|
-
updatePaginationButtons();
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
function updatePaginationButtons() {
|
|
335
|
-
const prevBtn = document.getElementById('prev-btn');
|
|
336
|
-
const nextBtn = document.getElementById('next-btn');
|
|
337
|
-
const pageInfo = document.getElementById('page-info');
|
|
338
|
-
if (prevBtn) prevBtn.disabled = currentPage === 1;
|
|
339
|
-
if (nextBtn) nextBtn.disabled = currentPage === totalPages;
|
|
340
|
-
if (pageInfo) pageInfo.textContent = 'Page ' + currentPage + ' of ' + totalPages;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
// 绑定按钮事件
|
|
344
|
-
const prevBtn = document.getElementById('prev-btn');
|
|
345
|
-
const nextBtn = document.getElementById('next-btn');
|
|
346
|
-
if (prevBtn) {
|
|
347
|
-
prevBtn.addEventListener('click', function() {
|
|
348
|
-
if (currentPage > 1) showPage(currentPage - 1);
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
if (nextBtn) {
|
|
352
|
-
nextBtn.addEventListener('click', function() {
|
|
353
|
-
if (currentPage < totalPages) showPage(currentPage + 1);
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
// 初始化
|
|
358
|
-
updatePaginationButtons();
|
|
359
|
-
})();
|
|
360
|
-
<\/script>
|
|
361
|
-
</body>
|
|
362
|
-
</html>`;
|
|
363
|
-
}
|
|
364
|
-
function generatePaginationHtml(totalPages, theme, textColor) {
|
|
365
|
-
return `
|
|
366
|
-
<div class="pagination">
|
|
367
|
-
<button id="prev-btn" disabled>← Previous</button>
|
|
368
|
-
<span class="page-info" id="page-info">Page 1 of ${totalPages}</span>
|
|
369
|
-
<button id="next-btn" ${totalPages <= 1 ? "disabled" : ""}>Next →</button>
|
|
370
|
-
</div>`;
|
|
371
|
-
}
|
|
1
|
+
export function escapeHtml(a){if(!a)return'';return a['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}export function formatFileSize(a){if(a<0x400)return a+'\x20B';if(a<0x400*0x400)return(a/0x400)['toFixed'](0x1)+'\x20KB';return(a/(0x400*0x400))['toFixed'](0x1)+'\x20MB';}export function isNonTextMessage(a){return!!a['zipMetadata'];}export function getFileTypeLabel(a){if(a['zipMetadata']?.['contentType'])return a['zipMetadata']['contentType']['toUpperCase']();const b=a['zipMetadata']?.['fileName']||'';if(b['endsWith']('.wts'))return'WTS';if(b['endsWith']('.wip'))return'WIP';if(b['endsWith']('.zip'))return'ZIP';if(b['endsWith']('.json'))return'JSON';if(b['endsWith']('.txt'))return'TXT';if(a['zipMetadata'])return'ZIP';return'FILE';}export function getThemeColors(a){return{'bgColor':a==='dark'?'#1a1a1a':'#ffffff','textColor':a==='dark'?'#e0e0e0':'#333333','borderColor':a==='dark'?'#444444':'#e0e0e0'};}export function getMessageColors(a,b){return b?{'bgColor':a==='dark'?'#1a365d':'#e3f2fd','borderColor':a==='dark'?'#3b82f6':'#90caf9'}:{'bgColor':a==='dark'?'#1e3a2f':'#e8f5e9','borderColor':a==='dark'?'#10b981':'#a5d6a7'};}export function generateFileButton(a,b,c){if(!a['plaintext']||!a['zipMetadata']?.['fileName'])return'';const d=a['zipMetadata']['fileName'],e=a['plaintext'],f=a['zipMetadata']['fileSize']||0x0,g=getFileTypeLabel(a),h=c==='dark'?'#2a3f2a':'#e8f5e9',i=c==='dark'?'#4caf50':'#4caf50',j=c==='dark'?'#81c784':'#2e7d32',k='#4caf50',l='#45a049';return'\x0a\x09\x09<div\x20style=\x22margin:\x2012px\x200;\x20padding:\x2016px;\x20background:\x20'+h+';\x20border:\x201px\x20solid\x20'+i+';\x20border-radius:\x208px;\x20text-align:\x20center;\x22>\x0a\x09\x09\x09<div\x20style=\x22font-size:\x2014px;\x20color:\x20'+j+';\x20margin-bottom:\x208px;\x22>\x0a\x09\x09\x09\x09📎\x20'+escapeHtml(g)+'\x20File\x0a\x09\x09\x09\x09<span\x20style=\x22font-size:\x2012px;\x20color:\x20#666;\x22>('+formatFileSize(f)+')</span>\x0a\x09\x09\x09</div>\x0a\x09\x09\x09<button\x20\x0a\x09\x09\x09\x09onclick=\x22saveFile'+b+'()\x22\x0a\x09\x09\x09\x09style=\x22padding:\x2010px\x2024px;\x20background:\x20'+k+';\x20color:\x20white;\x20border:\x20none;\x20border-radius:\x204px;\x20cursor:\x20pointer;\x20font-size:\x2014px;\x22\x0a\x09\x09\x09\x09onmouseover=\x22this.style.background=\x27'+l+'\x27\x22\x0a\x09\x09\x09\x09onmouseout=\x22this.style.background=\x27'+k+'\x27\x22\x0a\x09\x09\x09>\x0a\x09\x09\x09\x09💾\x20Save\x20'+escapeHtml(d)+'\x0a\x09\x09\x09</button>\x0a\x09\x09</div>\x0a\x09\x09<script>\x0a\x09\x09\x09function\x20saveFile'+b+'()\x20{\x0a\x09\x09\x09\x09try\x20{\x0a\x09\x09\x09\x09\x09const\x20base64Data\x20=\x20\x22'+escapeHtml(e)+'\x22;\x0a\x09\x09\x09\x09\x09const\x20byteCharacters\x20=\x20atob(base64Data);\x0a\x09\x09\x09\x09\x09const\x20byteNumbers\x20=\x20new\x20Array(byteCharacters.length);\x0a\x09\x09\x09\x09\x09for\x20(let\x20i\x20=\x200;\x20i\x20<\x20byteCharacters.length;\x20i++)\x20{\x0a\x09\x09\x09\x09\x09\x09byteNumbers[i]\x20=\x20byteCharacters.charCodeAt(i);\x0a\x09\x09\x09\x09\x09}\x0a\x09\x09\x09\x09\x09const\x20byteArray\x20=\x20new\x20Uint8Array(byteNumbers);\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09let\x20mimeType\x20=\x20\x22application/octet-stream\x22;\x0a\x09\x09\x09\x09\x09const\x20fileName\x20=\x20\x22'+escapeHtml(d)+'\x22;\x0a\x09\x09\x09\x09\x09if\x20(fileName.endsWith(\x27.json\x27))\x20mimeType\x20=\x20\x22application/json\x22;\x0a\x09\x09\x09\x09\x09else\x20if\x20(fileName.endsWith(\x27.zip\x27))\x20mimeType\x20=\x20\x22application/zip\x22;\x0a\x09\x09\x09\x09\x09else\x20if\x20(fileName.endsWith(\x27.txt\x27))\x20mimeType\x20=\x20\x22text/plain\x22;\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09const\x20blob\x20=\x20new\x20Blob([byteArray],\x20{\x20type:\x20mimeType\x20});\x0a\x09\x09\x09\x09\x09const\x20url\x20=\x20URL.createObjectURL(blob);\x0a\x09\x09\x09\x09\x09const\x20a\x20=\x20document.createElement(\x22a\x22);\x0a\x09\x09\x09\x09\x09a.href\x20=\x20url;\x0a\x09\x09\x09\x09\x09a.download\x20=\x20fileName;\x0a\x09\x09\x09\x09\x09document.body.appendChild(a);\x0a\x09\x09\x09\x09\x09a.click();\x0a\x09\x09\x09\x09\x09document.body.removeChild(a);\x0a\x09\x09\x09\x09\x09URL.revokeObjectURL(url);\x0a\x09\x09\x09\x09}\x20catch\x20(e)\x20{\x0a\x09\x09\x09\x09\x09alert(\x27保存文件失败:\x20\x27\x20+\x20e.message);\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09}\x0a\x09\x09</script>\x0a\x09';}export function generateMessageHtml(a,b,c){const {theme:d,borderColor:e,myAddress:f,maxLastReceivedLeafIndex:g}=c,h=isNonTextMessage(a),i=a['from']['toLowerCase']()===f['toLowerCase'](),j=i&&g>=0x0&&a['leafIndex']<=g,k=getMessageColors(d,i),l=d==='dark'?'#333333':'#ffffff';let m='';if(h)m=generateFileButton(a,b,d);else a['plaintext']&&(m='<div\x20style=\x22margin:\x2012px\x200;\x20padding:\x2012px;\x20background:\x20'+l+';\x20border:\x201px\x20solid\x20'+e+';\x20border-radius:\x204px;\x20font-size:\x2014px;\x20line-height:\x201.6;\x20max-height:\x20calc(1.6em\x20*\x206);\x20overflow-y:\x20auto;\x20white-space:\x20pre-wrap;\x20word-break:\x20break-word;\x22>'+escapeHtml(a['plaintext'])+'</div>');const n=['<div>Merkle\x20Root:\x20'+escapeHtml(a['merkleRoot'])+'</div>',a['arkConfirmed']?'<div>ARK\x20Confirmed:\x20'+escapeHtml(a['arkConfirmed']['recipient'])+'\x20at\x20'+new Date(a['arkConfirmed']['timestamp'])['toLocaleString']()+'</div>':'',a['guardAddress']?'<div>Guard:\x20'+escapeHtml(a['guardAddress'])+'</div>':'',a['passportAddress']?'<div>Passport:\x20'+escapeHtml(a['passportAddress'])+'</div>':'']['filter'](Boolean)['join']('');return'\x0a\x09\x09<div\x20style=\x22margin:\x2016px\x200;\x20padding:\x2016px;\x20border:\x201px\x20solid\x20'+k['borderColor']+';\x20border-radius:\x208px;\x20background:\x20'+k['bgColor']+';\x22>\x0a\x09\x09\x09<div\x20style=\x22display:\x20flex;\x20justify-content:\x20space-between;\x20margin-bottom:\x208px;\x20font-size:\x2012px;\x20color:\x20#666;\x22>\x0a\x09\x09\x09\x09<span>From:\x20'+escapeHtml(a['from']['slice'](0x0,0x6))+'...'+escapeHtml(a['from']['slice'](-0x3))+'\x20To:\x20'+escapeHtml(a['to']['slice'](0x0,0x6))+'...'+escapeHtml(a['to']['slice'](-0x3))+'</span>\x0a\x09\x09\x09\x09<span>'+new Date(a['timestamp'])['toLocaleString']()+'</span>\x0a\x09\x09\x09</div>\x0a\x09\x09\x09'+m+'\x0a\x09\x09\x09<div\x20style=\x22margin:\x208px\x200;\x20font-size:\x2011px;\x20color:\x20#666;\x22>\x0a\x09\x09\x09\x09'+n+'\x0a\x09\x09\x09</div>\x0a\x09\x09\x09<div\x20style=\x22font-size:\x2011px;\x20color:\x20#888;\x20margin-top:\x208px;\x20padding-top:\x208px;\x20border-top:\x201px\x20solid\x20'+e+';\x20display:\x20flex;\x20justify-content:\x20space-between;\x20align-items:\x20center;\x22>\x0a\x09\x09\x09\x09<div>Leaf\x20Index:\x20'+a['leafIndex']+'</div>\x0a\x09\x09\x09\x09'+(j?'<span\x20style=\x22color:\x20#4caf50;\x22>Delivered\x20&\x20Decrypted</span>':'')+'\x0a\x09\x09\x09</div>\x0a\x09\x09</div>\x0a\x09';}export function generateSignatureHtml(a,b,c){if(!a['signatures']||a['signatures']['length']===0x0)return'';const d=b==='dark'?'#2a3f2a':'#e8f5e9',e=b==='dark'?'#81c784':'#2e7d32',f=a['signatures']['map']((g,h)=>'\x0a\x09\x09\x09<div\x20style=\x22font-size:\x2010px;\x20color:\x20'+c+';\x20margin-left:\x208px;\x22>\x0a\x09\x09\x09\x09'+(h+0x1)+'.\x20'+(g['address']?escapeHtml(g['address']['slice'](0x0,0x6))+'...'+escapeHtml(g['address']['slice'](-0x3)):'Unknown')+':\x20\x0a\x09\x09\x09\x09'+(g['valid']?'<span\x20style=\x22color:\x20#4caf50;\x22>✓\x20Valid</span>':'<span\x20style=\x22color:\x20#f44336;\x22>✗\x20Invalid</span>')+'\x0a\x09\x09\x09</div>\x0a\x09\x09')['join']('');return'\x0a\x09\x09<div\x20style=\x22margin-top:\x208px;\x20padding:\x208px;\x20background:\x20'+d+';\x20border-radius:\x204px;\x22>\x0a\x09\x09\x09<div\x20style=\x22font-size:\x2011px;\x20color:\x20'+e+';\x20margin-bottom:\x204px;\x22>\x0a\x09\x09\x09\x09✓\x20Signature\x20Verification\x20('+a['signatures']['length']+'\x20signature'+(a['signatures']['length']>0x1?'s':'')+')\x0a\x09\x09\x09</div>\x0a\x09\x09\x09'+f+'\x0a\x09\x09</div>\x0a\x09';}const MESSAGES_PER_PAGE=0x64;export function generateHtmlPage(a){const {title:b,theme:c,bgColor:d,textColor:e,borderColor:f,meta:g,payload:h,verifyResult:i,maxLastReceivedLeafIndex:j}=a,k=h['messages']['length'],l=Math['ceil'](k/MESSAGES_PER_PAGE),m=[];for(let s=0x0;s<l;s++){const t=s*MESSAGES_PER_PAGE,u=Math['min'](t+MESSAGES_PER_PAGE,k),v=h['messages']['slice'](t,u),w=v['map']((x,y)=>generateMessageHtml(x,t+y,a))['join']('');m['push']({'pageNum':s+0x1,'html':'<div\x20class=\x22page\x22\x20data-page=\x22'+(s+0x1)+'\x22\x20style=\x22display:\x20'+(s===0x0?'block':'none')+';\x22>'+w+'</div>'});}const n=l>0x1?generatePaginationHtml(l,c,e):'',o=m['map'](x=>x['html'])['join'](''),p=generateSignatureHtml(i,c,e),q=i['valid']?'<span\x20style=\x22color:\x20#4caf50;\x20margin-left:\x208px;\x22>✓\x20The\x20accuracy,\x20sequentiality,\x20and\x20integrity\x20of\x20the\x20messages\x20are\x20verified\x20without\x20tampering</span>':'<span\x20style=\x22color:\x20#ff9800;\x20margin-left:\x208px;\x22>⚠\x20'+(i['error']||'Hash\x20mismatch\x20-\x20content\x20has\x20been\x20tampered')+'</span>',r=j>=0x0?'<div>Delivered\x20&\x20Decrypted\x20Leaf\x20Index:\x20'+j+'\x20(sent\x20messages\x20are\x20only\x20confirmed\x20as\x20decrypted\x20after\x20receiving\x20a\x20reply\x20from\x20the\x20other\x20party)</div>':'';return'<!DOCTYPE\x20html>\x0a<html\x20lang=\x22en\x22>\x0a<head>\x0a\x20\x20\x20\x20<meta\x20charset=\x22UTF-8\x22>\x0a\x20\x20\x20\x20<meta\x20name=\x22viewport\x22\x20content=\x22width=device-width,\x20initial-scale=1.0\x22>\x0a\x20\x20\x20\x20<title>'+escapeHtml(b)+'</title>\x0a\x20\x20\x20\x20<style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20body\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20-apple-system,\x20BlinkMacSystemFont,\x20\x22Segoe\x20UI\x22,\x20Roboto,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20800px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x200\x20auto;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20'+d+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20'+e+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.header\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x202px\x20solid\x20'+f+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding-bottom:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.meta\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.note\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#999;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20'+(c==='dark'?'#2a2a2a':'#f5f5f5')+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-style:\x20italic;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.pagination\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-top:\x201px\x20solid\x20'+f+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.pagination\x20button\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20'+f+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20'+(c==='dark'?'#333':'#fff')+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20'+e+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.pagination\x20button:hover:not(:disabled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20'+(c==='dark'?'#444':'#f0f0f0')+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.pagination\x20button:disabled\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x200.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20not-allowed;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.pagination\x20.page-info\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.page\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20fadeIn\x200.3s\x20ease-in;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20@keyframes\x20fadeIn\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20opacity:\x200;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20to\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20</style>\x0a</head>\x0a<body>\x0a\x20\x20\x20\x20<div\x20class=\x22header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<h1>Witness\x20Timestamped\x20Sequence</h1>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22note\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Important\x20Note:\x20This\x20page\x20is\x20for\x20message\x20browsing\x20and\x20verification\x20reference\x20only.\x20Please\x20verify\x20whether\x20the\x20message\x20sequence\x20has\x20been\x20tampered\x20with\x20through\x20the\x20\x27verify_wts\x27\x20API\x20using\x20the\x20WTS\x20file.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2014px;\x20color:\x20#666;\x20margin-top:\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+new Date(g['startTime'])['toLocaleDateString']()+'\x20-\x20'+new Date(g['endTime'])['toLocaleDateString']()+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+q+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>Messages:\x20'+g['messageCount']+'\x20|\x20Time:\x20'+new Date(g['startTime'])['toLocaleString']()+'\x20-\x20'+new Date(g['endTime'])['toLocaleString']()+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22word-break:\x20break-all;\x22>Merkle\x20Root:\x20'+escapeHtml(g['merkleRoot'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+r+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20'+(c==='dark'?'#3b82f6':'#1976d2')+';\x22>Creator:\x20'+escapeHtml(g['creator'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20'+(c==='dark'?'#10b981':'#2e7d32')+';\x22>Participant:\x20'+escapeHtml(g['participant'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+p+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20id=\x22messages-container\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+o+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20'+n+'\x0a\x20\x20\x20\x20<script>\x0a\x20\x20\x20\x20\x20\x20\x20\x20(function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20currentPage\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalPages\x20=\x20'+l+';\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20function\x20showPage(pageNum)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20隐藏所有页面\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.querySelectorAll(\x27.page\x27).forEach(page\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20page.style.display\x20=\x20\x27none\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20显示目标页面\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20targetPage\x20=\x20document.querySelector(\x27.page[data-page=\x22\x27\x20+\x20pageNum\x20+\x20\x27\x22]\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(targetPage)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20targetPage.style.display\x20=\x20\x27block\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20currentPage\x20=\x20pageNum;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updatePaginationButtons();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20function\x20updatePaginationButtons()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20prevBtn\x20=\x20document.getElementById(\x27prev-btn\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20nextBtn\x20=\x20document.getElementById(\x27next-btn\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20pageInfo\x20=\x20document.getElementById(\x27page-info\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(prevBtn)\x20prevBtn.disabled\x20=\x20currentPage\x20===\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(nextBtn)\x20nextBtn.disabled\x20=\x20currentPage\x20===\x20totalPages;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(pageInfo)\x20pageInfo.textContent\x20=\x20\x27Page\x20\x27\x20+\x20currentPage\x20+\x20\x27\x20of\x20\x27\x20+\x20totalPages;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20绑定按钮事件\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20prevBtn\x20=\x20document.getElementById(\x27prev-btn\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20nextBtn\x20=\x20document.getElementById(\x27next-btn\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(prevBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20prevBtn.addEventListener(\x27click\x27,\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(currentPage\x20>\x201)\x20showPage(currentPage\x20-\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(nextBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBtn.addEventListener(\x27click\x27,\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(currentPage\x20<\x20totalPages)\x20showPage(currentPage\x20+\x201);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20初始化\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updatePaginationButtons();\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x20\x20\x20\x20</script>\x0a</body>\x0a</html>';}function generatePaginationHtml(a,b,c){return'\x0a\x20\x20\x20\x20<div\x20class=\x22pagination\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22prev-btn\x22\x20disabled>←\x20Previous</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22page-info\x22\x20id=\x22page-info\x22>Page\x201\x20of\x20'+a+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22next-btn\x22\x20'+(a<=0x1?'disabled':'')+'>Next\x20→</button>\x0a\x20\x20\x20\x20</div>';}
|
|
@@ -1,76 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export var MessageType;
|
|
3
|
-
(function (MessageType) {
|
|
4
|
-
MessageType[MessageType["PREKEY_MESSAGE"] = 3] = "PREKEY_MESSAGE";
|
|
5
|
-
MessageType[MessageType["NORMAL_MESSAGE"] = 1] = "NORMAL_MESSAGE";
|
|
6
|
-
})(MessageType || (MessageType = {}));
|
|
7
|
-
export var MessageDirection;
|
|
8
|
-
(function (MessageDirection) {
|
|
9
|
-
MessageDirection["SENT"] = "sent";
|
|
10
|
-
MessageDirection["RECEIVED"] = "received";
|
|
11
|
-
})(MessageDirection || (MessageDirection = {}));
|
|
12
|
-
export var MessageStatus;
|
|
13
|
-
(function (MessageStatus) {
|
|
14
|
-
MessageStatus["PENDING"] = "pending";
|
|
15
|
-
MessageStatus["CONFIRMED"] = "confirmed";
|
|
16
|
-
MessageStatus["READ"] = "read";
|
|
17
|
-
MessageStatus["FAILED"] = "failed";
|
|
18
|
-
MessageStatus["REJECTED"] = "rejected";
|
|
19
|
-
MessageStatus["DECRYPTED"] = "decrypted";
|
|
20
|
-
MessageStatus["DECRYPT_FAILED"] = "decrypt_failed";
|
|
21
|
-
})(MessageStatus || (MessageStatus = {}));
|
|
22
|
-
export const WTS_FILE_BYTES_LIMIT = 5 * 1024 * 1024;
|
|
23
|
-
export const WTS_MAX_MESSAGE_COUNT = 500;
|
|
24
|
-
export const NORMAL_MESSAGE_BYTES_LIMIT = 10 * 1024;
|
|
25
|
-
export const DEFAULT_QUERY_LIMIT = 50;
|
|
26
|
-
export const MAX_QUERY_LIMIT = 1000;
|
|
27
|
-
export const DEFAULT_DEVICE_ID = 1;
|
|
28
|
-
export const SERVER_URL = "https://messenger.wowok.net";
|
|
29
|
-
export const CHAIN_PROOF_TYPE = 1;
|
|
30
|
-
export const CURRENT_NETWORK = ENTRYPOINT.Testnet;
|
|
31
|
-
export const DEFAULT_MESSENGER_CONFIG = {
|
|
32
|
-
prekey_count: 40,
|
|
33
|
-
watch_interval_ms: 60 * 1000,
|
|
34
|
-
serverUrl: SERVER_URL,
|
|
35
|
-
network: CURRENT_NETWORK,
|
|
36
|
-
prekeyCheckIntervalMs: 24 * 60 * 60 * 1000,
|
|
37
|
-
defaultQueryLimit: DEFAULT_QUERY_LIMIT,
|
|
38
|
-
message_poll_default_interval_ms: 6 * 60 * 1000,
|
|
39
|
-
message_poll_fast_interval_ms: 6 * 1000,
|
|
40
|
-
prekey_poll_default_interval_ms: 60 * 60 * 1000,
|
|
41
|
-
prekey_poll_fast_interval_ms: 30 * 1000,
|
|
42
|
-
account_poll_delay_ms: 200,
|
|
43
|
-
message_poll_consecutive_empty_limit: 3,
|
|
44
|
-
prekey_poll_consecutive_ok_limit: 3,
|
|
45
|
-
};
|
|
46
|
-
export var MessengerErrorCode;
|
|
47
|
-
(function (MessengerErrorCode) {
|
|
48
|
-
MessengerErrorCode["PREKEYS_FULL"] = "PREKEYS_FULL";
|
|
49
|
-
MessengerErrorCode["ACCOUNT_NOT_FOUND"] = "ACCOUNT_NOT_FOUND";
|
|
50
|
-
MessengerErrorCode["IDENTITY_NOT_FOUND"] = "IDENTITY_NOT_FOUND";
|
|
51
|
-
MessengerErrorCode["IDENTITY_CONFLICT"] = "IDENTITY_CONFLICT";
|
|
52
|
-
MessengerErrorCode["SESSION_NOT_ESTABLISHED"] = "SESSION_NOT_ESTABLISHED";
|
|
53
|
-
MessengerErrorCode["ENCRYPTION_FAILED"] = "ENCRYPTION_FAILED";
|
|
54
|
-
MessengerErrorCode["DECRYPTION_FAILED"] = "DECRYPTION_FAILED";
|
|
55
|
-
MessengerErrorCode["SERVER_ERROR"] = "SERVER_ERROR";
|
|
56
|
-
MessengerErrorCode["INVALID_PROOF"] = "INVALID_PROOF";
|
|
57
|
-
MessengerErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
58
|
-
MessengerErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
|
|
59
|
-
MessengerErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
|
|
60
|
-
MessengerErrorCode["INVALID_MESSAGE_TYPE"] = "INVALID_MESSAGE_TYPE";
|
|
61
|
-
MessengerErrorCode["MESSAGE_NOT_DECRYPTED"] = "MESSAGE_NOT_DECRYPTED";
|
|
62
|
-
MessengerErrorCode["HASH_MISMATCH"] = "HASH_MISMATCH";
|
|
63
|
-
MessengerErrorCode["ACCOUNT_MESSENGER_NOT_ENABLED"] = "ACCOUNT_MESSENGER_NOT_ENABLED";
|
|
64
|
-
MessengerErrorCode["REGISTRATION_FAILED"] = "REGISTRATION_FAILED";
|
|
65
|
-
})(MessengerErrorCode || (MessengerErrorCode = {}));
|
|
66
|
-
export class MessengerError extends Error {
|
|
67
|
-
code;
|
|
68
|
-
cause;
|
|
69
|
-
constructor(code, message, cause) {
|
|
70
|
-
super(message);
|
|
71
|
-
this.code = code;
|
|
72
|
-
this.cause = cause;
|
|
73
|
-
this.name = "MessengerError";
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
export const WTS_SCHEMA_URL = "https://schema.wowok.net/wts/v1";
|
|
1
|
+
import{ENTRYPOINT}from'../../client/network.js';export var MessageType;(function(a){a[a['PREKEY_MESSAGE']=0x3]='PREKEY_MESSAGE',a[a['NORMAL_MESSAGE']=0x1]='NORMAL_MESSAGE';}(MessageType||(MessageType={})));export var MessageDirection;(function(a){a['SENT']='sent',a['RECEIVED']='received';}(MessageDirection||(MessageDirection={})));export var MessageStatus;(function(a){a['PENDING']='pending',a['CONFIRMED']='confirmed',a['READ']='read',a['FAILED']='failed',a['REJECTED']='rejected',a['DECRYPTED']='decrypted',a['DECRYPT_FAILED']='decrypt_failed';}(MessageStatus||(MessageStatus={})));export const WTS_FILE_BYTES_LIMIT=0x5*0x400*0x400;export const WTS_MAX_MESSAGE_COUNT=0x1f4;export const NORMAL_MESSAGE_BYTES_LIMIT=0xa*0x400;export const DEFAULT_QUERY_LIMIT=0x32;export const MAX_QUERY_LIMIT=0x3e8;export const DEFAULT_DEVICE_ID=0x1;export const SERVER_URL='https://messenger.wowok.net';export const CHAIN_PROOF_TYPE=0x1;export const CURRENT_NETWORK=ENTRYPOINT['Testnet'];export const DEFAULT_MESSENGER_CONFIG={'prekey_count':0x28,'watch_interval_ms':0x3c*0x3e8,'serverUrl':SERVER_URL,'network':CURRENT_NETWORK,'prekeyCheckIntervalMs':0x18*0x3c*0x3c*0x3e8,'defaultQueryLimit':DEFAULT_QUERY_LIMIT,'message_poll_default_interval_ms':0x6*0x3c*0x3e8,'message_poll_fast_interval_ms':0x6*0x3e8,'prekey_poll_default_interval_ms':0x3c*0x3c*0x3e8,'prekey_poll_fast_interval_ms':0x1e*0x3e8,'account_poll_delay_ms':0xc8,'message_poll_consecutive_empty_limit':0x3,'prekey_poll_consecutive_ok_limit':0x3};export var MessengerErrorCode;(function(a){a['PREKEYS_FULL']='PREKEYS_FULL',a['ACCOUNT_NOT_FOUND']='ACCOUNT_NOT_FOUND',a['IDENTITY_NOT_FOUND']='IDENTITY_NOT_FOUND',a['IDENTITY_CONFLICT']='IDENTITY_CONFLICT',a['SESSION_NOT_ESTABLISHED']='SESSION_NOT_ESTABLISHED',a['ENCRYPTION_FAILED']='ENCRYPTION_FAILED',a['DECRYPTION_FAILED']='DECRYPTION_FAILED',a['SERVER_ERROR']='SERVER_ERROR',a['INVALID_PROOF']='INVALID_PROOF',a['NETWORK_ERROR']='NETWORK_ERROR',a['INVALID_INPUT']='INVALID_INPUT',a['FILE_NOT_FOUND']='FILE_NOT_FOUND',a['INVALID_MESSAGE_TYPE']='INVALID_MESSAGE_TYPE',a['MESSAGE_NOT_DECRYPTED']='MESSAGE_NOT_DECRYPTED',a['HASH_MISMATCH']='HASH_MISMATCH',a['ACCOUNT_MESSENGER_NOT_ENABLED']='ACCOUNT_MESSENGER_NOT_ENABLED',a['REGISTRATION_FAILED']='REGISTRATION_FAILED';}(MessengerErrorCode||(MessengerErrorCode={})));export class MessengerError extends Error{['code'];['cause'];constructor(a,b,c){super(b),this['code']=a,this['cause']=c,this['name']='MessengerError';}}export const WTS_SCHEMA_URL='https://schema.wowok.net/wts/v1';
|
|
@@ -1,12 +1 @@
|
|
|
1
|
-
export function canonicalizeJson(
|
|
2
|
-
if (obj === null || typeof obj !== "object") {
|
|
3
|
-
return JSON.stringify(obj);
|
|
4
|
-
}
|
|
5
|
-
if (Array.isArray(obj)) {
|
|
6
|
-
return "[" + obj.map(canonicalizeJson).join(",") + "]";
|
|
7
|
-
}
|
|
8
|
-
const sortedObj = obj;
|
|
9
|
-
const keys = Object.keys(sortedObj).sort();
|
|
10
|
-
const pairs = keys.map((key) => `"${key}":${canonicalizeJson(sortedObj[key])}`);
|
|
11
|
-
return "{" + pairs.join(",") + "}";
|
|
12
|
-
}
|
|
1
|
+
export function canonicalizeJson(a){if(a===null||typeof a!=='object')return JSON['stringify'](a);if(Array['isArray'](a))return'['+a['map'](canonicalizeJson)['join'](',')+']';const b=a,c=Object['keys'](b)['sort'](),d=c['map'](e=>'\x22'+e+'\x22:'+canonicalizeJson(b[e]));return'{'+d['join'](',')+'}';}
|
|
@@ -1,95 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { query_permissions } from "../call/permission.js";
|
|
3
|
-
import { filterGuardInstruct } from "../call/guard-ins.js";
|
|
4
|
-
import { Config } from "../local/config.js";
|
|
5
|
-
const CONSTANTS = [
|
|
6
|
-
{
|
|
7
|
-
name: "Protocol Package ID",
|
|
8
|
-
value: PackageAddress,
|
|
9
|
-
description: "Protocol package ID",
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
name: "Gas Token Type",
|
|
13
|
-
value: GasTokenType,
|
|
14
|
-
description: "Gas token type",
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
name: "Gas Coin Type",
|
|
18
|
-
value: GasCoinType,
|
|
19
|
-
description: "Gas coin type",
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
name: "Entity Linker ID",
|
|
23
|
-
value: RegistrarAddress,
|
|
24
|
-
description: "Entity Linker ID",
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: "Entity Registrar ID",
|
|
28
|
-
value: EntityAddress,
|
|
29
|
-
description: "Entity registrar ID",
|
|
30
|
-
},
|
|
31
|
-
];
|
|
32
|
-
const VALUE_TYPES = Object.entries(ValueType)
|
|
33
|
-
.filter(([key, value]) => isNaN(Number(key)) && key !== "Value")
|
|
34
|
-
.map(([key, value]) => ({
|
|
35
|
-
name: key,
|
|
36
|
-
value: key,
|
|
37
|
-
description: `Value type ${key} = ${value}`,
|
|
38
|
-
}));
|
|
39
|
-
const OBJECT_TYPES = Object.values(ObjectType).map((type) => ({
|
|
40
|
-
name: type,
|
|
41
|
-
value: type,
|
|
42
|
-
description: `Object type ${type}`,
|
|
43
|
-
}));
|
|
44
|
-
export const INFO_CONSTANT = {
|
|
45
|
-
type: "constants",
|
|
46
|
-
constants: CONSTANTS,
|
|
47
|
-
value_types: VALUE_TYPES,
|
|
48
|
-
object_types: OBJECT_TYPES,
|
|
49
|
-
guard_instructions: Object.values(OperatorType).map((type) => ({
|
|
50
|
-
name: type,
|
|
51
|
-
value: type,
|
|
52
|
-
description: `Guard instruction ${type}`,
|
|
53
|
-
})),
|
|
54
|
-
guard_contexts: Object.values(ContextType).map((type) => ({
|
|
55
|
-
name: type,
|
|
56
|
-
value: type,
|
|
57
|
-
description: `Guard context ${type}`,
|
|
58
|
-
})),
|
|
59
|
-
guard_witnesses: Object.values(WitnessType).map((type) => ({
|
|
60
|
-
name: type,
|
|
61
|
-
value: type,
|
|
62
|
-
description: `Guard witness ${type}`,
|
|
63
|
-
})),
|
|
64
|
-
};
|
|
65
|
-
export async function queryProtocolInfo(query) {
|
|
66
|
-
switch (query.info) {
|
|
67
|
-
case "constants":
|
|
68
|
-
return { info: "constants", result: INFO_CONSTANT.constants };
|
|
69
|
-
case "built-in permissions":
|
|
70
|
-
return {
|
|
71
|
-
info: "built-in permissions",
|
|
72
|
-
result: queryPermissions(query.filter || {}),
|
|
73
|
-
};
|
|
74
|
-
case "guard instructions":
|
|
75
|
-
return {
|
|
76
|
-
info: "guard instructions",
|
|
77
|
-
result: filterGuardInstruct(query.filter || {}),
|
|
78
|
-
};
|
|
79
|
-
case "current network":
|
|
80
|
-
return {
|
|
81
|
-
info: "current network",
|
|
82
|
-
result: await Config.Instance().network_get(),
|
|
83
|
-
};
|
|
84
|
-
case "value types":
|
|
85
|
-
return {
|
|
86
|
-
info: "value types",
|
|
87
|
-
result: INFO_CONSTANT.value_types,
|
|
88
|
-
};
|
|
89
|
-
default:
|
|
90
|
-
throw new Error(`Unsupported info type: "${query.info}". Valid are: "constants", "built-in permissions", "guard instructions", "current network", "value types"`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
export function queryPermissions(filter) {
|
|
94
|
-
return query_permissions(filter);
|
|
95
|
-
}
|
|
1
|
+
import{ObjectType,ValueType,OperatorType,WitnessType,ContextType,PackageAddress,GasTokenType,GasCoinType,RegistrarAddress,EntityAddress}from'../common.js';import{query_permissions}from'../call/permission.js';import{filterGuardInstruct}from'../call/guard-ins.js';import{Config}from'../local/config.js';const CONSTANTS=[{'name':'Protocol\x20Package\x20ID','value':PackageAddress,'description':'Protocol\x20package\x20ID'},{'name':'Gas\x20Token\x20Type','value':GasTokenType,'description':'Gas\x20token\x20type'},{'name':'Gas\x20Coin\x20Type','value':GasCoinType,'description':'Gas\x20coin\x20type'},{'name':'Entity\x20Linker\x20ID','value':RegistrarAddress,'description':'Entity\x20Linker\x20ID'},{'name':'Entity\x20Registrar\x20ID','value':EntityAddress,'description':'Entity\x20registrar\x20ID'}],VALUE_TYPES=Object['entries'](ValueType)['filter'](([a,b])=>isNaN(Number(a))&&a!=='Value')['map'](([a,b])=>({'name':a,'value':a,'description':'Value\x20type\x20'+a+'\x20=\x20'+b})),OBJECT_TYPES=Object['values'](ObjectType)['map'](a=>({'name':a,'value':a,'description':'Object\x20type\x20'+a}));export const INFO_CONSTANT={'type':'constants','constants':CONSTANTS,'value_types':VALUE_TYPES,'object_types':OBJECT_TYPES,'guard_instructions':Object['values'](OperatorType)['map'](a=>({'name':a,'value':a,'description':'Guard\x20instruction\x20'+a})),'guard_contexts':Object['values'](ContextType)['map'](a=>({'name':a,'value':a,'description':'Guard\x20context\x20'+a})),'guard_witnesses':Object['values'](WitnessType)['map'](a=>({'name':a,'value':a,'description':'Guard\x20witness\x20'+a}))};export async function queryProtocolInfo(a){switch(a['info']){case'constants':return{'info':'constants','result':INFO_CONSTANT['constants']};case'built-in\x20permissions':return{'info':'built-in\x20permissions','result':queryPermissions(a['filter']||{})};case'guard\x20instructions':return{'info':'guard\x20instructions','result':filterGuardInstruct(a['filter']||{})};case'current\x20network':return{'info':'current\x20network','result':await Config['Instance']()['network_get']()};case'value\x20types':return{'info':'value\x20types','result':INFO_CONSTANT['value_types']};default:throw new Error('Unsupported\x20info\x20type:\x20\x22'+a['info']+'\x22.\x20Valid\x20are:\x20\x22constants\x22,\x20\x22built-in\x20permissions\x22,\x20\x22guard\x20instructions\x22,\x20\x22current\x20network\x22,\x20\x22value\x20types\x22');}}export function queryPermissions(a){return query_permissions(a);}
|