@mysten/sui 1.2.0 → 1.3.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 (200) hide show
  1. package/CHANGELOG.md +212 -84
  2. package/README.md +2 -46
  3. package/dist/cjs/bcs/bcs.d.ts +2 -2
  4. package/dist/cjs/bcs/bcs.js.map +2 -2
  5. package/dist/cjs/bcs/index.d.ts +20 -20
  6. package/dist/cjs/bcs/type-tag-serializer.js.map +1 -1
  7. package/dist/cjs/client/client.d.ts +5 -2
  8. package/dist/cjs/client/client.js +5 -0
  9. package/dist/cjs/client/client.js.map +2 -2
  10. package/dist/cjs/client/http-transport.js +14 -28
  11. package/dist/cjs/client/http-transport.js.map +1 -1
  12. package/dist/cjs/client/network.js.map +1 -1
  13. package/dist/cjs/client/rpc-websocket-client.d.ts +1 -8
  14. package/dist/cjs/client/rpc-websocket-client.js +14 -31
  15. package/dist/cjs/client/rpc-websocket-client.js.map +1 -1
  16. package/dist/cjs/cryptography/publickey.js +1 -2
  17. package/dist/cjs/cryptography/publickey.js.map +1 -1
  18. package/dist/cjs/faucet/faucet.js.map +1 -1
  19. package/dist/cjs/graphql/client.js +11 -22
  20. package/dist/cjs/graphql/client.js.map +2 -2
  21. package/dist/cjs/graphql/schemas/2024.1/index.d.ts +681 -681
  22. package/dist/cjs/graphql/schemas/2024.4/index.d.ts +682 -682
  23. package/dist/cjs/keypairs/ed25519/keypair.js.map +1 -1
  24. package/dist/cjs/keypairs/ed25519/publickey.js.map +1 -1
  25. package/dist/cjs/keypairs/secp256k1/publickey.js.map +1 -1
  26. package/dist/cjs/keypairs/secp256r1/publickey.js.map +1 -1
  27. package/dist/cjs/multisig/publickey.js.map +1 -1
  28. package/dist/cjs/multisig/signer.js +9 -20
  29. package/dist/cjs/multisig/signer.js.map +1 -1
  30. package/dist/cjs/transactions/Arguments.d.ts +988 -0
  31. package/dist/cjs/transactions/Arguments.js +32 -0
  32. package/dist/cjs/transactions/Arguments.js.map +7 -0
  33. package/dist/cjs/transactions/Commands.d.ts +19 -72
  34. package/dist/cjs/transactions/Commands.js.map +1 -1
  35. package/dist/cjs/transactions/ObjectCache.d.ts +1 -4
  36. package/dist/cjs/transactions/ObjectCache.js +8 -19
  37. package/dist/cjs/transactions/ObjectCache.js.map +1 -1
  38. package/dist/cjs/transactions/Transaction.d.ts +48 -50
  39. package/dist/cjs/transactions/Transaction.js +25 -51
  40. package/dist/cjs/transactions/Transaction.js.map +2 -2
  41. package/dist/cjs/transactions/TransactionData.d.ts +2 -2
  42. package/dist/cjs/transactions/TransactionData.js.map +2 -2
  43. package/dist/cjs/transactions/data/internal.d.ts +447 -2128
  44. package/dist/cjs/transactions/data/internal.js +32 -29
  45. package/dist/cjs/transactions/data/internal.js.map +2 -2
  46. package/dist/cjs/transactions/data/v1.d.ts +288 -1818
  47. package/dist/cjs/transactions/data/v1.js +80 -80
  48. package/dist/cjs/transactions/data/v1.js.map +2 -2
  49. package/dist/cjs/transactions/data/v2.d.ts +24 -192
  50. package/dist/cjs/transactions/data/v2.js +3 -3
  51. package/dist/cjs/transactions/data/v2.js.map +2 -2
  52. package/dist/cjs/transactions/executor/caching.d.ts +1 -0
  53. package/dist/cjs/transactions/executor/caching.js +23 -22
  54. package/dist/cjs/transactions/executor/caching.js.map +2 -2
  55. package/dist/cjs/transactions/executor/parallel.d.ts +1 -0
  56. package/dist/cjs/transactions/executor/parallel.js +45 -61
  57. package/dist/cjs/transactions/executor/parallel.js.map +2 -2
  58. package/dist/cjs/transactions/executor/queue.js +6 -13
  59. package/dist/cjs/transactions/executor/queue.js.map +1 -1
  60. package/dist/cjs/transactions/executor/serial.d.ts +2 -1
  61. package/dist/cjs/transactions/executor/serial.js +14 -40
  62. package/dist/cjs/transactions/executor/serial.js.map +2 -2
  63. package/dist/cjs/transactions/hash.js.map +1 -1
  64. package/dist/cjs/transactions/index.d.ts +1 -0
  65. package/dist/cjs/transactions/index.js +2 -2
  66. package/dist/cjs/transactions/index.js.map +2 -2
  67. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +2 -2
  68. package/dist/cjs/transactions/json-rpc-resolver.js +1 -2
  69. package/dist/cjs/transactions/json-rpc-resolver.js.map +2 -2
  70. package/dist/cjs/transactions/pure.d.ts +25 -182
  71. package/dist/cjs/transactions/pure.js +58 -12
  72. package/dist/cjs/transactions/pure.js.map +3 -3
  73. package/dist/cjs/transactions/serializer.js.map +1 -1
  74. package/dist/cjs/utils/constants.js.map +1 -1
  75. package/dist/cjs/utils/format.js.map +1 -1
  76. package/dist/cjs/utils/sui-types.js +1 -2
  77. package/dist/cjs/utils/sui-types.js.map +2 -2
  78. package/dist/cjs/utils/suins.js +2 -2
  79. package/dist/cjs/utils/suins.js.map +2 -2
  80. package/dist/cjs/verify/verify.js.map +1 -1
  81. package/dist/cjs/version.d.ts +2 -2
  82. package/dist/cjs/version.js +2 -2
  83. package/dist/cjs/version.js.map +1 -1
  84. package/dist/cjs/zklogin/index.d.ts +1 -1
  85. package/dist/cjs/zklogin/index.js +1 -0
  86. package/dist/cjs/zklogin/index.js.map +2 -2
  87. package/dist/cjs/zklogin/jwt-utils.js.map +1 -1
  88. package/dist/cjs/zklogin/publickey.js +11 -22
  89. package/dist/cjs/zklogin/publickey.js.map +1 -1
  90. package/dist/esm/bcs/bcs.d.ts +2 -2
  91. package/dist/esm/bcs/bcs.js.map +2 -2
  92. package/dist/esm/bcs/index.d.ts +20 -20
  93. package/dist/esm/bcs/type-tag-serializer.js.map +1 -1
  94. package/dist/esm/client/client.d.ts +5 -2
  95. package/dist/esm/client/client.js +5 -0
  96. package/dist/esm/client/client.js.map +2 -2
  97. package/dist/esm/client/http-transport.js +13 -27
  98. package/dist/esm/client/http-transport.js.map +1 -1
  99. package/dist/esm/client/network.js.map +1 -1
  100. package/dist/esm/client/rpc-websocket-client.d.ts +1 -8
  101. package/dist/esm/client/rpc-websocket-client.js +13 -30
  102. package/dist/esm/client/rpc-websocket-client.js.map +1 -1
  103. package/dist/esm/cryptography/publickey.js +1 -2
  104. package/dist/esm/cryptography/publickey.js.map +1 -1
  105. package/dist/esm/faucet/faucet.js.map +1 -1
  106. package/dist/esm/graphql/client.js +10 -21
  107. package/dist/esm/graphql/client.js.map +2 -2
  108. package/dist/esm/graphql/schemas/2024.1/index.d.ts +681 -681
  109. package/dist/esm/graphql/schemas/2024.4/index.d.ts +682 -682
  110. package/dist/esm/keypairs/ed25519/keypair.js.map +1 -1
  111. package/dist/esm/keypairs/ed25519/publickey.js.map +1 -1
  112. package/dist/esm/keypairs/secp256k1/publickey.js.map +1 -1
  113. package/dist/esm/keypairs/secp256r1/publickey.js.map +1 -1
  114. package/dist/esm/multisig/publickey.js.map +1 -1
  115. package/dist/esm/multisig/signer.js +8 -19
  116. package/dist/esm/multisig/signer.js.map +1 -1
  117. package/dist/esm/transactions/Arguments.d.ts +988 -0
  118. package/dist/esm/transactions/Arguments.js +12 -0
  119. package/dist/esm/transactions/Arguments.js.map +7 -0
  120. package/dist/esm/transactions/Commands.d.ts +19 -72
  121. package/dist/esm/transactions/Commands.js.map +1 -1
  122. package/dist/esm/transactions/ObjectCache.d.ts +1 -4
  123. package/dist/esm/transactions/ObjectCache.js +7 -18
  124. package/dist/esm/transactions/ObjectCache.js.map +1 -1
  125. package/dist/esm/transactions/Transaction.d.ts +48 -50
  126. package/dist/esm/transactions/Transaction.js +24 -50
  127. package/dist/esm/transactions/Transaction.js.map +2 -2
  128. package/dist/esm/transactions/TransactionData.d.ts +2 -2
  129. package/dist/esm/transactions/TransactionData.js.map +2 -2
  130. package/dist/esm/transactions/data/internal.d.ts +447 -2128
  131. package/dist/esm/transactions/data/internal.js +35 -31
  132. package/dist/esm/transactions/data/internal.js.map +2 -2
  133. package/dist/esm/transactions/data/v1.d.ts +288 -1818
  134. package/dist/esm/transactions/data/v1.js +83 -82
  135. package/dist/esm/transactions/data/v1.js.map +2 -2
  136. package/dist/esm/transactions/data/v2.d.ts +24 -192
  137. package/dist/esm/transactions/data/v2.js +4 -3
  138. package/dist/esm/transactions/data/v2.js.map +2 -2
  139. package/dist/esm/transactions/executor/caching.d.ts +1 -0
  140. package/dist/esm/transactions/executor/caching.js +22 -21
  141. package/dist/esm/transactions/executor/caching.js.map +2 -2
  142. package/dist/esm/transactions/executor/parallel.d.ts +1 -0
  143. package/dist/esm/transactions/executor/parallel.js +44 -60
  144. package/dist/esm/transactions/executor/parallel.js.map +2 -2
  145. package/dist/esm/transactions/executor/queue.js +5 -12
  146. package/dist/esm/transactions/executor/queue.js.map +1 -1
  147. package/dist/esm/transactions/executor/serial.d.ts +2 -1
  148. package/dist/esm/transactions/executor/serial.js +13 -39
  149. package/dist/esm/transactions/executor/serial.js.map +2 -2
  150. package/dist/esm/transactions/hash.js.map +1 -1
  151. package/dist/esm/transactions/index.d.ts +1 -0
  152. package/dist/esm/transactions/index.js +2 -2
  153. package/dist/esm/transactions/index.js.map +2 -2
  154. package/dist/esm/transactions/intents/CoinWithBalance.js.map +2 -2
  155. package/dist/esm/transactions/json-rpc-resolver.js +1 -2
  156. package/dist/esm/transactions/json-rpc-resolver.js.map +2 -2
  157. package/dist/esm/transactions/pure.d.ts +25 -182
  158. package/dist/esm/transactions/pure.js +48 -2
  159. package/dist/esm/transactions/pure.js.map +2 -2
  160. package/dist/esm/transactions/serializer.js.map +1 -1
  161. package/dist/esm/utils/constants.js.map +1 -1
  162. package/dist/esm/utils/format.js.map +1 -1
  163. package/dist/esm/utils/sui-types.js +1 -2
  164. package/dist/esm/utils/sui-types.js.map +2 -2
  165. package/dist/esm/utils/suins.js +2 -2
  166. package/dist/esm/utils/suins.js.map +2 -2
  167. package/dist/esm/verify/verify.js.map +1 -1
  168. package/dist/esm/version.d.ts +2 -2
  169. package/dist/esm/version.js +2 -2
  170. package/dist/esm/version.js.map +1 -1
  171. package/dist/esm/zklogin/index.d.ts +1 -1
  172. package/dist/esm/zklogin/index.js +2 -1
  173. package/dist/esm/zklogin/index.js.map +2 -2
  174. package/dist/esm/zklogin/jwt-utils.js.map +1 -1
  175. package/dist/esm/zklogin/publickey.js +10 -21
  176. package/dist/esm/zklogin/publickey.js.map +1 -1
  177. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  178. package/dist/tsconfig.tsbuildinfo +1 -1
  179. package/package.json +26 -26
  180. package/src/bcs/bcs.ts +2 -2
  181. package/src/client/client.ts +7 -4
  182. package/src/graphql/client.ts +1 -1
  183. package/src/transactions/Arguments.ts +23 -0
  184. package/src/transactions/Commands.ts +12 -12
  185. package/src/transactions/Transaction.ts +14 -13
  186. package/src/transactions/TransactionData.ts +4 -2
  187. package/src/transactions/data/internal.ts +52 -47
  188. package/src/transactions/data/v1.ts +102 -100
  189. package/src/transactions/data/v2.ts +9 -8
  190. package/src/transactions/executor/caching.ts +14 -2
  191. package/src/transactions/executor/parallel.ts +16 -2
  192. package/src/transactions/executor/serial.ts +3 -10
  193. package/src/transactions/index.ts +2 -0
  194. package/src/transactions/intents/CoinWithBalance.ts +2 -2
  195. package/src/transactions/json-rpc-resolver.ts +1 -1
  196. package/src/transactions/pure.ts +106 -4
  197. package/src/utils/sui-types.ts +1 -1
  198. package/src/utils/suins.ts +2 -2
  199. package/src/version.ts +2 -2
  200. package/src/zklogin/index.ts +1 -1
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cryptography/publickey.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB64 } from '@mysten/bcs';\nimport { blake2b } from '@noble/hashes/blake2b';\nimport { bytesToHex } from '@noble/hashes/utils';\n\nimport { bcs } from '../bcs/index.js';\nimport { normalizeSuiAddress, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';\nimport type { IntentScope } from './intent.js';\nimport { messageWithIntent } from './intent.js';\n\n/**\n * Value to be converted into public key.\n */\nexport type PublicKeyInitData = string | Uint8Array | Iterable<number>;\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array) {\n\tif (a === b) return true;\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n * A public key\n */\nexport abstract class PublicKey {\n\t/**\n\t * Checks if two public keys are equal\n\t */\n\tequals(publicKey: PublicKey) {\n\t\treturn bytesEqual(this.toRawBytes(), publicKey.toRawBytes());\n\t}\n\n\t/**\n\t * Return the base-64 representation of the public key\n\t */\n\ttoBase64() {\n\t\treturn toB64(this.toRawBytes());\n\t}\n\n\ttoString(): never {\n\t\tthrow new Error(\n\t\t\t'`toString` is not implemented on public keys. Use `toBase64()` or `toRawBytes()` instead.',\n\t\t);\n\t}\n\n\t/**\n\t * Return the Sui representation of the public key encoded in\n\t * base-64. A Sui public key is formed by the concatenation\n\t * of the scheme flag with the raw bytes of the public key\n\t */\n\ttoSuiPublicKey(): string {\n\t\tconst bytes = this.toSuiBytes();\n\t\treturn toB64(bytes);\n\t}\n\n\tverifyWithIntent(\n\t\tbytes: Uint8Array,\n\t\tsignature: Uint8Array | string,\n\t\tintent: IntentScope,\n\t): Promise<boolean> {\n\t\tconst intentMessage = messageWithIntent(intent, bytes);\n\t\tconst digest = blake2b(intentMessage, { dkLen: 32 });\n\n\t\treturn this.verify(digest, signature);\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided PersonalMessage\n\t */\n\tverifyPersonalMessage(message: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\treturn this.verifyWithIntent(\n\t\t\tbcs.vector(bcs.u8()).serialize(message).toBytes(),\n\t\t\tsignature,\n\t\t\t'PersonalMessage',\n\t\t);\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided Transaction\n\t */\n\tverifyTransaction(transaction: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\treturn this.verifyWithIntent(transaction, signature, 'TransactionData');\n\t}\n\n\t/**\n\t * Returns the bytes representation of the public key\n\t * prefixed with the signature scheme flag\n\t */\n\ttoSuiBytes(): Uint8Array {\n\t\tconst rawBytes = this.toRawBytes();\n\t\tconst suiBytes = new Uint8Array(rawBytes.length + 1);\n\t\tsuiBytes.set([this.flag()]);\n\t\tsuiBytes.set(rawBytes, 1);\n\n\t\treturn suiBytes;\n\t}\n\n\t/**\n\t * Return the Sui address associated with this Ed25519 public key\n\t */\n\ttoSuiAddress(): string {\n\t\t// Each hex char represents half a byte, hence hex address doubles the length\n\t\treturn normalizeSuiAddress(\n\t\t\tbytesToHex(blake2b(this.toSuiBytes(), { dkLen: 32 })).slice(0, SUI_ADDRESS_LENGTH * 2),\n\t\t);\n\t}\n\n\t/**\n\t * Return the byte array representation of the public key\n\t */\n\tabstract toRawBytes(): Uint8Array;\n\n\t/**\n\t * Return signature scheme flag of the public key\n\t */\n\tabstract flag(): number;\n\n\t/**\n\t * Verifies that the signature is valid for for the provided message\n\t */\n\tabstract verify(data: Uint8Array, signature: Uint8Array | string): Promise<boolean>;\n}\n"],
5
- "mappings": "AAGA,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAE3B,SAAS,WAAW;AACpB,SAAS,qBAAqB,0BAA0B;AAExD,SAAS,yBAAyB;AAO3B,SAAS,WAAW,GAAe,GAAe;AACxD,MAAI,MAAM;AAAG,WAAO;AAEpB,MAAI,EAAE,WAAW,EAAE,QAAQ;AAC1B,WAAO;AAAA,EACR;AAEA,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAClC,QAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG;AAClB,aAAO;AAAA,IACR;AAAA,EACD;AACA,SAAO;AACR;AAKO,MAAe,UAAU;AAAA;AAAA;AAAA;AAAA,EAI/B,OAAO,WAAsB;AAC5B,WAAO,WAAW,KAAK,WAAW,GAAG,UAAU,WAAW,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACV,WAAO,MAAM,KAAK,WAAW,CAAC;AAAA,EAC/B;AAAA,EAEA,WAAkB;AACjB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAyB;AACxB,UAAM,QAAQ,KAAK,WAAW;AAC9B,WAAO,MAAM,KAAK;AAAA,EACnB;AAAA,EAEA,iBACC,OACA,WACA,QACmB;AACnB,UAAM,gBAAgB,kBAAkB,QAAQ,KAAK;AACrD,UAAM,SAAS,QAAQ,eAAe,EAAE,OAAO,GAAG,CAAC;AAEnD,WAAO,KAAK,OAAO,QAAQ,SAAS;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAsB,SAAqB,WAAkD;AAC5F,WAAO,KAAK;AAAA,MACX,IAAI,OAAO,IAAI,GAAG,CAAC,EAAE,UAAU,OAAO,EAAE,QAAQ;AAAA,MAChD;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,aAAyB,WAAkD;AAC5F,WAAO,KAAK,iBAAiB,aAAa,WAAW,iBAAiB;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAyB;AACxB,UAAM,WAAW,KAAK,WAAW;AACjC,UAAM,WAAW,IAAI,WAAW,SAAS,SAAS,CAAC;AACnD,aAAS,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AAC1B,aAAS,IAAI,UAAU,CAAC;AAExB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,eAAuB;AAEtB,WAAO;AAAA,MACN,WAAW,QAAQ,KAAK,WAAW,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAC;AAAA,IACtF;AAAA,EACD;AAgBD;",
5
+ "mappings": "AAGA,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAE3B,SAAS,WAAW;AACpB,SAAS,qBAAqB,0BAA0B;AAExD,SAAS,yBAAyB;AAO3B,SAAS,WAAW,GAAe,GAAe;AACxD,MAAI,MAAM,EAAG,QAAO;AAEpB,MAAI,EAAE,WAAW,EAAE,QAAQ;AAC1B,WAAO;AAAA,EACR;AAEA,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAClC,QAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG;AAClB,aAAO;AAAA,IACR;AAAA,EACD;AACA,SAAO;AACR;AAKO,MAAe,UAAU;AAAA;AAAA;AAAA;AAAA,EAI/B,OAAO,WAAsB;AAC5B,WAAO,WAAW,KAAK,WAAW,GAAG,UAAU,WAAW,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACV,WAAO,MAAM,KAAK,WAAW,CAAC;AAAA,EAC/B;AAAA,EAEA,WAAkB;AACjB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAyB;AACxB,UAAM,QAAQ,KAAK,WAAW;AAC9B,WAAO,MAAM,KAAK;AAAA,EACnB;AAAA,EAEA,iBACC,OACA,WACA,QACmB;AACnB,UAAM,gBAAgB,kBAAkB,QAAQ,KAAK;AACrD,UAAM,SAAS,QAAQ,eAAe,EAAE,OAAO,GAAG,CAAC;AAEnD,WAAO,KAAK,OAAO,QAAQ,SAAS;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAsB,SAAqB,WAAkD;AAC5F,WAAO,KAAK;AAAA,MACX,IAAI,OAAO,IAAI,GAAG,CAAC,EAAE,UAAU,OAAO,EAAE,QAAQ;AAAA,MAChD;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,aAAyB,WAAkD;AAC5F,WAAO,KAAK,iBAAiB,aAAa,WAAW,iBAAiB;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAyB;AACxB,UAAM,WAAW,KAAK,WAAW;AACjC,UAAM,WAAW,IAAI,WAAW,SAAS,SAAS,CAAC;AACnD,aAAS,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AAC1B,aAAS,IAAI,UAAU,CAAC;AAExB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,eAAuB;AAEtB,WAAO;AAAA,MACN,WAAW,QAAQ,KAAK,WAAW,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAC;AAAA,IACtF;AAAA,EACD;AAgBD;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/faucet/faucet.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport class FaucetRateLimitError extends Error {}\n\ntype FaucetCoinInfo = {\n\tamount: number;\n\tid: string;\n\ttransferTxDigest: string;\n};\n\ntype FaucetResponse = {\n\ttransferredGasObjects: FaucetCoinInfo[];\n\terror?: string | null;\n};\n\ntype BatchFaucetResponse = {\n\ttask?: string | null;\n\terror?: string | null;\n};\n\ntype BatchSendStatusType = {\n\tstatus: 'INPROGRESS' | 'SUCCEEDED' | 'DISCARDED';\n\ttransferred_gas_objects: { sent: FaucetCoinInfo[] };\n};\n\ntype BatchStatusFaucetResponse = {\n\tstatus: BatchSendStatusType;\n\terror?: string | null;\n};\n\ntype FaucetRequest = {\n\thost: string;\n\tpath: string;\n\tbody?: Record<string, any>;\n\theaders?: HeadersInit;\n\tmethod: 'GET' | 'POST';\n};\n\nasync function faucetRequest({ host, path, body, headers, method }: FaucetRequest) {\n\tconst endpoint = new URL(path, host).toString();\n\tconst res = await fetch(endpoint, {\n\t\tmethod,\n\t\tbody: body ? JSON.stringify(body) : undefined,\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...(headers || {}),\n\t\t},\n\t});\n\n\tif (res.status === 429) {\n\t\tthrow new FaucetRateLimitError(\n\t\t\t`Too many requests from this client have been sent to the faucet. Please retry later`,\n\t\t);\n\t}\n\n\ttry {\n\t\tconst parsed = await res.json();\n\t\tif (parsed.error) {\n\t\t\tthrow new Error(`Faucet returns error: ${parsed.error}`);\n\t\t}\n\t\treturn parsed;\n\t} catch (e) {\n\t\tthrow new Error(\n\t\t\t`Encountered error when parsing response from faucet, error: ${e}, status ${res.status}, response ${res}`,\n\t\t);\n\t}\n}\n\nexport async function requestSuiFromFaucetV0(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}): Promise<FaucetResponse> {\n\treturn faucetRequest({\n\t\thost: input.host,\n\t\tpath: '/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n}\n\nexport async function requestSuiFromFaucetV1(input: {\n\thost: string;\n\trecipient: string;\n\theaders?: HeadersInit;\n}): Promise<BatchFaucetResponse> {\n\treturn faucetRequest({\n\t\thost: input.host,\n\t\tpath: '/v1/gas',\n\t\tbody: {\n\t\t\tFixedAmountRequest: {\n\t\t\t\trecipient: input.recipient,\n\t\t\t},\n\t\t},\n\t\theaders: input.headers,\n\t\tmethod: 'POST',\n\t});\n}\n\nexport async function getFaucetRequestStatus(input: {\n\thost: string;\n\ttaskId: string;\n\theaders?: HeadersInit;\n}): Promise<BatchStatusFaucetResponse> {\n\treturn faucetRequest({\n\t\thost: input.host,\n\t\tpath: `/v1/status/${input.taskId}`,\n\t\theaders: input.headers,\n\t\tmethod: 'GET',\n\t});\n}\n\nexport function getFaucetHost(network: 'testnet' | 'devnet' | 'localnet') {\n\tswitch (network) {\n\t\tcase 'testnet':\n\t\t\treturn 'https://faucet.testnet.sui.io';\n\t\tcase 'devnet':\n\t\t\treturn 'https://faucet.devnet.sui.io';\n\t\tcase 'localnet':\n\t\t\treturn 'http://127.0.0.1:9123';\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown network: ${network}`);\n\t}\n}\n"],
5
- "mappings": "AAGO,MAAM,6BAA6B,MAAM;AAAC;AAoCjD,eAAe,cAAc,EAAE,MAAM,MAAM,MAAM,SAAS,OAAO,GAAkB;AAClF,QAAM,WAAW,IAAI,IAAI,MAAM,IAAI,EAAE,SAAS;AAC9C,QAAM,MAAM,MAAM,MAAM,UAAU;AAAA,IACjC;AAAA,IACA,MAAM,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,IACpC,SAAS;AAAA,MACR,gBAAgB;AAAA,MAChB,GAAI,WAAW,CAAC;AAAA,IACjB;AAAA,EACD,CAAC;AAED,MAAI,IAAI,WAAW,KAAK;AACvB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,MAAI;AACH,UAAM,SAAS,MAAM,IAAI,KAAK;AAC9B,QAAI,OAAO,OAAO;AACjB,YAAM,IAAI,MAAM,yBAAyB,OAAO,OAAO;AAAA,IACxD;AACA,WAAO;AAAA,EACR,SAAS,GAAP;AACD,UAAM,IAAI;AAAA,MACT,+DAA+D,aAAa,IAAI,oBAAoB;AAAA,IACrG;AAAA,EACD;AACD;AAEA,eAAsB,uBAAuB,OAIjB;AAC3B,SAAO,cAAc;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,MAAM;AAAA,MACL,oBAAoB;AAAA,QACnB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AACF;AAEA,eAAsB,uBAAuB,OAIZ;AAChC,SAAO,cAAc;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,MAAM;AAAA,MACL,oBAAoB;AAAA,QACnB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AACF;AAEA,eAAsB,uBAAuB,OAIN;AACtC,SAAO,cAAc;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ,MAAM,cAAc,MAAM;AAAA,IAC1B,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AACF;AAEO,SAAS,cAAc,SAA4C;AACzE,UAAQ,SAAS;AAAA,IAChB,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR;AACC,YAAM,IAAI,MAAM,oBAAoB,SAAS;AAAA,EAC/C;AACD;",
5
+ "mappings": "AAGO,MAAM,6BAA6B,MAAM;AAAC;AAoCjD,eAAe,cAAc,EAAE,MAAM,MAAM,MAAM,SAAS,OAAO,GAAkB;AAClF,QAAM,WAAW,IAAI,IAAI,MAAM,IAAI,EAAE,SAAS;AAC9C,QAAM,MAAM,MAAM,MAAM,UAAU;AAAA,IACjC;AAAA,IACA,MAAM,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,IACpC,SAAS;AAAA,MACR,gBAAgB;AAAA,MAChB,GAAI,WAAW,CAAC;AAAA,IACjB;AAAA,EACD,CAAC;AAED,MAAI,IAAI,WAAW,KAAK;AACvB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,MAAI;AACH,UAAM,SAAS,MAAM,IAAI,KAAK;AAC9B,QAAI,OAAO,OAAO;AACjB,YAAM,IAAI,MAAM,yBAAyB,OAAO,KAAK,EAAE;AAAA,IACxD;AACA,WAAO;AAAA,EACR,SAAS,GAAG;AACX,UAAM,IAAI;AAAA,MACT,+DAA+D,CAAC,YAAY,IAAI,MAAM,cAAc,GAAG;AAAA,IACxG;AAAA,EACD;AACD;AAEA,eAAsB,uBAAuB,OAIjB;AAC3B,SAAO,cAAc;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,MAAM;AAAA,MACL,oBAAoB;AAAA,QACnB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AACF;AAEA,eAAsB,uBAAuB,OAIZ;AAChC,SAAO,cAAc;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,MAAM;AAAA,MACL,oBAAoB;AAAA,QACnB,WAAW,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AACF;AAEA,eAAsB,uBAAuB,OAIN;AACtC,SAAO,cAAc;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ,MAAM,cAAc,MAAM,MAAM;AAAA,IAChC,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,EACT,CAAC;AACF;AAEO,SAAS,cAAc,SAA4C;AACzE,UAAQ,SAAS;AAAA,IAChB,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR;AACC,YAAM,IAAI,MAAM,oBAAoB,OAAO,EAAE;AAAA,EAC/C;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,21 +1,10 @@
1
- var __accessCheck = (obj, member, msg) => {
2
- if (!member.has(obj))
3
- throw TypeError("Cannot " + msg);
4
- };
5
- var __privateGet = (obj, member, getter) => {
6
- __accessCheck(obj, member, "read from private field");
7
- return getter ? getter.call(obj) : member.get(obj);
8
- };
9
- var __privateAdd = (obj, member, value) => {
10
- if (member.has(obj))
11
- throw TypeError("Cannot add the same private member more than once");
12
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
- };
14
- var __privateSet = (obj, member, value, setter) => {
15
- __accessCheck(obj, member, "write to private field");
16
- setter ? setter.call(obj, value) : member.set(obj, value);
17
- return value;
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
18
3
  };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
