@aeternity/aepp-sdk 8.2.1 → 10.0.0

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.
Files changed (159) hide show
  1. package/CHANGELOG.md +216 -337
  2. package/README.md +16 -9
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/account/base.js +36 -120
  11. package/es/account/base.js.map +1 -1
  12. package/es/account/memory.js +17 -19
  13. package/es/account/memory.js.map +1 -1
  14. package/es/account/multiple.js +79 -156
  15. package/es/account/multiple.js.map +1 -1
  16. package/es/ae/aens.js +205 -626
  17. package/es/ae/aens.js.map +1 -1
  18. package/es/ae/contract.js +114 -918
  19. package/es/ae/contract.js.map +1 -1
  20. package/es/ae/index.js +90 -250
  21. package/es/ae/index.js.map +1 -1
  22. package/es/ae/oracle.js +136 -504
  23. package/es/ae/oracle.js.map +1 -1
  24. package/es/ae/universal.js.map +1 -1
  25. package/es/chain/index.js +12 -27
  26. package/es/chain/index.js.map +1 -1
  27. package/es/chain/node.js +289 -1020
  28. package/es/chain/node.js.map +1 -1
  29. package/es/channel/handlers.js +597 -1086
  30. package/es/channel/handlers.js.map +1 -1
  31. package/es/channel/index.js +238 -465
  32. package/es/channel/index.js.map +1 -1
  33. package/es/channel/internal.js +129 -301
  34. package/es/channel/internal.js.map +1 -1
  35. package/es/contract/aci/index.js +328 -495
  36. package/es/contract/aci/index.js.map +1 -1
  37. package/es/contract/aci/transformation.js +35 -711
  38. package/es/contract/aci/transformation.js.map +1 -1
  39. package/es/contract/compiler.js +131 -203
  40. package/es/contract/compiler.js.map +1 -1
  41. package/es/contract/ga/helpers.js +17 -122
  42. package/es/contract/ga/helpers.js.map +1 -1
  43. package/es/contract/ga/index.js +108 -249
  44. package/es/contract/ga/index.js.map +1 -1
  45. package/es/contract/index.js +7 -3
  46. package/es/contract/index.js.map +1 -1
  47. package/es/index.js +3 -3
  48. package/es/index.js.map +1 -1
  49. package/es/node-pool/index.js +57 -74
  50. package/es/node-pool/index.js.map +1 -1
  51. package/es/node.js +65 -161
  52. package/es/node.js.map +1 -1
  53. package/es/other.d.ts +1 -1
  54. package/es/tx/builder/helpers.js +62 -115
  55. package/es/tx/builder/helpers.js.map +1 -1
  56. package/es/tx/builder/index.js +218 -309
  57. package/es/tx/builder/index.js.map +1 -1
  58. package/es/tx/builder/schema.js +586 -573
  59. package/es/tx/builder/schema.js.map +1 -1
  60. package/es/tx/index.js +102 -13
  61. package/es/tx/index.js.map +1 -1
  62. package/es/tx/tx-object.js +114 -138
  63. package/es/tx/tx-object.js.map +1 -1
  64. package/es/tx/tx.js +810 -1586
  65. package/es/tx/tx.js.map +1 -1
  66. package/es/tx/validator.js +191 -426
  67. package/es/tx/validator.js.map +1 -1
  68. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +20 -23
  69. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
  70. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +53 -80
  71. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
  72. package/es/utils/aepp-wallet-communication/connection/index.js +2 -1
  73. package/es/utils/aepp-wallet-communication/connection/index.js.map +1 -1
  74. package/es/utils/aepp-wallet-communication/content-script-bridge.js +24 -19
  75. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
  76. package/es/utils/aepp-wallet-communication/helpers.js +60 -105
  77. package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
  78. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +191 -514
  79. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
  80. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +78 -93
  81. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
  82. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +381 -613
  83. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
  84. package/es/utils/aepp-wallet-communication/schema.js +43 -39
  85. package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
  86. package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
  87. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
  88. package/es/utils/amount-formatter.js +41 -61
  89. package/es/utils/amount-formatter.js.map +1 -1
  90. package/es/utils/async-init.js +28 -64
  91. package/es/utils/async-init.js.map +1 -1
  92. package/es/utils/bignumber.js +3 -11
  93. package/es/utils/bignumber.js.map +1 -1
  94. package/es/utils/bytes.js +5 -9
  95. package/es/utils/bytes.js.map +1 -1
  96. package/es/utils/crypto.js +41 -106
  97. package/es/utils/crypto.js.map +1 -1
  98. package/es/utils/hd-wallet.js +45 -81
  99. package/es/utils/hd-wallet.js.map +1 -1
  100. package/es/utils/json-big.js +16 -49
  101. package/es/utils/json-big.js.map +1 -1
  102. package/es/utils/keystore.js +81 -246
  103. package/es/utils/keystore.js.map +1 -1
  104. package/es/utils/mptree.js +88 -134
  105. package/es/utils/mptree.js.map +1 -1
  106. package/es/utils/other.js +10 -60
  107. package/es/utils/other.js.map +1 -1
  108. package/es/utils/semver-satisfies.js +9 -28
  109. package/es/utils/semver-satisfies.js.map +1 -1
  110. package/es/utils/string.js +4 -13
  111. package/es/utils/string.js.map +1 -1
  112. package/es/utils/swagger.js +87 -224
  113. package/es/utils/swagger.js.map +1 -1
  114. package/package.json +51 -44
  115. package/src/account/base.js +11 -10
  116. package/src/account/multiple.js +24 -18
  117. package/src/ae/aens.js +64 -61
  118. package/src/ae/contract.js +71 -248
  119. package/src/ae/index.js +34 -9
  120. package/src/ae/oracle.js +30 -22
  121. package/src/ae/universal.js +3 -1
  122. package/src/chain/index.js +10 -16
  123. package/src/chain/node.js +38 -38
  124. package/src/channel/handlers.js +10 -4
  125. package/src/channel/index.js +44 -20
  126. package/src/contract/aci/index.js +234 -112
  127. package/src/contract/aci/transformation.js +30 -422
  128. package/src/contract/compiler.js +50 -5
  129. package/src/contract/ga/helpers.js +6 -14
  130. package/src/contract/ga/index.js +28 -28
  131. package/src/contract/index.js +6 -2
  132. package/src/index.js +4 -4
  133. package/src/node-pool/index.js +24 -13
  134. package/src/node.js +29 -30
  135. package/src/tx/builder/helpers.js +31 -56
  136. package/src/tx/builder/index.js +67 -28
  137. package/src/tx/builder/schema.js +79 -121
  138. package/src/tx/index.js +101 -12
  139. package/src/tx/tx-object.js +25 -8
  140. package/src/tx/tx.js +229 -150
  141. package/src/tx/validator.js +134 -202
  142. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
  143. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +25 -7
  144. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  145. package/src/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
  146. package/src/utils/aepp-wallet-communication/helpers.js +4 -2
  147. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +33 -12
  148. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
  149. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +59 -29
  150. package/src/utils/aepp-wallet-communication/schema.js +1 -3
  151. package/src/utils/aepp-wallet-communication/wallet-detector.js +4 -1
  152. package/src/utils/amount-formatter.ts +1 -1
  153. package/src/utils/bignumber.ts +2 -1
  154. package/src/utils/crypto.js +4 -68
  155. package/src/utils/keystore.js +10 -2
  156. package/src/utils/other.ts +1 -1
  157. package/src/utils/semver-satisfies.ts +1 -1
  158. package/src/utils/swagger.js +22 -10
  159. package/src/contract/aci/helpers.js +0 -140
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tx/validator.js"],"names":["verify","decodeBase58Check","assertedType","encode","BigNumber","BASE_VERIFICATION_SCHEMA","CONTRACT_VERIFICATION_SCHEMA","MIN_GAS_PRICE","NAME_CLAIM_VERIFICATION_SCHEMA","OBJECT_ID_TX_TYPE","OBJECT_TAG_SIGNED_TRANSACTION","PROTOCOL_VM_ABI","SIGNATURE_VERIFICATION_SCHEMA","TX_TYPE","buildTxHash","calculateFee","unpackTx","NodePool","VALIDATORS","signature","rlpEncoded","ownerPublicKey","networkId","txWithNetworkId","Buffer","from","txHashWithNetworkId","raw","decodedPub","insufficientFee","minFee","fee","lte","expiredTTL","ttl","height","eq","gte","insufficientBalanceForAmountFee","balance","amount","plus","insufficientBalanceForAmount","nonceUsed","accountNonce","nonce","gt","nonceHigh","minGasPrice","gasPrice","isNaN","vmAndAbiVersion","ctVersion","abiVersion","consensusProtocolVersion","txType","supportedProtocol","txProtocol","acc","key","value","undefined","insufficientBalanceForFeeNameFee","nameFee","VSN","resolveDataForBase","chain","accountBalance","api","getAccountByPubkey","console","log","getCurrentKeyBlockHeight","getNodeInfo","verifySchema","schema","data","msg","validatorKey","type","txKey","push","unpackAndVerify","txHash","unpackedTx","tx","tag","encodedTx","signatures","hash","rlpEncodedTx","verifyTx","validation","getOwnerPublicKey","replace","getNetworkId","gas","Object","prototype","hasOwnProperty","call","params","showWarning","vsn","resolvedData","signatureVerification","length","baseVerification","customVerification","contractCreate","contractCall","oracleRegister","nameClaim","TransactionValidator","compose","methods"],"mappings":"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","sourcesContent":["import {\n verify,\n decodeBase58Check,\n assertedType\n} from '../utils/crypto'\nimport { encode } from '../tx/builder/helpers'\n\nimport BigNumber from 'bignumber.js'\nimport {\n BASE_VERIFICATION_SCHEMA,\n CONTRACT_VERIFICATION_SCHEMA,\n MIN_GAS_PRICE,\n NAME_CLAIM_VERIFICATION_SCHEMA,\n OBJECT_ID_TX_TYPE,\n OBJECT_TAG_SIGNED_TRANSACTION,\n PROTOCOL_VM_ABI,\n SIGNATURE_VERIFICATION_SCHEMA,\n TX_TYPE\n} from './builder/schema'\nimport { buildTxHash, calculateFee, unpackTx } from './builder'\nimport NodePool from '../node-pool'\n\n/**\n * Transaction validator\n * @module @aeternity/aepp-sdk/es/tx/validator\n * @export TransactionValidator\n * @example import { TransactionValidator } from '@aeternity/aepp-sdk'\n */\n\nconst VALIDATORS = {\n // VALIDATE SIGNATURE\n signature ({ rlpEncoded, signature, ownerPublicKey, networkId = 'ae_mainnet' }) {\n const txWithNetworkId = Buffer.concat([Buffer.from(networkId), rlpEncoded])\n const txHashWithNetworkId = Buffer.concat([Buffer.from(networkId), buildTxHash(rlpEncoded, { raw: true })])\n const decodedPub = decodeBase58Check(assertedType(ownerPublicKey, 'ak'))\n return verify(txWithNetworkId, signature, decodedPub) || verify(txHashWithNetworkId, signature, decodedPub)\n },\n // VALIDATE IF ENOUGH FEE\n insufficientFee ({ minFee, fee }) {\n return BigNumber(minFee).lte(BigNumber(fee))\n },\n // VALIDATE IF TTL VALID\n expiredTTL ({ ttl, height }) {\n return BigNumber(ttl).eq(0) || BigNumber(ttl).gte(BigNumber(height))\n },\n // Insufficient Balance for Amount plus Fee\n insufficientBalanceForAmountFee ({ balance, amount = 0, fee }) {\n return BigNumber(balance).gte(BigNumber(amount).plus(fee))\n },\n // Insufficient Balance for Amount\n insufficientBalanceForAmount ({ balance, amount = 0 }) {\n return BigNumber(balance).gte(BigNumber(amount))\n },\n // IF NONCE USED\n nonceUsed ({ accountNonce, nonce }) {\n return BigNumber(nonce).gt(BigNumber(accountNonce))\n },\n // IF NONCE TO HIGH\n nonceHigh ({ accountNonce, nonce }) {\n return !(BigNumber(nonce).gt(BigNumber(accountNonce).plus(1)))\n },\n minGasPrice ({ gasPrice }) {\n return isNaN(gasPrice) || BigNumber(gasPrice).gte(BigNumber(MIN_GAS_PRICE))\n },\n // VM/ABI version validation based on consensus protocol version\n vmAndAbiVersion ({ ctVersion, abiVersion, consensusProtocolVersion, txType }) {\n // If not contract tx\n if (!ctVersion) ctVersion = { abiVersion }\n const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n // If protocol not implemented\n if (!supportedProtocol) return true\n // If protocol for tx type not implemented\n const txProtocol = supportedProtocol[txType]\n\n return !Object.entries(ctVersion)\n .reduce((acc, [key, value]) =>\n [...acc, value === undefined ? true : txProtocol[key].includes(parseInt(value))],\n []).includes(false)\n },\n insufficientBalanceForFeeNameFee ({ nameFee, fee, balance, VSN }) {\n return VSN === 1 || BigNumber(balance).gte(BigNumber(nameFee).plus(fee))\n }\n}\n\nconst resolveDataForBase = async (chain, { ownerPublicKey }) => {\n let accountNonce = 0\n let accountBalance = 0\n try {\n const { nonce, balance } = await chain.api.getAccountByPubkey(ownerPublicKey)\n accountNonce = nonce\n accountBalance = balance\n } catch (e) { console.log('We can not get info about this publicKey') }\n return {\n height: (await chain.api.getCurrentKeyBlockHeight()).height,\n balance: accountBalance,\n accountNonce,\n ownerPublicKey,\n ...chain.getNodeInfo()\n }\n}\n\n// Verification using SCHEMA\nconst verifySchema = (schema, data) => {\n // Verify through schema\n return schema.reduce(\n (acc, [msg, validatorKey, { key, type, txKey }]) => {\n if (!VALIDATORS[validatorKey](data)) acc.push({ msg: msg(data), txKey, type })\n return acc\n },\n []\n )\n}\n\n/**\n * Unpack and verify transaction (verify nonce, ttl, fee, signature, account balance)\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n *\n * @param {String} txHash Base64Check transaction hash\n * @param {Object} [options={}] Options\n * @param {String} [options.networkId] networkId Use in signature verification\n * @return {Promise<Object>} Object with verification errors and warnings\n */\nasync function unpackAndVerify (txHash, { networkId } = {}) {\n const { tx: unpackedTx, rlpEncoded, txType } = unpackTx(txHash)\n\n if (+unpackedTx.tag === OBJECT_TAG_SIGNED_TRANSACTION) {\n const { txType, tx } = unpackedTx.encodedTx\n const signatures = unpackedTx.signatures.map(raw => ({ raw, hash: encode(raw, 'sg') }))\n const rlpEncodedTx = unpackedTx.encodedTx.rlpEncoded\n\n return {\n validation: await this.verifyTx({ tx, signatures, rlpEncoded: rlpEncodedTx }, networkId),\n tx,\n signatures,\n txType\n }\n }\n return {\n validation: await this.verifyTx({ tx: unpackedTx, rlpEncoded }, networkId),\n tx: unpackedTx,\n txType\n }\n}\n\nconst getOwnerPublicKey = (tx) =>\n tx[['senderId', 'accountId', 'ownerId', 'callerId', 'oracleId', 'fromId', 'initiator', 'gaId'].find(key => tx[key])].replace('ok_', 'ak_')\n\n/**\n * Verify transaction (verify nonce, ttl, fee, signature, account balance)\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n *\n * @param {Object} [data={}] data TX data object\n * @param {String} [data.tx] tx Transaction hash\n * @param {Array} [data.signatures] signatures Transaction signature's\n * @param {Array} [data.rlpEncoded] rlpEncoded RLP encoded transaction\n * @param {String} networkId networkId Use in signature verification\n * @return {Promise<Array>} Object with verification errors and warnings\n */\nasync function verifyTx ({ tx, signatures, rlpEncoded }, networkId) {\n networkId = networkId || this.getNetworkId() || 'ae_mainnet'\n // Fetch data for verification\n const ownerPublicKey = getOwnerPublicKey(tx)\n const gas = Object.prototype.hasOwnProperty.call(tx, 'gas') ? +tx.gas : 0\n const txType = OBJECT_ID_TX_TYPE[+tx.tag]\n const resolvedData = {\n minFee: calculateFee(0, txType, { gas, params: tx, showWarning: false, vsn: tx.VSN }),\n ...(await resolveDataForBase(this, { ownerPublicKey })),\n ...tx,\n txType\n }\n const signatureVerification = signatures && signatures.length\n ? verifySchema(SIGNATURE_VERIFICATION_SCHEMA, {\n rlpEncoded,\n signature: signatures[0].raw,\n ownerPublicKey,\n networkId\n })\n : []\n const baseVerification = verifySchema(BASE_VERIFICATION_SCHEMA, resolvedData)\n\n return [\n ...baseVerification,\n ...signatureVerification,\n ...customVerification(txType, resolvedData)\n ]\n}\n\n/**\n * Verification for speciific txType\n * @param txType\n * @param data\n * @return {Array}\n */\nfunction customVerification (txType, data) {\n switch (txType) {\n case TX_TYPE.contractCreate:\n case TX_TYPE.contractCall:\n case TX_TYPE.oracleRegister:\n return verifySchema(CONTRACT_VERIFICATION_SCHEMA, data)\n case TX_TYPE.nameClaim:\n return verifySchema(NAME_CLAIM_VERIFICATION_SCHEMA, data)\n default:\n return []\n }\n}\n\n/**\n * Transaction Validator Stamp\n * This stamp give us possibility to unpack and validate some of transaction properties,\n * to make sure we can post it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Object} [options.url] - Node url\n * @param {Object} [options.internalUrl] - Node internal url\n * @return {Object} Transaction Validator instance\n * @example TransactionValidator({url: 'https://testnet.aeternity.io'})\n */\nconst TransactionValidator = NodePool.compose({\n methods: {\n verifyTx,\n unpackAndVerify\n }\n})\n\nexport default TransactionValidator\n"],"file":"validator.js"}
1
+ {"version":3,"sources":["../../src/tx/validator.js"],"names":["verify","hash","encode","decode","BigNumber","MIN_GAS_PRICE","PROTOCOL_VM_ABI","TX_TYPE","calculateFee","unpackTx","validators","encodedTx","signatures","account","node","parentTxTypes","undefined","length","prefix","Buffer","from","nodeNetworkId","includes","payingFor","join","txWithNetworkId","concat","rlpEncoded","txHashWithNetworkId","decodedPub","id","message","key","checkedKeys","tx","txType","verifyTransaction","fee","minFee","gas","params","showWarning","vsn","VSN","lte","ttl","height","amount","nameFee","cost","plus","minus","balance","toFixed","nonce","gaMeta","validNonce","gasPrice","ctVersion","abiVersion","consensusProtocolVersion","getNodeInfo","protocol","Error","txProtocol","Object","entries","some","value","JSON","stringify","getSenderAddress","map","filter","a","replace","transaction","address","signed","Promise","all","api","getAccountByPubkey","catch","getCurrentKeyBlockHeight","then","v","flat"],"mappings":"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","sourcesContent":["import { verify, hash } from '../utils/crypto'\nimport { encode, decode } from './builder/helpers'\n\nimport BigNumber from 'bignumber.js'\nimport { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema'\nimport { calculateFee, unpackTx } from './builder'\n\n/**\n * Transaction validator\n * @module @aeternity/aepp-sdk/es/tx/validator\n * @export verifyTransaction\n * @example import { verifyTransaction } from '@aeternity/aepp-sdk'\n */\n\nconst validators = [\n async ({ encodedTx, signatures }, { account, node, parentTxTypes }) => {\n if ((encodedTx ?? signatures) === undefined) return []\n if (signatures.length !== 1) return [] // TODO: Support multisignature?\n const prefix = Buffer.from([\n node.nodeNetworkId,\n ...parentTxTypes.includes(TX_TYPE.payingFor) ? ['inner_tx'] : []\n ].join('-'))\n const txWithNetworkId = Buffer.concat([prefix, encodedTx.rlpEncoded])\n const txHashWithNetworkId = Buffer.concat([prefix, hash(encodedTx.rlpEncoded)])\n const decodedPub = decode(account.id, 'ak')\n if (verify(txWithNetworkId, signatures[0], decodedPub) ||\n verify(txHashWithNetworkId, signatures[0], decodedPub)) return []\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have' +\n ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures']\n }]\n },\n async ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {\n if ((encodedTx ?? tx) === undefined) return []\n return verifyTransaction(\n encode((encodedTx ?? tx).rlpEncoded, 'tx'),\n node,\n [...parentTxTypes, txType]\n )\n },\n (tx, { txType }) => {\n if (tx.fee === undefined) return []\n const minFee = calculateFee(0, txType, {\n gas: +tx.gas || 0, params: tx, showWarning: false, vsn: tx.VSN\n })\n if (new BigNumber(minFee).lte(tx.fee)) return []\n return [{\n message: `Fee ${tx.fee} is too low, minimum fee for this transaction is ${minFee}`,\n key: 'InsufficientFee',\n checkedKeys: ['fee']\n }]\n },\n ({ ttl }, { height }) => {\n if (ttl === undefined) return []\n ttl = +ttl\n if (ttl === 0 || ttl >= height) return []\n return [{\n message: `TTL ${ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl']\n }]\n },\n ({ amount, fee, nameFee, tx }, { account, parentTxTypes, txType }) => {\n if ((amount ?? fee ?? nameFee) === undefined) return []\n const cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0)\n .plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0)\n .minus(parentTxTypes.includes(TX_TYPE.payingFor) ? fee : 0)\n if (cost.lte(account.balance)) return []\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost.toFixed()}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee']\n }]\n },\n ({ nonce }, { account, parentTxTypes }) => {\n if (nonce === undefined || parentTxTypes.includes(TX_TYPE.gaMeta)) return []\n nonce = +nonce\n const validNonce = account.nonce + 1\n if (nonce === validNonce) return []\n return [{\n ...nonce < validNonce\n ? {\n message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,\n key: 'NonceAlreadyUsed'\n }\n : {\n message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,\n key: 'NonceHigh'\n },\n checkedKeys: ['nonce']\n }]\n },\n ({ gasPrice }) => {\n if (gasPrice === undefined) return []\n if (gasPrice >= MIN_GAS_PRICE) return []\n return [{\n message: `Gas price ${gasPrice} must be bigger then ${MIN_GAS_PRICE}`,\n key: 'MinGasPrice',\n checkedKeys: ['gasPrice']\n }]\n },\n ({ ctVersion, abiVersion }, { txType, node }) => {\n const { consensusProtocolVersion } = node.getNodeInfo()\n const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!protocol) throw new Error(`Unsupported protocol: ${consensusProtocolVersion}`)\n // If not contract create tx\n if (!ctVersion) ctVersion = { abiVersion }\n const txProtocol = protocol[txType]\n if (!txProtocol) return []\n if (Object.entries(ctVersion).some(([key, value]) => !txProtocol[key].includes(+value))) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion']\n }]\n }\n return []\n }\n]\n\nconst getSenderAddress = tx => [\n 'senderId', 'accountId', 'ownerId', 'callerId',\n 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId'\n]\n .map(key => tx[key])\n .filter(a => a)\n .map(a => a.replace(/^ok_/, 'ak_'))[0]\n\n/**\n * Transaction Validator\n * This function validates some of transaction properties,\n * to make sure it can be posted it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n * @rtype (tx: String, node) => void\n * @param {String} transaction Base64Check-encoded transaction\n * @param {Object} node Node to validate transaction against\n * @param {String[]} [parentTxTypes] Types of parent transactions\n * @return {Promise<Object[]>} Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction (transaction, node, parentTxTypes = []) {\n const { tx, txType } = unpackTx(transaction)\n\n const address = getSenderAddress(tx) ??\n (txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null)\n const [account, height] = await Promise.all([\n address && node.api.getAccountByPubkey(address).catch(() => ({\n id: address,\n balance: new BigNumber(0),\n nonce: 0\n })),\n node.api.getCurrentKeyBlockHeight().then(({ height }) => height)\n ])\n\n return (await Promise.all(\n validators.map(v => v(tx, { txType, node, account, height, parentTxTypes })))\n ).flat()\n}\n"],"file":"validator.js"}
@@ -18,10 +18,11 @@
18
18
  /**
19
19
  * Browser runtime connector module
20
20
  *
21
- * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.
21
+ * This is the complement to
22
+ * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.
22
23
  * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime
23
24
  * @export BrowserRuntimeConnection
24
- * @example import BrowserRuntimeConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime'
25
+ * @example import { BrowserRuntimeConnection } from '@aeternity/aepp-sdk'
25
26
  */
26
27
  import stampit from '@stamp/it';
27
28
  import WalletConnection from '.';
@@ -53,20 +54,17 @@ function disconnect() {
53
54
 
54
55
 
55
56
  function connect(onMessage, onDisconnect) {
56
- var _this = this;
57
-
58
57
  if (this.isConnected()) throw new Error('You already connected');
59
58
 
60
- this.handler = function (msg, source) {
61
- if (_this.debug) console.log('Receive message: ', msg);
59
+ this.handler = (msg, source) => {
60
+ if (this.debug) console.log('Receive message: ', msg);
62
61
  onMessage(msg, source);
63
62
  };
64
63
 
65
64
  this.port.onMessage.addListener(this.handler);
66
- this.port.onDisconnect.addListener(function () {
67
- typeof onDisconnect === 'function' && onDisconnect({}, _this);
68
-
69
- _this.port.disconnect();
65
+ this.port.onDisconnect.addListener(() => {
66
+ typeof onDisconnect === 'function' && onDisconnect({}, this);
67
+ this.port.disconnect();
70
68
  });
71
69
  }
72
70
  /**
@@ -111,24 +109,23 @@ function isConnected() {
111
109
 
112
110
 
113
111
  export default stampit({
114
- init: function init(_ref) {
115
- var _getBrowserAPI$runtim;
116
-
117
- var _ref$connectionInfo = _ref.connectionInfo,
118
- connectionInfo = _ref$connectionInfo === void 0 ? {} : _ref$connectionInfo,
119
- port = _ref.port,
120
- _ref$debug = _ref.debug,
121
- debug = _ref$debug === void 0 ? false : _ref$debug;
112
+ init(_ref) {
113
+ let {
114
+ connectionInfo = {},
115
+ port,
116
+ debug = false
117
+ } = _ref;
122
118
  if (!getBrowserAPI().runtime) throw new Error('Runtime is not accessible in your environment');
123
119
  this.debug = debug;
124
120
  this.connectionInfo = connectionInfo;
125
- this.port = port || (_getBrowserAPI$runtim = getBrowserAPI().runtime).connect.apply(_getBrowserAPI$runtim, [connectionInfo.id || undefined]);
121
+ this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined]);
126
122
  },
123
+
127
124
  methods: {
128
- connect: connect,
129
- sendMessage: sendMessage,
130
- disconnect: disconnect,
131
- isConnected: isConnected
125
+ connect,
126
+ sendMessage,
127
+ disconnect,
128
+ isConnected
132
129
  }
133
130
  }, WalletConnection);
134
131
  //# sourceMappingURL=browser-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/browser-runtime.js"],"names":["stampit","WalletConnection","getBrowserAPI","disconnect","port","e","console","warning","connect","onMessage","onDisconnect","isConnected","Error","handler","msg","source","debug","log","addListener","sendMessage","postMessage","hasListeners","hasListener","init","connectionInfo","runtime","id","undefined","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser runtime connector module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @export BrowserRuntimeConnection\n * @example import BrowserRuntimeConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime'\n */\nimport stampit from '@stamp/it'\n\nimport WalletConnection from '.'\nimport { getBrowserAPI } from '../helpers'\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n try {\n this.port.disconnect()\n } catch (e) {\n console.warning('From BrowserRuntimeConnection: ', e)\n }\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function, onDisconnect: Function) => void\n * @param {Function} onMessage - Message handler\n * @param {Function} onDisconnect - trigger when runtime connection in closed\n * @return {void}\n */\nfunction connect (onMessage, onDisconnect) {\n if (this.isConnected()) throw new Error('You already connected')\n this.handler = (msg, source) => {\n if (this.debug) console.log('Receive message: ', msg)\n onMessage(msg, source)\n }\n this.port.onMessage.addListener(this.handler)\n this.port.onDisconnect.addListener(() => {\n typeof onDisconnect === 'function' && onDisconnect({}, this)\n this.port.disconnect()\n })\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n if (!this.port) throw new Error('You dont have connection. Please connect before')\n if (this.debug) console.log('Send message: ', msg)\n this.port.postMessage(msg)\n}\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)\n}\n\n/**\n * BrowserRuntimeConnection stamp\n * Handle browser runtime communication\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {Object} params.port - Runtime `port` object\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, port, debug = false }) {\n if (!getBrowserAPI().runtime) throw new Error('Runtime is not accessible in your environment')\n this.debug = debug\n this.connectionInfo = connectionInfo\n this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"file":"browser-runtime.js"}
1
+ {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/browser-runtime.js"],"names":["stampit","WalletConnection","getBrowserAPI","disconnect","port","e","console","warning","connect","onMessage","onDisconnect","isConnected","Error","handler","msg","source","debug","log","addListener","sendMessage","postMessage","hasListeners","hasListener","init","connectionInfo","runtime","id","undefined","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser runtime connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @export BrowserRuntimeConnection\n * @example import { BrowserRuntimeConnection } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\n\nimport WalletConnection from '.'\nimport { getBrowserAPI } from '../helpers'\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n try {\n this.port.disconnect()\n } catch (e) {\n console.warning('From BrowserRuntimeConnection: ', e)\n }\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function, onDisconnect: Function) => void\n * @param {Function} onMessage - Message handler\n * @param {Function} onDisconnect - trigger when runtime connection in closed\n * @return {void}\n */\nfunction connect (onMessage, onDisconnect) {\n if (this.isConnected()) throw new Error('You already connected')\n this.handler = (msg, source) => {\n if (this.debug) console.log('Receive message: ', msg)\n onMessage(msg, source)\n }\n this.port.onMessage.addListener(this.handler)\n this.port.onDisconnect.addListener(() => {\n typeof onDisconnect === 'function' && onDisconnect({}, this)\n this.port.disconnect()\n })\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n if (!this.port) throw new Error('You dont have connection. Please connect before')\n if (this.debug) console.log('Send message: ', msg)\n this.port.postMessage(msg)\n}\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)\n}\n\n/**\n * BrowserRuntimeConnection stamp\n * Handle browser runtime communication\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {Object} params.port - Runtime `port` object\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, port, debug = false }) {\n if (!getBrowserAPI().runtime) throw new Error('Runtime is not accessible in your environment')\n this.debug = debug\n this.connectionInfo = connectionInfo\n this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"file":"browser-runtime.js"}
@@ -1,21 +1,3 @@
1
- import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
- import _typeof from "@babel/runtime-corejs3/helpers/typeof";
3
-
4
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) { symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
5
-
6
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context4; _forEachInstanceProperty(_context4 = ownKeys(Object(source), true)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context5; _forEachInstanceProperty(_context5 = ownKeys(Object(source))).call(_context5, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
7
-
8
- import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
9
- import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
10
- import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
11
- import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
12
- import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
13
- import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
14
- import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
15
- import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
16
- import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
17
- import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
18
-
19
1
  /*
20
2
  * ISC License (ISC)
21
3
  * Copyright (c) 2018 aeternity developers
@@ -36,10 +18,13 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
36
18
  /**
37
19
  * Browser window Post Message connector module
38
20
  *
39
- * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.
21
+ * This is the complement to
22
+ * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.
40
23
  * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message
41
24
  * @export BrowserWindowMessageConnection
42
- * @example import BrowserWindowMessageConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'
25
+ * @example
26
+ * import BrowserWindowMessageConnection
27
+ * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'
43
28
  */
