diff --git a/package.json b/package.json index e72039b..9e9ccf8 100644 --- a/package.json +++ b/package.json @@ -24,12 +24,15 @@ "registry": "https://registry.npmjs.org" }, "peerDependencies": { - "@metaplex-foundation/digital-asset-standard-api": "^1.0.3", - "@metaplex-foundation/mpl-core": "1.0.0-alpha.6", + "@metaplex-foundation/digital-asset-standard-api": "^1.0.4-alpha.0", + "@metaplex-foundation/mpl-core": ">=1.0.1", "@metaplex-foundation/umi": ">=0.8.2 < 1" }, "devDependencies": { "@ava/typescript": "^4.1.0", + "@metaplex-foundation/mpl-core": "1.0.1", + "@metaplex-foundation/digital-asset-standard-api": "^1.0.4-alpha.0", + "@metaplex-foundation/umi": "^0.9.1", "@metaplex-foundation/umi-bundle-tests": "^0.9.1", "@typescript-eslint/eslint-plugin": "^7.5.0", "@typescript-eslint/parser": "^7.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9298a7a..9acff75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,24 +1,18 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - '@metaplex-foundation/digital-asset-standard-api': - specifier: ^1.0.3 - version: 1.0.3(@metaplex-foundation/umi@0.9.1) - '@metaplex-foundation/mpl-core': - specifier: 1.0.0-alpha.6 - version: 1.0.0-alpha.6(@metaplex-foundation/umi@0.9.1)(@noble/hashes@1.4.0) - '@metaplex-foundation/umi': - specifier: '>=0.8.2 < 1' - version: 0.9.1 - devDependencies: '@ava/typescript': specifier: ^4.1.0 version: 4.1.0 + '@metaplex-foundation/digital-asset-standard-api': + specifier: ^1.0.4-alpha.0 + version: 1.0.4-alpha.0(@metaplex-foundation/umi@0.9.1) + '@metaplex-foundation/mpl-core': + specifier: 1.0.1 + version: 1.0.1(@metaplex-foundation/umi@0.9.1)(@noble/hashes@1.4.0) + '@metaplex-foundation/umi': + specifier: ^0.9.1 + version: 0.9.1 '@metaplex-foundation/umi-bundle-tests': specifier: ^0.9.1 version: 0.9.1(@metaplex-foundation/umi@0.9.1)(@solana/web3.js@1.91.8) @@ -168,24 +162,24 @@ packages: - supports-color dev: true - /@metaplex-foundation/digital-asset-standard-api@1.0.3(@metaplex-foundation/umi@0.9.1): - resolution: {integrity: sha512-uWrKF3lGfDt5KB1xV5BfPFQnbq4GvcNsN2/YYdgFW6+iNplhzXibbYjrZDFRv+WcE49U8JKbxK/yDW+Jc6K9Cw==} + /@metaplex-foundation/digital-asset-standard-api@1.0.4-alpha.0(@metaplex-foundation/umi@0.9.1): + resolution: {integrity: sha512-xVhvDhpF/5jBxJ+rlMJh70C129G64pQ6YyylFnm1iHgMmsjmun0PlX87Jp8DQLpac8fdveQ862SVotELkyHV1g==} peerDependencies: '@metaplex-foundation/umi': '>= 0.8.2 < 1' dependencies: '@metaplex-foundation/umi': 0.9.1 package.json: 2.0.1 - dev: false + dev: true - /@metaplex-foundation/mpl-core@1.0.0-alpha.6(@metaplex-foundation/umi@0.9.1)(@noble/hashes@1.4.0): - resolution: {integrity: sha512-siyjbbeq/+eFuG8Nbq/xJW/hvxGG10vdbtqwSSVfL7QwO0bL77A4F1LgWEqisOXI85RlMui45a5us3A64tZtzA==} + /@metaplex-foundation/mpl-core@1.0.1(@metaplex-foundation/umi@0.9.1)(@noble/hashes@1.4.0): + resolution: {integrity: sha512-Yjg/X2fHmGONmUx8e/YEYDQQ+oCCZv52B/H+gxSK5i4hm+spGUYwwsfJrdadOym8m1/aEswOOpOOiXmyX62Z8A==} peerDependencies: '@metaplex-foundation/umi': '>=0.8.2 < 1' '@noble/hashes': ^1.3.1 dependencies: '@metaplex-foundation/umi': 0.9.1 '@noble/hashes': 1.4.0 - dev: false + dev: true /@metaplex-foundation/umi-bundle-tests@0.9.1(@metaplex-foundation/umi@0.9.1)(@solana/web3.js@1.91.8): resolution: {integrity: sha512-neAdkAVnjda8BC5bdkV0/ZsqlZU1BUmdOaI0HI6KvMUltT4+SnrxSPEhnGDZ7XvWcdhGB3TW5ho4GTOF5WrKdA==} @@ -231,6 +225,7 @@ packages: /@metaplex-foundation/umi-options@0.8.9: resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} + dev: true /@metaplex-foundation/umi-program-repository@0.9.1(@metaplex-foundation/umi@0.9.1): resolution: {integrity: sha512-6SawFMO4IZdk4y+D/+o8CyYnfmy8kcOqhQsX3fUMqIXSzz0vzMT2/dDTMfLsuTVyULnaW/VYm26cmYBjVqZTlw==} @@ -244,6 +239,7 @@ packages: resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} dependencies: '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + dev: true /@metaplex-foundation/umi-rpc-web3js@0.9.1(@metaplex-foundation/umi@0.9.1)(@solana/web3.js@1.91.8): resolution: {integrity: sha512-kOJEc9IWMX+H7dI5zZZimww1w0A6yd2V/fsQHKB/kHddja7JoPK4Au68n45Pi0vb3HY7riCQN9XMqOOPD5tcxA==} @@ -266,16 +262,19 @@ packages: /@metaplex-foundation/umi-serializers-core@0.8.9: resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} + dev: true /@metaplex-foundation/umi-serializers-encodings@0.8.9: resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} dependencies: '@metaplex-foundation/umi-serializers-core': 0.8.9 + dev: true /@metaplex-foundation/umi-serializers-numbers@0.8.9: resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} dependencies: '@metaplex-foundation/umi-serializers-core': 0.8.9 + dev: true /@metaplex-foundation/umi-serializers@0.9.0: resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} @@ -285,6 +284,7 @@ packages: '@metaplex-foundation/umi-serializers-core': 0.8.9 '@metaplex-foundation/umi-serializers-encodings': 0.8.9 '@metaplex-foundation/umi-serializers-numbers': 0.8.9 + dev: true /@metaplex-foundation/umi-storage-mock@0.9.1(@metaplex-foundation/umi@0.9.1): resolution: {integrity: sha512-12YPmdeJA1M3ZVW3xkFKznjsuRfVNDKcDJMbcFBhyNBStyP5WVLrxt1WP6X70um59u8xZlQBH4a22e1X0UMaSA==} @@ -322,6 +322,7 @@ packages: '@metaplex-foundation/umi-options': 0.8.9 '@metaplex-foundation/umi-public-keys': 0.8.9 '@metaplex-foundation/umi-serializers': 0.9.0 + dev: true /@noble/curves@1.4.0: resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} @@ -332,6 +333,7 @@ packages: /@noble/hashes@1.4.0: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} + dev: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -428,7 +430,7 @@ packages: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: '@types/node': 20.12.4 - dev: false + dev: true /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -438,12 +440,13 @@ packages: resolution: {integrity: sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw==} dependencies: undici-types: 5.26.5 + dev: true /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: '@types/node': 20.12.4 - dev: false + dev: true /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -629,7 +632,7 @@ packages: resolution: {integrity: sha512-PrS26IzwKLWwuURpiKl8wRmJ2KdR/azaVrLEBWG/TALwT20Y7qjtYp1qcMLHA4206hBHY5phv3w4pjf9NPv4Vw==} dependencies: ul: 5.2.15 - dev: false + dev: true /acorn-import-attributes@1.9.5(acorn@8.11.3): resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} @@ -989,7 +992,7 @@ packages: /capture-stack-trace@1.0.2: resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} engines: {node: '>=0.10.0'} - dev: false + dev: true /cbor@9.0.2: resolution: {integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==} @@ -1110,14 +1113,14 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false + dev: true /create-error-class@3.0.2: resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} engines: {node: '>=0.10.0'} dependencies: capture-stack-trace: 1.0.2 - dev: false + dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1195,7 +1198,7 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false + dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1205,7 +1208,7 @@ packages: resolution: {integrity: sha512-pLc9lsbsWjr6RxmJ2OLyvm+9l4j1yK69h+TML/gUit/t3vTijpkNGh8LioaJYTGO7F25m6HZndADcUOo2PsiUg==} dependencies: typpy: 2.3.13 - dev: false + dev: true /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} @@ -1269,7 +1272,7 @@ packages: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} dependencies: readable-stream: 2.3.8 - dev: false + dev: true /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1296,13 +1299,13 @@ packages: resolution: {integrity: sha512-N97Ybd2jJHVQ+Ft3Q5+C2gM3kgygkdeQmEqbN2z15UTVyyEsIwLA1VK39O1DHEJhXbwIFcJLqm6iARNhFANcQA==} dependencies: typpy: 2.3.13 - dev: false + dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: false + dev: true /es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} @@ -1675,7 +1678,7 @@ packages: dependencies: limit-it: 3.2.10 typpy: 2.3.13 - dev: false + dev: true /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} @@ -1812,12 +1815,13 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true /function.name@1.0.13: resolution: {integrity: sha512-mVrqdoy5npWZyoXl4DxCeuVF6delDcQjVS9aPdvLYlBxtMTZDR2B5GVEQEoM1jJyspCqg3C0v4ABkLE7tp9xFA==} dependencies: noop6: 1.0.9 - dev: false + dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} @@ -1895,26 +1899,26 @@ packages: r-json: 1.3.0 r-package-json: 1.0.9 tmp: 0.0.28 - dev: false + dev: true /git-source@1.1.10: resolution: {integrity: sha512-XZZ7ZgnLL35oLgM/xjnLYgtlKlxJG0FohC1kWDvGkU7s1VKGXK0pFF/g1itQEwQ3D+uTQzBnzPi8XbqOv7Wc1Q==} dependencies: git-url-parse: 5.0.1 - dev: false + dev: true /git-up@1.2.1: resolution: {integrity: sha512-SRVN3rOLACva8imc7BFrB6ts5iISWKH1/h/1Z+JZYoUI7UVQM7gQqk4M2yxUENbq2jUUT09NEND5xwP1i7Ktlw==} dependencies: is-ssh: 1.4.0 parse-url: 1.3.11 - dev: false + dev: true /git-url-parse@5.0.1: resolution: {integrity: sha512-4uSiOgrryNEMBX+gTWogenYRUh2j1D+95STTSEF2RCTgLkfJikl8c7BGr0Bn274hwuxTsbS2/FQ5pVS9FoXegQ==} dependencies: git-up: 1.2.1 - dev: false + dev: true /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -2018,7 +2022,7 @@ packages: timed-out: 3.1.3 unzip-response: 1.0.2 url-parse-lax: 1.0.0 - dev: false + dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2035,7 +2039,7 @@ packages: exec-limiter: 3.2.13 one-by-one: 3.2.8 ul: 5.2.15 - dev: false + dev: true /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -2078,10 +2082,11 @@ packages: engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 + dev: true /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false + dev: true /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} @@ -2145,10 +2150,11 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + dev: true /internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} @@ -2174,7 +2180,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false + dev: true /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -2199,6 +2205,7 @@ packages: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.2 + dev: true /is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} @@ -2270,7 +2277,7 @@ packages: /is-redirect@1.0.0: resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} engines: {node: '>=0.10.0'} - dev: false + dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -2283,7 +2290,7 @@ packages: /is-retry-allowed@1.2.0: resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} engines: {node: '>=0.10.0'} - dev: false + dev: true /is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} @@ -2296,12 +2303,12 @@ packages: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} dependencies: protocols: 2.0.1 - dev: false + dev: true /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} - dev: false + dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -2342,7 +2349,7 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false + dev: true /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -2362,7 +2369,7 @@ packages: /iterate-object@1.3.4: resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} - dev: false + dev: true /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} @@ -2461,7 +2468,7 @@ packages: resolution: {integrity: sha512-T0NK99pHnkimldr1WUqvbGV1oWDku/xC9J/OqzJFsV1jeOS6Bwl8W7vkeQIBqwiON9dTALws+rX/XPMQqWerDQ==} dependencies: typpy: 2.3.13 - dev: false + dev: true /load-json-file@7.0.1: resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} @@ -2486,7 +2493,7 @@ packages: /lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} - dev: false + dev: true /lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} @@ -2577,6 +2584,7 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} @@ -2648,7 +2656,7 @@ packages: /node-status-codes@1.0.0: resolution: {integrity: sha512-1cBMgRxdMWE8KeWCqk2RIOrvUb0XCwYfEsY5/y2NlXyq4Y/RumnOZvTj4Nbr77+Vb2C+kyBoRTdkNOS8L3d/aQ==} engines: {node: '>=0.10.0'} - dev: false + dev: true /nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} @@ -2657,7 +2665,7 @@ packages: /noop6@1.0.9: resolution: {integrity: sha512-DB3Hwyd89dPr5HqEPg3YHjzvwh/mCqizC1zZ8vyofqc+TQRyPDnT4wgXXbLGF4z9YAzwwTLi8pNLhGqcbSjgkA==} - dev: false + dev: true /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -2674,7 +2682,7 @@ packages: resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 - dev: false + dev: true /npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} @@ -2697,17 +2705,18 @@ packages: dependencies: iterate-object: 1.3.4 ul: 5.2.15 - dev: false + dev: true /obj-def@1.0.9: resolution: {integrity: sha512-bQ4ya3VYD6FAA1+s6mEhaURRHSmw4+sKaXE6UyXZ1XDYc5D+c7look25dFdydmLd18epUegh398gdDkMUZI9xg==} dependencies: deffy: 2.2.4 - dev: false + dev: true /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + dev: true /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} @@ -2776,7 +2785,7 @@ packages: dependencies: obj-def: 1.0.9 sliced: 1.0.1 - dev: false + dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -2800,7 +2809,7 @@ packages: /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: false + dev: true /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -2833,7 +2842,7 @@ packages: resolution: {integrity: sha512-uNu7f6Ef7tQHZRnkyVnCtzdSYVN9uBtge/sG7wzcUaawFWkPYUq67iXxRGrQSg/q0tzxIB8jSyIYUKjG2Jn//A==} dependencies: abs: 1.3.14 - dev: false + dev: true /package-json@2.4.0: resolution: {integrity: sha512-PRg65iXMTt/uK8Rfh5zvzkUbfAPitF17YaCY+IbHsYgksiLvtzWWTUildHth3mVaZ7871OJ7gtP4LBRBlmAdXg==} @@ -2843,7 +2852,7 @@ packages: registry-auth-token: 3.4.0 registry-url: 3.1.0 semver: 5.7.2 - dev: false + dev: true /package.json@2.0.1: resolution: {integrity: sha512-pSxZ6XR5yEawRN2ekxx9IKgPN5uNAYco7MCPxtBEWMKO3UKWa1X2CtQMzMgloeGj2g2o6cue3Sb5iPkByIJqlw==} @@ -2852,7 +2861,7 @@ packages: git-package-json: 1.4.10 git-source: 1.1.10 package-json: 2.4.0 - dev: false + dev: true /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -2866,7 +2875,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: error-ex: 1.3.2 - dev: false + dev: true /parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} @@ -2878,7 +2887,7 @@ packages: dependencies: is-ssh: 1.4.0 protocols: 1.4.8 - dev: false + dev: true /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -2902,6 +2911,7 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true /path-scurry@1.10.2: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} @@ -2936,12 +2946,12 @@ packages: engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 - dev: false + dev: true /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - dev: false + dev: true /plur@5.1.0: resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} @@ -2963,7 +2973,7 @@ packages: /prepend-http@1.0.4: resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} engines: {node: '>=0.10.0'} - dev: false + dev: true /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} @@ -2987,15 +2997,15 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false + dev: true /protocols@1.4.8: resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==} - dev: false + dev: true /protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - dev: false + dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -3010,14 +3020,14 @@ packages: resolution: {integrity: sha512-xesd+RHCpymPCYd9DvDvUr1w1IieSChkqYF1EpuAYrvCfLXji9NP36DvyYZJZZB5soVDvZ0WUtBoZaU1g5Yt9A==} dependencies: w-json: 1.3.10 - dev: false + dev: true /r-package-json@1.0.9: resolution: {integrity: sha512-G4Vpf1KImWmmPFGdtWQTU0L9zk0SjqEC4qs/jE7AQ+Ylmr5kizMzGeC4wnHp5+ijPqNN+2ZPpvyjVNdN1CDVcg==} dependencies: package-json-path: 1.0.9 r-json: 1.3.0 - dev: false + dev: true /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -3027,7 +3037,7 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false + dev: true /read-all-stream@3.1.0: resolution: {integrity: sha512-DI1drPHbmBcUDWrJ7ull/F2Qb8HkwBncVx8/RpKYFSIACYaVRQReISYPdZz/mt1y1+qMCOrfReTopERmaxtP6w==} @@ -3035,7 +3045,7 @@ packages: dependencies: pinkie-promise: 2.0.1 readable-stream: 2.3.8 - dev: false + dev: true /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -3047,7 +3057,7 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false + dev: true /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -3077,14 +3087,14 @@ packages: dependencies: rc: 1.2.8 safe-buffer: 5.2.1 - dev: false + dev: true /registry-url@3.1.0: resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} engines: {node: '>=0.10.0'} dependencies: rc: 1.2.8 - dev: false + dev: true /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -3115,6 +3125,7 @@ packages: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -3138,6 +3149,7 @@ packages: /rpc-websockets@7.11.0: resolution: {integrity: sha512-IkLYjayPv6Io8C/TdCL5gwgzd1hFz2vmBZrjMw/SPEXo51ETOhnzgS4Qy5GWi2JQN7HKHa66J3+2mv0fgNh/7w==} + deprecated: deprecate 7.11.0 dependencies: eventemitter3: 4.0.7 uuid: 8.3.2 @@ -3165,9 +3177,11 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} @@ -3181,7 +3195,7 @@ packages: /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - dev: false + dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -3280,29 +3294,29 @@ packages: /sliced@1.0.1: resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==} - dev: false + dev: true /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.17 - dev: false + dev: true /spdx-exceptions@2.5.0: resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - dev: false + dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.17 - dev: false + dev: true /spdx-license-ids@3.0.17: resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} - dev: false + dev: true /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -3373,6 +3387,7 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 + dev: true /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -3401,7 +3416,7 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: false + dev: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -3432,6 +3447,7 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: true /synckit@0.8.8: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} @@ -3478,14 +3494,14 @@ packages: /timed-out@3.1.3: resolution: {integrity: sha512-3RB4qgvPkxF/FGPnrzaWLhW1rxNK2sdH0mFjbhxkfTR6QXvcM3EtYm9L44UrhODZrZ+yhDXeMncLqi8QXn2MJg==} engines: {node: '>=0.10.0'} - dev: false + dev: true /tmp@0.0.28: resolution: {integrity: sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg==} engines: {node: '>=0.4.0'} dependencies: os-tmpdir: 1.0.2 - dev: false + dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -3591,14 +3607,14 @@ packages: resolution: {integrity: sha512-vOxIcQz9sxHi+rT09SJ5aDgVgrPppQjwnnayTrMye1ODaU8gIZTDM19t9TxmEElbMihx2Nq/0/b/MtyKfayRqA==} dependencies: function.name: 1.0.13 - dev: false + dev: true /ul@5.2.15: resolution: {integrity: sha512-svLEUy8xSCip5IWnsRa0UOg+2zP0Wsj4qlbjTmX6GJSmvKMHADBuHOm1dpNkWqWPIGuVSqzUkV3Cris5JrlTRQ==} dependencies: deffy: 2.2.4 typpy: 2.3.13 - dev: false + dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -3611,6 +3627,7 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true /unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} @@ -3620,7 +3637,7 @@ packages: /unzip-response@1.0.2: resolution: {integrity: sha512-pwCcjjhEcpW45JZIySExBHYv5Y9EeL2OIGEfrSKp2dMUFGFv4CpvZkwJbVge8OvGH2BNNtJBx67DuKuJhf+N5Q==} engines: {node: '>=0.10'} - dev: false + dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3633,7 +3650,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: prepend-http: 1.0.4 - dev: false + dev: true /utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} @@ -3645,6 +3662,7 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} @@ -3656,11 +3674,11 @@ packages: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: false + dev: true /w-json@1.3.10: resolution: {integrity: sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==} - dev: false + dev: true /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -3803,3 +3821,7 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false diff --git a/src/das.ts b/src/das.ts index f579b60..9a08f18 100644 --- a/src/das.ts +++ b/src/das.ts @@ -3,28 +3,28 @@ import { DasApiAssetInterface, SearchAssetsRpcInput, } from '@metaplex-foundation/digital-asset-standard-api'; -import { AssetV1, CollectionV1 } from '@metaplex-foundation/mpl-core'; +import { AssetV1, CollectionV1, deriveAssetPluginsWithFetch } from '@metaplex-foundation/mpl-core'; import { MPL_CORE_ASSET, MPL_CORE_COLLECTION } from './constants'; -import { Pagination } from './types'; +import { AssetOptions, Pagination } from './types'; import { dasAssetToCoreAssetOrCollection } from './helpers'; async function searchAssets( context: Umi, input: Omit & { interface?: typeof MPL_CORE_ASSET; - } + } & AssetOptions ): Promise; async function searchAssets( context: Umi, input: Omit & { interface?: typeof MPL_CORE_COLLECTION; - } + } & AssetOptions ): Promise; async function searchAssets( context: Umi, input: Omit & { interface?: typeof MPL_CORE_ASSET | typeof MPL_CORE_COLLECTION; - } + } & AssetOptions ) { const dasAssets = await context.rpc.searchAssets({ ...input, @@ -32,34 +32,41 @@ async function searchAssets( burnt: false, }); - return dasAssets.items.map((dasAsset) => + const mappedAssets = dasAssets.items.map((dasAsset) => dasAssetToCoreAssetOrCollection(dasAsset) ); + + if (input.interface === MPL_CORE_COLLECTION || input.skipDerivePlugins) { + return mappedAssets; + } + + return deriveAssetPluginsWithFetch(context, mappedAssets as AssetV1[]); } function searchCollections( context: Umi, - input: Omit + input: Omit & AssetOptions ) { return searchAssets(context, { ...input, interface: MPL_CORE_COLLECTION }); } -function fetchAssetsByOwner( +function getAssetsByOwner( context: Umi, input: { owner: PublicKey; - } & Pagination + } & Pagination & AssetOptions ) { return searchAssets(context, { + ...input, owner: input.owner, }); } -function fetchAssetsByAuthority( +function getAssetsByAuthority( context: Umi, input: { authority: PublicKey; - } & Pagination + } & Pagination & AssetOptions ) { return searchAssets(context, { ...input, @@ -67,11 +74,11 @@ function fetchAssetsByAuthority( }); } -function fetchAssetsByCollection( +function getAssetsByCollection( context: Umi, input: { collection: PublicKey; - } & Pagination + } & Pagination & AssetOptions ) { return searchAssets(context, { ...input, @@ -79,11 +86,11 @@ function fetchAssetsByCollection( }); } -function fetchCollectionsByUpdateAuthority( +function getCollectionsByUpdateAuthority( context: Umi, input: { updateAuthority: PublicKey; - } & Pagination + } & Pagination & AssetOptions ) { return searchCollections(context, { ...input, @@ -94,8 +101,8 @@ function fetchCollectionsByUpdateAuthority( export const das = { searchAssets, searchCollections, - fetchAssetsByOwner, - fetchAssetsByAuthority, - fetchAssetsByCollection, - fetchCollectionsByUpdateAuthority, + getAssetsByOwner, + getAssetsByAuthority, + getAssetsByCollection, + getCollectionsByUpdateAuthority, } as const; diff --git a/src/helpers.ts b/src/helpers.ts index 5cd091a..237c4a7 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -17,7 +17,7 @@ import { ImmutableMetadata, Key, mapPlugin, - BaseMasterEdition, + MasterEdition, MPL_CORE_PROGRAM_ID, PermanentBurnDelegate, PermanentFreezeDelegate, @@ -29,6 +29,12 @@ import { RuleSet, TransferDelegate, UpdateDelegate, + ExternalPluginAdaptersList, + ExtraAccount, + LifecycleChecks, + CheckResult, + Autograph, + VerifiedCreators, } from '@metaplex-foundation/mpl-core'; import { AccountHeader, @@ -101,9 +107,7 @@ function getRuleSet(dasRuleSet: string | Record): RuleSet { const ruleSetKind = isRuleSetString ? dasRuleSet : Object.keys(dasRuleSet)[0]; const ruleSetData: PublicKey[] = !isRuleSetString && ruleSetKind - ? dasRuleSet[ruleSetKind].map((bytes: Uint8Array) => - publicKey(new Uint8Array(bytes)) - ) + ? dasRuleSet[ruleSetKind].map((bytes: any) => publicKey(typeof bytes === 'string' ? bytes : new Uint8Array(bytes))) : []; // RuleSet has both __kind and type for backwards compatibility @@ -129,6 +133,118 @@ function getRuleSet(dasRuleSet: string | Record): RuleSet { }; } +function parseExtraAccount(data: any): ExtraAccount | undefined { + let result: ExtraAccount | undefined + Object.keys(data).forEach((key) => { + const acc = data[key]; + const type = convertSnakeCase(key, 'pascal'); + switch (type) { + case 'PreconfiguredProgram': + case 'PreconfiguredCollection': + case 'PreconfiguredOwner': + case 'PreconfiguredRecipient': + case 'PreconfiguredAsset': + result = { + type, + isSigner: acc.is_signer, + isWritable: acc.is_writable, + } + break; + case 'Address': + result = { + type, + isSigner: acc.is_signer, + isWritable: acc.is_writable, + address: publicKey(acc.address), + } + break; + case 'CustomPda': + result = { + type, + isSigner: acc.is_signer, + isWritable: acc.is_writable, + seeds: acc.seeds?.map((seed: any) => { + if (typeof seed === 'string') { + return { + type: seed, + } + } + if (seed.address) { + return { + type: 'Address', + pubkey: publicKey(seed.address), + } + } + if (seed.bytes) { + return { + type: 'Bytes', + bytes: new Uint8Array(seed.bytes), + } + } + return null + }), + customProgramId: acc.custom_program_id ? publicKey(acc.custom_program_id) : undefined, + } + break; + default: + } + }) + + return result +} + +function parseLifecycleChecks(data: any): LifecycleChecks { + return Object.keys(data).reduce((acc: LifecycleChecks, key) => ({ + ...acc, + [key]: data[key].map((check: string) => { + switch (check) { + case 'CanListen': + return CheckResult.CAN_LISTEN; + case 'CanApprove': + return CheckResult.CAN_APPROVE; + case 'CanReject': + default: + return CheckResult.CAN_REJECT; + } + }) + }), {}) +} + +function dasExternalPluginsToCoreExternalPlugins( + externalPlugins: Record[] +) { + return externalPlugins.reduce((acc: ExternalPluginAdaptersList, externalPlugin) => { + const { authority, offset, type, adapter_config: adapterConfig } = externalPlugin; + const authorityAddress = authority?.address; + + if (type === 'Oracle') { + if (!acc.oracles) { + acc.oracles = []; + } + + acc.oracles.push({ + type: 'Oracle', + authority: { + type: authority.type, + ...(authorityAddress ? { address: publicKey(authorityAddress) } : {}), + }, + baseAddress: adapterConfig.base_address, + resultsOffset: typeof adapterConfig.results_offset === 'string' ? { + type: convertSnakeCase(adapterConfig.results_offset, 'pascal') as any + } : { + type: 'Custom', + offset: BigInt(adapterConfig.results_offset.custom) + }, + baseAddressConfig: adapterConfig.base_address_config ? parseExtraAccount(adapterConfig.base_address_config) : undefined, + lifecycleChecks: externalPlugin.lifecycle_checks ? parseLifecycleChecks(externalPlugin.lifecycle_checks): undefined, + offset: BigInt(offset), + }); + } + + return acc; + }, {}); +} + function dasPluginDataToCorePluginData( dasPluginData: Record ): @@ -142,9 +258,12 @@ function dasPluginDataToCorePluginData( | PermanentTransferDelegate | PermanentBurnDelegate | Edition - | BaseMasterEdition + | MasterEdition | AddBlocker - | ImmutableMetadata { + | ImmutableMetadata + | Autograph + | VerifiedCreators + { // TODO: Refactor when DAS types are defined return (({ basis_points, @@ -157,6 +276,7 @@ function dasPluginDataToCorePluginData( max_supply, name, uri, + signatures }) => ({ ...(basis_points !== undefined ? { basisPoints: basis_points } : {}), ...(creators !== undefined @@ -177,6 +297,7 @@ function dasPluginDataToCorePluginData( ...(max_supply !== undefined ? { maxSupply: max_supply } : {}), ...(name !== undefined ? { name } : {}), ...(uri !== undefined ? { uri } : {}), + ...(signatures !== undefined ? { signatures } : {}) }))(dasPluginData); } @@ -253,6 +374,7 @@ export function dasAssetToCoreAssetOrCollection( lamports: lamps, rent_epoch: rentEpoch, mpl_core_info: mplCoreInfo, + external_plugins: externalPlugins, } = dasAsset as DasApiAsset & { plugins: Record; unknown_plugins?: Array>; @@ -264,6 +386,7 @@ export function dasAssetToCoreAssetOrCollection( current_size?: number; plugins_json_version: number; }; + external_plugins: Record[]; }; const { num_minted: numMinted = 0, current_size: currentSize = 0 } = mplCoreInfo ?? {}; @@ -274,6 +397,7 @@ export function dasAssetToCoreAssetOrCollection( name, ...getAccountHeader(executable, lamps, rentEpoch), ...dasPluginsToCorePlugins(plugins), + ...(externalPlugins !== undefined ? dasExternalPluginsToCoreExternalPlugins(externalPlugins) : {}), ...handleUnknownPlugins(unknownPlugins), // pluginHeader: // TODO: Reconstruct }; diff --git a/src/types.ts b/src/types.ts index 0fda837..60d2b20 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4,3 +4,7 @@ export type Pagination = Pick< SearchAssetsRpcInput, 'sortBy' | 'limit' | 'page' | 'before' | 'after' >; + +export type AssetOptions = { + skipDerivePlugins?: boolean; +} \ No newline at end of file diff --git a/test/das.test.ts b/test/das.test.ts index a6e87b1..c82ed3b 100644 --- a/test/das.test.ts +++ b/test/das.test.ts @@ -1,5 +1,12 @@ import test from 'ava'; -import { publicKey } from '@metaplex-foundation/umi'; +import { publicKey } from '@metaplex-foundation/umi'; +import { + AssetV1, + CollectionV1, + fetchAsset, + fetchAssetV1, + fetchCollectionV1, +} from '@metaplex-foundation/mpl-core'; import { das } from '../src'; import { createUmiWithDas, @@ -21,12 +28,6 @@ import { dasTestAssetInCollectionPubKey, dasTestCollection2PubKey, } from './_expectedData'; -import { - AssetV1, - CollectionV1, - fetchAssetV1, - fetchCollectionV1, -} from '@metaplex-foundation/mpl-core'; test('das: it can search assets', async (t) => { // Given an Umi instance with DAS API @@ -36,6 +37,7 @@ test('das: it can search assets', async (t) => { const assets = await das.searchAssets(umi, { owner: dasTestAsset1Owner, interface: 'MplCoreAsset', + skipDerivePlugins: true, }); // The fetched assets structure is the same as with the MPL Core fetchAssetV1 @@ -49,8 +51,9 @@ test('das: it can fetch assets by owner', async (t) => { const umi = createUmiWithDas(DAS_API_ENDPOINT); // Then assets are fetched via the MPL Core DAS helper - const assets = await das.fetchAssetsByOwner(umi, { + const assets = await das.getAssetsByOwner(umi, { owner: dasTestAsset1Owner, + skipDerivePlugins: true, }); // The fetched assets structure is the same as with the MPL Core fetchAssetV1 @@ -63,8 +66,9 @@ test('das: it can fetch assets by authority', async (t) => { const umi = createUmiWithDas(DAS_API_ENDPOINT); // Then assets are fetched via the MPL Core DAS helper - const assets = await das.fetchAssetsByAuthority(umi, { + const assets = await das.getAssetsByAuthority(umi, { authority: dasTestAsset1Owner, + skipDerivePlugins: true, }); // The fetched assets structure is the same as with the MPL Core fetchAssetV1 @@ -77,8 +81,9 @@ test('das: it can fetch assets by authority if authority is not owner', async (t const umi = createUmiWithDas(DAS_API_ENDPOINT); // Then assets are fetched via the MPL Core DAS helper - const assets = await das.fetchAssetsByAuthority(umi, { + const assets = await das.getAssetsByAuthority(umi, { authority: dasTestAsset2UpdateAuthority, + skipDerivePlugins: true, }); // The fetched assets structure is the same as with the MPL Core fetchAssetV1 @@ -91,8 +96,9 @@ test('das: it can fetch assets by collection', async (t) => { const umi = createUmiWithDas(DAS_API_ENDPOINT); // Then assets are fetched via the MPL Core DAS helper - const assets = await das.fetchAssetsByCollection(umi, { + const assets = await das.getAssetsByCollection(umi, { collection: dasTestCollection1PubKey, + skipDerivePlugins: true, }); // The fetched assets structure is the same as with the MPL Core fetchAssetV1 @@ -107,8 +113,9 @@ test('das: it can fetch collections by update authority', async (t) => { const umi = createUmiWithDas(DAS_API_ENDPOINT); // Then collections are fetched via the MPL Core DAS helper - const collections = await das.fetchCollectionsByUpdateAuthority(umi, { + const collections = await das.getCollectionsByUpdateAuthority(umi, { updateAuthority: publicKey(dasTestAsset1Owner), + skipDerivePlugins: true, }); // One of the fetched collections structure is the same as with the MPL Core fetchCollectionV1 @@ -123,8 +130,9 @@ test('das: it can fetch collections by update authority if update authority is n const umi = createUmiWithDas(DAS_API_ENDPOINT); // Then collections are fetched via the MPL Core DAS helper - const collections = await das.fetchCollectionsByUpdateAuthority(umi, { + const collections = await das.getCollectionsByUpdateAuthority(umi, { updateAuthority: publicKey(dasTestCollection2UpdateAuthority), + skipDerivePlugins: true, }); // One of the fetched collections structure is the same as with the MPL Core fetchCollectionV1 @@ -140,8 +148,9 @@ test('das: it can convert a DAS asset with the edition plugin to the MPL Core as const assetPubKey = publicKey('94tbAopaajgjRndvvK31TBqNTkNbJdzifwW4ec7iqpYh'); // Then the asset data parsed from DAS - const assets = await das.fetchAssetsByOwner(umi, { + const assets = await das.getAssetsByOwner(umi, { owner: publicKey('EBgC18R6zKNic1CLYKYEy3SMSz4zweymeqrMHkXeqpag'), + skipDerivePlugins: true, }); const assetDas = assets.find((a) => a.publicKey === assetPubKey) ?? {}; prepareAssetForComparison(assetDas as AssetV1, false); @@ -162,8 +171,9 @@ test('das: it can convert a DAS collection with the master edition plugin to the ); // Then the collection data parsed from DAS - const collections = await das.fetchCollectionsByUpdateAuthority(umi, { + const collections = await das.getCollectionsByUpdateAuthority(umi, { updateAuthority: publicKey('EBgC18R6zKNic1CLYKYEy3SMSz4zweymeqrMHkXeqpag'), + skipDerivePlugins: true, }); const collectionDas = collections.find((a) => a.publicKey === collectionPubKey) ?? {}; @@ -177,7 +187,37 @@ test('das: it can convert a DAS collection with the master edition plugin to the t.like(collectionDas, collectionMplCore); }); + +test('das: it can fetch asset with oracle', async (t) => { + const umi = createUmiWithDas(DAS_API_ENDPOINT); + const assets = await das.searchAssets(umi, { + owner: publicKey('APrZTeVysBJqAznfLXS71NAzjr2fCVTSF1A66MeErzM7') + }) + + const asset = assets.find((a) => a.publicKey === "AFENffFzHQaT1c9GzLfJjUZPY4ZYbHBj7NKA9UgMv6RT")! + prepareAssetForComparison(asset, false) + + const mplCoreAsset = await fetchAssetV1(umi, asset.publicKey); + prepareAssetForComparison(mplCoreAsset) + + t.like(asset, mplCoreAsset) +}); + +test('das: it can fetch derived asset', async (t) => { + const umi = createUmiWithDas(DAS_API_ENDPOINT); + const assets = await das.getAssetsByCollection(umi, { + collection: publicKey('4waGHv3uwEvvZ35VNh8xZrVAkuDr6tEx8YnCvxYN4A7A') + }) + + const asset = assets.find((a) => a.publicKey === "9KvAqZVYJbXZzNvaV1HhxvybD6xfguztQwnqhkmzxWV3")! + prepareAssetForComparison(asset, false) + + const mplCoreAsset = await fetchAsset(umi, asset.publicKey); + prepareAssetForComparison(mplCoreAsset) + + t.like(asset, mplCoreAsset) +}); + // TODO -test.skip('das: oracle', async (t) => {}); test.skip('das: lifecycle hooks', async (t) => {}); test.skip('das: data store', async (t) => {});