19
8
  var _url, _queries, _headers, _fetch;
20
9
  import { print } from "graphql";
21
10
  class SuiGraphQLRequestError extends Error {
@@ -27,10 +16,10 @@ class SuiGraphQLClient {
27
16
  headers = {},
28
17
  queries = {}
29
18
  }) {
30
- __privateAdd(this, _url, void 0);
31
- __privateAdd(this, _queries, void 0);
32
- __privateAdd(this, _headers, void 0);
33
- __privateAdd(this, _fetch, void 0);
19
+ __privateAdd(this, _url);
20
+ __privateAdd(this, _queries);
21
+ __privateAdd(this, _headers);
22
+ __privateAdd(this, _fetch);
34
23
  __privateSet(this, _url, url);
35
24
  __privateSet(this, _queries, queries);
36
25
  __privateSet(this, _headers, headers);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/graphql/client.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport type { TadaDocumentNode } from 'gql.tada';\nimport type { DocumentNode } from 'graphql';\nimport { print } from 'graphql';\n\nexport type GraphQLDocument<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> =\n\t| string\n\t| DocumentNode\n\t| TypedDocumentNode<Result, Variables>\n\t| TadaDocumentNode<Result, Variables>;\n\nexport type GraphQLQueryOptions<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> = {\n\tquery: GraphQLDocument<Result, Variables>;\n\toperationName?: string;\n\textensions?: Record<string, unknown>;\n} & (Variables extends { [key: string]: never }\n\t? { variables?: Variables }\n\t: {\n\t\t\tvariables: Variables;\n\t });\n\nexport type GraphQLQueryResult<Result = Record<string, unknown>> = {\n\tdata?: Result;\n\terrors?: GraphQLResponseErrors;\n\textensions?: Record<string, unknown>;\n};\n\nexport type GraphQLResponseErrors = Array<{\n\tmessage: string;\n\tlocations?: { line: number; column: number }[];\n\tpath?: (string | number)[];\n}>;\n\nexport interface SuiGraphQLClientOptions<Queries extends Record<string, GraphQLDocument>> {\n\turl: string;\n\tfetch?: typeof fetch;\n\theaders?: Record<string, string>;\n\tqueries?: Queries;\n}\n\nexport class SuiGraphQLRequestError extends Error {}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class SuiGraphQLClient<Queries extends Record<string, GraphQLDocument> = {}> {\n\t#url: string;\n\t#queries: Queries;\n\t#headers: Record<string, string>;\n\t#fetch: typeof fetch;\n\n\tconstructor({\n\t\turl,\n\t\tfetch: fetchFn = fetch,\n\t\theaders = {},\n\t\tqueries = {} as Queries,\n\t}: SuiGraphQLClientOptions<Queries>) {\n\t\tthis.#url = url;\n\t\tthis.#queries = queries;\n\t\tthis.#headers = headers;\n\t\tthis.#fetch = (...args) => fetchFn(...args);\n\t}\n\n\tasync query<Result = Record<string, unknown>, Variables = Record<string, unknown>>(\n\t\toptions: GraphQLQueryOptions<Result, Variables>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\tconst res = await this.#fetch(this.#url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t...this.#headers,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tquery: typeof options.query === 'string' ? String(options.query) : print(options.query),\n\t\t\t\tvariables: options.variables,\n\t\t\t\textensions: options.extensions,\n\t\t\t\toperationName: options.operationName,\n\t\t\t}),\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tthrow new SuiGraphQLRequestError(`GraphQL request failed: ${res.statusText} (${res.status})`);\n\t\t}\n\n\t\treturn await res.json();\n\t}\n\n\tasync execute<\n\t\tconst Query extends Extract<keyof Queries, string>,\n\t\tResult = Queries[Query] extends GraphQLDocument<infer R, unknown> ? R : Record<string, unknown>,\n\t\tVariables = Queries[Query] extends GraphQLDocument<unknown, infer V>\n\t\t\t? V\n\t\t\t: Record<string, unknown>,\n\t>(\n\t\tquery: Query,\n\t\toptions: Omit<GraphQLQueryOptions<Result, Variables>, 'query'>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\treturn this.query({\n\t\t\t...(options as { variables: Record<string, unknown> }),\n\t\t\tquery: this.#queries[query]!,\n\t\t}) as Promise<GraphQLQueryResult<Result>>;\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAMA,SAAS,aAAa;AA2Cf,MAAM,+BAA+B,MAAM;AAAC;AAG5C,MAAM,iBAAuE;AAAA,EAMnF,YAAY;AAAA,IACX;AAAA,IACA,OAAO,UAAU;AAAA,IACjB,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,EACZ,GAAqC;AAVrC;AACA;AACA;AACA;AAQC,uBAAK,MAAO;AACZ,uBAAK,UAAW;AAChB,uBAAK,UAAW;AAChB,uBAAK,QAAS,IAAI,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEA,MAAM,MACL,SACsC;AACtC,UAAM,MAAM,MAAM,mBAAK,QAAL,WAAY,mBAAK,OAAM;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,GAAG,mBAAK;AAAA,MACT;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACpB,OAAO,OAAO,QAAQ,UAAU,WAAW,OAAO,QAAQ,KAAK,IAAI,MAAM,QAAQ,KAAK;AAAA,QACtF,WAAW,QAAQ;AAAA,QACnB,YAAY,QAAQ;AAAA,QACpB,eAAe,QAAQ;AAAA,MACxB,CAAC;AAAA,IACF;AAEA,QAAI,CAAC,IAAI,IAAI;AACZ,YAAM,IAAI,uBAAuB,2BAA2B,IAAI,eAAe,IAAI,SAAS;AAAA,IAC7F;AAEA,WAAO,MAAM,IAAI,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,QAOL,OACA,SACsC;AACtC,WAAO,KAAK,MAAM;AAAA,MACjB,GAAI;AAAA,MACJ,OAAO,mBAAK,UAAS,KAAK;AAAA,IAC3B,CAAC;AAAA,EACF;AACD;AAxDC;AACA;AACA;AACA;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport type { TadaDocumentNode } from 'gql.tada';\nimport type { DocumentNode } from 'graphql';\nimport { print } from 'graphql';\n\nexport type GraphQLDocument<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> =\n\t| string\n\t| DocumentNode\n\t| TypedDocumentNode<Result, Variables>\n\t| TadaDocumentNode<Result, Variables>;\n\nexport type GraphQLQueryOptions<\n\tResult = Record<string, unknown>,\n\tVariables = Record<string, unknown>,\n> = {\n\tquery: GraphQLDocument<Result, Variables>;\n\toperationName?: string;\n\textensions?: Record<string, unknown>;\n} & (Variables extends { [key: string]: never }\n\t? { variables?: Variables }\n\t: {\n\t\t\tvariables: Variables;\n\t\t});\n\nexport type GraphQLQueryResult<Result = Record<string, unknown>> = {\n\tdata?: Result;\n\terrors?: GraphQLResponseErrors;\n\textensions?: Record<string, unknown>;\n};\n\nexport type GraphQLResponseErrors = Array<{\n\tmessage: string;\n\tlocations?: { line: number; column: number }[];\n\tpath?: (string | number)[];\n}>;\n\nexport interface SuiGraphQLClientOptions<Queries extends Record<string, GraphQLDocument>> {\n\turl: string;\n\tfetch?: typeof fetch;\n\theaders?: Record<string, string>;\n\tqueries?: Queries;\n}\n\nexport class SuiGraphQLRequestError extends Error {}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class SuiGraphQLClient<Queries extends Record<string, GraphQLDocument> = {}> {\n\t#url: string;\n\t#queries: Queries;\n\t#headers: Record<string, string>;\n\t#fetch: typeof fetch;\n\n\tconstructor({\n\t\turl,\n\t\tfetch: fetchFn = fetch,\n\t\theaders = {},\n\t\tqueries = {} as Queries,\n\t}: SuiGraphQLClientOptions<Queries>) {\n\t\tthis.#url = url;\n\t\tthis.#queries = queries;\n\t\tthis.#headers = headers;\n\t\tthis.#fetch = (...args) => fetchFn(...args);\n\t}\n\n\tasync query<Result = Record<string, unknown>, Variables = Record<string, unknown>>(\n\t\toptions: GraphQLQueryOptions<Result, Variables>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\tconst res = await this.#fetch(this.#url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t...this.#headers,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tquery: typeof options.query === 'string' ? String(options.query) : print(options.query),\n\t\t\t\tvariables: options.variables,\n\t\t\t\textensions: options.extensions,\n\t\t\t\toperationName: options.operationName,\n\t\t\t}),\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tthrow new SuiGraphQLRequestError(`GraphQL request failed: ${res.statusText} (${res.status})`);\n\t\t}\n\n\t\treturn await res.json();\n\t}\n\n\tasync execute<\n\t\tconst Query extends Extract<keyof Queries, string>,\n\t\tResult = Queries[Query] extends GraphQLDocument<infer R, unknown> ? R : Record<string, unknown>,\n\t\tVariables = Queries[Query] extends GraphQLDocument<unknown, infer V>\n\t\t\t? V\n\t\t\t: Record<string, unknown>,\n\t>(\n\t\tquery: Query,\n\t\toptions: Omit<GraphQLQueryOptions<Result, Variables>, 'query'>,\n\t): Promise<GraphQLQueryResult<Result>> {\n\t\treturn this.query({\n\t\t\t...(options as { variables: Record<string, unknown> }),\n\t\t\tquery: this.#queries[query]!,\n\t\t}) as Promise<GraphQLQueryResult<Result>>;\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;AAAA;AAMA,SAAS,aAAa;AA2Cf,MAAM,+BAA+B,MAAM;AAAC;AAG5C,MAAM,iBAAuE;AAAA,EAMnF,YAAY;AAAA,IACX;AAAA,IACA,OAAO,UAAU;AAAA,IACjB,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,EACZ,GAAqC;AAVrC;AACA;AACA;AACA;AAQC,uBAAK,MAAO;AACZ,uBAAK,UAAW;AAChB,uBAAK,UAAW;AAChB,uBAAK,QAAS,IAAI,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEA,MAAM,MACL,SACsC;AACtC,UAAM,MAAM,MAAM,mBAAK,QAAL,WAAY,mBAAK,OAAM;AAAA,MACxC,QAAQ;AAAA,MACR,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,GAAG,mBAAK;AAAA,MACT;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACpB,OAAO,OAAO,QAAQ,UAAU,WAAW,OAAO,QAAQ,KAAK,IAAI,MAAM,QAAQ,KAAK;AAAA,QACtF,WAAW,QAAQ;AAAA,QACnB,YAAY,QAAQ;AAAA,QACpB,eAAe,QAAQ;AAAA,MACxB,CAAC;AAAA,IACF;AAEA,QAAI,CAAC,IAAI,IAAI;AACZ,YAAM,IAAI,uBAAuB,2BAA2B,IAAI,UAAU,KAAK,IAAI,MAAM,GAAG;AAAA,IAC7F;AAEA,WAAO,MAAM,IAAI,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,QAOL,OACA,SACsC;AACtC,WAAO,KAAK,MAAM;AAAA,MACjB,GAAI;AAAA,MACJ,OAAO,mBAAK,UAAS,KAAK;AAAA,IAC3B,CAAC;AAAA,EACF;AACD;AAxDC;AACA;AACA;AACA;",
6
6
  "names": []
7
7
  }