44
29
  import stampit from '@stamp/it';
45
30
  import WalletConnection from '.';
@@ -68,14 +53,14 @@ function isConnected() {
68
53
 
69
54
 
70
55
  function connect(onMessage) {
71
- var origin = this.origin;
72
- var receiveDirection = this.receiveDirection;
73
- var debug = this.debug;
74
- var forceOrigin = this.forceOrigin;
56
+ const origin = this.origin;
57
+ const receiveDirection = this.receiveDirection;
58
+ const debug = this.debug;
59
+ const forceOrigin = this.forceOrigin;
75
60
  if (this.listener) throw new Error('You already connected');
76
61
 
77
- this.listener = function (msg, source) {
78
- if (!msg || _typeof(msg.data) !== 'object') return;
62
+ this.listener = (msg, source) => {
63
+ if (!msg || typeof msg.data !== 'object') return;
79
64
  if (!forceOrigin && origin && origin !== msg.origin) return;
80
65
  if (debug) console.log('Receive message: ', msg);
81
66
 
@@ -114,7 +99,7 @@ function disconnect() {
114
99
 
115
100
 
116
101
  function sendMessage(msg) {
117
- var message = this.sendDirection ? {
102
+ const message = this.sendDirection ? {
118
103
  type: this.sendDirection,
119
104
  data: msg
120
105
  } : msg;
@@ -122,30 +107,32 @@ function sendMessage(msg) {
122
107
  this.postFn(message);
123
108
  }
124
109
 
125
- var getTarget = function getTarget() {
126
- var _context;
127
-
128
- var isExtensionContext = _typeof(getBrowserAPI(true).extension) === 'object';
129
-
130
- var isWeb = window && window.location && _startsWithInstanceProperty(_context = window.location.protocol).call(_context, 'http');
131
-
132
- var isContentScript = isExtensionContext && isWeb;
110
+ const getTarget = () => {
111
+ const isExtensionContext = typeof getBrowserAPI(true).extension === 'object';
112
+ const isWeb = window && window.location && window.location.protocol.startsWith('http');
113
+ const isContentScript = isExtensionContext && isWeb;
133
114
  if (isContentScript) return window; // When we is the main page we need to decide the target by our self
134
- // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which Iframe to talk
115
+ // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which
116
+ // Iframe to talk
135
117
 
136
118
  return isInIframe() ? window.parent : undefined;
137
119
  };
138
120
  /**
139
121
  * BrowserWindowMessageConnection
140
122
  * @function
141
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message
123
+ * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication\
124
+ * /connection/browser-window-message
142
125
  * @rtype Stamp
143
126
  * @param {Object} [params={}] - Initializer object
144
127
  * @param {Object} [params.target=window.parent] - Target window for message
145
128
  * @param {Object} [params.self=window] - Host window for message
146
129
  * @param {Object} [params.origin] - Origin of receiver
147
- * @param {Object} [params.sendDirection] - Optional field for wrapping messages in additional structure({ type: 'to_aepp' || 'to_waellet', data }).Used for handling messages netween content script and page
148
- * @param {Object} [params.receiveDirection='to_aepp'] - Optional(default: 'to_aepp') field for unwrapping messages from additional structure({ type: 'to_aepp' || 'to_waellet', data }).Used for handling messages netween content script and page
130
+ * @param {String} [params.sendDirection] Wrapping messages into additional struct
131
+ * ({ type: 'to_aepp' || 'to_waellet', data })
132
+ * Used for handling messages between content script and page
133
+ * @param {String} [params.receiveDirection='to_aepp'] Unwrapping messages from additional struct
134
+ * ({ type: 'to_aepp' || 'to_waellet', data })
135
+ * Used for handling messages between content script and page
149
136
  * @param {Object} [params.connectionInfo={}] - Connection info object
150
137
  * @param {Boolean} [params.debug=false] - Debug flag
151
138
  * @return {Object}
@@ -153,59 +140,45 @@ var getTarget = function getTarget() {
153
140
 
154
141
 
155
142
  export default stampit({
156
- init: function init() {
157
- var _context2,
158
- _context3,
159
- _this = this;
160
-
161
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
162
- _ref$connectionInfo = _ref.connectionInfo,
163
- connectionInfo = _ref$connectionInfo === void 0 ? {} : _ref$connectionInfo,
164
- _ref$target = _ref.target,
165
- target = _ref$target === void 0 ? getTarget() : _ref$target,
166
- _ref$self = _ref.self,
167
- self = _ref$self === void 0 ? window : _ref$self,
168
- origin = _ref.origin,
169
- sendDirection = _ref.sendDirection,
170
- _ref$receiveDirection = _ref.receiveDirection,
171
- receiveDirection = _ref$receiveDirection === void 0 ? MESSAGE_DIRECTION.to_aepp : _ref$receiveDirection,
172
- _ref$debug = _ref.debug,
173
- debug = _ref$debug === void 0 ? false : _ref$debug,
174
- _ref$forceOrigin = _ref.forceOrigin,
175
- forceOrigin = _ref$forceOrigin === void 0 ? false : _ref$forceOrigin;
176
-
177
- if (sendDirection && !_includesInstanceProperty(_context2 = _Object$keys(MESSAGE_DIRECTION)).call(_context2, sendDirection)) throw new Error("sendDirection must be one of [".concat(_Object$keys(MESSAGE_DIRECTION), "]"));
178
- if (!_includesInstanceProperty(_context3 = _Object$keys(MESSAGE_DIRECTION)).call(_context3, receiveDirection)) throw new Error("receiveDirection must be one of [".concat(_Object$keys(MESSAGE_DIRECTION), "]"));
179
- this.connectionInfo = _objectSpread({
180
- id: uuid()
181
- }, connectionInfo);
182
- var selfP = self;
183
- var targetP = target;
143
+ init() {
144
+ let {
145
+ connectionInfo = {},
146
+ target = getTarget(),
147
+ self = window,
148
+ origin,
149
+ sendDirection,
150
+ receiveDirection = MESSAGE_DIRECTION.to_aepp,
151
+ debug = false,
152
+ forceOrigin = false
153
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
154
+ if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new Error(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`);
155
+ if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new Error(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`);
156
+ this.connectionInfo = {
157
+ id: uuid(),
158
+ ...connectionInfo
159
+ };
160
+ const selfP = self;
161
+ const targetP = target;
184
162
  this.origin = origin;
185
163
  this.debug = debug;
186
164
  this.forceOrigin = forceOrigin;
187
165
  this.sendDirection = sendDirection;
188
166
  this.receiveDirection = receiveDirection;
189
167
 
190
- this.subscribeFn = function (listener) {
191
- return selfP.addEventListener('message', listener, false);
192
- };
168
+ this.subscribeFn = listener => selfP.addEventListener('message', listener, false);
193
169
 
194
- this.unsubscribeFn = function (listener) {
195
- return selfP.removeEventListener('message', listener, false);
196
- };
170
+ this.unsubscribeFn = listener => selfP.removeEventListener('message', listener, false);
197
171
 
198
- this.postFn = function (msg) {
199
- return targetP.postMessage(msg, _this.origin || '*');
200
- };
172
+ this.postFn = msg => targetP.postMessage(msg, this.origin || '*');
201
173
 
202
174
  if (!this.connectionInfo.id) throw new Error('ID required.');
203
175
  },
176
+
204
177
  methods: {
205
- connect: connect,
206
- sendMessage: sendMessage,
207
- disconnect: disconnect,
208
- isConnected: isConnected
178
+ connect,
179
+ sendMessage,
180
+ disconnect,
181
+ isConnected
209
182
  }
210
183
  }, WalletConnection);
211
184
  //# sourceMappingURL=browser-window-message.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/browser-window-message.js"],"names":["stampit","WalletConnection","v4","uuid","MESSAGE_DIRECTION","getBrowserAPI","isInIframe","isConnected","listener","connect","onMessage","origin","receiveDirection","debug","forceOrigin","Error","msg","source","data","console","log","type","subscribeFn","disconnect","unsubscribeFn","sendMessage","message","sendDirection","postFn","getTarget","isExtensionContext","extension","isWeb","window","location","protocol","isContentScript","parent","undefined","init","connectionInfo","target","self","to_aepp","id","selfP","targetP","addEventListener","removeEventListener","postMessage","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser window Post Message connector module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @export BrowserWindowMessageConnection\n * @example import BrowserWindowMessageConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'\n */\nimport stampit from '@stamp/it'\nimport WalletConnection from '.'\nimport { v4 as uuid } from 'uuid'\nimport { MESSAGE_DIRECTION } from '../schema'\nimport { getBrowserAPI, isInIframe } from '../helpers'\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return this.listener\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\nfunction connect (onMessage) {\n const origin = this.origin\n const receiveDirection = this.receiveDirection\n const debug = this.debug\n const forceOrigin = this.forceOrigin\n if (this.listener) throw new Error('You already connected')\n\n this.listener = (msg, source) => {\n if (!msg || typeof msg.data !== 'object') return\n if (!forceOrigin && origin && origin !== msg.origin) return\n if (debug) console.log('Receive message: ', msg)\n if (msg.data.type) {\n if (msg.data.type !== receiveDirection) return\n onMessage(msg.data.data, msg.origin, msg.source)\n } else {\n onMessage(msg.data, msg.origin, msg.source)\n }\n }\n this.subscribeFn(this.listener)\n}\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n if (!this.listener) throw new Error('You dont have connection. Please connect before')\n this.unsubscribeFn(this.listener)\n this.listener = null\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n const message = this.sendDirection ? { type: this.sendDirection, data: msg } : msg\n if (this.debug) console.log('Send message: ', message)\n this.postFn(message)\n}\n\nconst getTarget = () => {\n const isExtensionContext = typeof getBrowserAPI(true).extension === 'object'\n const isWeb = window && window.location && window.location.protocol.startsWith('http')\n const isContentScript = isExtensionContext && isWeb\n if (isContentScript) return window\n // When we is the main page we need to decide the target by our self\n // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which Iframe to talk\n return isInIframe() ? window.parent : undefined\n}\n\n/**\n * BrowserWindowMessageConnection\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @rtype Stamp\n * @param {Object} [params={}] - Initializer object\n * @param {Object} [params.target=window.parent] - Target window for message\n * @param {Object} [params.self=window] - Host window for message\n * @param {Object} [params.origin] - Origin of receiver\n * @param {Object} [params.sendDirection] - Optional field for wrapping messages in additional structure({ type: 'to_aepp' || 'to_waellet', data }).Used for handling messages netween content script and page\n * @param {Object} [params.receiveDirection='to_aepp'] - Optional(default: 'to_aepp') field for unwrapping messages from additional structure({ type: 'to_aepp' || 'to_waellet', data }).Used for handling messages netween content script and page\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, target = getTarget(), self = window, origin, sendDirection, receiveDirection = MESSAGE_DIRECTION.to_aepp, debug = false, forceOrigin = false } = {}) {\n if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new Error(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new Error(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n this.connectionInfo = { id: uuid(), ...connectionInfo }\n\n const selfP = self\n const targetP = target\n this.origin = origin\n this.debug = debug\n this.forceOrigin = forceOrigin\n this.sendDirection = sendDirection\n this.receiveDirection = receiveDirection\n this.subscribeFn = (listener) => selfP.addEventListener('message', listener, false)\n this.unsubscribeFn = (listener) => selfP.removeEventListener('message', listener, false)\n this.postFn = (msg) => targetP.postMessage(msg, this.origin || '*')\n if (!this.connectionInfo.id) throw new Error('ID required.')\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"file":"browser-window-message.js"}
1
+ {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/browser-window-message.js"],"names":["stampit","WalletConnection","v4","uuid","MESSAGE_DIRECTION","getBrowserAPI","isInIframe","isConnected","listener","connect","onMessage","origin","receiveDirection","debug","forceOrigin","Error","msg","source","data","console","log","type","subscribeFn","disconnect","unsubscribeFn","sendMessage","message","sendDirection","postFn","getTarget","isExtensionContext","extension","isWeb","window","location","protocol","startsWith","isContentScript","parent","undefined","init","connectionInfo","target","self","to_aepp","Object","keys","includes","id","selfP","targetP","addEventListener","removeEventListener","postMessage","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser window Post Message connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @export BrowserWindowMessageConnection\n * @example\n * import BrowserWindowMessageConnection\n * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'\n */\nimport stampit from '@stamp/it'\nimport WalletConnection from '.'\nimport { v4 as uuid } from 'uuid'\nimport { MESSAGE_DIRECTION } from '../schema'\nimport { getBrowserAPI, isInIframe } from '../helpers'\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return this.listener\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\nfunction connect (onMessage) {\n const origin = this.origin\n const receiveDirection = this.receiveDirection\n const debug = this.debug\n const forceOrigin = this.forceOrigin\n if (this.listener) throw new Error('You already connected')\n\n this.listener = (msg, source) => {\n if (!msg || typeof msg.data !== 'object') return\n if (!forceOrigin && origin && origin !== msg.origin) return\n if (debug) console.log('Receive message: ', msg)\n if (msg.data.type) {\n if (msg.data.type !== receiveDirection) return\n onMessage(msg.data.data, msg.origin, msg.source)\n } else {\n onMessage(msg.data, msg.origin, msg.source)\n }\n }\n this.subscribeFn(this.listener)\n}\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n if (!this.listener) throw new Error('You dont have connection. Please connect before')\n this.unsubscribeFn(this.listener)\n this.listener = null\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n const message = this.sendDirection ? { type: this.sendDirection, data: msg } : msg\n if (this.debug) console.log('Send message: ', message)\n this.postFn(message)\n}\n\nconst getTarget = () => {\n const isExtensionContext = typeof getBrowserAPI(true).extension === 'object'\n const isWeb = window && window.location && window.location.protocol.startsWith('http')\n const isContentScript = isExtensionContext && isWeb\n if (isContentScript) return window\n // When we is the main page we need to decide the target by our self\n // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which\n // Iframe to talk\n return isInIframe() ? window.parent : undefined\n}\n\n/**\n * BrowserWindowMessageConnection\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication\\\n * /connection/browser-window-message\n * @rtype Stamp\n * @param {Object} [params={}] - Initializer object\n * @param {Object} [params.target=window.parent] - Target window for message\n * @param {Object} [params.self=window] - Host window for message\n * @param {Object} [params.origin] - Origin of receiver\n * @param {String} [params.sendDirection] Wrapping messages into additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {String} [params.receiveDirection='to_aepp'] Unwrapping messages from additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({\n connectionInfo = {},\n target = getTarget(),\n self = window,\n origin,\n sendDirection,\n receiveDirection = MESSAGE_DIRECTION.to_aepp,\n debug = false,\n forceOrigin = false\n } = {}) {\n if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new Error(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new Error(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n this.connectionInfo = { id: uuid(), ...connectionInfo }\n\n const selfP = self\n const targetP = target\n this.origin = origin\n this.debug = debug\n this.forceOrigin = forceOrigin\n this.sendDirection = sendDirection\n this.receiveDirection = receiveDirection\n this.subscribeFn = (listener) => selfP.addEventListener('message', listener, false)\n this.unsubscribeFn = (listener) => selfP.removeEventListener('message', listener, false)\n this.postFn = (msg) => targetP.postMessage(msg, this.origin || '*')\n if (!this.connectionInfo.id) throw new Error('ID required.')\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"file":"browser-window-message.js"}
@@ -19,7 +19,8 @@
19
19
  * Wallet Connection base module
20
20
  * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection
21
21
  * @export WalletConnection
22
- * @example import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'
22
+ * @example
23
+ * import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'
23
24
  */
24
25
  import { required } from '@stamp/required';
25
26
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/index.js"],"names":["required","methods","connect","disconnect","sendMessage","isConnected"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,QAAT,QAAyB,iBAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeA,QAAQ,CAAC;AACtBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,OAAO,EAAEF,QADF;AAEPG,IAAAA,UAAU,EAAEH,QAFL;AAGPI,IAAAA,WAAW,EAAEJ,QAHN;AAIPK,IAAAA,WAAW,EAAEL;AAJN;AADa,CAAD,CAAvB;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Connection base module\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @export WalletConnection\n * @example import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'\n */\n\nimport { required } from '@stamp/required'\n\n/**\n * Basic Wallet Connection\n *\n * This stamp include interface for wallet connection functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} WalletConnection instance\n */\nexport default required({\n methods: {\n connect: required,\n disconnect: required,\n sendMessage: required,\n isConnected: required\n }\n})\n\n/**\n * Connect\n * @function connect\n * @instance\n * @abstract\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @abstract\n * @rtype () => void\n * @return {void}\n */\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @abstract\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @abstract\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/index.js"],"names":["required","methods","connect","disconnect","sendMessage","isConnected"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,QAAT,QAAyB,iBAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeA,QAAQ,CAAC;AACtBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,OAAO,EAAEF,QADF;AAEPG,IAAAA,UAAU,EAAEH,QAFL;AAGPI,IAAAA,WAAW,EAAEJ,QAHN;AAIPK,IAAAA,WAAW,EAAEL;AAJN;AADa,CAAD,CAAvB;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Connection base module\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @export WalletConnection\n * @example\n * import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'\n */\n\nimport { required } from '@stamp/required'\n\n/**\n * Basic Wallet Connection\n *\n * This stamp include interface for wallet connection functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} WalletConnection instance\n */\nexport default required({\n methods: {\n connect: required,\n disconnect: required,\n sendMessage: required,\n isConnected: required\n }\n})\n\n/**\n * Connect\n * @function connect\n * @instance\n * @abstract\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @abstract\n * @rtype () => void\n * @return {void}\n */\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @abstract\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @abstract\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\n"],"file":"index.js"}
@@ -20,7 +20,9 @@
20
20
  *
21
21
  * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge
22
22
  * @export ContentScriptBridge
23
- * @example import ContentScriptBridge from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge
23
+ * @example
24
+ * import ContentScriptBridge
25
+ * from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge
24
26
  */
25
27
  import stampit from '@stamp/it';
26
28
  /**
@@ -31,18 +33,15 @@ import stampit from '@stamp/it';
31
33
  */
32
34
 
33
35
  function run() {
34
- var _this = this;
36
+ const allowCrossOrigin = this.allowCrossOrigin; // Connect to extension using runtime
35
37
 
36
- var allowCrossOrigin = this.allowCrossOrigin; // Connect to extension using runtime
37
-
38
- this.extConnection.connect(function (msg) {
39
- _this.pageConnection.sendMessage(msg);
38
+ this.extConnection.connect(msg => {
39
+ this.pageConnection.sendMessage(msg);
40
40
  }); // Connect to page using window.postMessage
41
41
 
42
- this.pageConnection.connect(function (msg, origin, source) {
42
+ this.pageConnection.connect((msg, origin, source) => {
43
43
  if (!allowCrossOrigin && source !== window) return;
44
-
45
- _this.extConnection.sendMessage(msg);
44
+ this.extConnection.sendMessage(msg);
46
45
  });
47
46
  }
48
47
  /**
@@ -59,24 +58,29 @@ function stop() {
59
58
  }
60
59
  /**
61
60
  * ContentScriptBridge stamp
62
- * Provide functionality to easly redirect messages from page to extension and from extension to page through content script
61
+ * Provide functionality to easly redirect messages from page to extension and from extension to
62
+ * page through content script
63
63
  * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections
64
64
  * @function
65
65
  * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge
66
66
  * @rtype Stamp
67
67
  * @param {Object} params - Initializer object
68
- * @param {Object} params.pageConnection - Page connection object(@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message)
69
- * @param {Object} params.extConnection - Extension connection object(module: @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)
68
+ * @param {Object} params.pageConnection - Page connection object
69
+ * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/\
70
+ * browser-window-message)
71
+ * @param {Object} params.extConnection - Extension connection object
72
+ * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)
70
73
  * @return {Object}
71
74
  */
72
75
 
73
76
 
74
77
  export default stampit({
75
- init: function init(_ref) {
76
- var pageConnection = _ref.pageConnection,
77
- extConnection = _ref.extConnection,
78
- _ref$allowCrossOrigin = _ref.allowCrossOrigin,
79
- allowCrossOrigin = _ref$allowCrossOrigin === void 0 ? false : _ref$allowCrossOrigin;
78
+ init(_ref) {
79
+ let {
80
+ pageConnection,
81
+ extConnection,
82
+ allowCrossOrigin = false
83
+ } = _ref;
80
84
  if (!window) throw new Error('Window object not found, you can run bridge only in browser');
81
85
  if (!pageConnection) throw new Error('pageConnection required');
82
86
  if (!extConnection) throw new Error('extConnection required');
@@ -84,9 +88,10 @@ export default stampit({
84
88
  this.pageConnection = pageConnection;
85
89
  this.extConnection = extConnection;
86
90
  },
91
+
87
92
  methods: {
88
- run: run,
89
- stop: stop
93
+ run,
94
+ stop
90
95
  }
91
96
  });
92
97
  //# sourceMappingURL=content-script-bridge.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/aepp-wallet-communication/content-script-bridge.js"],"names":["stampit","run","allowCrossOrigin","extConnection","connect","msg","pageConnection","sendMessage","origin","source","window","stop","disconnect","init","Error","methods"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,OAAP,MAAoB,WAApB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,GAAT,GAAgB;AAAA;;AACd,MAAMC,gBAAgB,GAAG,KAAKA,gBAA9B,CADc,CAEd;;AACA,OAAKC,aAAL,CAAmBC,OAAnB,CAA2B,UAACC,GAAD,EAAS;AAClC,IAAA,KAAI,CAACC,cAAL,CAAoBC,WAApB,CAAgCF,GAAhC;AACD,GAFD,EAHc,CAMd;;AACA,OAAKC,cAAL,CAAoBF,OAApB,CAA4B,UAACC,GAAD,EAAMG,MAAN,EAAcC,MAAd,EAAyB;AACnD,QAAI,CAACP,gBAAD,IAAqBO,MAAM,KAAKC,MAApC,EAA4C;;AAC5C,IAAA,KAAI,CAACP,aAAL,CAAmBI,WAAnB,CAA+BF,GAA/B;AACD,GAHD;AAID;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,IAAT,GAAiB;AACf,OAAKR,aAAL,CAAmBS,UAAnB;AACA,OAAKN,cAAL,CAAoBM,UAApB;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAeZ,OAAO,CAAC;AACrBa,EAAAA,IADqB,sBAC8C;AAAA,QAA3DP,cAA2D,QAA3DA,cAA2D;AAAA,QAA3CH,aAA2C,QAA3CA,aAA2C;AAAA,qCAA5BD,gBAA4B;AAAA,QAA5BA,gBAA4B,sCAAT,KAAS;AACjE,QAAI,CAACQ,MAAL,EAAa,MAAM,IAAII,KAAJ,CAAU,6DAAV,CAAN;AACb,QAAI,CAACR,cAAL,EAAqB,MAAM,IAAIQ,KAAJ,CAAU,yBAAV,CAAN;AACrB,QAAI,CAACX,aAAL,EAAoB,MAAM,IAAIW,KAAJ,CAAU,wBAAV,CAAN;AACpB,SAAKZ,gBAAL,GAAwBA,gBAAxB;AACA,SAAKI,cAAL,GAAsBA,cAAtB;AACA,SAAKH,aAAL,GAAqBA,aAArB;AACD,GARoB;AASrBY,EAAAA,OAAO,EAAE;AAAEd,IAAAA,GAAG,EAAHA,GAAF;AAAOU,IAAAA,IAAI,EAAJA;AAAP;AATY,CAAD,CAAtB","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Content Script Bridge module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @export ContentScriptBridge\n * @example import ContentScriptBridge from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge\n */\nimport stampit from '@stamp/it'\n\n/**\n * Start message proxy\n * @function run\n * @instance\n * @return {void}\n */\nfunction run () {\n const allowCrossOrigin = this.allowCrossOrigin\n // Connect to extension using runtime\n this.extConnection.connect((msg) => {\n this.pageConnection.sendMessage(msg)\n })\n // Connect to page using window.postMessage\n this.pageConnection.connect((msg, origin, source) => {\n if (!allowCrossOrigin && source !== window) return\n this.extConnection.sendMessage(msg)\n })\n}\n\n/**\n * Stop message proxy\n * @function stop\n * @instance\n * @return {void}\n */\nfunction stop () {\n this.extConnection.disconnect()\n this.pageConnection.disconnect()\n}\n\n/**\n * ContentScriptBridge stamp\n * Provide functionality to easly redirect messages from page to extension and from extension to page through content script\n * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @rtype Stamp\n * @param {Object} params - Initializer object\n * @param {Object} params.pageConnection - Page connection object(@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message)\n * @param {Object} params.extConnection - Extension connection object(module: @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)\n * @return {Object}\n */\nexport default stampit({\n init ({ pageConnection, extConnection, allowCrossOrigin = false }) {\n if (!window) throw new Error('Window object not found, you can run bridge only in browser')\n if (!pageConnection) throw new Error('pageConnection required')\n if (!extConnection) throw new Error('extConnection required')\n this.allowCrossOrigin = allowCrossOrigin\n this.pageConnection = pageConnection\n this.extConnection = extConnection\n },\n methods: { run, stop }\n})\n"],"file":"content-script-bridge.js"}
1
+ {"version":3,"sources":["../../../src/utils/aepp-wallet-communication/content-script-bridge.js"],"names":["stampit","run","allowCrossOrigin","extConnection","connect","msg","pageConnection","sendMessage","origin","source","window","stop","disconnect","init","Error","methods"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,OAAP,MAAoB,WAApB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,GAAT,GAAgB;AACd,QAAMC,gBAAgB,GAAG,KAAKA,gBAA9B,CADc,CAEd;;AACA,OAAKC,aAAL,CAAmBC,OAAnB,CAA4BC,GAAD,IAAS;AAClC,SAAKC,cAAL,CAAoBC,WAApB,CAAgCF,GAAhC;AACD,GAFD,EAHc,CAMd;;AACA,OAAKC,cAAL,CAAoBF,OAApB,CAA4B,CAACC,GAAD,EAAMG,MAAN,EAAcC,MAAd,KAAyB;AACnD,QAAI,CAACP,gBAAD,IAAqBO,MAAM,KAAKC,MAApC,EAA4C;AAC5C,SAAKP,aAAL,CAAmBI,WAAnB,CAA+BF,GAA/B;AACD,GAHD;AAID;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,IAAT,GAAiB;AACf,OAAKR,aAAL,CAAmBS,UAAnB;AACA,OAAKN,cAAL,CAAoBM,UAApB;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAeZ,OAAO,CAAC;AACrBa,EAAAA,IAAI,OAA+D;AAAA,QAA7D;AAAEP,MAAAA,cAAF;AAAkBH,MAAAA,aAAlB;AAAiCD,MAAAA,gBAAgB,GAAG;AAApD,KAA6D;AACjE,QAAI,CAACQ,MAAL,EAAa,MAAM,IAAII,KAAJ,CAAU,6DAAV,CAAN;AACb,QAAI,CAACR,cAAL,EAAqB,MAAM,IAAIQ,KAAJ,CAAU,yBAAV,CAAN;AACrB,QAAI,CAACX,aAAL,EAAoB,MAAM,IAAIW,KAAJ,CAAU,wBAAV,CAAN;AACpB,SAAKZ,gBAAL,GAAwBA,gBAAxB;AACA,SAAKI,cAAL,GAAsBA,cAAtB;AACA,SAAKH,aAAL,GAAqBA,aAArB;AACD,GARoB;;AASrBY,EAAAA,OAAO,EAAE;AAAEd,IAAAA,GAAF;AAAOU,IAAAA;AAAP;AATY,CAAD,CAAtB","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Content Script Bridge module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @export ContentScriptBridge\n * @example\n * import ContentScriptBridge\n * from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge\n */\nimport stampit from '@stamp/it'\n\n/**\n * Start message proxy\n * @function run\n * @instance\n * @return {void}\n */\nfunction run () {\n const allowCrossOrigin = this.allowCrossOrigin\n // Connect to extension using runtime\n this.extConnection.connect((msg) => {\n this.pageConnection.sendMessage(msg)\n })\n // Connect to page using window.postMessage\n this.pageConnection.connect((msg, origin, source) => {\n if (!allowCrossOrigin && source !== window) return\n this.extConnection.sendMessage(msg)\n })\n}\n\n/**\n * Stop message proxy\n * @function stop\n * @instance\n * @return {void}\n */\nfunction stop () {\n this.extConnection.disconnect()\n this.pageConnection.disconnect()\n}\n\n/**\n * ContentScriptBridge stamp\n * Provide functionality to easly redirect messages from page to extension and from extension to\n * page through content script\n * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @rtype Stamp\n * @param {Object} params - Initializer object\n * @param {Object} params.pageConnection - Page connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/\\\n * browser-window-message)\n * @param {Object} params.extConnection - Extension connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)\n * @return {Object}\n */\nexport default stampit({\n init ({ pageConnection, extConnection, allowCrossOrigin = false }) {\n if (!window) throw new Error('Window object not found, you can run bridge only in browser')\n if (!pageConnection) throw new Error('pageConnection required')\n if (!extConnection) throw new Error('extConnection required')\n this.allowCrossOrigin = allowCrossOrigin\n this.pageConnection = pageConnection\n this.extConnection = extConnection\n },\n methods: { run, stop }\n})\n"],"file":"content-script-bridge.js"}