wowok 2.1.13 → 2.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/bcs/bcs.js +160 -164
- package/dist/cjs/bcs/bcs.js.map +1 -1
- package/dist/cjs/bcs/effects.js +109 -112
- package/dist/cjs/bcs/effects.js.map +1 -1
- package/dist/cjs/bcs/index.js +49 -58
- package/dist/cjs/bcs/index.js.map +1 -1
- package/dist/cjs/bcs/pure.js +14 -17
- package/dist/cjs/bcs/pure.js.map +1 -1
- package/dist/cjs/bcs/type-tag-serializer.js +6 -11
- package/dist/cjs/bcs/type-tag-serializer.js.map +1 -1
- package/dist/cjs/bcs/types.js +1 -4
- package/dist/cjs/bcs/types.js.map +1 -1
- package/dist/cjs/client/index.js +4 -15
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/client/network.js +3 -7
- package/dist/cjs/client/network.js.map +1 -1
- package/dist/cjs/cryptography/index.js +6 -27
- package/dist/cjs/cryptography/index.js.map +1 -1
- package/dist/cjs/cryptography/intent.js +4 -7
- package/dist/cjs/cryptography/intent.js.map +1 -1
- package/dist/cjs/cryptography/keypair.js +26 -33
- package/dist/cjs/cryptography/keypair.js.map +1 -1
- package/dist/cjs/cryptography/mnemonics.js +8 -14
- package/dist/cjs/cryptography/mnemonics.js.map +1 -1
- package/dist/cjs/cryptography/publickey.js +19 -25
- package/dist/cjs/cryptography/publickey.js.map +1 -1
- package/dist/cjs/cryptography/signature-scheme.js +3 -6
- package/dist/cjs/cryptography/signature-scheme.js.map +1 -1
- package/dist/cjs/cryptography/signature.js +14 -18
- package/dist/cjs/cryptography/signature.js.map +1 -1
- package/dist/cjs/experimental/cache.js +1 -5
- package/dist/cjs/experimental/cache.js.map +1 -1
- package/dist/cjs/experimental/client.js +3 -7
- package/dist/cjs/experimental/client.js.map +1 -1
- package/dist/cjs/experimental/core.js +11 -15
- package/dist/cjs/experimental/core.js.map +1 -1
- package/dist/cjs/experimental/errors.js +2 -7
- package/dist/cjs/experimental/errors.js.map +1 -1
- package/dist/cjs/experimental/index.js +5 -12
- package/dist/cjs/experimental/index.js.map +1 -1
- package/dist/cjs/experimental/persistent-storage.js +30 -36
- package/dist/cjs/experimental/persistent-storage.js.map +1 -1
- package/dist/cjs/experimental/persistent-storage.test.js +18 -20
- package/dist/cjs/experimental/persistent-storage.test.js.map +1 -1
- package/dist/cjs/experimental/transports/utils.js +6 -10
- package/dist/cjs/experimental/transports/utils.js.map +1 -1
- package/dist/cjs/experimental/types.js +1 -2
- package/dist/cjs/experimental/types.js.map +1 -1
- package/dist/cjs/faucet/faucet.js +6 -15
- package/dist/cjs/faucet/faucet.js.map +1 -1
- package/dist/cjs/faucet/index.js +1 -10
- package/dist/cjs/faucet/index.js.map +1 -1
- package/dist/cjs/grpc/client.js +20 -24
- package/dist/cjs/grpc/client.js.map +1 -1
- package/dist/cjs/grpc/core.js +65 -70
- package/dist/cjs/grpc/core.js.map +1 -1
- package/dist/cjs/grpc/index.js +2 -7
- package/dist/cjs/grpc/index.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/any.js +10 -13
- package/dist/cjs/grpc/proto/google/protobuf/any.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/duration.js +8 -11
- package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/empty.js +3 -6
- package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +7 -10
- package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/struct.js +25 -28
- package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +1 -1
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +11 -14
- package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +1 -1
- package/dist/cjs/grpc/proto/google/rpc/error_details.js +36 -39
- package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +1 -1
- package/dist/cjs/grpc/proto/google/rpc/status.js +5 -8
- package/dist/cjs/grpc/proto/google/rpc/status.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +5 -8
- package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +13 -16
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +10 -13
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +20 -23
- package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +29 -32
- package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +12 -15
- package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +2 -5
- package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +11 -14
- package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +17 -20
- package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +45 -48
- package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +7 -10
- package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +5 -8
- package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +13 -17
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +73 -76
- package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +48 -51
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +10 -14
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +36 -39
- package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +8 -12
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +21 -24
- package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +15 -18
- package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +5 -8
- package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +3 -6
- package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +67 -70
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +2 -5
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +7 -11
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +15 -18
- package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +11 -15
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +67 -70
- package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +7 -11
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +13 -16
- package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +38 -41
- package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +124 -127
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +8 -12
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -1
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +41 -44
- package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -1
- package/dist/cjs/index.js +22 -87
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/jsonRpc/client.js +29 -34
- package/dist/cjs/jsonRpc/client.js.map +1 -1
- package/dist/cjs/jsonRpc/core.js +29 -33
- package/dist/cjs/jsonRpc/core.js.map +1 -1
- package/dist/cjs/jsonRpc/errors.js +3 -9
- package/dist/cjs/jsonRpc/errors.js.map +1 -1
- package/dist/cjs/jsonRpc/http-transport.js +9 -13
- package/dist/cjs/jsonRpc/http-transport.js.map +1 -1
- package/dist/cjs/jsonRpc/index.js +3 -12
- package/dist/cjs/jsonRpc/index.js.map +1 -1
- package/dist/cjs/jsonRpc/json-rpc-resolver.js +19 -22
- package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +1 -1
- package/dist/cjs/jsonRpc/rpc-websocket-client.js +5 -9
- package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +1 -1
- package/dist/cjs/jsonRpc/types/chain.js +1 -2
- package/dist/cjs/jsonRpc/types/chain.js.map +1 -1
- package/dist/cjs/jsonRpc/types/changes.js +1 -2
- package/dist/cjs/jsonRpc/types/changes.js.map +1 -1
- package/dist/cjs/jsonRpc/types/coins.js +1 -2
- package/dist/cjs/jsonRpc/types/coins.js.map +1 -1
- package/dist/cjs/jsonRpc/types/common.js +1 -2
- package/dist/cjs/jsonRpc/types/common.js.map +1 -1
- package/dist/cjs/jsonRpc/types/generated.js +1 -2
- package/dist/cjs/jsonRpc/types/generated.js.map +1 -1
- package/dist/cjs/jsonRpc/types/index.js +1 -2
- package/dist/cjs/jsonRpc/types/index.js.map +1 -1
- package/dist/cjs/jsonRpc/types/params.js +1 -2
- package/dist/cjs/jsonRpc/types/params.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +7 -11
- package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/index.js +2 -8
- package/dist/cjs/keypairs/ed25519/index.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/keypair.js +26 -30
- package/dist/cjs/keypairs/ed25519/keypair.js.map +1 -1
- package/dist/cjs/keypairs/ed25519/publickey.js +10 -14
- package/dist/cjs/keypairs/ed25519/publickey.js.map +1 -1
- package/dist/cjs/keypairs/index.js +4 -20
- package/dist/cjs/keypairs/index.js.map +1 -1
- package/dist/cjs/keypairs/passkey/index.js +2 -9
- package/dist/cjs/keypairs/passkey/index.js.map +1 -1
- package/dist/cjs/keypairs/passkey/keypair.js +29 -35
- package/dist/cjs/keypairs/passkey/keypair.js.map +1 -1
- package/dist/cjs/keypairs/passkey/publickey.js +35 -41
- package/dist/cjs/keypairs/passkey/publickey.js.map +1 -1
- package/dist/cjs/keypairs/passkey/types.js +1 -2
- package/dist/cjs/keypairs/passkey/types.js.map +1 -1
- package/dist/cjs/keypairs/secp256k1/index.js +2 -8
- package/dist/cjs/keypairs/secp256k1/index.js.map +1 -1
- package/dist/cjs/keypairs/secp256k1/keypair.js +25 -29
- package/dist/cjs/keypairs/secp256k1/keypair.js.map +1 -1
- package/dist/cjs/keypairs/secp256k1/publickey.js +11 -15
- package/dist/cjs/keypairs/secp256k1/publickey.js.map +1 -1
- package/dist/cjs/keypairs/secp256r1/index.js +2 -8
- package/dist/cjs/keypairs/secp256r1/index.js.map +1 -1
- package/dist/cjs/keypairs/secp256r1/keypair.js +25 -29
- package/dist/cjs/keypairs/secp256r1/keypair.js.map +1 -1
- package/dist/cjs/keypairs/secp256r1/publickey.js +12 -16
- package/dist/cjs/keypairs/secp256r1/publickey.js.map +1 -1
- package/dist/cjs/multisig/index.js +2 -8
- package/dist/cjs/multisig/index.js.map +1 -1
- package/dist/cjs/multisig/publickey.js +40 -45
- package/dist/cjs/multisig/publickey.js.map +1 -1
- package/dist/cjs/multisig/signer.js +5 -9
- package/dist/cjs/multisig/signer.js.map +1 -1
- package/dist/cjs/transactions/Arguments.js +5 -8
- package/dist/cjs/transactions/Arguments.js.map +1 -1
- package/dist/cjs/transactions/Commands.js +21 -24
- package/dist/cjs/transactions/Commands.js.map +1 -1
- package/dist/cjs/transactions/Inputs.js +7 -10
- package/dist/cjs/transactions/Inputs.js.map +1 -1
- package/dist/cjs/transactions/ObjectCache.js +7 -13
- package/dist/cjs/transactions/ObjectCache.js.map +1 -1
- package/dist/cjs/transactions/Transaction.js +54 -59
- package/dist/cjs/transactions/Transaction.js.map +1 -1
- package/dist/cjs/transactions/TransactionData.js +27 -31
- package/dist/cjs/transactions/TransactionData.js.map +1 -1
- package/dist/cjs/transactions/__tests__/Transaction.test.js +71 -73
- package/dist/cjs/transactions/__tests__/Transaction.test.js.map +1 -1
- package/dist/cjs/transactions/__tests__/bcs.test.js +26 -28
- package/dist/cjs/transactions/__tests__/bcs.test.js.map +1 -1
- package/dist/cjs/transactions/data/internal.js +122 -126
- package/dist/cjs/transactions/data/internal.js.map +1 -1
- package/dist/cjs/transactions/data/v1.js +114 -119
- package/dist/cjs/transactions/data/v1.js.map +1 -1
- package/dist/cjs/transactions/data/v2.js +63 -66
- package/dist/cjs/transactions/data/v2.js.map +1 -1
- package/dist/cjs/transactions/executor/caching.js +7 -11
- package/dist/cjs/transactions/executor/caching.js.map +1 -1
- package/dist/cjs/transactions/executor/parallel.js +20 -24
- package/dist/cjs/transactions/executor/parallel.js.map +1 -1
- package/dist/cjs/transactions/executor/queue.js +2 -7
- package/dist/cjs/transactions/executor/queue.js.map +1 -1
- package/dist/cjs/transactions/executor/serial.js +11 -16
- package/dist/cjs/transactions/executor/serial.js.map +1 -1
- package/dist/cjs/transactions/hash.js +3 -6
- package/dist/cjs/transactions/hash.js.map +1 -1
- package/dist/cjs/transactions/index.js +12 -31
- package/dist/cjs/transactions/index.js.map +1 -1
- package/dist/cjs/transactions/intents/CoinWithBalance.js +21 -25
- package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -1
- package/dist/cjs/transactions/object.js +4 -7
- package/dist/cjs/transactions/object.js.map +1 -1
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +2 -7
- package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +1 -1
- package/dist/cjs/transactions/pure.js +19 -22
- package/dist/cjs/transactions/pure.js.map +1 -1
- package/dist/cjs/transactions/resolve.js +10 -15
- package/dist/cjs/transactions/resolve.js.map +1 -1
- package/dist/cjs/transactions/serializer.js +34 -40
- package/dist/cjs/transactions/serializer.js.map +1 -1
- package/dist/cjs/transactions/utils.js +15 -23
- package/dist/cjs/transactions/utils.js.map +1 -1
- package/dist/cjs/utils/constants.js +18 -21
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/derived-objects.js +5 -8
- package/dist/cjs/utils/derived-objects.js.map +1 -1
- package/dist/cjs/utils/dynamic-fields.js +9 -12
- package/dist/cjs/utils/dynamic-fields.js.map +1 -1
- package/dist/cjs/utils/format.js +2 -6
- package/dist/cjs/utils/format.js.map +1 -1
- package/dist/cjs/utils/index.js +10 -46
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/move-registry.js +5 -10
- package/dist/cjs/utils/move-registry.js.map +1 -1
- package/dist/cjs/utils/sui-types.js +15 -25
- package/dist/cjs/utils/sui-types.js.map +1 -1
- package/dist/cjs/utils/suins.js +2 -6
- package/dist/cjs/utils/suins.js.map +1 -1
- package/dist/cjs/verify/index.js +1 -9
- package/dist/cjs/verify/index.js.map +1 -1
- package/dist/cjs/verify/verify.js +21 -28
- package/dist/cjs/verify/verify.js.map +1 -1
- package/dist/cjs/version.js +2 -5
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/w/call/allocation.js +88 -99
- package/dist/cjs/w/call/allocation.js.map +1 -1
- package/dist/cjs/w/call/arb.js +49 -58
- package/dist/cjs/w/call/arb.js.map +1 -1
- package/dist/cjs/w/call/arbitration.js +380 -406
- package/dist/cjs/w/call/arbitration.js.map +1 -1
- package/dist/cjs/w/call/base.js +63 -73
- package/dist/cjs/w/call/base.js.map +1 -1
- package/dist/cjs/w/call/contact.js +111 -123
- package/dist/cjs/w/call/contact.js.map +1 -1
- package/dist/cjs/w/call/demand.js +221 -238
- package/dist/cjs/w/call/demand.js.map +1 -1
- package/dist/cjs/w/call/entity.js +58 -75
- package/dist/cjs/w/call/entity.js.map +1 -1
- package/dist/cjs/w/call/guard-ins.js +1191 -1196
- package/dist/cjs/w/call/guard-ins.js.map +1 -1
- package/dist/cjs/w/call/guard.js +265 -286
- package/dist/cjs/w/call/guard.js.map +1 -1
- package/dist/cjs/w/call/index.js +22 -66
- package/dist/cjs/w/call/index.js.map +1 -1
- package/dist/cjs/w/call/machine.js +351 -378
- package/dist/cjs/w/call/machine.js.map +1 -1
- package/dist/cjs/w/call/order.js +102 -113
- package/dist/cjs/w/call/order.js.map +1 -1
- package/dist/cjs/w/call/passport.js +53 -65
- package/dist/cjs/w/call/passport.js.map +1 -1
- package/dist/cjs/w/call/payment.js +41 -50
- package/dist/cjs/w/call/payment.js.map +1 -1
- package/dist/cjs/w/call/permission.js +233 -263
- package/dist/cjs/w/call/permission.js.map +1 -1
- package/dist/cjs/w/call/personal.js +38 -42
- package/dist/cjs/w/call/personal.js.map +1 -1
- package/dist/cjs/w/call/progress.js +222 -240
- package/dist/cjs/w/call/progress.js.map +1 -1
- package/dist/cjs/w/call/proof.js +23 -30
- package/dist/cjs/w/call/proof.js.map +1 -1
- package/dist/cjs/w/call/repository.js +283 -302
- package/dist/cjs/w/call/repository.js.map +1 -1
- package/dist/cjs/w/call/resource.js +27 -37
- package/dist/cjs/w/call/resource.js.map +1 -1
- package/dist/cjs/w/call/reward.js +227 -241
- package/dist/cjs/w/call/reward.js.map +1 -1
- package/dist/cjs/w/call/service.js +653 -694
- package/dist/cjs/w/call/service.js.map +1 -1
- package/dist/cjs/w/call/treasury.js +270 -289
- package/dist/cjs/w/call/treasury.js.map +1 -1
- package/dist/cjs/w/call/util.js +201 -208
- package/dist/cjs/w/call/util.js.map +1 -1
- package/dist/cjs/w/common.js +117 -168
- package/dist/cjs/w/common.js.map +1 -1
- package/dist/cjs/w/exception.js +18 -30
- package/dist/cjs/w/exception.js.map +1 -1
- package/dist/cjs/w/index.js +8 -24
- package/dist/cjs/w/index.js.map +1 -1
- package/dist/cjs/w/local/account.js +73 -77
- package/dist/cjs/w/local/account.js.map +1 -1
- package/dist/cjs/w/local/cache.js +5 -9
- package/dist/cjs/w/local/cache.js.map +1 -1
- package/dist/cjs/w/local/config.js +10 -14
- package/dist/cjs/w/local/config.js.map +1 -1
- package/dist/cjs/w/local/index.js +65 -98
- package/dist/cjs/w/local/index.js.map +1 -1
- package/dist/cjs/w/local/local.js +59 -65
- package/dist/cjs/w/local/local.js.map +1 -1
- package/dist/cjs/w/local/storage.js +13 -56
- package/dist/cjs/w/local/storage.js.map +1 -1
- package/dist/cjs/w/local/token.js +20 -24
- package/dist/cjs/w/local/token.js.map +1 -1
- package/dist/cjs/w/local/util.js +3 -39
- package/dist/cjs/w/local/util.js.map +1 -1
- package/dist/cjs/w/local/wip.js +22 -70
- package/dist/cjs/w/local/wip.js.map +1 -1
- package/dist/cjs/w/messenger/crypto.js +34 -57
- package/dist/cjs/w/messenger/crypto.js.map +1 -1
- package/dist/cjs/w/messenger/index.js +4 -31
- package/dist/cjs/w/messenger/index.js.map +1 -1
- package/dist/cjs/w/messenger/messenger-api.d.ts +1 -3
- package/dist/cjs/w/messenger/messenger-api.js +128 -178
- package/dist/cjs/w/messenger/messenger-api.js.map +1 -1
- package/dist/cjs/w/messenger/messenger-manager.d.ts +3 -5
- package/dist/cjs/w/messenger/messenger-manager.js +65 -69
- package/dist/cjs/w/messenger/messenger-manager.js.map +1 -1
- package/dist/cjs/w/messenger/messenger.js +100 -137
- package/dist/cjs/w/messenger/messenger.js.map +1 -1
- package/dist/cjs/w/messenger/server.js +40 -44
- package/dist/cjs/w/messenger/server.js.map +1 -1
- package/dist/cjs/w/messenger/session.js +52 -56
- package/dist/cjs/w/messenger/session.js.map +1 -1
- package/dist/cjs/w/messenger/storage.js +13 -57
- package/dist/cjs/w/messenger/storage.js.map +1 -1
- package/dist/cjs/w/messenger/types.d.ts +3 -1
- package/dist/cjs/w/messenger/types.js +23 -27
- package/dist/cjs/w/messenger/types.js.map +1 -1
- package/dist/cjs/w/messenger/utils.js +1 -4
- package/dist/cjs/w/messenger/utils.js.map +1 -1
- package/dist/cjs/w/query/bult-in.js +22 -27
- package/dist/cjs/w/query/bult-in.js.map +1 -1
- package/dist/cjs/w/query/event.js +13 -18
- package/dist/cjs/w/query/event.js.map +1 -1
- package/dist/cjs/w/query/index.js +5 -21
- package/dist/cjs/w/query/index.js.map +1 -1
- package/dist/cjs/w/query/object.js +229 -266
- package/dist/cjs/w/query/object.js.map +1 -1
- package/dist/cjs/w/query/received.js +17 -21
- package/dist/cjs/w/query/received.js.map +1 -1
- package/dist/cjs/w/query/util.js +13 -17
- package/dist/cjs/w/query/util.js.map +1 -1
- package/dist/cjs/w/util.js +211 -225
- package/dist/cjs/w/util.js.map +1 -1
- package/dist/esm/experimental/persistent-storage.test.js +1 -1
- package/dist/esm/experimental/persistent-storage.test.js.map +1 -1
- package/dist/esm/w/messenger/messenger-api.d.ts +1 -3
- package/dist/esm/w/messenger/messenger-api.js +7 -8
- package/dist/esm/w/messenger/messenger-api.js.map +1 -1
- package/dist/esm/w/messenger/messenger-manager.d.ts +3 -5
- package/dist/esm/w/messenger/messenger-manager.js +16 -16
- package/dist/esm/w/messenger/messenger-manager.js.map +1 -1
- package/dist/esm/w/messenger/types.d.ts +3 -1
- package/dist/esm/w/messenger/types.js.map +1 -1
- package/package.json +7 -4
- package/scripts/download-prebuilds.js +213 -195
- package/scripts/install-better-sqlite3.js +8 -8
package/dist/cjs/w/call/guard.js
CHANGED
|
@@ -1,40 +1,24 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright (c) Wowok.
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
exports.formatGuardParseErrors = formatGuardParseErrors;
|
|
19
|
-
const common_js_1 = require("../common.js");
|
|
20
|
-
const lodash_1 = __importDefault(require("lodash")); // Import lodash
|
|
21
|
-
const exception_js_1 = require("../exception.js");
|
|
22
|
-
const base_js_1 = require("./base.js");
|
|
23
|
-
const local_js_1 = require("../local/local.js");
|
|
24
|
-
const object_js_1 = require("../query/object.js");
|
|
25
|
-
const index_js_1 = require("../../bcs/index.js");
|
|
26
|
-
const util_js_1 = require("../util.js");
|
|
27
|
-
const guard_ins_js_1 = require("./guard-ins.js");
|
|
28
|
-
const util_js_2 = require("./util.js");
|
|
29
|
-
const sui_types_js_1 = require("../../utils/sui-types.js");
|
|
30
|
-
const passport_js_1 = require("./passport.js");
|
|
31
|
-
const fs_1 = require("fs");
|
|
32
|
-
const path_1 = require("path");
|
|
3
|
+
import { toTxObject, toTxString, isValidDescription, MAX_DESCRIPTION_LENGTH, isValidU8, isValidName, ValueType, parseValueType, OperatorType, ContextType, isWitnessType, PackageAddress, ObjectType, MAX_INPUT_SIZE, MAX_DEPENDED_COUNT, MAX_MULTI_OPERANDS, } from "../common.js";
|
|
4
|
+
import _ from "lodash"; // Import lodash
|
|
5
|
+
import { W_ERROR, WErrors } from "../exception.js";
|
|
6
|
+
import { CallBase } from "./base.js";
|
|
7
|
+
import { LocalMark } from "../local/local.js";
|
|
8
|
+
import { WitnessSourceType, WitnessTargetType, query_objects, } from "../query/object.js";
|
|
9
|
+
import { bcs } from "../../bcs/index.js";
|
|
10
|
+
import { valueToBcsBytes } from "../util.js";
|
|
11
|
+
import { getGuardQueryInfo, GUARDQUERY } from "./guard-ins.js";
|
|
12
|
+
import { checkType, resolveCallEnv } from "./util.js";
|
|
13
|
+
import { isValidWowAddress } from "../../utils/sui-types.js";
|
|
14
|
+
import { get_guardSubmissions, verify_guard } from "./passport.js";
|
|
15
|
+
import { writeFileSync } from "fs";
|
|
16
|
+
import { resolve } from "path";
|
|
33
17
|
// ================================================
|
|
34
|
-
function guardFn(name) {
|
|
35
|
-
return `${
|
|
18
|
+
export function guardFn(name) {
|
|
19
|
+
return `${PackageAddress}::guard::${name}`;
|
|
36
20
|
}
|
|
37
|
-
class CallGuard extends
|
|
21
|
+
export class CallGuard extends CallBase {
|
|
38
22
|
data;
|
|
39
23
|
constructor(data) {
|
|
40
24
|
super();
|
|
@@ -46,47 +30,46 @@ class CallGuard extends base_js_1.CallBase {
|
|
|
46
30
|
}
|
|
47
31
|
async operate(env, tx, _passport, _submission) {
|
|
48
32
|
if (!this.data.table || this.data.table.length === 0) {
|
|
49
|
-
|
|
33
|
+
W_ERROR(WErrors.InvalidParam, "table is empty");
|
|
50
34
|
}
|
|
51
35
|
if (!this.data.root) {
|
|
52
|
-
|
|
36
|
+
W_ERROR(WErrors.InvalidParam, "root is empty");
|
|
53
37
|
}
|
|
54
|
-
const guard = await
|
|
38
|
+
const guard = await newGuard(tx, this.data?.description || "", this.data?.table, this.data?.root);
|
|
55
39
|
if (this.data?.rely != null) {
|
|
56
|
-
const relyGuards = await
|
|
40
|
+
const relyGuards = await LocalMark.Instance().get_many_address(this.data.rely.guards);
|
|
57
41
|
// 查找原始数组中undefined值的索引
|
|
58
42
|
const undefinedIndex = relyGuards.findIndex((v) => v === undefined);
|
|
59
43
|
if (undefinedIndex !== -1) {
|
|
60
|
-
|
|
44
|
+
W_ERROR(WErrors.InvalidParam, `rely.guards invalid: guard at index ${undefinedIndex} not found`);
|
|
61
45
|
}
|
|
62
46
|
reliesAdd(tx, guard, relyGuards.filter((v) => v !== undefined));
|
|
63
47
|
}
|
|
64
|
-
await this.new_with_mark(env, tx,
|
|
48
|
+
await this.new_with_mark(env, tx, ObjectType.Guard, create(tx, guard), this.data?.namedNew);
|
|
65
49
|
}
|
|
66
50
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
(0, exception_js_1.W_ERROR)(exception_js_1.WErrors.IsValidDescription, `Description exceeds maximum length ${common_js_1.MAX_DESCRIPTION_LENGTH}`);
|
|
51
|
+
export const newGuard = async (tx, description, table, root) => {
|
|
52
|
+
if (!isValidDescription(description)) {
|
|
53
|
+
W_ERROR(WErrors.IsValidDescription, `Description exceeds maximum length ${MAX_DESCRIPTION_LENGTH}`);
|
|
71
54
|
}
|
|
72
55
|
// check const
|
|
73
56
|
for (let i = 0; i < table.length; i++) {
|
|
74
57
|
const v = table[i];
|
|
75
|
-
if (!
|
|
76
|
-
|
|
58
|
+
if (!isValidU8(v.identifier))
|
|
59
|
+
W_ERROR(WErrors.InvalidParam, `table.identifier ${v.identifier} invalid`);
|
|
77
60
|
if (!v.b_submission && (v.value === undefined || v.value === null))
|
|
78
|
-
|
|
79
|
-
if (!
|
|
80
|
-
|
|
61
|
+
W_ERROR(WErrors.InvalidParam, `table.value ${v.value} with identifier ${v.identifier} invalid`);
|
|
62
|
+
if (!isValidName(v.name))
|
|
63
|
+
W_ERROR(WErrors.InvalidParam, "table.name");
|
|
81
64
|
}
|
|
82
|
-
const grouped =
|
|
65
|
+
const grouped = _.groupBy(table, "identifier");
|
|
83
66
|
const duplicates = Object.keys(grouped).filter((key) => grouped[key].length > 1);
|
|
84
67
|
if (duplicates.length > 0) {
|
|
85
|
-
|
|
68
|
+
W_ERROR(WErrors.InvalidParam, `table.identifier duplicates: ${duplicates.join(", ")}`);
|
|
86
69
|
}
|
|
87
70
|
// check root
|
|
88
71
|
var output = [];
|
|
89
|
-
await buildNode(root,
|
|
72
|
+
await buildNode(root, ValueType.Bool, table, output);
|
|
90
73
|
const totalLength = output.reduce((acc, arr) => acc + arr.length, 0);
|
|
91
74
|
const input = new Uint8Array(totalLength);
|
|
92
75
|
let offset = 0;
|
|
@@ -100,17 +83,17 @@ const newGuard = async (tx, description, table, root) => {
|
|
|
100
83
|
.map((byte) => byte.toString(10))
|
|
101
84
|
.join(" "),
|
|
102
85
|
);*/
|
|
103
|
-
if (input.length >
|
|
104
|
-
|
|
86
|
+
if (input.length > MAX_INPUT_SIZE) {
|
|
87
|
+
W_ERROR(WErrors.NewGuardCheckFailed, `Input size exceeds maximum limit ${MAX_INPUT_SIZE}`);
|
|
105
88
|
}
|
|
106
89
|
if (input.length === 0) {
|
|
107
|
-
|
|
90
|
+
W_ERROR(WErrors.NewGuardCheckFailed, `Input cannot be empty`);
|
|
108
91
|
}
|
|
109
92
|
const tableItems = [];
|
|
110
93
|
for (let i = 0; i < table.length; i++) {
|
|
111
94
|
const item = table[i];
|
|
112
95
|
// 转换 value_type 为枚举值(支持字符串输入)
|
|
113
|
-
const valueType =
|
|
96
|
+
const valueType = parseValueType(item.value_type);
|
|
114
97
|
// 根据b_submission的值计算bcsValue
|
|
115
98
|
let bcsValue;
|
|
116
99
|
if (item.b_submission) {
|
|
@@ -119,9 +102,9 @@ const newGuard = async (tx, description, table, root) => {
|
|
|
119
102
|
}
|
|
120
103
|
else {
|
|
121
104
|
if (item.value === undefined || item.value === null) {
|
|
122
|
-
|
|
105
|
+
W_ERROR(WErrors.NewGuardCheckFailed, `Table item value is required when b_submission is false`);
|
|
123
106
|
}
|
|
124
|
-
bcsValue = await
|
|
107
|
+
bcsValue = await valueToBcsBytes(valueType, item.value);
|
|
125
108
|
}
|
|
126
109
|
tableItems.push(tx.moveCall({
|
|
127
110
|
target: guardFn("table_item"),
|
|
@@ -129,80 +112,79 @@ const newGuard = async (tx, description, table, root) => {
|
|
|
129
112
|
tx.pure.u8(item.identifier),
|
|
130
113
|
tx.pure.bool(item.b_submission),
|
|
131
114
|
tx.pure.vector("u8", Array.from(bcsValue)),
|
|
132
|
-
|
|
115
|
+
toTxString(tx, item.name),
|
|
133
116
|
],
|
|
134
117
|
}));
|
|
135
118
|
}
|
|
136
119
|
return tx.moveCall({
|
|
137
120
|
target: guardFn("new"),
|
|
138
121
|
arguments: [
|
|
139
|
-
|
|
122
|
+
toTxString(tx, description),
|
|
140
123
|
tx.makeMoveVec({
|
|
141
124
|
elements: tableItems,
|
|
142
|
-
type: `${
|
|
125
|
+
type: `${PackageAddress}::guard::TableItem`,
|
|
143
126
|
}),
|
|
144
127
|
tx.pure.vector("u8", Array.from(input)),
|
|
145
128
|
],
|
|
146
129
|
});
|
|
147
130
|
};
|
|
148
|
-
|
|
149
|
-
function create(tx, guard) {
|
|
131
|
+
export function create(tx, guard) {
|
|
150
132
|
return tx.moveCall({
|
|
151
133
|
target: guardFn("create"),
|
|
152
134
|
arguments: [
|
|
153
|
-
|
|
135
|
+
toTxObject(tx, guard),
|
|
154
136
|
tx.object.mutRegistrar(),
|
|
155
137
|
tx.object.clock(),
|
|
156
138
|
],
|
|
157
139
|
});
|
|
158
140
|
}
|
|
159
|
-
function reliesAdd(tx, guard, rely_guards) {
|
|
160
|
-
const guards =
|
|
161
|
-
if (guards.length >
|
|
162
|
-
|
|
141
|
+
export function reliesAdd(tx, guard, rely_guards) {
|
|
142
|
+
const guards = _.uniq(rely_guards);
|
|
143
|
+
if (guards.length > MAX_DEPENDED_COUNT) {
|
|
144
|
+
W_ERROR(WErrors.NewGuardCheckFailed, `Relies count exceeds maximum limit ${MAX_DEPENDED_COUNT}`);
|
|
163
145
|
}
|
|
164
146
|
guards.forEach((g) => {
|
|
165
147
|
if (g === guard) {
|
|
166
|
-
|
|
148
|
+
W_ERROR(WErrors.NewGuardCheckFailed, `Guard cannot rely on itself`);
|
|
167
149
|
}
|
|
168
150
|
tx.moveCall({
|
|
169
151
|
target: guardFn("relies_add"),
|
|
170
152
|
arguments: [
|
|
171
|
-
|
|
172
|
-
|
|
153
|
+
toTxObject(tx, guard),
|
|
154
|
+
toTxObject(tx, g),
|
|
173
155
|
tx.object.mutRegistrar(),
|
|
174
156
|
tx.object.clock(),
|
|
175
157
|
],
|
|
176
158
|
});
|
|
177
159
|
});
|
|
178
160
|
}
|
|
179
|
-
function reliesRemove(tx, guard, rely_guards) {
|
|
180
|
-
const guards =
|
|
181
|
-
if (guards.length >
|
|
182
|
-
|
|
161
|
+
export function reliesRemove(tx, guard, rely_guards) {
|
|
162
|
+
const guards = _.uniq(rely_guards);
|
|
163
|
+
if (guards.length > MAX_DEPENDED_COUNT) {
|
|
164
|
+
W_ERROR(WErrors.NewGuardCheckFailed, `Relies count exceeds maximum limit ${MAX_DEPENDED_COUNT}`);
|
|
183
165
|
}
|
|
184
166
|
guards.forEach((g) => {
|
|
185
167
|
tx.moveCall({
|
|
186
168
|
target: guardFn("relies_remove"),
|
|
187
169
|
arguments: [
|
|
188
|
-
|
|
189
|
-
|
|
170
|
+
toTxObject(tx, guard),
|
|
171
|
+
toTxObject(tx, g),
|
|
190
172
|
tx.object.mutRegistrar(),
|
|
191
173
|
],
|
|
192
174
|
});
|
|
193
175
|
});
|
|
194
176
|
}
|
|
195
|
-
function reliesClear(tx, guard) {
|
|
177
|
+
export function reliesClear(tx, guard) {
|
|
196
178
|
tx.moveCall({
|
|
197
179
|
target: guardFn("relies_clear"),
|
|
198
|
-
arguments: [
|
|
180
|
+
arguments: [toTxObject(tx, guard), tx.object.mutRegistrar()],
|
|
199
181
|
});
|
|
200
182
|
}
|
|
201
183
|
// set the logic(and/or) of the guard; default is and
|
|
202
|
-
function reliesLogic(tx, guard, logic_and) {
|
|
184
|
+
export function reliesLogic(tx, guard, logic_and) {
|
|
203
185
|
tx.moveCall({
|
|
204
186
|
target: guardFn("relies_logic_and"),
|
|
205
|
-
arguments: [
|
|
187
|
+
arguments: [toTxObject(tx, guard), tx.pure.bool(logic_and)],
|
|
206
188
|
});
|
|
207
189
|
}
|
|
208
190
|
// ================================================
|
|
@@ -212,69 +194,69 @@ const buildNode = async (guard_node, type_required, table, output) => {
|
|
|
212
194
|
case "identifier": {
|
|
213
195
|
const f = table.find((v) => v.identifier === node.identifier);
|
|
214
196
|
if (f) {
|
|
215
|
-
const fValueType =
|
|
216
|
-
|
|
217
|
-
output.push(
|
|
218
|
-
output.push(
|
|
197
|
+
const fValueType = parseValueType(f.value_type);
|
|
198
|
+
checkType(fValueType, type_required, node);
|
|
199
|
+
output.push(bcs.U8.serialize(ContextType.TypeConstant).toBytes());
|
|
200
|
+
output.push(bcs.U8.serialize(node.identifier).toBytes());
|
|
219
201
|
}
|
|
220
202
|
else {
|
|
221
|
-
|
|
203
|
+
W_ERROR(WErrors.InvalidParam, "node identifier - " + JSON.stringify(node));
|
|
222
204
|
}
|
|
223
205
|
break;
|
|
224
206
|
}
|
|
225
207
|
case "query": {
|
|
226
|
-
const q =
|
|
208
|
+
const q = getGuardQueryInfo(node.query);
|
|
227
209
|
if (!q) {
|
|
228
|
-
|
|
210
|
+
W_ERROR(WErrors.InvalidParam, `query not found: ${node.query}`);
|
|
229
211
|
}
|
|
230
|
-
|
|
212
|
+
checkType(q.return, type_required, node);
|
|
231
213
|
if (q.parameters.length === node.parameters.length) {
|
|
232
214
|
for (let i = node.parameters.length - 1; i >= 0; --i) {
|
|
233
215
|
await buildNode(node.parameters[i], q.parameters[i], table, output);
|
|
234
216
|
}
|
|
235
217
|
}
|
|
236
218
|
else {
|
|
237
|
-
|
|
219
|
+
W_ERROR(WErrors.InvalidParam, "node query parameters length not match - " +
|
|
238
220
|
JSON.stringify(node));
|
|
239
221
|
}
|
|
240
222
|
const tableItem = table.find((v) => v.identifier === node.object.identifier);
|
|
241
223
|
if (!tableItem) {
|
|
242
|
-
|
|
224
|
+
W_ERROR(WErrors.InvalidParam, "node object from identifier - " + JSON.stringify(node));
|
|
243
225
|
}
|
|
244
|
-
const tableItemValueType =
|
|
245
|
-
if (tableItemValueType !==
|
|
246
|
-
|
|
226
|
+
const tableItemValueType = parseValueType(tableItem.value_type);
|
|
227
|
+
if (tableItemValueType !== ValueType.Address) {
|
|
228
|
+
W_ERROR(WErrors.InvalidParam, `object to query must be address in table ${tableItem}. ${node.object}`);
|
|
247
229
|
}
|
|
248
|
-
output.push(
|
|
249
|
-
if (
|
|
250
|
-
const target =
|
|
230
|
+
output.push(bcs.U8.serialize(OperatorType.TypeQuery).toBytes());
|
|
231
|
+
if (isWitnessType(node.object.convert_witness)) {
|
|
232
|
+
const target = WitnessTargetType(node.object.convert_witness);
|
|
251
233
|
if (target !== q.objectType) {
|
|
252
|
-
|
|
234
|
+
W_ERROR(WErrors.InvalidParam, `witness object type(${target}) not consistent with query object type(${q.objectType})`);
|
|
253
235
|
}
|
|
254
|
-
const source =
|
|
236
|
+
const source = WitnessSourceType(node.object.convert_witness);
|
|
255
237
|
if (tableItem.object_type) {
|
|
256
238
|
if (tableItem.object_type !== source) {
|
|
257
|
-
|
|
239
|
+
W_ERROR(WErrors.InvalidParam, `witness object type(${source}) not consistent with query object type(${tableItem.object_type})`);
|
|
258
240
|
}
|
|
259
241
|
}
|
|
260
242
|
else {
|
|
261
243
|
tableItem.object_type = source;
|
|
262
244
|
}
|
|
263
|
-
output.push(
|
|
245
|
+
output.push(bcs.U8.serialize(node.object.convert_witness).toBytes());
|
|
264
246
|
}
|
|
265
247
|
else {
|
|
266
248
|
if (tableItem?.object_type) {
|
|
267
249
|
if (tableItem.object_type !== q.objectType) {
|
|
268
|
-
|
|
250
|
+
W_ERROR(WErrors.InvalidParam, `witness object type(${q.objectType}) not consistent with query object type(${tableItem.object_type})`);
|
|
269
251
|
}
|
|
270
252
|
}
|
|
271
253
|
else {
|
|
272
254
|
tableItem.object_type = q.objectType;
|
|
273
255
|
}
|
|
274
|
-
output.push(
|
|
256
|
+
output.push(bcs.U8.serialize(ContextType.TypeConstant).toBytes());
|
|
275
257
|
}
|
|
276
|
-
output.push(
|
|
277
|
-
output.push(
|
|
258
|
+
output.push(bcs.U8.serialize(node.object.identifier).toBytes());
|
|
259
|
+
output.push(bcs.U16.serialize(q.id).toBytes());
|
|
278
260
|
break;
|
|
279
261
|
}
|
|
280
262
|
case "logic_as_u256_greater_or_equal":
|
|
@@ -297,25 +279,25 @@ const buildNode = async (guard_node, type_required, table, output) => {
|
|
|
297
279
|
case "calc_string_nocase_equal":
|
|
298
280
|
case "calc_string_contains": {
|
|
299
281
|
const opCodeMap = {
|
|
300
|
-
logic_as_u256_greater_or_equal:
|
|
301
|
-
logic_as_u256_lesser_or_equal:
|
|
302
|
-
logic_as_u256_equal:
|
|
303
|
-
logic_as_u256_greater:
|
|
304
|
-
logic_as_u256_lesser:
|
|
305
|
-
logic_equal:
|
|
306
|
-
logic_and:
|
|
307
|
-
logic_or:
|
|
308
|
-
logic_string_contains:
|
|
309
|
-
logic_string_nocase_contains:
|
|
310
|
-
logic_string_nocase_equal:
|
|
311
|
-
calc_number_add:
|
|
312
|
-
calc_number_subtract:
|
|
313
|
-
calc_number_multiply:
|
|
314
|
-
calc_number_divide:
|
|
315
|
-
calc_number_mod:
|
|
316
|
-
calc_string_nocase_contains:
|
|
317
|
-
calc_string_nocase_equal:
|
|
318
|
-
calc_string_contains:
|
|
282
|
+
logic_as_u256_greater_or_equal: OperatorType.TypeLogicAsU256GreaterEqual,
|
|
283
|
+
logic_as_u256_lesser_or_equal: OperatorType.TypeLogicAsU256LesserEqual,
|
|
284
|
+
logic_as_u256_equal: OperatorType.TypeLogicAsU256Equal,
|
|
285
|
+
logic_as_u256_greater: OperatorType.TypeLogicAsU256Greater,
|
|
286
|
+
logic_as_u256_lesser: OperatorType.TypeLogicAsU256Lesser,
|
|
287
|
+
logic_equal: OperatorType.TypeLogicEqual,
|
|
288
|
+
logic_and: OperatorType.TypeLogicAnd,
|
|
289
|
+
logic_or: OperatorType.TypeLogicOr,
|
|
290
|
+
logic_string_contains: OperatorType.TypeStringContains,
|
|
291
|
+
logic_string_nocase_contains: OperatorType.TypeStringNocaseContains,
|
|
292
|
+
logic_string_nocase_equal: OperatorType.TypeStringNocaseEqual,
|
|
293
|
+
calc_number_add: OperatorType.TypeNumberAdd,
|
|
294
|
+
calc_number_subtract: OperatorType.TypeNumberSubtract,
|
|
295
|
+
calc_number_multiply: OperatorType.TypeNumberMultiply,
|
|
296
|
+
calc_number_divide: OperatorType.TypeNumberDivide,
|
|
297
|
+
calc_number_mod: OperatorType.TypeNumberMod,
|
|
298
|
+
calc_string_nocase_contains: OperatorType.TypeStringNocaseContains,
|
|
299
|
+
calc_string_nocase_equal: OperatorType.TypeStringNocaseEqual,
|
|
300
|
+
calc_string_contains: OperatorType.TypeStringContains,
|
|
319
301
|
};
|
|
320
302
|
const requiredTypeMap = {
|
|
321
303
|
logic_as_u256_greater_or_equal: "number",
|
|
@@ -324,42 +306,42 @@ const buildNode = async (guard_node, type_required, table, output) => {
|
|
|
324
306
|
logic_as_u256_greater: "number",
|
|
325
307
|
logic_as_u256_lesser: "number",
|
|
326
308
|
logic_equal: "variable",
|
|
327
|
-
logic_and:
|
|
328
|
-
logic_or:
|
|
329
|
-
logic_string_contains:
|
|
330
|
-
logic_string_nocase_contains:
|
|
331
|
-
logic_string_nocase_equal:
|
|
309
|
+
logic_and: ValueType.Bool,
|
|
310
|
+
logic_or: ValueType.Bool,
|
|
311
|
+
logic_string_contains: ValueType.String,
|
|
312
|
+
logic_string_nocase_contains: ValueType.String,
|
|
313
|
+
logic_string_nocase_equal: ValueType.String,
|
|
332
314
|
calc_number_add: "number",
|
|
333
315
|
calc_number_subtract: "number",
|
|
334
316
|
calc_number_multiply: "number",
|
|
335
317
|
calc_number_divide: "number",
|
|
336
318
|
calc_number_mod: "number",
|
|
337
|
-
calc_string_nocase_contains:
|
|
338
|
-
calc_string_nocase_equal:
|
|
339
|
-
calc_string_contains:
|
|
319
|
+
calc_string_nocase_contains: ValueType.String,
|
|
320
|
+
calc_string_nocase_equal: ValueType.String,
|
|
321
|
+
calc_string_contains: ValueType.String,
|
|
340
322
|
};
|
|
341
323
|
const returnTypeMap = {
|
|
342
|
-
logic_as_u256_greater_or_equal:
|
|
343
|
-
logic_as_u256_lesser_or_equal:
|
|
344
|
-
logic_as_u256_equal:
|
|
345
|
-
logic_as_u256_greater:
|
|
346
|
-
logic_as_u256_lesser:
|
|
347
|
-
logic_equal:
|
|
348
|
-
logic_and:
|
|
349
|
-
logic_or:
|
|
350
|
-
logic_string_contains:
|
|
351
|
-
logic_string_nocase_contains:
|
|
352
|
-
logic_string_nocase_equal:
|
|
353
|
-
calc_number_add:
|
|
354
|
-
calc_number_subtract:
|
|
355
|
-
calc_number_multiply:
|
|
356
|
-
calc_number_divide:
|
|
357
|
-
calc_number_mod:
|
|
358
|
-
calc_string_nocase_contains:
|
|
359
|
-
calc_string_nocase_equal:
|
|
360
|
-
calc_string_contains:
|
|
324
|
+
logic_as_u256_greater_or_equal: ValueType.Bool,
|
|
325
|
+
logic_as_u256_lesser_or_equal: ValueType.Bool,
|
|
326
|
+
logic_as_u256_equal: ValueType.Bool,
|
|
327
|
+
logic_as_u256_greater: ValueType.Bool,
|
|
328
|
+
logic_as_u256_lesser: ValueType.Bool,
|
|
329
|
+
logic_equal: ValueType.Bool,
|
|
330
|
+
logic_and: ValueType.Bool,
|
|
331
|
+
logic_or: ValueType.Bool,
|
|
332
|
+
logic_string_contains: ValueType.Bool,
|
|
333
|
+
logic_string_nocase_contains: ValueType.Bool,
|
|
334
|
+
logic_string_nocase_equal: ValueType.Bool,
|
|
335
|
+
calc_number_add: ValueType.U256,
|
|
336
|
+
calc_number_subtract: ValueType.U256,
|
|
337
|
+
calc_number_multiply: ValueType.U256,
|
|
338
|
+
calc_number_divide: ValueType.U256,
|
|
339
|
+
calc_number_mod: ValueType.U256,
|
|
340
|
+
calc_string_nocase_contains: ValueType.Bool,
|
|
341
|
+
calc_string_nocase_equal: ValueType.Bool,
|
|
342
|
+
calc_string_contains: ValueType.Bool,
|
|
361
343
|
};
|
|
362
|
-
|
|
344
|
+
checkType(returnTypeMap[node.type], type_required, node);
|
|
363
345
|
await multi_operand_op(opCodeMap[node.type], node.nodes, requiredTypeMap[node.type], table, output);
|
|
364
346
|
break;
|
|
365
347
|
}
|
|
@@ -369,34 +351,34 @@ const buildNode = async (guard_node, type_required, table, output) => {
|
|
|
369
351
|
case "vec_contains_string_nocase":
|
|
370
352
|
case "vec_contains_number": {
|
|
371
353
|
const opCodeMap = {
|
|
372
|
-
vec_contains_bool:
|
|
373
|
-
vec_contains_address:
|
|
374
|
-
vec_contains_string:
|
|
375
|
-
vec_contains_string_nocase:
|
|
376
|
-
vec_contains_number:
|
|
354
|
+
vec_contains_bool: OperatorType.TypedValueVecContains_Bool,
|
|
355
|
+
vec_contains_address: OperatorType.TypedValueVecContains_Address,
|
|
356
|
+
vec_contains_string: OperatorType.TypedValueVecContains_String,
|
|
357
|
+
vec_contains_string_nocase: OperatorType.TypedValueVecContains_StringNoCase,
|
|
358
|
+
vec_contains_number: OperatorType.TypedValueVecContains_Number,
|
|
377
359
|
};
|
|
378
360
|
const vecTypeMap = {
|
|
379
|
-
vec_contains_bool:
|
|
380
|
-
vec_contains_address:
|
|
381
|
-
vec_contains_string:
|
|
382
|
-
vec_contains_string_nocase:
|
|
361
|
+
vec_contains_bool: ValueType.VecBool,
|
|
362
|
+
vec_contains_address: ValueType.VecAddress,
|
|
363
|
+
vec_contains_string: ValueType.VecString,
|
|
364
|
+
vec_contains_string_nocase: ValueType.VecString,
|
|
383
365
|
vec_contains_number: "vec_number",
|
|
384
366
|
};
|
|
385
367
|
const elemTypeMap = {
|
|
386
|
-
vec_contains_bool:
|
|
387
|
-
vec_contains_address:
|
|
388
|
-
vec_contains_string:
|
|
389
|
-
vec_contains_string_nocase:
|
|
368
|
+
vec_contains_bool: ValueType.Bool,
|
|
369
|
+
vec_contains_address: ValueType.Address,
|
|
370
|
+
vec_contains_string: ValueType.String,
|
|
371
|
+
vec_contains_string_nocase: ValueType.String,
|
|
390
372
|
vec_contains_number: "number",
|
|
391
373
|
};
|
|
392
|
-
|
|
374
|
+
checkType(ValueType.Bool, type_required, node);
|
|
393
375
|
//@ 第一个节点是vec类型,后面的节点是元素类型
|
|
394
376
|
for (let i = node.nodes.length - 1; i >= 0; --i) {
|
|
395
377
|
const nodeType = i === 0 ? vecTypeMap[node.type] : elemTypeMap[node.type];
|
|
396
378
|
await buildNode(node.nodes[i], nodeType, table, output);
|
|
397
379
|
}
|
|
398
|
-
output.push(
|
|
399
|
-
output.push(
|
|
380
|
+
output.push(bcs.U8.serialize(opCodeMap[node.type]).toBytes());
|
|
381
|
+
output.push(bcs.U8.serialize(node.nodes.length).toBytes());
|
|
400
382
|
break;
|
|
401
383
|
}
|
|
402
384
|
case "logic_not":
|
|
@@ -414,29 +396,29 @@ const buildNode = async (guard_node, type_required, table, output) => {
|
|
|
414
396
|
case "value_type":
|
|
415
397
|
case "vec_length": {
|
|
416
398
|
const opCodeMap = {
|
|
417
|
-
logic_not:
|
|
418
|
-
calc_string_length:
|
|
419
|
-
convert_number_address:
|
|
420
|
-
convert_address_number:
|
|
421
|
-
convert_number_string:
|
|
422
|
-
convert_string_number:
|
|
399
|
+
logic_not: OperatorType.TypeLogicNot,
|
|
400
|
+
calc_string_length: OperatorType.TypeStringLength,
|
|
401
|
+
convert_number_address: OperatorType.TypeNumberAddress,
|
|
402
|
+
convert_address_number: OperatorType.TypeAddressNumber,
|
|
403
|
+
convert_number_string: OperatorType.TypeNumberString,
|
|
404
|
+
convert_string_number: OperatorType.TypeStringNumber,
|
|
423
405
|
//convert_string_lowercase: OperatorType.TypeStringLowercase,
|
|
424
|
-
convert_safe_u8:
|
|
425
|
-
convert_safe_u16:
|
|
426
|
-
convert_safe_u32:
|
|
427
|
-
convert_safe_u64:
|
|
428
|
-
convert_safe_u128:
|
|
429
|
-
convert_safe_u256:
|
|
430
|
-
value_type:
|
|
431
|
-
vec_length:
|
|
406
|
+
convert_safe_u8: OperatorType.TypeSafeU8,
|
|
407
|
+
convert_safe_u16: OperatorType.TypeSafeU16,
|
|
408
|
+
convert_safe_u32: OperatorType.TypeSafeU32,
|
|
409
|
+
convert_safe_u64: OperatorType.TypeSafeU64,
|
|
410
|
+
convert_safe_u128: OperatorType.TypeSafeU128,
|
|
411
|
+
convert_safe_u256: OperatorType.TypeSafeU256,
|
|
412
|
+
value_type: OperatorType.TypedValueType,
|
|
413
|
+
vec_length: OperatorType.TypedValueVecLength,
|
|
432
414
|
};
|
|
433
415
|
const requiredTypeMap = {
|
|
434
|
-
logic_not:
|
|
435
|
-
calc_string_length:
|
|
416
|
+
logic_not: ValueType.Bool,
|
|
417
|
+
calc_string_length: ValueType.String,
|
|
436
418
|
convert_number_address: "number",
|
|
437
|
-
convert_address_number:
|
|
419
|
+
convert_address_number: ValueType.Address,
|
|
438
420
|
convert_number_string: "number",
|
|
439
|
-
convert_string_number:
|
|
421
|
+
convert_string_number: ValueType.String,
|
|
440
422
|
convert_safe_u8: "number",
|
|
441
423
|
convert_safe_u16: "number",
|
|
442
424
|
convert_safe_u32: "number",
|
|
@@ -447,37 +429,37 @@ const buildNode = async (guard_node, type_required, table, output) => {
|
|
|
447
429
|
vec_length: "vec",
|
|
448
430
|
};
|
|
449
431
|
const returnTypeMap = {
|
|
450
|
-
logic_not:
|
|
451
|
-
calc_string_length:
|
|
452
|
-
convert_number_address:
|
|
453
|
-
convert_address_number:
|
|
454
|
-
convert_number_string:
|
|
455
|
-
convert_string_number:
|
|
456
|
-
convert_safe_u8:
|
|
457
|
-
convert_safe_u16:
|
|
458
|
-
convert_safe_u32:
|
|
459
|
-
convert_safe_u64:
|
|
460
|
-
convert_safe_u128:
|
|
461
|
-
convert_safe_u256:
|
|
462
|
-
value_type:
|
|
463
|
-
vec_length:
|
|
432
|
+
logic_not: ValueType.Bool,
|
|
433
|
+
calc_string_length: ValueType.U64,
|
|
434
|
+
convert_number_address: ValueType.Address,
|
|
435
|
+
convert_address_number: ValueType.U256,
|
|
436
|
+
convert_number_string: ValueType.String,
|
|
437
|
+
convert_string_number: ValueType.U256,
|
|
438
|
+
convert_safe_u8: ValueType.U8,
|
|
439
|
+
convert_safe_u16: ValueType.U16,
|
|
440
|
+
convert_safe_u32: ValueType.U32,
|
|
441
|
+
convert_safe_u64: ValueType.U64,
|
|
442
|
+
convert_safe_u128: ValueType.U128,
|
|
443
|
+
convert_safe_u256: ValueType.U256,
|
|
444
|
+
value_type: ValueType.U8,
|
|
445
|
+
vec_length: ValueType.U64,
|
|
464
446
|
};
|
|
465
|
-
|
|
447
|
+
checkType(returnTypeMap[node.type], type_required, node);
|
|
466
448
|
await single_operand_op(opCodeMap[node.type], node.node, requiredTypeMap[node.type], table, output);
|
|
467
449
|
break;
|
|
468
450
|
}
|
|
469
451
|
case "calc_string_indexof":
|
|
470
452
|
case "calc_string_nocase_indexof": {
|
|
471
453
|
const opCodeMap = {
|
|
472
|
-
calc_string_indexof:
|
|
473
|
-
calc_string_nocase_indexof:
|
|
454
|
+
calc_string_indexof: OperatorType.TypeStringIndexof,
|
|
455
|
+
calc_string_nocase_indexof: OperatorType.TypeStringNocaseIndexof,
|
|
474
456
|
};
|
|
475
|
-
|
|
457
|
+
checkType(ValueType.U64, type_required, node);
|
|
476
458
|
//@ 第一个元素在栈顶
|
|
477
|
-
await buildNode(node.nodeRight,
|
|
478
|
-
await buildNode(node.nodeLeft,
|
|
479
|
-
output.push(
|
|
480
|
-
output.push(
|
|
459
|
+
await buildNode(node.nodeRight, ValueType.String, table, output);
|
|
460
|
+
await buildNode(node.nodeLeft, ValueType.String, table, output);
|
|
461
|
+
output.push(bcs.U8.serialize(opCodeMap[node.type]).toBytes());
|
|
462
|
+
output.push(bcs.U8.serialize(node.order === "forward" ? 0 : 1).toBytes());
|
|
481
463
|
break;
|
|
482
464
|
}
|
|
483
465
|
case "vec_indexof_bool":
|
|
@@ -486,73 +468,73 @@ const buildNode = async (guard_node, type_required, table, output) => {
|
|
|
486
468
|
case "vec_indexof_string_nocase":
|
|
487
469
|
case "vec_indexof_number": {
|
|
488
470
|
const opCodeMap = {
|
|
489
|
-
vec_indexof_bool:
|
|
490
|
-
vec_indexof_address:
|
|
491
|
-
vec_indexof_string:
|
|
492
|
-
vec_indexof_string_nocase:
|
|
493
|
-
vec_indexof_number:
|
|
471
|
+
vec_indexof_bool: OperatorType.TypedValueVecIndexOf_Bool,
|
|
472
|
+
vec_indexof_address: OperatorType.TypedValueVecIndexOf_Address,
|
|
473
|
+
vec_indexof_string: OperatorType.TypedValueVecIndexOf_String,
|
|
474
|
+
vec_indexof_string_nocase: OperatorType.TypedValueVecIndexOf_StringNoCase,
|
|
475
|
+
vec_indexof_number: OperatorType.TypedValueVecIndexOf_Number,
|
|
494
476
|
};
|
|
495
477
|
const rightTypeMap = {
|
|
496
|
-
vec_indexof_bool:
|
|
497
|
-
vec_indexof_address:
|
|
498
|
-
vec_indexof_string:
|
|
499
|
-
vec_indexof_string_nocase:
|
|
478
|
+
vec_indexof_bool: ValueType.Bool,
|
|
479
|
+
vec_indexof_address: ValueType.Address,
|
|
480
|
+
vec_indexof_string: ValueType.String,
|
|
481
|
+
vec_indexof_string_nocase: ValueType.String,
|
|
500
482
|
vec_indexof_number: "number",
|
|
501
483
|
};
|
|
502
484
|
const leftTypeMap = {
|
|
503
|
-
vec_indexof_bool:
|
|
504
|
-
vec_indexof_address:
|
|
505
|
-
vec_indexof_string:
|
|
506
|
-
vec_indexof_string_nocase:
|
|
485
|
+
vec_indexof_bool: ValueType.VecBool,
|
|
486
|
+
vec_indexof_address: ValueType.VecAddress,
|
|
487
|
+
vec_indexof_string: ValueType.VecString,
|
|
488
|
+
vec_indexof_string_nocase: ValueType.VecString,
|
|
507
489
|
vec_indexof_number: "vec_number",
|
|
508
490
|
};
|
|
509
|
-
|
|
491
|
+
checkType(ValueType.U64, type_required, node);
|
|
510
492
|
//@ 第一个元素在栈顶
|
|
511
493
|
await buildNode(node.nodeRight, rightTypeMap[node.type], table, output);
|
|
512
494
|
await buildNode(node.nodeLeft, leftTypeMap[node.type], table, output);
|
|
513
|
-
output.push(
|
|
514
|
-
output.push(
|
|
495
|
+
output.push(bcs.U8.serialize(opCodeMap[node.type]).toBytes());
|
|
496
|
+
output.push(bcs.U8.serialize(node.order === "forward" ? 0 : 1).toBytes());
|
|
515
497
|
break;
|
|
516
498
|
}
|
|
517
499
|
case "context": {
|
|
518
500
|
let contextValue;
|
|
519
501
|
switch (node.context) {
|
|
520
502
|
case "Signer":
|
|
521
|
-
contextValue =
|
|
503
|
+
contextValue = ContextType.TypeSigner;
|
|
522
504
|
break;
|
|
523
505
|
case "Clock":
|
|
524
|
-
contextValue =
|
|
506
|
+
contextValue = ContextType.TypeClock;
|
|
525
507
|
break;
|
|
526
508
|
case "Guard":
|
|
527
|
-
contextValue =
|
|
509
|
+
contextValue = ContextType.TypeGuard;
|
|
528
510
|
break;
|
|
529
511
|
default:
|
|
530
|
-
|
|
512
|
+
W_ERROR(WErrors.InvalidParam, "Invalid context type: " + node.context);
|
|
531
513
|
}
|
|
532
|
-
output.push(
|
|
533
|
-
|
|
514
|
+
output.push(bcs.U8.serialize(contextValue).toBytes());
|
|
515
|
+
checkType(ValueType.Address, type_required, node);
|
|
534
516
|
break;
|
|
535
517
|
}
|
|
536
518
|
default:
|
|
537
|
-
|
|
519
|
+
W_ERROR(WErrors.InvalidParam, "node:" + JSON.stringify(node));
|
|
538
520
|
}
|
|
539
521
|
};
|
|
540
522
|
const multi_operand_op = async (op_code, parameters, required_type, table, output) => {
|
|
541
|
-
if (parameters.length < 2 || parameters.length >
|
|
542
|
-
|
|
543
|
-
${
|
|
523
|
+
if (parameters.length < 2 || parameters.length > MAX_MULTI_OPERANDS) {
|
|
524
|
+
W_ERROR(WErrors.InvalidParam, `op ${op_code} parameters length must >= 2 and <=
|
|
525
|
+
${MAX_MULTI_OPERANDS}. parameters:
|
|
544
526
|
${JSON.stringify(parameters)}`);
|
|
545
527
|
}
|
|
546
528
|
//@ 和query一样,栈顶是第一个参数
|
|
547
529
|
for (let i = parameters.length - 1; i >= 0; --i) {
|
|
548
530
|
await buildNode(parameters[i], required_type, table, output);
|
|
549
531
|
}
|
|
550
|
-
output.push(
|
|
551
|
-
output.push(
|
|
532
|
+
output.push(bcs.U8.serialize(op_code).toBytes()); // TYPE
|
|
533
|
+
output.push(bcs.U8.serialize(parameters.length).toBytes());
|
|
552
534
|
};
|
|
553
535
|
const single_operand_op = async (op_code, parameter, required_type, table, output) => {
|
|
554
536
|
await buildNode(parameter, required_type, table, output);
|
|
555
|
-
output.push(
|
|
537
|
+
output.push(bcs.U8.serialize(op_code).toBytes()); // TYPE
|
|
556
538
|
};
|
|
557
539
|
/**
|
|
558
540
|
* Query Guard object data and export to JSON or Markdown file
|
|
@@ -562,20 +544,20 @@ const single_operand_op = async (op_code, parameter, required_type, table, outpu
|
|
|
562
544
|
* @param network - Network entrypoint
|
|
563
545
|
* @throws Error if query fails or file write fails
|
|
564
546
|
*/
|
|
565
|
-
const guard2file = async (guard, file_path, format = "json", network) => {
|
|
547
|
+
export const guard2file = async (guard, file_path, format = "json", network) => {
|
|
566
548
|
// Query Guard object
|
|
567
|
-
const queryResult = await
|
|
549
|
+
const queryResult = await query_objects({
|
|
568
550
|
objects: [guard],
|
|
569
551
|
network,
|
|
570
552
|
});
|
|
571
553
|
const objects = queryResult.objects;
|
|
572
554
|
if (!objects || objects.length === 0 || objects[0].type !== "Guard") {
|
|
573
|
-
|
|
555
|
+
W_ERROR(WErrors.InvalidParam, `guard2file: Guard object not found: ${guard}`);
|
|
574
556
|
return;
|
|
575
557
|
}
|
|
576
558
|
const guardObj = objects[0];
|
|
577
559
|
if (!guardObj) {
|
|
578
|
-
|
|
560
|
+
W_ERROR(WErrors.InvalidParam, `guard2file: Failed to get Guard object data: ${guard}`);
|
|
579
561
|
return;
|
|
580
562
|
}
|
|
581
563
|
// Prepare output content based on format
|
|
@@ -588,14 +570,13 @@ const guard2file = async (guard, file_path, format = "json", network) => {
|
|
|
588
570
|
}
|
|
589
571
|
// Write to file
|
|
590
572
|
try {
|
|
591
|
-
const resolvedPath =
|
|
592
|
-
|
|
573
|
+
const resolvedPath = resolve(file_path);
|
|
574
|
+
writeFileSync(resolvedPath, content, "utf-8");
|
|
593
575
|
}
|
|
594
576
|
catch (e) {
|
|
595
|
-
|
|
577
|
+
W_ERROR(WErrors.InvalidParam, `guard2file: Failed to write file '${file_path}': ${e.message}`);
|
|
596
578
|
}
|
|
597
579
|
};
|
|
598
|
-
exports.guard2file = guard2file;
|
|
599
580
|
/**
|
|
600
581
|
* Generate JSON format Guard definition with comments
|
|
601
582
|
*/
|
|
@@ -659,7 +640,7 @@ const generateGuardMarkdown = (guardObj) => {
|
|
|
659
640
|
lines.push("|------------|--------------|------------|-------|------|");
|
|
660
641
|
if (guardObj.table && guardObj.table.length > 0) {
|
|
661
642
|
for (const item of guardObj.table) {
|
|
662
|
-
const itemValueType =
|
|
643
|
+
const itemValueType = parseValueType(item.value_type);
|
|
663
644
|
const valueTypeStr = valueTypeToString(itemValueType);
|
|
664
645
|
const valueStr = formatValueForMarkdown(item.value);
|
|
665
646
|
lines.push(`| ${item.identifier} | ${item.b_submission} | ${valueTypeStr} (${item.value_type}) | ${valueStr} | ${item.name} |`);
|
|
@@ -680,7 +661,7 @@ const generateGuardMarkdown = (guardObj) => {
|
|
|
680
661
|
lines.push("```");
|
|
681
662
|
lines.push("");
|
|
682
663
|
// Add node comments
|
|
683
|
-
const nodeComments =
|
|
664
|
+
const nodeComments = generateNodeComments(guardObj.root);
|
|
684
665
|
if (nodeComments.length > 0) {
|
|
685
666
|
lines.push("### Node Comments");
|
|
686
667
|
lines.push("");
|
|
@@ -743,14 +724,14 @@ const formatValueForMarkdown = (value) => {
|
|
|
743
724
|
/**
|
|
744
725
|
* Generate comments for Guard nodes
|
|
745
726
|
*/
|
|
746
|
-
const generateNodeComments = (node, comments = []) => {
|
|
727
|
+
export const generateNodeComments = (node, comments = []) => {
|
|
747
728
|
if (!node)
|
|
748
729
|
return comments;
|
|
749
730
|
// Add comment for this node
|
|
750
731
|
if (node.type === "query") {
|
|
751
732
|
const queryId = typeof node.query === "number" ? node.query : undefined;
|
|
752
733
|
if (queryId !== undefined) {
|
|
753
|
-
const queryInfo =
|
|
734
|
+
const queryInfo = GUARDQUERY.find((q) => q.id === queryId);
|
|
754
735
|
if (queryInfo) {
|
|
755
736
|
comments.push({
|
|
756
737
|
type: `query(${node.query})`,
|
|
@@ -780,60 +761,59 @@ const generateNodeComments = (node, comments = []) => {
|
|
|
780
761
|
// Recursively process child nodes
|
|
781
762
|
if ("nodes" in node && Array.isArray(node.nodes)) {
|
|
782
763
|
for (const childNode of node.nodes) {
|
|
783
|
-
|
|
764
|
+
generateNodeComments(childNode, comments);
|
|
784
765
|
}
|
|
785
766
|
}
|
|
786
767
|
if ("node" in node && node.node) {
|
|
787
|
-
|
|
768
|
+
generateNodeComments(node.node, comments);
|
|
788
769
|
}
|
|
789
770
|
if ("parameters" in node && Array.isArray(node.parameters)) {
|
|
790
771
|
for (const param of node.parameters) {
|
|
791
|
-
|
|
772
|
+
generateNodeComments(param, comments);
|
|
792
773
|
}
|
|
793
774
|
}
|
|
794
775
|
if ("nodeLeft" in node && node.nodeLeft) {
|
|
795
|
-
|
|
776
|
+
generateNodeComments(node.nodeLeft, comments);
|
|
796
777
|
}
|
|
797
778
|
if ("nodeRight" in node && node.nodeRight) {
|
|
798
|
-
|
|
779
|
+
generateNodeComments(node.nodeRight, comments);
|
|
799
780
|
}
|
|
800
781
|
return comments;
|
|
801
782
|
};
|
|
802
|
-
exports.generateNodeComments = generateNodeComments;
|
|
803
783
|
/**
|
|
804
784
|
* Convert ValueType enum to string representation
|
|
805
785
|
*/
|
|
806
786
|
const valueTypeToString = (valueType) => {
|
|
807
787
|
const typeMap = {
|
|
808
|
-
[
|
|
809
|
-
[
|
|
810
|
-
[
|
|
811
|
-
[
|
|
812
|
-
[
|
|
813
|
-
[
|
|
814
|
-
[
|
|
815
|
-
[
|
|
816
|
-
[
|
|
817
|
-
[
|
|
818
|
-
[
|
|
819
|
-
[
|
|
820
|
-
[
|
|
821
|
-
[
|
|
822
|
-
[
|
|
823
|
-
[
|
|
824
|
-
[
|
|
825
|
-
[
|
|
826
|
-
[
|
|
827
|
-
[
|
|
788
|
+
[ValueType.Bool]: "Bool",
|
|
789
|
+
[ValueType.Address]: "Address",
|
|
790
|
+
[ValueType.String]: "String",
|
|
791
|
+
[ValueType.U8]: "U8",
|
|
792
|
+
[ValueType.U16]: "U16",
|
|
793
|
+
[ValueType.U32]: "U32",
|
|
794
|
+
[ValueType.U64]: "U64",
|
|
795
|
+
[ValueType.U128]: "U128",
|
|
796
|
+
[ValueType.U256]: "U256",
|
|
797
|
+
[ValueType.VecBool]: "VecBool",
|
|
798
|
+
[ValueType.VecAddress]: "VecAddress",
|
|
799
|
+
[ValueType.VecString]: "VecString",
|
|
800
|
+
[ValueType.VecU8]: "VecU8",
|
|
801
|
+
[ValueType.VecU16]: "VecU16",
|
|
802
|
+
[ValueType.VecU32]: "VecU32",
|
|
803
|
+
[ValueType.VecU64]: "VecU64",
|
|
804
|
+
[ValueType.VecU128]: "VecU128",
|
|
805
|
+
[ValueType.VecU256]: "VecU256",
|
|
806
|
+
[ValueType.VecVecU8]: "VecVecU8",
|
|
807
|
+
[ValueType.Value]: "Value",
|
|
828
808
|
};
|
|
829
809
|
return typeMap[valueType] || `Unknown(${valueType})`;
|
|
830
810
|
};
|
|
831
|
-
const gen_passport = async (env, guard, info) => {
|
|
832
|
-
if (!
|
|
833
|
-
|
|
811
|
+
export const gen_passport = async (env, guard, info) => {
|
|
812
|
+
if (!isValidWowAddress(guard)) {
|
|
813
|
+
W_ERROR(WErrors.InvalidParam, "guard invalid: guard empty");
|
|
834
814
|
}
|
|
835
|
-
await
|
|
836
|
-
const s = await
|
|
815
|
+
await resolveCallEnv(env);
|
|
816
|
+
const s = await get_guardSubmissions(env, [guard]);
|
|
837
817
|
if (s.submission.length > 0) {
|
|
838
818
|
if (!info) {
|
|
839
819
|
return {
|
|
@@ -843,18 +823,17 @@ const gen_passport = async (env, guard, info) => {
|
|
|
843
823
|
};
|
|
844
824
|
}
|
|
845
825
|
else {
|
|
846
|
-
return await
|
|
826
|
+
return await verify_guard(env, info);
|
|
847
827
|
}
|
|
848
828
|
}
|
|
849
829
|
else {
|
|
850
|
-
return await
|
|
830
|
+
return await verify_guard(env, {
|
|
851
831
|
type: "submission",
|
|
852
832
|
guard: [{ object: guard, impack: true }],
|
|
853
833
|
submission: [],
|
|
854
834
|
});
|
|
855
835
|
}
|
|
856
836
|
};
|
|
857
|
-
exports.gen_passport = gen_passport;
|
|
858
837
|
/**
|
|
859
838
|
* Detect file format from content or extension
|
|
860
839
|
*/
|
|
@@ -959,7 +938,7 @@ function parseRelyFromMarkdown(section) {
|
|
|
959
938
|
* Parse Guard definition from markdown content
|
|
960
939
|
* Unified parsing logic shared between SDK and MCP
|
|
961
940
|
*/
|
|
962
|
-
function parseGuardFromMarkdown(content) {
|
|
941
|
+
export function parseGuardFromMarkdown(content) {
|
|
963
942
|
const errors = [];
|
|
964
943
|
const result = {};
|
|
965
944
|
// Try to extract full JSON from code blocks first
|
|
@@ -1041,7 +1020,7 @@ function parseGuardFromMarkdown(content) {
|
|
|
1041
1020
|
* Supports both JSON and Markdown formats
|
|
1042
1021
|
* Unified parsing logic shared between SDK and MCP
|
|
1043
1022
|
*/
|
|
1044
|
-
function parseGuardFile(content, format) {
|
|
1023
|
+
export function parseGuardFile(content, format) {
|
|
1045
1024
|
const detectedFormat = format ?? detectFileFormatFromContent(content);
|
|
1046
1025
|
if (detectedFormat === "json") {
|
|
1047
1026
|
try {
|
|
@@ -1078,7 +1057,7 @@ function parseGuardFile(content, format) {
|
|
|
1078
1057
|
* Validate GuardNode structure
|
|
1079
1058
|
* Basic validation without Zod dependency
|
|
1080
1059
|
*/
|
|
1081
|
-
function validateGuardNode(node) {
|
|
1060
|
+
export function validateGuardNode(node) {
|
|
1082
1061
|
const errors = [];
|
|
1083
1062
|
if (!node || typeof node !== "object") {
|
|
1084
1063
|
errors.push({ message: "GuardNode must be an object", path: "/" });
|
|
@@ -1154,7 +1133,7 @@ function validateGuardNode(node) {
|
|
|
1154
1133
|
/**
|
|
1155
1134
|
* Format parse errors for display
|
|
1156
1135
|
*/
|
|
1157
|
-
function formatGuardParseErrors(errors) {
|
|
1136
|
+
export function formatGuardParseErrors(errors) {
|
|
1158
1137
|
return errors
|
|
1159
1138
|
.map((e) => {
|
|
1160
1139
|
let msg = `Path: ${e.path}`;
|