phantasma-sdk-ts 0.1.71
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/.eslintignore +13 -0
- package/.eslintrc.cjs +15 -0
- package/.github/workflows/npm-publish.yml +47 -0
- package/.prettierignore +13 -0
- package/.prettierrc +8 -0
- package/LICENSE +201 -0
- package/README.md +842 -0
- package/babel.config.js +6 -0
- package/core/index.d.ts +10 -0
- package/core/index.d.ts.map +1 -0
- package/core/index.js +25 -0
- package/core/interfaces/IContract.d.ts +27 -0
- package/core/interfaces/IContract.d.ts.map +1 -0
- package/core/interfaces/IContract.js +25 -0
- package/core/interfaces/IKeyPair.d.ts +7 -0
- package/core/interfaces/IKeyPair.d.ts.map +1 -0
- package/core/interfaces/IKeyPair.js +2 -0
- package/core/interfaces/ISerializable.d.ts +6 -0
- package/core/interfaces/ISerializable.d.ts.map +1 -0
- package/core/interfaces/ISerializable.js +9 -0
- package/core/interfaces/IStack.d.ts +7 -0
- package/core/interfaces/IStack.d.ts.map +1 -0
- package/core/interfaces/IStack.js +2 -0
- package/core/interfaces/IToken.d.ts +29 -0
- package/core/interfaces/IToken.d.ts.map +1 -0
- package/core/interfaces/IToken.js +22 -0
- package/core/interfaces/Signature.d.ts +21 -0
- package/core/interfaces/Signature.d.ts.map +1 -0
- package/core/interfaces/Signature.js +31 -0
- package/core/interfaces/index.d.ts +7 -0
- package/core/interfaces/index.d.ts.map +1 -0
- package/core/interfaces/index.js +22 -0
- package/core/ledger/Address-Transcode.d.ts +20 -0
- package/core/ledger/Address-Transcode.d.ts.map +1 -0
- package/core/ledger/Address-Transcode.js +70 -0
- package/core/ledger/Ledger-Commands.d.ts +76 -0
- package/core/ledger/Ledger-Commands.d.ts.map +1 -0
- package/core/ledger/Ledger-Commands.js +530 -0
- package/core/ledger/Ledger-Utils.d.ts +74 -0
- package/core/ledger/Ledger-Utils.d.ts.map +1 -0
- package/core/ledger/Ledger-Utils.js +609 -0
- package/core/ledger/LedgerConfig.d.ts +17 -0
- package/core/ledger/LedgerConfig.d.ts.map +1 -0
- package/core/ledger/LedgerConfig.js +2 -0
- package/core/ledger/Mnemonic.d.ts +35 -0
- package/core/ledger/Mnemonic.d.ts.map +1 -0
- package/core/ledger/Mnemonic.js +65 -0
- package/core/ledger/Transaction-Sign.d.ts +10 -0
- package/core/ledger/Transaction-Sign.d.ts.map +1 -0
- package/core/ledger/Transaction-Sign.js +149 -0
- package/core/ledger/Transaction-Transcode.d.ts +24 -0
- package/core/ledger/Transaction-Transcode.d.ts.map +1 -0
- package/core/ledger/Transaction-Transcode.js +47 -0
- package/core/ledger/index.d.ts +9 -0
- package/core/ledger/index.d.ts.map +1 -0
- package/core/ledger/index.js +24 -0
- package/core/ledger/interfaces/ApplicationNameResponse.d.ts +6 -0
- package/core/ledger/interfaces/ApplicationNameResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/ApplicationNameResponse.js +2 -0
- package/core/ledger/interfaces/Device.d.ts +7 -0
- package/core/ledger/interfaces/Device.d.ts.map +1 -0
- package/core/ledger/interfaces/Device.js +2 -0
- package/core/ledger/interfaces/DeviceResponse.d.ts +7 -0
- package/core/ledger/interfaces/DeviceResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/DeviceResponse.js +2 -0
- package/core/ledger/interfaces/Ledger.d.ts +2 -0
- package/core/ledger/interfaces/Ledger.d.ts.map +1 -0
- package/core/ledger/interfaces/Ledger.js +2 -0
- package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.d.ts +12 -0
- package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.js +2 -0
- package/core/ledger/interfaces/LedgerConfig.d.ts +17 -0
- package/core/ledger/interfaces/LedgerConfig.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerConfig.js +2 -0
- package/core/ledger/interfaces/LedgerDeviceInfoResponse.d.ts +7 -0
- package/core/ledger/interfaces/LedgerDeviceInfoResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerDeviceInfoResponse.js +2 -0
- package/core/ledger/interfaces/LedgerSendTransactionResponse.d.ts +5 -0
- package/core/ledger/interfaces/LedgerSendTransactionResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerSendTransactionResponse.js +2 -0
- package/core/ledger/interfaces/LedgerSigner.d.ts +6 -0
- package/core/ledger/interfaces/LedgerSigner.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerSigner.js +2 -0
- package/core/ledger/interfaces/LedgerSignerData.d.ts +8 -0
- package/core/ledger/interfaces/LedgerSignerData.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerSignerData.js +2 -0
- package/core/ledger/interfaces/PublicKeyResponse.d.ts +6 -0
- package/core/ledger/interfaces/PublicKeyResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/PublicKeyResponse.js +2 -0
- package/core/ledger/interfaces/SignResponse.d.ts +6 -0
- package/core/ledger/interfaces/SignResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/SignResponse.js +2 -0
- package/core/ledger/interfaces/VersionResponse.d.ts +6 -0
- package/core/ledger/interfaces/VersionResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/VersionResponse.js +2 -0
- package/core/ledger/interfaces/index.d.ts +14 -0
- package/core/ledger/interfaces/index.d.ts.map +1 -0
- package/core/ledger/interfaces/index.js +29 -0
- package/core/ledger/ledger-comm.d.ts +85 -0
- package/core/ledger/ledger-comm.d.ts.map +1 -0
- package/core/ledger/ledger-comm.js +613 -0
- package/core/link/easyConnect.d.ts +23 -0
- package/core/link/easyConnect.d.ts.map +1 -0
- package/core/link/easyConnect.js +237 -0
- package/core/link/easyScript.d.ts +13 -0
- package/core/link/easyScript.d.ts.map +1 -0
- package/core/link/easyScript.js +52 -0
- package/core/link/index.d.ts +2 -0
- package/core/link/index.d.ts.map +1 -0
- package/core/link/index.js +17 -0
- package/core/link/interfaces/IAccount.d.ts +13 -0
- package/core/link/interfaces/IAccount.d.ts.map +1 -0
- package/core/link/interfaces/IAccount.js +2 -0
- package/core/link/interfaces/IFile.d.ts +7 -0
- package/core/link/interfaces/IFile.d.ts.map +1 -0
- package/core/link/interfaces/IFile.js +2 -0
- package/core/link/interfaces/ProofOfWork.d.ts +9 -0
- package/core/link/interfaces/ProofOfWork.d.ts.map +1 -0
- package/core/link/interfaces/ProofOfWork.js +12 -0
- package/core/link/interfaces/index.d.ts +4 -0
- package/core/link/interfaces/index.d.ts.map +1 -0
- package/core/link/interfaces/index.js +19 -0
- package/core/link/phantasmaLink.d.ts +41 -0
- package/core/link/phantasmaLink.d.ts.map +1 -0
- package/core/link/phantasmaLink.js +479 -0
- package/core/rpc/index.d.ts +3 -0
- package/core/rpc/index.d.ts.map +1 -0
- package/core/rpc/index.js +18 -0
- package/core/rpc/interfaces/ABIContract.d.ts +6 -0
- package/core/rpc/interfaces/ABIContract.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIContract.js +2 -0
- package/core/rpc/interfaces/ABIEvent.d.ts +7 -0
- package/core/rpc/interfaces/ABIEvent.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIEvent.js +2 -0
- package/core/rpc/interfaces/ABIMethod.d.ts +7 -0
- package/core/rpc/interfaces/ABIMethod.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIMethod.js +2 -0
- package/core/rpc/interfaces/ABIParameter.d.ts +5 -0
- package/core/rpc/interfaces/ABIParameter.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIParameter.js +2 -0
- package/core/rpc/interfaces/Account.d.ts +16 -0
- package/core/rpc/interfaces/Account.d.ts.map +1 -0
- package/core/rpc/interfaces/Account.js +2 -0
- package/core/rpc/interfaces/AccountTransactions.d.ts +6 -0
- package/core/rpc/interfaces/AccountTransactions.d.ts.map +1 -0
- package/core/rpc/interfaces/AccountTransactions.js +2 -0
- package/core/rpc/interfaces/Archive.d.ts +11 -0
- package/core/rpc/interfaces/Archive.d.ts.map +1 -0
- package/core/rpc/interfaces/Archive.js +2 -0
- package/core/rpc/interfaces/Auction.d.ts +13 -0
- package/core/rpc/interfaces/Auction.d.ts.map +1 -0
- package/core/rpc/interfaces/Auction.js +2 -0
- package/core/rpc/interfaces/Balance.d.ts +8 -0
- package/core/rpc/interfaces/Balance.d.ts.map +1 -0
- package/core/rpc/interfaces/Balance.js +2 -0
- package/core/rpc/interfaces/Block.d.ts +17 -0
- package/core/rpc/interfaces/Block.d.ts.map +1 -0
- package/core/rpc/interfaces/Block.js +2 -0
- package/core/rpc/interfaces/Chain.d.ts +10 -0
- package/core/rpc/interfaces/Chain.d.ts.map +1 -0
- package/core/rpc/interfaces/Chain.js +2 -0
- package/core/rpc/interfaces/Channel.d.ts +13 -0
- package/core/rpc/interfaces/Channel.d.ts.map +1 -0
- package/core/rpc/interfaces/Channel.js +2 -0
- package/core/rpc/interfaces/Contract.d.ts +11 -0
- package/core/rpc/interfaces/Contract.d.ts.map +1 -0
- package/core/rpc/interfaces/Contract.js +2 -0
- package/core/rpc/interfaces/Dapp.d.ts +6 -0
- package/core/rpc/interfaces/Dapp.d.ts.map +1 -0
- package/core/rpc/interfaces/Dapp.js +2 -0
- package/core/rpc/interfaces/Event.d.ts +7 -0
- package/core/rpc/interfaces/Event.d.ts.map +1 -0
- package/core/rpc/interfaces/Event.js +2 -0
- package/core/rpc/interfaces/Governance.d.ts +5 -0
- package/core/rpc/interfaces/Governance.d.ts.map +1 -0
- package/core/rpc/interfaces/Governance.js +2 -0
- package/core/rpc/interfaces/Interop.d.ts +5 -0
- package/core/rpc/interfaces/Interop.d.ts.map +1 -0
- package/core/rpc/interfaces/Interop.js +2 -0
- package/core/rpc/interfaces/KeyValue.d.ts +5 -0
- package/core/rpc/interfaces/KeyValue.d.ts.map +1 -0
- package/core/rpc/interfaces/KeyValue.js +2 -0
- package/core/rpc/interfaces/Leaderboard.d.ts +6 -0
- package/core/rpc/interfaces/Leaderboard.d.ts.map +1 -0
- package/core/rpc/interfaces/Leaderboard.js +2 -0
- package/core/rpc/interfaces/LeaderboardRow.d.ts +5 -0
- package/core/rpc/interfaces/LeaderboardRow.d.ts.map +1 -0
- package/core/rpc/interfaces/LeaderboardRow.js +2 -0
- package/core/rpc/interfaces/NFT.d.ts +14 -0
- package/core/rpc/interfaces/NFT.d.ts.map +1 -0
- package/core/rpc/interfaces/NFT.js +2 -0
- package/core/rpc/interfaces/Nexus.d.ts +14 -0
- package/core/rpc/interfaces/Nexus.d.ts.map +1 -0
- package/core/rpc/interfaces/Nexus.js +2 -0
- package/core/rpc/interfaces/Oracle.d.ts +5 -0
- package/core/rpc/interfaces/Oracle.d.ts.map +1 -0
- package/core/rpc/interfaces/Oracle.js +2 -0
- package/core/rpc/interfaces/Organization.d.ts +6 -0
- package/core/rpc/interfaces/Organization.d.ts.map +1 -0
- package/core/rpc/interfaces/Organization.js +2 -0
- package/core/rpc/interfaces/Paginated.d.ts +8 -0
- package/core/rpc/interfaces/Paginated.d.ts.map +1 -0
- package/core/rpc/interfaces/Paginated.js +2 -0
- package/core/rpc/interfaces/Peer.d.ts +8 -0
- package/core/rpc/interfaces/Peer.d.ts.map +1 -0
- package/core/rpc/interfaces/Peer.js +2 -0
- package/core/rpc/interfaces/Platform.d.ts +9 -0
- package/core/rpc/interfaces/Platform.d.ts.map +1 -0
- package/core/rpc/interfaces/Platform.js +2 -0
- package/core/rpc/interfaces/Receipt.d.ts +10 -0
- package/core/rpc/interfaces/Receipt.d.ts.map +1 -0
- package/core/rpc/interfaces/Receipt.js +2 -0
- package/core/rpc/interfaces/Script.d.ts +9 -0
- package/core/rpc/interfaces/Script.d.ts.map +1 -0
- package/core/rpc/interfaces/Script.js +2 -0
- package/core/rpc/interfaces/SendRawTx.d.ts +5 -0
- package/core/rpc/interfaces/SendRawTx.d.ts.map +1 -0
- package/core/rpc/interfaces/SendRawTx.js +2 -0
- package/core/rpc/interfaces/SignatureResult.d.ts +5 -0
- package/core/rpc/interfaces/SignatureResult.d.ts.map +1 -0
- package/core/rpc/interfaces/SignatureResult.js +2 -0
- package/core/rpc/interfaces/Stake.d.ts +6 -0
- package/core/rpc/interfaces/Stake.d.ts.map +1 -0
- package/core/rpc/interfaces/Stake.js +2 -0
- package/core/rpc/interfaces/Storage.d.ts +8 -0
- package/core/rpc/interfaces/Storage.d.ts.map +1 -0
- package/core/rpc/interfaces/Storage.js +2 -0
- package/core/rpc/interfaces/Swap.d.ts +13 -0
- package/core/rpc/interfaces/Swap.d.ts.map +1 -0
- package/core/rpc/interfaces/Swap.js +2 -0
- package/core/rpc/interfaces/Token.d.ts +19 -0
- package/core/rpc/interfaces/Token.d.ts.map +1 -0
- package/core/rpc/interfaces/Token.js +2 -0
- package/core/rpc/interfaces/TokenData.d.ts +13 -0
- package/core/rpc/interfaces/TokenData.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenData.js +2 -0
- package/core/rpc/interfaces/TokenExternal.d.ts +5 -0
- package/core/rpc/interfaces/TokenExternal.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenExternal.js +2 -0
- package/core/rpc/interfaces/TokenPrice.d.ts +8 -0
- package/core/rpc/interfaces/TokenPrice.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenPrice.js +2 -0
- package/core/rpc/interfaces/TokenSeries.d.ts +12 -0
- package/core/rpc/interfaces/TokenSeries.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenSeries.js +2 -0
- package/core/rpc/interfaces/TransactionData.d.ts +23 -0
- package/core/rpc/interfaces/TransactionData.d.ts.map +1 -0
- package/core/rpc/interfaces/TransactionData.js +2 -0
- package/core/rpc/interfaces/Validator.d.ts +5 -0
- package/core/rpc/interfaces/Validator.d.ts.map +1 -0
- package/core/rpc/interfaces/Validator.js +2 -0
- package/core/rpc/interfaces/index.d.ts +42 -0
- package/core/rpc/interfaces/index.d.ts.map +1 -0
- package/core/rpc/interfaces/index.js +57 -0
- package/core/rpc/phantasma.d.ts +89 -0
- package/core/rpc/phantasma.d.ts.map +1 -0
- package/core/rpc/phantasma.js +900 -0
- package/core/tx/SignatureKind.js +9 -0
- package/core/tx/Transaction.d.ts +28 -0
- package/core/tx/Transaction.d.ts.map +1 -0
- package/core/tx/Transaction.js +209 -0
- package/core/tx/index.d.ts +3 -0
- package/core/tx/index.d.ts.map +1 -0
- package/core/tx/index.js +18 -0
- package/core/tx/utils.d.ts +10 -0
- package/core/tx/utils.d.ts.map +1 -0
- package/core/tx/utils.js +147 -0
- package/core/types/Address.d.ts +41 -0
- package/core/types/Address.d.ts.map +1 -0
- package/core/types/Address.js +276 -0
- package/core/types/Consensus.d.ts +61 -0
- package/core/types/Consensus.d.ts.map +1 -0
- package/core/types/Consensus.js +151 -0
- package/core/types/Contract.d.ts +60 -0
- package/core/types/Contract.d.ts.map +1 -0
- package/core/types/Contract.js +342 -0
- package/core/types/DomainSettings.d.ts +87 -0
- package/core/types/DomainSettings.d.ts.map +1 -0
- package/core/types/DomainSettings.js +107 -0
- package/core/types/Ed25519Signature.d.ts +16 -0
- package/core/types/Ed25519Signature.d.ts.map +1 -0
- package/core/types/Ed25519Signature.js +78 -0
- package/core/types/Entropy.d.ts +5 -0
- package/core/types/Entropy.d.ts.map +1 -0
- package/core/types/Entropy.js +24 -0
- package/core/types/Extensions/Base16.d.ts +7 -0
- package/core/types/Extensions/Base16.d.ts.map +1 -0
- package/core/types/Extensions/Base16.js +36 -0
- package/core/types/Extensions/BinaryReader.d.ts +17 -0
- package/core/types/Extensions/BinaryReader.d.ts.map +1 -0
- package/core/types/Extensions/BinaryReader.js +192 -0
- package/core/types/Extensions/BinaryWriter.d.ts +25 -0
- package/core/types/Extensions/BinaryWriter.d.ts.map +1 -0
- package/core/types/Extensions/BinaryWriter.js +191 -0
- package/core/types/Extensions/Describer.d.ts +5 -0
- package/core/types/Extensions/Describer.d.ts.map +1 -0
- package/core/types/Extensions/Describer.js +25 -0
- package/core/types/Extensions/PBinaryReader.d.ts +42 -0
- package/core/types/Extensions/PBinaryReader.d.ts.map +1 -0
- package/core/types/Extensions/PBinaryReader.js +269 -0
- package/core/types/Extensions/PBinaryWriter.d.ts +49 -0
- package/core/types/Extensions/PBinaryWriter.d.ts.map +1 -0
- package/core/types/Extensions/PBinaryWriter.js +250 -0
- package/core/types/Extensions/TableColumns.d.ts +5 -0
- package/core/types/Extensions/TableColumns.d.ts.map +1 -0
- package/core/types/Extensions/TableColumns.js +22 -0
- package/core/types/Extensions/index.d.ts +5 -0
- package/core/types/Extensions/index.d.ts.map +1 -0
- package/core/types/Extensions/index.js +20 -0
- package/core/types/PhantasmaKeys.d.ts +19 -0
- package/core/types/PhantasmaKeys.d.ts.map +1 -0
- package/core/types/PhantasmaKeys.js +92 -0
- package/core/types/Serialization.d.ts +22 -0
- package/core/types/Serialization.d.ts.map +1 -0
- package/core/types/Serialization.js +195 -0
- package/core/types/Stack.d.ts +16 -0
- package/core/types/Stack.d.ts.map +1 -0
- package/core/types/Stack.js +42 -0
- package/core/types/Timestamp.d.ts +26 -0
- package/core/types/Timestamp.d.ts.map +1 -0
- package/core/types/Timestamp.js +74 -0
- package/core/types/index.d.ts +12 -0
- package/core/types/index.d.ts.map +1 -0
- package/core/types/index.js +27 -0
- package/core/utils/index.d.ts +25 -0
- package/core/utils/index.d.ts.map +1 -0
- package/core/utils/index.js +236 -0
- package/core/vm/Contracts.d.ts +17 -0
- package/core/vm/Contracts.d.ts.map +1 -0
- package/core/vm/Contracts.js +20 -0
- package/core/vm/Decoder.d.ts +19 -0
- package/core/vm/Decoder.d.ts.map +1 -0
- package/core/vm/Decoder.js +175 -0
- package/core/vm/EventData.d.ts +97 -0
- package/core/vm/EventData.d.ts.map +1 -0
- package/core/vm/EventData.js +134 -0
- package/core/vm/Opcode.d.ts +57 -0
- package/core/vm/Opcode.d.ts.map +1 -0
- package/core/vm/Opcode.js +69 -0
- package/core/vm/ScriptBuilder.d.ts +65 -0
- package/core/vm/ScriptBuilder.d.ts.map +1 -0
- package/core/vm/ScriptBuilder.js +592 -0
- package/core/vm/VMObject.d.ts +55 -0
- package/core/vm/VMObject.d.ts.map +1 -0
- package/core/vm/VMObject.js +1101 -0
- package/core/vm/VMType.d.ts +12 -0
- package/core/vm/VMType.d.ts.map +1 -0
- package/core/vm/VMType.js +15 -0
- package/core/vm/index.d.ts +8 -0
- package/core/vm/index.d.ts.map +1 -0
- package/core/vm/index.js +23 -0
- package/html/TestWebPage.html +187 -0
- package/html/phantasma.js +60504 -0
- package/index.d.ts +5 -0
- package/index.d.ts.map +1 -0
- package/index.js +36 -0
- package/jest.config.js +5 -0
- package/package.json +67 -0
- package/src/core/index.ts +9 -0
- package/src/core/interfaces/IContract.ts +28 -0
- package/src/core/interfaces/IKeyPair.ts +14 -0
- package/src/core/interfaces/ISerializable.ts +6 -0
- package/src/core/interfaces/IStack.ts +6 -0
- package/src/core/interfaces/IToken.ts +31 -0
- package/src/core/interfaces/Signature.ts +32 -0
- package/src/core/interfaces/index.ts +6 -0
- package/src/core/ledger/Address-Transcode.ts +44 -0
- package/src/core/ledger/Ledger-Commands.ts +463 -0
- package/src/core/ledger/Ledger-Utils.ts +549 -0
- package/src/core/ledger/Mnemonic.ts +79 -0
- package/src/core/ledger/Transaction-Sign.ts +126 -0
- package/src/core/ledger/Transaction-Transcode.ts +56 -0
- package/src/core/ledger/index.ts +8 -0
- package/src/core/ledger/interfaces/ApplicationNameResponse.ts +5 -0
- package/src/core/ledger/interfaces/Device.ts +6 -0
- package/src/core/ledger/interfaces/DeviceResponse.ts +6 -0
- package/src/core/ledger/interfaces/Ledger.ts +10 -0
- package/src/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.ts +9 -0
- package/src/core/ledger/interfaces/LedgerConfig.ts +17 -0
- package/src/core/ledger/interfaces/LedgerDeviceInfoResponse.ts +7 -0
- package/src/core/ledger/interfaces/LedgerSendTransactionResponse.ts +4 -0
- package/src/core/ledger/interfaces/LedgerSigner.ts +6 -0
- package/src/core/ledger/interfaces/LedgerSignerData.ts +8 -0
- package/src/core/ledger/interfaces/PublicKeyResponse.ts +5 -0
- package/src/core/ledger/interfaces/SignResponse.ts +5 -0
- package/src/core/ledger/interfaces/VersionResponse.ts +5 -0
- package/src/core/ledger/interfaces/index.ts +13 -0
- package/src/core/link/easyConnect.ts +214 -0
- package/src/core/link/easyScript.ts +67 -0
- package/src/core/link/index.ts +1 -0
- package/src/core/link/interfaces/IAccount.ts +13 -0
- package/src/core/link/interfaces/IFile.ts +6 -0
- package/src/core/link/interfaces/ProofOfWork.ts +8 -0
- package/src/core/link/interfaces/index.ts +3 -0
- package/src/core/link/phantasmaLink.ts +561 -0
- package/src/core/rpc/index.ts +2 -0
- package/src/core/rpc/interfaces/ABIContract.ts +6 -0
- package/src/core/rpc/interfaces/ABIEvent.ts +6 -0
- package/src/core/rpc/interfaces/ABIMethod.ts +7 -0
- package/src/core/rpc/interfaces/ABIParameter.ts +4 -0
- package/src/core/rpc/interfaces/Account.ts +16 -0
- package/src/core/rpc/interfaces/AccountTransactions.ts +6 -0
- package/src/core/rpc/interfaces/Archive.ts +10 -0
- package/src/core/rpc/interfaces/Auction.ts +12 -0
- package/src/core/rpc/interfaces/Balance.ts +7 -0
- package/src/core/rpc/interfaces/Block.ts +17 -0
- package/src/core/rpc/interfaces/Chain.ts +9 -0
- package/src/core/rpc/interfaces/Channel.ts +12 -0
- package/src/core/rpc/interfaces/Contract.ts +11 -0
- package/src/core/rpc/interfaces/Dapp.ts +5 -0
- package/src/core/rpc/interfaces/Event.ts +6 -0
- package/src/core/rpc/interfaces/Governance.ts +4 -0
- package/src/core/rpc/interfaces/Interop.ts +4 -0
- package/src/core/rpc/interfaces/KeyValue.ts +4 -0
- package/src/core/rpc/interfaces/Leaderboard.ts +6 -0
- package/src/core/rpc/interfaces/LeaderboardRow.ts +4 -0
- package/src/core/rpc/interfaces/NFT.ts +14 -0
- package/src/core/rpc/interfaces/Nexus.ts +14 -0
- package/src/core/rpc/interfaces/Oracle.ts +4 -0
- package/src/core/rpc/interfaces/Organization.ts +5 -0
- package/src/core/rpc/interfaces/Paginated.ts +7 -0
- package/src/core/rpc/interfaces/Peer.ts +7 -0
- package/src/core/rpc/interfaces/Platform.ts +9 -0
- package/src/core/rpc/interfaces/Receipt.ts +9 -0
- package/src/core/rpc/interfaces/Script.ts +9 -0
- package/src/core/rpc/interfaces/SendRawTx.ts +4 -0
- package/src/core/rpc/interfaces/SignatureResult.ts +4 -0
- package/src/core/rpc/interfaces/Stake.ts +5 -0
- package/src/core/rpc/interfaces/Storage.ts +8 -0
- package/src/core/rpc/interfaces/Swap.ts +12 -0
- package/src/core/rpc/interfaces/Token.ts +19 -0
- package/src/core/rpc/interfaces/TokenData.ts +12 -0
- package/src/core/rpc/interfaces/TokenExternal.ts +4 -0
- package/src/core/rpc/interfaces/TokenPrice.ts +7 -0
- package/src/core/rpc/interfaces/TokenSeries.ts +12 -0
- package/src/core/rpc/interfaces/TransactionData.ts +23 -0
- package/src/core/rpc/interfaces/Validator.ts +4 -0
- package/src/core/rpc/interfaces/index.ts +41 -0
- package/src/core/rpc/phantasma.ts +466 -0
- package/src/core/tx/Transaction.ts +258 -0
- package/src/core/tx/index.ts +2 -0
- package/src/core/tx/utils.ts +106 -0
- package/src/core/types/Address.ts +290 -0
- package/src/core/types/Consensus.ts +181 -0
- package/src/core/types/Contract.ts +324 -0
- package/src/core/types/DomainSettings.ts +128 -0
- package/src/core/types/Ed25519Signature.ts +78 -0
- package/src/core/types/Entropy.ts +16 -0
- package/src/core/types/Extensions/Base16.ts +36 -0
- package/src/core/types/Extensions/Describer.ts +17 -0
- package/src/core/types/Extensions/PBinaryReader.ts +247 -0
- package/src/core/types/Extensions/PBinaryWriter.ts +278 -0
- package/src/core/types/Extensions/index.ts +4 -0
- package/src/core/types/PhantasmaKeys.ts +119 -0
- package/src/core/types/Serialization.ts +211 -0
- package/src/core/types/Stack.ts +46 -0
- package/src/core/types/Timestamp.ts +93 -0
- package/src/core/types/index.ts +11 -0
- package/src/core/utils/index.ts +206 -0
- package/src/core/vm/Contracts.ts +17 -0
- package/src/core/vm/Decoder.ts +162 -0
- package/src/core/vm/Disassembler.ts +1 -0
- package/src/core/vm/EventData.ts +135 -0
- package/src/core/vm/Opcode.ts +74 -0
- package/src/core/vm/ScriptBuilder.ts +588 -0
- package/src/core/vm/VMObject.ts +1162 -0
- package/src/core/vm/VMType.ts +11 -0
- package/src/core/vm/index.ts +7 -0
- package/src/core/vm/utils/DisasmMethodCall.ts +22 -0
- package/src/core/vm/utils/DisasmUtils.ts +89 -0
- package/src/core/vm/utils/index.ts +2 -0
- package/src/index.ts +7 -0
- package/tests/VMObject.test.ts +146 -0
- package/tests/ledger/Address-Transacode.test.ts +26 -0
- package/tests/tx/Transaction.test.ts +274 -0
- package/tests/types/Address.test.ts +26 -0
- package/tests/types/Consensus.test.ts +67 -0
- package/tsconfig.json +29 -0
|
@@ -0,0 +1,1101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __values = (this && this.__values) || function(o) {
|
|
3
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
+
if (m) return m.call(o);
|
|
5
|
+
if (o && typeof o.length === "number") return {
|
|
6
|
+
next: function () {
|
|
7
|
+
if (o && i >= o.length) o = void 0;
|
|
8
|
+
return { value: o && o[i++], done: !o };
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.VMObject = void 0;
|
|
15
|
+
var VMType_1 = require("./VMType");
|
|
16
|
+
var Timestamp_1 = require("../types/Timestamp");
|
|
17
|
+
var types_1 = require("../types");
|
|
18
|
+
var interfaces_1 = require("../interfaces");
|
|
19
|
+
var utils_1 = require("../utils");
|
|
20
|
+
var VMObject = /** @class */ (function () {
|
|
21
|
+
function VMObject() {
|
|
22
|
+
this._localSize = 0;
|
|
23
|
+
this.Type = VMType_1.VMType.None;
|
|
24
|
+
this.Data = null;
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(VMObject.prototype, "IsEmpty", {
|
|
27
|
+
get: function () {
|
|
28
|
+
return this.Data == null || this.Data == undefined;
|
|
29
|
+
},
|
|
30
|
+
enumerable: false,
|
|
31
|
+
configurable: true
|
|
32
|
+
});
|
|
33
|
+
VMObject.prototype.GetChildren = function () {
|
|
34
|
+
return this.Type == VMType_1.VMType.Struct
|
|
35
|
+
? this.Data
|
|
36
|
+
: null;
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(VMObject.prototype, "Size", {
|
|
39
|
+
get: function () {
|
|
40
|
+
var total = 0;
|
|
41
|
+
if (this.Type == VMType_1.VMType.Object) {
|
|
42
|
+
var children = this.GetChildren();
|
|
43
|
+
var values = children === null || children === void 0 ? void 0 : children.values;
|
|
44
|
+
for (var entry in values) {
|
|
45
|
+
total += entry.length;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
total = this._localSize;
|
|
50
|
+
}
|
|
51
|
+
return total;
|
|
52
|
+
},
|
|
53
|
+
enumerable: false,
|
|
54
|
+
configurable: true
|
|
55
|
+
});
|
|
56
|
+
VMObject.prototype.AsTimestamp = function () {
|
|
57
|
+
if (this.Type != VMType_1.VMType.Timestamp) {
|
|
58
|
+
throw new Error("Invalid cast: expected timestamp, got ".concat(this.Type));
|
|
59
|
+
}
|
|
60
|
+
return this.Data;
|
|
61
|
+
};
|
|
62
|
+
VMObject.prototype.AsByteArray = function () {
|
|
63
|
+
switch (this.Type) {
|
|
64
|
+
case VMType_1.VMType.Bytes:
|
|
65
|
+
return this.Data;
|
|
66
|
+
case VMType_1.VMType.Bool:
|
|
67
|
+
return new Uint8Array([this.Data ? 1 : 0]);
|
|
68
|
+
case VMType_1.VMType.String:
|
|
69
|
+
return new TextEncoder().encode(this.AsString());
|
|
70
|
+
case VMType_1.VMType.Number:
|
|
71
|
+
// Here you will have to convert BigInteger to Uint8Array manually
|
|
72
|
+
case VMType_1.VMType.Enum:
|
|
73
|
+
var num = this.AsNumber();
|
|
74
|
+
var bytes = new Uint8Array(new ArrayBuffer(4));
|
|
75
|
+
new DataView(bytes.buffer).setUint32(0, num);
|
|
76
|
+
return bytes;
|
|
77
|
+
case VMType_1.VMType.Timestamp:
|
|
78
|
+
var time = this.AsTimestamp();
|
|
79
|
+
var bytes = new Uint8Array(new ArrayBuffer(4));
|
|
80
|
+
new DataView(bytes.buffer).setUint32(0, time.value);
|
|
81
|
+
return bytes;
|
|
82
|
+
case VMType_1.VMType.Struct:
|
|
83
|
+
// Here you will have to convert struct to Uint8Array manually
|
|
84
|
+
case VMType_1.VMType.Object:
|
|
85
|
+
// here you will have to convert ISerializable to Uint8Array manually
|
|
86
|
+
default:
|
|
87
|
+
throw new Error("Invalid cast: expected bytes, got ".concat(this.Type));
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
VMObject.prototype.AsString = function () {
|
|
91
|
+
var _a, _b;
|
|
92
|
+
switch (this.Type) {
|
|
93
|
+
case VMType_1.VMType.String:
|
|
94
|
+
return (_a = this.Data) === null || _a === void 0 ? void 0 : _a.toString();
|
|
95
|
+
case VMType_1.VMType.Number:
|
|
96
|
+
return this.Data.toString();
|
|
97
|
+
case VMType_1.VMType.Bytes:
|
|
98
|
+
return (0, utils_1.uint8ArrayToStringDefault)(this.Data);
|
|
99
|
+
case VMType_1.VMType.Enum:
|
|
100
|
+
return this.Data.toString();
|
|
101
|
+
case VMType_1.VMType.Object:
|
|
102
|
+
if (this.Data instanceof types_1.Address) {
|
|
103
|
+
return this.Data.Text;
|
|
104
|
+
}
|
|
105
|
+
/*if (this.Data instanceof Hash) {
|
|
106
|
+
return this.Data.toString();
|
|
107
|
+
}*/
|
|
108
|
+
return "Interop:" + ((_b = this.Data) === null || _b === void 0 ? void 0 : _b.constructor.name);
|
|
109
|
+
case VMType_1.VMType.Struct:
|
|
110
|
+
var arrayType = this.GetArrayType();
|
|
111
|
+
if (arrayType === VMType_1.VMType.Number) {
|
|
112
|
+
// convert array of unicode numbers into a string
|
|
113
|
+
var children = this.GetChildren();
|
|
114
|
+
var sb = "";
|
|
115
|
+
for (var i = 0; i < children.size; i++) {
|
|
116
|
+
var key = VMObject.FromObject(i);
|
|
117
|
+
var val = children === null || children === void 0 ? void 0 : children.get(key);
|
|
118
|
+
var ch = String.fromCharCode(val.AsNumber());
|
|
119
|
+
sb += ch;
|
|
120
|
+
}
|
|
121
|
+
return sb;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
/*const buffer = new ArrayBuffer(this.Data?.length as number);
|
|
125
|
+
const view = new DataView(buffer);
|
|
126
|
+
this.SerializeData(view);
|
|
127
|
+
return btoa(String.fromCharCode.apply(null, new Uint8Array(buffer)));*/
|
|
128
|
+
}
|
|
129
|
+
case VMType_1.VMType.Bool:
|
|
130
|
+
return this.Data ? "true" : "false";
|
|
131
|
+
case VMType_1.VMType.Timestamp:
|
|
132
|
+
return this.Data.value.toString();
|
|
133
|
+
default:
|
|
134
|
+
throw new Error("Invalid cast: expected string, got ".concat(this.Type));
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
VMObject.prototype.ToString = function () {
|
|
138
|
+
switch (this.Type) {
|
|
139
|
+
case VMType_1.VMType.String:
|
|
140
|
+
return this.Data;
|
|
141
|
+
case VMType_1.VMType.Number:
|
|
142
|
+
return this.Data.toString();
|
|
143
|
+
case VMType_1.VMType.Bytes:
|
|
144
|
+
return new TextDecoder().decode(this.Data);
|
|
145
|
+
case VMType_1.VMType.Enum:
|
|
146
|
+
return this.Data.toString();
|
|
147
|
+
case VMType_1.VMType.Object:
|
|
148
|
+
if (this.Data instanceof types_1.Address) {
|
|
149
|
+
return this.Data.Text;
|
|
150
|
+
}
|
|
151
|
+
/*if (this.Data instanceof Hash) {
|
|
152
|
+
return this.Data.toString();
|
|
153
|
+
}*/
|
|
154
|
+
return "Interop:" + this.Data.constructor.name;
|
|
155
|
+
case VMType_1.VMType.Struct:
|
|
156
|
+
var arrayType = this.GetArrayType();
|
|
157
|
+
if (arrayType === VMType_1.VMType.Number) {
|
|
158
|
+
// convert array of unicode numbers into a string
|
|
159
|
+
var children = this.GetChildren();
|
|
160
|
+
var sb = "";
|
|
161
|
+
for (var i = 0; i < children.size; i++) {
|
|
162
|
+
var key = VMObject.FromObject(i);
|
|
163
|
+
var val = children.get(key);
|
|
164
|
+
var ch = String.fromCharCode(val.AsNumber());
|
|
165
|
+
sb += ch;
|
|
166
|
+
}
|
|
167
|
+
return sb;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
/*const stream = new PMemoryStream();
|
|
171
|
+
const writer = new PBinaryWriter(stream);
|
|
172
|
+
this.SerializeData(writer);
|
|
173
|
+
return new TextDecoder().decode(stream.toArray());*/
|
|
174
|
+
}
|
|
175
|
+
case VMType_1.VMType.Bool:
|
|
176
|
+
return this.Data ? "true" : "false";
|
|
177
|
+
case VMType_1.VMType.Timestamp:
|
|
178
|
+
return this.Data.value.toString();
|
|
179
|
+
default:
|
|
180
|
+
throw new Error("Invalid cast: expected string, got ".concat(this.Type));
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
VMObject.prototype.AsNumber = function () {
|
|
184
|
+
if ((this.Type === VMType_1.VMType.Object || this.Type === VMType_1.VMType.Timestamp) &&
|
|
185
|
+
this.Data instanceof Timestamp_1.Timestamp) {
|
|
186
|
+
return this.Data.value;
|
|
187
|
+
}
|
|
188
|
+
switch (this.Type) {
|
|
189
|
+
case VMType_1.VMType.String: {
|
|
190
|
+
var number = Number(this.Data);
|
|
191
|
+
if (number.toString() === this.Data) {
|
|
192
|
+
return number;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
throw new Error("Cannot convert String '".concat(this.Data, "' to BigInteger."));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
case VMType_1.VMType.Bytes: {
|
|
199
|
+
var bytes = new Uint8Array(this.Data);
|
|
200
|
+
var num = BigInt("0x".concat(bytes.join("")));
|
|
201
|
+
return num;
|
|
202
|
+
}
|
|
203
|
+
case VMType_1.VMType.Enum: {
|
|
204
|
+
var num = Number(this.Data);
|
|
205
|
+
return BigInt(num);
|
|
206
|
+
}
|
|
207
|
+
case VMType_1.VMType.Bool: {
|
|
208
|
+
var val = this.Data;
|
|
209
|
+
return val ? 1 : 0;
|
|
210
|
+
}
|
|
211
|
+
default: {
|
|
212
|
+
if (this.Type !== VMType_1.VMType.Number) {
|
|
213
|
+
throw new Error("Invalid cast: expected number, got ".concat(this.Type));
|
|
214
|
+
}
|
|
215
|
+
return Number(this.Data);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
VMObject.prototype.AsEnum = function () {
|
|
220
|
+
if (!VMObject.isEnum(this.Data)) {
|
|
221
|
+
throw new Error("T must be an enumerated type");
|
|
222
|
+
}
|
|
223
|
+
if (this.Type !== VMType_1.VMType.Enum) {
|
|
224
|
+
this.Data = new Number(this.AsNumber());
|
|
225
|
+
}
|
|
226
|
+
return this.Data;
|
|
227
|
+
};
|
|
228
|
+
VMObject.prototype.GetArrayType = function () {
|
|
229
|
+
if (this.Type !== VMType_1.VMType.Struct) {
|
|
230
|
+
return VMType_1.VMType.None;
|
|
231
|
+
}
|
|
232
|
+
var children = this.GetChildren();
|
|
233
|
+
var result = VMType_1.VMType.None;
|
|
234
|
+
for (var i = 0; i < children.size; i++) {
|
|
235
|
+
var key = VMObject.FromObject(i);
|
|
236
|
+
if (!children.has(key)) {
|
|
237
|
+
return VMType_1.VMType.None;
|
|
238
|
+
}
|
|
239
|
+
var val = children.get(key);
|
|
240
|
+
if (result === VMType_1.VMType.None) {
|
|
241
|
+
result = val.Type;
|
|
242
|
+
}
|
|
243
|
+
else if (val.Type !== result) {
|
|
244
|
+
return VMType_1.VMType.None;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return result;
|
|
248
|
+
};
|
|
249
|
+
VMObject.prototype.AsType = function (type) {
|
|
250
|
+
switch (type) {
|
|
251
|
+
case VMType_1.VMType.Bool:
|
|
252
|
+
return this.AsBool();
|
|
253
|
+
case VMType_1.VMType.String:
|
|
254
|
+
return this.AsString();
|
|
255
|
+
case VMType_1.VMType.Bytes:
|
|
256
|
+
return this.AsByteArray();
|
|
257
|
+
case VMType_1.VMType.Number:
|
|
258
|
+
return this.AsNumber();
|
|
259
|
+
case VMType_1.VMType.Timestamp:
|
|
260
|
+
return this.AsTimestamp();
|
|
261
|
+
default:
|
|
262
|
+
throw "Unsupported VM cast";
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
VMObject.isEnum = function (instance) {
|
|
266
|
+
var e_1, _a, e_2, _b;
|
|
267
|
+
if (instance == null)
|
|
268
|
+
return false;
|
|
269
|
+
var keys = Object.keys(instance);
|
|
270
|
+
var values = [];
|
|
271
|
+
try {
|
|
272
|
+
for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
|
|
273
|
+
var key = keys_1_1.value;
|
|
274
|
+
var value = instance[key];
|
|
275
|
+
if (typeof value === "number") {
|
|
276
|
+
value = value.toString();
|
|
277
|
+
}
|
|
278
|
+
values.push(value);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
282
|
+
finally {
|
|
283
|
+
try {
|
|
284
|
+
if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
|
|
285
|
+
}
|
|
286
|
+
finally { if (e_1) throw e_1.error; }
|
|
287
|
+
}
|
|
288
|
+
try {
|
|
289
|
+
for (var keys_2 = __values(keys), keys_2_1 = keys_2.next(); !keys_2_1.done; keys_2_1 = keys_2.next()) {
|
|
290
|
+
var key = keys_2_1.value;
|
|
291
|
+
if (values.indexOf(key) < 0) {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
297
|
+
finally {
|
|
298
|
+
try {
|
|
299
|
+
if (keys_2_1 && !keys_2_1.done && (_b = keys_2.return)) _b.call(keys_2);
|
|
300
|
+
}
|
|
301
|
+
finally { if (e_2) throw e_2.error; }
|
|
302
|
+
}
|
|
303
|
+
return true;
|
|
304
|
+
};
|
|
305
|
+
/*public AsEnum<T>(): T {
|
|
306
|
+
if (isEnum(this.Data)) {
|
|
307
|
+
throw new ArgumentException("T must be an enumerated type");
|
|
308
|
+
}
|
|
309
|
+
if (this.Type != VMType.Enum) {
|
|
310
|
+
const num = this.AsNumber();
|
|
311
|
+
this.Data = Number(this.Data);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return (T) Enum.Parse(typeof T, this.Data.toString());
|
|
315
|
+
}*/
|
|
316
|
+
VMObject.prototype.AsBool = function () {
|
|
317
|
+
switch (this.Type) {
|
|
318
|
+
case VMType_1.VMType.String:
|
|
319
|
+
return this.Data.toLowerCase() == "true";
|
|
320
|
+
case VMType_1.VMType.Number:
|
|
321
|
+
return this.Data != BigInt(0);
|
|
322
|
+
case VMType_1.VMType.Bool:
|
|
323
|
+
return this.Data ? true : false;
|
|
324
|
+
default:
|
|
325
|
+
throw new Error("Invalid cast: expected bool, got ".concat(this.Type));
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
VMObject.isStructOrClass = function (type) {
|
|
329
|
+
return ((!VMObject.isPrimitive(type) &&
|
|
330
|
+
VMObject.isValueType(type) &&
|
|
331
|
+
!VMObject.isEnum(type)) ||
|
|
332
|
+
VMObject.isClass(type) ||
|
|
333
|
+
VMObject.isInterface(type));
|
|
334
|
+
};
|
|
335
|
+
VMObject.isSerializable = function (type) {
|
|
336
|
+
return (type instanceof interfaces_1.ISerializable ||
|
|
337
|
+
VMObject.isPrimitive(type) ||
|
|
338
|
+
VMObject.isStructOrClass(type) ||
|
|
339
|
+
VMObject.isEnum(type));
|
|
340
|
+
};
|
|
341
|
+
VMObject.isPrimitive = function (type) {
|
|
342
|
+
return (type === String || type === Number || type === Boolean || type === BigInt);
|
|
343
|
+
};
|
|
344
|
+
VMObject.isValueType = function (type) {
|
|
345
|
+
return type === Object;
|
|
346
|
+
};
|
|
347
|
+
VMObject.isClass = function (type) {
|
|
348
|
+
return (type === Array ||
|
|
349
|
+
type === Map ||
|
|
350
|
+
type === Set ||
|
|
351
|
+
type instanceof Object ||
|
|
352
|
+
(typeof type).toLowerCase() === "object");
|
|
353
|
+
};
|
|
354
|
+
VMObject.isInterface = function (type) {
|
|
355
|
+
return type === Map;
|
|
356
|
+
};
|
|
357
|
+
VMObject.ConvertObjectInternal = function (fieldValue, fieldType) {
|
|
358
|
+
if ((VMObject.isStructOrClass(fieldType) &&
|
|
359
|
+
fieldValue instanceof Uint8Array) ||
|
|
360
|
+
fieldValue instanceof Array) {
|
|
361
|
+
var bytes = fieldValue;
|
|
362
|
+
fieldValue = types_1.Serialization.Unserialize(bytes, typeof fieldType);
|
|
363
|
+
}
|
|
364
|
+
else if (VMObject.isEnum(fieldType)) {
|
|
365
|
+
var tempValue = fieldValue;
|
|
366
|
+
fieldValue = tempValue;
|
|
367
|
+
}
|
|
368
|
+
return fieldValue;
|
|
369
|
+
};
|
|
370
|
+
VMObject.prototype.ToArray = function (arrayElementType) {
|
|
371
|
+
var e_3, _a, e_4, _b;
|
|
372
|
+
if (this.Type !== VMType_1.VMType.Struct) {
|
|
373
|
+
throw new Error("not a valid source struct");
|
|
374
|
+
}
|
|
375
|
+
var children = this.GetChildren();
|
|
376
|
+
var maxIndex = -1;
|
|
377
|
+
try {
|
|
378
|
+
for (var children_1 = __values(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {
|
|
379
|
+
var child = children_1_1.value;
|
|
380
|
+
if (child[0].Type !== VMType_1.VMType.Number) {
|
|
381
|
+
throw new Error("source contains an element with invalid array index");
|
|
382
|
+
}
|
|
383
|
+
var temp = child[0].AsNumber();
|
|
384
|
+
// TODO use a constant for VM max array size
|
|
385
|
+
if (temp >= 1024) {
|
|
386
|
+
throw new Error("source contains an element with a very large array index");
|
|
387
|
+
}
|
|
388
|
+
var index = Math.floor(temp);
|
|
389
|
+
if (index < 0) {
|
|
390
|
+
throw new Error("source contains an array index with negative value");
|
|
391
|
+
}
|
|
392
|
+
maxIndex = Math.max(index, maxIndex);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
396
|
+
finally {
|
|
397
|
+
try {
|
|
398
|
+
if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);
|
|
399
|
+
}
|
|
400
|
+
finally { if (e_3) throw e_3.error; }
|
|
401
|
+
}
|
|
402
|
+
var length = maxIndex + 1;
|
|
403
|
+
var array = new Array(length);
|
|
404
|
+
try {
|
|
405
|
+
for (var children_2 = __values(children), children_2_1 = children_2.next(); !children_2_1.done; children_2_1 = children_2.next()) {
|
|
406
|
+
var child = children_2_1.value;
|
|
407
|
+
var temp = child[0].AsNumber();
|
|
408
|
+
var index = Math.floor(temp);
|
|
409
|
+
var val = child[1].ToObjectType(arrayElementType);
|
|
410
|
+
val = VMObject.ConvertObjectInternal(val, arrayElementType);
|
|
411
|
+
array[index] = val;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
415
|
+
finally {
|
|
416
|
+
try {
|
|
417
|
+
if (children_2_1 && !children_2_1.done && (_b = children_2.return)) _b.call(children_2);
|
|
418
|
+
}
|
|
419
|
+
finally { if (e_4) throw e_4.error; }
|
|
420
|
+
}
|
|
421
|
+
return array;
|
|
422
|
+
};
|
|
423
|
+
VMObject.prototype.ToObjectType = function (type) {
|
|
424
|
+
if (this.Type === VMType_1.VMType.Struct) {
|
|
425
|
+
if (Array.isArray(type)) {
|
|
426
|
+
var elementType = typeof type;
|
|
427
|
+
return this.ToArray(elementType);
|
|
428
|
+
}
|
|
429
|
+
else if (VMObject.isStructOrClass(type)) {
|
|
430
|
+
return this.ToStruct(type);
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
throw new Error("some stuff still missing: eg: lists, dictionaries..");
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
var temp = this.ToObject();
|
|
438
|
+
return temp;
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
VMObject.prototype.ToObject = function () {
|
|
442
|
+
var e_5, _a;
|
|
443
|
+
if (this.Type === VMType_1.VMType.None) {
|
|
444
|
+
throw new Error("not a valid object");
|
|
445
|
+
}
|
|
446
|
+
switch (this.Type) {
|
|
447
|
+
case VMType_1.VMType.Bool:
|
|
448
|
+
return this.AsBool();
|
|
449
|
+
case VMType_1.VMType.Bytes:
|
|
450
|
+
return this.AsByteArray();
|
|
451
|
+
case VMType_1.VMType.String:
|
|
452
|
+
return this.AsString();
|
|
453
|
+
case VMType_1.VMType.Number:
|
|
454
|
+
return this.AsNumber();
|
|
455
|
+
case VMType_1.VMType.Timestamp:
|
|
456
|
+
return this.AsTimestamp();
|
|
457
|
+
case VMType_1.VMType.Object:
|
|
458
|
+
return this.Data;
|
|
459
|
+
case VMType_1.VMType.Enum:
|
|
460
|
+
return this.Data;
|
|
461
|
+
case VMType_1.VMType.Struct:
|
|
462
|
+
var objs = this.GetChildren();
|
|
463
|
+
var result = [];
|
|
464
|
+
try {
|
|
465
|
+
for (var objs_1 = __values(objs), objs_1_1 = objs_1.next(); !objs_1_1.done; objs_1_1 = objs_1.next()) {
|
|
466
|
+
var obj = objs_1_1.value;
|
|
467
|
+
result.push(obj[1].ToObject());
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
471
|
+
finally {
|
|
472
|
+
try {
|
|
473
|
+
if (objs_1_1 && !objs_1_1.done && (_a = objs_1.return)) _a.call(objs_1);
|
|
474
|
+
}
|
|
475
|
+
finally { if (e_5) throw e_5.error; }
|
|
476
|
+
}
|
|
477
|
+
return result;
|
|
478
|
+
default:
|
|
479
|
+
throw new Error("Cannot cast ".concat(this.Type, " to object"));
|
|
480
|
+
}
|
|
481
|
+
};
|
|
482
|
+
VMObject.prototype.ToStruct = function (structType) {
|
|
483
|
+
var e_6, _a;
|
|
484
|
+
if (this.Type !== VMType_1.VMType.Struct) {
|
|
485
|
+
throw new Error("not a valid source struct");
|
|
486
|
+
}
|
|
487
|
+
if (!VMObject.isStructOrClass(structType)) {
|
|
488
|
+
throw new Error("not a valid destination struct");
|
|
489
|
+
}
|
|
490
|
+
//let localType = Object.apply(typeof structType);
|
|
491
|
+
var localType; //: typeof type;
|
|
492
|
+
if (structType.name != undefined) {
|
|
493
|
+
var className = structType.name;
|
|
494
|
+
localType = Object.apply(className);
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
localType = new structType();
|
|
498
|
+
}
|
|
499
|
+
var dict = this.GetChildren();
|
|
500
|
+
var dictKeys = this.GetChildren().keys();
|
|
501
|
+
var result = new structType();
|
|
502
|
+
var fields = Object.keys(typeof localType);
|
|
503
|
+
var fields2 = types_1.Describer.describe(structType, false);
|
|
504
|
+
//console.log("fields", keyof typeof structType);
|
|
505
|
+
fields2 = fields2.map(function (x) { return x.replace("this.", ""); });
|
|
506
|
+
try {
|
|
507
|
+
for (var fields2_1 = __values(fields2), fields2_1_1 = fields2_1.next(); !fields2_1_1.done; fields2_1_1 = fields2_1.next()) {
|
|
508
|
+
var field = fields2_1_1.value;
|
|
509
|
+
field.replace("this.", "");
|
|
510
|
+
var key = VMObject.FromObject(field);
|
|
511
|
+
//const key = field;
|
|
512
|
+
var dictKey = dictKeys.next().value;
|
|
513
|
+
var val = void 0;
|
|
514
|
+
if ((dictKey === null || dictKey === void 0 ? void 0 : dictKey.Data.toString()) == key.Data.toString()) {
|
|
515
|
+
var localValue = dict.get(dictKey);
|
|
516
|
+
if (localValue.GetChildren() != undefined) {
|
|
517
|
+
result[field] = localValue.ToArray(typeof localType[field]);
|
|
518
|
+
continue;
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
val = localValue.ToObject();
|
|
522
|
+
}
|
|
523
|
+
//val = Serialization.Unserialize(dict.get(dictKey));
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
if (!VMObject.isStructOrClass(structType[field])) {
|
|
527
|
+
//console.log(`field not present in source struct: ${field}`);
|
|
528
|
+
//throw new Error(`field not present in source struct: ${field}`);
|
|
529
|
+
}
|
|
530
|
+
//val = null;
|
|
531
|
+
}
|
|
532
|
+
/*if (val !== null && localType[field] !== "Uint8Array") {
|
|
533
|
+
if (VMObject.isSerializable(localType[field])) {
|
|
534
|
+
const temp = new structType[field]();
|
|
535
|
+
const stream = new Uint8Array(val);
|
|
536
|
+
const reader = new PBinaryReader(stream);
|
|
537
|
+
(temp as ISerializable).UnserializeData(reader);
|
|
538
|
+
val = temp;
|
|
539
|
+
}
|
|
540
|
+
}*/
|
|
541
|
+
if (VMObject.isEnum(typeof structType[field]) && !VMObject.isEnum(val)) {
|
|
542
|
+
val = localType[field][val === null || val === void 0 ? void 0 : val.toString()];
|
|
543
|
+
}
|
|
544
|
+
result[field] = val;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
548
|
+
finally {
|
|
549
|
+
try {
|
|
550
|
+
if (fields2_1_1 && !fields2_1_1.done && (_a = fields2_1.return)) _a.call(fields2_1);
|
|
551
|
+
}
|
|
552
|
+
finally { if (e_6) throw e_6.error; }
|
|
553
|
+
}
|
|
554
|
+
return result;
|
|
555
|
+
};
|
|
556
|
+
VMObject.GetVMType = function (type) {
|
|
557
|
+
if (VMObject.isEnum(type)) {
|
|
558
|
+
return VMType_1.VMType.Enum;
|
|
559
|
+
}
|
|
560
|
+
if (type === Boolean || type.toLowerCase() === "boolean") {
|
|
561
|
+
return VMType_1.VMType.Bool;
|
|
562
|
+
}
|
|
563
|
+
if (typeof type == typeof String ||
|
|
564
|
+
type === String ||
|
|
565
|
+
type.toLowerCase() === "string") {
|
|
566
|
+
return VMType_1.VMType.String;
|
|
567
|
+
}
|
|
568
|
+
if (typeof type === typeof Uint8Array ||
|
|
569
|
+
type === Uint8Array ||
|
|
570
|
+
type.toLowerCase() === "uint8array") {
|
|
571
|
+
return VMType_1.VMType.Bytes;
|
|
572
|
+
}
|
|
573
|
+
if (type === "BigInt" ||
|
|
574
|
+
type === Number ||
|
|
575
|
+
type === BigInt ||
|
|
576
|
+
type.toLowerCase() === "number") {
|
|
577
|
+
return VMType_1.VMType.Number;
|
|
578
|
+
}
|
|
579
|
+
if (type === Timestamp_1.Timestamp || type === Number) {
|
|
580
|
+
return VMType_1.VMType.Timestamp;
|
|
581
|
+
}
|
|
582
|
+
if (VMObject.isEnum(type)) {
|
|
583
|
+
return VMType_1.VMType.Enum;
|
|
584
|
+
}
|
|
585
|
+
if (Array.isArray(type)) {
|
|
586
|
+
return VMType_1.VMType.Struct;
|
|
587
|
+
}
|
|
588
|
+
if (VMObject.isClass(type) || VMObject.isValueType(type)) {
|
|
589
|
+
return VMType_1.VMType.Object;
|
|
590
|
+
}
|
|
591
|
+
return VMType_1.VMType.Struct;
|
|
592
|
+
};
|
|
593
|
+
VMObject.IsVMType = function (type) {
|
|
594
|
+
var result = VMObject.GetVMType(type);
|
|
595
|
+
return result !== VMType_1.VMType.None;
|
|
596
|
+
};
|
|
597
|
+
VMObject.prototype.SetValue = function (value) {
|
|
598
|
+
this.Data = value;
|
|
599
|
+
return this;
|
|
600
|
+
};
|
|
601
|
+
VMObject.prototype.setValue = function (val, type) {
|
|
602
|
+
this.Type = type;
|
|
603
|
+
this._localSize = val != null ? val.length : 0;
|
|
604
|
+
switch (type) {
|
|
605
|
+
case VMType_1.VMType.Bytes:
|
|
606
|
+
this.Data = val;
|
|
607
|
+
break;
|
|
608
|
+
case VMType_1.VMType.Number:
|
|
609
|
+
this.Data = val == null ? BigInt(0) : val;
|
|
610
|
+
break;
|
|
611
|
+
case VMType_1.VMType.String:
|
|
612
|
+
this.Data = new String(val);
|
|
613
|
+
break;
|
|
614
|
+
case VMType_1.VMType.Enum:
|
|
615
|
+
this.Data = val;
|
|
616
|
+
break;
|
|
617
|
+
case VMType_1.VMType.Timestamp:
|
|
618
|
+
this.Data = new Timestamp_1.Timestamp(val.slice(0, 4));
|
|
619
|
+
break;
|
|
620
|
+
case VMType_1.VMType.Bool:
|
|
621
|
+
this.Data = new Boolean(val[0] === 1);
|
|
622
|
+
break;
|
|
623
|
+
default:
|
|
624
|
+
if (val instanceof Uint8Array) {
|
|
625
|
+
var len = val.length;
|
|
626
|
+
switch (len) {
|
|
627
|
+
case types_1.Address.LengthInBytes:
|
|
628
|
+
this.Data = types_1.Address.FromBytes(val);
|
|
629
|
+
break;
|
|
630
|
+
/*case Hash.Length:
|
|
631
|
+
this.Data = Hash.fromBytes(val);
|
|
632
|
+
break;*/
|
|
633
|
+
/*default:
|
|
634
|
+
try {
|
|
635
|
+
this.unserializeData(val);
|
|
636
|
+
} catch (e) {
|
|
637
|
+
throw new Error("Cannot decode interop object from bytes with length: " + len);
|
|
638
|
+
}
|
|
639
|
+
break;*/
|
|
640
|
+
}
|
|
641
|
+
break;
|
|
642
|
+
}
|
|
643
|
+
else {
|
|
644
|
+
throw new Error("Cannot set value for vmtype: " + type);
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
};
|
|
648
|
+
VMObject.ValidateStructKey = function (key) {
|
|
649
|
+
if (key.Type == VMType_1.VMType.None ||
|
|
650
|
+
key.Type == VMType_1.VMType.Struct ||
|
|
651
|
+
key.Type == VMType_1.VMType.Object) {
|
|
652
|
+
throw new Error("Cannot use value of type ".concat(key.Type, " as key for struct field"));
|
|
653
|
+
}
|
|
654
|
+
};
|
|
655
|
+
VMObject.prototype.CastViaReflection = function (srcObj, level, dontConvertSerializables) {
|
|
656
|
+
var _this = this;
|
|
657
|
+
if (dontConvertSerializables === void 0) { dontConvertSerializables = true; }
|
|
658
|
+
var srcType = srcObj.constructor.name;
|
|
659
|
+
if (Array.isArray(srcObj)) {
|
|
660
|
+
var children = new Map();
|
|
661
|
+
var array = srcObj;
|
|
662
|
+
for (var i = 0; i < array.length; i++) {
|
|
663
|
+
var val = array[i];
|
|
664
|
+
var key = new VMObject();
|
|
665
|
+
key.SetValue(i);
|
|
666
|
+
var vmVal = this.CastViaReflection(val, level + 1);
|
|
667
|
+
children.set(key, vmVal);
|
|
668
|
+
}
|
|
669
|
+
var result = new VMObject();
|
|
670
|
+
result.SetValue(children);
|
|
671
|
+
return result;
|
|
672
|
+
}
|
|
673
|
+
else {
|
|
674
|
+
var targetType = VMObject.GetVMType(srcType);
|
|
675
|
+
var result = void 0;
|
|
676
|
+
var isKnownType = srcType === VMType_1.VMType.Number || srcType === VMType_1.VMType.Timestamp;
|
|
677
|
+
var localType = Object.apply(typeof srcType);
|
|
678
|
+
if (!isKnownType &&
|
|
679
|
+
dontConvertSerializables &&
|
|
680
|
+
VMObject.isSerializable(localType)) {
|
|
681
|
+
isKnownType = true;
|
|
682
|
+
}
|
|
683
|
+
if (VMObject.isStructOrClass(localType) && !isKnownType) {
|
|
684
|
+
var children_3 = new Map();
|
|
685
|
+
var fields = Object.keys(srcObj);
|
|
686
|
+
if (fields.length > 0) {
|
|
687
|
+
fields.forEach(function (field) {
|
|
688
|
+
var key = VMObject.FromObject(field);
|
|
689
|
+
VMObject.ValidateStructKey(key);
|
|
690
|
+
var val = srcObj[field];
|
|
691
|
+
var vmVal = _this.CastViaReflection(val, level + 1, true);
|
|
692
|
+
children_3.set(key, vmVal);
|
|
693
|
+
});
|
|
694
|
+
result = new VMObject();
|
|
695
|
+
result.SetValue(children_3);
|
|
696
|
+
result.Type = VMType_1.VMType.Struct;
|
|
697
|
+
return result;
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
result = VMObject.FromObject(srcObj);
|
|
701
|
+
if (result != null) {
|
|
702
|
+
return result;
|
|
703
|
+
}
|
|
704
|
+
throw new Error("invalid cast: Interop.".concat(srcType, " to vm object"));
|
|
705
|
+
}
|
|
706
|
+
};
|
|
707
|
+
VMObject.prototype.SetKey = function (key, obj) {
|
|
708
|
+
VMObject.ValidateStructKey(key);
|
|
709
|
+
var children;
|
|
710
|
+
var temp = new VMObject();
|
|
711
|
+
temp.Copy(key);
|
|
712
|
+
key = temp;
|
|
713
|
+
if (this.Type == VMType_1.VMType.Struct) {
|
|
714
|
+
children = this.GetChildren();
|
|
715
|
+
}
|
|
716
|
+
else if (this.Type == VMType_1.VMType.None) {
|
|
717
|
+
this.Type = VMType_1.VMType.Struct;
|
|
718
|
+
children = new Map();
|
|
719
|
+
this.Data = children;
|
|
720
|
+
this._localSize = 0;
|
|
721
|
+
}
|
|
722
|
+
else {
|
|
723
|
+
throw new Error("Invalid cast from ".concat(this.Type, " to struct"));
|
|
724
|
+
}
|
|
725
|
+
var result = new VMObject();
|
|
726
|
+
children === null || children === void 0 ? void 0 : children.set(key, result);
|
|
727
|
+
result.Copy(obj);
|
|
728
|
+
};
|
|
729
|
+
VMObject.prototype.Copy = function (other) {
|
|
730
|
+
if (!other || other.Type == VMType_1.VMType.None) {
|
|
731
|
+
this.Type = VMType_1.VMType.None;
|
|
732
|
+
this.Data = null;
|
|
733
|
+
return;
|
|
734
|
+
}
|
|
735
|
+
this.Type = other.Type;
|
|
736
|
+
if (other.Type == VMType_1.VMType.Struct) {
|
|
737
|
+
var children_4 = new Map();
|
|
738
|
+
var otherChildren = other.GetChildren();
|
|
739
|
+
otherChildren === null || otherChildren === void 0 ? void 0 : otherChildren.forEach(function (val, key) {
|
|
740
|
+
var temp = new VMObject();
|
|
741
|
+
temp.Copy(val);
|
|
742
|
+
children_4.set(key, temp);
|
|
743
|
+
});
|
|
744
|
+
this.Data = children_4;
|
|
745
|
+
}
|
|
746
|
+
else {
|
|
747
|
+
this.Data = other.Data;
|
|
748
|
+
}
|
|
749
|
+
};
|
|
750
|
+
VMObject.prototype.SetType = function (type) {
|
|
751
|
+
this.Type = type;
|
|
752
|
+
};
|
|
753
|
+
VMObject.FromArray = function (array) {
|
|
754
|
+
var result = new VMObject();
|
|
755
|
+
for (var i = 0; i < array.length; i++) {
|
|
756
|
+
var key = VMObject.FromObject(i);
|
|
757
|
+
var val = VMObject.FromObject(array[i]);
|
|
758
|
+
result.SetKey(key, val);
|
|
759
|
+
}
|
|
760
|
+
return result;
|
|
761
|
+
};
|
|
762
|
+
VMObject.CastTo = function (srcObj, type) {
|
|
763
|
+
if (srcObj.Type == type) {
|
|
764
|
+
var result_1 = new VMObject();
|
|
765
|
+
result_1.Copy(srcObj);
|
|
766
|
+
return result_1;
|
|
767
|
+
}
|
|
768
|
+
switch (type) {
|
|
769
|
+
case VMType_1.VMType.None:
|
|
770
|
+
return new VMObject();
|
|
771
|
+
case VMType_1.VMType.String: {
|
|
772
|
+
var result_2 = new VMObject();
|
|
773
|
+
result_2.SetValue(srcObj.AsString());
|
|
774
|
+
return result_2;
|
|
775
|
+
}
|
|
776
|
+
case VMType_1.VMType.Timestamp: {
|
|
777
|
+
var result_3 = new VMObject();
|
|
778
|
+
result_3.SetValue(srcObj.AsTimestamp());
|
|
779
|
+
return result_3;
|
|
780
|
+
}
|
|
781
|
+
case VMType_1.VMType.Bool: {
|
|
782
|
+
var result_4 = new VMObject();
|
|
783
|
+
result_4.SetValue(srcObj.AsBool());
|
|
784
|
+
return result_4;
|
|
785
|
+
}
|
|
786
|
+
case VMType_1.VMType.Bytes: {
|
|
787
|
+
var result_5 = new VMObject();
|
|
788
|
+
result_5.SetValue(srcObj.AsByteArray());
|
|
789
|
+
return result_5;
|
|
790
|
+
}
|
|
791
|
+
case VMType_1.VMType.Number: {
|
|
792
|
+
var result_6 = new VMObject();
|
|
793
|
+
result_6.SetValue(srcObj.AsNumber());
|
|
794
|
+
return result_6;
|
|
795
|
+
}
|
|
796
|
+
case VMType_1.VMType.Struct: {
|
|
797
|
+
switch (srcObj.Type) {
|
|
798
|
+
case VMType_1.VMType.Enum: {
|
|
799
|
+
var result = new VMObject();
|
|
800
|
+
result.SetValue(srcObj.AsEnum()); // TODO does this work for all types?
|
|
801
|
+
return result;
|
|
802
|
+
}
|
|
803
|
+
case VMType_1.VMType.Object: {
|
|
804
|
+
var result = new VMObject();
|
|
805
|
+
result.SetValue(srcObj.CastViaReflection(srcObj.Data, 0)); // TODO does this work for all types?
|
|
806
|
+
return result;
|
|
807
|
+
}
|
|
808
|
+
default:
|
|
809
|
+
throw "invalid cast: ".concat(srcObj.Type, " to ").concat(type);
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
default:
|
|
813
|
+
throw "invalid cast: ".concat(srcObj.Type, " to ").concat(type);
|
|
814
|
+
}
|
|
815
|
+
};
|
|
816
|
+
VMObject.FromObject = function (obj) {
|
|
817
|
+
var objType = obj.constructor.name;
|
|
818
|
+
var type = this.GetVMType(objType);
|
|
819
|
+
if (type === VMType_1.VMType.None) {
|
|
820
|
+
throw new Error("not a valid object");
|
|
821
|
+
}
|
|
822
|
+
var result = new VMObject();
|
|
823
|
+
switch (type) {
|
|
824
|
+
case VMType_1.VMType.Bool:
|
|
825
|
+
result.setValue(obj, VMType_1.VMType.Bool);
|
|
826
|
+
break;
|
|
827
|
+
case VMType_1.VMType.Bytes:
|
|
828
|
+
result.setValue(obj, VMType_1.VMType.Bytes);
|
|
829
|
+
break;
|
|
830
|
+
case VMType_1.VMType.String:
|
|
831
|
+
result.setValue(obj, VMType_1.VMType.String);
|
|
832
|
+
break;
|
|
833
|
+
case VMType_1.VMType.Enum:
|
|
834
|
+
result.setValue(obj, VMType_1.VMType.Enum);
|
|
835
|
+
break;
|
|
836
|
+
case VMType_1.VMType.Object:
|
|
837
|
+
result.setValue(obj, VMType_1.VMType.Object);
|
|
838
|
+
break;
|
|
839
|
+
case VMType_1.VMType.Number:
|
|
840
|
+
/*if (objType === Number) {
|
|
841
|
+
obj = BigInt(obj);
|
|
842
|
+
}*/
|
|
843
|
+
result.setValue(obj, VMType_1.VMType.Number);
|
|
844
|
+
break;
|
|
845
|
+
case VMType_1.VMType.Timestamp:
|
|
846
|
+
/*if (objType === "Number") {
|
|
847
|
+
obj = new Timestamp(obj);
|
|
848
|
+
}*/
|
|
849
|
+
result.setValue(obj, VMType_1.VMType.Timestamp);
|
|
850
|
+
break;
|
|
851
|
+
case VMType_1.VMType.Struct:
|
|
852
|
+
result.Type = VMType_1.VMType.Struct;
|
|
853
|
+
if (Array.isArray(obj)) {
|
|
854
|
+
return this.FromArray(obj);
|
|
855
|
+
}
|
|
856
|
+
else {
|
|
857
|
+
return this.FromStruct(obj);
|
|
858
|
+
}
|
|
859
|
+
break;
|
|
860
|
+
default:
|
|
861
|
+
return null;
|
|
862
|
+
}
|
|
863
|
+
return result;
|
|
864
|
+
};
|
|
865
|
+
VMObject.FromEnum = function (obj) {
|
|
866
|
+
var vm = new VMObject();
|
|
867
|
+
vm.setValue(obj, VMType_1.VMType.Enum);
|
|
868
|
+
return vm;
|
|
869
|
+
};
|
|
870
|
+
VMObject.FromStruct = function (obj) {
|
|
871
|
+
var vm = new VMObject();
|
|
872
|
+
return vm.CastViaReflection(obj, 0, false);
|
|
873
|
+
};
|
|
874
|
+
// Serialization
|
|
875
|
+
VMObject.FromBytes = function (bytes) {
|
|
876
|
+
var result = new VMObject();
|
|
877
|
+
var reader = new types_1.PBinaryReader(bytes);
|
|
878
|
+
result.UnserializeData(reader);
|
|
879
|
+
return result;
|
|
880
|
+
};
|
|
881
|
+
VMObject.prototype.SerializeData = function (writer) {
|
|
882
|
+
var e_7, _a;
|
|
883
|
+
writer.writeByte(this.Type);
|
|
884
|
+
if (this.Type == VMType_1.VMType.None) {
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
var dataType = typeof this.Data;
|
|
888
|
+
switch (this.Type) {
|
|
889
|
+
case VMType_1.VMType.Struct: {
|
|
890
|
+
var children = this.GetChildren();
|
|
891
|
+
writer.writeVarInt(children.size);
|
|
892
|
+
try {
|
|
893
|
+
for (var children_5 = __values(children), children_5_1 = children_5.next(); !children_5_1.done; children_5_1 = children_5.next()) {
|
|
894
|
+
var child = children_5_1.value;
|
|
895
|
+
child[0].SerializeData(writer);
|
|
896
|
+
//console.log(Base16.encodeUint8Array(writer.toUint8Array()));
|
|
897
|
+
child[1].SerializeData(writer);
|
|
898
|
+
///console.log(Base16.encodeUint8Array(writer.toUint8Array()));
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
902
|
+
finally {
|
|
903
|
+
try {
|
|
904
|
+
if (children_5_1 && !children_5_1.done && (_a = children_5.return)) _a.call(children_5);
|
|
905
|
+
}
|
|
906
|
+
finally { if (e_7) throw e_7.error; }
|
|
907
|
+
}
|
|
908
|
+
/*children.forEach((key, value) => {
|
|
909
|
+
key.SerializeData(writer);
|
|
910
|
+
value.SerializeData(writer);
|
|
911
|
+
});*/
|
|
912
|
+
break;
|
|
913
|
+
}
|
|
914
|
+
case VMType_1.VMType.Object: {
|
|
915
|
+
var obj = this.Data;
|
|
916
|
+
if (obj != null) {
|
|
917
|
+
var bytes = types_1.Serialization.Serialize(obj);
|
|
918
|
+
var uintBytes = (0, utils_1.uint8ArrayToBytes)(bytes);
|
|
919
|
+
writer.writeByteArray(uintBytes);
|
|
920
|
+
}
|
|
921
|
+
else {
|
|
922
|
+
throw "Objects of type ".concat(dataType, " cannot be serialized");
|
|
923
|
+
}
|
|
924
|
+
break;
|
|
925
|
+
}
|
|
926
|
+
case VMType_1.VMType.Enum: {
|
|
927
|
+
var temp2 = 0;
|
|
928
|
+
temp2 = this.Data;
|
|
929
|
+
var uint8array = new Uint8Array(4);
|
|
930
|
+
writer = new types_1.PBinaryWriter(uint8array);
|
|
931
|
+
writer.writeByte(this.Type);
|
|
932
|
+
writer.writeEnum(temp2);
|
|
933
|
+
break;
|
|
934
|
+
}
|
|
935
|
+
default:
|
|
936
|
+
var localBytes = types_1.Serialization.Serialize(this.Data);
|
|
937
|
+
writer.writeByteArray(localBytes);
|
|
938
|
+
break;
|
|
939
|
+
}
|
|
940
|
+
return writer.toUint8Array();
|
|
941
|
+
};
|
|
942
|
+
VMObject.prototype.SerializeObjectCall = function (writer) {
|
|
943
|
+
var e_8, _a;
|
|
944
|
+
if (this.Type == VMType_1.VMType.None) {
|
|
945
|
+
return;
|
|
946
|
+
}
|
|
947
|
+
var dataType = typeof this.Data;
|
|
948
|
+
switch (this.Type) {
|
|
949
|
+
case VMType_1.VMType.Struct: {
|
|
950
|
+
var children = this.GetChildren();
|
|
951
|
+
writer.writeVarInt(children.size);
|
|
952
|
+
try {
|
|
953
|
+
for (var children_6 = __values(children), children_6_1 = children_6.next(); !children_6_1.done; children_6_1 = children_6.next()) {
|
|
954
|
+
var child = children_6_1.value;
|
|
955
|
+
child[0].SerializeData(writer);
|
|
956
|
+
child[1].SerializeData(writer);
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
960
|
+
finally {
|
|
961
|
+
try {
|
|
962
|
+
if (children_6_1 && !children_6_1.done && (_a = children_6.return)) _a.call(children_6);
|
|
963
|
+
}
|
|
964
|
+
finally { if (e_8) throw e_8.error; }
|
|
965
|
+
}
|
|
966
|
+
/*children.forEach((key, value) => {
|
|
967
|
+
key.SerializeData(writer);
|
|
968
|
+
value.SerializeData(writer);
|
|
969
|
+
});*/
|
|
970
|
+
break;
|
|
971
|
+
}
|
|
972
|
+
case VMType_1.VMType.Object: {
|
|
973
|
+
var obj = this.Data;
|
|
974
|
+
if (obj != null) {
|
|
975
|
+
var bytes = types_1.Serialization.Serialize(obj);
|
|
976
|
+
var uintBytes = (0, utils_1.uint8ArrayToBytes)(bytes);
|
|
977
|
+
writer.writeByteArray(uintBytes);
|
|
978
|
+
}
|
|
979
|
+
else {
|
|
980
|
+
throw "Objects of type ".concat(dataType, " cannot be serialized");
|
|
981
|
+
}
|
|
982
|
+
break;
|
|
983
|
+
}
|
|
984
|
+
case VMType_1.VMType.Enum: {
|
|
985
|
+
var temp2 = 0;
|
|
986
|
+
temp2 = this.Data;
|
|
987
|
+
var uint8array = new Uint8Array(4);
|
|
988
|
+
writer = new types_1.PBinaryWriter(uint8array);
|
|
989
|
+
writer.writeEnum(temp2);
|
|
990
|
+
break;
|
|
991
|
+
}
|
|
992
|
+
default:
|
|
993
|
+
var localBytes = types_1.Serialization.Serialize(this.Data);
|
|
994
|
+
writer.writeByteArray((0, utils_1.uint8ArrayToBytes)(localBytes));
|
|
995
|
+
break;
|
|
996
|
+
}
|
|
997
|
+
return writer.toUint8Array();
|
|
998
|
+
};
|
|
999
|
+
/*UnserializeData(reader: PBinaryReader) {
|
|
1000
|
+
this.Type = reader.readByte();
|
|
1001
|
+
if (this.Type == VMType.None) {
|
|
1002
|
+
return;
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
switch (this.Type) {
|
|
1006
|
+
case VMType.Struct: {
|
|
1007
|
+
let children = new Map<VMObject, VMObject>();
|
|
1008
|
+
let count = reader.readVarInt();
|
|
1009
|
+
for (let i = 0; i < count; i++) {
|
|
1010
|
+
let key = new VMObject();
|
|
1011
|
+
key.UnserializeData(reader);
|
|
1012
|
+
let value = new VMObject();
|
|
1013
|
+
value.UnserializeData(reader);
|
|
1014
|
+
children.set(key, value);
|
|
1015
|
+
}
|
|
1016
|
+
this.Data = children;
|
|
1017
|
+
break;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
case VMType.Object: {
|
|
1021
|
+
var bytes = reader.readByteArray();
|
|
1022
|
+
var obj = Serialization.Unserialize(bytes);
|
|
1023
|
+
this.Data = obj as Object;
|
|
1024
|
+
break;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
case VMType.Enum: {
|
|
1028
|
+
let temp = reader.readVarInt();
|
|
1029
|
+
this.Data = temp as unknown as Enumerator;
|
|
1030
|
+
break;
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
default:
|
|
1034
|
+
this.Data = Serialization.UnserializeObject(reader, null);
|
|
1035
|
+
break;
|
|
1036
|
+
}
|
|
1037
|
+
}*/
|
|
1038
|
+
VMObject.prototype.UnserializeData = function (reader) {
|
|
1039
|
+
this.Type = reader.readByte();
|
|
1040
|
+
switch (this.Type) {
|
|
1041
|
+
case VMType_1.VMType.Bool:
|
|
1042
|
+
this.Data = types_1.Serialization.Unserialize(reader, Boolean);
|
|
1043
|
+
break;
|
|
1044
|
+
case VMType_1.VMType.Bytes:
|
|
1045
|
+
this.Data = types_1.Serialization.Unserialize(reader, Uint8Array);
|
|
1046
|
+
break;
|
|
1047
|
+
case VMType_1.VMType.Number:
|
|
1048
|
+
this.Data = reader.readBigInteger();
|
|
1049
|
+
break;
|
|
1050
|
+
case VMType_1.VMType.Timestamp:
|
|
1051
|
+
this.Data = reader.readTimestamp();
|
|
1052
|
+
/*this.Data = Serialization.UnserializeObject<Timestamp>(
|
|
1053
|
+
reader,
|
|
1054
|
+
Timestamp
|
|
1055
|
+
);*/
|
|
1056
|
+
break;
|
|
1057
|
+
case VMType_1.VMType.String:
|
|
1058
|
+
this.Data = reader.readVarString();
|
|
1059
|
+
break;
|
|
1060
|
+
case VMType_1.VMType.Struct:
|
|
1061
|
+
var childCount = reader.readVarInt();
|
|
1062
|
+
var children = new Map();
|
|
1063
|
+
while (childCount > 0) {
|
|
1064
|
+
var key = new VMObject();
|
|
1065
|
+
key.UnserializeData(reader);
|
|
1066
|
+
VMObject.ValidateStructKey(key);
|
|
1067
|
+
var val = new VMObject();
|
|
1068
|
+
val.UnserializeData(reader);
|
|
1069
|
+
children.set(key, val);
|
|
1070
|
+
childCount--;
|
|
1071
|
+
}
|
|
1072
|
+
this.Data = children;
|
|
1073
|
+
break;
|
|
1074
|
+
case VMType_1.VMType.Object:
|
|
1075
|
+
var bytes = reader.readByteArray();
|
|
1076
|
+
if (bytes.length == 35) {
|
|
1077
|
+
var addr = types_1.Serialization.Unserialize(bytes, types_1.Address);
|
|
1078
|
+
this.Data = addr;
|
|
1079
|
+
this.Type = VMType_1.VMType.Object;
|
|
1080
|
+
}
|
|
1081
|
+
else {
|
|
1082
|
+
this.Type = VMType_1.VMType.Bytes;
|
|
1083
|
+
this.Data = bytes;
|
|
1084
|
+
}
|
|
1085
|
+
break;
|
|
1086
|
+
case VMType_1.VMType.Enum:
|
|
1087
|
+
this.Type = VMType_1.VMType.Enum;
|
|
1088
|
+
this.Data = reader.readVarInt();
|
|
1089
|
+
break;
|
|
1090
|
+
case VMType_1.VMType.None:
|
|
1091
|
+
this.Type = VMType_1.VMType.None;
|
|
1092
|
+
this.Data = null;
|
|
1093
|
+
break;
|
|
1094
|
+
default:
|
|
1095
|
+
throw new Error("invalid unserialize: type ".concat(this.Type));
|
|
1096
|
+
}
|
|
1097
|
+
};
|
|
1098
|
+
VMObject.TimeFormat = "MM/dd/yyyy HH:mm:ss";
|
|
1099
|
+
return VMObject;
|
|
1100
|
+
}());
|
|
1101
|
+
exports.VMObject = VMObject;
|