From a1ec10c504608c114ca1c682a008e35bee467707 Mon Sep 17 00:00:00 2001 From: Neil Campbell Date: Wed, 23 Apr 2025 14:41:58 +0800 Subject: [PATCH 01/10] fix: build issue when run on node22 (#391) --- package-lock.json | 237 ++++++++++++++++++++++++++++------------------ package.json | 10 +- 2 files changed, 150 insertions(+), 97 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac46e59c..9e498790 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,9 +17,9 @@ "@commitlint/config-conventional": "^19.5.0", "@eslint/js": "^9.15.0", "@makerx/prettier-config": "^2.0.0", - "@rollup/plugin-commonjs": "^28.0.0", + "@rollup/plugin-commonjs": "^28.0.3", "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-typescript": "^12.1.0", + "@rollup/plugin-typescript": "^12.1.2", "@tsconfig/node20": "^20.1.4", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^8.8.1", @@ -37,7 +37,7 @@ "prettier": "^3.3.3", "replace-in-files-cli": "^3.0.0", "rimraf": "^6.0.1", - "rollup": "^4.24.0", + "rollup": "^4.40.0", "semantic-release": "^24.1.2", "tiny-invariant": "^1.3.1", "ts-node": "^10.9.1", @@ -1665,10 +1665,11 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "28.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.1.tgz", - "integrity": "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==", + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.3.tgz", + "integrity": "sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", @@ -1717,10 +1718,11 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz", - "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -1741,10 +1743,11 @@ } }, "node_modules/@rollup/plugin-typescript": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.1.tgz", - "integrity": "sha512-t7O653DpfB5MbFrqPe/VcKFFkvRuFNp9qId3xq4Eth5xlyymzxNpye2z8Hrl0RIMuXTSr5GGcFpkdlMeacUiFQ==", + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz", + "integrity": "sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.1.0", "resolve": "^1.22.1" @@ -1789,234 +1792,280 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz", - "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz", - "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz", - "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz", - "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz", - "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz", - "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz", - "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz", - "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz", - "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz", - "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz", - "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz", - "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz", - "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz", - "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz", - "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz", - "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz", - "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz", - "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2567,10 +2616,11 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -10726,12 +10776,13 @@ } }, "node_modules/rollup": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz", - "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -10741,24 +10792,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.27.4", - "@rollup/rollup-android-arm64": "4.27.4", - "@rollup/rollup-darwin-arm64": "4.27.4", - "@rollup/rollup-darwin-x64": "4.27.4", - "@rollup/rollup-freebsd-arm64": "4.27.4", - "@rollup/rollup-freebsd-x64": "4.27.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.27.4", - "@rollup/rollup-linux-arm-musleabihf": "4.27.4", - "@rollup/rollup-linux-arm64-gnu": "4.27.4", - "@rollup/rollup-linux-arm64-musl": "4.27.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4", - "@rollup/rollup-linux-riscv64-gnu": "4.27.4", - "@rollup/rollup-linux-s390x-gnu": "4.27.4", - "@rollup/rollup-linux-x64-gnu": "4.27.4", - "@rollup/rollup-linux-x64-musl": "4.27.4", - "@rollup/rollup-win32-arm64-msvc": "4.27.4", - "@rollup/rollup-win32-ia32-msvc": "4.27.4", - "@rollup/rollup-win32-x64-msvc": "4.27.4", + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", "fsevents": "~2.3.2" } }, diff --git a/package.json b/package.json index 26c74024..d3ae73ba 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "scripts": { "build": "run-s build:*", "build:0-clean": "rimraf dist coverage", - "build:1-compile": "rollup -c --configPlugin typescript", + "build:1-compile": "rollup -c --configPlugin typescript --configImportAttributesKey with", "build:3-copy-pkg-json": "npx --yes @makerx/ts-toolkit@4.0.0-beta.22 copy-package-json --custom-sections module main type types exports", "build:4-copy-readme": "cpy README.md LICENSE dist", "build:5-fix-readme-links": "replace-in-files --string '(./' --replacement '(https://github.com/algorandfoundation/algokit-utils-ts/blob/main/' dist/README.md", @@ -72,9 +72,9 @@ "@commitlint/config-conventional": "^19.5.0", "@eslint/js": "^9.15.0", "@makerx/prettier-config": "^2.0.0", - "@rollup/plugin-commonjs": "^28.0.0", + "@rollup/plugin-commonjs": "^28.0.3", "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-typescript": "^12.1.0", + "@rollup/plugin-typescript": "^12.1.2", "@tsconfig/node20": "^20.1.4", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^8.8.1", @@ -92,7 +92,7 @@ "prettier": "^3.3.3", "replace-in-files-cli": "^3.0.0", "rimraf": "^6.0.1", - "rollup": "^4.24.0", + "rollup": "^4.40.0", "semantic-release": "^24.1.2", "tiny-invariant": "^1.3.1", "ts-node": "^10.9.1", @@ -171,4 +171,4 @@ "@semantic-release/github" ] } -} +} \ No newline at end of file From 403a1a269bf5b32487457559be36b8af677612c7 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Fri, 9 May 2025 08:40:47 -0400 Subject: [PATCH 02/10] feat: registerErrorTransformer in composer (#371) * fix: align AlgorandClientInterface with AlgorandClient (#355) * remove implements AlgorandClientInterface for implementation * generate documentation * rename instance_of.ts to instance-of.ts * typedoc * feat: add registerErrorCallback function to composer * adding registerErrorCallback to AlgorandClient * register error map functions when an algorand client is used with a app client * add test to ensure that AppClient registers the error map function * rm unused import, generate docs * ErrorMapFunction -> ErrorTransformer * update docstrings * use object.assign to avoid any cast Co-authored-by: Tristan Menzel * don't await sync iterable Co-authored-by: Tristan Menzel * check error message first before resorting to template literal * Check error instance before checking for match * typedoc * fixture in describe block * use set instead of map * ErrorTransformer always returns unknown * cleanup, renaming, comments, etc * don't use toString to check for app-specific error * enforce TransformerError arg/return type as Error * pre-commit * const cb -> const transformer * remove note about uknown type Co-authored-by: Tristan Menzel * remove unnecessary Set.values() * typedoc * add BadTransformer Error * e -> originalError * typedoc * merge main * ErrorTransformerError and minor touch-ups * fix typos Co-authored-by: Tristan Menzel * rename InvalidErrorTransformerValue * add docstring to InterfaceOf * typedoc * chore: npx audit fix --------- Co-authored-by: Tristan Menzel Co-authored-by: Tristan Menzel --- docs/code/README.md | 2 + .../types_algorand_client.AlgorandClient.md | 104 ++++++++--- .../classes/types_app_client.AppClient.md | 98 +++++------ .../types_app_client.ApplicationClient.md | 80 ++++----- .../types_composer.TransactionComposer.md | 165 ++++++++++++------ .../types_composer.BuiltTransactions.md | 6 +- docs/code/modules/types_composer.md | 35 +++- docs/code/modules/types_composer_spec.md | 3 + docs/code/modules/types_instance_of.md | 27 +++ package-lock.json | 6 +- package.json | 2 +- src/types/algorand-client.ts | 23 ++- src/types/app-client.ts | 90 +++++----- src/types/app-factory-and-client.spec.ts | 26 ++- src/types/composer.spec.ts | 67 +++++++ src/types/composer.ts | 102 ++++++++--- src/types/instance-of.ts | 6 + 17 files changed, 593 insertions(+), 249 deletions(-) create mode 100644 docs/code/modules/types_composer_spec.md create mode 100644 docs/code/modules/types_instance_of.md create mode 100644 src/types/composer.spec.ts create mode 100644 src/types/instance-of.ts diff --git a/docs/code/README.md b/docs/code/README.md index 53ece411..1383595d 100644 --- a/docs/code/README.md +++ b/docs/code/README.md @@ -36,12 +36,14 @@ - [types/client-manager](modules/types_client_manager.md) - [types/client-manager.spec](modules/types_client_manager_spec.md) - [types/composer](modules/types_composer.md) +- [types/composer.spec](modules/types_composer_spec.md) - [types/config](modules/types_config.md) - [types/debugging](modules/types_debugging.md) - [types/dispenser-client](modules/types_dispenser_client.md) - [types/dispenser-client.spec](modules/types_dispenser_client_spec.md) - [types/expand](modules/types_expand.md) - [types/indexer](modules/types_indexer.md) +- [types/instance-of](modules/types_instance_of.md) - [types/kmd-account-manager](modules/types_kmd_account_manager.md) - [types/lifecycle-events](modules/types_lifecycle_events.md) - [types/logging](modules/types_logging.md) diff --git a/docs/code/classes/types_algorand_client.AlgorandClient.md b/docs/code/classes/types_algorand_client.AlgorandClient.md index f2ef1ad5..a1f66e7a 100644 --- a/docs/code/classes/types_algorand_client.AlgorandClient.md +++ b/docs/code/classes/types_algorand_client.AlgorandClient.md @@ -23,6 +23,7 @@ A client that brokers easy access to Algorand functionality. - [\_cachedSuggestedParamsTimeout](types_algorand_client.AlgorandClient.md#_cachedsuggestedparamstimeout) - [\_clientManager](types_algorand_client.AlgorandClient.md#_clientmanager) - [\_defaultValidityWindow](types_algorand_client.AlgorandClient.md#_defaultvaliditywindow) +- [\_errorTransformers](types_algorand_client.AlgorandClient.md#_errortransformers) - [\_transactionCreator](types_algorand_client.AlgorandClient.md#_transactioncreator) - [\_transactionSender](types_algorand_client.AlgorandClient.md#_transactionsender) @@ -40,12 +41,14 @@ A client that brokers easy access to Algorand functionality. - [getSuggestedParams](types_algorand_client.AlgorandClient.md#getsuggestedparams) - [newGroup](types_algorand_client.AlgorandClient.md#newgroup) +- [registerErrorTransformer](types_algorand_client.AlgorandClient.md#registererrortransformer) - [setDefaultSigner](types_algorand_client.AlgorandClient.md#setdefaultsigner) - [setDefaultValidityWindow](types_algorand_client.AlgorandClient.md#setdefaultvaliditywindow) - [setSigner](types_algorand_client.AlgorandClient.md#setsigner) - [setSignerFromAccount](types_algorand_client.AlgorandClient.md#setsignerfromaccount) - [setSuggestedParamsCache](types_algorand_client.AlgorandClient.md#setsuggestedparamscache) - [setSuggestedParamsCacheTimeout](types_algorand_client.AlgorandClient.md#setsuggestedparamscachetimeout) +- [unregisterErrorTransformer](types_algorand_client.AlgorandClient.md#unregistererrortransformer) - [defaultLocalNet](types_algorand_client.AlgorandClient.md#defaultlocalnet) - [fromClients](types_algorand_client.AlgorandClient.md#fromclients) - [fromConfig](types_algorand_client.AlgorandClient.md#fromconfig) @@ -71,7 +74,7 @@ A client that brokers easy access to Algorand functionality. #### Defined in -[src/types/algorand-client.ts:33](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L33) +[src/types/algorand-client.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L40) ## Properties @@ -165,6 +168,20 @@ ___ ___ +### \_errorTransformers + +• `Private` **\_errorTransformers**: `Set`\<[`ErrorTransformer`](../modules/types_composer.md#errortransformer)\> + +A set of error transformers to use when an error is caught in simulate or execute +`registerErrorTransformer` and `unregisterErrorTransformer` can be used to add and remove +error transformers from the set. + +#### Defined in + +[src/types/algorand-client.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L38) + +___ + ### \_transactionCreator • `Private` **\_transactionCreator**: [`AlgorandClientTransactionCreator`](types_algorand_client_transaction_creator.AlgorandClientTransactionCreator.md) @@ -205,7 +222,7 @@ const accountManager = AlgorandClient.mainNet().account; #### Defined in -[src/types/algorand-client.ts:175](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L175) +[src/types/algorand-client.ts:182](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L182) ___ @@ -229,7 +246,7 @@ const appManager = AlgorandClient.mainNet().app; #### Defined in -[src/types/algorand-client.ts:195](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L195) +[src/types/algorand-client.ts:202](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L202) ___ @@ -253,7 +270,7 @@ const deployer = AlgorandClient.mainNet().appDeployer; #### Defined in -[src/types/algorand-client.ts:205](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L205) +[src/types/algorand-client.ts:212](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L212) ___ @@ -277,7 +294,7 @@ const assetManager = AlgorandClient.mainNet().asset; #### Defined in -[src/types/algorand-client.ts:185](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L185) +[src/types/algorand-client.ts:192](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L192) ___ @@ -301,7 +318,7 @@ const clientManager = AlgorandClient.mainNet().client; #### Defined in -[src/types/algorand-client.ts:165](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L165) +[src/types/algorand-client.ts:172](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L172) ___ @@ -329,7 +346,7 @@ const payment = await AlgorandClient.mainNet().createTransaction.payment({ #### Defined in -[src/types/algorand-client.ts:250](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L250) +[src/types/algorand-client.ts:269](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L269) ___ @@ -357,7 +374,7 @@ const result = await AlgorandClient.mainNet().send.payment({ #### Defined in -[src/types/algorand-client.ts:236](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L236) +[src/types/algorand-client.ts:255](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L255) ## Methods @@ -381,7 +398,7 @@ const params = await AlgorandClient.mainNet().getSuggestedParams(); #### Defined in -[src/types/algorand-client.ts:144](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L144) +[src/types/algorand-client.ts:151](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L151) ___ @@ -406,7 +423,30 @@ const result = await composer.addTransaction(payment).send() #### Defined in -[src/types/algorand-client.ts:216](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L216) +[src/types/algorand-client.ts:234](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L234) + +___ + +### registerErrorTransformer + +▸ **registerErrorTransformer**(`transformer`): `void` + +Register a function that will be used to transform an error caught when simulating or executing +composed transaction groups made from `newGroup` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `transformer` | [`ErrorTransformer`](../modules/types_composer.md#errortransformer) | + +#### Returns + +`void` + +#### Defined in + +[src/types/algorand-client.ts:220](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L220) ___ @@ -437,7 +477,7 @@ const algorand = AlgorandClient.mainNet().setDefaultSigner(signer) #### Defined in -[src/types/algorand-client.ts:67](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L67) +[src/types/algorand-client.ts:74](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L74) ___ @@ -467,7 +507,7 @@ const algorand = AlgorandClient.mainNet().setDefaultValidityWindow(1000); #### Defined in -[src/types/algorand-client.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L52) +[src/types/algorand-client.ts:59](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L59) ___ @@ -499,7 +539,7 @@ const algorand = AlgorandClient.mainNet().setSigner(signer.addr, signer.signer) #### Defined in -[src/types/algorand-client.ts:103](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L103) +[src/types/algorand-client.ts:110](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L110) ___ @@ -534,7 +574,7 @@ const accountManager = AlgorandClient.mainNet() #### Defined in -[src/types/algorand-client.ts:87](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L87) +[src/types/algorand-client.ts:94](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L94) ___ @@ -565,7 +605,7 @@ const algorand = AlgorandClient.mainNet().setSuggestedParamsCache(suggestedParam #### Defined in -[src/types/algorand-client.ts:118](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L118) +[src/types/algorand-client.ts:125](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L125) ___ @@ -595,7 +635,27 @@ const algorand = AlgorandClient.mainNet().setSuggestedParamsCacheTimeout(10_000) #### Defined in -[src/types/algorand-client.ts:133](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L133) +[src/types/algorand-client.ts:140](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L140) + +___ + +### unregisterErrorTransformer + +▸ **unregisterErrorTransformer**(`transformer`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `transformer` | [`ErrorTransformer`](../modules/types_composer.md#errortransformer) | + +#### Returns + +`void` + +#### Defined in + +[src/types/algorand-client.ts:224](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L224) ___ @@ -619,7 +679,7 @@ const algorand = AlgorandClient.defaultLocalNet(); #### Defined in -[src/types/algorand-client.ts:262](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L262) +[src/types/algorand-client.ts:281](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L281) ___ @@ -649,7 +709,7 @@ const algorand = AlgorandClient.fromClients({ algod, indexer, kmd }); #### Defined in -[src/types/algorand-client.ts:305](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L305) +[src/types/algorand-client.ts:324](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L324) ___ @@ -679,7 +739,7 @@ const client = AlgorandClient.fromConfig({ algodConfig, indexerConfig, kmdConfig #### Defined in -[src/types/algorand-client.ts:339](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L339) +[src/types/algorand-client.ts:358](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L358) ___ @@ -716,7 +776,7 @@ const client = AlgorandClient.fromEnvironment(); #### Defined in -[src/types/algorand-client.ts:328](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L328) +[src/types/algorand-client.ts:347](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L347) ___ @@ -740,7 +800,7 @@ const algorand = AlgorandClient.mainNet(); #### Defined in -[src/types/algorand-client.ts:290](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L290) +[src/types/algorand-client.ts:309](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L309) ___ @@ -764,4 +824,4 @@ const algorand = AlgorandClient.testNet(); #### Defined in -[src/types/algorand-client.ts:276](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L276) +[src/types/algorand-client.ts:295](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/algorand-client.ts#L295) diff --git a/docs/code/classes/types_app_client.AppClient.md b/docs/code/classes/types_app_client.AppClient.md index 2853c55c..cc3e71c8 100644 --- a/docs/code/classes/types_app_client.AppClient.md +++ b/docs/code/classes/types_app_client.AppClient.md @@ -316,7 +316,7 @@ A reference to the underlying `AlgorandClient` this app client is using. #### Defined in -[src/types/app-client.ts:678](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L678) +[src/types/app-client.ts:679](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L679) ___ @@ -332,7 +332,7 @@ The app address of the app instance this client is linked to. #### Defined in -[src/types/app-client.ts:663](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L663) +[src/types/app-client.ts:664](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L664) ___ @@ -348,7 +348,7 @@ The ID of the app instance this client is linked to. #### Defined in -[src/types/app-client.ts:658](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L658) +[src/types/app-client.ts:659](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L659) ___ @@ -364,7 +364,7 @@ The name of the app (from the ARC-32 / ARC-56 app spec or override). #### Defined in -[src/types/app-client.ts:668](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L668) +[src/types/app-client.ts:669](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L669) ___ @@ -380,7 +380,7 @@ The ARC-56 app spec being used #### Defined in -[src/types/app-client.ts:673](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L673) +[src/types/app-client.ts:674](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L674) ___ @@ -396,7 +396,7 @@ Create transactions for the current app #### Defined in -[src/types/app-client.ts:702](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L702) +[src/types/app-client.ts:703](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L703) ___ @@ -429,7 +429,7 @@ await appClient.send.call({method: 'my_method2', args: [myMethodCall]}) #### Defined in -[src/types/app-client.ts:697](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L697) +[src/types/app-client.ts:698](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L698) ___ @@ -445,7 +445,7 @@ Send transactions to the current app #### Defined in -[src/types/app-client.ts:707](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L707) +[src/types/app-client.ts:708](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L708) ___ @@ -475,7 +475,7 @@ Get state (local, global, box) from the current app #### Defined in -[src/types/app-client.ts:712](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L712) +[src/types/app-client.ts:713](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L713) ## Methods @@ -511,7 +511,7 @@ const appClient2 = appClient.clone({ defaultSender: 'NEW_SENDER_ADDRESS' }) #### Defined in -[src/types/app-client.ts:566](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L566) +[src/types/app-client.ts:567](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L567) ___ @@ -541,7 +541,7 @@ The compiled code and any compilation results (including source maps) #### Defined in -[src/types/app-client.ts:943](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L943) +[src/types/app-client.ts:944](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L944) ___ @@ -559,7 +559,7 @@ The source maps #### Defined in -[src/types/app-client.ts:882](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L882) +[src/types/app-client.ts:883](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L883) ___ @@ -585,7 +585,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:860](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L860) +[src/types/app-client.ts:861](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L861) ___ @@ -634,7 +634,7 @@ await appClient.fundAppAccount({ amount: algo(1) }) #### Defined in -[src/types/app-client.ts:741](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L741) +[src/types/app-client.ts:742](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L742) ___ @@ -661,7 +661,7 @@ It does this by replacing any `undefined` values with the equivalent default val #### Defined in -[src/types/app-client.ts:1101](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1101) +[src/types/app-client.ts:1102](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1102) ___ @@ -685,7 +685,7 @@ A tuple with: [ARC-56 `Method`, algosdk `ABIMethod`] #### Defined in -[src/types/app-client.ts:910](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L910) +[src/types/app-client.ts:911](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L911) ___ @@ -713,7 +713,7 @@ ___ #### Defined in -[src/types/app-client.ts:1551](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1551) +[src/types/app-client.ts:1542](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1542) ___ @@ -736,7 +736,7 @@ ___ #### Defined in -[src/types/app-client.ts:1213](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1213) +[src/types/app-client.ts:1214](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1214) ___ @@ -764,7 +764,7 @@ ___ #### Defined in -[src/types/app-client.ts:1538](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1538) +[src/types/app-client.ts:1529](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1529) ___ @@ -787,7 +787,7 @@ ___ #### Defined in -[src/types/app-client.ts:1178](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1178) +[src/types/app-client.ts:1179](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1179) ___ @@ -810,7 +810,7 @@ ___ #### Defined in -[src/types/app-client.ts:1242](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1242) +[src/types/app-client.ts:1243](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1243) ___ @@ -831,7 +831,7 @@ ___ #### Defined in -[src/types/app-client.ts:1592](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1592) +[src/types/app-client.ts:1584](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1584) ___ @@ -855,7 +855,7 @@ const boxNames = await appClient.getBoxNames() #### Defined in -[src/types/app-client.ts:778](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L778) +[src/types/app-client.ts:779](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L779) ___ @@ -885,7 +885,7 @@ const boxValue = await appClient.getBoxValue('boxName') #### Defined in -[src/types/app-client.ts:791](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L791) +[src/types/app-client.ts:792](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L792) ___ @@ -916,7 +916,7 @@ const boxValue = await appClient.getBoxValueFromABIType('boxName', new ABIUintTy #### Defined in -[src/types/app-client.ts:805](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L805) +[src/types/app-client.ts:806](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L806) ___ @@ -947,7 +947,7 @@ const boxValues = await appClient.getBoxValues() #### Defined in -[src/types/app-client.ts:823](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L823) +[src/types/app-client.ts:824](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L824) ___ @@ -979,7 +979,7 @@ const boxValues = await appClient.getBoxValuesFromABIType(new ABIUintType(32)) #### Defined in -[src/types/app-client.ts:843](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L843) +[src/types/app-client.ts:844](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L844) ___ @@ -1003,7 +1003,7 @@ const globalState = await appClient.getGlobalState() #### Defined in -[src/types/app-client.ts:753](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L753) +[src/types/app-client.ts:754](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L754) ___ @@ -1033,7 +1033,7 @@ const localState = await appClient.getLocalState('ACCOUNT_ADDRESS') #### Defined in -[src/types/app-client.ts:766](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L766) +[src/types/app-client.ts:767](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L767) ___ @@ -1056,7 +1056,7 @@ ___ #### Defined in -[src/types/app-client.ts:1467](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1467) +[src/types/app-client.ts:1458](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1458) ___ @@ -1079,7 +1079,7 @@ ___ #### Defined in -[src/types/app-client.ts:1275](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1275) +[src/types/app-client.ts:1276](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1276) ___ @@ -1102,7 +1102,7 @@ ___ #### Defined in -[src/types/app-client.ts:1337](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1337) +[src/types/app-client.ts:1338](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1338) ___ @@ -1125,7 +1125,7 @@ if none provided and throws an error if neither provided #### Defined in -[src/types/app-client.ts:1521](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1521) +[src/types/app-client.ts:1512](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1512) ___ @@ -1150,7 +1150,7 @@ or `undefined` otherwise (so the signer is resolved from `AlgorandClient`) #### Defined in -[src/types/app-client.ts:1531](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1531) +[src/types/app-client.ts:1522](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1522) ___ @@ -1179,35 +1179,29 @@ ___ #### Defined in -[src/types/app-client.ts:1662](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1662) +[src/types/app-client.ts:1654](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1654) ___ ### handleCallErrors -▸ **handleCallErrors**\<`TResult`\>(`call`): `Promise`\<`TResult`\> +▸ **handleCallErrors**(`e`): `Promise`\<`Error`\> Make the given call and catch any errors, augmenting with debugging information before re-throwing. -#### Type parameters - -| Name | -| :------ | -| `TResult` | - #### Parameters | Name | Type | | :------ | :------ | -| `call` | () => `Promise`\<`TResult`\> | +| `e` | `Error` | #### Returns -`Promise`\<`TResult`\> +`Promise`\<`Error`\> #### Defined in -[src/types/app-client.ts:1575](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1575) +[src/types/app-client.ts:1566](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1566) ___ @@ -1229,7 +1223,7 @@ Import source maps for the app. #### Defined in -[src/types/app-client.ts:899](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L899) +[src/types/app-client.ts:900](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L900) ___ @@ -1264,7 +1258,7 @@ The smart contract response with an updated return value #### Defined in -[src/types/app-client.ts:924](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L924) +[src/types/app-client.ts:925](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L925) ___ @@ -1296,7 +1290,7 @@ The compiled code and any compilation results (including source maps) #### Defined in -[src/types/app-client.ts:1048](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1048) +[src/types/app-client.ts:1049](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1049) ___ @@ -1329,7 +1323,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:964](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L964) +[src/types/app-client.ts:965](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L965) ___ @@ -1374,7 +1368,7 @@ const appClient = await AppClient.fromCreatorAndName({ #### Defined in -[src/types/app-client.ts:594](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L594) +[src/types/app-client.ts:595](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L595) ___ @@ -1416,7 +1410,7 @@ const appClient = await AppClient.fromNetwork({ #### Defined in -[src/types/app-client.ts:623](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L623) +[src/types/app-client.ts:624](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L624) ___ @@ -1447,4 +1441,4 @@ const arc56AppSpec = AppClient.normaliseAppSpec(appSpec) #### Defined in -[src/types/app-client.ts:651](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L651) +[src/types/app-client.ts:652](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L652) diff --git a/docs/code/classes/types_app_client.ApplicationClient.md b/docs/code/classes/types_app_client.ApplicationClient.md index c084c99d..bcc2c015 100644 --- a/docs/code/classes/types_app_client.ApplicationClient.md +++ b/docs/code/classes/types_app_client.ApplicationClient.md @@ -92,7 +92,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1789](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1789) +[src/types/app-client.ts:1781](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1781) ## Properties @@ -102,7 +102,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1772](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1772) +[src/types/app-client.ts:1764](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1764) ___ @@ -112,7 +112,7 @@ ___ #### Defined in -[src/types/app-client.ts:1771](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1771) +[src/types/app-client.ts:1763](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1763) ___ @@ -122,7 +122,7 @@ ___ #### Defined in -[src/types/app-client.ts:1774](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1774) +[src/types/app-client.ts:1766](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1766) ___ @@ -132,7 +132,7 @@ ___ #### Defined in -[src/types/app-client.ts:1776](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1776) +[src/types/app-client.ts:1768](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1768) ___ @@ -142,7 +142,7 @@ ___ #### Defined in -[src/types/app-client.ts:1777](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1777) +[src/types/app-client.ts:1769](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1769) ___ @@ -152,7 +152,7 @@ ___ #### Defined in -[src/types/app-client.ts:1773](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1773) +[src/types/app-client.ts:1765](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1765) ___ @@ -162,7 +162,7 @@ ___ #### Defined in -[src/types/app-client.ts:1763](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1763) +[src/types/app-client.ts:1755](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1755) ___ @@ -172,7 +172,7 @@ ___ #### Defined in -[src/types/app-client.ts:1765](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1765) +[src/types/app-client.ts:1757](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1757) ___ @@ -182,7 +182,7 @@ ___ #### Defined in -[src/types/app-client.ts:1769](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1769) +[src/types/app-client.ts:1761](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1761) ___ @@ -192,7 +192,7 @@ ___ #### Defined in -[src/types/app-client.ts:1768](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1768) +[src/types/app-client.ts:1760](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1760) ___ @@ -202,7 +202,7 @@ ___ #### Defined in -[src/types/app-client.ts:1764](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1764) +[src/types/app-client.ts:1756](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1756) ___ @@ -212,7 +212,7 @@ ___ #### Defined in -[src/types/app-client.ts:1767](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1767) +[src/types/app-client.ts:1759](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1759) ___ @@ -222,7 +222,7 @@ ___ #### Defined in -[src/types/app-client.ts:1766](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1766) +[src/types/app-client.ts:1758](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1758) ## Methods @@ -250,7 +250,7 @@ Issues a no_op (normal) call to the app. #### Defined in -[src/types/app-client.ts:2112](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2112) +[src/types/app-client.ts:2104](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2104) ___ @@ -279,7 +279,7 @@ Issues a call to the app with the given call type. #### Defined in -[src/types/app-client.ts:2194](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2194) +[src/types/app-client.ts:2186](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2186) ___ @@ -307,7 +307,7 @@ Issues a clear_state call to the app. #### Defined in -[src/types/app-client.ts:2171](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2171) +[src/types/app-client.ts:2163](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2163) ___ @@ -335,7 +335,7 @@ Issues a close_out call to the app. #### Defined in -[src/types/app-client.ts:2160](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2160) +[src/types/app-client.ts:2152](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2152) ___ @@ -363,7 +363,7 @@ Compiles the approval and clear state programs and sets up the source map. #### Defined in -[src/types/app-client.ts:1828](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1828) +[src/types/app-client.ts:1820](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1820) ___ @@ -391,7 +391,7 @@ Creates a smart contract app, returns the details of the created app. #### Defined in -[src/types/app-client.ts:2007](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2007) +[src/types/app-client.ts:1999](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1999) ___ @@ -419,7 +419,7 @@ Issues a delete_application call to the app. #### Defined in -[src/types/app-client.ts:2182](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2182) +[src/types/app-client.ts:2174](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2174) ___ @@ -453,7 +453,7 @@ To understand the architecture decisions behind this functionality please see ht #### Defined in -[src/types/app-client.ts:1896](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1896) +[src/types/app-client.ts:1888](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1888) ___ @@ -471,7 +471,7 @@ The source maps #### Defined in -[src/types/app-client.ts:1861](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1861) +[src/types/app-client.ts:1853](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1853) ___ @@ -498,7 +498,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:2516](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2516) +[src/types/app-client.ts:2508](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2508) ___ @@ -522,7 +522,7 @@ The result of the funding #### Defined in -[src/types/app-client.ts:2233](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2233) +[src/types/app-client.ts:2225](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2225) ___ @@ -546,7 +546,7 @@ The ABI method for the given method #### Defined in -[src/types/app-client.ts:2474](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2474) +[src/types/app-client.ts:2466](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2466) ___ @@ -574,7 +574,7 @@ Returns the ABI Method parameters for the given method name string for the app r #### Defined in -[src/types/app-client.ts:2452](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2452) +[src/types/app-client.ts:2444](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2444) ___ @@ -594,7 +594,7 @@ ___ #### Defined in -[src/types/app-client.ts:2532](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2532) +[src/types/app-client.ts:2524](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2524) ___ @@ -617,7 +617,7 @@ Gets the reference information for the current application instance. #### Defined in -[src/types/app-client.ts:2486](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2486) +[src/types/app-client.ts:2478](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2478) ___ @@ -635,7 +635,7 @@ The names of the boxes #### Defined in -[src/types/app-client.ts:2289](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2289) +[src/types/app-client.ts:2281](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2281) ___ @@ -659,7 +659,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2304](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2304) +[src/types/app-client.ts:2296](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2296) ___ @@ -684,7 +684,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2320](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2320) +[src/types/app-client.ts:2312](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2312) ___ @@ -709,7 +709,7 @@ The (name, value) pair of the boxes with values as raw byte arrays #### Defined in -[src/types/app-client.ts:2336](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2336) +[src/types/app-client.ts:2328](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2328) ___ @@ -735,7 +735,7 @@ The (name, value) pair of the boxes with values as the ABI Value #### Defined in -[src/types/app-client.ts:2358](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2358) +[src/types/app-client.ts:2350](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2350) ___ @@ -764,7 +764,7 @@ Returns the arguments for an app call for the given ABI method or raw method spe #### Defined in -[src/types/app-client.ts:2382](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2382) +[src/types/app-client.ts:2374](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2374) ___ @@ -782,7 +782,7 @@ The global state #### Defined in -[src/types/app-client.ts:2261](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2261) +[src/types/app-client.ts:2253](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2253) ___ @@ -806,7 +806,7 @@ The global state #### Defined in -[src/types/app-client.ts:2275](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2275) +[src/types/app-client.ts:2267](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2267) ___ @@ -828,7 +828,7 @@ Import source maps for the app. #### Defined in -[src/types/app-client.ts:1878](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1878) +[src/types/app-client.ts:1870](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1870) ___ @@ -856,7 +856,7 @@ Issues a opt_in call to the app. #### Defined in -[src/types/app-client.ts:2149](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2149) +[src/types/app-client.ts:2141](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2141) ___ @@ -884,4 +884,4 @@ Updates the smart contract app. #### Defined in -[src/types/app-client.ts:2071](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2071) +[src/types/app-client.ts:2063](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2063) diff --git a/docs/code/classes/types_composer.TransactionComposer.md b/docs/code/classes/types_composer.TransactionComposer.md index 211f3841..a7a1281c 100644 --- a/docs/code/classes/types_composer.TransactionComposer.md +++ b/docs/code/classes/types_composer.TransactionComposer.md @@ -19,6 +19,7 @@ TransactionComposer helps you compose and execute transactions as a transaction - [atc](types_composer.TransactionComposer.md#atc) - [defaultValidityWindow](types_composer.TransactionComposer.md#defaultvaliditywindow) - [defaultValidityWindowIsExplicit](types_composer.TransactionComposer.md#defaultvaliditywindowisexplicit) +- [errorTransformers](types_composer.TransactionComposer.md#errortransformers) - [getSigner](types_composer.TransactionComposer.md#getsigner) - [getSuggestedParams](types_composer.TransactionComposer.md#getsuggestedparams) - [txnMaxFees](types_composer.TransactionComposer.md#txnmaxfees) @@ -65,8 +66,10 @@ TransactionComposer helps you compose and execute transactions as a transaction - [count](types_composer.TransactionComposer.md#count) - [execute](types_composer.TransactionComposer.md#execute) - [rebuild](types_composer.TransactionComposer.md#rebuild) +- [registerErrorTransformer](types_composer.TransactionComposer.md#registererrortransformer) - [send](types_composer.TransactionComposer.md#send) - [simulate](types_composer.TransactionComposer.md#simulate) +- [transformError](types_composer.TransactionComposer.md#transformerror) - [arc2Note](types_composer.TransactionComposer.md#arc2note) ## Constructors @@ -91,7 +94,7 @@ The `TransactionComposer` instance #### Defined in -[src/types/composer.ts:559](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L559) +[src/types/composer.ts:608](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L608) ## Properties @@ -103,7 +106,7 @@ The algod client used by the composer. #### Defined in -[src/types/composer.ts:538](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L538) +[src/types/composer.ts:563](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L563) ___ @@ -113,7 +116,7 @@ ___ #### Defined in -[src/types/composer.ts:552](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L552) +[src/types/composer.ts:577](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L577) ___ @@ -125,7 +128,7 @@ The ATC used to compose the group #### Defined in -[src/types/composer.ts:527](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L527) +[src/types/composer.ts:552](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L552) ___ @@ -137,7 +140,7 @@ The default transaction validity window #### Defined in -[src/types/composer.ts:547](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L547) +[src/types/composer.ts:572](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L572) ___ @@ -149,7 +152,17 @@ Whether the validity window was explicitly set on construction #### Defined in -[src/types/composer.ts:550](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L550) +[src/types/composer.ts:575](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L575) + +___ + +### errorTransformers + +• `Private` **errorTransformers**: [`ErrorTransformer`](../modules/types_composer.md#errortransformer)[] + +#### Defined in + +[src/types/composer.ts:579](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L579) ___ @@ -175,7 +188,7 @@ A function that takes in an address and return a signer function for that addres #### Defined in -[src/types/composer.ts:544](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L544) +[src/types/composer.ts:569](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L569) ___ @@ -195,7 +208,7 @@ An async function that will return suggested params for the transaction. #### Defined in -[src/types/composer.ts:541](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L541) +[src/types/composer.ts:566](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L566) ___ @@ -208,7 +221,7 @@ This is set using the value of either maxFee or staticFee. #### Defined in -[src/types/composer.ts:532](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L532) +[src/types/composer.ts:557](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L557) ___ @@ -220,7 +233,7 @@ Transactions that have not yet been composed #### Defined in -[src/types/composer.ts:535](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L535) +[src/types/composer.ts:560](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L560) ___ @@ -232,7 +245,7 @@ Signer used to represent a lack of signer #### Defined in -[src/types/composer.ts:524](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L524) +[src/types/composer.ts:549](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L549) ## Methods @@ -290,7 +303,7 @@ composer.addAppCall({ #### Defined in -[src/types/composer.ts:1046](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1046) +[src/types/composer.ts:1106](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1106) ___ @@ -358,7 +371,7 @@ composer.addAppCallMethodCall({ #### Defined in -[src/types/composer.ts:1258](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1258) +[src/types/composer.ts:1318](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1318) ___ @@ -454,7 +467,7 @@ composer.addAppCreate({ #### Defined in -[src/types/composer.ts:925](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L925) +[src/types/composer.ts:985](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L985) ___ @@ -531,7 +544,7 @@ composer.addAppCreateMethodCall({ #### Defined in -[src/types/composer.ts:1106](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1106) +[src/types/composer.ts:1166](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1166) ___ @@ -587,7 +600,7 @@ composer.addAppDelete({ #### Defined in -[src/types/composer.ts:1005](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1005) +[src/types/composer.ts:1065](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1065) ___ @@ -655,7 +668,7 @@ composer.addAppDeleteMethodCall({ #### Defined in -[src/types/composer.ts:1208](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1208) +[src/types/composer.ts:1268](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1268) ___ @@ -733,7 +746,7 @@ composer.addAppUpdate({ #### Defined in -[src/types/composer.ts:966](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L966) +[src/types/composer.ts:1026](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1026) ___ @@ -803,7 +816,7 @@ composer.addAppUpdateMethodCall({ #### Defined in -[src/types/composer.ts:1158](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1158) +[src/types/composer.ts:1218](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1218) ___ @@ -855,7 +868,7 @@ composer.addAssetConfig({ #### Defined in -[src/types/composer.ts:698](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L698) +[src/types/composer.ts:758](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L758) ___ @@ -913,7 +926,7 @@ composer.addAssetCreate({ #### Defined in -[src/types/composer.ts:663](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L663) +[src/types/composer.ts:723](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L723) ___ @@ -962,7 +975,7 @@ composer.addAssetDestroy({ #### Defined in -[src/types/composer.ts:764](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L764) +[src/types/composer.ts:824](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L824) ___ @@ -1013,7 +1026,7 @@ composer.addAssetFreeze({ #### Defined in -[src/types/composer.ts:732](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L732) +[src/types/composer.ts:792](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L792) ___ @@ -1062,7 +1075,7 @@ composer.addAssetOptIn({ #### Defined in -[src/types/composer.ts:833](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L833) +[src/types/composer.ts:893](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L893) ___ @@ -1119,7 +1132,7 @@ composer.addAssetOptOut({ #### Defined in -[src/types/composer.ts:871](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L871) +[src/types/composer.ts:931](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L931) ___ @@ -1173,7 +1186,7 @@ composer.addAssetTransfer({ #### Defined in -[src/types/composer.ts:801](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L801) +[src/types/composer.ts:861](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L861) ___ @@ -1205,7 +1218,7 @@ composer.addAtc(atc) #### Defined in -[src/types/composer.ts:1356](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1356) +[src/types/composer.ts:1416](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1416) ___ @@ -1257,7 +1270,7 @@ composer.addOfflineKeyRegistration({ #### Defined in -[src/types/composer.ts:1339](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1339) +[src/types/composer.ts:1399](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1399) ___ @@ -1321,7 +1334,7 @@ composer.addOnlineKeyRegistration({ #### Defined in -[src/types/composer.ts:1304](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1304) +[src/types/composer.ts:1364](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1364) ___ @@ -1377,7 +1390,7 @@ composer.addPayment({ #### Defined in -[src/types/composer.ts:622](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L622) +[src/types/composer.ts:682](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L682) ___ @@ -1408,7 +1421,7 @@ composer.addTransaction(txn) #### Defined in -[src/types/composer.ts:579](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L579) +[src/types/composer.ts:639](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L639) ___ @@ -1437,7 +1450,7 @@ const { atc, transactions, methodCalls } = await composer.build() #### Defined in -[src/types/composer.ts:1886](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1886) +[src/types/composer.ts:1946](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1946) ___ @@ -1458,7 +1471,7 @@ ___ #### Defined in -[src/types/composer.ts:1695](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1695) +[src/types/composer.ts:1755](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1755) ___ @@ -1479,7 +1492,7 @@ ___ #### Defined in -[src/types/composer.ts:1652](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1652) +[src/types/composer.ts:1712](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1712) ___ @@ -1500,7 +1513,7 @@ ___ #### Defined in -[src/types/composer.ts:1634](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1634) +[src/types/composer.ts:1694](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1694) ___ @@ -1521,7 +1534,7 @@ ___ #### Defined in -[src/types/composer.ts:1665](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1665) +[src/types/composer.ts:1725](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1725) ___ @@ -1542,7 +1555,7 @@ ___ #### Defined in -[src/types/composer.ts:1673](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1673) +[src/types/composer.ts:1733](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1733) ___ @@ -1563,7 +1576,7 @@ ___ #### Defined in -[src/types/composer.ts:1683](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1683) +[src/types/composer.ts:1743](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1743) ___ @@ -1585,7 +1598,7 @@ Build an ATC and return transactions ready to be incorporated into a broader set #### Defined in -[src/types/composer.ts:1362](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1362) +[src/types/composer.ts:1422](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1422) ___ @@ -1606,7 +1619,7 @@ ___ #### Defined in -[src/types/composer.ts:1746](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1746) +[src/types/composer.ts:1806](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1806) ___ @@ -1630,7 +1643,7 @@ Builds an ABI method call transaction and any other associated transactions repr #### Defined in -[src/types/composer.ts:1442](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1442) +[src/types/composer.ts:1502](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1502) ___ @@ -1651,7 +1664,7 @@ ___ #### Defined in -[src/types/composer.ts:1624](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1624) +[src/types/composer.ts:1684](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1684) ___ @@ -1675,7 +1688,7 @@ const { transactions, methodCalls, signers } = await composer.buildTransactions( #### Defined in -[src/types/composer.ts:1828](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1828) +[src/types/composer.ts:1888](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1888) ___ @@ -1698,7 +1711,7 @@ Builds all transaction types apart from `txnWithSigner`, `atc` and `methodCall` #### Defined in -[src/types/composer.ts:1769](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1769) +[src/types/composer.ts:1829](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1829) ___ @@ -1719,7 +1732,7 @@ ___ #### Defined in -[src/types/composer.ts:1796](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1796) +[src/types/composer.ts:1856](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1856) ___ @@ -1747,7 +1760,7 @@ ___ #### Defined in -[src/types/composer.ts:1384](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1384) +[src/types/composer.ts:1444](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1444) ___ @@ -1765,7 +1778,7 @@ The number of transactions currently added to this composer #### Defined in -[src/types/composer.ts:1869](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1869) +[src/types/composer.ts:1929](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1929) ___ @@ -1795,7 +1808,7 @@ An alias for `composer.send(params)`. #### Defined in -[src/types/composer.ts:1980](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1980) +[src/types/composer.ts:2044](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2044) ___ @@ -1820,7 +1833,31 @@ const { atc, transactions, methodCalls } = await composer.rebuild() #### Defined in -[src/types/composer.ts:1925](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1925) +[src/types/composer.ts:1985](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1985) + +___ + +### registerErrorTransformer + +▸ **registerErrorTransformer**(`transformer`): [`TransactionComposer`](types_composer.TransactionComposer.md) + +Register a function that will be used to transform an error caught when simulating or executing + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `transformer` | [`ErrorTransformer`](../modules/types_composer.md#errortransformer) | + +#### Returns + +[`TransactionComposer`](types_composer.TransactionComposer.md) + +The composer so you can chain method calls + +#### Defined in + +[src/types/composer.ts:624](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L624) ___ @@ -1850,7 +1887,7 @@ const result = await composer.send() #### Defined in -[src/types/composer.ts:1939](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1939) +[src/types/composer.ts:1999](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1999) ___ @@ -1874,7 +1911,7 @@ const result = await composer.simulate() #### Defined in -[src/types/composer.ts:1992](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L1992) +[src/types/composer.ts:2056](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2056) ▸ **simulate**(`options`): `Promise`\<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) & \{ `simulateResponse`: `SimulateResponse` }\> @@ -1908,7 +1945,7 @@ const result = await composer.simulate({ #### Defined in -[src/types/composer.ts:2003](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2003) +[src/types/composer.ts:2067](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2067) ▸ **simulate**(`options`): `Promise`\<[`SendAtomicTransactionComposerResults`](../interfaces/types_transaction.SendAtomicTransactionComposerResults.md) & \{ `simulateResponse`: `SimulateResponse` }\> @@ -1943,7 +1980,27 @@ const result = await composer.simulate({ #### Defined in -[src/types/composer.ts:2016](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2016) +[src/types/composer.ts:2080](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2080) + +___ + +### transformError + +▸ **transformError**(`originalError`): `Promise`\<`unknown`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `originalError` | `unknown` | + +#### Returns + +`Promise`\<`unknown`\> + +#### Defined in + +[src/types/composer.ts:581](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L581) ___ @@ -1969,4 +2026,4 @@ The binary encoded transaction note #### Defined in -[src/types/composer.ts:2093](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2093) +[src/types/composer.ts:2155](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2155) diff --git a/docs/code/interfaces/types_composer.BuiltTransactions.md b/docs/code/interfaces/types_composer.BuiltTransactions.md index 8b563213..cfbddff7 100644 --- a/docs/code/interfaces/types_composer.BuiltTransactions.md +++ b/docs/code/interfaces/types_composer.BuiltTransactions.md @@ -24,7 +24,7 @@ Any `ABIMethod` objects associated with any of the transactions in a map keyed b #### Defined in -[src/types/composer.ts:516](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L516) +[src/types/composer.ts:541](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L541) ___ @@ -36,7 +36,7 @@ Any `TransactionSigner` objects associated with any of the transactions in a map #### Defined in -[src/types/composer.ts:518](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L518) +[src/types/composer.ts:543](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L543) ___ @@ -48,4 +48,4 @@ The built transactions #### Defined in -[src/types/composer.ts:514](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L514) +[src/types/composer.ts:539](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L539) diff --git a/docs/code/modules/types_composer.md b/docs/code/modules/types_composer.md index 9a1e0b8f..eaee1812 100644 --- a/docs/code/modules/types_composer.md +++ b/docs/code/modules/types_composer.md @@ -34,6 +34,7 @@ - [AssetTransferParams](types_composer.md#assettransferparams) - [CommonAppCallParams](types_composer.md#commonappcallparams) - [CommonTransactionParams](types_composer.md#commontransactionparams) +- [ErrorTransformer](types_composer.md#errortransformer) - [OfflineKeyRegistrationParams](types_composer.md#offlinekeyregistrationparams) - [OnlineKeyRegistrationParams](types_composer.md#onlinekeyregistrationparams) - [PaymentParams](types_composer.md#paymentparams) @@ -319,6 +320,35 @@ Common parameters for defining a transaction. ___ +### ErrorTransformer + +Ƭ **ErrorTransformer**: (`error`: `Error`) => `Promise`\<`Error`\> + +A function that transforms an error into a new error. + +In most cases, an ErrorTransformer should first check if it can or should transform the error +and return the input error if it cannot or should not transform it. + +#### Type declaration + +▸ (`error`): `Promise`\<`Error`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `error` | `Error` | + +##### Returns + +`Promise`\<`Error`\> + +#### Defined in + +[src/types/composer.ts:484](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L484) + +___ + ### OfflineKeyRegistrationParams Ƭ **OfflineKeyRegistrationParams**: [`CommonTransactionParams`](types_composer.md#commontransactionparams) & \{ `preventAccountFromEverParticipatingAgain?`: `boolean` } @@ -403,14 +433,15 @@ Parameters to create an `TransactionComposer`. | Name | Type | Description | | :------ | :------ | :------ | | `algod` | `algosdk.Algodv2` | The algod client to use to get suggestedParams and send the transaction group | -| `appManager?` | [`AppManager`](../classes/types_app_manager.AppManager.md) | An existing `AppManager` to use to manage app compilation and cache compilation results. If not specified than an ephemeral one will be created. | +| `appManager?` | [`AppManager`](../classes/types_app_manager.AppManager.md) | An existing `AppManager` to use to manage app compilation and cache compilation results. If not specified then an ephemeral one will be created. | | `defaultValidityWindow?` | `bigint` | How many rounds a transaction should be valid for by default; if not specified then will be 10 rounds (or 1000 rounds if issuing transactions to LocalNet). | +| `errorTransformers?` | [`ErrorTransformer`](types_composer.md#errortransformer)[] | An array of error transformers to use when an error is caught in simulate or execute callbacks can later be registered with `registerErrorTransformer` | | `getSigner` | (`address`: `string` \| `Address`) => `algosdk.TransactionSigner` | - | | `getSuggestedParams?` | () => `Promise`\<`algosdk.SuggestedParams`\> | - | #### Defined in -[src/types/composer.ts:479](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L479) +[src/types/composer.ts:499](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L499) ___ diff --git a/docs/code/modules/types_composer_spec.md b/docs/code/modules/types_composer_spec.md new file mode 100644 index 00000000..ae6c02ca --- /dev/null +++ b/docs/code/modules/types_composer_spec.md @@ -0,0 +1,3 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/composer.spec + +# Module: types/composer.spec diff --git a/docs/code/modules/types_instance_of.md b/docs/code/modules/types_instance_of.md new file mode 100644 index 00000000..6375dfe8 --- /dev/null +++ b/docs/code/modules/types_instance_of.md @@ -0,0 +1,27 @@ +[@algorandfoundation/algokit-utils](../README.md) / types/instance-of + +# Module: types/instance-of + +## Table of contents + +### Type Aliases + +- [InterfaceOf](types_instance_of.md#interfaceof) + +## Type Aliases + +### InterfaceOf + +Ƭ **InterfaceOf**\<`ClassType`\>: \{ [Member in keyof ClassType]: ClassType[Member] } + +A type that represents the interface of the class given as the generic parameter + +#### Type parameters + +| Name | +| :------ | +| `ClassType` | + +#### Defined in + +[src/types/instance-of.ts:4](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/instance-of.ts#L4) diff --git a/package-lock.json b/package-lock.json index 9e498790..045449c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12276,9 +12276,9 @@ } }, "node_modules/vite": { - "version": "5.4.18", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", - "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index d3ae73ba..7dd773e5 100644 --- a/package.json +++ b/package.json @@ -171,4 +171,4 @@ "@semantic-release/github" ] } -} \ No newline at end of file +} diff --git a/src/types/algorand-client.ts b/src/types/algorand-client.ts index 2e723c59..24bd16f2 100644 --- a/src/types/algorand-client.ts +++ b/src/types/algorand-client.ts @@ -7,7 +7,7 @@ import { AppDeployer } from './app-deployer' import { AppManager } from './app-manager' import { AssetManager } from './asset-manager' import { AlgoSdkClients, ClientManager } from './client-manager' -import { TransactionComposer } from './composer' +import { ErrorTransformer, TransactionComposer } from './composer' import { AlgoConfig } from './network-client' import Account = algosdk.Account import LogicSigAccount = algosdk.LogicSigAccount @@ -30,6 +30,13 @@ export class AlgorandClient { private _defaultValidityWindow: bigint | undefined = undefined + /** + * A set of error transformers to use when an error is caught in simulate or execute + * `registerErrorTransformer` and `unregisterErrorTransformer` can be used to add and remove + * error transformers from the set. + */ + private _errorTransformers: Set = new Set() + private constructor(config: AlgoConfig | AlgoSdkClients) { this._clientManager = new ClientManager(config, this) this._accountManager = new AccountManager(this._clientManager) @@ -207,7 +214,18 @@ export class AlgorandClient { } /** - * Start a new `TransactionComposer` transaction group + * Register a function that will be used to transform an error caught when simulating or executing + * composed transaction groups made from `newGroup` + */ + public registerErrorTransformer(transformer: ErrorTransformer) { + this._errorTransformers.add(transformer) + } + + public unregisterErrorTransformer(transformer: ErrorTransformer) { + this._errorTransformers.delete(transformer) + } + + /** Start a new `TransactionComposer` transaction group * @returns A new instance of `TransactionComposer`. * @example * const composer = AlgorandClient.mainNet().newGroup(); @@ -220,6 +238,7 @@ export class AlgorandClient { getSuggestedParams: () => this.getSuggestedParams(), defaultValidityWindow: this._defaultValidityWindow, appManager: this._appManager, + errorTransformers: [...this._errorTransformers], }) } diff --git a/src/types/app-client.ts b/src/types/app-client.ts index f2aefdf4..bfa237b4 100644 --- a/src/types/app-client.ts +++ b/src/types/app-client.ts @@ -516,6 +516,7 @@ export class AppClient { this._appSpec = AppClient.normaliseAppSpec(params.appSpec) this._appName = params.appName ?? this._appSpec.name this._algorand = params.algorand + this._algorand.registerErrorTransformer!(this.handleCallErrors) this._defaultSender = typeof params.defaultSender === 'string' ? Address.fromString(params.defaultSender) : params.defaultSender this._defaultSigner = params.defaultSigner @@ -1245,29 +1246,29 @@ export class AppClient { update: async (params?: AppClientBareCallParams & AppClientCompilationParams & SendParams) => { const compiled = await this.compile(params) return { - ...(await this.handleCallErrors(async () => this._algorand.send.appUpdate(await this.params.bare.update(params)))), + ...(await this._algorand.send.appUpdate(await this.params.bare.update(params))), ...(compiled as Partial), } }, /** Signs and sends an opt-in call */ optIn: (params?: AppClientBareCallParams & SendParams) => { - return this.handleCallErrors(() => this._algorand.send.appCall(this.params.bare.optIn(params))) + return this._algorand.send.appCall(this.params.bare.optIn(params)) }, /** Signs and sends a delete call */ delete: (params?: AppClientBareCallParams & SendParams) => { - return this.handleCallErrors(() => this._algorand.send.appDelete(this.params.bare.delete(params))) + return this._algorand.send.appDelete(this.params.bare.delete(params)) }, /** Signs and sends a clear state call */ clearState: (params?: AppClientBareCallParams & SendParams) => { - return this.handleCallErrors(() => this._algorand.send.appCall(this.params.bare.clearState(params))) + return this._algorand.send.appCall(this.params.bare.clearState(params)) }, /** Signs and sends a close out call */ closeOut: (params?: AppClientBareCallParams & SendParams) => { - return this.handleCallErrors(() => this._algorand.send.appCall(this.params.bare.closeOut(params))) + return this._algorand.send.appCall(this.params.bare.closeOut(params)) }, /** Signs and sends a call (defaults to no-op) */ call: (params?: AppClientBareCallParams & CallOnComplete & SendParams) => { - return this.handleCallErrors(() => this._algorand.send.appCall(this.params.bare.call(params))) + return this._algorand.send.appCall(this.params.bare.call(params)) }, } } @@ -1351,11 +1352,9 @@ export class AppClient { update: async (params: AppClientMethodCallParams & AppClientCompilationParams & SendParams) => { const compiled = await this.compile(params) return { - ...(await this.handleCallErrors(async () => - this.processMethodCallReturn( - this._algorand.send.appUpdateMethodCall(await this.params.update({ ...params })), - getArc56Method(params.method, this._appSpec), - ), + ...(await this.processMethodCallReturn( + this._algorand.send.appUpdateMethodCall(await this.params.update({ ...params })), + getArc56Method(params.method, this._appSpec), )), ...(compiled as Partial), } @@ -1365,12 +1364,10 @@ export class AppClient { * @param params The parameters for the opt-in ABI method call * @returns The result of sending the opt-in ABI method call */ - optIn: (params: AppClientMethodCallParams & SendParams) => { - return this.handleCallErrors(async () => - this.processMethodCallReturn( - this._algorand.send.appCallMethodCall(await this.params.optIn(params)), - getArc56Method(params.method, this._appSpec), - ), + optIn: async (params: AppClientMethodCallParams & SendParams) => { + return this.processMethodCallReturn( + this._algorand.send.appCallMethodCall(await this.params.optIn(params)), + getArc56Method(params.method, this._appSpec), ) }, /** @@ -1378,12 +1375,10 @@ export class AppClient { * @param params The parameters for the delete ABI method call * @returns The result of sending the delete ABI method call */ - delete: (params: AppClientMethodCallParams & SendParams) => { - return this.handleCallErrors(async () => - this.processMethodCallReturn( - this._algorand.send.appDeleteMethodCall(await this.params.delete(params)), - getArc56Method(params.method, this._appSpec), - ), + delete: async (params: AppClientMethodCallParams & SendParams) => { + return this.processMethodCallReturn( + this._algorand.send.appDeleteMethodCall(await this.params.delete(params)), + getArc56Method(params.method, this._appSpec), ) }, /** @@ -1391,12 +1386,10 @@ export class AppClient { * @param params The parameters for the close out ABI method call * @returns The result of sending the close out ABI method call */ - closeOut: (params: AppClientMethodCallParams & SendParams) => { - return this.handleCallErrors(async () => - this.processMethodCallReturn( - this._algorand.send.appCallMethodCall(await this.params.closeOut(params)), - getArc56Method(params.method, this._appSpec), - ), + closeOut: async (params: AppClientMethodCallParams & SendParams) => { + return this.processMethodCallReturn( + this._algorand.send.appCallMethodCall(await this.params.closeOut(params)), + getArc56Method(params.method, this._appSpec), ) }, /** @@ -1454,11 +1447,9 @@ export class AppClient { } } - return this.handleCallErrors(async () => - this.processMethodCallReturn( - this._algorand.send.appCallMethodCall(await this.params.call(params)), - getArc56Method(params.method, this._appSpec), - ), + return this.processMethodCallReturn( + this._algorand.send.appCallMethodCall(await this.params.call(params)), + getArc56Method(params.method, this._appSpec), ) }, } @@ -1572,21 +1563,22 @@ export class AppClient { } /** Make the given call and catch any errors, augmenting with debugging information before re-throwing. */ - private async handleCallErrors(call: () => Promise) { - try { - return await call() - } catch (e) { - const logicError = await this.exposeLogicError(e as Error) - if (logicError instanceof LogicError) { - let currentLine = logicError.teal_line - logicError.lines - 1 - const stackWithLines = logicError.stack - ?.split('\n') - .map((line) => `${(currentLine += 1)}: ${line}`) - .join('\n') - Config.logger.error(`${logicError.message}\n\n${stackWithLines}`) - } - throw logicError - } + private handleCallErrors = async (e: Error) => { + // Only handle errors for this app. + const appIdString = `app=${this._appId.toString()}` + if (!e.message.includes(appIdString)) return e + + const logicError = await this.exposeLogicError(e) + if (logicError instanceof LogicError) { + let currentLine = logicError.teal_line - logicError.lines - 1 + const stackWithLines = logicError.stack + ?.split('\n') + .map((line) => `${(currentLine += 1)}: ${line}`) + .join('\n') + Config.logger.error(`${logicError.message}\n\n${stackWithLines}`) + } + + return logicError } private getBoxMethods() { diff --git a/src/types/app-factory-and-client.spec.ts b/src/types/app-factory-and-client.spec.ts index 684a034e..4df16130 100644 --- a/src/types/app-factory-and-client.spec.ts +++ b/src/types/app-factory-and-client.spec.ts @@ -770,7 +770,31 @@ describe('ARC56: app-factory-and-app-client', () => { invariant(false) // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (e: any) { - expect(JSON.stringify(e)).toMatch('this is an error') + expect(e).toBeInstanceOf(Error) + expect(e.message).toMatch('this is an error') + } + }) + + test('AppClient registers error transformer to AlgorandClient', async () => { + const { testAccount } = localnet.context + const { appClient } = await factory.deploy({ + createParams: { + method: 'createApplication', + }, + deployTimeParams: { bytes64TmplVar: '0'.repeat(64), uint64TmplVar: 123, bytes32TmplVar: '0'.repeat(32), bytesTmplVar: 'foo' }, + }) + + try { + // Don't use the app client to call, but since we've instantiated one the error transformer should be registered + await appClient.algorand + .newGroup() + .addAppCallMethodCall({ appId: appClient.appId, method: appClient.getABIMethod('throwError')!, sender: testAccount }) + .send() + invariant(false) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (e: any) { + expect(e).toBeInstanceOf(Error) + expect(e.message).toMatch('this is an error') } }) diff --git a/src/types/composer.spec.ts b/src/types/composer.spec.ts new file mode 100644 index 00000000..2f3d1ba4 --- /dev/null +++ b/src/types/composer.spec.ts @@ -0,0 +1,67 @@ +import { beforeEach, describe, expect, test } from 'vitest' +import { algorandFixture } from '../testing' + +describe('TransactionComposer', () => { + const fixture = algorandFixture() + + beforeEach(async () => { + await fixture.beforeEach() + }) + + describe('error transformers', () => { + const errorTransformers = [ + async (e: Error) => { + if (e.message.includes('missing from')) { + return new Error('ASSET MISSING???') + } + + return e + }, + async (e: Error) => { + if (e.message == 'ASSET MISSING???') { + return new Error('ASSET MISSING!') + } + + return e + }, + ] + + test('throws correct error from simulate', async () => { + const algorand = fixture.context.algorand + const sender = fixture.context.testAccount + const composer = algorand.newGroup() + + composer.addAssetTransfer({ + amount: 1n, + assetId: 1337n, + sender, + receiver: sender, + }) + + errorTransformers.forEach((errorTransformer) => { + composer.registerErrorTransformer(errorTransformer) + }) + + await expect(composer.simulate()).rejects.toThrow('ASSET MISSING!') + }) + + test('throws correct error from send', async () => { + const algorand = fixture.context.algorand + const sender = fixture.context.testAccount + const composer = algorand.newGroup() + + composer.addAssetTransfer({ + amount: 1n, + assetId: 1337n, + sender, + receiver: sender, + }) + + errorTransformers.forEach((errorTransformer) => { + composer.registerErrorTransformer(errorTransformer) + }) + + await expect(composer.send()).rejects.toThrow('ASSET MISSING!') + }) + }) +}) diff --git a/src/types/composer.ts b/src/types/composer.ts index ce2e0dd4..d7eaf0a7 100644 --- a/src/types/composer.ts +++ b/src/types/composer.ts @@ -475,6 +475,26 @@ export type Txn = | { atc: algosdk.AtomicTransactionComposer; type: 'atc' } | ((AppCallMethodCall | AppCreateMethodCall | AppUpdateMethodCall) & { type: 'methodCall' }) +/** + * A function that transforms an error into a new error. + * + * In most cases, an ErrorTransformer should first check if it can or should transform the error + * and return the input error if it cannot or should not transform it. + */ +export type ErrorTransformer = (error: Error) => Promise + +class InvalidErrorTransformerValue extends Error { + constructor(originalError: unknown, value: unknown) { + super(`An error transformer returned a non-error value: ${value}. The original error before any transformation: ${originalError}`) + } +} + +class ErrorTransformerError extends Error { + constructor(originalError: Error, cause: unknown) { + super(`An error transformer threw an error: ${cause}. The original error before any transformation: ${originalError} `, { cause }) + } +} + /** Parameters to create an `TransactionComposer`. */ export type TransactionComposerParams = { /** The algod client to use to get suggestedParams and send the transaction group */ @@ -489,9 +509,14 @@ export type TransactionComposerParams = { defaultValidityWindow?: bigint /** An existing `AppManager` to use to manage app compilation and cache compilation results. * - * If not specified than an ephemeral one will be created. + * If not specified then an ephemeral one will be created. */ appManager?: AppManager + /** + * An array of error transformers to use when an error is caught in simulate or execute + * callbacks can later be registered with `registerErrorTransformer` + */ + errorTransformers?: ErrorTransformer[] } /** Represents a Transaction with additional context that was used to build that transaction. */ @@ -551,6 +576,30 @@ export class TransactionComposer { private appManager: AppManager + private errorTransformers: ErrorTransformer[] + + private async transformError(originalError: unknown): Promise { + // Transformers only work with Error instances, so immediately return anything else + if (!(originalError instanceof Error)) { + return originalError + } + + let transformedError = originalError + + for (const transformer of this.errorTransformers) { + try { + transformedError = await transformer(transformedError) + if (!(transformedError instanceof Error)) { + return new InvalidErrorTransformerValue(originalError, transformedError) + } + } catch (errorFromTransformer) { + return new ErrorTransformerError(originalError, errorFromTransformer) + } + } + + return transformedError + } + /** * Create a `TransactionComposer`. * @param params The configuration for this composer @@ -564,6 +613,17 @@ export class TransactionComposer { this.defaultValidityWindow = params.defaultValidityWindow ?? this.defaultValidityWindow this.defaultValidityWindowIsExplicit = params.defaultValidityWindow !== undefined this.appManager = params.appManager ?? new AppManager(params.algod) + this.errorTransformers = params.errorTransformers ?? [] + } + + /** + * Register a function that will be used to transform an error caught when simulating or executing + * + * @returns The composer so you can chain method calls + */ + registerErrorTransformer(transformer: ErrorTransformer) { + this.errorTransformers.push(transformer) + return this } /** @@ -1950,22 +2010,26 @@ export class TransactionComposer { waitRounds = Number(BigInt(lastRound) - BigInt(firstRound)) + 1 } - return await sendAtomicTransactionComposer( - { - atc: this.atc, - suppressLog: params?.suppressLog, - maxRoundsToWaitForConfirmation: waitRounds, - populateAppCallResources: params?.populateAppCallResources, - coverAppCallInnerTransactionFees: params?.coverAppCallInnerTransactionFees, - additionalAtcContext: params?.coverAppCallInnerTransactionFees - ? { - maxFees: this.txnMaxFees, - suggestedParams: suggestedParams!, - } - : undefined, - }, - this.algod, - ) + try { + return await sendAtomicTransactionComposer( + { + atc: this.atc, + suppressLog: params?.suppressLog, + maxRoundsToWaitForConfirmation: waitRounds, + populateAppCallResources: params?.populateAppCallResources, + coverAppCallInnerTransactionFees: params?.coverAppCallInnerTransactionFees, + additionalAtcContext: params?.coverAppCallInnerTransactionFees + ? { + maxFees: this.txnMaxFees, + suggestedParams: suggestedParams!, + } + : undefined, + }, + this.algod, + ) + } catch (originalError: unknown) { + throw await this.transformError(originalError) + } } /** @@ -2063,9 +2127,7 @@ export class TransactionComposer { await Config.events.emitAsync(EventType.TxnGroupSimulated, { simulateResponse }) } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ;(error as any).simulateResponse = simulateResponse - throw error + throw await this.transformError(error) } if (Config.debug && Config.traceAll) { diff --git a/src/types/instance-of.ts b/src/types/instance-of.ts new file mode 100644 index 00000000..cbede7bc --- /dev/null +++ b/src/types/instance-of.ts @@ -0,0 +1,6 @@ +/** + * A type that represents the interface of the class given as the generic parameter + */ +export type InterfaceOf = { + [Member in keyof ClassType]: ClassType[Member] +} From 1df962393f599177c72b1d5e7d29af84772c2947 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Fri, 9 May 2025 16:02:15 -0400 Subject: [PATCH 03/10] fix: fix parsing of PC when a inner transaction fails (#397) * fix: properly parse inner txn pc when an error occurs * test: ensure it works even with a middle app call * chore: generate docs and fix lint error --- .../classes/types_logic_error.LogicError.md | 14 +- .../types_logic_error.LogicErrorDetails.md | 10 +- src/types/app-factory-and-client.spec.ts | 33 ++ src/types/logic-error.ts | 6 +- .../example-contracts/inner_error/.gitignore | 3 + .../artifacts/InnerApp.approval.teal | 59 +++ .../inner_error/artifacts/InnerApp.arc56.json | 331 +++++++++++++ .../artifacts/MiddleApp.approval.teal | 85 ++++ .../artifacts/MiddleApp.arc56.json | 425 ++++++++++++++++ .../artifacts/OuterApp.approval.teal | 93 ++++ .../inner_error/artifacts/OuterApp.arc56.json | 468 ++++++++++++++++++ .../inner_error/inner_error.algo.ts | 25 + .../inner_error/tsconfig.json | 9 + 13 files changed, 1548 insertions(+), 13 deletions(-) create mode 100644 tests/example-contracts/inner_error/.gitignore create mode 100644 tests/example-contracts/inner_error/artifacts/InnerApp.approval.teal create mode 100644 tests/example-contracts/inner_error/artifacts/InnerApp.arc56.json create mode 100644 tests/example-contracts/inner_error/artifacts/MiddleApp.approval.teal create mode 100644 tests/example-contracts/inner_error/artifacts/MiddleApp.arc56.json create mode 100644 tests/example-contracts/inner_error/artifacts/OuterApp.approval.teal create mode 100644 tests/example-contracts/inner_error/artifacts/OuterApp.arc56.json create mode 100644 tests/example-contracts/inner_error/inner_error.algo.ts create mode 100644 tests/example-contracts/inner_error/tsconfig.json diff --git a/docs/code/classes/types_logic_error.LogicError.md b/docs/code/classes/types_logic_error.LogicError.md index 38c287bc..702a0507 100644 --- a/docs/code/classes/types_logic_error.LogicError.md +++ b/docs/code/classes/types_logic_error.LogicError.md @@ -62,7 +62,7 @@ Error.constructor #### Defined in -[src/types/logic-error.ts:52](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L52) +[src/types/logic-error.ts:56](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L56) ## Properties @@ -86,7 +86,7 @@ ___ #### Defined in -[src/types/logic-error.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L40) +[src/types/logic-error.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L44) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[src/types/logic-error.ts:42](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L42) +[src/types/logic-error.ts:46](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L46) ___ @@ -134,7 +134,7 @@ ___ #### Defined in -[src/types/logic-error.ts:41](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L41) +[src/types/logic-error.ts:45](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L45) ___ @@ -148,7 +148,7 @@ Error.stack #### Defined in -[src/types/logic-error.ts:44](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L44) +[src/types/logic-error.ts:48](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L48) ___ @@ -158,7 +158,7 @@ ___ #### Defined in -[src/types/logic-error.ts:43](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L43) +[src/types/logic-error.ts:47](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L47) ___ @@ -258,4 +258,4 @@ The logic error details if any, or undefined #### Defined in -[src/types/logic-error.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L26) +[src/types/logic-error.ts:28](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L28) diff --git a/docs/code/interfaces/types_logic_error.LogicErrorDetails.md b/docs/code/interfaces/types_logic_error.LogicErrorDetails.md index bb4dcc8f..c0840a6d 100644 --- a/docs/code/interfaces/types_logic_error.LogicErrorDetails.md +++ b/docs/code/interfaces/types_logic_error.LogicErrorDetails.md @@ -26,7 +26,7 @@ The full error description #### Defined in -[src/types/logic-error.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L14) +[src/types/logic-error.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L16) ___ @@ -38,7 +38,7 @@ The error message #### Defined in -[src/types/logic-error.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L12) +[src/types/logic-error.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L14) ___ @@ -50,7 +50,7 @@ The program counter where the error was #### Defined in -[src/types/logic-error.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L10) +[src/types/logic-error.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L12) ___ @@ -62,7 +62,7 @@ Any trace information included in the error #### Defined in -[src/types/logic-error.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L16) +[src/types/logic-error.ts:18](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L18) ___ @@ -74,4 +74,4 @@ The ID of the transaction with the logic error #### Defined in -[src/types/logic-error.ts:8](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L8) +[src/types/logic-error.ts:10](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/logic-error.ts#L10) diff --git a/src/types/app-factory-and-client.spec.ts b/src/types/app-factory-and-client.spec.ts index 4df16130..410e89ea 100644 --- a/src/types/app-factory-and-client.spec.ts +++ b/src/types/app-factory-and-client.spec.ts @@ -5,6 +5,9 @@ import * as algokit from '..' import arc56Json from '../../tests/example-contracts/arc56_templates/artifacts/Templates.arc56_draft.json' import largeAppArc56Json from '../../tests/example-contracts/extra-pages/large.arc56.json' import smallAppArc56Json from '../../tests/example-contracts/extra-pages/small.arc56.json' +import errorInnerAppArc56Json from '../../tests/example-contracts/inner_error/artifacts/InnerApp.arc56.json' +import errorMiddleAppArc56Json from '../../tests/example-contracts/inner_error/artifacts/MiddleApp.arc56.json' +import errorOuterAppArc56Json from '../../tests/example-contracts/inner_error/artifacts/OuterApp.arc56.json' import { getTestingAppContract } from '../../tests/example-contracts/testing-app/contract' import { algoKitLogCaptureFixture, algorandFixture } from '../testing' import { asJson } from '../util' @@ -757,6 +760,36 @@ describe('ARC56: app-factory-and-app-client', () => { }) }, 10_000) + test('ARC56 error messages from inner app error', async () => { + const innerFactory = localnet.algorand.client.getAppFactory({ + // @ts-expect-error TODO: Fix this + appSpec: errorInnerAppArc56Json, + defaultSender: localnet.context.testAccount.addr, + }) + + const { appClient: innerClient } = await innerFactory.deploy({ createParams: { method: 'createApplication' } }) + + const middleFactory = localnet.algorand.client.getAppFactory({ + // @ts-expect-error TODO: Fix this + appSpec: errorMiddleAppArc56Json, + defaultSender: localnet.context.testAccount.addr, + }) + + const { appClient: middleClient } = await middleFactory.deploy({ createParams: { method: 'createApplication' } }) + + const outerFactory = localnet.algorand.client.getAppFactory({ + // @ts-expect-error TODO: Fix this + appSpec: errorOuterAppArc56Json, + defaultSender: localnet.context.testAccount.addr, + }) + + const { appClient: outerClient } = await outerFactory.deploy({ createParams: { method: 'createApplication' } }) + + await expect( + outerClient.send.call({ method: 'callMiddle', args: [middleClient.appId, innerClient.appId], extraFee: algokit.microAlgos(2000) }), + ).rejects.toThrow('custom error message') + }) + test('ARC56 error messages with dynamic template vars (cblock offset)', async () => { const { appClient } = await factory.deploy({ createParams: { diff --git a/src/types/logic-error.ts b/src/types/logic-error.ts index 73ebc3e4..7018925b 100644 --- a/src/types/logic-error.ts +++ b/src/types/logic-error.ts @@ -1,4 +1,6 @@ const LOGIC_ERROR = /transaction ([A-Z0-9]+): logic eval error: (.*). Details: .*pc=([0-9]+).*/ +// inner tx 0 failed: logic eval error: err opcode executed. Details: app=6248, pc=29, opcodes=tx +const INNER_LOGIC_ERROR = /inner tx (\d+) failed:.*?pc=([0-9]+)/ /** * Details about a smart contract logic error @@ -26,13 +28,15 @@ export class LogicError extends Error { static parseLogicError(error: any): LogicErrorDetails | undefined { const errorMessage = error.message const res = LOGIC_ERROR.exec(errorMessage) + const innerRes = INNER_LOGIC_ERROR.exec(errorMessage) + if (res === null || res.length <= 3) return undefined return { txId: res[1], msg: res[2], desc: errorMessage, - pc: parseInt(res[3] ? res[3] : '0'), + pc: parseInt(innerRes?.[2] ?? res[3] ?? '0'), traces: error.traces, } as LogicErrorDetails } diff --git a/tests/example-contracts/inner_error/.gitignore b/tests/example-contracts/inner_error/.gitignore new file mode 100644 index 00000000..ca635e07 --- /dev/null +++ b/tests/example-contracts/inner_error/.gitignore @@ -0,0 +1,3 @@ +artifacts/* +!artifacts/*.arc56.json +!artifacts/*.approval.teal diff --git a/tests/example-contracts/inner_error/artifacts/InnerApp.approval.teal b/tests/example-contracts/inner_error/artifacts/InnerApp.approval.teal new file mode 100644 index 00000000..283109f9 --- /dev/null +++ b/tests/example-contracts/inner_error/artifacts/InnerApp.approval.teal @@ -0,0 +1,59 @@ +#pragma version 10 +intcblock 1 + +// This TEAL was generated by TEALScript v0.106.3 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +pushint 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// throwError()void +*abi_route_throwError: + // execute throwError()void + callsub throwError + intc 0 // 1 + return + +// throwError(): void +throwError: + proto 0 0 + + // custom error message + err + retsub + +*abi_route_createApplication: + intc 0 // 1 + return + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0x3d870d87 // method "throwError()void" + txna ApplicationArgs 0 + match *abi_route_throwError + + // this contract does not implement the given ABI method for call NoOp + err \ No newline at end of file diff --git a/tests/example-contracts/inner_error/artifacts/InnerApp.arc56.json b/tests/example-contracts/inner_error/artifacts/InnerApp.arc56.json new file mode 100644 index 00000000..050ec7cf --- /dev/null +++ b/tests/example-contracts/inner_error/artifacts/InnerApp.arc56.json @@ -0,0 +1,331 @@ +{ + "name": "InnerApp", + "desc": "", + "methods": [ + { + "name": "throwError", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": {}, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "inner_error.algo.ts:3", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "inner_error.algo.ts:3", + "pc": [ + 1, + 2, + 3 + ] + }, + { + "teal": 14, + "source": "inner_error.algo.ts:3", + "pc": [ + 4, + 5 + ] + }, + { + "teal": 15, + "source": "inner_error.algo.ts:3", + "pc": [ + 6 + ] + }, + { + "teal": 16, + "source": "inner_error.algo.ts:3", + "pc": [ + 7, + 8 + ] + }, + { + "teal": 17, + "source": "inner_error.algo.ts:3", + "pc": [ + 9 + ] + }, + { + "teal": 18, + "source": "inner_error.algo.ts:3", + "pc": [ + 10, + 11 + ] + }, + { + "teal": 19, + "source": "inner_error.algo.ts:3", + "pc": [ + 12 + ] + }, + { + "teal": 20, + "source": "inner_error.algo.ts:3", + "pc": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + }, + { + "teal": 24, + "source": "inner_error.algo.ts:3", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 39 + ] + }, + { + "teal": 29, + "source": "inner_error.algo.ts:4", + "pc": [ + 40, + 41, + 42 + ] + }, + { + "teal": 30, + "source": "inner_error.algo.ts:4", + "pc": [ + 43 + ] + }, + { + "teal": 31, + "source": "inner_error.algo.ts:4", + "pc": [ + 44 + ] + }, + { + "teal": 35, + "source": "inner_error.algo.ts:4", + "pc": [ + 45, + 46, + 47 + ] + }, + { + "teal": 38, + "source": "inner_error.algo.ts:5", + "errorMessage": "custom error message", + "pc": [ + 48 + ] + }, + { + "teal": 39, + "source": "inner_error.algo.ts:4", + "pc": [ + 49 + ] + }, + { + "teal": 42, + "source": "inner_error.algo.ts:3", + "pc": [ + 50 + ] + }, + { + "teal": 43, + "source": "inner_error.algo.ts:3", + "pc": [ + 51 + ] + }, + { + "teal": 46, + "source": "inner_error.algo.ts:3", + "pc": [ + 52, + 53, + 54, + 55, + 56, + 57 + ] + }, + { + "teal": 47, + "source": "inner_error.algo.ts:3", + "pc": [ + 58, + 59, + 60 + ] + }, + { + "teal": 48, + "source": "inner_error.algo.ts:3", + "pc": [ + 61, + 62, + 63, + 64 + ] + }, + { + "teal": 51, + "source": "inner_error.algo.ts:3", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 65 + ] + }, + { + "teal": 54, + "source": "inner_error.algo.ts:3", + "pc": [ + 66, + 67, + 68, + 69, + 70, + 71 + ] + }, + { + "teal": 55, + "source": "inner_error.algo.ts:3", + "pc": [ + 72, + 73, + 74 + ] + }, + { + "teal": 56, + "source": "inner_error.algo.ts:3", + "pc": [ + 75, + 76, + 77, + 78 + ] + }, + { + "teal": 59, + "source": "inner_error.algo.ts:3", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 79 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4zCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gdGhyb3dFcnJvcigpdm9pZAoqYWJpX3JvdXRlX3Rocm93RXJyb3I6CgkvLyBleGVjdXRlIHRocm93RXJyb3IoKXZvaWQKCWNhbGxzdWIgdGhyb3dFcnJvcgoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdGhyb3dFcnJvcigpOiB2b2lkCnRocm93RXJyb3I6Cglwcm90byAwIDAKCgkvLyBjdXN0b20gZXJyb3IgbWVzc2FnZQoJZXJyCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4M2Q4NzBkODcgLy8gbWV0aG9kICJ0aHJvd0Vycm9yKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV90aHJvd0Vycm9yCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiABATEYFIEGCzEZCI0MABsAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAIgAAiJDigAAAIkiQ4AEuER7NjYaAI4B//EAgAQ9hw2HNhoAjgH/2QA=", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 4, + "minor": 0, + "patch": 2, + "commitHash": "6b940281" + } + } +} \ No newline at end of file diff --git a/tests/example-contracts/inner_error/artifacts/MiddleApp.approval.teal b/tests/example-contracts/inner_error/artifacts/MiddleApp.approval.teal new file mode 100644 index 00000000..10ad7788 --- /dev/null +++ b/tests/example-contracts/inner_error/artifacts/MiddleApp.approval.teal @@ -0,0 +1,85 @@ +#pragma version 10 +intcblock 1 6 + +// This TEAL was generated by TEALScript v0.106.3 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +intc 1 // 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// callInner(uint64)void +*abi_route_callInner: + // id: uint64 + txna ApplicationArgs 1 + btoi + + // execute callInner(uint64)void + callsub callInner + intc 0 // 1 + return + +// callInner(id: AppID): void +callInner: + proto 1 0 + + // inner_error.algo.ts:11 + // sendMethodCall({ + // applicationID: id, + // methodArgs: [], + // }) + itxn_begin + intc 1 // appl + itxn_field TypeEnum + pushbytes 0x3d870d87 // method "throwError()void" + itxn_field ApplicationArgs + + // inner_error.algo.ts:12 + // applicationID: id + frame_dig -1 // id: AppID + itxn_field ApplicationID + + // inner_error.algo.ts:13 + // methodArgs: [] + // Fee field not set, defaulting to 0 + pushint 0 + itxn_field Fee + + // Submit inner transaction + itxn_submit + retsub + +*abi_route_createApplication: + intc 0 // 1 + return + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0xf925a882 // method "callInner(uint64)void" + txna ApplicationArgs 0 + match *abi_route_callInner + + // this contract does not implement the given ABI method for call NoOp + err \ No newline at end of file diff --git a/tests/example-contracts/inner_error/artifacts/MiddleApp.arc56.json b/tests/example-contracts/inner_error/artifacts/MiddleApp.arc56.json new file mode 100644 index 00000000..187ae849 --- /dev/null +++ b/tests/example-contracts/inner_error/artifacts/MiddleApp.arc56.json @@ -0,0 +1,425 @@ +{ + "name": "MiddleApp", + "desc": "", + "methods": [ + { + "name": "callInner", + "args": [ + { + "name": "id", + "type": "uint64" + } + ], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": {}, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "inner_error.algo.ts:9", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "inner_error.algo.ts:9", + "pc": [ + 1, + 2, + 3, + 4 + ] + }, + { + "teal": 14, + "source": "inner_error.algo.ts:9", + "pc": [ + 5, + 6 + ] + }, + { + "teal": 15, + "source": "inner_error.algo.ts:9", + "pc": [ + 7 + ] + }, + { + "teal": 16, + "source": "inner_error.algo.ts:9", + "pc": [ + 8 + ] + }, + { + "teal": 17, + "source": "inner_error.algo.ts:9", + "pc": [ + 9 + ] + }, + { + "teal": 18, + "source": "inner_error.algo.ts:9", + "pc": [ + 10, + 11 + ] + }, + { + "teal": 19, + "source": "inner_error.algo.ts:9", + "pc": [ + 12 + ] + }, + { + "teal": 20, + "source": "inner_error.algo.ts:9", + "pc": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + }, + { + "teal": 24, + "source": "inner_error.algo.ts:9", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 39 + ] + }, + { + "teal": 29, + "source": "inner_error.algo.ts:10", + "pc": [ + 40, + 41, + 42 + ] + }, + { + "teal": 30, + "source": "inner_error.algo.ts:10", + "pc": [ + 43 + ] + }, + { + "teal": 33, + "source": "inner_error.algo.ts:10", + "pc": [ + 44, + 45, + 46 + ] + }, + { + "teal": 34, + "source": "inner_error.algo.ts:10", + "pc": [ + 47 + ] + }, + { + "teal": 35, + "source": "inner_error.algo.ts:10", + "pc": [ + 48 + ] + }, + { + "teal": 39, + "source": "inner_error.algo.ts:10", + "pc": [ + 49, + 50, + 51 + ] + }, + { + "teal": 46, + "source": "inner_error.algo.ts:11", + "pc": [ + 52 + ] + }, + { + "teal": 47, + "source": "inner_error.algo.ts:11", + "pc": [ + 53 + ] + }, + { + "teal": 48, + "source": "inner_error.algo.ts:11", + "pc": [ + 54, + 55 + ] + }, + { + "teal": 49, + "source": "inner_error.algo.ts:11", + "pc": [ + 56, + 57, + 58, + 59, + 60, + 61 + ] + }, + { + "teal": 50, + "source": "inner_error.algo.ts:11", + "pc": [ + 62, + 63 + ] + }, + { + "teal": 54, + "source": "inner_error.algo.ts:12", + "pc": [ + 64, + 65 + ] + }, + { + "teal": 55, + "source": "inner_error.algo.ts:12", + "pc": [ + 66, + 67 + ] + }, + { + "teal": 60, + "source": "inner_error.algo.ts:11", + "pc": [ + 68, + 69 + ] + }, + { + "teal": 61, + "source": "inner_error.algo.ts:11", + "pc": [ + 70, + 71 + ] + }, + { + "teal": 64, + "source": "inner_error.algo.ts:11", + "pc": [ + 72 + ] + }, + { + "teal": 65, + "source": "inner_error.algo.ts:10", + "pc": [ + 73 + ] + }, + { + "teal": 68, + "source": "inner_error.algo.ts:9", + "pc": [ + 74 + ] + }, + { + "teal": 69, + "source": "inner_error.algo.ts:9", + "pc": [ + 75 + ] + }, + { + "teal": 72, + "source": "inner_error.algo.ts:9", + "pc": [ + 76, + 77, + 78, + 79, + 80, + 81 + ] + }, + { + "teal": 73, + "source": "inner_error.algo.ts:9", + "pc": [ + 82, + 83, + 84 + ] + }, + { + "teal": 74, + "source": "inner_error.algo.ts:9", + "pc": [ + 85, + 86, + 87, + 88 + ] + }, + { + "teal": 77, + "source": "inner_error.algo.ts:9", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 89 + ] + }, + { + "teal": 80, + "source": "inner_error.algo.ts:9", + "pc": [ + 90, + 91, + 92, + 93, + 94, + 95 + ] + }, + { + "teal": 81, + "source": "inner_error.algo.ts:9", + "pc": [ + 96, + 97, + 98 + ] + }, + { + "teal": 82, + "source": "inner_error.algo.ts:9", + "pc": [ + 99, + 100, + 101, + 102 + ] + }, + { + "teal": 85, + "source": "inner_error.algo.ts:9", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 103 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDYKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgMSAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNhbGxJbm5lcih1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NhbGxJbm5lcjoKCS8vIGlkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNhbGxJbm5lcih1aW50NjQpdm9pZAoJY2FsbHN1YiBjYWxsSW5uZXIKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGNhbGxJbm5lcihpZDogQXBwSUQpOiB2b2lkCmNhbGxJbm5lcjoKCXByb3RvIDEgMAoKCS8vIGlubmVyX2Vycm9yLmFsZ28udHM6MTEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBJbm5lckFwcC5wcm90b3R5cGUudGhyb3dFcnJvcj4oewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogaWQsCgkvLyAgICAgICBtZXRob2RBcmdzOiBbXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgzZDg3MGQ4NyAvLyBtZXRob2QgInRocm93RXJyb3IoKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGlubmVyX2Vycm9yLmFsZ28udHM6MTIKCS8vIGFwcGxpY2F0aW9uSUQ6IGlkCglmcmFtZV9kaWcgLTEgLy8gaWQ6IEFwcElECglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBpbm5lcl9lcnJvci5hbGdvLnRzOjEzCgkvLyBtZXRob2RBcmdzOiBbXQoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJcHVzaGludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHhmOTI1YTg4MiAvLyBtZXRob2QgImNhbGxJbm5lcih1aW50NjQpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY2FsbElubmVyCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiACAQYxGBQjCzEZCI0MADMAAAAAAAAAAAAAACUAAAAAAAAAAAAAADYaAReIAAIiQ4oBALEjshCABD2HDYeyGov/shiBALIBs4kiQ4AEuER7NjYaAI4B//EAgAT5JaiCNhoAjgH/wQA=", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 4, + "minor": 0, + "patch": 2, + "commitHash": "6b940281" + } + } +} \ No newline at end of file diff --git a/tests/example-contracts/inner_error/artifacts/OuterApp.approval.teal b/tests/example-contracts/inner_error/artifacts/OuterApp.approval.teal new file mode 100644 index 00000000..7317ab61 --- /dev/null +++ b/tests/example-contracts/inner_error/artifacts/OuterApp.approval.teal @@ -0,0 +1,93 @@ +#pragma version 10 +intcblock 1 6 + +// This TEAL was generated by TEALScript v0.106.3 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +intc 1 // 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// callMiddle(uint64,uint64)void +*abi_route_callMiddle: + // innerId: uint64 + txna ApplicationArgs 2 + btoi + + // middleId: uint64 + txna ApplicationArgs 1 + btoi + + // execute callMiddle(uint64,uint64)void + callsub callMiddle + intc 0 // 1 + return + +// callMiddle(middleId: AppID, innerId: AppID): void +callMiddle: + proto 2 0 + + // inner_error.algo.ts:20 + // sendMethodCall({ + // applicationID: middleId, + // methodArgs: [innerId], + // }) + itxn_begin + intc 1 // appl + itxn_field TypeEnum + pushbytes 0xf925a882 // method "callInner(uint64)void" + itxn_field ApplicationArgs + + // inner_error.algo.ts:21 + // applicationID: middleId + frame_dig -1 // middleId: AppID + itxn_field ApplicationID + + // inner_error.algo.ts:22 + // methodArgs: [innerId] + frame_dig -2 // innerId: AppID + itob + itxn_field ApplicationArgs + + // Fee field not set, defaulting to 0 + pushint 0 + itxn_field Fee + + // Submit inner transaction + itxn_submit + retsub + +*abi_route_createApplication: + intc 0 // 1 + return + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0x8aaafb4c // method "callMiddle(uint64,uint64)void" + txna ApplicationArgs 0 + match *abi_route_callMiddle + + // this contract does not implement the given ABI method for call NoOp + err \ No newline at end of file diff --git a/tests/example-contracts/inner_error/artifacts/OuterApp.arc56.json b/tests/example-contracts/inner_error/artifacts/OuterApp.arc56.json new file mode 100644 index 00000000..298c7393 --- /dev/null +++ b/tests/example-contracts/inner_error/artifacts/OuterApp.arc56.json @@ -0,0 +1,468 @@ +{ + "name": "OuterApp", + "desc": "", + "methods": [ + { + "name": "callMiddle", + "args": [ + { + "name": "middleId", + "type": "uint64" + }, + { + "name": "innerId", + "type": "uint64" + } + ], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": {}, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "inner_error.algo.ts:18", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "inner_error.algo.ts:18", + "pc": [ + 1, + 2, + 3, + 4 + ] + }, + { + "teal": 14, + "source": "inner_error.algo.ts:18", + "pc": [ + 5, + 6 + ] + }, + { + "teal": 15, + "source": "inner_error.algo.ts:18", + "pc": [ + 7 + ] + }, + { + "teal": 16, + "source": "inner_error.algo.ts:18", + "pc": [ + 8 + ] + }, + { + "teal": 17, + "source": "inner_error.algo.ts:18", + "pc": [ + 9 + ] + }, + { + "teal": 18, + "source": "inner_error.algo.ts:18", + "pc": [ + 10, + 11 + ] + }, + { + "teal": 19, + "source": "inner_error.algo.ts:18", + "pc": [ + 12 + ] + }, + { + "teal": 20, + "source": "inner_error.algo.ts:18", + "pc": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + }, + { + "teal": 24, + "source": "inner_error.algo.ts:18", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 39 + ] + }, + { + "teal": 29, + "source": "inner_error.algo.ts:19", + "pc": [ + 40, + 41, + 42 + ] + }, + { + "teal": 30, + "source": "inner_error.algo.ts:19", + "pc": [ + 43 + ] + }, + { + "teal": 33, + "source": "inner_error.algo.ts:19", + "pc": [ + 44, + 45, + 46 + ] + }, + { + "teal": 34, + "source": "inner_error.algo.ts:19", + "pc": [ + 47 + ] + }, + { + "teal": 37, + "source": "inner_error.algo.ts:19", + "pc": [ + 48, + 49, + 50 + ] + }, + { + "teal": 38, + "source": "inner_error.algo.ts:19", + "pc": [ + 51 + ] + }, + { + "teal": 39, + "source": "inner_error.algo.ts:19", + "pc": [ + 52 + ] + }, + { + "teal": 43, + "source": "inner_error.algo.ts:19", + "pc": [ + 53, + 54, + 55 + ] + }, + { + "teal": 50, + "source": "inner_error.algo.ts:20", + "pc": [ + 56 + ] + }, + { + "teal": 51, + "source": "inner_error.algo.ts:20", + "pc": [ + 57 + ] + }, + { + "teal": 52, + "source": "inner_error.algo.ts:20", + "pc": [ + 58, + 59 + ] + }, + { + "teal": 53, + "source": "inner_error.algo.ts:20", + "pc": [ + 60, + 61, + 62, + 63, + 64, + 65 + ] + }, + { + "teal": 54, + "source": "inner_error.algo.ts:20", + "pc": [ + 66, + 67 + ] + }, + { + "teal": 58, + "source": "inner_error.algo.ts:21", + "pc": [ + 68, + 69 + ] + }, + { + "teal": 59, + "source": "inner_error.algo.ts:21", + "pc": [ + 70, + 71 + ] + }, + { + "teal": 63, + "source": "inner_error.algo.ts:22", + "pc": [ + 72, + 73 + ] + }, + { + "teal": 64, + "source": "inner_error.algo.ts:22", + "pc": [ + 74 + ] + }, + { + "teal": 65, + "source": "inner_error.algo.ts:22", + "pc": [ + 75, + 76 + ] + }, + { + "teal": 68, + "source": "inner_error.algo.ts:20", + "pc": [ + 77, + 78 + ] + }, + { + "teal": 69, + "source": "inner_error.algo.ts:20", + "pc": [ + 79, + 80 + ] + }, + { + "teal": 72, + "source": "inner_error.algo.ts:20", + "pc": [ + 81 + ] + }, + { + "teal": 73, + "source": "inner_error.algo.ts:19", + "pc": [ + 82 + ] + }, + { + "teal": 76, + "source": "inner_error.algo.ts:18", + "pc": [ + 83 + ] + }, + { + "teal": 77, + "source": "inner_error.algo.ts:18", + "pc": [ + 84 + ] + }, + { + "teal": 80, + "source": "inner_error.algo.ts:18", + "pc": [ + 85, + 86, + 87, + 88, + 89, + 90 + ] + }, + { + "teal": 81, + "source": "inner_error.algo.ts:18", + "pc": [ + 91, + 92, + 93 + ] + }, + { + "teal": 82, + "source": "inner_error.algo.ts:18", + "pc": [ + 94, + 95, + 96, + 97 + ] + }, + { + "teal": 85, + "source": "inner_error.algo.ts:18", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 98 + ] + }, + { + "teal": 88, + "source": "inner_error.algo.ts:18", + "pc": [ + 99, + 100, + 101, + 102, + 103, + 104 + ] + }, + { + "teal": 89, + "source": "inner_error.algo.ts:18", + "pc": [ + 105, + 106, + 107 + ] + }, + { + "teal": 90, + "source": "inner_error.algo.ts:18", + "pc": [ + 108, + 109, + 110, + 111 + ] + }, + { + "teal": 93, + "source": "inner_error.algo.ts:18", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 112 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDYKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgMSAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNhbGxNaWRkbGUodWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfY2FsbE1pZGRsZToKCS8vIGlubmVySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIG1pZGRsZUlkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNhbGxNaWRkbGUodWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNhbGxNaWRkbGUKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGNhbGxNaWRkbGUobWlkZGxlSWQ6IEFwcElELCBpbm5lcklkOiBBcHBJRCk6IHZvaWQKY2FsbE1pZGRsZToKCXByb3RvIDIgMAoKCS8vIGlubmVyX2Vycm9yLmFsZ28udHM6MjAKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBNaWRkbGVBcHAucHJvdG90eXBlLmNhbGxJbm5lcj4oewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogbWlkZGxlSWQsCgkvLyAgICAgICBtZXRob2RBcmdzOiBbaW5uZXJJZF0sCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjkyNWE4ODIgLy8gbWV0aG9kICJjYWxsSW5uZXIodWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGlubmVyX2Vycm9yLmFsZ28udHM6MjEKCS8vIGFwcGxpY2F0aW9uSUQ6IG1pZGRsZUlkCglmcmFtZV9kaWcgLTEgLy8gbWlkZGxlSWQ6IEFwcElECglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBpbm5lcl9lcnJvci5hbGdvLnRzOjIyCgkvLyBtZXRob2RBcmdzOiBbaW5uZXJJZF0KCWZyYW1lX2RpZyAtMiAvLyBpbm5lcklkOiBBcHBJRAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglwdXNoaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDhhYWFmYjRjIC8vIG1ldGhvZCAiY2FsbE1pZGRsZSh1aW50NjQsdWludDY0KXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NhbGxNaWRkbGUKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiACAQYxGBQjCzEZCI0MADwAAAAAAAAAAAAAAC4AAAAAAAAAAAAAADYaAhc2GgEXiAACIkOKAgCxI7IQgAT5JaiCshqL/7IYi/4WshqBALIBs4kiQ4AEuER7NjYaAI4B//EAgASKqvtMNhoAjgH/uAA=", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 4, + "minor": 0, + "patch": 2, + "commitHash": "6b940281" + } + } +} \ No newline at end of file diff --git a/tests/example-contracts/inner_error/inner_error.algo.ts b/tests/example-contracts/inner_error/inner_error.algo.ts new file mode 100644 index 00000000..b5558d48 --- /dev/null +++ b/tests/example-contracts/inner_error/inner_error.algo.ts @@ -0,0 +1,25 @@ +import { Contract } from '@algorandfoundation/tealscript' + +export class InnerApp extends Contract { + throwError() { + throw Error('custom error message') + } +} + +export class MiddleApp extends Contract { + callInner(id: AppID) { + sendMethodCall({ + applicationID: id, + methodArgs: [], + }) + } +} + +export class OuterApp extends Contract { + callMiddle(middleId: AppID, innerId: AppID) { + sendMethodCall({ + applicationID: middleId, + methodArgs: [innerId], + }) + } +} diff --git a/tests/example-contracts/inner_error/tsconfig.json b/tests/example-contracts/inner_error/tsconfig.json new file mode 100644 index 00000000..1ae20d27 --- /dev/null +++ b/tests/example-contracts/inner_error/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + "module": "commonjs", /* Specify what module code is generated. */ + "strict": true, /* Enable all strict type-checking options. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From 1651cd44c26e746640fda0419f5a3ac4912f8a44 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Wed, 21 May 2025 19:47:09 -0400 Subject: [PATCH 04/10] fix: properly identify newly created apps when handling errors (#400) * fix: properly identify newly created apps when handling errors * docs: generate docs * "throw new Error" isntead of "throw Error" Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor: more reliable program comparison * refactor: programsEqual -> programsDefinedAndEqual --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../classes/types_app_client.AppClient.md | 108 +++++--- .../types_app_client.ApplicationClient.md | 80 +++--- .../classes/types_app_factory.AppFactory.md | 30 +- docs/code/modules/index.md | 14 +- src/transaction/transaction.ts | 3 + src/types/app-client.ts | 41 ++- src/types/app-factory-and-client.spec.ts | 11 + src/types/app-factory.ts | 7 +- .../example-contracts/deploy_error/.gitignore | 3 + .../artifacts/DeployError.approval.teal | 46 ++++ .../artifacts/DeployError.arc56.json | 257 ++++++++++++++++++ .../deploy_error/deploy_error.algo.ts | 7 + .../deploy_error/tsconfig.json | 9 + 13 files changed, 504 insertions(+), 112 deletions(-) create mode 100644 tests/example-contracts/deploy_error/.gitignore create mode 100644 tests/example-contracts/deploy_error/artifacts/DeployError.approval.teal create mode 100644 tests/example-contracts/deploy_error/artifacts/DeployError.arc56.json create mode 100644 tests/example-contracts/deploy_error/deploy_error.algo.ts create mode 100644 tests/example-contracts/deploy_error/tsconfig.json diff --git a/docs/code/classes/types_app_client.AppClient.md b/docs/code/classes/types_app_client.AppClient.md index cc3e71c8..fa0ba003 100644 --- a/docs/code/classes/types_app_client.AppClient.md +++ b/docs/code/classes/types_app_client.AppClient.md @@ -27,6 +27,7 @@ state for a specific deployed instance of an app (with a known app ID). - [\_defaultSender](types_app_client.AppClient.md#_defaultsender) - [\_defaultSigner](types_app_client.AppClient.md#_defaultsigner) - [\_globalStateMethods](types_app_client.AppClient.md#_globalstatemethods) +- [\_lastCompiled](types_app_client.AppClient.md#_lastcompiled) - [\_localStateMethods](types_app_client.AppClient.md#_localstatemethods) - [\_paramsMethods](types_app_client.AppClient.md#_paramsmethods) - [\_sendMethods](types_app_client.AppClient.md#_sendmethods) @@ -111,7 +112,7 @@ const appClient = new AppClient({ #### Defined in -[src/types/app-client.ts:513](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L513) +[src/types/app-client.ts:514](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L514) ## Properties @@ -253,6 +254,23 @@ ___ ___ +### \_lastCompiled + +• `Private` **\_lastCompiled**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `approval?` | `Uint8Array` | +| `clear?` | `Uint8Array` | + +#### Defined in + +[src/types/app-client.ts:500](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L500) + +___ + ### \_localStateMethods • `Private` **\_localStateMethods**: (`address`: `string` \| `Address`) => \{ `getAll`: () => `Promise`\<`Record`\<`string`, `any`\>\> ; `getMap`: (`mapName`: `string`) => `Promise`\<`Map`\<`ABIValue` \| [`ABIStruct`](../modules/types_app_arc56.md#abistruct), `ABIValue` \| [`ABIStruct`](../modules/types_app_arc56.md#abistruct)\>\> ; `getMapValue`: (`mapName`: `string`, `key`: `any`, `appState?`: [`AppState`](../interfaces/types_app.AppState.md)) => `Promise`\<`undefined` \| `ABIValue` \| [`ABIStruct`](../modules/types_app_arc56.md#abistruct)\> ; `getValue`: (`name`: `string`, `appState?`: [`AppState`](../interfaces/types_app.AppState.md)) => `Promise`\<`undefined` \| `ABIValue` \| [`ABIStruct`](../modules/types_app_arc56.md#abistruct)\> } @@ -316,7 +334,7 @@ A reference to the underlying `AlgorandClient` this app client is using. #### Defined in -[src/types/app-client.ts:679](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L679) +[src/types/app-client.ts:681](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L681) ___ @@ -332,7 +350,7 @@ The app address of the app instance this client is linked to. #### Defined in -[src/types/app-client.ts:664](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L664) +[src/types/app-client.ts:666](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L666) ___ @@ -348,7 +366,7 @@ The ID of the app instance this client is linked to. #### Defined in -[src/types/app-client.ts:659](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L659) +[src/types/app-client.ts:661](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L661) ___ @@ -364,7 +382,7 @@ The name of the app (from the ARC-32 / ARC-56 app spec or override). #### Defined in -[src/types/app-client.ts:669](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L669) +[src/types/app-client.ts:671](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L671) ___ @@ -380,7 +398,7 @@ The ARC-56 app spec being used #### Defined in -[src/types/app-client.ts:674](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L674) +[src/types/app-client.ts:676](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L676) ___ @@ -396,7 +414,7 @@ Create transactions for the current app #### Defined in -[src/types/app-client.ts:703](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L703) +[src/types/app-client.ts:705](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L705) ___ @@ -429,7 +447,7 @@ await appClient.send.call({method: 'my_method2', args: [myMethodCall]}) #### Defined in -[src/types/app-client.ts:698](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L698) +[src/types/app-client.ts:700](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L700) ___ @@ -445,7 +463,7 @@ Send transactions to the current app #### Defined in -[src/types/app-client.ts:708](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L708) +[src/types/app-client.ts:710](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L710) ___ @@ -475,7 +493,7 @@ Get state (local, global, box) from the current app #### Defined in -[src/types/app-client.ts:713](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L713) +[src/types/app-client.ts:715](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L715) ## Methods @@ -511,7 +529,7 @@ const appClient2 = appClient.clone({ defaultSender: 'NEW_SENDER_ADDRESS' }) #### Defined in -[src/types/app-client.ts:567](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L567) +[src/types/app-client.ts:569](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L569) ___ @@ -541,7 +559,7 @@ The compiled code and any compilation results (including source maps) #### Defined in -[src/types/app-client.ts:944](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L944) +[src/types/app-client.ts:946](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L946) ___ @@ -559,7 +577,7 @@ The source maps #### Defined in -[src/types/app-client.ts:883](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L883) +[src/types/app-client.ts:885](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L885) ___ @@ -585,7 +603,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:861](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L861) +[src/types/app-client.ts:863](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L863) ___ @@ -634,7 +652,7 @@ await appClient.fundAppAccount({ amount: algo(1) }) #### Defined in -[src/types/app-client.ts:742](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L742) +[src/types/app-client.ts:744](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L744) ___ @@ -661,7 +679,7 @@ It does this by replacing any `undefined` values with the equivalent default val #### Defined in -[src/types/app-client.ts:1102](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1102) +[src/types/app-client.ts:1107](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1107) ___ @@ -685,7 +703,7 @@ A tuple with: [ARC-56 `Method`, algosdk `ABIMethod`] #### Defined in -[src/types/app-client.ts:911](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L911) +[src/types/app-client.ts:913](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L913) ___ @@ -713,7 +731,7 @@ ___ #### Defined in -[src/types/app-client.ts:1542](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1542) +[src/types/app-client.ts:1547](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1547) ___ @@ -736,7 +754,7 @@ ___ #### Defined in -[src/types/app-client.ts:1214](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1214) +[src/types/app-client.ts:1219](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1219) ___ @@ -764,7 +782,7 @@ ___ #### Defined in -[src/types/app-client.ts:1529](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1529) +[src/types/app-client.ts:1534](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1534) ___ @@ -787,7 +805,7 @@ ___ #### Defined in -[src/types/app-client.ts:1179](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1179) +[src/types/app-client.ts:1184](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1184) ___ @@ -810,7 +828,7 @@ ___ #### Defined in -[src/types/app-client.ts:1243](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1243) +[src/types/app-client.ts:1248](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1248) ___ @@ -831,7 +849,7 @@ ___ #### Defined in -[src/types/app-client.ts:1584](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1584) +[src/types/app-client.ts:1617](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1617) ___ @@ -855,7 +873,7 @@ const boxNames = await appClient.getBoxNames() #### Defined in -[src/types/app-client.ts:779](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L779) +[src/types/app-client.ts:781](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L781) ___ @@ -885,7 +903,7 @@ const boxValue = await appClient.getBoxValue('boxName') #### Defined in -[src/types/app-client.ts:792](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L792) +[src/types/app-client.ts:794](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L794) ___ @@ -916,7 +934,7 @@ const boxValue = await appClient.getBoxValueFromABIType('boxName', new ABIUintTy #### Defined in -[src/types/app-client.ts:806](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L806) +[src/types/app-client.ts:808](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L808) ___ @@ -947,7 +965,7 @@ const boxValues = await appClient.getBoxValues() #### Defined in -[src/types/app-client.ts:824](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L824) +[src/types/app-client.ts:826](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L826) ___ @@ -979,7 +997,7 @@ const boxValues = await appClient.getBoxValuesFromABIType(new ABIUintType(32)) #### Defined in -[src/types/app-client.ts:844](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L844) +[src/types/app-client.ts:846](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L846) ___ @@ -1003,7 +1021,7 @@ const globalState = await appClient.getGlobalState() #### Defined in -[src/types/app-client.ts:754](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L754) +[src/types/app-client.ts:756](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L756) ___ @@ -1033,7 +1051,7 @@ const localState = await appClient.getLocalState('ACCOUNT_ADDRESS') #### Defined in -[src/types/app-client.ts:767](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L767) +[src/types/app-client.ts:769](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L769) ___ @@ -1056,7 +1074,7 @@ ___ #### Defined in -[src/types/app-client.ts:1458](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1458) +[src/types/app-client.ts:1463](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1463) ___ @@ -1079,7 +1097,7 @@ ___ #### Defined in -[src/types/app-client.ts:1276](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1276) +[src/types/app-client.ts:1281](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1281) ___ @@ -1102,7 +1120,7 @@ ___ #### Defined in -[src/types/app-client.ts:1338](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1338) +[src/types/app-client.ts:1343](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1343) ___ @@ -1125,7 +1143,7 @@ if none provided and throws an error if neither provided #### Defined in -[src/types/app-client.ts:1512](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1512) +[src/types/app-client.ts:1517](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1517) ___ @@ -1150,7 +1168,7 @@ or `undefined` otherwise (so the signer is resolved from `AlgorandClient`) #### Defined in -[src/types/app-client.ts:1522](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1522) +[src/types/app-client.ts:1527](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1527) ___ @@ -1179,7 +1197,7 @@ ___ #### Defined in -[src/types/app-client.ts:1654](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1654) +[src/types/app-client.ts:1687](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1687) ___ @@ -1193,7 +1211,7 @@ Make the given call and catch any errors, augmenting with debugging information | Name | Type | | :------ | :------ | -| `e` | `Error` | +| `e` | `Error` & \{ `sentTransactions?`: `Transaction`[] } | #### Returns @@ -1201,7 +1219,7 @@ Make the given call and catch any errors, augmenting with debugging information #### Defined in -[src/types/app-client.ts:1566](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1566) +[src/types/app-client.ts:1571](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1571) ___ @@ -1223,7 +1241,7 @@ Import source maps for the app. #### Defined in -[src/types/app-client.ts:900](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L900) +[src/types/app-client.ts:902](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L902) ___ @@ -1258,7 +1276,7 @@ The smart contract response with an updated return value #### Defined in -[src/types/app-client.ts:925](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L925) +[src/types/app-client.ts:927](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L927) ___ @@ -1290,7 +1308,7 @@ The compiled code and any compilation results (including source maps) #### Defined in -[src/types/app-client.ts:1049](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1049) +[src/types/app-client.ts:1054](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1054) ___ @@ -1323,7 +1341,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:965](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L965) +[src/types/app-client.ts:970](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L970) ___ @@ -1368,7 +1386,7 @@ const appClient = await AppClient.fromCreatorAndName({ #### Defined in -[src/types/app-client.ts:595](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L595) +[src/types/app-client.ts:597](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L597) ___ @@ -1410,7 +1428,7 @@ const appClient = await AppClient.fromNetwork({ #### Defined in -[src/types/app-client.ts:624](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L624) +[src/types/app-client.ts:626](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L626) ___ @@ -1441,4 +1459,4 @@ const arc56AppSpec = AppClient.normaliseAppSpec(appSpec) #### Defined in -[src/types/app-client.ts:652](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L652) +[src/types/app-client.ts:654](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L654) diff --git a/docs/code/classes/types_app_client.ApplicationClient.md b/docs/code/classes/types_app_client.ApplicationClient.md index bcc2c015..eecc5c10 100644 --- a/docs/code/classes/types_app_client.ApplicationClient.md +++ b/docs/code/classes/types_app_client.ApplicationClient.md @@ -92,7 +92,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1781](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1781) +[src/types/app-client.ts:1814](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1814) ## Properties @@ -102,7 +102,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1764](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1764) +[src/types/app-client.ts:1797](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1797) ___ @@ -112,7 +112,7 @@ ___ #### Defined in -[src/types/app-client.ts:1763](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1763) +[src/types/app-client.ts:1796](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1796) ___ @@ -122,7 +122,7 @@ ___ #### Defined in -[src/types/app-client.ts:1766](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1766) +[src/types/app-client.ts:1799](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1799) ___ @@ -132,7 +132,7 @@ ___ #### Defined in -[src/types/app-client.ts:1768](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1768) +[src/types/app-client.ts:1801](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1801) ___ @@ -142,7 +142,7 @@ ___ #### Defined in -[src/types/app-client.ts:1769](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1769) +[src/types/app-client.ts:1802](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1802) ___ @@ -152,7 +152,7 @@ ___ #### Defined in -[src/types/app-client.ts:1765](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1765) +[src/types/app-client.ts:1798](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1798) ___ @@ -162,7 +162,7 @@ ___ #### Defined in -[src/types/app-client.ts:1755](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1755) +[src/types/app-client.ts:1788](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1788) ___ @@ -172,7 +172,7 @@ ___ #### Defined in -[src/types/app-client.ts:1757](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1757) +[src/types/app-client.ts:1790](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1790) ___ @@ -182,7 +182,7 @@ ___ #### Defined in -[src/types/app-client.ts:1761](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1761) +[src/types/app-client.ts:1794](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1794) ___ @@ -192,7 +192,7 @@ ___ #### Defined in -[src/types/app-client.ts:1760](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1760) +[src/types/app-client.ts:1793](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1793) ___ @@ -202,7 +202,7 @@ ___ #### Defined in -[src/types/app-client.ts:1756](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1756) +[src/types/app-client.ts:1789](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1789) ___ @@ -212,7 +212,7 @@ ___ #### Defined in -[src/types/app-client.ts:1759](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1759) +[src/types/app-client.ts:1792](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1792) ___ @@ -222,7 +222,7 @@ ___ #### Defined in -[src/types/app-client.ts:1758](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1758) +[src/types/app-client.ts:1791](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1791) ## Methods @@ -250,7 +250,7 @@ Issues a no_op (normal) call to the app. #### Defined in -[src/types/app-client.ts:2104](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2104) +[src/types/app-client.ts:2137](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2137) ___ @@ -279,7 +279,7 @@ Issues a call to the app with the given call type. #### Defined in -[src/types/app-client.ts:2186](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2186) +[src/types/app-client.ts:2219](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2219) ___ @@ -307,7 +307,7 @@ Issues a clear_state call to the app. #### Defined in -[src/types/app-client.ts:2163](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2163) +[src/types/app-client.ts:2196](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2196) ___ @@ -335,7 +335,7 @@ Issues a close_out call to the app. #### Defined in -[src/types/app-client.ts:2152](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2152) +[src/types/app-client.ts:2185](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2185) ___ @@ -363,7 +363,7 @@ Compiles the approval and clear state programs and sets up the source map. #### Defined in -[src/types/app-client.ts:1820](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1820) +[src/types/app-client.ts:1853](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1853) ___ @@ -391,7 +391,7 @@ Creates a smart contract app, returns the details of the created app. #### Defined in -[src/types/app-client.ts:1999](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1999) +[src/types/app-client.ts:2032](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2032) ___ @@ -419,7 +419,7 @@ Issues a delete_application call to the app. #### Defined in -[src/types/app-client.ts:2174](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2174) +[src/types/app-client.ts:2207](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2207) ___ @@ -453,7 +453,7 @@ To understand the architecture decisions behind this functionality please see ht #### Defined in -[src/types/app-client.ts:1888](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1888) +[src/types/app-client.ts:1921](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1921) ___ @@ -471,7 +471,7 @@ The source maps #### Defined in -[src/types/app-client.ts:1853](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1853) +[src/types/app-client.ts:1886](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1886) ___ @@ -498,7 +498,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:2508](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2508) +[src/types/app-client.ts:2541](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2541) ___ @@ -522,7 +522,7 @@ The result of the funding #### Defined in -[src/types/app-client.ts:2225](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2225) +[src/types/app-client.ts:2258](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2258) ___ @@ -546,7 +546,7 @@ The ABI method for the given method #### Defined in -[src/types/app-client.ts:2466](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2466) +[src/types/app-client.ts:2499](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2499) ___ @@ -574,7 +574,7 @@ Returns the ABI Method parameters for the given method name string for the app r #### Defined in -[src/types/app-client.ts:2444](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2444) +[src/types/app-client.ts:2477](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2477) ___ @@ -594,7 +594,7 @@ ___ #### Defined in -[src/types/app-client.ts:2524](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2524) +[src/types/app-client.ts:2557](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2557) ___ @@ -617,7 +617,7 @@ Gets the reference information for the current application instance. #### Defined in -[src/types/app-client.ts:2478](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2478) +[src/types/app-client.ts:2511](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2511) ___ @@ -635,7 +635,7 @@ The names of the boxes #### Defined in -[src/types/app-client.ts:2281](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2281) +[src/types/app-client.ts:2314](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2314) ___ @@ -659,7 +659,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2296](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2296) +[src/types/app-client.ts:2329](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2329) ___ @@ -684,7 +684,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2312](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2312) +[src/types/app-client.ts:2345](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2345) ___ @@ -709,7 +709,7 @@ The (name, value) pair of the boxes with values as raw byte arrays #### Defined in -[src/types/app-client.ts:2328](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2328) +[src/types/app-client.ts:2361](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2361) ___ @@ -735,7 +735,7 @@ The (name, value) pair of the boxes with values as the ABI Value #### Defined in -[src/types/app-client.ts:2350](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2350) +[src/types/app-client.ts:2383](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2383) ___ @@ -764,7 +764,7 @@ Returns the arguments for an app call for the given ABI method or raw method spe #### Defined in -[src/types/app-client.ts:2374](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2374) +[src/types/app-client.ts:2407](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2407) ___ @@ -782,7 +782,7 @@ The global state #### Defined in -[src/types/app-client.ts:2253](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2253) +[src/types/app-client.ts:2286](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2286) ___ @@ -806,7 +806,7 @@ The global state #### Defined in -[src/types/app-client.ts:2267](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2267) +[src/types/app-client.ts:2300](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2300) ___ @@ -828,7 +828,7 @@ Import source maps for the app. #### Defined in -[src/types/app-client.ts:1870](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1870) +[src/types/app-client.ts:1903](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1903) ___ @@ -856,7 +856,7 @@ Issues a opt_in call to the app. #### Defined in -[src/types/app-client.ts:2141](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2141) +[src/types/app-client.ts:2174](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2174) ___ @@ -884,4 +884,4 @@ Updates the smart contract app. #### Defined in -[src/types/app-client.ts:2063](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2063) +[src/types/app-client.ts:2096](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2096) diff --git a/docs/code/classes/types_app_factory.AppFactory.md b/docs/code/classes/types_app_factory.AppFactory.md index 4f94eb2a..ce5705a2 100644 --- a/docs/code/classes/types_app_factory.AppFactory.md +++ b/docs/code/classes/types_app_factory.AppFactory.md @@ -386,7 +386,7 @@ const result = await factory.compile() #### Defined in -[src/types/app-factory.ts:615](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L615) +[src/types/app-factory.ts:620](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L620) ___ @@ -476,7 +476,7 @@ The source maps #### Defined in -[src/types/app-factory.ts:496](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L496) +[src/types/app-factory.ts:501](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L501) ___ @@ -502,7 +502,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-factory.ts:484](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L484) +[src/types/app-factory.ts:489](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L489) ___ @@ -530,7 +530,7 @@ ___ #### Defined in -[src/types/app-factory.ts:640](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L640) +[src/types/app-factory.ts:645](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L645) ___ @@ -572,7 +572,7 @@ const appClient = factory.getAppClientByCreatorAndName({ creatorAddress: 'CREATO #### Defined in -[src/types/app-factory.ts:465](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L465) +[src/types/app-factory.ts:470](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L470) ___ @@ -611,7 +611,7 @@ const appClient = factory.getAppClientById({ appId: 12345n }) #### Defined in -[src/types/app-factory.ts:439](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L439) +[src/types/app-factory.ts:444](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L444) ___ @@ -639,7 +639,7 @@ ___ #### Defined in -[src/types/app-factory.ts:628](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L628) +[src/types/app-factory.ts:633](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L633) ___ @@ -660,7 +660,7 @@ ___ #### Defined in -[src/types/app-factory.ts:659](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L659) +[src/types/app-factory.ts:664](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L664) ___ @@ -680,7 +680,7 @@ ___ #### Defined in -[src/types/app-factory.ts:518](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L518) +[src/types/app-factory.ts:523](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L523) ___ @@ -704,7 +704,7 @@ ___ #### Defined in -[src/types/app-factory.ts:532](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L532) +[src/types/app-factory.ts:537](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L537) ___ @@ -727,7 +727,7 @@ if none provided and throws an error if neither provided #### Defined in -[src/types/app-factory.ts:687](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L687) +[src/types/app-factory.ts:692](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L692) ___ @@ -752,7 +752,7 @@ or `undefined` otherwise (so the signer is resolved from `AlgorandClient`) #### Defined in -[src/types/app-factory.ts:697](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L697) +[src/types/app-factory.ts:702](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L702) ___ @@ -780,7 +780,7 @@ Make the given call and catch any errors, augmenting with debugging information #### Defined in -[src/types/app-factory.ts:592](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L592) +[src/types/app-factory.ts:597](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L597) ___ @@ -802,7 +802,7 @@ Import source maps for the app. #### Defined in -[src/types/app-factory.ts:513](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L513) +[src/types/app-factory.ts:518](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L518) ___ @@ -837,4 +837,4 @@ The smart contract response with an updated return value #### Defined in -[src/types/app-factory.ts:714](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L714) +[src/types/app-factory.ts:719](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-factory.ts#L719) diff --git a/docs/code/modules/index.md b/docs/code/modules/index.md index 6c4d9556..58d9e6f2 100644 --- a/docs/code/modules/index.md +++ b/docs/code/modules/index.md @@ -575,7 +575,7 @@ the estimated rate. #### Defined in -[src/transaction/transaction.ts:1057](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1057) +[src/transaction/transaction.ts:1060](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1060) ___ @@ -639,7 +639,7 @@ Allows for control of fees on a `Transaction` or `SuggestedParams` object #### Defined in -[src/transaction/transaction.ts:1084](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1084) +[src/transaction/transaction.ts:1087](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1087) ___ @@ -966,7 +966,7 @@ Converts `bigint`'s for Uint's < 64 to `number` for easier use. #### Defined in -[src/transaction/transaction.ts:927](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L927) +[src/transaction/transaction.ts:930](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L930) ___ @@ -1942,7 +1942,7 @@ Returns the array of transactions currently present in the given `AtomicTransact #### Defined in -[src/transaction/transaction.ts:1133](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1133) +[src/transaction/transaction.ts:1136](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1136) ___ @@ -2329,7 +2329,7 @@ Returns suggested transaction parameters from algod unless some are already prov #### Defined in -[src/transaction/transaction.ts:1111](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1111) +[src/transaction/transaction.ts:1114](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1114) ___ @@ -2969,7 +2969,7 @@ Signs and sends a group of [up to 16](https://dev.algorand.co/concepts/transacti #### Defined in -[src/transaction/transaction.ts:956](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L956) +[src/transaction/transaction.ts:959](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L959) ___ @@ -3242,4 +3242,4 @@ Throws an error if the transaction is not confirmed or rejected in the next `tim #### Defined in -[src/transaction/transaction.ts:1000](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1000) +[src/transaction/transaction.ts:1003](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1003) diff --git a/src/transaction/transaction.ts b/src/transaction/transaction.ts index 3e979a7c..118ac9b3 100644 --- a/src/transaction/transaction.ts +++ b/src/transaction/transaction.ts @@ -899,6 +899,9 @@ export const sendAtomicTransactionComposer = async function (atcSend: AtomicTran err, ) } + + // Attach the sent transactions so we can use them in error transformers + err.sentTransactions = atc.buildGroup().map((t) => t.txn) throw err } } diff --git a/src/types/app-client.ts b/src/types/app-client.ts index bfa237b4..36fdf187 100644 --- a/src/types/app-client.ts +++ b/src/types/app-client.ts @@ -497,6 +497,7 @@ export class AppClient { private _sendMethods: ReturnType & { /** Interact with bare (raw) calls */ bare: ReturnType } + private _lastCompiled: { clear?: Uint8Array; approval?: Uint8Array } /** * Create a new app client. @@ -519,6 +520,7 @@ export class AppClient { this._algorand.registerErrorTransformer!(this.handleCallErrors) this._defaultSender = typeof params.defaultSender === 'string' ? Address.fromString(params.defaultSender) : params.defaultSender this._defaultSigner = params.defaultSigner + this._lastCompiled = {} this._approvalSourceMap = params.approvalSourceMap this._clearSourceMap = params.clearSourceMap @@ -946,9 +948,12 @@ export class AppClient { if (result.compiledApproval) { this._approvalSourceMap = result.compiledApproval.sourceMap + + this._lastCompiled.approval = result.compiledApproval.compiledBase64ToBytes } if (result.compiledClear) { this._clearSourceMap = result.compiledClear.sourceMap + this._lastCompiled.clear = result.compiledClear.compiledBase64ToBytes } return result @@ -1563,10 +1568,38 @@ export class AppClient { } /** Make the given call and catch any errors, augmenting with debugging information before re-throwing. */ - private handleCallErrors = async (e: Error) => { - // Only handle errors for this app. - const appIdString = `app=${this._appId.toString()}` - if (!e.message.includes(appIdString)) return e + private handleCallErrors = async (e: Error & { sentTransactions?: algosdk.Transaction[] }) => { + // We can't use the app ID in an error to identify new apps, so instead we check the programs + // to identify if this is the correct app + if (this.appId === 0n) { + if (e.sentTransactions === undefined) return e + + const txns = e.sentTransactions + + const txn = txns.find((t) => e.message.includes(t.txID())) + + const programsDefinedAndEqual = (a: Uint8Array | undefined, b: Uint8Array | undefined) => { + if (a === undefined || b === undefined) return false + if (a.length !== b.length) return false + + for (let i = 0; i < a.length; i++) { + if (a[i] !== b[i]) return false + } + + return true + } + + if ( + !programsDefinedAndEqual(txn?.applicationCall?.clearProgram, this._lastCompiled.clear) || + !programsDefinedAndEqual(txn?.applicationCall?.approvalProgram, this._lastCompiled?.approval) + ) { + return e + } + } else { + // Only handle errors for this app. + const appIdString = `app=${this._appId.toString()}` + if (!e.message.includes(appIdString)) return e + } const logicError = await this.exposeLogicError(e) if (logicError instanceof LogicError) { diff --git a/src/types/app-factory-and-client.spec.ts b/src/types/app-factory-and-client.spec.ts index 410e89ea..720fc078 100644 --- a/src/types/app-factory-and-client.spec.ts +++ b/src/types/app-factory-and-client.spec.ts @@ -8,6 +8,7 @@ import smallAppArc56Json from '../../tests/example-contracts/extra-pages/small.a import errorInnerAppArc56Json from '../../tests/example-contracts/inner_error/artifacts/InnerApp.arc56.json' import errorMiddleAppArc56Json from '../../tests/example-contracts/inner_error/artifacts/MiddleApp.arc56.json' import errorOuterAppArc56Json from '../../tests/example-contracts/inner_error/artifacts/OuterApp.arc56.json' +import deployErrorAppArc56Json from '../../tests/example-contracts/deploy_error/artifacts/DeployError.arc56.json' import { getTestingAppContract } from '../../tests/example-contracts/testing-app/contract' import { algoKitLogCaptureFixture, algorandFixture } from '../testing' import { asJson } from '../util' @@ -790,6 +791,16 @@ describe('ARC56: app-factory-and-app-client', () => { ).rejects.toThrow('custom error message') }) + test('ARC56 error message on deploy', async () => { + const deployErrorFactory = localnet.algorand.client.getAppFactory({ + // @ts-expect-error TODO: Fix this + appSpec: deployErrorAppArc56Json, + defaultSender: localnet.context.testAccount.addr, + }) + + await expect(deployErrorFactory.deploy({ createParams: { method: 'createApplication' } })).rejects.toThrow('custom error message') + }) + test('ARC56 error messages with dynamic template vars (cblock offset)', async () => { const { appClient } = await factory.deploy({ createParams: { diff --git a/src/types/app-factory.ts b/src/types/app-factory.ts index a9d1b6c5..445a5b0d 100644 --- a/src/types/app-factory.ts +++ b/src/types/app-factory.ts @@ -373,7 +373,12 @@ export class AppFactory { const updatable = params.updatable ?? this._updatable ?? this.getDeployTimeControl('updatable') const deletable = params.deletable ?? this._deletable ?? this.getDeployTimeControl('deletable') const deployTimeParams = params.deployTimeParams ?? this._deployTimeParams - const compiled = await this.compile({ deployTimeParams, updatable, deletable }) + + // Compile using a appID 0 AppClient so we can register the error handler and use the programs + // to identify the app within the error handler (because we can't use app ID 0) + const tempAppClient = this.getAppClientById({ appId: 0n }) + const compiled = await tempAppClient.compile({ deployTimeParams, updatable, deletable }) + const deployResult = await this._algorand.appDeployer.deploy({ ...params, createParams: await (params.createParams && 'method' in params.createParams diff --git a/tests/example-contracts/deploy_error/.gitignore b/tests/example-contracts/deploy_error/.gitignore new file mode 100644 index 00000000..ca635e07 --- /dev/null +++ b/tests/example-contracts/deploy_error/.gitignore @@ -0,0 +1,3 @@ +artifacts/* +!artifacts/*.arc56.json +!artifacts/*.approval.teal diff --git a/tests/example-contracts/deploy_error/artifacts/DeployError.approval.teal b/tests/example-contracts/deploy_error/artifacts/DeployError.approval.teal new file mode 100644 index 00000000..bd6dd3c7 --- /dev/null +++ b/tests/example-contracts/deploy_error/artifacts/DeployError.approval.teal @@ -0,0 +1,46 @@ +#pragma version 10 + +// This TEAL was generated by TEALScript v0.106.3 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +pushint 6 +* +txn OnCompletion ++ +switch *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// createApplication()void +*abi_route_createApplication: + // execute createApplication()void + callsub createApplication + pushint 1 + return + +// createApplication(): void +createApplication: + proto 0 0 + + // custom error message + err + retsub + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err \ No newline at end of file diff --git a/tests/example-contracts/deploy_error/artifacts/DeployError.arc56.json b/tests/example-contracts/deploy_error/artifacts/DeployError.arc56.json new file mode 100644 index 00000000..a3bbcb74 --- /dev/null +++ b/tests/example-contracts/deploy_error/artifacts/DeployError.arc56.json @@ -0,0 +1,257 @@ +{ + "name": "DeployError", + "desc": "", + "methods": [ + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": {}, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "deploy_error.algo.ts:3", + "pc": [ + 0 + ] + }, + { + "teal": 13, + "source": "deploy_error.algo.ts:3", + "pc": [ + 1, + 2 + ] + }, + { + "teal": 14, + "source": "deploy_error.algo.ts:3", + "pc": [ + 3 + ] + }, + { + "teal": 15, + "source": "deploy_error.algo.ts:3", + "pc": [ + 4, + 5 + ] + }, + { + "teal": 16, + "source": "deploy_error.algo.ts:3", + "pc": [ + 6 + ] + }, + { + "teal": 17, + "source": "deploy_error.algo.ts:3", + "pc": [ + 7, + 8 + ] + }, + { + "teal": 18, + "source": "deploy_error.algo.ts:3", + "pc": [ + 9 + ] + }, + { + "teal": 19, + "source": "deploy_error.algo.ts:3", + "pc": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35 + ] + }, + { + "teal": 23, + "source": "deploy_error.algo.ts:3", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 36 + ] + }, + { + "teal": 28, + "source": "deploy_error.algo.ts:4", + "pc": [ + 37, + 38, + 39 + ] + }, + { + "teal": 29, + "source": "deploy_error.algo.ts:4", + "pc": [ + 40, + 41 + ] + }, + { + "teal": 30, + "source": "deploy_error.algo.ts:4", + "pc": [ + 42 + ] + }, + { + "teal": 34, + "source": "deploy_error.algo.ts:4", + "pc": [ + 43, + 44, + 45 + ] + }, + { + "teal": 37, + "source": "deploy_error.algo.ts:5", + "errorMessage": "custom error message", + "pc": [ + 46 + ] + }, + { + "teal": 38, + "source": "deploy_error.algo.ts:4", + "pc": [ + 47 + ] + }, + { + "teal": 41, + "source": "deploy_error.algo.ts:3", + "pc": [ + 48, + 49, + 50, + 51, + 52, + 53 + ] + }, + { + "teal": 42, + "source": "deploy_error.algo.ts:3", + "pc": [ + 54, + 55, + 56 + ] + }, + { + "teal": 43, + "source": "deploy_error.algo.ts:3", + "pc": [ + 57, + 58, + 59, + 60 + ] + }, + { + "teal": 46, + "source": "deploy_error.algo.ts:3", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 61 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4zCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXBwbGljYXRpb24KCXB1c2hpbnQgMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY3VzdG9tIGVycm9yIG1lc3NhZ2UKCWVycgoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJy", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CjEYFIEGCzEZCI0MAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAIgAA4EBQ4oAAACJgAS4RHs2NhoAjgH/6AA=", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 4, + "minor": 0, + "patch": 2, + "commitHash": "6b940281" + } + } +} \ No newline at end of file diff --git a/tests/example-contracts/deploy_error/deploy_error.algo.ts b/tests/example-contracts/deploy_error/deploy_error.algo.ts new file mode 100644 index 00000000..3cf8050e --- /dev/null +++ b/tests/example-contracts/deploy_error/deploy_error.algo.ts @@ -0,0 +1,7 @@ +import { Contract } from '@algorandfoundation/tealscript' + +export class DeployError extends Contract { + createApplication() { + throw new Error('custom error message') + } +} diff --git a/tests/example-contracts/deploy_error/tsconfig.json b/tests/example-contracts/deploy_error/tsconfig.json new file mode 100644 index 00000000..1ae20d27 --- /dev/null +++ b/tests/example-contracts/deploy_error/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + "module": "commonjs", /* Specify what module code is generated. */ + "strict": true, /* Enable all strict type-checking options. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From 68553bf7bb3459579b770b6346adc216354883e7 Mon Sep 17 00:00:00 2001 From: Hoang Dinh Date: Fri, 23 May 2025 10:04:32 +1000 Subject: [PATCH 05/10] fix: make tealscript a dev dependency (#402) --- package-lock.json | 152 +++++++++++++++++++++++++++++++++------------- package.json | 2 +- 2 files changed, 112 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 045449c2..2cccbd8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@algorandfoundation/tealscript": "^0.106.3", "buffer": "^6.0.3" }, "devDependencies": { + "@algorandfoundation/tealscript": "^0.106.3", "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@eslint/js": "^9.15.0", @@ -69,6 +69,7 @@ "version": "0.106.3", "resolved": "https://registry.npmjs.org/@algorandfoundation/tealscript/-/tealscript-0.106.3.tgz", "integrity": "sha512-IOlJx5nx1GfDt/zknNM/kQ6ZwXWKyibSgsRJPt7QA9Qpz8LuHAxw8BZM49FB/TZExiA/lQohzdSS/gvHnOkCTw==", + "dev": true, "dependencies": { "@microsoft/tsdoc": "^0.14.2", "@playwright/test": "^1.40.1", @@ -92,7 +93,7 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "license": "Apache-2.0", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1316,6 +1317,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1332,6 +1334,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { "node": ">=12" }, @@ -1343,6 +1346,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1420,12 +1424,13 @@ "version": "0.14.2", "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", - "license": "MIT" + "dev": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1438,6 +1443,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "engines": { "node": ">= 8" } @@ -1446,6 +1452,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1603,18 +1610,19 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "optional": true, "engines": { "node": ">=14" } }, "node_modules/@playwright/test": { - "version": "1.51.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz", - "integrity": "sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==", - "license": "Apache-2.0", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", + "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", + "dev": true, "dependencies": { - "playwright": "1.51.1" + "playwright": "1.52.0" }, "bin": { "playwright": "cli.js" @@ -2552,7 +2560,7 @@ "version": "0.21.0", "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.21.0.tgz", "integrity": "sha512-ES110Mmne5Vi4ypUKrtVQfXFDtCsDXiUiGxF6ILVlE90dDD4fdpC1LSjydl/ml7xJWKSDZwUYD2zkOePMSrPBA==", - "license": "MIT", + "dev": true, "dependencies": { "fast-glob": "^3.2.12", "minimatch": "^7.4.3", @@ -2564,7 +2572,7 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "license": "ISC", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3156,6 +3164,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3170,6 +3179,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3195,7 +3205,8 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/argv-formatter": { "version": "1.0.0", @@ -3295,7 +3306,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base64-js": { "version": "1.5.1", @@ -3360,6 +3372,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -3368,6 +3381,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -3698,12 +3712,13 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", - "license": "MIT" + "dev": true }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3714,7 +3729,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/commander": { "version": "8.3.0", @@ -3999,6 +4015,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4225,6 +4242,7 @@ "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, "engines": { "node": ">=12" }, @@ -4268,12 +4286,14 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/emojilib": { "version": "2.4.0", @@ -4912,6 +4932,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4927,6 +4948,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -4950,6 +4972,7 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -4986,6 +5009,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5071,6 +5095,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -5086,6 +5111,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "engines": { "node": ">=14" }, @@ -5290,6 +5316,7 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -5551,7 +5578,8 @@ "node_modules/hi-base32": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", - "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==" + "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==", + "dev": true }, "node_modules/highlight.js": { "version": "10.7.3", @@ -5871,6 +5899,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5879,6 +5908,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -5887,6 +5917,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -5916,6 +5947,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -6086,7 +6118,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/issue-parser": { "version": "7.0.1", @@ -6144,6 +6177,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -6187,7 +6221,8 @@ "node_modules/js-sha512": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", - "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==" + "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", + "dev": true }, "node_modules/js-tokens": { "version": "4.0.0", @@ -6619,6 +6654,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "engines": { "node": ">= 8" } @@ -6627,6 +6663,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -6654,6 +6691,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6677,6 +6715,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -6685,7 +6724,7 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "license": "MIT", + "dev": true, "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -6774,6 +6813,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9933,7 +9973,8 @@ "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true }, "node_modules/parent-module": { "version": "1.0.1", @@ -10002,7 +10043,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT" + "dev": true }, "node_modules/path-exists": { "version": "4.0.0", @@ -10017,6 +10058,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { "node": ">=8" } @@ -10031,6 +10073,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -10045,7 +10088,8 @@ "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", @@ -10081,6 +10125,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -10190,12 +10235,12 @@ } }, "node_modules/playwright": { - "version": "1.51.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz", - "integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==", - "license": "Apache-2.0", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", + "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "dev": true, "dependencies": { - "playwright-core": "1.51.1" + "playwright-core": "1.52.0" }, "bin": { "playwright": "cli.js" @@ -10208,10 +10253,10 @@ } }, "node_modules/playwright-core": { - "version": "1.51.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz", - "integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==", - "license": "Apache-2.0", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", + "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "dev": true, "bin": { "playwright-core": "cli.js" }, @@ -10223,8 +10268,8 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -10237,7 +10282,7 @@ "version": "0.17.0", "resolved": "https://registry.npmjs.org/polytype/-/polytype-0.17.0.tgz", "integrity": "sha512-Q1y07MZqHPlGRJs8qI8bnxrQs+W3r24v25cmhbQV/lC9VNNtd+smi/2m3CUHNBDTfLtl+6SpA0EsL/J1oVsEag==", - "license": "ISC", + "dev": true, "engines": { "node": ">=16.0.0" } @@ -10343,6 +10388,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -10673,6 +10719,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -10819,6 +10866,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -11180,6 +11228,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -11191,6 +11240,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { "node": ">=8" } @@ -11370,7 +11420,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", + "dev": true, "engines": { "node": ">= 8" } @@ -11466,6 +11516,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -11483,6 +11534,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11495,12 +11547,14 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { "node": ">=12" }, @@ -11512,6 +11566,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -11589,6 +11644,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11601,6 +11657,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11864,6 +11921,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -11874,7 +11932,8 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "node_modules/traverse": { "version": "0.6.8", @@ -11904,7 +11963,7 @@ "version": "20.0.0", "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-20.0.0.tgz", "integrity": "sha512-JVmEJy2Wow5n/84I3igthL9sudQ8qzjh/6i4tmYCm6IqYyKFlNbJZi7oBdjyqcWSWYRu3CtL0xbT6fS03ESZIg==", - "license": "MIT", + "dev": true, "dependencies": { "@ts-morph/common": "~0.21.0", "code-block-writer": "^12.0.0" @@ -12449,7 +12508,8 @@ "node_modules/vlq": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/vlq/-/vlq-2.0.4.tgz", - "integrity": "sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==" + "integrity": "sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==", + "dev": true }, "node_modules/vscode-oniguruma": { "version": "1.7.0", @@ -12466,12 +12526,14 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -12481,6 +12543,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -12552,6 +12615,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -12569,6 +12633,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12584,12 +12649,14 @@ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12603,6 +12670,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { "node": ">=12" }, @@ -12614,6 +12682,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "engines": { "node": ">=12" }, @@ -12625,6 +12694,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, diff --git a/package.json b/package.json index 7dd773e5..5bbda5ec 100644 --- a/package.json +++ b/package.json @@ -61,13 +61,13 @@ "esbuild": "0.25.0" }, "dependencies": { - "@algorandfoundation/tealscript": "^0.106.3", "buffer": "^6.0.3" }, "peerDependencies": { "algosdk": "^3.0.0" }, "devDependencies": { + "@algorandfoundation/tealscript": "^0.106.3", "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@eslint/js": "^9.15.0", From 864b4fbb7bdd99a0f2beacd4cc7387342e839b4d Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Fri, 30 May 2025 07:04:27 -0400 Subject: [PATCH 06/10] fix: ensure byte arrays are decoded as Uint8Array (#406) * feat: better error when a state key cannot be found * fix: ensure all byte arrays are decoded as Uint8Array * fix: call .toString on the type instance instead of class Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../classes/types_app_arc56.Arc56Method.md | 10 +- .../types_app_client.ApplicationClient.md | 80 +- .../types_composer.TransactionComposer.md | 2 +- .../types_app_arc56.Arc56Contract.md | 30 +- docs/code/interfaces/types_app_arc56.Event.md | 6 +- .../code/interfaces/types_app_arc56.Method.md | 16 +- .../types_app_arc56.ProgramSourceInfo.md | 4 +- .../interfaces/types_app_arc56.StorageKey.md | 8 +- .../interfaces/types_app_arc56.StorageMap.md | 8 +- .../interfaces/types_app_arc56.StructField.md | 4 +- docs/code/modules/index.md | 43 +- docs/code/modules/types_app_arc56.md | 32 +- src/transaction/transaction.spec.ts | 2 +- src/transaction/transaction.ts | 30 +- src/types/app-arc56.ts | 17 +- src/types/app-client.ts | 2 + src/types/app-factory-and-client.spec.ts | 143 +- src/types/app-manager.ts | 2 +- src/types/composer.ts | 5 +- src/util.spec.ts | 193 + src/util.ts | 39 + .../artifacts/ByteArrays.approval.teal | 533 +++ .../artifacts/ByteArrays.arc32.json | 148 + .../artifacts/ByteArrays.arc4.json | 48 + .../artifacts/ByteArrays.arc56.json | 3292 +++++++++++++++++ .../artifacts/ByteArrays.clear.teal | 1 + .../artifacts/ByteArrays.src_map.json | 2939 +++++++++++++++ .../byte_arrays/byte_arrays.algo.ts | 130 + .../byte_arrays/tsconfig.json | 103 + 29 files changed, 7733 insertions(+), 137 deletions(-) create mode 100644 src/util.spec.ts create mode 100644 tests/example-contracts/byte_arrays/artifacts/ByteArrays.approval.teal create mode 100644 tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc32.json create mode 100644 tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc4.json create mode 100644 tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc56.json create mode 100644 tests/example-contracts/byte_arrays/artifacts/ByteArrays.clear.teal create mode 100644 tests/example-contracts/byte_arrays/artifacts/ByteArrays.src_map.json create mode 100644 tests/example-contracts/byte_arrays/byte_arrays.algo.ts create mode 100644 tests/example-contracts/byte_arrays/tsconfig.json diff --git a/docs/code/classes/types_app_arc56.Arc56Method.md b/docs/code/classes/types_app_arc56.Arc56Method.md index 75a66a2f..57fedae2 100644 --- a/docs/code/classes/types_app_arc56.Arc56Method.md +++ b/docs/code/classes/types_app_arc56.Arc56Method.md @@ -58,7 +58,7 @@ algosdk.ABIMethod.constructor #### Defined in -[src/types/app-arc56.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L26) +[src/types/app-arc56.ts:27](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L27) ## Properties @@ -72,7 +72,7 @@ algosdk.ABIMethod.args #### Defined in -[src/types/app-arc56.ts:23](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L23) +[src/types/app-arc56.ts:24](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L24) ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[src/types/app-arc56.ts:26](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L26) +[src/types/app-arc56.ts:27](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L27) ___ @@ -160,7 +160,7 @@ algosdk.ABIMethod.returns #### Defined in -[src/types/app-arc56.ts:24](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L24) +[src/types/app-arc56.ts:25](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L25) ## Methods @@ -214,7 +214,7 @@ algosdk.ABIMethod.toJSON #### Defined in -[src/types/app-arc56.ts:38](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L38) +[src/types/app-arc56.ts:39](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L39) ___ diff --git a/docs/code/classes/types_app_client.ApplicationClient.md b/docs/code/classes/types_app_client.ApplicationClient.md index eecc5c10..3484d135 100644 --- a/docs/code/classes/types_app_client.ApplicationClient.md +++ b/docs/code/classes/types_app_client.ApplicationClient.md @@ -92,7 +92,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1814](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1814) +[src/types/app-client.ts:1816](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1816) ## Properties @@ -102,7 +102,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1797](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1797) +[src/types/app-client.ts:1799](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1799) ___ @@ -112,7 +112,7 @@ ___ #### Defined in -[src/types/app-client.ts:1796](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1796) +[src/types/app-client.ts:1798](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1798) ___ @@ -122,7 +122,7 @@ ___ #### Defined in -[src/types/app-client.ts:1799](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1799) +[src/types/app-client.ts:1801](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1801) ___ @@ -132,7 +132,7 @@ ___ #### Defined in -[src/types/app-client.ts:1801](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1801) +[src/types/app-client.ts:1803](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1803) ___ @@ -142,7 +142,7 @@ ___ #### Defined in -[src/types/app-client.ts:1802](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1802) +[src/types/app-client.ts:1804](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1804) ___ @@ -152,7 +152,7 @@ ___ #### Defined in -[src/types/app-client.ts:1798](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1798) +[src/types/app-client.ts:1800](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1800) ___ @@ -162,7 +162,7 @@ ___ #### Defined in -[src/types/app-client.ts:1788](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1788) +[src/types/app-client.ts:1790](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1790) ___ @@ -172,7 +172,7 @@ ___ #### Defined in -[src/types/app-client.ts:1790](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1790) +[src/types/app-client.ts:1792](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1792) ___ @@ -182,7 +182,7 @@ ___ #### Defined in -[src/types/app-client.ts:1794](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1794) +[src/types/app-client.ts:1796](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1796) ___ @@ -192,7 +192,7 @@ ___ #### Defined in -[src/types/app-client.ts:1793](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1793) +[src/types/app-client.ts:1795](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1795) ___ @@ -202,7 +202,7 @@ ___ #### Defined in -[src/types/app-client.ts:1789](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1789) +[src/types/app-client.ts:1791](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1791) ___ @@ -212,7 +212,7 @@ ___ #### Defined in -[src/types/app-client.ts:1792](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1792) +[src/types/app-client.ts:1794](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1794) ___ @@ -222,7 +222,7 @@ ___ #### Defined in -[src/types/app-client.ts:1791](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1791) +[src/types/app-client.ts:1793](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1793) ## Methods @@ -250,7 +250,7 @@ Issues a no_op (normal) call to the app. #### Defined in -[src/types/app-client.ts:2137](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2137) +[src/types/app-client.ts:2139](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2139) ___ @@ -279,7 +279,7 @@ Issues a call to the app with the given call type. #### Defined in -[src/types/app-client.ts:2219](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2219) +[src/types/app-client.ts:2221](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2221) ___ @@ -307,7 +307,7 @@ Issues a clear_state call to the app. #### Defined in -[src/types/app-client.ts:2196](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2196) +[src/types/app-client.ts:2198](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2198) ___ @@ -335,7 +335,7 @@ Issues a close_out call to the app. #### Defined in -[src/types/app-client.ts:2185](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2185) +[src/types/app-client.ts:2187](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2187) ___ @@ -363,7 +363,7 @@ Compiles the approval and clear state programs and sets up the source map. #### Defined in -[src/types/app-client.ts:1853](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1853) +[src/types/app-client.ts:1855](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1855) ___ @@ -391,7 +391,7 @@ Creates a smart contract app, returns the details of the created app. #### Defined in -[src/types/app-client.ts:2032](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2032) +[src/types/app-client.ts:2034](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2034) ___ @@ -419,7 +419,7 @@ Issues a delete_application call to the app. #### Defined in -[src/types/app-client.ts:2207](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2207) +[src/types/app-client.ts:2209](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2209) ___ @@ -453,7 +453,7 @@ To understand the architecture decisions behind this functionality please see ht #### Defined in -[src/types/app-client.ts:1921](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1921) +[src/types/app-client.ts:1923](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1923) ___ @@ -471,7 +471,7 @@ The source maps #### Defined in -[src/types/app-client.ts:1886](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1886) +[src/types/app-client.ts:1888](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1888) ___ @@ -498,7 +498,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:2541](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2541) +[src/types/app-client.ts:2543](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2543) ___ @@ -522,7 +522,7 @@ The result of the funding #### Defined in -[src/types/app-client.ts:2258](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2258) +[src/types/app-client.ts:2260](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2260) ___ @@ -546,7 +546,7 @@ The ABI method for the given method #### Defined in -[src/types/app-client.ts:2499](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2499) +[src/types/app-client.ts:2501](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2501) ___ @@ -574,7 +574,7 @@ Returns the ABI Method parameters for the given method name string for the app r #### Defined in -[src/types/app-client.ts:2477](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2477) +[src/types/app-client.ts:2479](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2479) ___ @@ -594,7 +594,7 @@ ___ #### Defined in -[src/types/app-client.ts:2557](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2557) +[src/types/app-client.ts:2559](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2559) ___ @@ -617,7 +617,7 @@ Gets the reference information for the current application instance. #### Defined in -[src/types/app-client.ts:2511](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2511) +[src/types/app-client.ts:2513](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2513) ___ @@ -635,7 +635,7 @@ The names of the boxes #### Defined in -[src/types/app-client.ts:2314](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2314) +[src/types/app-client.ts:2316](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2316) ___ @@ -659,7 +659,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2329](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2329) +[src/types/app-client.ts:2331](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2331) ___ @@ -684,7 +684,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2345](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2345) +[src/types/app-client.ts:2347](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2347) ___ @@ -709,7 +709,7 @@ The (name, value) pair of the boxes with values as raw byte arrays #### Defined in -[src/types/app-client.ts:2361](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2361) +[src/types/app-client.ts:2363](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2363) ___ @@ -735,7 +735,7 @@ The (name, value) pair of the boxes with values as the ABI Value #### Defined in -[src/types/app-client.ts:2383](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2383) +[src/types/app-client.ts:2385](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2385) ___ @@ -764,7 +764,7 @@ Returns the arguments for an app call for the given ABI method or raw method spe #### Defined in -[src/types/app-client.ts:2407](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2407) +[src/types/app-client.ts:2409](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2409) ___ @@ -782,7 +782,7 @@ The global state #### Defined in -[src/types/app-client.ts:2286](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2286) +[src/types/app-client.ts:2288](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2288) ___ @@ -806,7 +806,7 @@ The global state #### Defined in -[src/types/app-client.ts:2300](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2300) +[src/types/app-client.ts:2302](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2302) ___ @@ -828,7 +828,7 @@ Import source maps for the app. #### Defined in -[src/types/app-client.ts:1903](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1903) +[src/types/app-client.ts:1905](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1905) ___ @@ -856,7 +856,7 @@ Issues a opt_in call to the app. #### Defined in -[src/types/app-client.ts:2174](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2174) +[src/types/app-client.ts:2176](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2176) ___ @@ -884,4 +884,4 @@ Updates the smart contract app. #### Defined in -[src/types/app-client.ts:2096](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2096) +[src/types/app-client.ts:2098](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2098) diff --git a/docs/code/classes/types_composer.TransactionComposer.md b/docs/code/classes/types_composer.TransactionComposer.md index a7a1281c..c05d4322 100644 --- a/docs/code/classes/types_composer.TransactionComposer.md +++ b/docs/code/classes/types_composer.TransactionComposer.md @@ -2026,4 +2026,4 @@ The binary encoded transaction note #### Defined in -[src/types/composer.ts:2155](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2155) +[src/types/composer.ts:2156](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L2156) diff --git a/docs/code/interfaces/types_app_arc56.Arc56Contract.md b/docs/code/interfaces/types_app_arc56.Arc56Contract.md index 2b4b064f..16223204 100644 --- a/docs/code/interfaces/types_app_arc56.Arc56Contract.md +++ b/docs/code/interfaces/types_app_arc56.Arc56Contract.md @@ -36,7 +36,7 @@ The ARCs used and/or supported by this contract. All contracts implicitly suppor #### Defined in -[src/types/app-arc56.ts:233](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L233) +[src/types/app-arc56.ts:244](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L244) ___ @@ -55,7 +55,7 @@ Supported bare actions for the contract. An action is a combination of call/crea #### Defined in -[src/types/app-arc56.ts:281](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L281) +[src/types/app-arc56.ts:292](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L292) ___ @@ -74,7 +74,7 @@ The compiled bytecode for the application. MUST be omitted if included as part o #### Defined in -[src/types/app-arc56.ts:302](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L302) +[src/types/app-arc56.ts:313](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L313) ___ @@ -97,7 +97,7 @@ Information used to get the given byteCode and/or PC values in sourceInfo. MUST #### Defined in -[src/types/app-arc56.ts:309](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L309) +[src/types/app-arc56.ts:320](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L320) ___ @@ -109,7 +109,7 @@ Optional, user-friendly description for the interface #### Defined in -[src/types/app-arc56.ts:237](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L237) +[src/types/app-arc56.ts:248](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L248) ___ @@ -121,7 +121,7 @@ ARC-28 events that MAY be emitted by this contract #### Defined in -[src/types/app-arc56.ts:321](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L321) +[src/types/app-arc56.ts:332](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L332) ___ @@ -133,7 +133,7 @@ All of the methods that the contract implements #### Defined in -[src/types/app-arc56.ts:254](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L254) +[src/types/app-arc56.ts:265](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L265) ___ @@ -145,7 +145,7 @@ A user-friendly name for the contract #### Defined in -[src/types/app-arc56.ts:235](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L235) +[src/types/app-arc56.ts:246](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L246) ___ @@ -165,7 +165,7 @@ included, but the corresponding genesis hash key MUST also be defined #### Defined in -[src/types/app-arc56.ts:245](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L245) +[src/types/app-arc56.ts:256](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L256) ___ @@ -181,7 +181,7 @@ The scratch variables used during runtime #### Defined in -[src/types/app-arc56.ts:332](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L332) +[src/types/app-arc56.ts:343](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L343) ___ @@ -200,7 +200,7 @@ The pre-compiled TEAL that may contain template variables. MUST be omitted if in #### Defined in -[src/types/app-arc56.ts:295](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L295) +[src/types/app-arc56.ts:306](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L306) ___ @@ -219,7 +219,7 @@ Information about the TEAL programs #### Defined in -[src/types/app-arc56.ts:288](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L288) +[src/types/app-arc56.ts:299](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L299) ___ @@ -249,7 +249,7 @@ ___ #### Defined in -[src/types/app-arc56.ts:255](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L255) +[src/types/app-arc56.ts:266](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L266) ___ @@ -265,7 +265,7 @@ Named structs used by the application. Each struct field appears in the same ord #### Defined in -[src/types/app-arc56.ts:252](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L252) +[src/types/app-arc56.ts:263](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L263) ___ @@ -281,4 +281,4 @@ A mapping of template variable names as they appear in the TEAL (not including T #### Defined in -[src/types/app-arc56.ts:323](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L323) +[src/types/app-arc56.ts:334](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L334) diff --git a/docs/code/interfaces/types_app_arc56.Event.md b/docs/code/interfaces/types_app_arc56.Event.md index e99ba735..979b5746 100644 --- a/docs/code/interfaces/types_app_arc56.Event.md +++ b/docs/code/interfaces/types_app_arc56.Event.md @@ -24,7 +24,7 @@ The arguments of the event, in order #### Defined in -[src/types/app-arc56.ts:423](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L423) +[src/types/app-arc56.ts:434](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L434) ___ @@ -36,7 +36,7 @@ Optional, user-friendly description for the event #### Defined in -[src/types/app-arc56.ts:421](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L421) +[src/types/app-arc56.ts:432](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L432) ___ @@ -48,4 +48,4 @@ The name of the event #### Defined in -[src/types/app-arc56.ts:419](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L419) +[src/types/app-arc56.ts:430](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L430) diff --git a/docs/code/interfaces/types_app_arc56.Method.md b/docs/code/interfaces/types_app_arc56.Method.md index 3dbe6245..5cfc53a0 100644 --- a/docs/code/interfaces/types_app_arc56.Method.md +++ b/docs/code/interfaces/types_app_arc56.Method.md @@ -36,7 +36,7 @@ an action is a combination of call/create and an OnComplete #### Defined in -[src/types/app-arc56.ts:382](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L382) +[src/types/app-arc56.ts:393](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L393) ___ @@ -48,7 +48,7 @@ The arguments of the method, in order #### Defined in -[src/types/app-arc56.ts:347](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L347) +[src/types/app-arc56.ts:358](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L358) ___ @@ -60,7 +60,7 @@ Optional, user-friendly description for the method #### Defined in -[src/types/app-arc56.ts:345](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L345) +[src/types/app-arc56.ts:356](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L356) ___ @@ -72,7 +72,7 @@ ARC-28 events that MAY be emitted by this method #### Defined in -[src/types/app-arc56.ts:391](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L391) +[src/types/app-arc56.ts:402](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L402) ___ @@ -84,7 +84,7 @@ The name of the method #### Defined in -[src/types/app-arc56.ts:343](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L343) +[src/types/app-arc56.ts:354](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L354) ___ @@ -96,7 +96,7 @@ If this method does not write anything to the ledger (ARC-22) #### Defined in -[src/types/app-arc56.ts:389](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L389) +[src/types/app-arc56.ts:400](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L400) ___ @@ -122,7 +122,7 @@ Information that clients can use when calling the method #### Defined in -[src/types/app-arc56.ts:393](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L393) +[src/types/app-arc56.ts:404](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L404) ___ @@ -142,4 +142,4 @@ Information about the method's return value #### Defined in -[src/types/app-arc56.ts:373](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L373) +[src/types/app-arc56.ts:384](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L384) diff --git a/docs/code/interfaces/types_app_arc56.ProgramSourceInfo.md b/docs/code/interfaces/types_app_arc56.ProgramSourceInfo.md index d7a3497e..f186fb44 100644 --- a/docs/code/interfaces/types_app_arc56.ProgramSourceInfo.md +++ b/docs/code/interfaces/types_app_arc56.ProgramSourceInfo.md @@ -23,7 +23,7 @@ How the program counter offset is calculated #### Defined in -[src/types/app-arc56.ts:504](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L504) +[src/types/app-arc56.ts:515](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L515) ___ @@ -35,4 +35,4 @@ The source information for the program #### Defined in -[src/types/app-arc56.ts:499](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L499) +[src/types/app-arc56.ts:510](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L510) diff --git a/docs/code/interfaces/types_app_arc56.StorageKey.md b/docs/code/interfaces/types_app_arc56.StorageKey.md index 29872e9d..a6e8b252 100644 --- a/docs/code/interfaces/types_app_arc56.StorageKey.md +++ b/docs/code/interfaces/types_app_arc56.StorageKey.md @@ -25,7 +25,7 @@ Description of what this storage key holds #### Defined in -[src/types/app-arc56.ts:464](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L464) +[src/types/app-arc56.ts:475](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L475) ___ @@ -37,7 +37,7 @@ The bytes of the key encoded as base64 #### Defined in -[src/types/app-arc56.ts:471](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L471) +[src/types/app-arc56.ts:482](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L482) ___ @@ -49,7 +49,7 @@ The type of the key #### Defined in -[src/types/app-arc56.ts:466](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L466) +[src/types/app-arc56.ts:477](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L477) ___ @@ -61,4 +61,4 @@ The type of the value #### Defined in -[src/types/app-arc56.ts:469](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L469) +[src/types/app-arc56.ts:480](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L480) diff --git a/docs/code/interfaces/types_app_arc56.StorageMap.md b/docs/code/interfaces/types_app_arc56.StorageMap.md index d31ba7c7..d5a54095 100644 --- a/docs/code/interfaces/types_app_arc56.StorageMap.md +++ b/docs/code/interfaces/types_app_arc56.StorageMap.md @@ -25,7 +25,7 @@ Description of what the key-value pairs in this mapping hold #### Defined in -[src/types/app-arc56.ts:477](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L477) +[src/types/app-arc56.ts:488](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L488) ___ @@ -37,7 +37,7 @@ The type of the keys in the map #### Defined in -[src/types/app-arc56.ts:479](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L479) +[src/types/app-arc56.ts:490](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L490) ___ @@ -49,7 +49,7 @@ The base64-encoded prefix of the map keys #### Defined in -[src/types/app-arc56.ts:483](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L483) +[src/types/app-arc56.ts:494](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L494) ___ @@ -61,4 +61,4 @@ The type of the values in the map #### Defined in -[src/types/app-arc56.ts:481](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L481) +[src/types/app-arc56.ts:492](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L492) diff --git a/docs/code/interfaces/types_app_arc56.StructField.md b/docs/code/interfaces/types_app_arc56.StructField.md index aa8f9f85..4bca5ac0 100644 --- a/docs/code/interfaces/types_app_arc56.StructField.md +++ b/docs/code/interfaces/types_app_arc56.StructField.md @@ -23,7 +23,7 @@ The name of the struct field #### Defined in -[src/types/app-arc56.ts:456](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L456) +[src/types/app-arc56.ts:467](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L467) ___ @@ -35,4 +35,4 @@ The type of the struct field's value #### Defined in -[src/types/app-arc56.ts:458](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L458) +[src/types/app-arc56.ts:469](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L469) diff --git a/docs/code/modules/index.md b/docs/code/modules/index.md index 58d9e6f2..7d5e1647 100644 --- a/docs/code/modules/index.md +++ b/docs/code/modules/index.md @@ -304,7 +304,7 @@ ___ #### Defined in -[src/transaction/transaction.ts:33](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L33) +[src/transaction/transaction.ts:41](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L41) ___ @@ -314,7 +314,7 @@ ___ #### Defined in -[src/transaction/transaction.ts:32](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L32) +[src/transaction/transaction.ts:40](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L40) ___ @@ -324,7 +324,7 @@ ___ #### Defined in -[src/transaction/transaction.ts:31](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L31) +[src/transaction/transaction.ts:39](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L39) ## Functions @@ -575,7 +575,7 @@ the estimated rate. #### Defined in -[src/transaction/transaction.ts:1060](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1060) +[src/transaction/transaction.ts:1074](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1074) ___ @@ -639,7 +639,7 @@ Allows for control of fees on a `Transaction` or `SuggestedParams` object #### Defined in -[src/transaction/transaction.ts:1087](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1087) +[src/transaction/transaction.ts:1101](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1101) ___ @@ -811,7 +811,7 @@ algokit.encodeLease(new Uint8Array([1, 2, 3])) #### Defined in -[src/transaction/transaction.ts:74](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L74) +[src/transaction/transaction.ts:82](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L82) ___ @@ -846,7 +846,7 @@ Encodes a transaction note into a byte array ready to be included in an Algorand #### Defined in -[src/transaction/transaction.ts:50](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L50) +[src/transaction/transaction.ts:58](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L58) ___ @@ -949,7 +949,7 @@ ___ ### getABIReturnValue -▸ **getABIReturnValue**(`result`): [`ABIReturn`](types_app.md#abireturn) +▸ **getABIReturnValue**(`result`, `type`): [`ABIReturn`](types_app.md#abireturn) Takes an algosdk `ABIResult` and converts it to an `ABIReturn`. Converts `bigint`'s for Uint's < 64 to `number` for easier use. @@ -959,6 +959,7 @@ Converts `bigint`'s for Uint's < 64 to `number` for easier use. | Name | Type | Description | | :------ | :------ | :------ | | `result` | `ABIResult` | The `ABIReturn` | +| `type` | `ABIReturnType` | - | #### Returns @@ -966,7 +967,7 @@ Converts `bigint`'s for Uint's < 64 to `number` for easier use. #### Defined in -[src/transaction/transaction.ts:930](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L930) +[src/transaction/transaction.ts:940](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L940) ___ @@ -1942,7 +1943,7 @@ Returns the array of transactions currently present in the given `AtomicTransact #### Defined in -[src/transaction/transaction.ts:1136](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1136) +[src/transaction/transaction.ts:1150](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1150) ___ @@ -2230,7 +2231,7 @@ Returns the public address of the given transaction sender. #### Defined in -[src/transaction/transaction.ts:110](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L110) +[src/transaction/transaction.ts:118](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L118) ___ @@ -2260,7 +2261,7 @@ This function has memoization, so will return the same transaction signer for a #### Defined in -[src/transaction/transaction.ts:168](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L168) +[src/transaction/transaction.ts:176](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L176) ___ @@ -2329,7 +2330,7 @@ Returns suggested transaction parameters from algod unless some are already prov #### Defined in -[src/transaction/transaction.ts:1114](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1114) +[src/transaction/transaction.ts:1128](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1128) ___ @@ -2360,7 +2361,7 @@ AtomicTransactionComposer's addTransaction method. #### Defined in -[src/transaction/transaction.ts:127](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L127) +[src/transaction/transaction.ts:135](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L135) ___ @@ -2761,7 +2762,7 @@ A new ATC with the resources populated into the transactions #### Defined in -[src/transaction/transaction.ts:382](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L382) +[src/transaction/transaction.ts:390](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L390) ___ @@ -2790,7 +2791,7 @@ A new ATC with the changes applied #### Defined in -[src/transaction/transaction.ts:401](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L401) +[src/transaction/transaction.ts:409](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L409) ___ @@ -2940,7 +2941,7 @@ An object with transaction IDs, transactions, group transaction ID (`groupTransa #### Defined in -[src/transaction/transaction.ts:776](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L776) +[src/transaction/transaction.ts:784](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L784) ___ @@ -2969,7 +2970,7 @@ Signs and sends a group of [up to 16](https://dev.algorand.co/concepts/transacti #### Defined in -[src/transaction/transaction.ts:959](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L959) +[src/transaction/transaction.ts:973](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L973) ___ @@ -3001,7 +3002,7 @@ Prepares a transaction for sending and then (if instructed) signs and sends the #### Defined in -[src/transaction/transaction.ts:209](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L209) +[src/transaction/transaction.ts:217](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L217) ___ @@ -3032,7 +3033,7 @@ Signs a single transaction by the given signer. #### Defined in -[src/transaction/transaction.ts:186](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L186) +[src/transaction/transaction.ts:194](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L194) ___ @@ -3242,4 +3243,4 @@ Throws an error if the transaction is not confirmed or rejected in the next `tim #### Defined in -[src/transaction/transaction.ts:1003](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1003) +[src/transaction/transaction.ts:1017](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/transaction/transaction.ts#L1017) diff --git a/docs/code/modules/types_app_arc56.md b/docs/code/modules/types_app_arc56.md index 676a48ca..5839fe6c 100644 --- a/docs/code/modules/types_app_arc56.md +++ b/docs/code/modules/types_app_arc56.md @@ -54,7 +54,7 @@ Decoded ARC-56 struct as a struct rather than a tuple. #### Defined in -[src/types/app-arc56.ts:108](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L108) +[src/types/app-arc56.ts:117](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L117) ___ @@ -66,7 +66,7 @@ An ABI-encoded type #### Defined in -[src/types/app-arc56.ts:436](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L436) +[src/types/app-arc56.ts:447](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L447) ___ @@ -78,7 +78,7 @@ Raw byteslice without the length prefixed that is specified in ARC-4 #### Defined in -[src/types/app-arc56.ts:442](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L442) +[src/types/app-arc56.ts:453](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L453) ___ @@ -90,7 +90,7 @@ A utf-8 string without the length prefix that is specified in ARC-4 #### Defined in -[src/types/app-arc56.ts:445](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L445) +[src/types/app-arc56.ts:456](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L456) ___ @@ -102,7 +102,7 @@ A native AVM type #### Defined in -[src/types/app-arc56.ts:451](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L451) +[src/types/app-arc56.ts:462](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L462) ___ @@ -114,7 +114,7 @@ A 64-bit unsigned integer #### Defined in -[src/types/app-arc56.ts:448](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L448) +[src/types/app-arc56.ts:459](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L459) ___ @@ -126,7 +126,7 @@ Type to describe an argument within an `Arc56Method`. #### Defined in -[src/types/app-arc56.ts:6](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L6) +[src/types/app-arc56.ts:7](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L7) ___ @@ -138,7 +138,7 @@ Type to describe a return type within an `Arc56Method`. #### Defined in -[src/types/app-arc56.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L13) +[src/types/app-arc56.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L14) ___ @@ -150,7 +150,7 @@ The name of a defined struct #### Defined in -[src/types/app-arc56.ts:439](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L439) +[src/types/app-arc56.ts:450](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L450) ## Functions @@ -177,7 +177,7 @@ The decoded ABI value or struct #### Defined in -[src/types/app-arc56.ts:120](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L120) +[src/types/app-arc56.ts:129](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L129) ___ @@ -203,7 +203,7 @@ The binary ABI-encoded value #### Defined in -[src/types/app-arc56.ts:142](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L142) +[src/types/app-arc56.ts:153](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L153) ___ @@ -235,7 +235,7 @@ The struct as a Record #### Defined in -[src/types/app-arc56.ts:70](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L70) +[src/types/app-arc56.ts:71](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L71) ___ @@ -261,7 +261,7 @@ The struct as a decoded ABI tuple #### Defined in -[src/types/app-arc56.ts:94](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L94) +[src/types/app-arc56.ts:103](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L103) ___ @@ -286,7 +286,7 @@ The `ABITupleType` #### Defined in -[src/types/app-arc56.ts:48](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L48) +[src/types/app-arc56.ts:49](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L49) ___ @@ -311,7 +311,7 @@ The `Arc56Method` #### Defined in -[src/types/app-arc56.ts:172](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L172) +[src/types/app-arc56.ts:183](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L183) ___ @@ -343,4 +343,4 @@ The smart contract response with an updated return value #### Defined in -[src/types/app-arc56.ts:203](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L203) +[src/types/app-arc56.ts:214](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-arc56.ts#L214) diff --git a/src/transaction/transaction.spec.ts b/src/transaction/transaction.spec.ts index f17eaf6f..45195275 100644 --- a/src/transaction/transaction.spec.ts +++ b/src/transaction/transaction.spec.ts @@ -1081,7 +1081,7 @@ describe('abi return', () => { returnValue: abiType.decode(abiType.encode(value)), txID: '', } as algosdk.ABIResult - return getABIReturnValue(result) + return getABIReturnValue(result, abiType) } test('uint32', () => { diff --git a/src/transaction/transaction.ts b/src/transaction/transaction.ts index 118ac9b3..43666c94 100644 --- a/src/transaction/transaction.ts +++ b/src/transaction/transaction.ts @@ -1,4 +1,12 @@ -import algosdk, { Address, ApplicationTransactionFields, TransactionBoxReference, TransactionType, stringifyJSON } from 'algosdk' +import algosdk, { + ABIMethod, + ABIReturnType, + Address, + ApplicationTransactionFields, + TransactionBoxReference, + TransactionType, + stringifyJSON, +} from 'algosdk' import { Buffer } from 'buffer' import { Config } from '../config' import { AlgoAmount } from '../types/amount' @@ -16,7 +24,7 @@ import { TransactionNote, TransactionToSign, } from '../types/transaction' -import { asJson, toNumber } from '../util' +import { asJson, convertAbiByteArrays, toNumber } from '../util' import { performAtomicTransactionComposerSimulate } from './perform-atomic-transaction-composer-simulate' import Algodv2 = algosdk.Algodv2 import AtomicTransactionComposer = algosdk.AtomicTransactionComposer @@ -846,12 +854,14 @@ export const sendAtomicTransactionComposer = async function (atcSend: AtomicTran confirmations = await Promise.all(transactionsToSend.map(async (t) => await algod.pendingTransactionInformation(t.txID()).do())) } + const methodCalls = [...(atc['methodCalls'] as Map).values()] + return { groupId, confirmations, txIds: transactionsToSend.map((t) => t.txID()), transactions: transactionsToSend, - returns: result.methodResults.map(getABIReturnValue), + returns: result.methodResults.map((r, i) => getABIReturnValue(r, methodCalls[i]!.returns.type)), } as SendAtomicTransactionComposerResults // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (e: any) { @@ -927,21 +937,25 @@ const convertABIDecodedBigIntToNumber = (value: ABIValue, type: ABIType): ABIVal * Converts `bigint`'s for Uint's < 64 to `number` for easier use. * @param result The `ABIReturn` */ -export function getABIReturnValue(result: algosdk.ABIResult): ABIReturn { +export function getABIReturnValue(result: algosdk.ABIResult, type: ABIReturnType): ABIReturn { if (result.decodeError) { return { decodeError: result.decodeError, } } + const returnValue = convertAbiByteArrays( + result.returnValue !== undefined && result.method.returns.type !== 'void' + ? convertABIDecodedBigIntToNumber(result.returnValue, result.method.returns.type) + : result.returnValue!, + type, + ) + return { method: result.method, rawReturnValue: result.rawReturnValue, decodeError: undefined, - returnValue: - result.returnValue !== undefined && result.method.returns.type !== 'void' - ? convertABIDecodedBigIntToNumber(result.returnValue, result.method.returns.type) - : result.returnValue!, + returnValue, } } diff --git a/src/types/app-arc56.ts b/src/types/app-arc56.ts index dd4d2c4d..26ff02f5 100644 --- a/src/types/app-arc56.ts +++ b/src/types/app-arc56.ts @@ -1,6 +1,7 @@ import algosdk from 'algosdk' import { ABIReturn } from './app' import { Expand } from './expand' +import { convertAbiByteArrays } from '../util' /** Type to describe an argument within an `Arc56Method`. */ export type Arc56MethodArg = Expand< @@ -74,7 +75,15 @@ export function getABIStructFromABITuple { - const abiValue = decodedABITuple[i] + let abiType: algosdk.ABIType + + if (typeof type === 'string') { + abiType = algosdk.ABIType.from(type) + } else { + abiType = getABITupleTypeFromABIStructDefinition(type, structs) + } + + const abiValue = convertAbiByteArrays(decodedABITuple[i], abiType) return [ key, (typeof type === 'string' && !structs[type]) || !Array.isArray(abiValue) @@ -129,7 +138,9 @@ export function getABIDecodedValue( const tupleValue = getABITupleTypeFromABIStructDefinition(structs[type], structs).decode(value) return getABIStructFromABITuple(tupleValue, structs[type], structs) } - return algosdk.ABIType.from(type).decode(value) + + const abiType = algosdk.ABIType.from(type) + return convertAbiByteArrays(abiType.decode(value), abiType) } /** @@ -220,7 +231,7 @@ export function getArc56ReturnValue { const state = Object.values(appState ?? (await stateGetter())) const metadata = keyGetter()[name] + + if (metadata === undefined) throw new Error(`Attempted to get state value ${name}, but it does not exist`) const value = state.find((s) => s.keyBase64 === metadata.key) if (value && 'valueRaw' in value) { diff --git a/src/types/app-factory-and-client.spec.ts b/src/types/app-factory-and-client.spec.ts index 720fc078..d1c5e695 100644 --- a/src/types/app-factory-and-client.spec.ts +++ b/src/types/app-factory-and-client.spec.ts @@ -1,8 +1,9 @@ -import algosdk, { ABIUintType, OnApplicationComplete, TransactionSigner, TransactionType, getApplicationAddress } from 'algosdk' +import algosdk, { ABIUintType, Address, OnApplicationComplete, TransactionSigner, TransactionType, getApplicationAddress } from 'algosdk' import invariant from 'tiny-invariant' import { afterEach, beforeAll, beforeEach, describe, expect, test } from 'vitest' import * as algokit from '..' import arc56Json from '../../tests/example-contracts/arc56_templates/artifacts/Templates.arc56_draft.json' +import byteArraysAr56Json from '../../tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc56.json' import largeAppArc56Json from '../../tests/example-contracts/extra-pages/large.arc56.json' import smallAppArc56Json from '../../tests/example-contracts/extra-pages/small.arc56.json' import errorInnerAppArc56Json from '../../tests/example-contracts/inner_error/artifacts/InnerApp.arc56.json' @@ -882,4 +883,144 @@ retsub *abi_route_specificLengthTemplateVar:`) } }) + + describe('Decoding bytes', async () => { + let appClient: AppClient + let algorand: algokit.AlgorandClient + let sender: Address + + beforeAll(async () => { + await localnet.newScope() + ;({ algorand } = localnet) + const { testAccount } = localnet.context + sender = testAccount.addr + const factory = new AppFactory({ + algorand, + appSpec: JSON.stringify(byteArraysAr56Json), + defaultSender: testAccount, + }) + + ;({ appClient } = await factory.send.create({ + extraFee: algokit.microAlgos(1000), + method: 'createApplication', + onComplete: OnApplicationComplete.OptInOC, + })) + + await algorand.account.ensureFunded(appClient.appAddress, testAccount, algokit.microAlgos(251200)) + + const methodCall = await appClient.params.call({ method: 'setBoxValues' }) + // Random extra call to get more txns for resources + const extraMethodCall = await appClient.params.call({ method: 'dynamicByteArray' }) + await algorand.newGroup().addAppCallMethodCall(methodCall).addAppCallMethodCall(extraMethodCall).send() + }) + + type ByteArraysInStruct = { + arr1: Uint8Array + arr2: Uint8Array + nestedStruct: { + arr3: Uint8Array + nonBytes: bigint + } + } + + const valueTests = { + dynamicByteArray: (value: Uint8Array) => { + expect(value).toBeInstanceOf(Uint8Array) + }, + staticByteArray: (value: Uint8Array) => { + expect(value).toBeInstanceOf(Uint8Array) + }, + nestedByteArrays: (value: Uint8Array[]) => { + expect(value).toHaveLength(2) + expect(value[0]).toBeInstanceOf(Uint8Array) + expect(value[1]).toBeInstanceOf(Uint8Array) + }, + byteArraysInStruct: (value: ByteArraysInStruct) => { + expect(value).not.toBeInstanceOf(Array) + expect(value.arr1).toBeInstanceOf(Uint8Array) + expect(value.arr2).toBeInstanceOf(Uint8Array) + expect(value.nestedStruct.arr3).toBeInstanceOf(Uint8Array) + }, + } + + const valueAccessMethods = { + 'send method call and get return value': async (appClient: AppClient, method: string) => { + const result = await appClient.send.call({ method }) + return result.return! + }, + 'simulate method call and get return value': async (appClient: AppClient, method: string) => { + const params = await appClient.params.call({ method }) + const result = await algorand.newGroup().addAppCallMethodCall(params).simulate() + return result.returns![0].returnValue! + }, + 'global getValue': async (appClient: AppClient, name: string) => { + return await appClient.state.global.getValue(`${name}Global`)! + }, + 'local getValue': async (appClient: AppClient, name: string) => { + return await appClient.state.local(sender).getValue(`${name}Local`)! + }, + 'box getValue': async (appClient: AppClient, name: string) => { + return await appClient.state.box.getValue(`${name}Box`)! + }, + 'global getAll': async (appClient: AppClient, name: string) => { + const result = await appClient.state.global.getAll() + return result[`${name}Global`] + }, + 'local getAll': async (appClient: AppClient, name: string) => { + const result = await appClient.state.local(sender).getAll() + return result[`${name}Local`] + }, + 'box getAll': async (appClient: AppClient, name: string) => { + const result = await appClient.state.box.getAll() + return result[`${name}Box`] + }, + 'global getMapValue': async (appClient: AppClient, name: string) => { + return await appClient.state.global.getMapValue(`${name}GlobalMap`, 0)! + }, + 'local getMapValue': async (appClient: AppClient, name: string) => { + return await appClient.state.local(sender).getMapValue(`${name}LocalMap`, 0)! + }, + 'box getMapValue': async (appClient: AppClient, name: string) => { + return await appClient.state.box.getMapValue(`${name}BoxMap`, 0)! + }, + 'global getMap': async (appClient: AppClient, name: string) => { + const result = await appClient.state.global.getMap(`${name}GlobalMap`)! + return [...result.values()][0] + }, + 'local getMap': async (appClient: AppClient, name: string) => { + const result = await appClient.state.local(sender).getMap(`${name}LocalMap`)! + return [...result.values()][0] + }, + 'box getMap': async (appClient: AppClient, name: string) => { + const result = await appClient.state.box.getMap(`${name}BoxMap`)! + return [...result.values()][0] + }, + 'global getMap key': async (appClient: AppClient, name: string) => { + const result = await appClient.state.global.getMap(`${name}GlobalMapKey`)! + return [...result.keys()][0] + }, + 'local getMap key': async (appClient: AppClient, name: string) => { + const result = await appClient.state.local(sender).getMap(`${name}LocalMapKey`)! + return [...result.keys()][0] + }, + 'box getMap key': async (appClient: AppClient, name: string) => { + const result = await appClient.state.box.getMap(`${name}BoxMapKey`)! + return [...result.keys()][0] + }, + } + + for (const [desc, getter] of Object.entries(valueAccessMethods)) { + describe(desc, () => { + for (const [valueType, tests] of Object.entries(valueTests)) { + // Simulate is called from a generic composer, not the AppClient, so it doesn't have ARC56 struct data + // State methods don't attempt to decode as a struct and just give + if (!desc.startsWith('send') && valueType === 'byteArraysInStruct') continue + + test(valueType, async () => { + tests(await getter(appClient, valueType)) + }) + } + }) + } + }) }) diff --git a/src/types/app-manager.ts b/src/types/app-manager.ts index ef765f06..16aed9a6 100644 --- a/src/types/app-manager.ts +++ b/src/types/app-manager.ts @@ -425,7 +425,7 @@ export class AppManager { method, rawReturnValue: new Uint8Array(), } - return getABIReturnValue(algosdk.AtomicTransactionComposer.parseMethodResponse(method, resultDummy, confirmation)) + return getABIReturnValue(algosdk.AtomicTransactionComposer.parseMethodResponse(method, resultDummy, confirmation), method.returns.type) } /** diff --git a/src/types/composer.ts b/src/types/composer.ts index d7eaf0a7..0a71fa86 100644 --- a/src/types/composer.ts +++ b/src/types/composer.ts @@ -1,4 +1,4 @@ -import algosdk, { Address } from 'algosdk' +import algosdk, { ABIMethod, Address } from 'algosdk' import { Config } from '../config' import { encodeLease, getABIReturnValue, sendAtomicTransactionComposer } from '../transaction/transaction' import { asJson, calculateExtraProgramPages } from '../util' @@ -2135,13 +2135,14 @@ export class TransactionComposer { } const transactions = atc.buildGroup().map((t) => t.txn) + const methodCalls = [...(atc['methodCalls'] as Map).values()] return { confirmations: simulateResponse.txnGroups[0].txnResults.map((t) => t.txnResult), transactions: transactions, txIds: transactions.map((t) => t.txID()), groupId: Buffer.from(transactions[0].group ?? new Uint8Array()).toString('base64'), simulateResponse, - returns: methodResults.map(getABIReturnValue), + returns: methodResults.map((r, i) => getABIReturnValue(r, methodCalls[i]!.returns.type)), } } diff --git a/src/util.spec.ts b/src/util.spec.ts new file mode 100644 index 00000000..2d03ba7b --- /dev/null +++ b/src/util.spec.ts @@ -0,0 +1,193 @@ +import { convertAbiByteArrays as convertAbiByteArrays } from './util' + +import { describe, it, expect } from 'vitest' +import { ABIValue, ABIByteType, ABIArrayStaticType, ABIArrayDynamicType, ABITupleType, ABIBoolType, ABIUintType } from 'algosdk' // Adjust this import path + +describe('convertAbiByteArrays', () => { + describe('Basic byte arrays', () => { + it('should convert a simple byte array to Uint8Array', () => { + // Create a static array of bytes: byte[4] + const byteType = new ABIByteType() + const arrayType = new ABIArrayStaticType(byteType, 4) + + const value = [1, 2, 3, 4] + const result = convertAbiByteArrays(value, arrayType) + + expect(result).toBeInstanceOf(Uint8Array) + expect(Array.from(result as Uint8Array)).toEqual([1, 2, 3, 4]) + }) + + it('should handle dynamic byte arrays', () => { + // Create a dynamic array of bytes: byte[] + const byteType = new ABIByteType() + const arrayType = new ABIArrayDynamicType(byteType) + + const value = [10, 20, 30, 40, 50] + const result = convertAbiByteArrays(value, arrayType) + + expect(result).toBeInstanceOf(Uint8Array) + expect(Array.from(result as Uint8Array)).toEqual([10, 20, 30, 40, 50]) + }) + + it('should return existing Uint8Array as is', () => { + const byteType = new ABIByteType() + const arrayType = new ABIArrayStaticType(byteType, 3) + + const value = new Uint8Array([5, 6, 7]) + const result = convertAbiByteArrays(value, arrayType) + + expect(result).toBe(value) // Should be the same instance + }) + }) + + describe('Nested arrays', () => { + it('should convert byte arrays inside arrays', () => { + // Create byte[2][] + const byteType = new ABIByteType() + const innerArrayType = new ABIArrayStaticType(byteType, 2) + const outerArrayType = new ABIArrayDynamicType(innerArrayType) + + const value = [ + [1, 2], + [3, 4], + [5, 6], + ] + const result = convertAbiByteArrays(value, outerArrayType) as ABIValue[] + + expect(Array.isArray(result)).toBe(true) + expect(result.length).toBe(3) + + result.forEach((item) => { + expect(item).toBeInstanceOf(Uint8Array) + }) + + expect(Array.from(result[0] as Uint8Array)).toEqual([1, 2]) + expect(Array.from(result[1] as Uint8Array)).toEqual([3, 4]) + expect(Array.from(result[2] as Uint8Array)).toEqual([5, 6]) + }) + + it('should not convert non-byte arrays', () => { + // Create uint8[3] + const uintType = new ABIUintType(8) + const arrayType = new ABIArrayStaticType(uintType, 3) + + const value = [1, 2, 3] + const result = convertAbiByteArrays(value, arrayType) + + expect(Array.isArray(result)).toBe(true) + expect(result).toEqual([1, 2, 3]) + }) + }) + + describe('Tuple tests', () => { + it('should handle tuples with byte arrays', () => { + // Create (byte[2],bool,byte[3]) + const byteType = new ABIByteType() + const byteArray2Type = new ABIArrayStaticType(byteType, 2) + const byteArray3Type = new ABIArrayStaticType(byteType, 3) + const boolType = new ABIBoolType() + + const tupleType = new ABITupleType([byteArray2Type, boolType, byteArray3Type]) + + const value = [[1, 2], true, [3, 4, 5]] + const result = convertAbiByteArrays(value, tupleType) as ABIValue[] + + expect(Array.isArray(result)).toBe(true) + expect(result.length).toBe(3) + + expect(result[0]).toBeInstanceOf(Uint8Array) + expect(result[1]).toBe(true) + expect(result[2]).toBeInstanceOf(Uint8Array) + + expect(Array.from(result[0] as Uint8Array)).toEqual([1, 2]) + expect(Array.from(result[2] as Uint8Array)).toEqual([3, 4, 5]) + }) + + it('should handle nested tuples with byte arrays', () => { + // Create (byte[2],(byte[1],bool)) + const byteType = new ABIByteType() + const byteArray2Type = new ABIArrayStaticType(byteType, 2) + const byteArray1Type = new ABIArrayStaticType(byteType, 1) + const boolType = new ABIBoolType() + + const innerTupleType = new ABITupleType([byteArray1Type, boolType]) + const outerTupleType = new ABITupleType([byteArray2Type, innerTupleType]) + + const value = [ + [1, 2], + [[3], true], + ] + const result = convertAbiByteArrays(value, outerTupleType) as ABIValue[] + + expect(Array.isArray(result)).toBe(true) + expect(result.length).toBe(2) + + expect(result[0]).toBeInstanceOf(Uint8Array) + expect(Array.from(result[0] as Uint8Array)).toEqual([1, 2]) + + const nestedTuple = result[1] as ABIValue[] + expect(Array.isArray(nestedTuple)).toBe(true) + expect(nestedTuple.length).toBe(2) + expect(nestedTuple[0]).toBeInstanceOf(Uint8Array) + expect(Array.from(nestedTuple[0] as Uint8Array)).toEqual([3]) + expect(nestedTuple[1]).toBe(true) + }) + }) + + describe('Complex mixed structures', () => { + it('should handle complex nested structures', () => { + // Create (byte[2][],uint8,(bool,byte[3])) + const byteType = new ABIByteType() + const byteArray2Type = new ABIArrayStaticType(byteType, 2) + const byteArrayDynType = new ABIArrayDynamicType(byteArray2Type) + const uintType = new ABIUintType(8) + const boolType = new ABIBoolType() + const byteArray3Type = new ABIArrayStaticType(byteType, 3) + + const innerTupleType = new ABITupleType([boolType, byteArray3Type]) + const outerTupleType = new ABITupleType([byteArrayDynType, uintType, innerTupleType]) + + const value = [ + [ + [1, 2], + [3, 4], + [5, 6], + ], // byte[2][] + 123, // uint8 + [true, [7, 8, 9]], // (bool,byte[3]) + ] + + const result = convertAbiByteArrays(value, outerTupleType) as ABIValue[] + + // Check first element (byte[2][]) + const byteArrays = result[0] as ABIValue[] + expect(Array.isArray(byteArrays)).toBe(true) + expect(byteArrays.length).toBe(3) + byteArrays.forEach((item) => { + expect(item).toBeInstanceOf(Uint8Array) + }) + + // Check second element (uint8) + expect(result[1]).toBe(123) + + // Check third element (bool,byte[3]) + const tuple = result[2] as ABIValue[] + expect(tuple[0]).toBe(true) + expect(tuple[1]).toBeInstanceOf(Uint8Array) + expect(Array.from(tuple[1] as Uint8Array)).toEqual([7, 8, 9]) + }) + }) + + describe('Edge cases', () => { + it('should handle empty byte arrays', () => { + const byteType = new ABIByteType() + const arrayType = new ABIArrayStaticType(byteType, 0) + + const value: number[] = [] + const result = convertAbiByteArrays(value, arrayType) + + expect(result).toBeInstanceOf(Uint8Array) + expect((result as Uint8Array).length).toBe(0) + }) + }) +}) diff --git a/src/util.ts b/src/util.ts index 70fbf47d..91abd257 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,4 +1,5 @@ import { APP_PAGE_MAX_SIZE } from './types/app' +import { ABIArrayDynamicType, ABIArrayStaticType, ABIByteType, ABIReturnType, ABITupleType, ABIValue } from 'algosdk' /** * Converts a value which might be a number or a bigint into a number to be used with apis that don't support bigint. @@ -106,3 +107,41 @@ export const asJson = ( export const calculateExtraProgramPages = (approvalProgram: Uint8Array, clearStateProgram?: Uint8Array): number => { return Math.floor((approvalProgram.length + (clearStateProgram?.length ?? 0) - 1) / APP_PAGE_MAX_SIZE) } + +/** Take a decoded ABI value and convert all byte arrays (including nested ones) from number[] to Uint8Arrays */ +export function convertAbiByteArrays(value: ABIValue, type: ABIReturnType): ABIValue { + // Return value as is if the type doesn't have any bytes or if it's already an Uint8Array + if (!type.toString().includes('byte') || value instanceof Uint8Array) { + return value + } + + // Handle byte arrays (byte[N] or byte[]) + if ( + (type instanceof ABIArrayStaticType || type instanceof ABIArrayDynamicType) && + type.childType instanceof ABIByteType && + Array.isArray(value) + ) { + return new Uint8Array(value as number[]) + } + + // Handle other arrays (for nested structures) + if ((type instanceof ABIArrayStaticType || type instanceof ABIArrayDynamicType) && Array.isArray(value)) { + const result = [] + for (let i = 0; i < value.length; i++) { + result.push(convertAbiByteArrays(value[i], type.childType)) + } + return result + } + + // Handle tuples (for nested structures) + if (type instanceof ABITupleType && Array.isArray(value)) { + const result = [] + for (let i = 0; i < value.length && i < type.childTypes.length; i++) { + result.push(convertAbiByteArrays(value[i], type.childTypes[i])) + } + return result + } + + // For other types, return the value as is + return value +} diff --git a/tests/example-contracts/byte_arrays/artifacts/ByteArrays.approval.teal b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.approval.teal new file mode 100644 index 00000000..cdd1ed63 --- /dev/null +++ b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.approval.teal @@ -0,0 +1,533 @@ +#pragma version 10 +intcblock 0 1 6 +bytecblock 0x 0x440000000000000000 0x4e0000000000000000 0x0000000000000000 0x151f7c75 0x530000000000000000 0x4d0000000000000000 0x4b44 0x4b53 0x4b4e 0x4b42 0x62797465417272617973496e537472756374426f78 0x64796e616d6963427974654172726179426f78 0x6e657374656442797465417272617973426f78 0xcafebabe00000000 0x0004deadbeef 0xb8447b36 0x0a8101 + +// This TEAL was generated by TEALScript v0.106.3 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +intc 2 // 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *create_OptIn *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// createApplication()void +*abi_route_createApplication: + // execute createApplication()void + callsub createApplication + intc 1 // 1 + return + +// createApplication(): void +createApplication: + proto 0 0 + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59 + // increaseOpcodeBudget() + itxn_begin + intc 2 // appl + itxn_field TypeEnum + intc 0 // 0 + itxn_field Fee + bytec 17 // #pragma version 10; int 1 + dup + itxn_field ApprovalProgram + itxn_field ClearStateProgram + pushint 5 // DeleteApplication + itxn_field OnCompletion + itxn_submit + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:60 + // this.dynamicByteArrayGlobal.value = this.dynamicByteArray() + pushbytes 0x64796e616d6963427974654172726179476c6f62616c // "dynamicByteArrayGlobal" + callsub dynamicByteArray + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:61 + // this.staticByteArrayGlobal.value = this.staticByteArray() + pushbytes 0x737461746963427974654172726179476c6f62616c // "staticByteArrayGlobal" + callsub staticByteArray + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:62 + // this.nestedByteArraysGlobal.value = this.nestedByteArrays() + pushbytes 0x6e657374656442797465417272617973476c6f62616c // "nestedByteArraysGlobal" + callsub nestedByteArrays + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:63 + // this.byteArraysInStructGlobal.value = this.byteArraysInStruct() + pushbytes 0x62797465417272617973496e537472756374476c6f62616c // "byteArraysInStructGlobal" + callsub byteArraysInStruct + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65 + // this.dynamicByteArrayLocal(this.txn.sender).value = this.dynamicByteArray() + txn Sender + pushbytes 0x64796e616d69634279746541727261794c6f63616c // "dynamicByteArrayLocal" + callsub dynamicByteArray + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66 + // this.staticByteArrayLocal(this.txn.sender).value = this.staticByteArray() + txn Sender + pushbytes 0x7374617469634279746541727261794c6f63616c // "staticByteArrayLocal" + callsub staticByteArray + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67 + // this.nestedByteArraysLocal(this.txn.sender).value = this.nestedByteArrays() + txn Sender + pushbytes 0x6e6573746564427974654172726179734c6f63616c // "nestedByteArraysLocal" + callsub nestedByteArrays + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68 + // this.byteArraysInStructLocal(this.txn.sender).value = this.byteArraysInStruct() + txn Sender + pushbytes 0x62797465417272617973496e5374727563744c6f63616c // "byteArraysInStructLocal" + callsub byteArraysInStruct + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:70 + // this.dynamicByteArrayGlobalMap(0).value = this.dynamicByteArray() + bytec 1 // 0x440000000000000000 + callsub dynamicByteArray + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:71 + // this.staticByteArrayGlobalMap(0).value = this.staticByteArray() + bytec 5 // 0x530000000000000000 + callsub staticByteArray + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:72 + // this.nestedByteArraysGlobalMap(0).value = this.nestedByteArrays() + bytec 2 // 0x4e0000000000000000 + callsub nestedByteArrays + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:73 + // this.byteArraysInStructGlobalMap(0).value = this.byteArraysInStruct() + pushbytes 0x420000000000000000 + callsub byteArraysInStruct + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75 + // this.dynamicByteArrayLocalMap(this.txn.sender, 0).value = this.dynamicByteArray() + txn Sender + bytec 1 // 0x440000000000000000 + callsub dynamicByteArray + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76 + // this.staticByteArrayLocalMap(this.txn.sender, 0).value = this.staticByteArray() + txn Sender + bytec 5 // 0x530000000000000000 + callsub staticByteArray + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77 + // this.nestedByteArraysLocalMap(this.txn.sender, 0).value = this.nestedByteArrays() + txn Sender + bytec 2 // 0x4e0000000000000000 + callsub nestedByteArrays + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78 + // this.byteArraysInStructLocalMap(this.txn.sender, 0).value = this.byteArraysInStruct() + txn Sender + bytec 6 // 0x4d0000000000000000 + callsub byteArraysInStruct + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80 + // this.dynamicByteArrayGlobalMapKey(this.dynamicByteArray()).value = 0 + bytec 7 // "KD" + callsub dynamicByteArray + concat + intc 0 // 0 + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81 + // this.staticByteArrayGlobalMapKey(this.staticByteArray()).value = 0 + bytec 8 // "KS" + callsub staticByteArray + concat + intc 0 // 0 + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82 + // this.nestedByteArraysGlobalMapKey(this.nestedByteArrays()).value = 0 + bytec 9 // "KN" + callsub nestedByteArrays + concat + intc 0 // 0 + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83 + // this.byteArraysInStructGlobalMapKey(this.byteArraysInStruct()).value = 0 + bytec 10 // "KB" + callsub byteArraysInStruct + concat + intc 0 // 0 + app_global_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85 + // this.dynamicByteArrayLocalMapKey(this.txn.sender, this.dynamicByteArray()).value = 0 + txn Sender + bytec 7 // "KD" + callsub dynamicByteArray + concat + intc 0 // 0 + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86 + // this.staticByteArrayLocalMapKey(this.txn.sender, this.staticByteArray()).value = 0 + txn Sender + bytec 8 // "KS" + callsub staticByteArray + concat + intc 0 // 0 + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87 + // this.nestedByteArraysLocalMapKey(this.txn.sender, this.nestedByteArrays()).value = 0 + txn Sender + bytec 9 // "KN" + callsub nestedByteArrays + concat + intc 0 // 0 + app_local_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88 + // this.byteArraysInStructLocalMapKey(this.txn.sender, this.byteArraysInStruct()).value = 0 + txn Sender + bytec 10 // "KB" + callsub byteArraysInStruct + concat + intc 0 // 0 + app_local_put + retsub + +// setBoxValues()void +*abi_route_setBoxValues: + // execute setBoxValues()void + callsub setBoxValues + intc 1 // 1 + return + +// setBoxValues(): void +setBoxValues: + proto 0 0 + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92 + // this.dynamicByteArrayBox.value = this.dynamicByteArray() + bytec 12 // "dynamicByteArrayBox" + dup + box_del + pop + callsub dynamicByteArray + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:93 + // this.staticByteArrayBox.value = this.staticByteArray() + pushbytes 0x737461746963427974654172726179426f78 // "staticByteArrayBox" + callsub staticByteArray + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94 + // this.nestedByteArraysBox.value = this.nestedByteArrays() + bytec 13 // "nestedByteArraysBox" + dup + box_del + pop + callsub nestedByteArrays + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95 + // this.byteArraysInStructBox.value = this.byteArraysInStruct() + bytec 11 // "byteArraysInStructBox" + dup + box_del + pop + callsub byteArraysInStruct + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97 + // this.dynamicByteArrayBoxMap(0).value = this.dynamicByteArray() + bytec 1 // 0x440000000000000000 + dup + box_del + pop + callsub dynamicByteArray + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:98 + // this.staticByteArrayBoxMap(0).value = this.staticByteArray() + bytec 5 // 0x530000000000000000 + callsub staticByteArray + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99 + // this.nestedByteArraysBoxMap(0).value = this.nestedByteArrays() + bytec 2 // 0x4e0000000000000000 + dup + box_del + pop + callsub nestedByteArrays + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100 + // this.byteArraysInStructBoxMap(0).value = this.byteArraysInStruct() + bytec 6 // 0x4d0000000000000000 + dup + box_del + pop + callsub byteArraysInStruct + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102 + // this.dynamicByteArrayBoxMapKey(this.dynamicByteArray()).value = 0 + bytec 7 // "KD" + callsub dynamicByteArray + concat + bytec 3 // 0x0000000000000000 + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103 + // this.staticByteArrayBoxMapKey(this.staticByteArray()).value = 0 + bytec 8 // "KS" + callsub staticByteArray + concat + bytec 3 // 0x0000000000000000 + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104 + // this.nestedByteArraysBoxMapKey(this.nestedByteArrays()).value = 0 + bytec 9 // "KN" + callsub nestedByteArrays + concat + bytec 3 // 0x0000000000000000 + box_put + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105 + // this.byteArraysInStructBoxMapKey(this.byteArraysInStruct()).value = 0 + bytec 10 // "KB" + callsub byteArraysInStruct + concat + bytec 3 // 0x0000000000000000 + box_put + retsub + +// dynamicByteArray()byte[] +*abi_route_dynamicByteArray: + // The ABI return prefix + bytec 4 // 0x151f7c75 + + // execute dynamicByteArray()byte[] + callsub dynamicByteArray + dup + len + itob + extract 6 2 + swap + concat + concat + log + intc 1 // 1 + return + +// dynamicByteArray(): bytes +dynamicByteArray: + proto 0 1 + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:109 + // return hex('0xdeadbeef') + pushbytes 0xdeadbeef + retsub + +// staticByteArray()byte[4] +*abi_route_staticByteArray: + // The ABI return prefix + bytec 4 // 0x151f7c75 + + // execute staticByteArray()byte[4] + callsub staticByteArray + concat + log + intc 1 // 1 + return + +// staticByteArray(): bytes<4> +staticByteArray: + proto 0 1 + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113 + // return hex('0xdeadbeef') as bytes<4> + pushbytes 0xdeadbeef00000000 + bytec 0 // 0x + dup + b== + assert + extract 0 4 + retsub + +// nestedByteArrays()(byte[],byte[4]) +*abi_route_nestedByteArrays: + // The ABI return prefix + bytec 4 // 0x151f7c75 + + // execute nestedByteArrays()(byte[],byte[4]) + callsub nestedByteArrays + concat + log + intc 1 // 1 + return + +// nestedByteArrays(): [bytes, bytes<4>] +nestedByteArrays: + proto 0 1 + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117 + // return [hex('0xdeadbeef'), hex('0xcafebabe') as bytes<4>] + bytec 0 // initial head + bytec 0 // initial tail + pushbytes 0x0006 // initial head offset + bytec 15 // 0x0004deadbeef + callsub *process_dynamic_tuple_element + bytec 14 // 0xcafebabe00000000 + bytec 0 // 0x + dup + b== + assert + extract 0 4 + callsub *process_static_tuple_element + pop // pop head offset + concat // concat head and tail + retsub + +// byteArraysInStruct()(byte[],byte[4],(byte[],uint64)) +*abi_route_byteArraysInStruct: + // The ABI return prefix + bytec 4 // 0x151f7c75 + + // execute byteArraysInStruct()(byte[],byte[4],(byte[],uint64)) + callsub byteArraysInStruct + concat + log + intc 1 // 1 + return + +// byteArraysInStruct(): ByteArraysInStruct +byteArraysInStruct: + proto 0 1 + + // tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121 + // return { + // arr1: hex('0xdeadbeef'), + // arr2: hex('0xcafebabe') as bytes<4>, + // nestedStruct: { + // arr3: hex('0xdeadc0de'), + // nonBytes: 4, + // }, + // } + bytec 0 // initial head + bytec 0 // initial tail + pushbytes 0x0008 // initial head offset + bytec 15 // 0x0004deadbeef + callsub *process_dynamic_tuple_element + bytec 14 // 0xcafebabe00000000 + bytec 0 // 0x + dup + b== + assert + extract 0 4 + callsub *process_static_tuple_element + bytec 0 // initial head + bytec 0 // initial tail + pushbytes 0x000a // initial head offset + pushbytes 0x0004deadc0de + callsub *process_dynamic_tuple_element + pushbytes 0x0000000000000004 + callsub *process_static_tuple_element + pop // pop head offset + concat // concat head and tail + callsub *process_dynamic_tuple_element + pop // pop head offset + concat // concat head and tail + retsub + +*create_NoOp: + bytec 16 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0x8ed21125 // method "setBoxValues()void" + pushbytes 0x2eb75de5 // method "dynamicByteArray()byte[]" + pushbytes 0x695b1641 // method "staticByteArray()byte[4]" + pushbytes 0xf2359ee9 // method "nestedByteArrays()(byte[],byte[4])" + pushbytes 0xd5f4860f // method "byteArraysInStruct()(byte[],byte[4],(byte[],uint64))" + txna ApplicationArgs 0 + match *abi_route_setBoxValues *abi_route_dynamicByteArray *abi_route_staticByteArray *abi_route_nestedByteArrays *abi_route_byteArraysInStruct + + // this contract does not implement the given ABI method for call NoOp + err + +*create_OptIn: + bytec 16 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create OptIn + err + +*process_static_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -1 // element + concat + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub + +*process_dynamic_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -2 // head offset + concat + frame_bury -4 // tuple head + frame_dig -1 // element + dup + len + frame_dig -2 // head offset + btoi + + + itob + extract 6 2 + frame_bury -2 // head offset + frame_dig -3 // tuple tail + swap + concat + frame_bury -3 // tuple tail + frame_dig -4 // tuple head + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub \ No newline at end of file diff --git a/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc32.json b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc32.json new file mode 100644 index 00000000..c402baa1 --- /dev/null +++ b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc32.json @@ -0,0 +1,148 @@ +{ + "hints": { + "createApplication()void": { + "call_config": { + "no_op": "CREATE", + "opt_in": "CREATE" + } + }, + "setBoxValues()void": { + "call_config": { + "no_op": "CALL" + } + }, + "dynamicByteArray()byte[]": { + "call_config": { + "no_op": "CALL" + } + }, + "staticByteArray()byte[4]": { + "call_config": { + "no_op": "CALL" + } + }, + "nestedByteArrays()(byte[],byte[4])": { + "call_config": { + "no_op": "CALL" + } + }, + "byteArraysInStruct()(byte[],byte[4],(byte[],uint64))": { + "call_config": { + "no_op": "CALL" + } + } + }, + "bare_call_config": { + "no_op": "NEVER", + "opt_in": "NEVER", + "close_out": "NEVER", + "update_application": "NEVER", + "delete_application": "NEVER" + }, + "schema": { + "local": { + "declared": { + "dynamicByteArrayLocal": { + "type": "bytes", + "key": "dynamicByteArrayLocal" + }, + "staticByteArrayLocal": { + "type": "bytes", + "key": "staticByteArrayLocal" + }, + "nestedByteArraysLocal": { + "type": "bytes", + "key": "nestedByteArraysLocal" + }, + "byteArraysInStructLocal": { + "type": "bytes", + "key": "byteArraysInStructLocal" + } + }, + "reserved": {} + }, + "global": { + "declared": { + "dynamicByteArrayGlobal": { + "type": "bytes", + "key": "dynamicByteArrayGlobal" + }, + "staticByteArrayGlobal": { + "type": "bytes", + "key": "staticByteArrayGlobal" + }, + "nestedByteArraysGlobal": { + "type": "bytes", + "key": "nestedByteArraysGlobal" + }, + "byteArraysInStructGlobal": { + "type": "bytes", + "key": "byteArraysInStructGlobal" + } + }, + "reserved": {} + } + }, + "state": { + "global": { + "num_byte_slices": 8, + "num_uints": 4 + }, + "local": { + "num_byte_slices": 8, + "num_uints": 4 + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgNgpieXRlY2Jsb2NrIDB4IDB4NDQwMDAwMDAwMDAwMDAwMDAwIDB4NGUwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMCAweDE1MWY3Yzc1IDB4NTMwMDAwMDAwMDAwMDAwMDAwIDB4NGQwMDAwMDAwMDAwMDAwMDAwIDB4NGI0NCAweDRiNTMgMHg0YjRlIDB4NGI0MiAweDYyNzk3NDY1NDE3MjcyNjE3OTczNDk2ZTUzNzQ3Mjc1NjM3NDQyNmY3OCAweDY0Nzk2ZTYxNmQ2OTYzNDI3OTc0NjU0MTcyNzI2MTc5NDI2Zjc4IDB4NmU2NTczNzQ2NTY0NDI3OTc0NjU0MTcyNzI2MTc5NzM0MjZmNzggMHhjYWZlYmFiZTAwMDAwMDAwIDB4MDAwNGRlYWRiZWVmIDB4Yjg0NDdiMzYgMHgwYTgxMDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgMiAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKmNyZWF0ZV9PcHRJbiAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo1OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDE3IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NjAKCS8vIHRoaXMuZHluYW1pY0J5dGVBcnJheUdsb2JhbC52YWx1ZSA9IHRoaXMuZHluYW1pY0J5dGVBcnJheSgpCglwdXNoYnl0ZXMgMHg2NDc5NmU2MTZkNjk2MzQyNzk3NDY1NDE3MjcyNjE3OTQ3NmM2ZjYyNjE2YyAvLyAiZHluYW1pY0J5dGVBcnJheUdsb2JhbCIKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjYxCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUdsb2JhbC52YWx1ZSA9IHRoaXMuc3RhdGljQnl0ZUFycmF5KCkKCXB1c2hieXRlcyAweDczNzQ2MTc0Njk2MzQyNzk3NDY1NDE3MjcyNjE3OTQ3NmM2ZjYyNjE2YyAvLyAic3RhdGljQnl0ZUFycmF5R2xvYmFsIgoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo2MgoJLy8gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzR2xvYmFsLnZhbHVlID0gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzKCkKCXB1c2hieXRlcyAweDZlNjU3Mzc0NjU2NDQyNzk3NDY1NDE3MjcyNjE3OTczNDc2YzZmNjI2MTZjIC8vICJuZXN0ZWRCeXRlQXJyYXlzR2xvYmFsIgoJY2FsbHN1YiBuZXN0ZWRCeXRlQXJyYXlzCglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NjMKCS8vIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0R2xvYmFsLnZhbHVlID0gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3QoKQoJcHVzaGJ5dGVzIDB4NjI3OTc0NjU0MTcyNzI2MTc5NzM0OTZlNTM3NDcyNzU2Mzc0NDc2YzZmNjI2MTZjIC8vICJieXRlQXJyYXlzSW5TdHJ1Y3RHbG9iYWwiCgljYWxsc3ViIGJ5dGVBcnJheXNJblN0cnVjdAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjY1CgkvLyB0aGlzLmR5bmFtaWNCeXRlQXJyYXlMb2NhbCh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlID0gdGhpcy5keW5hbWljQnl0ZUFycmF5KCkKCXR4biBTZW5kZXIKCXB1c2hieXRlcyAweDY0Nzk2ZTYxNmQ2OTYzNDI3OTc0NjU0MTcyNzI2MTc5NGM2ZjYzNjE2YyAvLyAiZHluYW1pY0J5dGVBcnJheUxvY2FsIgoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo2NgoJLy8gdGhpcy5zdGF0aWNCeXRlQXJyYXlMb2NhbCh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlID0gdGhpcy5zdGF0aWNCeXRlQXJyYXkoKQoJdHhuIFNlbmRlcgoJcHVzaGJ5dGVzIDB4NzM3NDYxNzQ2OTYzNDI3OTc0NjU0MTcyNzI2MTc5NGM2ZjYzNjE2YyAvLyAic3RhdGljQnl0ZUFycmF5TG9jYWwiCgljYWxsc3ViIHN0YXRpY0J5dGVBcnJheQoJYXBwX2xvY2FsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NjcKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0xvY2FsKHRoaXMudHhuLnNlbmRlcikudmFsdWUgPSB0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKQoJdHhuIFNlbmRlcgoJcHVzaGJ5dGVzIDB4NmU2NTczNzQ2NTY0NDI3OTc0NjU0MTcyNzI2MTc5NzM0YzZmNjM2MTZjIC8vICJuZXN0ZWRCeXRlQXJyYXlzTG9jYWwiCgljYWxsc3ViIG5lc3RlZEJ5dGVBcnJheXMKCWFwcF9sb2NhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjY4CgkvLyB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdExvY2FsKHRoaXMudHhuLnNlbmRlcikudmFsdWUgPSB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdCgpCgl0eG4gU2VuZGVyCglwdXNoYnl0ZXMgMHg2Mjc5NzQ2NTQxNzI3MjYxNzk3MzQ5NmU1Mzc0NzI3NTYzNzQ0YzZmNjM2MTZjIC8vICJieXRlQXJyYXlzSW5TdHJ1Y3RMb2NhbCIKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo3MAoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5R2xvYmFsTWFwKDApLnZhbHVlID0gdGhpcy5keW5hbWljQnl0ZUFycmF5KCkKCWJ5dGVjIDEgLy8gMHg0NDAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjcxCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUdsb2JhbE1hcCgwKS52YWx1ZSA9IHRoaXMuc3RhdGljQnl0ZUFycmF5KCkKCWJ5dGVjIDUgLy8gMHg1MzAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgc3RhdGljQnl0ZUFycmF5CglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NzIKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0dsb2JhbE1hcCgwKS52YWx1ZSA9IHRoaXMubmVzdGVkQnl0ZUFycmF5cygpCglieXRlYyAyIC8vIDB4NGUwMDAwMDAwMDAwMDAwMDAwCgljYWxsc3ViIG5lc3RlZEJ5dGVBcnJheXMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo3MwoJLy8gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3RHbG9iYWxNYXAoMCkudmFsdWUgPSB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdCgpCglwdXNoYnl0ZXMgMHg0MjAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NzUKCS8vIHRoaXMuZHluYW1pY0J5dGVBcnJheUxvY2FsTWFwKHRoaXMudHhuLnNlbmRlciwgMCkudmFsdWUgPSB0aGlzLmR5bmFtaWNCeXRlQXJyYXkoKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAweDQ0MDAwMDAwMDAwMDAwMDAwMAoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo3NgoJLy8gdGhpcy5zdGF0aWNCeXRlQXJyYXlMb2NhbE1hcCh0aGlzLnR4bi5zZW5kZXIsIDApLnZhbHVlID0gdGhpcy5zdGF0aWNCeXRlQXJyYXkoKQoJdHhuIFNlbmRlcgoJYnl0ZWMgNSAvLyAweDUzMDAwMDAwMDAwMDAwMDAwMAoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWFwcF9sb2NhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjc3CgkvLyB0aGlzLm5lc3RlZEJ5dGVBcnJheXNMb2NhbE1hcCh0aGlzLnR4bi5zZW5kZXIsIDApLnZhbHVlID0gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzKCkKCXR4biBTZW5kZXIKCWJ5dGVjIDIgLy8gMHg0ZTAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJYXBwX2xvY2FsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NzgKCS8vIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0TG9jYWxNYXAodGhpcy50eG4uc2VuZGVyLCAwKS52YWx1ZSA9IHRoaXMuYnl0ZUFycmF5c0luU3RydWN0KCkKCXR4biBTZW5kZXIKCWJ5dGVjIDYgLy8gMHg0ZDAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4MAoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5R2xvYmFsTWFwS2V5KHRoaXMuZHluYW1pY0J5dGVBcnJheSgpKS52YWx1ZSA9IDAKCWJ5dGVjIDcgLy8gICJLRCIKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJY29uY2F0CglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjgxCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUdsb2JhbE1hcEtleSh0aGlzLnN0YXRpY0J5dGVBcnJheSgpKS52YWx1ZSA9IDAKCWJ5dGVjIDggLy8gICJLUyIKCWNhbGxzdWIgc3RhdGljQnl0ZUFycmF5Cgljb25jYXQKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6ODIKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0dsb2JhbE1hcEtleSh0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKSkudmFsdWUgPSAwCglieXRlYyA5IC8vICAiS04iCgljYWxsc3ViIG5lc3RlZEJ5dGVBcnJheXMKCWNvbmNhdAoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4MwoJLy8gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3RHbG9iYWxNYXBLZXkodGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3QoKSkudmFsdWUgPSAwCglieXRlYyAxMCAvLyAgIktCIgoJY2FsbHN1YiBieXRlQXJyYXlzSW5TdHJ1Y3QKCWNvbmNhdAoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4NQoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5TG9jYWxNYXBLZXkodGhpcy50eG4uc2VuZGVyLCB0aGlzLmR5bmFtaWNCeXRlQXJyYXkoKSkudmFsdWUgPSAwCgl0eG4gU2VuZGVyCglieXRlYyA3IC8vICAiS0QiCgljYWxsc3ViIGR5bmFtaWNCeXRlQXJyYXkKCWNvbmNhdAoJaW50YyAwIC8vIDAKCWFwcF9sb2NhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjg2CgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUxvY2FsTWFwS2V5KHRoaXMudHhuLnNlbmRlciwgdGhpcy5zdGF0aWNCeXRlQXJyYXkoKSkudmFsdWUgPSAwCgl0eG4gU2VuZGVyCglieXRlYyA4IC8vICAiS1MiCgljYWxsc3ViIHN0YXRpY0J5dGVBcnJheQoJY29uY2F0CglpbnRjIDAgLy8gMAoJYXBwX2xvY2FsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6ODcKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0xvY2FsTWFwS2V5KHRoaXMudHhuLnNlbmRlciwgdGhpcy5uZXN0ZWRCeXRlQXJyYXlzKCkpLnZhbHVlID0gMAoJdHhuIFNlbmRlcgoJYnl0ZWMgOSAvLyAgIktOIgoJY2FsbHN1YiBuZXN0ZWRCeXRlQXJyYXlzCgljb25jYXQKCWludGMgMCAvLyAwCglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4OAoJLy8gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3RMb2NhbE1hcEtleSh0aGlzLnR4bi5zZW5kZXIsIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0KCkpLnZhbHVlID0gMAoJdHhuIFNlbmRlcgoJYnl0ZWMgMTAgLy8gICJLQiIKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0Cgljb25jYXQKCWludGMgMCAvLyAwCglhcHBfbG9jYWxfcHV0CglyZXRzdWIKCi8vIHNldEJveFZhbHVlcygpdm9pZAoqYWJpX3JvdXRlX3NldEJveFZhbHVlczoKCS8vIGV4ZWN1dGUgc2V0Qm94VmFsdWVzKCl2b2lkCgljYWxsc3ViIHNldEJveFZhbHVlcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc2V0Qm94VmFsdWVzKCk6IHZvaWQKc2V0Qm94VmFsdWVzOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo5MgoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5Qm94LnZhbHVlID0gdGhpcy5keW5hbWljQnl0ZUFycmF5KCkKCWJ5dGVjIDEyIC8vICAiZHluYW1pY0J5dGVBcnJheUJveCIKCWR1cAoJYm94X2RlbAoJcG9wCgljYWxsc3ViIGR5bmFtaWNCeXRlQXJyYXkKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjkzCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUJveC52YWx1ZSA9IHRoaXMuc3RhdGljQnl0ZUFycmF5KCkKCXB1c2hieXRlcyAweDczNzQ2MTc0Njk2MzQyNzk3NDY1NDE3MjcyNjE3OTQyNmY3OCAvLyAic3RhdGljQnl0ZUFycmF5Qm94IgoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjk0CgkvLyB0aGlzLm5lc3RlZEJ5dGVBcnJheXNCb3gudmFsdWUgPSB0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKQoJYnl0ZWMgMTMgLy8gICJuZXN0ZWRCeXRlQXJyYXlzQm94IgoJZHVwCglib3hfZGVsCglwb3AKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6OTUKCS8vIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0Qm94LnZhbHVlID0gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3QoKQoJYnl0ZWMgMTEgLy8gICJieXRlQXJyYXlzSW5TdHJ1Y3RCb3giCglkdXAKCWJveF9kZWwKCXBvcAoJY2FsbHN1YiBieXRlQXJyYXlzSW5TdHJ1Y3QKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjk3CgkvLyB0aGlzLmR5bmFtaWNCeXRlQXJyYXlCb3hNYXAoMCkudmFsdWUgPSB0aGlzLmR5bmFtaWNCeXRlQXJyYXkoKQoJYnl0ZWMgMSAvLyAweDQ0MDAwMDAwMDAwMDAwMDAwMAoJZHVwCglib3hfZGVsCglwb3AKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6OTgKCS8vIHRoaXMuc3RhdGljQnl0ZUFycmF5Qm94TWFwKDApLnZhbHVlID0gdGhpcy5zdGF0aWNCeXRlQXJyYXkoKQoJYnl0ZWMgNSAvLyAweDUzMDAwMDAwMDAwMDAwMDAwMAoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjk5CgkvLyB0aGlzLm5lc3RlZEJ5dGVBcnJheXNCb3hNYXAoMCkudmFsdWUgPSB0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKQoJYnl0ZWMgMiAvLyAweDRlMDAwMDAwMDAwMDAwMDAwMAoJZHVwCglib3hfZGVsCglwb3AKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTAwCgkvLyB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdEJveE1hcCgwKS52YWx1ZSA9IHRoaXMuYnl0ZUFycmF5c0luU3RydWN0KCkKCWJ5dGVjIDYgLy8gMHg0ZDAwMDAwMDAwMDAwMDAwMDAKCWR1cAoJYm94X2RlbAoJcG9wCgljYWxsc3ViIGJ5dGVBcnJheXNJblN0cnVjdAoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTAyCgkvLyB0aGlzLmR5bmFtaWNCeXRlQXJyYXlCb3hNYXBLZXkodGhpcy5keW5hbWljQnl0ZUFycmF5KCkpLnZhbHVlID0gMAoJYnl0ZWMgNyAvLyAgIktEIgoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5Cgljb25jYXQKCWJ5dGVjIDMgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglib3hfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czoxMDMKCS8vIHRoaXMuc3RhdGljQnl0ZUFycmF5Qm94TWFwS2V5KHRoaXMuc3RhdGljQnl0ZUFycmF5KCkpLnZhbHVlID0gMAoJYnl0ZWMgOCAvLyAgIktTIgoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWNvbmNhdAoJYnl0ZWMgMyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjEwNAoJLy8gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzQm94TWFwS2V5KHRoaXMubmVzdGVkQnl0ZUFycmF5cygpKS52YWx1ZSA9IDAKCWJ5dGVjIDkgLy8gICJLTiIKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJY29uY2F0CglieXRlYyAzIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTA1CgkvLyB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdEJveE1hcEtleSh0aGlzLmJ5dGVBcnJheXNJblN0cnVjdCgpKS52YWx1ZSA9IDAKCWJ5dGVjIDEwIC8vICAiS0IiCgljYWxsc3ViIGJ5dGVBcnJheXNJblN0cnVjdAoJY29uY2F0CglieXRlYyAzIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYm94X3B1dAoJcmV0c3ViCgovLyBkeW5hbWljQnl0ZUFycmF5KClieXRlW10KKmFiaV9yb3V0ZV9keW5hbWljQnl0ZUFycmF5OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyA0IC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGR5bmFtaWNCeXRlQXJyYXkoKWJ5dGVbXQoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5CglkdXAKCWxlbgoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGR5bmFtaWNCeXRlQXJyYXkoKTogYnl0ZXMKZHluYW1pY0J5dGVBcnJheToKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTA5CgkvLyByZXR1cm4gaGV4KCcweGRlYWRiZWVmJykKCXB1c2hieXRlcyAweGRlYWRiZWVmCglyZXRzdWIKCi8vIHN0YXRpY0J5dGVBcnJheSgpYnl0ZVs0XQoqYWJpX3JvdXRlX3N0YXRpY0J5dGVBcnJheToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgNCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBzdGF0aWNCeXRlQXJyYXkoKWJ5dGVbNF0KCWNhbGxzdWIgc3RhdGljQnl0ZUFycmF5Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3RhdGljQnl0ZUFycmF5KCk6IGJ5dGVzPDQ+CnN0YXRpY0J5dGVBcnJheToKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTEzCgkvLyByZXR1cm4gaGV4KCcweGRlYWRiZWVmJykgYXMgYnl0ZXM8ND4KCXB1c2hieXRlcyAweGRlYWRiZWVmMDAwMDAwMDAKCWJ5dGVjIDAgLy8gMHgKCWR1cAoJYj09Cglhc3NlcnQKCWV4dHJhY3QgMCA0CglyZXRzdWIKCi8vIG5lc3RlZEJ5dGVBcnJheXMoKShieXRlW10sYnl0ZVs0XSkKKmFiaV9yb3V0ZV9uZXN0ZWRCeXRlQXJyYXlzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyA0IC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEJ5dGVBcnJheXMoKShieXRlW10sYnl0ZVs0XSkKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEJ5dGVBcnJheXMoKTogW2J5dGVzLCBieXRlczw0Pl0KbmVzdGVkQnl0ZUFycmF5czoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTE3CgkvLyByZXR1cm4gW2hleCgnMHhkZWFkYmVlZicpLCBoZXgoJzB4Y2FmZWJhYmUnKSBhcyBieXRlczw0Pl0KCWJ5dGVjIDAgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMCAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDA2IC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCWJ5dGVjIDE1IC8vIDB4MDAwNGRlYWRiZWVmCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJYnl0ZWMgMTQgLy8gMHhjYWZlYmFiZTAwMDAwMDAwCglieXRlYyAwIC8vIDB4CglkdXAKCWI9PQoJYXNzZXJ0CglleHRyYWN0IDAgNAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglyZXRzdWIKCi8vIGJ5dGVBcnJheXNJblN0cnVjdCgpKGJ5dGVbXSxieXRlWzRdLChieXRlW10sdWludDY0KSkKKmFiaV9yb3V0ZV9ieXRlQXJyYXlzSW5TdHJ1Y3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDQgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgYnl0ZUFycmF5c0luU3RydWN0KCkoYnl0ZVtdLGJ5dGVbNF0sKGJ5dGVbXSx1aW50NjQpKQoJY2FsbHN1YiBieXRlQXJyYXlzSW5TdHJ1Y3QKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBieXRlQXJyYXlzSW5TdHJ1Y3QoKTogQnl0ZUFycmF5c0luU3RydWN0CmJ5dGVBcnJheXNJblN0cnVjdDoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTIxCgkvLyByZXR1cm4gewoJLy8gICAgICAgYXJyMTogaGV4KCcweGRlYWRiZWVmJyksCgkvLyAgICAgICBhcnIyOiBoZXgoJzB4Y2FmZWJhYmUnKSBhcyBieXRlczw0PiwKCS8vICAgICAgIG5lc3RlZFN0cnVjdDogewoJLy8gICAgICAgICBhcnIzOiBoZXgoJzB4ZGVhZGMwZGUnKSwKCS8vICAgICAgICAgbm9uQnl0ZXM6IDQsCgkvLyAgICAgICB9LAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMCAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDA4IC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCWJ5dGVjIDE1IC8vIDB4MDAwNGRlYWRiZWVmCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJYnl0ZWMgMTQgLy8gMHhjYWZlYmFiZTAwMDAwMDAwCglieXRlYyAwIC8vIDB4CglkdXAKCWI9PQoJYXNzZXJ0CglleHRyYWN0IDAgNAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJYnl0ZWMgMCAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAwIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMGEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwNGRlYWRjMGRlCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwNAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCWJ5dGVjIDE2IC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4OGVkMjExMjUgLy8gbWV0aG9kICJzZXRCb3hWYWx1ZXMoKXZvaWQiCglwdXNoYnl0ZXMgMHgyZWI3NWRlNSAvLyBtZXRob2QgImR5bmFtaWNCeXRlQXJyYXkoKWJ5dGVbXSIKCXB1c2hieXRlcyAweDY5NWIxNjQxIC8vIG1ldGhvZCAic3RhdGljQnl0ZUFycmF5KClieXRlWzRdIgoJcHVzaGJ5dGVzIDB4ZjIzNTllZTkgLy8gbWV0aG9kICJuZXN0ZWRCeXRlQXJyYXlzKCkoYnl0ZVtdLGJ5dGVbNF0pIgoJcHVzaGJ5dGVzIDB4ZDVmNDg2MGYgLy8gbWV0aG9kICJieXRlQXJyYXlzSW5TdHJ1Y3QoKShieXRlW10sYnl0ZVs0XSwoYnl0ZVtdLHVpbnQ2NCkpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9zZXRCb3hWYWx1ZXMgKmFiaV9yb3V0ZV9keW5hbWljQnl0ZUFycmF5ICphYmlfcm91dGVfc3RhdGljQnl0ZUFycmF5ICphYmlfcm91dGVfbmVzdGVkQnl0ZUFycmF5cyAqYWJpX3JvdXRlX2J5dGVBcnJheXNJblN0cnVjdAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKmNyZWF0ZV9PcHRJbjoKCWJ5dGVjIDE2IC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgT3B0SW4KCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "contract": { + "name": "ByteArrays", + "desc": "", + "methods": [ + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "setBoxValues", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "dynamicByteArray", + "args": [], + "returns": { + "type": "byte[]" + } + }, + { + "name": "staticByteArray", + "args": [], + "returns": { + "type": "byte[4]" + } + }, + { + "name": "nestedByteArrays", + "args": [], + "returns": { + "type": "(byte[],byte[4])" + } + }, + { + "name": "byteArraysInStruct", + "args": [], + "returns": { + "type": "(byte[],byte[4],(byte[],uint64))" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc4.json b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc4.json new file mode 100644 index 00000000..64a0831d --- /dev/null +++ b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc4.json @@ -0,0 +1,48 @@ +{ + "name": "ByteArrays", + "desc": "", + "methods": [ + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "setBoxValues", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "dynamicByteArray", + "args": [], + "returns": { + "type": "byte[]" + } + }, + { + "name": "staticByteArray", + "args": [], + "returns": { + "type": "byte[4]" + } + }, + { + "name": "nestedByteArrays", + "args": [], + "returns": { + "type": "(byte[],byte[4])" + } + }, + { + "name": "byteArraysInStruct", + "args": [], + "returns": { + "type": "(byte[],byte[4],(byte[],uint64))" + } + } + ] +} \ No newline at end of file diff --git a/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc56.json b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc56.json new file mode 100644 index 00000000..e94aff99 --- /dev/null +++ b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.arc56.json @@ -0,0 +1,3292 @@ +{ + "name": "ByteArrays", + "desc": "", + "methods": [ + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp", + "OptIn" + ], + "call": [] + } + }, + { + "name": "setBoxValues", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "dynamicByteArray", + "args": [], + "returns": { + "type": "byte[]" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "staticByteArray", + "args": [], + "returns": { + "type": "byte[4]" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "nestedByteArrays", + "args": [], + "returns": { + "type": "(byte[],byte[4])" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "byteArraysInStruct", + "args": [], + "returns": { + "type": "(byte[],byte[4],(byte[],uint64))", + "struct": "ByteArraysInStruct" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": { + "ByteArraysInStruct": [ + { + "name": "arr1", + "type": "byte[]" + }, + { + "name": "arr2", + "type": "byte[4]" + }, + { + "name": "nestedStruct", + "type": [ + { + "name": "arr3", + "type": "byte[]" + }, + { + "name": "nonBytes", + "type": "uint64" + } + ] + } + ] + }, + "state": { + "schema": { + "global": { + "bytes": 8, + "ints": 4 + }, + "local": { + "bytes": 8, + "ints": 4 + } + }, + "keys": { + "global": { + "dynamicByteArrayGlobal": { + "key": "ZHluYW1pY0J5dGVBcnJheUdsb2JhbA==", + "keyType": "AVMBytes", + "valueType": "AVMBytes" + }, + "staticByteArrayGlobal": { + "key": "c3RhdGljQnl0ZUFycmF5R2xvYmFs", + "keyType": "AVMBytes", + "valueType": "byte[4]" + }, + "nestedByteArraysGlobal": { + "key": "bmVzdGVkQnl0ZUFycmF5c0dsb2JhbA==", + "keyType": "AVMBytes", + "valueType": "(byte[],byte[4])" + }, + "byteArraysInStructGlobal": { + "key": "Ynl0ZUFycmF5c0luU3RydWN0R2xvYmFs", + "keyType": "AVMBytes", + "valueType": "(byte[],byte[4],(byte[],uint64))" + } + }, + "local": { + "dynamicByteArrayLocal": { + "key": "ZHluYW1pY0J5dGVBcnJheUxvY2Fs", + "keyType": "AVMBytes", + "valueType": "AVMBytes" + }, + "staticByteArrayLocal": { + "key": "c3RhdGljQnl0ZUFycmF5TG9jYWw=", + "keyType": "AVMBytes", + "valueType": "byte[4]" + }, + "nestedByteArraysLocal": { + "key": "bmVzdGVkQnl0ZUFycmF5c0xvY2Fs", + "keyType": "AVMBytes", + "valueType": "(byte[],byte[4])" + }, + "byteArraysInStructLocal": { + "key": "Ynl0ZUFycmF5c0luU3RydWN0TG9jYWw=", + "keyType": "AVMBytes", + "valueType": "(byte[],byte[4],(byte[],uint64))" + } + }, + "box": { + "dynamicByteArrayBox": { + "key": "ZHluYW1pY0J5dGVBcnJheUJveA==", + "keyType": "AVMBytes", + "valueType": "AVMBytes" + }, + "staticByteArrayBox": { + "key": "c3RhdGljQnl0ZUFycmF5Qm94", + "keyType": "AVMBytes", + "valueType": "byte[4]" + }, + "nestedByteArraysBox": { + "key": "bmVzdGVkQnl0ZUFycmF5c0JveA==", + "keyType": "AVMBytes", + "valueType": "(byte[],byte[4])" + }, + "byteArraysInStructBox": { + "key": "Ynl0ZUFycmF5c0luU3RydWN0Qm94", + "keyType": "AVMBytes", + "valueType": "(byte[],byte[4],(byte[],uint64))" + } + } + }, + "maps": { + "global": { + "dynamicByteArrayGlobalMap": { + "keyType": "uint64", + "valueType": "AVMBytes", + "prefix": "RA==" + }, + "staticByteArrayGlobalMap": { + "keyType": "uint64", + "valueType": "byte[4]", + "prefix": "Uw==" + }, + "nestedByteArraysGlobalMap": { + "keyType": "uint64", + "valueType": "(byte[],byte[4])", + "prefix": "Tg==" + }, + "byteArraysInStructGlobalMap": { + "keyType": "uint64", + "valueType": "ByteArraysInStruct", + "prefix": "Qg==" + }, + "dynamicByteArrayGlobalMapKey": { + "keyType": "AVMBytes", + "valueType": "uint64", + "prefix": "S0Q=" + }, + "staticByteArrayGlobalMapKey": { + "keyType": "byte[4]", + "valueType": "uint64", + "prefix": "S1M=" + }, + "nestedByteArraysGlobalMapKey": { + "keyType": "(byte[],byte[4])", + "valueType": "uint64", + "prefix": "S04=" + }, + "byteArraysInStructGlobalMapKey": { + "keyType": "ByteArraysInStruct", + "valueType": "uint64", + "prefix": "S0I=" + } + }, + "local": { + "dynamicByteArrayLocalMap": { + "keyType": "uint64", + "valueType": "AVMBytes", + "prefix": "RA==" + }, + "staticByteArrayLocalMap": { + "keyType": "uint64", + "valueType": "byte[4]", + "prefix": "Uw==" + }, + "nestedByteArraysLocalMap": { + "keyType": "uint64", + "valueType": "(byte[],byte[4])", + "prefix": "Tg==" + }, + "byteArraysInStructLocalMap": { + "keyType": "uint64", + "valueType": "ByteArraysInStruct", + "prefix": "TQ==" + }, + "dynamicByteArrayLocalMapKey": { + "keyType": "AVMBytes", + "valueType": "uint64", + "prefix": "S0Q=" + }, + "staticByteArrayLocalMapKey": { + "keyType": "byte[4]", + "valueType": "uint64", + "prefix": "S1M=" + }, + "nestedByteArraysLocalMapKey": { + "keyType": "(byte[],byte[4])", + "valueType": "uint64", + "prefix": "S04=" + }, + "byteArraysInStructLocalMapKey": { + "keyType": "ByteArraysInStruct", + "valueType": "uint64", + "prefix": "S0I=" + } + }, + "box": { + "dynamicByteArrayBoxMap": { + "keyType": "uint64", + "valueType": "AVMBytes", + "prefix": "RA==" + }, + "staticByteArrayBoxMap": { + "keyType": "uint64", + "valueType": "byte[4]", + "prefix": "Uw==" + }, + "nestedByteArraysBoxMap": { + "keyType": "uint64", + "valueType": "(byte[],byte[4])", + "prefix": "Tg==" + }, + "byteArraysInStructBoxMap": { + "keyType": "uint64", + "valueType": "ByteArraysInStruct", + "prefix": "TQ==" + }, + "dynamicByteArrayBoxMapKey": { + "keyType": "AVMBytes", + "valueType": "uint64", + "prefix": "S0Q=" + }, + "staticByteArrayBoxMapKey": { + "keyType": "byte[4]", + "valueType": "uint64", + "prefix": "S1M=" + }, + "nestedByteArraysBoxMapKey": { + "keyType": "(byte[],byte[4])", + "valueType": "uint64", + "prefix": "S04=" + }, + "byteArraysInStructBoxMapKey": { + "keyType": "ByteArraysInStruct", + "valueType": "uint64", + "prefix": "S0I=" + } + } + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "teal": 3, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ] + }, + { + "teal": 15, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 162, + 163 + ] + }, + { + "teal": 16, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 164 + ] + }, + { + "teal": 17, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 165 + ] + }, + { + "teal": 18, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 166 + ] + }, + { + "teal": 19, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 167, + 168 + ] + }, + { + "teal": 20, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 169 + ] + }, + { + "teal": 21, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ] + }, + { + "teal": 25, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 196 + ] + }, + { + "teal": 30, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 197, + 198, + 199 + ] + }, + { + "teal": 31, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 200 + ] + }, + { + "teal": 32, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 201 + ] + }, + { + "teal": 36, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 202, + 203, + 204 + ] + }, + { + "teal": 40, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 205 + ] + }, + { + "teal": 41, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 206 + ] + }, + { + "teal": 42, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 207, + 208 + ] + }, + { + "teal": 43, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 209 + ] + }, + { + "teal": 44, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 210, + 211 + ] + }, + { + "teal": 45, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 212, + 213 + ] + }, + { + "teal": 46, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 214 + ] + }, + { + "teal": 47, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 215, + 216 + ] + }, + { + "teal": 48, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 217, + 218 + ] + }, + { + "teal": 49, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 219, + 220 + ] + }, + { + "teal": 50, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 221, + 222 + ] + }, + { + "teal": 51, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 223 + ] + }, + { + "teal": 55, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:60", + "pc": [ + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247 + ] + }, + { + "teal": 56, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:60", + "pc": [ + 248, + 249, + 250 + ] + }, + { + "teal": 57, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:60", + "pc": [ + 251 + ] + }, + { + "teal": 61, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:61", + "pc": [ + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274 + ] + }, + { + "teal": 62, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:61", + "pc": [ + 275, + 276, + 277 + ] + }, + { + "teal": 63, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:61", + "pc": [ + 278 + ] + }, + { + "teal": 67, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:62", + "pc": [ + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302 + ] + }, + { + "teal": 68, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:62", + "pc": [ + 303, + 304, + 305 + ] + }, + { + "teal": 69, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:62", + "pc": [ + 306 + ] + }, + { + "teal": 73, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:63", + "pc": [ + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332 + ] + }, + { + "teal": 74, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:63", + "pc": [ + 333, + 334, + 335 + ] + }, + { + "teal": 75, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:63", + "pc": [ + 336 + ] + }, + { + "teal": 79, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 337, + 338 + ] + }, + { + "teal": 80, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361 + ] + }, + { + "teal": 81, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 362, + 363, + 364 + ] + }, + { + "teal": 82, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 365 + ] + }, + { + "teal": 86, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 366, + 367 + ] + }, + { + "teal": 87, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389 + ] + }, + { + "teal": 88, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 390, + 391, + 392 + ] + }, + { + "teal": 89, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 393 + ] + }, + { + "teal": 93, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 394, + 395 + ] + }, + { + "teal": 94, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418 + ] + }, + { + "teal": 95, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 419, + 420, + 421 + ] + }, + { + "teal": 96, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 422 + ] + }, + { + "teal": 100, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 423, + 424 + ] + }, + { + "teal": 101, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449 + ] + }, + { + "teal": 102, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 450, + 451, + 452 + ] + }, + { + "teal": 103, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 453 + ] + }, + { + "teal": 107, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:70", + "pc": [ + 454 + ] + }, + { + "teal": 108, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:70", + "pc": [ + 455, + 456, + 457 + ] + }, + { + "teal": 109, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:70", + "pc": [ + 458 + ] + }, + { + "teal": 113, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:71", + "pc": [ + 459, + 460 + ] + }, + { + "teal": 114, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:71", + "pc": [ + 461, + 462, + 463 + ] + }, + { + "teal": 115, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:71", + "pc": [ + 464 + ] + }, + { + "teal": 119, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:72", + "pc": [ + 465 + ] + }, + { + "teal": 120, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:72", + "pc": [ + 466, + 467, + 468 + ] + }, + { + "teal": 121, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:72", + "pc": [ + 469 + ] + }, + { + "teal": 125, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:73", + "pc": [ + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480 + ] + }, + { + "teal": 126, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:73", + "pc": [ + 481, + 482, + 483 + ] + }, + { + "teal": 127, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:73", + "pc": [ + 484 + ] + }, + { + "teal": 131, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 485, + 486 + ] + }, + { + "teal": 132, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 487 + ] + }, + { + "teal": 133, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 488, + 489, + 490 + ] + }, + { + "teal": 134, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 491 + ] + }, + { + "teal": 138, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 492, + 493 + ] + }, + { + "teal": 139, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 494, + 495 + ] + }, + { + "teal": 140, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 496, + 497, + 498 + ] + }, + { + "teal": 141, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 499 + ] + }, + { + "teal": 145, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 500, + 501 + ] + }, + { + "teal": 146, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 502 + ] + }, + { + "teal": 147, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 503, + 504, + 505 + ] + }, + { + "teal": 148, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 506 + ] + }, + { + "teal": 152, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 507, + 508 + ] + }, + { + "teal": 153, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 509, + 510 + ] + }, + { + "teal": 154, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 511, + 512, + 513 + ] + }, + { + "teal": 155, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 514 + ] + }, + { + "teal": 159, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 515, + 516 + ] + }, + { + "teal": 160, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 517, + 518, + 519 + ] + }, + { + "teal": 161, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 520 + ] + }, + { + "teal": 162, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 521 + ] + }, + { + "teal": 163, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 522 + ] + }, + { + "teal": 167, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 523, + 524 + ] + }, + { + "teal": 168, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 525, + 526, + 527 + ] + }, + { + "teal": 169, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 528 + ] + }, + { + "teal": 170, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 529 + ] + }, + { + "teal": 171, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 530 + ] + }, + { + "teal": 175, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 531, + 532 + ] + }, + { + "teal": 176, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 533, + 534, + 535 + ] + }, + { + "teal": 177, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 536 + ] + }, + { + "teal": 178, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 537 + ] + }, + { + "teal": 179, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 538 + ] + }, + { + "teal": 183, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 539, + 540 + ] + }, + { + "teal": 184, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 541, + 542, + 543 + ] + }, + { + "teal": 185, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 544 + ] + }, + { + "teal": 186, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 545 + ] + }, + { + "teal": 187, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 546 + ] + }, + { + "teal": 191, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 547, + 548 + ] + }, + { + "teal": 192, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 549, + 550 + ] + }, + { + "teal": 193, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 551, + 552, + 553 + ] + }, + { + "teal": 194, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 554 + ] + }, + { + "teal": 195, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 555 + ] + }, + { + "teal": 196, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 556 + ] + }, + { + "teal": 200, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 557, + 558 + ] + }, + { + "teal": 201, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 559, + 560 + ] + }, + { + "teal": 202, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 561, + 562, + 563 + ] + }, + { + "teal": 203, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 564 + ] + }, + { + "teal": 204, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 565 + ] + }, + { + "teal": 205, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 566 + ] + }, + { + "teal": 209, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 567, + 568 + ] + }, + { + "teal": 210, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 569, + 570 + ] + }, + { + "teal": 211, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 571, + 572, + 573 + ] + }, + { + "teal": 212, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 574 + ] + }, + { + "teal": 213, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 575 + ] + }, + { + "teal": 214, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 576 + ] + }, + { + "teal": 218, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 577, + 578 + ] + }, + { + "teal": 219, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 579, + 580 + ] + }, + { + "teal": 220, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 581, + 582, + 583 + ] + }, + { + "teal": 221, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 584 + ] + }, + { + "teal": 222, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 585 + ] + }, + { + "teal": 223, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 586 + ] + }, + { + "teal": 224, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 587 + ] + }, + { + "teal": 229, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 588, + 589, + 590 + ] + }, + { + "teal": 230, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 591 + ] + }, + { + "teal": 231, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 592 + ] + }, + { + "teal": 235, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 593, + 594, + 595 + ] + }, + { + "teal": 239, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 596, + 597 + ] + }, + { + "teal": 240, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 598 + ] + }, + { + "teal": 241, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 599 + ] + }, + { + "teal": 242, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 600 + ] + }, + { + "teal": 243, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 601, + 602, + 603 + ] + }, + { + "teal": 244, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 604 + ] + }, + { + "teal": 248, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:93", + "pc": [ + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624 + ] + }, + { + "teal": 249, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:93", + "pc": [ + 625, + 626, + 627 + ] + }, + { + "teal": 250, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:93", + "pc": [ + 628 + ] + }, + { + "teal": 254, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 629, + 630 + ] + }, + { + "teal": 255, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 631 + ] + }, + { + "teal": 256, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 632 + ] + }, + { + "teal": 257, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 633 + ] + }, + { + "teal": 258, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 634, + 635, + 636 + ] + }, + { + "teal": 259, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 637 + ] + }, + { + "teal": 263, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 638, + 639 + ] + }, + { + "teal": 264, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 640 + ] + }, + { + "teal": 265, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 641 + ] + }, + { + "teal": 266, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 642 + ] + }, + { + "teal": 267, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 643, + 644, + 645 + ] + }, + { + "teal": 268, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 646 + ] + }, + { + "teal": 272, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 647 + ] + }, + { + "teal": 273, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 648 + ] + }, + { + "teal": 274, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 649 + ] + }, + { + "teal": 275, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 650 + ] + }, + { + "teal": 276, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 651, + 652, + 653 + ] + }, + { + "teal": 277, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 654 + ] + }, + { + "teal": 281, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:98", + "pc": [ + 655, + 656 + ] + }, + { + "teal": 282, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:98", + "pc": [ + 657, + 658, + 659 + ] + }, + { + "teal": 283, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:98", + "pc": [ + 660 + ] + }, + { + "teal": 287, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 661 + ] + }, + { + "teal": 288, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 662 + ] + }, + { + "teal": 289, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 663 + ] + }, + { + "teal": 290, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 664 + ] + }, + { + "teal": 291, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 665, + 666, + 667 + ] + }, + { + "teal": 292, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 668 + ] + }, + { + "teal": 296, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 669, + 670 + ] + }, + { + "teal": 297, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 671 + ] + }, + { + "teal": 298, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 672 + ] + }, + { + "teal": 299, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 673 + ] + }, + { + "teal": 300, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 674, + 675, + 676 + ] + }, + { + "teal": 301, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 677 + ] + }, + { + "teal": 305, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 678, + 679 + ] + }, + { + "teal": 306, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 680, + 681, + 682 + ] + }, + { + "teal": 307, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 683 + ] + }, + { + "teal": 308, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 684 + ] + }, + { + "teal": 309, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 685 + ] + }, + { + "teal": 313, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 686, + 687 + ] + }, + { + "teal": 314, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 688, + 689, + 690 + ] + }, + { + "teal": 315, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 691 + ] + }, + { + "teal": 316, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 692 + ] + }, + { + "teal": 317, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 693 + ] + }, + { + "teal": 321, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 694, + 695 + ] + }, + { + "teal": 322, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 696, + 697, + 698 + ] + }, + { + "teal": 323, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 699 + ] + }, + { + "teal": 324, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 700 + ] + }, + { + "teal": 325, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 701 + ] + }, + { + "teal": 329, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 702, + 703 + ] + }, + { + "teal": 330, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 704, + 705, + 706 + ] + }, + { + "teal": 331, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 707 + ] + }, + { + "teal": 332, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 708 + ] + }, + { + "teal": 333, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 709 + ] + }, + { + "teal": 334, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 710 + ] + }, + { + "teal": 339, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 711, + 712 + ] + }, + { + "teal": 342, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 713, + 714, + 715 + ] + }, + { + "teal": 343, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 716 + ] + }, + { + "teal": 344, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 717 + ] + }, + { + "teal": 345, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 718 + ] + }, + { + "teal": 346, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 719, + 720, + 721 + ] + }, + { + "teal": 347, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 722 + ] + }, + { + "teal": 348, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 723 + ] + }, + { + "teal": 349, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 724 + ] + }, + { + "teal": 350, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 725 + ] + }, + { + "teal": 351, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 726 + ] + }, + { + "teal": 352, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 727 + ] + }, + { + "teal": 356, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 728, + 729, + 730 + ] + }, + { + "teal": 360, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:109", + "pc": [ + 731, + 732, + 733, + 734, + 735, + 736 + ] + }, + { + "teal": 361, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 737 + ] + }, + { + "teal": 366, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 738, + 739 + ] + }, + { + "teal": 369, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 740, + 741, + 742 + ] + }, + { + "teal": 370, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 743 + ] + }, + { + "teal": 371, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 744 + ] + }, + { + "teal": 372, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 745 + ] + }, + { + "teal": 373, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 746 + ] + }, + { + "teal": 377, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 747, + 748, + 749 + ] + }, + { + "teal": 381, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759 + ] + }, + { + "teal": 382, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 760 + ] + }, + { + "teal": 383, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 761 + ] + }, + { + "teal": 384, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 762 + ] + }, + { + "teal": 385, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 763 + ] + }, + { + "teal": 386, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 764, + 765, + 766 + ] + }, + { + "teal": 387, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 767 + ] + }, + { + "teal": 392, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 768, + 769 + ] + }, + { + "teal": 395, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 770, + 771, + 772 + ] + }, + { + "teal": 396, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 773 + ] + }, + { + "teal": 397, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 774 + ] + }, + { + "teal": 398, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 775 + ] + }, + { + "teal": 399, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 776 + ] + }, + { + "teal": 403, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 777, + 778, + 779 + ] + }, + { + "teal": 407, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 780 + ] + }, + { + "teal": 408, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 781 + ] + }, + { + "teal": 409, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 782, + 783, + 784, + 785 + ] + }, + { + "teal": 410, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 786, + 787 + ] + }, + { + "teal": 411, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 788, + 789, + 790 + ] + }, + { + "teal": 412, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 791, + 792 + ] + }, + { + "teal": 413, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 793 + ] + }, + { + "teal": 414, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 794 + ] + }, + { + "teal": 415, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 795 + ] + }, + { + "teal": 416, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 796 + ] + }, + { + "teal": 417, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 797, + 798, + 799 + ] + }, + { + "teal": 418, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 800, + 801, + 802 + ] + }, + { + "teal": 419, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 803 + ] + }, + { + "teal": 420, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 804 + ] + }, + { + "teal": 421, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 805 + ] + }, + { + "teal": 426, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 806, + 807 + ] + }, + { + "teal": 429, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 808, + 809, + 810 + ] + }, + { + "teal": 430, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 811 + ] + }, + { + "teal": 431, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 812 + ] + }, + { + "teal": 432, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 813 + ] + }, + { + "teal": 433, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 814 + ] + }, + { + "teal": 437, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 815, + 816, + 817 + ] + }, + { + "teal": 448, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 818 + ] + }, + { + "teal": 449, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 819 + ] + }, + { + "teal": 450, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 820, + 821, + 822, + 823 + ] + }, + { + "teal": 451, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:122", + "pc": [ + 824, + 825 + ] + }, + { + "teal": 452, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:122", + "pc": [ + 826, + 827, + 828 + ] + }, + { + "teal": 453, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 829, + 830 + ] + }, + { + "teal": 454, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 831 + ] + }, + { + "teal": 455, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 832 + ] + }, + { + "teal": 456, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 833 + ] + }, + { + "teal": 457, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 834 + ] + }, + { + "teal": 458, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 835, + 836, + 837 + ] + }, + { + "teal": 459, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 838, + 839, + 840 + ] + }, + { + "teal": 460, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 841 + ] + }, + { + "teal": 461, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 842 + ] + }, + { + "teal": 462, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 843, + 844, + 845, + 846 + ] + }, + { + "teal": 463, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:125", + "pc": [ + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854 + ] + }, + { + "teal": 464, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:125", + "pc": [ + 855, + 856, + 857 + ] + }, + { + "teal": 465, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:126", + "pc": [ + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867 + ] + }, + { + "teal": 466, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:126", + "pc": [ + 868, + 869, + 870 + ] + }, + { + "teal": 467, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 871 + ] + }, + { + "teal": 468, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 872 + ] + }, + { + "teal": 469, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 873, + 874, + 875 + ] + }, + { + "teal": 470, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 876 + ] + }, + { + "teal": 471, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 877 + ] + }, + { + "teal": 472, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 878 + ] + }, + { + "teal": 475, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 879, + 880 + ] + }, + { + "teal": 476, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 881, + 882, + 883 + ] + }, + { + "teal": 477, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 884, + 885, + 886, + 887 + ] + }, + { + "teal": 480, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 888 + ] + }, + { + "teal": 483, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 889, + 890, + 891, + 892, + 893, + 894 + ] + }, + { + "teal": 484, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 895, + 896, + 897, + 898, + 899, + 900 + ] + }, + { + "teal": 485, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 901, + 902, + 903, + 904, + 905, + 906 + ] + }, + { + "teal": 486, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 907, + 908, + 909, + 910, + 911, + 912 + ] + }, + { + "teal": 487, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 913, + 914, + 915, + 916, + 917, + 918 + ] + }, + { + "teal": 488, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 919, + 920, + 921 + ] + }, + { + "teal": 489, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933 + ] + }, + { + "teal": 492, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 934 + ] + }, + { + "teal": 495, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 935, + 936 + ] + }, + { + "teal": 496, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 937, + 938, + 939 + ] + }, + { + "teal": 497, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 940, + 941, + 942, + 943 + ] + }, + { + "teal": 500, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "this contract does not implement the given ABI method for create OptIn", + "pc": [ + 944 + ] + }, + { + "teal": 503, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 945, + 946, + 947 + ] + }, + { + "teal": 504, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 948, + 949 + ] + }, + { + "teal": 505, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 950, + 951 + ] + }, + { + "teal": 506, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 952 + ] + }, + { + "teal": 507, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 953, + 954 + ] + }, + { + "teal": 508, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 955, + 956 + ] + }, + { + "teal": 509, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 957 + ] + }, + { + "teal": 512, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 958, + 959, + 960 + ] + }, + { + "teal": 513, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 961, + 962 + ] + }, + { + "teal": 514, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 963, + 964 + ] + }, + { + "teal": 515, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 965 + ] + }, + { + "teal": 516, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 966, + 967 + ] + }, + { + "teal": 517, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 968, + 969 + ] + }, + { + "teal": 518, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 970 + ] + }, + { + "teal": 519, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 971 + ] + }, + { + "teal": 520, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 972, + 973 + ] + }, + { + "teal": 521, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 974 + ] + }, + { + "teal": 522, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 975 + ] + }, + { + "teal": 523, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 976 + ] + }, + { + "teal": 524, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 977, + 978, + 979 + ] + }, + { + "teal": 525, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 980, + 981 + ] + }, + { + "teal": 526, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 982, + 983 + ] + }, + { + "teal": 527, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 984 + ] + }, + { + "teal": 528, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 985 + ] + }, + { + "teal": 529, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 986, + 987 + ] + }, + { + "teal": 530, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 988, + 989 + ] + }, + { + "teal": 531, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 990, + 991 + ] + }, + { + "teal": 532, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 992, + 993 + ] + }, + { + "teal": 533, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 994 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgNgpieXRlY2Jsb2NrIDB4IDB4NDQwMDAwMDAwMDAwMDAwMDAwIDB4NGUwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMCAweDE1MWY3Yzc1IDB4NTMwMDAwMDAwMDAwMDAwMDAwIDB4NGQwMDAwMDAwMDAwMDAwMDAwIDB4NGI0NCAweDRiNTMgMHg0YjRlIDB4NGI0MiAweDYyNzk3NDY1NDE3MjcyNjE3OTczNDk2ZTUzNzQ3Mjc1NjM3NDQyNmY3OCAweDY0Nzk2ZTYxNmQ2OTYzNDI3OTc0NjU0MTcyNzI2MTc5NDI2Zjc4IDB4NmU2NTczNzQ2NTY0NDI3OTc0NjU0MTcyNzI2MTc5NzM0MjZmNzggMHhjYWZlYmFiZTAwMDAwMDAwIDB4MDAwNGRlYWRiZWVmIDB4Yjg0NDdiMzYgMHgwYTgxMDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgMiAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKmNyZWF0ZV9PcHRJbiAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo1OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDE3IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NjAKCS8vIHRoaXMuZHluYW1pY0J5dGVBcnJheUdsb2JhbC52YWx1ZSA9IHRoaXMuZHluYW1pY0J5dGVBcnJheSgpCglwdXNoYnl0ZXMgMHg2NDc5NmU2MTZkNjk2MzQyNzk3NDY1NDE3MjcyNjE3OTQ3NmM2ZjYyNjE2YyAvLyAiZHluYW1pY0J5dGVBcnJheUdsb2JhbCIKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjYxCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUdsb2JhbC52YWx1ZSA9IHRoaXMuc3RhdGljQnl0ZUFycmF5KCkKCXB1c2hieXRlcyAweDczNzQ2MTc0Njk2MzQyNzk3NDY1NDE3MjcyNjE3OTQ3NmM2ZjYyNjE2YyAvLyAic3RhdGljQnl0ZUFycmF5R2xvYmFsIgoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo2MgoJLy8gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzR2xvYmFsLnZhbHVlID0gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzKCkKCXB1c2hieXRlcyAweDZlNjU3Mzc0NjU2NDQyNzk3NDY1NDE3MjcyNjE3OTczNDc2YzZmNjI2MTZjIC8vICJuZXN0ZWRCeXRlQXJyYXlzR2xvYmFsIgoJY2FsbHN1YiBuZXN0ZWRCeXRlQXJyYXlzCglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NjMKCS8vIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0R2xvYmFsLnZhbHVlID0gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3QoKQoJcHVzaGJ5dGVzIDB4NjI3OTc0NjU0MTcyNzI2MTc5NzM0OTZlNTM3NDcyNzU2Mzc0NDc2YzZmNjI2MTZjIC8vICJieXRlQXJyYXlzSW5TdHJ1Y3RHbG9iYWwiCgljYWxsc3ViIGJ5dGVBcnJheXNJblN0cnVjdAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjY1CgkvLyB0aGlzLmR5bmFtaWNCeXRlQXJyYXlMb2NhbCh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlID0gdGhpcy5keW5hbWljQnl0ZUFycmF5KCkKCXR4biBTZW5kZXIKCXB1c2hieXRlcyAweDY0Nzk2ZTYxNmQ2OTYzNDI3OTc0NjU0MTcyNzI2MTc5NGM2ZjYzNjE2YyAvLyAiZHluYW1pY0J5dGVBcnJheUxvY2FsIgoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo2NgoJLy8gdGhpcy5zdGF0aWNCeXRlQXJyYXlMb2NhbCh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlID0gdGhpcy5zdGF0aWNCeXRlQXJyYXkoKQoJdHhuIFNlbmRlcgoJcHVzaGJ5dGVzIDB4NzM3NDYxNzQ2OTYzNDI3OTc0NjU0MTcyNzI2MTc5NGM2ZjYzNjE2YyAvLyAic3RhdGljQnl0ZUFycmF5TG9jYWwiCgljYWxsc3ViIHN0YXRpY0J5dGVBcnJheQoJYXBwX2xvY2FsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NjcKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0xvY2FsKHRoaXMudHhuLnNlbmRlcikudmFsdWUgPSB0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKQoJdHhuIFNlbmRlcgoJcHVzaGJ5dGVzIDB4NmU2NTczNzQ2NTY0NDI3OTc0NjU0MTcyNzI2MTc5NzM0YzZmNjM2MTZjIC8vICJuZXN0ZWRCeXRlQXJyYXlzTG9jYWwiCgljYWxsc3ViIG5lc3RlZEJ5dGVBcnJheXMKCWFwcF9sb2NhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjY4CgkvLyB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdExvY2FsKHRoaXMudHhuLnNlbmRlcikudmFsdWUgPSB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdCgpCgl0eG4gU2VuZGVyCglwdXNoYnl0ZXMgMHg2Mjc5NzQ2NTQxNzI3MjYxNzk3MzQ5NmU1Mzc0NzI3NTYzNzQ0YzZmNjM2MTZjIC8vICJieXRlQXJyYXlzSW5TdHJ1Y3RMb2NhbCIKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo3MAoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5R2xvYmFsTWFwKDApLnZhbHVlID0gdGhpcy5keW5hbWljQnl0ZUFycmF5KCkKCWJ5dGVjIDEgLy8gMHg0NDAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjcxCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUdsb2JhbE1hcCgwKS52YWx1ZSA9IHRoaXMuc3RhdGljQnl0ZUFycmF5KCkKCWJ5dGVjIDUgLy8gMHg1MzAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgc3RhdGljQnl0ZUFycmF5CglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NzIKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0dsb2JhbE1hcCgwKS52YWx1ZSA9IHRoaXMubmVzdGVkQnl0ZUFycmF5cygpCglieXRlYyAyIC8vIDB4NGUwMDAwMDAwMDAwMDAwMDAwCgljYWxsc3ViIG5lc3RlZEJ5dGVBcnJheXMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo3MwoJLy8gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3RHbG9iYWxNYXAoMCkudmFsdWUgPSB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdCgpCglwdXNoYnl0ZXMgMHg0MjAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NzUKCS8vIHRoaXMuZHluYW1pY0J5dGVBcnJheUxvY2FsTWFwKHRoaXMudHhuLnNlbmRlciwgMCkudmFsdWUgPSB0aGlzLmR5bmFtaWNCeXRlQXJyYXkoKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAweDQ0MDAwMDAwMDAwMDAwMDAwMAoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo3NgoJLy8gdGhpcy5zdGF0aWNCeXRlQXJyYXlMb2NhbE1hcCh0aGlzLnR4bi5zZW5kZXIsIDApLnZhbHVlID0gdGhpcy5zdGF0aWNCeXRlQXJyYXkoKQoJdHhuIFNlbmRlcgoJYnl0ZWMgNSAvLyAweDUzMDAwMDAwMDAwMDAwMDAwMAoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWFwcF9sb2NhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjc3CgkvLyB0aGlzLm5lc3RlZEJ5dGVBcnJheXNMb2NhbE1hcCh0aGlzLnR4bi5zZW5kZXIsIDApLnZhbHVlID0gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzKCkKCXR4biBTZW5kZXIKCWJ5dGVjIDIgLy8gMHg0ZTAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJYXBwX2xvY2FsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6NzgKCS8vIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0TG9jYWxNYXAodGhpcy50eG4uc2VuZGVyLCAwKS52YWx1ZSA9IHRoaXMuYnl0ZUFycmF5c0luU3RydWN0KCkKCXR4biBTZW5kZXIKCWJ5dGVjIDYgLy8gMHg0ZDAwMDAwMDAwMDAwMDAwMDAKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0CglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4MAoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5R2xvYmFsTWFwS2V5KHRoaXMuZHluYW1pY0J5dGVBcnJheSgpKS52YWx1ZSA9IDAKCWJ5dGVjIDcgLy8gICJLRCIKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJY29uY2F0CglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjgxCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUdsb2JhbE1hcEtleSh0aGlzLnN0YXRpY0J5dGVBcnJheSgpKS52YWx1ZSA9IDAKCWJ5dGVjIDggLy8gICJLUyIKCWNhbGxzdWIgc3RhdGljQnl0ZUFycmF5Cgljb25jYXQKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6ODIKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0dsb2JhbE1hcEtleSh0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKSkudmFsdWUgPSAwCglieXRlYyA5IC8vICAiS04iCgljYWxsc3ViIG5lc3RlZEJ5dGVBcnJheXMKCWNvbmNhdAoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4MwoJLy8gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3RHbG9iYWxNYXBLZXkodGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3QoKSkudmFsdWUgPSAwCglieXRlYyAxMCAvLyAgIktCIgoJY2FsbHN1YiBieXRlQXJyYXlzSW5TdHJ1Y3QKCWNvbmNhdAoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4NQoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5TG9jYWxNYXBLZXkodGhpcy50eG4uc2VuZGVyLCB0aGlzLmR5bmFtaWNCeXRlQXJyYXkoKSkudmFsdWUgPSAwCgl0eG4gU2VuZGVyCglieXRlYyA3IC8vICAiS0QiCgljYWxsc3ViIGR5bmFtaWNCeXRlQXJyYXkKCWNvbmNhdAoJaW50YyAwIC8vIDAKCWFwcF9sb2NhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjg2CgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUxvY2FsTWFwS2V5KHRoaXMudHhuLnNlbmRlciwgdGhpcy5zdGF0aWNCeXRlQXJyYXkoKSkudmFsdWUgPSAwCgl0eG4gU2VuZGVyCglieXRlYyA4IC8vICAiS1MiCgljYWxsc3ViIHN0YXRpY0J5dGVBcnJheQoJY29uY2F0CglpbnRjIDAgLy8gMAoJYXBwX2xvY2FsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6ODcKCS8vIHRoaXMubmVzdGVkQnl0ZUFycmF5c0xvY2FsTWFwS2V5KHRoaXMudHhuLnNlbmRlciwgdGhpcy5uZXN0ZWRCeXRlQXJyYXlzKCkpLnZhbHVlID0gMAoJdHhuIFNlbmRlcgoJYnl0ZWMgOSAvLyAgIktOIgoJY2FsbHN1YiBuZXN0ZWRCeXRlQXJyYXlzCgljb25jYXQKCWludGMgMCAvLyAwCglhcHBfbG9jYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo4OAoJLy8gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3RMb2NhbE1hcEtleSh0aGlzLnR4bi5zZW5kZXIsIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0KCkpLnZhbHVlID0gMAoJdHhuIFNlbmRlcgoJYnl0ZWMgMTAgLy8gICJLQiIKCWNhbGxzdWIgYnl0ZUFycmF5c0luU3RydWN0Cgljb25jYXQKCWludGMgMCAvLyAwCglhcHBfbG9jYWxfcHV0CglyZXRzdWIKCi8vIHNldEJveFZhbHVlcygpdm9pZAoqYWJpX3JvdXRlX3NldEJveFZhbHVlczoKCS8vIGV4ZWN1dGUgc2V0Qm94VmFsdWVzKCl2b2lkCgljYWxsc3ViIHNldEJveFZhbHVlcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc2V0Qm94VmFsdWVzKCk6IHZvaWQKc2V0Qm94VmFsdWVzOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czo5MgoJLy8gdGhpcy5keW5hbWljQnl0ZUFycmF5Qm94LnZhbHVlID0gdGhpcy5keW5hbWljQnl0ZUFycmF5KCkKCWJ5dGVjIDEyIC8vICAiZHluYW1pY0J5dGVBcnJheUJveCIKCWR1cAoJYm94X2RlbAoJcG9wCgljYWxsc3ViIGR5bmFtaWNCeXRlQXJyYXkKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjkzCgkvLyB0aGlzLnN0YXRpY0J5dGVBcnJheUJveC52YWx1ZSA9IHRoaXMuc3RhdGljQnl0ZUFycmF5KCkKCXB1c2hieXRlcyAweDczNzQ2MTc0Njk2MzQyNzk3NDY1NDE3MjcyNjE3OTQyNmY3OCAvLyAic3RhdGljQnl0ZUFycmF5Qm94IgoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjk0CgkvLyB0aGlzLm5lc3RlZEJ5dGVBcnJheXNCb3gudmFsdWUgPSB0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKQoJYnl0ZWMgMTMgLy8gICJuZXN0ZWRCeXRlQXJyYXlzQm94IgoJZHVwCglib3hfZGVsCglwb3AKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6OTUKCS8vIHRoaXMuYnl0ZUFycmF5c0luU3RydWN0Qm94LnZhbHVlID0gdGhpcy5ieXRlQXJyYXlzSW5TdHJ1Y3QoKQoJYnl0ZWMgMTEgLy8gICJieXRlQXJyYXlzSW5TdHJ1Y3RCb3giCglkdXAKCWJveF9kZWwKCXBvcAoJY2FsbHN1YiBieXRlQXJyYXlzSW5TdHJ1Y3QKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjk3CgkvLyB0aGlzLmR5bmFtaWNCeXRlQXJyYXlCb3hNYXAoMCkudmFsdWUgPSB0aGlzLmR5bmFtaWNCeXRlQXJyYXkoKQoJYnl0ZWMgMSAvLyAweDQ0MDAwMDAwMDAwMDAwMDAwMAoJZHVwCglib3hfZGVsCglwb3AKCWNhbGxzdWIgZHluYW1pY0J5dGVBcnJheQoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6OTgKCS8vIHRoaXMuc3RhdGljQnl0ZUFycmF5Qm94TWFwKDApLnZhbHVlID0gdGhpcy5zdGF0aWNCeXRlQXJyYXkoKQoJYnl0ZWMgNSAvLyAweDUzMDAwMDAwMDAwMDAwMDAwMAoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjk5CgkvLyB0aGlzLm5lc3RlZEJ5dGVBcnJheXNCb3hNYXAoMCkudmFsdWUgPSB0aGlzLm5lc3RlZEJ5dGVBcnJheXMoKQoJYnl0ZWMgMiAvLyAweDRlMDAwMDAwMDAwMDAwMDAwMAoJZHVwCglib3hfZGVsCglwb3AKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTAwCgkvLyB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdEJveE1hcCgwKS52YWx1ZSA9IHRoaXMuYnl0ZUFycmF5c0luU3RydWN0KCkKCWJ5dGVjIDYgLy8gMHg0ZDAwMDAwMDAwMDAwMDAwMDAKCWR1cAoJYm94X2RlbAoJcG9wCgljYWxsc3ViIGJ5dGVBcnJheXNJblN0cnVjdAoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTAyCgkvLyB0aGlzLmR5bmFtaWNCeXRlQXJyYXlCb3hNYXBLZXkodGhpcy5keW5hbWljQnl0ZUFycmF5KCkpLnZhbHVlID0gMAoJYnl0ZWMgNyAvLyAgIktEIgoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5Cgljb25jYXQKCWJ5dGVjIDMgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglib3hfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvYnl0ZV9hcnJheXMvYnl0ZV9hcnJheXMuYWxnby50czoxMDMKCS8vIHRoaXMuc3RhdGljQnl0ZUFycmF5Qm94TWFwS2V5KHRoaXMuc3RhdGljQnl0ZUFycmF5KCkpLnZhbHVlID0gMAoJYnl0ZWMgOCAvLyAgIktTIgoJY2FsbHN1YiBzdGF0aWNCeXRlQXJyYXkKCWNvbmNhdAoJYnl0ZWMgMyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJveF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9ieXRlX2FycmF5cy9ieXRlX2FycmF5cy5hbGdvLnRzOjEwNAoJLy8gdGhpcy5uZXN0ZWRCeXRlQXJyYXlzQm94TWFwS2V5KHRoaXMubmVzdGVkQnl0ZUFycmF5cygpKS52YWx1ZSA9IDAKCWJ5dGVjIDkgLy8gICJLTiIKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJY29uY2F0CglieXRlYyAzIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYm94X3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTA1CgkvLyB0aGlzLmJ5dGVBcnJheXNJblN0cnVjdEJveE1hcEtleSh0aGlzLmJ5dGVBcnJheXNJblN0cnVjdCgpKS52YWx1ZSA9IDAKCWJ5dGVjIDEwIC8vICAiS0IiCgljYWxsc3ViIGJ5dGVBcnJheXNJblN0cnVjdAoJY29uY2F0CglieXRlYyAzIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYm94X3B1dAoJcmV0c3ViCgovLyBkeW5hbWljQnl0ZUFycmF5KClieXRlW10KKmFiaV9yb3V0ZV9keW5hbWljQnl0ZUFycmF5OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyA0IC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGR5bmFtaWNCeXRlQXJyYXkoKWJ5dGVbXQoJY2FsbHN1YiBkeW5hbWljQnl0ZUFycmF5CglkdXAKCWxlbgoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGR5bmFtaWNCeXRlQXJyYXkoKTogYnl0ZXMKZHluYW1pY0J5dGVBcnJheToKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTA5CgkvLyByZXR1cm4gaGV4KCcweGRlYWRiZWVmJykKCXB1c2hieXRlcyAweGRlYWRiZWVmCglyZXRzdWIKCi8vIHN0YXRpY0J5dGVBcnJheSgpYnl0ZVs0XQoqYWJpX3JvdXRlX3N0YXRpY0J5dGVBcnJheToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgNCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBzdGF0aWNCeXRlQXJyYXkoKWJ5dGVbNF0KCWNhbGxzdWIgc3RhdGljQnl0ZUFycmF5Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3RhdGljQnl0ZUFycmF5KCk6IGJ5dGVzPDQ+CnN0YXRpY0J5dGVBcnJheToKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTEzCgkvLyByZXR1cm4gaGV4KCcweGRlYWRiZWVmJykgYXMgYnl0ZXM8ND4KCXB1c2hieXRlcyAweGRlYWRiZWVmMDAwMDAwMDAKCWJ5dGVjIDAgLy8gMHgKCWR1cAoJYj09Cglhc3NlcnQKCWV4dHJhY3QgMCA0CglyZXRzdWIKCi8vIG5lc3RlZEJ5dGVBcnJheXMoKShieXRlW10sYnl0ZVs0XSkKKmFiaV9yb3V0ZV9uZXN0ZWRCeXRlQXJyYXlzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyA0IC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEJ5dGVBcnJheXMoKShieXRlW10sYnl0ZVs0XSkKCWNhbGxzdWIgbmVzdGVkQnl0ZUFycmF5cwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEJ5dGVBcnJheXMoKTogW2J5dGVzLCBieXRlczw0Pl0KbmVzdGVkQnl0ZUFycmF5czoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTE3CgkvLyByZXR1cm4gW2hleCgnMHhkZWFkYmVlZicpLCBoZXgoJzB4Y2FmZWJhYmUnKSBhcyBieXRlczw0Pl0KCWJ5dGVjIDAgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMCAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDA2IC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCWJ5dGVjIDE1IC8vIDB4MDAwNGRlYWRiZWVmCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJYnl0ZWMgMTQgLy8gMHhjYWZlYmFiZTAwMDAwMDAwCglieXRlYyAwIC8vIDB4CglkdXAKCWI9PQoJYXNzZXJ0CglleHRyYWN0IDAgNAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglyZXRzdWIKCi8vIGJ5dGVBcnJheXNJblN0cnVjdCgpKGJ5dGVbXSxieXRlWzRdLChieXRlW10sdWludDY0KSkKKmFiaV9yb3V0ZV9ieXRlQXJyYXlzSW5TdHJ1Y3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDQgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgYnl0ZUFycmF5c0luU3RydWN0KCkoYnl0ZVtdLGJ5dGVbNF0sKGJ5dGVbXSx1aW50NjQpKQoJY2FsbHN1YiBieXRlQXJyYXlzSW5TdHJ1Y3QKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBieXRlQXJyYXlzSW5TdHJ1Y3QoKTogQnl0ZUFycmF5c0luU3RydWN0CmJ5dGVBcnJheXNJblN0cnVjdDoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL2J5dGVfYXJyYXlzL2J5dGVfYXJyYXlzLmFsZ28udHM6MTIxCgkvLyByZXR1cm4gewoJLy8gICAgICAgYXJyMTogaGV4KCcweGRlYWRiZWVmJyksCgkvLyAgICAgICBhcnIyOiBoZXgoJzB4Y2FmZWJhYmUnKSBhcyBieXRlczw0PiwKCS8vICAgICAgIG5lc3RlZFN0cnVjdDogewoJLy8gICAgICAgICBhcnIzOiBoZXgoJzB4ZGVhZGMwZGUnKSwKCS8vICAgICAgICAgbm9uQnl0ZXM6IDQsCgkvLyAgICAgICB9LAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMCAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDA4IC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCWJ5dGVjIDE1IC8vIDB4MDAwNGRlYWRiZWVmCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJYnl0ZWMgMTQgLy8gMHhjYWZlYmFiZTAwMDAwMDAwCglieXRlYyAwIC8vIDB4CglkdXAKCWI9PQoJYXNzZXJ0CglleHRyYWN0IDAgNAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJYnl0ZWMgMCAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAwIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMGEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwNGRlYWRjMGRlCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwNAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCWJ5dGVjIDE2IC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4OGVkMjExMjUgLy8gbWV0aG9kICJzZXRCb3hWYWx1ZXMoKXZvaWQiCglwdXNoYnl0ZXMgMHgyZWI3NWRlNSAvLyBtZXRob2QgImR5bmFtaWNCeXRlQXJyYXkoKWJ5dGVbXSIKCXB1c2hieXRlcyAweDY5NWIxNjQxIC8vIG1ldGhvZCAic3RhdGljQnl0ZUFycmF5KClieXRlWzRdIgoJcHVzaGJ5dGVzIDB4ZjIzNTllZTkgLy8gbWV0aG9kICJuZXN0ZWRCeXRlQXJyYXlzKCkoYnl0ZVtdLGJ5dGVbNF0pIgoJcHVzaGJ5dGVzIDB4ZDVmNDg2MGYgLy8gbWV0aG9kICJieXRlQXJyYXlzSW5TdHJ1Y3QoKShieXRlW10sYnl0ZVs0XSwoYnl0ZVtdLHVpbnQ2NCkpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9zZXRCb3hWYWx1ZXMgKmFiaV9yb3V0ZV9keW5hbWljQnl0ZUFycmF5ICphYmlfcm91dGVfc3RhdGljQnl0ZUFycmF5ICphYmlfcm91dGVfbmVzdGVkQnl0ZUFycmF5cyAqYWJpX3JvdXRlX2J5dGVBcnJheXNJblN0cnVjdAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKmNyZWF0ZV9PcHRJbjoKCWJ5dGVjIDE2IC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgT3B0SW4KCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiADAAEGJhIACUQAAAAAAAAAAAlOAAAAAAAAAAAIAAAAAAAAAAAEFR98dQlTAAAAAAAAAAAJTQAAAAAAAAAAAktEAktTAktOAktCFWJ5dGVBcnJheXNJblN0cnVjdEJveBNkeW5hbWljQnl0ZUFycmF5Qm94E25lc3RlZEJ5dGVBcnJheXNCb3gIyv66vgAAAAAGAATerb7vBLhEezYDCoEBMRgUJAsxGQiNDAK1AAAAAAAAAAAAAAKrAuMAAAAAAAAAAACIAAIjQ4oAALEkshAisgEnEUmyHrIfgQWyGbOAFmR5bmFtaWNCeXRlQXJyYXlHbG9iYWyIAd1ngBVzdGF0aWNCeXRlQXJyYXlHbG9iYWyIAdVngBZuZXN0ZWRCeXRlQXJyYXlzR2xvYmFsiAHXZ4AYYnl0ZUFycmF5c0luU3RydWN0R2xvYmFsiAHfZzEAgBVkeW5hbWljQnl0ZUFycmF5TG9jYWyIAWtmMQCAFHN0YXRpY0J5dGVBcnJheUxvY2FsiAFiZjEAgBVuZXN0ZWRCeXRlQXJyYXlzTG9jYWyIAWNmMQCAF2J5dGVBcnJheXNJblN0cnVjdExvY2FsiAFqZimIAQ5nJwWIARtnKogBNGeACUIAAAAAAAAAAIgBS2cxACmIAO1mMQAnBYgA+GYxACqIAQ9mMQAnBogBLWYnB4gA0FAiZycIiADbUCJnJwmIAPFQImcnCogBD1AiZzEAJweIAK5QImYxACcIiAC3UCJmMQAnCYgAy1AiZjEAJwqIAOdQImaJiAACI0OKAAAnDEm8SIgAfL+AEnN0YXRpY0J5dGVBcnJheUJveIgAd78nDUm8SIgAjL8nC0m8SIgAqb8pSbxIiABKvycFiABXvypJvEiIAG2/JwZJvEiIAIq/JweIAC1QK78nCIgAOFArvycJiABOUCu/JwqIAGxQK7+JJwSIAAxJFRZXBgJMUFCwI0OKAAGABN6tvu+JJwSIAARQsCNDigABgAjerb7vAAAAAChJqERXAASJJwSIAARQsCNDigABKCiAAgAGJw+IAKcnDihJqERXAASIAI5IUIknBIgABFCwI0OKAAEoKIACAAgnD4gAgScOKEmoRFcABIgAaCgogAIACoAGAATercDeiABkgAgAAAAAAAAABIgASkhQiABSSFCJJxA2GgCOAf1NAIAEjtIRJYAELrdd5YAEaVsWQYAE8jWe6YAE1fSGDzYaAI4F/qb/If88/1r/gAAnEDYaAI4B/RUAigQDi/yL/1CL/Yv+iYoEA4v8i/5QjPyL/0kVi/4XCBZXBgKM/ov9TFCM/Yv8i/2L/ok=", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 4, + "minor": 0, + "patch": 2, + "commitHash": "6b940281" + } + } +} \ No newline at end of file diff --git a/tests/example-contracts/byte_arrays/artifacts/ByteArrays.clear.teal b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.clear.teal new file mode 100644 index 00000000..e9f1d65b --- /dev/null +++ b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.clear.teal @@ -0,0 +1 @@ +#pragma version 10 \ No newline at end of file diff --git a/tests/example-contracts/byte_arrays/artifacts/ByteArrays.src_map.json b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.src_map.json new file mode 100644 index 00000000..27d64fb0 --- /dev/null +++ b/tests/example-contracts/byte_arrays/artifacts/ByteArrays.src_map.json @@ -0,0 +1,2939 @@ +[ + { + "teal": 1, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "teal": 3, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161 + ] + }, + { + "teal": 15, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 162, + 163 + ] + }, + { + "teal": 16, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 164 + ] + }, + { + "teal": 17, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 165 + ] + }, + { + "teal": 18, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 166 + ] + }, + { + "teal": 19, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 167, + 168 + ] + }, + { + "teal": 20, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 169 + ] + }, + { + "teal": 21, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195 + ] + }, + { + "teal": 25, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 196 + ] + }, + { + "teal": 30, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 197, + 198, + 199 + ] + }, + { + "teal": 31, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 200 + ] + }, + { + "teal": 32, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 201 + ] + }, + { + "teal": 36, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 202, + 203, + 204 + ] + }, + { + "teal": 40, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 205 + ] + }, + { + "teal": 41, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 206 + ] + }, + { + "teal": 42, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 207, + 208 + ] + }, + { + "teal": 43, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 209 + ] + }, + { + "teal": 44, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 210, + 211 + ] + }, + { + "teal": 45, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 212, + 213 + ] + }, + { + "teal": 46, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 214 + ] + }, + { + "teal": 47, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 215, + 216 + ] + }, + { + "teal": 48, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 217, + 218 + ] + }, + { + "teal": 49, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 219, + 220 + ] + }, + { + "teal": 50, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 221, + 222 + ] + }, + { + "teal": 51, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:59", + "pc": [ + 223 + ] + }, + { + "teal": 55, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:60", + "pc": [ + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247 + ] + }, + { + "teal": 56, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:60", + "pc": [ + 248, + 249, + 250 + ] + }, + { + "teal": 57, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:60", + "pc": [ + 251 + ] + }, + { + "teal": 61, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:61", + "pc": [ + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274 + ] + }, + { + "teal": 62, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:61", + "pc": [ + 275, + 276, + 277 + ] + }, + { + "teal": 63, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:61", + "pc": [ + 278 + ] + }, + { + "teal": 67, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:62", + "pc": [ + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302 + ] + }, + { + "teal": 68, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:62", + "pc": [ + 303, + 304, + 305 + ] + }, + { + "teal": 69, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:62", + "pc": [ + 306 + ] + }, + { + "teal": 73, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:63", + "pc": [ + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332 + ] + }, + { + "teal": 74, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:63", + "pc": [ + 333, + 334, + 335 + ] + }, + { + "teal": 75, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:63", + "pc": [ + 336 + ] + }, + { + "teal": 79, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 337, + 338 + ] + }, + { + "teal": 80, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361 + ] + }, + { + "teal": 81, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 362, + 363, + 364 + ] + }, + { + "teal": 82, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:65", + "pc": [ + 365 + ] + }, + { + "teal": 86, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 366, + 367 + ] + }, + { + "teal": 87, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389 + ] + }, + { + "teal": 88, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 390, + 391, + 392 + ] + }, + { + "teal": 89, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:66", + "pc": [ + 393 + ] + }, + { + "teal": 93, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 394, + 395 + ] + }, + { + "teal": 94, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418 + ] + }, + { + "teal": 95, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 419, + 420, + 421 + ] + }, + { + "teal": 96, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:67", + "pc": [ + 422 + ] + }, + { + "teal": 100, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 423, + 424 + ] + }, + { + "teal": 101, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449 + ] + }, + { + "teal": 102, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 450, + 451, + 452 + ] + }, + { + "teal": 103, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:68", + "pc": [ + 453 + ] + }, + { + "teal": 107, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:70", + "pc": [ + 454 + ] + }, + { + "teal": 108, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:70", + "pc": [ + 455, + 456, + 457 + ] + }, + { + "teal": 109, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:70", + "pc": [ + 458 + ] + }, + { + "teal": 113, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:71", + "pc": [ + 459, + 460 + ] + }, + { + "teal": 114, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:71", + "pc": [ + 461, + 462, + 463 + ] + }, + { + "teal": 115, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:71", + "pc": [ + 464 + ] + }, + { + "teal": 119, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:72", + "pc": [ + 465 + ] + }, + { + "teal": 120, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:72", + "pc": [ + 466, + 467, + 468 + ] + }, + { + "teal": 121, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:72", + "pc": [ + 469 + ] + }, + { + "teal": 125, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:73", + "pc": [ + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480 + ] + }, + { + "teal": 126, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:73", + "pc": [ + 481, + 482, + 483 + ] + }, + { + "teal": 127, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:73", + "pc": [ + 484 + ] + }, + { + "teal": 131, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 485, + 486 + ] + }, + { + "teal": 132, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 487 + ] + }, + { + "teal": 133, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 488, + 489, + 490 + ] + }, + { + "teal": 134, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:75", + "pc": [ + 491 + ] + }, + { + "teal": 138, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 492, + 493 + ] + }, + { + "teal": 139, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 494, + 495 + ] + }, + { + "teal": 140, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 496, + 497, + 498 + ] + }, + { + "teal": 141, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:76", + "pc": [ + 499 + ] + }, + { + "teal": 145, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 500, + 501 + ] + }, + { + "teal": 146, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 502 + ] + }, + { + "teal": 147, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 503, + 504, + 505 + ] + }, + { + "teal": 148, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:77", + "pc": [ + 506 + ] + }, + { + "teal": 152, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 507, + 508 + ] + }, + { + "teal": 153, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 509, + 510 + ] + }, + { + "teal": 154, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 511, + 512, + 513 + ] + }, + { + "teal": 155, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:78", + "pc": [ + 514 + ] + }, + { + "teal": 159, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 515, + 516 + ] + }, + { + "teal": 160, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 517, + 518, + 519 + ] + }, + { + "teal": 161, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 520 + ] + }, + { + "teal": 162, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 521 + ] + }, + { + "teal": 163, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:80", + "pc": [ + 522 + ] + }, + { + "teal": 167, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 523, + 524 + ] + }, + { + "teal": 168, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 525, + 526, + 527 + ] + }, + { + "teal": 169, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 528 + ] + }, + { + "teal": 170, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 529 + ] + }, + { + "teal": 171, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:81", + "pc": [ + 530 + ] + }, + { + "teal": 175, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 531, + 532 + ] + }, + { + "teal": 176, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 533, + 534, + 535 + ] + }, + { + "teal": 177, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 536 + ] + }, + { + "teal": 178, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 537 + ] + }, + { + "teal": 179, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:82", + "pc": [ + 538 + ] + }, + { + "teal": 183, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 539, + 540 + ] + }, + { + "teal": 184, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 541, + 542, + 543 + ] + }, + { + "teal": 185, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 544 + ] + }, + { + "teal": 186, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 545 + ] + }, + { + "teal": 187, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:83", + "pc": [ + 546 + ] + }, + { + "teal": 191, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 547, + 548 + ] + }, + { + "teal": 192, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 549, + 550 + ] + }, + { + "teal": 193, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 551, + 552, + 553 + ] + }, + { + "teal": 194, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 554 + ] + }, + { + "teal": 195, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 555 + ] + }, + { + "teal": 196, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:85", + "pc": [ + 556 + ] + }, + { + "teal": 200, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 557, + 558 + ] + }, + { + "teal": 201, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 559, + 560 + ] + }, + { + "teal": 202, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 561, + 562, + 563 + ] + }, + { + "teal": 203, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 564 + ] + }, + { + "teal": 204, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 565 + ] + }, + { + "teal": 205, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:86", + "pc": [ + 566 + ] + }, + { + "teal": 209, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 567, + 568 + ] + }, + { + "teal": 210, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 569, + 570 + ] + }, + { + "teal": 211, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 571, + 572, + 573 + ] + }, + { + "teal": 212, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 574 + ] + }, + { + "teal": 213, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 575 + ] + }, + { + "teal": 214, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:87", + "pc": [ + 576 + ] + }, + { + "teal": 218, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 577, + 578 + ] + }, + { + "teal": 219, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 579, + 580 + ] + }, + { + "teal": 220, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 581, + 582, + 583 + ] + }, + { + "teal": 221, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 584 + ] + }, + { + "teal": 222, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 585 + ] + }, + { + "teal": 223, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:88", + "pc": [ + 586 + ] + }, + { + "teal": 224, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:57", + "pc": [ + 587 + ] + }, + { + "teal": 229, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 588, + 589, + 590 + ] + }, + { + "teal": 230, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 591 + ] + }, + { + "teal": 231, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 592 + ] + }, + { + "teal": 235, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 593, + 594, + 595 + ] + }, + { + "teal": 239, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 596, + 597 + ] + }, + { + "teal": 240, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 598 + ] + }, + { + "teal": 241, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 599 + ] + }, + { + "teal": 242, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 600 + ] + }, + { + "teal": 243, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 601, + 602, + 603 + ] + }, + { + "teal": 244, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:92", + "pc": [ + 604 + ] + }, + { + "teal": 248, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:93", + "pc": [ + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624 + ] + }, + { + "teal": 249, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:93", + "pc": [ + 625, + 626, + 627 + ] + }, + { + "teal": 250, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:93", + "pc": [ + 628 + ] + }, + { + "teal": 254, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 629, + 630 + ] + }, + { + "teal": 255, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 631 + ] + }, + { + "teal": 256, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 632 + ] + }, + { + "teal": 257, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 633 + ] + }, + { + "teal": 258, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 634, + 635, + 636 + ] + }, + { + "teal": 259, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:94", + "pc": [ + 637 + ] + }, + { + "teal": 263, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 638, + 639 + ] + }, + { + "teal": 264, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 640 + ] + }, + { + "teal": 265, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 641 + ] + }, + { + "teal": 266, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 642 + ] + }, + { + "teal": 267, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 643, + 644, + 645 + ] + }, + { + "teal": 268, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:95", + "pc": [ + 646 + ] + }, + { + "teal": 272, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 647 + ] + }, + { + "teal": 273, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 648 + ] + }, + { + "teal": 274, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 649 + ] + }, + { + "teal": 275, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 650 + ] + }, + { + "teal": 276, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 651, + 652, + 653 + ] + }, + { + "teal": 277, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:97", + "pc": [ + 654 + ] + }, + { + "teal": 281, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:98", + "pc": [ + 655, + 656 + ] + }, + { + "teal": 282, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:98", + "pc": [ + 657, + 658, + 659 + ] + }, + { + "teal": 283, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:98", + "pc": [ + 660 + ] + }, + { + "teal": 287, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 661 + ] + }, + { + "teal": 288, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 662 + ] + }, + { + "teal": 289, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 663 + ] + }, + { + "teal": 290, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 664 + ] + }, + { + "teal": 291, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 665, + 666, + 667 + ] + }, + { + "teal": 292, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:99", + "pc": [ + 668 + ] + }, + { + "teal": 296, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 669, + 670 + ] + }, + { + "teal": 297, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 671 + ] + }, + { + "teal": 298, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 672 + ] + }, + { + "teal": 299, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 673 + ] + }, + { + "teal": 300, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 674, + 675, + 676 + ] + }, + { + "teal": 301, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:100", + "pc": [ + 677 + ] + }, + { + "teal": 305, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 678, + 679 + ] + }, + { + "teal": 306, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 680, + 681, + 682 + ] + }, + { + "teal": 307, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 683 + ] + }, + { + "teal": 308, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 684 + ] + }, + { + "teal": 309, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:102", + "pc": [ + 685 + ] + }, + { + "teal": 313, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 686, + 687 + ] + }, + { + "teal": 314, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 688, + 689, + 690 + ] + }, + { + "teal": 315, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 691 + ] + }, + { + "teal": 316, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 692 + ] + }, + { + "teal": 317, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:103", + "pc": [ + 693 + ] + }, + { + "teal": 321, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 694, + 695 + ] + }, + { + "teal": 322, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 696, + 697, + 698 + ] + }, + { + "teal": 323, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 699 + ] + }, + { + "teal": 324, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 700 + ] + }, + { + "teal": 325, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:104", + "pc": [ + 701 + ] + }, + { + "teal": 329, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 702, + 703 + ] + }, + { + "teal": 330, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 704, + 705, + 706 + ] + }, + { + "teal": 331, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 707 + ] + }, + { + "teal": 332, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 708 + ] + }, + { + "teal": 333, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:105", + "pc": [ + 709 + ] + }, + { + "teal": 334, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:91", + "pc": [ + 710 + ] + }, + { + "teal": 339, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 711, + 712 + ] + }, + { + "teal": 342, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 713, + 714, + 715 + ] + }, + { + "teal": 343, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 716 + ] + }, + { + "teal": 344, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 717 + ] + }, + { + "teal": 345, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 718 + ] + }, + { + "teal": 346, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 719, + 720, + 721 + ] + }, + { + "teal": 347, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 722 + ] + }, + { + "teal": 348, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 723 + ] + }, + { + "teal": 349, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 724 + ] + }, + { + "teal": 350, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 725 + ] + }, + { + "teal": 351, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 726 + ] + }, + { + "teal": 352, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 727 + ] + }, + { + "teal": 356, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 728, + 729, + 730 + ] + }, + { + "teal": 360, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:109", + "pc": [ + 731, + 732, + 733, + 734, + 735, + 736 + ] + }, + { + "teal": 361, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:108", + "pc": [ + 737 + ] + }, + { + "teal": 366, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 738, + 739 + ] + }, + { + "teal": 369, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 740, + 741, + 742 + ] + }, + { + "teal": 370, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 743 + ] + }, + { + "teal": 371, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 744 + ] + }, + { + "teal": 372, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 745 + ] + }, + { + "teal": 373, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 746 + ] + }, + { + "teal": 377, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 747, + 748, + 749 + ] + }, + { + "teal": 381, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759 + ] + }, + { + "teal": 382, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 760 + ] + }, + { + "teal": 383, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 761 + ] + }, + { + "teal": 384, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 762 + ] + }, + { + "teal": 385, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 763 + ] + }, + { + "teal": 386, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:113", + "pc": [ + 764, + 765, + 766 + ] + }, + { + "teal": 387, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:112", + "pc": [ + 767 + ] + }, + { + "teal": 392, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 768, + 769 + ] + }, + { + "teal": 395, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 770, + 771, + 772 + ] + }, + { + "teal": 396, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 773 + ] + }, + { + "teal": 397, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 774 + ] + }, + { + "teal": 398, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 775 + ] + }, + { + "teal": 399, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 776 + ] + }, + { + "teal": 403, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 777, + 778, + 779 + ] + }, + { + "teal": 407, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 780 + ] + }, + { + "teal": 408, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 781 + ] + }, + { + "teal": 409, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 782, + 783, + 784, + 785 + ] + }, + { + "teal": 410, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 786, + 787 + ] + }, + { + "teal": 411, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 788, + 789, + 790 + ] + }, + { + "teal": 412, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 791, + 792 + ] + }, + { + "teal": 413, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 793 + ] + }, + { + "teal": 414, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 794 + ] + }, + { + "teal": 415, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 795 + ] + }, + { + "teal": 416, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 796 + ] + }, + { + "teal": 417, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 797, + 798, + 799 + ] + }, + { + "teal": 418, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 800, + 801, + 802 + ] + }, + { + "teal": 419, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 803 + ] + }, + { + "teal": 420, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:117", + "pc": [ + 804 + ] + }, + { + "teal": 421, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:116", + "pc": [ + 805 + ] + }, + { + "teal": 426, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 806, + 807 + ] + }, + { + "teal": 429, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 808, + 809, + 810 + ] + }, + { + "teal": 430, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 811 + ] + }, + { + "teal": 431, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 812 + ] + }, + { + "teal": 432, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 813 + ] + }, + { + "teal": 433, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 814 + ] + }, + { + "teal": 437, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 815, + 816, + 817 + ] + }, + { + "teal": 448, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 818 + ] + }, + { + "teal": 449, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 819 + ] + }, + { + "teal": 450, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 820, + 821, + 822, + 823 + ] + }, + { + "teal": 451, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:122", + "pc": [ + 824, + 825 + ] + }, + { + "teal": 452, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:122", + "pc": [ + 826, + 827, + 828 + ] + }, + { + "teal": 453, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 829, + 830 + ] + }, + { + "teal": 454, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 831 + ] + }, + { + "teal": 455, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 832 + ] + }, + { + "teal": 456, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 833 + ] + }, + { + "teal": 457, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 834 + ] + }, + { + "teal": 458, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 835, + 836, + 837 + ] + }, + { + "teal": 459, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:123", + "pc": [ + 838, + 839, + 840 + ] + }, + { + "teal": 460, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 841 + ] + }, + { + "teal": 461, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 842 + ] + }, + { + "teal": 462, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 843, + 844, + 845, + 846 + ] + }, + { + "teal": 463, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:125", + "pc": [ + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854 + ] + }, + { + "teal": 464, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:125", + "pc": [ + 855, + 856, + 857 + ] + }, + { + "teal": 465, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:126", + "pc": [ + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867 + ] + }, + { + "teal": 466, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:126", + "pc": [ + 868, + 869, + 870 + ] + }, + { + "teal": 467, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 871 + ] + }, + { + "teal": 468, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 872 + ] + }, + { + "teal": 469, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:124", + "pc": [ + 873, + 874, + 875 + ] + }, + { + "teal": 470, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 876 + ] + }, + { + "teal": 471, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:121", + "pc": [ + 877 + ] + }, + { + "teal": 472, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:120", + "pc": [ + 878 + ] + }, + { + "teal": 475, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 879, + 880 + ] + }, + { + "teal": 476, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 881, + 882, + 883 + ] + }, + { + "teal": 477, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 884, + 885, + 886, + 887 + ] + }, + { + "teal": 480, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 888 + ] + }, + { + "teal": 483, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 889, + 890, + 891, + 892, + 893, + 894 + ] + }, + { + "teal": 484, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 895, + 896, + 897, + 898, + 899, + 900 + ] + }, + { + "teal": 485, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 901, + 902, + 903, + 904, + 905, + 906 + ] + }, + { + "teal": 486, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 907, + 908, + 909, + 910, + 911, + 912 + ] + }, + { + "teal": 487, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 913, + 914, + 915, + 916, + 917, + 918 + ] + }, + { + "teal": 488, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 919, + 920, + 921 + ] + }, + { + "teal": 489, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 922, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933 + ] + }, + { + "teal": 492, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 934 + ] + }, + { + "teal": 495, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 935, + 936 + ] + }, + { + "teal": 496, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 937, + 938, + 939 + ] + }, + { + "teal": 497, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 940, + 941, + 942, + 943 + ] + }, + { + "teal": 500, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "errorMessage": "this contract does not implement the given ABI method for create OptIn", + "pc": [ + 944 + ] + }, + { + "teal": 503, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 945, + 946, + 947 + ] + }, + { + "teal": 504, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 948, + 949 + ] + }, + { + "teal": 505, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 950, + 951 + ] + }, + { + "teal": 506, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 952 + ] + }, + { + "teal": 507, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 953, + 954 + ] + }, + { + "teal": 508, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 955, + 956 + ] + }, + { + "teal": 509, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 957 + ] + }, + { + "teal": 512, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 958, + 959, + 960 + ] + }, + { + "teal": 513, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 961, + 962 + ] + }, + { + "teal": 514, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 963, + 964 + ] + }, + { + "teal": 515, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 965 + ] + }, + { + "teal": 516, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 966, + 967 + ] + }, + { + "teal": 517, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 968, + 969 + ] + }, + { + "teal": 518, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 970 + ] + }, + { + "teal": 519, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 971 + ] + }, + { + "teal": 520, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 972, + 973 + ] + }, + { + "teal": 521, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 974 + ] + }, + { + "teal": 522, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 975 + ] + }, + { + "teal": 523, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 976 + ] + }, + { + "teal": 524, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 977, + 978, + 979 + ] + }, + { + "teal": 525, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 980, + 981 + ] + }, + { + "teal": 526, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 982, + 983 + ] + }, + { + "teal": 527, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 984 + ] + }, + { + "teal": 528, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 985 + ] + }, + { + "teal": 529, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 986, + 987 + ] + }, + { + "teal": 530, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 988, + 989 + ] + }, + { + "teal": 531, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 990, + 991 + ] + }, + { + "teal": 532, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 992, + 993 + ] + }, + { + "teal": 533, + "source": "tests/example-contracts/byte_arrays/byte_arrays.algo.ts:11", + "pc": [ + 994 + ] + } +] \ No newline at end of file diff --git a/tests/example-contracts/byte_arrays/byte_arrays.algo.ts b/tests/example-contracts/byte_arrays/byte_arrays.algo.ts new file mode 100644 index 00000000..a70e876b --- /dev/null +++ b/tests/example-contracts/byte_arrays/byte_arrays.algo.ts @@ -0,0 +1,130 @@ +import { Contract } from '@algorandfoundation/tealscript' + +type ByteArraysInStruct = { + arr1: bytes + arr2: bytes<4> + nestedStruct: { + arr3: bytes + nonBytes: uint64 + } +} +export class ByteArrays extends Contract { + dynamicByteArrayGlobal = GlobalStateKey() + staticByteArrayGlobal = GlobalStateKey>() + nestedByteArraysGlobal = GlobalStateKey<[bytes, bytes<4>]>() + byteArraysInStructGlobal = GlobalStateKey() + + dynamicByteArrayLocal = LocalStateKey() + staticByteArrayLocal = LocalStateKey>() + nestedByteArraysLocal = LocalStateKey<[bytes, bytes<4>]>() + byteArraysInStructLocal = LocalStateKey() + + dynamicByteArrayBox = BoxKey() + staticByteArrayBox = BoxKey>() + nestedByteArraysBox = BoxKey<[bytes, bytes<4>]>() + byteArraysInStructBox = BoxKey() + + dynamicByteArrayGlobalMap = GlobalStateMap({ maxKeys: 1, prefix: 'D' }) + staticByteArrayGlobalMap = GlobalStateMap>({ maxKeys: 1, prefix: 'S' }) + nestedByteArraysGlobalMap = GlobalStateMap]>({ maxKeys: 1, prefix: 'N' }) + byteArraysInStructGlobalMap = GlobalStateMap({ maxKeys: 1, prefix: 'B' }) + + dynamicByteArrayLocalMap = LocalStateMap({ maxKeys: 1, prefix: 'D' }) + staticByteArrayLocalMap = LocalStateMap>({ maxKeys: 1, prefix: 'S' }) + nestedByteArraysLocalMap = LocalStateMap]>({ maxKeys: 1, prefix: 'N' }) + byteArraysInStructLocalMap = LocalStateMap({ maxKeys: 1, prefix: 'M' }) + + dynamicByteArrayBoxMap = BoxMap({ prefix: 'D' }) + staticByteArrayBoxMap = BoxMap>({ prefix: 'S' }) + nestedByteArraysBoxMap = BoxMap]>({ prefix: 'N' }) + byteArraysInStructBoxMap = BoxMap({ prefix: 'M' }) + + dynamicByteArrayGlobalMapKey = GlobalStateMap({ maxKeys: 1, prefix: 'KD' }) + staticByteArrayGlobalMapKey = GlobalStateMap, uint64>({ maxKeys: 1, prefix: 'KS' }) + nestedByteArraysGlobalMapKey = GlobalStateMap<[bytes, bytes<4>], uint64>({ maxKeys: 1, prefix: 'KN' }) + byteArraysInStructGlobalMapKey = GlobalStateMap({ maxKeys: 1, prefix: 'KB' }) + + dynamicByteArrayLocalMapKey = LocalStateMap({ maxKeys: 1, prefix: 'KD' }) + staticByteArrayLocalMapKey = LocalStateMap, uint64>({ maxKeys: 1, prefix: 'KS' }) + nestedByteArraysLocalMapKey = LocalStateMap<[bytes, bytes<4>], uint64>({ maxKeys: 1, prefix: 'KN' }) + byteArraysInStructLocalMapKey = LocalStateMap({ maxKeys: 1, prefix: 'KB' }) + + dynamicByteArrayBoxMapKey = BoxMap({ prefix: 'KD' }) + staticByteArrayBoxMapKey = BoxMap, uint64>({ prefix: 'KS' }) + nestedByteArraysBoxMapKey = BoxMap<[bytes, bytes<4>], uint64>({ prefix: 'KN' }) + byteArraysInStructBoxMapKey = BoxMap({ prefix: 'KB' }) + + @allow.create('OptIn') + createApplication() { + increaseOpcodeBudget() + this.dynamicByteArrayGlobal.value = this.dynamicByteArray() + this.staticByteArrayGlobal.value = this.staticByteArray() + this.nestedByteArraysGlobal.value = this.nestedByteArrays() + this.byteArraysInStructGlobal.value = this.byteArraysInStruct() + + this.dynamicByteArrayLocal(this.txn.sender).value = this.dynamicByteArray() + this.staticByteArrayLocal(this.txn.sender).value = this.staticByteArray() + this.nestedByteArraysLocal(this.txn.sender).value = this.nestedByteArrays() + this.byteArraysInStructLocal(this.txn.sender).value = this.byteArraysInStruct() + + this.dynamicByteArrayGlobalMap(0).value = this.dynamicByteArray() + this.staticByteArrayGlobalMap(0).value = this.staticByteArray() + this.nestedByteArraysGlobalMap(0).value = this.nestedByteArrays() + this.byteArraysInStructGlobalMap(0).value = this.byteArraysInStruct() + + this.dynamicByteArrayLocalMap(this.txn.sender, 0).value = this.dynamicByteArray() + this.staticByteArrayLocalMap(this.txn.sender, 0).value = this.staticByteArray() + this.nestedByteArraysLocalMap(this.txn.sender, 0).value = this.nestedByteArrays() + this.byteArraysInStructLocalMap(this.txn.sender, 0).value = this.byteArraysInStruct() + + this.dynamicByteArrayGlobalMapKey(this.dynamicByteArray()).value = 0 + this.staticByteArrayGlobalMapKey(this.staticByteArray()).value = 0 + this.nestedByteArraysGlobalMapKey(this.nestedByteArrays()).value = 0 + this.byteArraysInStructGlobalMapKey(this.byteArraysInStruct()).value = 0 + + this.dynamicByteArrayLocalMapKey(this.txn.sender, this.dynamicByteArray()).value = 0 + this.staticByteArrayLocalMapKey(this.txn.sender, this.staticByteArray()).value = 0 + this.nestedByteArraysLocalMapKey(this.txn.sender, this.nestedByteArrays()).value = 0 + this.byteArraysInStructLocalMapKey(this.txn.sender, this.byteArraysInStruct()).value = 0 + } + + setBoxValues() { + this.dynamicByteArrayBox.value = this.dynamicByteArray() + this.staticByteArrayBox.value = this.staticByteArray() + this.nestedByteArraysBox.value = this.nestedByteArrays() + this.byteArraysInStructBox.value = this.byteArraysInStruct() + + this.dynamicByteArrayBoxMap(0).value = this.dynamicByteArray() + this.staticByteArrayBoxMap(0).value = this.staticByteArray() + this.nestedByteArraysBoxMap(0).value = this.nestedByteArrays() + this.byteArraysInStructBoxMap(0).value = this.byteArraysInStruct() + + this.dynamicByteArrayBoxMapKey(this.dynamicByteArray()).value = 0 + this.staticByteArrayBoxMapKey(this.staticByteArray()).value = 0 + this.nestedByteArraysBoxMapKey(this.nestedByteArrays()).value = 0 + this.byteArraysInStructBoxMapKey(this.byteArraysInStruct()).value = 0 + } + + dynamicByteArray(): bytes { + return hex('0xdeadbeef') + } + + staticByteArray(): bytes<4> { + return hex('0xdeadbeef') as bytes<4> + } + + nestedByteArrays(): [bytes, bytes<4>] { + return [hex('0xdeadbeef'), hex('0xcafebabe') as bytes<4>] + } + + byteArraysInStruct(): ByteArraysInStruct { + return { + arr1: hex('0xdeadbeef'), + arr2: hex('0xcafebabe') as bytes<4>, + nestedStruct: { + arr3: hex('0xdeadc0de'), + nonBytes: 4, + }, + } + } +} diff --git a/tests/example-contracts/byte_arrays/tsconfig.json b/tests/example-contracts/byte_arrays/tsconfig.json new file mode 100644 index 00000000..5e3106d1 --- /dev/null +++ b/tests/example-contracts/byte_arrays/tsconfig.json @@ -0,0 +1,103 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From 4bbff0f26f8f98425abb87190ba80e26c5d97d15 Mon Sep 17 00:00:00 2001 From: CiottiGiorgio Date: Fri, 6 Jun 2025 15:37:47 +0200 Subject: [PATCH 07/10] chore: migrate from npm-run-all to npm-run-all2 --- package-lock.json | 1231 ++++----------------------------------------- package.json | 2 +- 2 files changed, 97 insertions(+), 1136 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2cccbd8c..c69b9f85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "eslint-config-prettier": "^9.1.0", "fast-glob": "^3.3.2", "magic-string": "^0.30.11", - "npm-run-all": "^4.1.5", + "npm-run-all2": "^8.0.4", "prettier": "^3.3.3", "replace-in-files-cli": "^3.0.0", "rimraf": "^6.0.1", @@ -3214,50 +3214,12 @@ "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", "dev": true }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", @@ -3288,21 +3250,6 @@ "node": ">=8" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3421,25 +3368,6 @@ "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -4064,57 +3992,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/dayjs": { "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", @@ -4171,40 +4048,6 @@ "node": ">=0.10.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -4466,136 +4309,12 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.23.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", - "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.5", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es-module-lexer": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "dev": true }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/esbuild": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", @@ -5082,15 +4801,6 @@ "dev": true, "license": "ISC" }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -5178,33 +4888,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -5214,25 +4897,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -5245,23 +4909,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -5381,21 +5028,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", @@ -5440,18 +5072,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -5494,15 +5114,6 @@ "node": ">=0.10.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5512,57 +5123,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -5602,12 +5162,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -5761,20 +5315,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/into-stream": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", @@ -5791,68 +5331,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -5865,36 +5349,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -5931,18 +5385,6 @@ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5952,21 +5394,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -5997,67 +5424,6 @@ "@types/estree": "*" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-text-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", @@ -6070,21 +5436,6 @@ "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-unicode-supported": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", @@ -6097,18 +5448,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6829,18 +6168,6 @@ } } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7015,122 +6342,93 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "node_modules/npm-normalize-package-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", + "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-run-all2": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-8.0.4.tgz", + "integrity": "sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.6", "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" + "picomatch": "^4.0.2", + "pidtree": "^0.6.0", + "read-package-json-fast": "^4.0.0", + "shell-quote": "^1.7.3", + "which": "^5.0.0" }, "bin": { "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", "run-p": "bin/run-p/index.js", "run-s": "bin/run-s/index.js" }, "engines": { - "node": ">= 4" + "node": "^20.5.0 || >=22.0.0", + "npm": ">= 10" } }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/npm-run-all2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "node": ">=12" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/npm-run-all2/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node": ">=16" + } + }, + "node_modules/npm-run-all2/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/npm-run-all2/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { - "has-flag": "^3.0.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=4" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@isaacs/cliui": { @@ -9742,42 +9040,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -10134,10 +9396,11 @@ } }, "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, + "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -10287,15 +9550,6 @@ "node": ">=16.0.0" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.5.2", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", @@ -10428,6 +9682,30 @@ "node": ">=0.10.0" } }, + "node_modules/read-package-json-fast": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz", + "integrity": "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", + "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/read-package-up": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", @@ -10529,32 +9807,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -10570,24 +9822,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/registry-auth-token": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", @@ -10885,53 +10119,12 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/semantic-release": { "version": "24.2.0", "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.0.tgz", @@ -11192,38 +10385,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -11246,10 +10407,14 @@ } }, "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11266,24 +10431,6 @@ "vscode-textmate": "^8.0.0" } }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -11577,69 +10724,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/string.prototype.padend": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", - "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -12038,79 +11122,6 @@ "node": ">= 0.8.0" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typedoc": { "version": "0.25.13", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", @@ -12209,21 +11220,6 @@ "node": ">=0.8.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -12554,41 +11550,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", diff --git a/package.json b/package.json index 5bbda5ec..e25b1b2e 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "eslint-config-prettier": "^9.1.0", "fast-glob": "^3.3.2", "magic-string": "^0.30.11", - "npm-run-all": "^4.1.5", + "npm-run-all2": "^8.0.4", "prettier": "^3.3.3", "replace-in-files-cli": "^3.0.0", "rimraf": "^6.0.1", From c6a6ee4737c6d925d54e57a10b1be73440f8cefe Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Mon, 9 Jun 2025 01:14:49 -0400 Subject: [PATCH 08/10] fix: return waitForIndexer when latest lastValid is reached (#408) * fix: return waitForIndexer when latest lastValid is reached * Remove redundant nullish operator --- .../code/classes/testing.TransactionLogger.md | 44 ++++++++++++++++--- src/testing/transaction-logger.ts | 35 ++++++++++++--- 2 files changed, 66 insertions(+), 13 deletions(-) diff --git a/docs/code/classes/testing.TransactionLogger.md b/docs/code/classes/testing.TransactionLogger.md index 785d7e39..a33a9131 100644 --- a/docs/code/classes/testing.TransactionLogger.md +++ b/docs/code/classes/testing.TransactionLogger.md @@ -15,6 +15,7 @@ Useful for automated tests. ### Properties +- [\_latestLastValidRound](testing.TransactionLogger.md#_latestlastvalidround) - [\_sentTransactionIds](testing.TransactionLogger.md#_senttransactionids) ### Accessors @@ -23,6 +24,7 @@ Useful for automated tests. ### Methods +- [\_pushTxn](testing.TransactionLogger.md#_pushtxn) - [capture](testing.TransactionLogger.md#capture) - [clear](testing.TransactionLogger.md#clear) - [logRawTransaction](testing.TransactionLogger.md#lograwtransaction) @@ -40,13 +42,23 @@ Useful for automated tests. ## Properties +### \_latestLastValidRound + +• `Private` `Optional` **\_latestLastValidRound**: `bigint` + +#### Defined in + +[src/testing/transaction-logger.ts:14](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L14) + +___ + ### \_sentTransactionIds • `Private` **\_sentTransactionIds**: `string`[] = `[]` #### Defined in -[src/testing/transaction-logger.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L12) +[src/testing/transaction-logger.ts:13](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L13) ## Accessors @@ -62,10 +74,30 @@ readonly `string`[] #### Defined in -[src/testing/transaction-logger.ts:17](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L17) +[src/testing/transaction-logger.ts:27](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L27) ## Methods +### \_pushTxn + +▸ **_pushTxn**(`stxn`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `stxn` | `Uint8Array` | + +#### Returns + +`void` + +#### Defined in + +[src/testing/transaction-logger.ts:16](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L16) + +___ + ### capture ▸ **capture**(`algod`): `AlgodClient` @@ -86,7 +118,7 @@ The wrapped `Algodv2`, any transactions sent using this algod instance will be l #### Defined in -[src/testing/transaction-logger.ts:48](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L48) +[src/testing/transaction-logger.ts:54](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L54) ___ @@ -102,7 +134,7 @@ Clear all logged IDs. #### Defined in -[src/testing/transaction-logger.ts:24](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L24) +[src/testing/transaction-logger.ts:34](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L34) ___ @@ -124,7 +156,7 @@ The method that captures raw transactions and stores the transaction IDs. #### Defined in -[src/testing/transaction-logger.ts:31](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L31) +[src/testing/transaction-logger.ts:41](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L41) ___ @@ -146,4 +178,4 @@ Wait until all logged transactions IDs appear in the given `Indexer`. #### Defined in -[src/testing/transaction-logger.ts:53](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L53) +[src/testing/transaction-logger.ts:59](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/transaction-logger.ts#L59) diff --git a/src/testing/transaction-logger.ts b/src/testing/transaction-logger.ts index 9dade7e7..d2a282ce 100644 --- a/src/testing/transaction-logger.ts +++ b/src/testing/transaction-logger.ts @@ -1,4 +1,5 @@ import algosdk from 'algosdk' +import { Config } from '../config' import { runWhenIndexerCaughtUp } from './indexer' import Algodv2 = algosdk.Algodv2 import decodeSignedTransaction = algosdk.decodeSignedTransaction @@ -10,6 +11,15 @@ import Indexer = algosdk.Indexer */ export class TransactionLogger { private _sentTransactionIds: string[] = [] + private _latestLastValidRound?: bigint + + private _pushTxn(stxn: Uint8Array) { + const decoded = decodeSignedTransaction(stxn) + if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) { + this._latestLastValidRound = BigInt(decoded.txn.lastValid) + } + this._sentTransactionIds.push(decoded.txn.txID()) + } /** * The list of transaction IDs that has been logged thus far. @@ -30,13 +40,9 @@ export class TransactionLogger { */ logRawTransaction(signedTransactions: Uint8Array | Uint8Array[]) { if (Array.isArray(signedTransactions)) { - for (const stxn of signedTransactions) { - const decoded = decodeSignedTransaction(stxn) - this._sentTransactionIds.push(decoded.txn.txID()) - } + signedTransactions.forEach((stxn) => this._pushTxn(stxn)) } else { - const decoded = decodeSignedTransaction(signedTransactions) - this._sentTransactionIds.push(decoded.txn.txID()) + this._pushTxn(signedTransactions) } } @@ -53,7 +59,22 @@ export class TransactionLogger { async waitForIndexer(indexer: Indexer) { if (this._sentTransactionIds.length === 0) return const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1] - await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(lastTxId).do()) + await runWhenIndexerCaughtUp(async () => { + try { + await indexer.lookupTransactionByID(lastTxId).do() + } catch (e) { + // If the txid lookup failed, then try to look up the last valid round + // If that round exists, then we know indexer is caught up + if (this._latestLastValidRound) { + await indexer.lookupBlock(this._latestLastValidRound).do() + Config.getLogger().debug( + `waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`, + ) + } else { + throw e + } + } + }) } } From e2bc37e541fd708d2f6e66b8c84c61f4d5d4e2b2 Mon Sep 17 00:00:00 2001 From: Al Date: Thu, 19 Jun 2025 11:51:17 +0300 Subject: [PATCH 09/10] fix: readonly simulate extra opcode budget handling (#414) * fix: readonly simulate extra opcode budget handling The simulate for readonly calls now uses a fixed maximum opcode budget. Updates tests to reflect the new behavior. * chore: remove max fee enforcement for readonly calls * fix: adjust test and clarify some docs --------- Co-authored-by: Neil Campbell --- .nsprc | 7 +- .../classes/types_app_client.AppClient.md | 120 +++++++++--------- .../types_app_client.ApplicationClient.md | 80 ++++++------ .../types_app_client.AppClientCallABIArgs.md | 2 +- ...ypes_app_client.AppClientCallCoreParams.md | 6 +- ...s_app_client.AppClientCompilationParams.md | 6 +- ...s_app_client.AppClientCompilationResult.md | 4 +- ...ient.AppClientDeployCallInterfaceParams.md | 10 +- ...es_app_client.AppClientDeployCoreParams.md | 14 +- .../types_app_client.AppClientDeployParams.md | 26 ++-- .../types_app_client.AppClientParams.md | 16 +-- .../types_app_client.AppSourceMaps.md | 4 +- .../types_app_client.FundAppAccountParams.md | 8 +- .../types_app_client.ResolveAppById.md | 6 +- .../types_app_client.ResolveAppByIdBase.md | 4 +- .../types_app_client.SourceMapExport.md | 8 +- docs/code/modules/types_app_client.md | 44 +++---- package-lock.json | 26 ++-- src/transaction/transaction.spec.ts | 61 ++++----- src/types/app-client.ts | 19 ++- 20 files changed, 243 insertions(+), 228 deletions(-) diff --git a/.nsprc b/.nsprc index 9e26dfee..535d19a1 100644 --- a/.nsprc +++ b/.nsprc @@ -1 +1,6 @@ -{} \ No newline at end of file +{ + "1105444": { + "reason": "Vulnerability is in npm's bundled dependencies (brace-expansion) and cannot be fixed automatically. This is a low severity RegEx DoS vulnerability in npm's internal tools. npm team needs to update their bundled dependencies.", + "expiry": "2025-12-31" + } +} diff --git a/docs/code/classes/types_app_client.AppClient.md b/docs/code/classes/types_app_client.AppClient.md index fa0ba003..5dfb4f05 100644 --- a/docs/code/classes/types_app_client.AppClient.md +++ b/docs/code/classes/types_app_client.AppClient.md @@ -112,7 +112,7 @@ const appClient = new AppClient({ #### Defined in -[src/types/app-client.ts:514](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L514) +[src/types/app-client.ts:517](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L517) ## Properties @@ -122,7 +122,7 @@ const appClient = new AppClient({ #### Defined in -[src/types/app-client.ts:480](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L480) +[src/types/app-client.ts:483](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L483) ___ @@ -132,7 +132,7 @@ ___ #### Defined in -[src/types/app-client.ts:477](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L477) +[src/types/app-client.ts:480](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L480) ___ @@ -142,7 +142,7 @@ ___ #### Defined in -[src/types/app-client.ts:476](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L476) +[src/types/app-client.ts:479](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L479) ___ @@ -152,7 +152,7 @@ ___ #### Defined in -[src/types/app-client.ts:478](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L478) +[src/types/app-client.ts:481](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L481) ___ @@ -162,7 +162,7 @@ ___ #### Defined in -[src/types/app-client.ts:479](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L479) +[src/types/app-client.ts:482](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L482) ___ @@ -172,7 +172,7 @@ ___ #### Defined in -[src/types/app-client.ts:484](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L484) +[src/types/app-client.ts:487](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L487) ___ @@ -191,7 +191,7 @@ ___ #### Defined in -[src/types/app-client.ts:489](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L489) +[src/types/app-client.ts:492](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L492) ___ @@ -201,7 +201,7 @@ ___ #### Defined in -[src/types/app-client.ts:485](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L485) +[src/types/app-client.ts:488](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L488) ___ @@ -211,7 +211,7 @@ ___ #### Defined in -[src/types/app-client.ts:494](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L494) +[src/types/app-client.ts:497](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L497) ___ @@ -221,7 +221,7 @@ ___ #### Defined in -[src/types/app-client.ts:481](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L481) +[src/types/app-client.ts:484](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L484) ___ @@ -231,7 +231,7 @@ ___ #### Defined in -[src/types/app-client.ts:482](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L482) +[src/types/app-client.ts:485](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L485) ___ @@ -250,7 +250,7 @@ ___ #### Defined in -[src/types/app-client.ts:488](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L488) +[src/types/app-client.ts:491](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L491) ___ @@ -267,7 +267,7 @@ ___ #### Defined in -[src/types/app-client.ts:500](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L500) +[src/types/app-client.ts:503](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L503) ___ @@ -298,7 +298,7 @@ ___ #### Defined in -[src/types/app-client.ts:487](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L487) +[src/types/app-client.ts:490](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L490) ___ @@ -308,7 +308,7 @@ ___ #### Defined in -[src/types/app-client.ts:491](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L491) +[src/types/app-client.ts:494](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L494) ___ @@ -318,7 +318,7 @@ ___ #### Defined in -[src/types/app-client.ts:497](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L497) +[src/types/app-client.ts:500](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L500) ## Accessors @@ -334,7 +334,7 @@ A reference to the underlying `AlgorandClient` this app client is using. #### Defined in -[src/types/app-client.ts:681](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L681) +[src/types/app-client.ts:684](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L684) ___ @@ -350,7 +350,7 @@ The app address of the app instance this client is linked to. #### Defined in -[src/types/app-client.ts:666](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L666) +[src/types/app-client.ts:669](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L669) ___ @@ -366,7 +366,7 @@ The ID of the app instance this client is linked to. #### Defined in -[src/types/app-client.ts:661](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L661) +[src/types/app-client.ts:664](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L664) ___ @@ -382,7 +382,7 @@ The name of the app (from the ARC-32 / ARC-56 app spec or override). #### Defined in -[src/types/app-client.ts:671](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L671) +[src/types/app-client.ts:674](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L674) ___ @@ -398,7 +398,7 @@ The ARC-56 app spec being used #### Defined in -[src/types/app-client.ts:676](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L676) +[src/types/app-client.ts:679](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L679) ___ @@ -414,7 +414,7 @@ Create transactions for the current app #### Defined in -[src/types/app-client.ts:705](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L705) +[src/types/app-client.ts:708](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L708) ___ @@ -447,7 +447,7 @@ await appClient.send.call({method: 'my_method2', args: [myMethodCall]}) #### Defined in -[src/types/app-client.ts:700](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L700) +[src/types/app-client.ts:703](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L703) ___ @@ -463,7 +463,7 @@ Send transactions to the current app #### Defined in -[src/types/app-client.ts:710](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L710) +[src/types/app-client.ts:713](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L713) ___ @@ -493,7 +493,7 @@ Get state (local, global, box) from the current app #### Defined in -[src/types/app-client.ts:715](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L715) +[src/types/app-client.ts:718](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L718) ## Methods @@ -529,7 +529,7 @@ const appClient2 = appClient.clone({ defaultSender: 'NEW_SENDER_ADDRESS' }) #### Defined in -[src/types/app-client.ts:569](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L569) +[src/types/app-client.ts:572](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L572) ___ @@ -559,7 +559,7 @@ The compiled code and any compilation results (including source maps) #### Defined in -[src/types/app-client.ts:946](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L946) +[src/types/app-client.ts:949](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L949) ___ @@ -577,7 +577,7 @@ The source maps #### Defined in -[src/types/app-client.ts:885](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L885) +[src/types/app-client.ts:888](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L888) ___ @@ -603,7 +603,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:863](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L863) +[src/types/app-client.ts:866](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L866) ___ @@ -652,7 +652,7 @@ await appClient.fundAppAccount({ amount: algo(1) }) #### Defined in -[src/types/app-client.ts:744](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L744) +[src/types/app-client.ts:747](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L747) ___ @@ -679,7 +679,7 @@ It does this by replacing any `undefined` values with the equivalent default val #### Defined in -[src/types/app-client.ts:1107](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1107) +[src/types/app-client.ts:1110](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1110) ___ @@ -703,7 +703,7 @@ A tuple with: [ARC-56 `Method`, algosdk `ABIMethod`] #### Defined in -[src/types/app-client.ts:913](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L913) +[src/types/app-client.ts:916](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L916) ___ @@ -731,7 +731,7 @@ ___ #### Defined in -[src/types/app-client.ts:1547](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1547) +[src/types/app-client.ts:1552](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1552) ___ @@ -754,7 +754,7 @@ ___ #### Defined in -[src/types/app-client.ts:1219](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1219) +[src/types/app-client.ts:1222](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1222) ___ @@ -782,7 +782,7 @@ ___ #### Defined in -[src/types/app-client.ts:1534](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1534) +[src/types/app-client.ts:1539](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1539) ___ @@ -805,7 +805,7 @@ ___ #### Defined in -[src/types/app-client.ts:1184](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1184) +[src/types/app-client.ts:1187](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1187) ___ @@ -828,7 +828,7 @@ ___ #### Defined in -[src/types/app-client.ts:1248](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1248) +[src/types/app-client.ts:1251](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1251) ___ @@ -849,7 +849,7 @@ ___ #### Defined in -[src/types/app-client.ts:1617](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1617) +[src/types/app-client.ts:1622](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1622) ___ @@ -873,7 +873,7 @@ const boxNames = await appClient.getBoxNames() #### Defined in -[src/types/app-client.ts:781](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L781) +[src/types/app-client.ts:784](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L784) ___ @@ -903,7 +903,7 @@ const boxValue = await appClient.getBoxValue('boxName') #### Defined in -[src/types/app-client.ts:794](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L794) +[src/types/app-client.ts:797](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L797) ___ @@ -934,7 +934,7 @@ const boxValue = await appClient.getBoxValueFromABIType('boxName', new ABIUintTy #### Defined in -[src/types/app-client.ts:808](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L808) +[src/types/app-client.ts:811](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L811) ___ @@ -965,7 +965,7 @@ const boxValues = await appClient.getBoxValues() #### Defined in -[src/types/app-client.ts:826](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L826) +[src/types/app-client.ts:829](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L829) ___ @@ -997,7 +997,7 @@ const boxValues = await appClient.getBoxValuesFromABIType(new ABIUintType(32)) #### Defined in -[src/types/app-client.ts:846](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L846) +[src/types/app-client.ts:849](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L849) ___ @@ -1021,7 +1021,7 @@ const globalState = await appClient.getGlobalState() #### Defined in -[src/types/app-client.ts:756](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L756) +[src/types/app-client.ts:759](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L759) ___ @@ -1051,7 +1051,7 @@ const localState = await appClient.getLocalState('ACCOUNT_ADDRESS') #### Defined in -[src/types/app-client.ts:769](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L769) +[src/types/app-client.ts:772](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L772) ___ @@ -1074,7 +1074,7 @@ ___ #### Defined in -[src/types/app-client.ts:1463](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1463) +[src/types/app-client.ts:1468](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1468) ___ @@ -1097,7 +1097,7 @@ ___ #### Defined in -[src/types/app-client.ts:1281](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1281) +[src/types/app-client.ts:1284](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1284) ___ @@ -1120,7 +1120,7 @@ ___ #### Defined in -[src/types/app-client.ts:1343](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1343) +[src/types/app-client.ts:1346](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1346) ___ @@ -1143,7 +1143,7 @@ if none provided and throws an error if neither provided #### Defined in -[src/types/app-client.ts:1517](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1517) +[src/types/app-client.ts:1522](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1522) ___ @@ -1168,7 +1168,7 @@ or `undefined` otherwise (so the signer is resolved from `AlgorandClient`) #### Defined in -[src/types/app-client.ts:1527](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1527) +[src/types/app-client.ts:1532](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1532) ___ @@ -1197,7 +1197,7 @@ ___ #### Defined in -[src/types/app-client.ts:1687](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1687) +[src/types/app-client.ts:1692](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1692) ___ @@ -1219,7 +1219,7 @@ Make the given call and catch any errors, augmenting with debugging information #### Defined in -[src/types/app-client.ts:1571](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1571) +[src/types/app-client.ts:1576](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1576) ___ @@ -1241,7 +1241,7 @@ Import source maps for the app. #### Defined in -[src/types/app-client.ts:902](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L902) +[src/types/app-client.ts:905](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L905) ___ @@ -1276,7 +1276,7 @@ The smart contract response with an updated return value #### Defined in -[src/types/app-client.ts:927](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L927) +[src/types/app-client.ts:930](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L930) ___ @@ -1308,7 +1308,7 @@ The compiled code and any compilation results (including source maps) #### Defined in -[src/types/app-client.ts:1054](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1054) +[src/types/app-client.ts:1057](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1057) ___ @@ -1341,7 +1341,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:970](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L970) +[src/types/app-client.ts:973](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L973) ___ @@ -1386,7 +1386,7 @@ const appClient = await AppClient.fromCreatorAndName({ #### Defined in -[src/types/app-client.ts:597](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L597) +[src/types/app-client.ts:600](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L600) ___ @@ -1428,7 +1428,7 @@ const appClient = await AppClient.fromNetwork({ #### Defined in -[src/types/app-client.ts:626](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L626) +[src/types/app-client.ts:629](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L629) ___ @@ -1459,4 +1459,4 @@ const arc56AppSpec = AppClient.normaliseAppSpec(appSpec) #### Defined in -[src/types/app-client.ts:654](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L654) +[src/types/app-client.ts:657](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L657) diff --git a/docs/code/classes/types_app_client.ApplicationClient.md b/docs/code/classes/types_app_client.ApplicationClient.md index 3484d135..558940bc 100644 --- a/docs/code/classes/types_app_client.ApplicationClient.md +++ b/docs/code/classes/types_app_client.ApplicationClient.md @@ -92,7 +92,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1816](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1816) +[src/types/app-client.ts:1821](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1821) ## Properties @@ -102,7 +102,7 @@ Create a new ApplicationClient instance #### Defined in -[src/types/app-client.ts:1799](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1799) +[src/types/app-client.ts:1804](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1804) ___ @@ -112,7 +112,7 @@ ___ #### Defined in -[src/types/app-client.ts:1798](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1798) +[src/types/app-client.ts:1803](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1803) ___ @@ -122,7 +122,7 @@ ___ #### Defined in -[src/types/app-client.ts:1801](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1801) +[src/types/app-client.ts:1806](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1806) ___ @@ -132,7 +132,7 @@ ___ #### Defined in -[src/types/app-client.ts:1803](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1803) +[src/types/app-client.ts:1808](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1808) ___ @@ -142,7 +142,7 @@ ___ #### Defined in -[src/types/app-client.ts:1804](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1804) +[src/types/app-client.ts:1809](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1809) ___ @@ -152,7 +152,7 @@ ___ #### Defined in -[src/types/app-client.ts:1800](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1800) +[src/types/app-client.ts:1805](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1805) ___ @@ -162,7 +162,7 @@ ___ #### Defined in -[src/types/app-client.ts:1790](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1790) +[src/types/app-client.ts:1795](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1795) ___ @@ -172,7 +172,7 @@ ___ #### Defined in -[src/types/app-client.ts:1792](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1792) +[src/types/app-client.ts:1797](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1797) ___ @@ -182,7 +182,7 @@ ___ #### Defined in -[src/types/app-client.ts:1796](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1796) +[src/types/app-client.ts:1801](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1801) ___ @@ -192,7 +192,7 @@ ___ #### Defined in -[src/types/app-client.ts:1795](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1795) +[src/types/app-client.ts:1800](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1800) ___ @@ -202,7 +202,7 @@ ___ #### Defined in -[src/types/app-client.ts:1791](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1791) +[src/types/app-client.ts:1796](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1796) ___ @@ -212,7 +212,7 @@ ___ #### Defined in -[src/types/app-client.ts:1794](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1794) +[src/types/app-client.ts:1799](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1799) ___ @@ -222,7 +222,7 @@ ___ #### Defined in -[src/types/app-client.ts:1793](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1793) +[src/types/app-client.ts:1798](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1798) ## Methods @@ -250,7 +250,7 @@ Issues a no_op (normal) call to the app. #### Defined in -[src/types/app-client.ts:2139](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2139) +[src/types/app-client.ts:2144](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2144) ___ @@ -279,7 +279,7 @@ Issues a call to the app with the given call type. #### Defined in -[src/types/app-client.ts:2221](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2221) +[src/types/app-client.ts:2226](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2226) ___ @@ -307,7 +307,7 @@ Issues a clear_state call to the app. #### Defined in -[src/types/app-client.ts:2198](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2198) +[src/types/app-client.ts:2203](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2203) ___ @@ -335,7 +335,7 @@ Issues a close_out call to the app. #### Defined in -[src/types/app-client.ts:2187](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2187) +[src/types/app-client.ts:2192](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2192) ___ @@ -363,7 +363,7 @@ Compiles the approval and clear state programs and sets up the source map. #### Defined in -[src/types/app-client.ts:1855](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1855) +[src/types/app-client.ts:1860](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1860) ___ @@ -391,7 +391,7 @@ Creates a smart contract app, returns the details of the created app. #### Defined in -[src/types/app-client.ts:2034](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2034) +[src/types/app-client.ts:2039](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2039) ___ @@ -419,7 +419,7 @@ Issues a delete_application call to the app. #### Defined in -[src/types/app-client.ts:2209](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2209) +[src/types/app-client.ts:2214](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2214) ___ @@ -453,7 +453,7 @@ To understand the architecture decisions behind this functionality please see ht #### Defined in -[src/types/app-client.ts:1923](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1923) +[src/types/app-client.ts:1928](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1928) ___ @@ -471,7 +471,7 @@ The source maps #### Defined in -[src/types/app-client.ts:1888](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1888) +[src/types/app-client.ts:1893](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1893) ___ @@ -498,7 +498,7 @@ The new error, or if there was no logic error or source map then the wrapped err #### Defined in -[src/types/app-client.ts:2543](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2543) +[src/types/app-client.ts:2548](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2548) ___ @@ -522,7 +522,7 @@ The result of the funding #### Defined in -[src/types/app-client.ts:2260](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2260) +[src/types/app-client.ts:2265](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2265) ___ @@ -546,7 +546,7 @@ The ABI method for the given method #### Defined in -[src/types/app-client.ts:2501](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2501) +[src/types/app-client.ts:2506](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2506) ___ @@ -574,7 +574,7 @@ Returns the ABI Method parameters for the given method name string for the app r #### Defined in -[src/types/app-client.ts:2479](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2479) +[src/types/app-client.ts:2484](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2484) ___ @@ -594,7 +594,7 @@ ___ #### Defined in -[src/types/app-client.ts:2559](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2559) +[src/types/app-client.ts:2564](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2564) ___ @@ -617,7 +617,7 @@ Gets the reference information for the current application instance. #### Defined in -[src/types/app-client.ts:2513](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2513) +[src/types/app-client.ts:2518](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2518) ___ @@ -635,7 +635,7 @@ The names of the boxes #### Defined in -[src/types/app-client.ts:2316](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2316) +[src/types/app-client.ts:2321](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2321) ___ @@ -659,7 +659,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2331](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2331) +[src/types/app-client.ts:2336](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2336) ___ @@ -684,7 +684,7 @@ The current box value as a byte array #### Defined in -[src/types/app-client.ts:2347](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2347) +[src/types/app-client.ts:2352](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2352) ___ @@ -709,7 +709,7 @@ The (name, value) pair of the boxes with values as raw byte arrays #### Defined in -[src/types/app-client.ts:2363](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2363) +[src/types/app-client.ts:2368](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2368) ___ @@ -735,7 +735,7 @@ The (name, value) pair of the boxes with values as the ABI Value #### Defined in -[src/types/app-client.ts:2385](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2385) +[src/types/app-client.ts:2390](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2390) ___ @@ -764,7 +764,7 @@ Returns the arguments for an app call for the given ABI method or raw method spe #### Defined in -[src/types/app-client.ts:2409](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2409) +[src/types/app-client.ts:2414](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2414) ___ @@ -782,7 +782,7 @@ The global state #### Defined in -[src/types/app-client.ts:2288](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2288) +[src/types/app-client.ts:2293](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2293) ___ @@ -806,7 +806,7 @@ The global state #### Defined in -[src/types/app-client.ts:2302](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2302) +[src/types/app-client.ts:2307](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2307) ___ @@ -828,7 +828,7 @@ Import source maps for the app. #### Defined in -[src/types/app-client.ts:1905](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1905) +[src/types/app-client.ts:1910](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L1910) ___ @@ -856,7 +856,7 @@ Issues a opt_in call to the app. #### Defined in -[src/types/app-client.ts:2176](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2176) +[src/types/app-client.ts:2181](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2181) ___ @@ -884,4 +884,4 @@ Updates the smart contract app. #### Defined in -[src/types/app-client.ts:2098](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2098) +[src/types/app-client.ts:2103](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L2103) diff --git a/docs/code/interfaces/types_app_client.AppClientCallABIArgs.md b/docs/code/interfaces/types_app_client.AppClientCallABIArgs.md index 52674a3e..fa2b6b37 100644 --- a/docs/code/interfaces/types_app_client.AppClientCallABIArgs.md +++ b/docs/code/interfaces/types_app_client.AppClientCallABIArgs.md @@ -113,7 +113,7 @@ If calling an ABI method then either the name of the method, or the ABI signatur #### Defined in -[src/types/app-client.ts:201](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L201) +[src/types/app-client.ts:204](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L204) ___ diff --git a/docs/code/interfaces/types_app_client.AppClientCallCoreParams.md b/docs/code/interfaces/types_app_client.AppClientCallCoreParams.md index af6e40d9..c8adb311 100644 --- a/docs/code/interfaces/types_app_client.AppClientCallCoreParams.md +++ b/docs/code/interfaces/types_app_client.AppClientCallCoreParams.md @@ -24,7 +24,7 @@ The transaction note for the smart contract call #### Defined in -[src/types/app-client.ts:212](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L212) +[src/types/app-client.ts:215](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L215) ___ @@ -36,7 +36,7 @@ Parameters to control transaction sending #### Defined in -[src/types/app-client.ts:214](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L214) +[src/types/app-client.ts:217](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L217) ___ @@ -48,4 +48,4 @@ The optional sender to send the transaction from, will use the application clien #### Defined in -[src/types/app-client.ts:210](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L210) +[src/types/app-client.ts:213](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L213) diff --git a/docs/code/interfaces/types_app_client.AppClientCompilationParams.md b/docs/code/interfaces/types_app_client.AppClientCompilationParams.md index d5053214..96cd8351 100644 --- a/docs/code/interfaces/types_app_client.AppClientCompilationParams.md +++ b/docs/code/interfaces/types_app_client.AppClientCompilationParams.md @@ -22,7 +22,7 @@ Whether or not the contract should have deploy-time permanence control set, unde #### Defined in -[src/types/app-client.ts:229](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L229) +[src/types/app-client.ts:232](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L232) ___ @@ -34,7 +34,7 @@ Any deploy-time parameters to replace in the TEAL code #### Defined in -[src/types/app-client.ts:225](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L225) +[src/types/app-client.ts:228](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L228) ___ @@ -46,4 +46,4 @@ Whether or not the contract should have deploy-time immutability control set, un #### Defined in -[src/types/app-client.ts:227](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L227) +[src/types/app-client.ts:230](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L230) diff --git a/docs/code/interfaces/types_app_client.AppClientCompilationResult.md b/docs/code/interfaces/types_app_client.AppClientCompilationResult.md index 28adc068..11306434 100644 --- a/docs/code/interfaces/types_app_client.AppClientCompilationResult.md +++ b/docs/code/interfaces/types_app_client.AppClientCompilationResult.md @@ -33,7 +33,7 @@ The compiled bytecode of the approval program, ready to deploy to algod #### Defined in -[src/types/app-client.ts:282](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L282) +[src/types/app-client.ts:285](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L285) ___ @@ -45,7 +45,7 @@ The compiled bytecode of the clear state program, ready to deploy to algod #### Defined in -[src/types/app-client.ts:284](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L284) +[src/types/app-client.ts:287](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L287) ___ diff --git a/docs/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md b/docs/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md index bcb02b30..b7a39d3e 100644 --- a/docs/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md +++ b/docs/code/interfaces/types_app_client.AppClientDeployCallInterfaceParams.md @@ -32,7 +32,7 @@ Any args to pass to any create transaction that is issued as part of deployment #### Defined in -[src/types/app-client.ts:182](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L182) +[src/types/app-client.ts:185](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L185) ___ @@ -44,7 +44,7 @@ Override the on-completion action for the create call; defaults to NoOp #### Defined in -[src/types/app-client.ts:184](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L184) +[src/types/app-client.ts:187](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L187) ___ @@ -56,7 +56,7 @@ Any args to pass to any delete transaction that is issued as part of deployment #### Defined in -[src/types/app-client.ts:188](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L188) +[src/types/app-client.ts:191](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L191) ___ @@ -68,7 +68,7 @@ Any deploy-time parameters to replace in the TEAL code #### Defined in -[src/types/app-client.ts:180](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L180) +[src/types/app-client.ts:183](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L183) ___ @@ -80,4 +80,4 @@ Any args to pass to any update transaction that is issued as part of deployment #### Defined in -[src/types/app-client.ts:186](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L186) +[src/types/app-client.ts:189](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L189) diff --git a/docs/code/interfaces/types_app_client.AppClientDeployCoreParams.md b/docs/code/interfaces/types_app_client.AppClientDeployCoreParams.md index 7d5b63bf..2f2b51f0 100644 --- a/docs/code/interfaces/types_app_client.AppClientDeployCoreParams.md +++ b/docs/code/interfaces/types_app_client.AppClientDeployCoreParams.md @@ -35,7 +35,7 @@ If this is not specified then it will automatically be determined based on the A #### Defined in -[src/types/app-client.ts:170](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L170) +[src/types/app-client.ts:173](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L173) ___ @@ -48,7 +48,7 @@ If this is not specified then it will automatically be determined based on the A #### Defined in -[src/types/app-client.ts:166](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L166) +[src/types/app-client.ts:169](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L169) ___ @@ -60,7 +60,7 @@ What action to perform if a schema break is detected #### Defined in -[src/types/app-client.ts:172](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L172) +[src/types/app-client.ts:175](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L175) ___ @@ -72,7 +72,7 @@ What action to perform if a TEAL update is detected #### Defined in -[src/types/app-client.ts:174](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L174) +[src/types/app-client.ts:177](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L177) ___ @@ -84,7 +84,7 @@ Parameters to control transaction sending #### Defined in -[src/types/app-client.ts:162](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L162) +[src/types/app-client.ts:165](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L165) ___ @@ -96,7 +96,7 @@ The optional sender to send the transaction from, will use the application clien #### Defined in -[src/types/app-client.ts:160](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L160) +[src/types/app-client.ts:163](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L163) ___ @@ -108,4 +108,4 @@ The version of the contract, uses "1.0" by default #### Defined in -[src/types/app-client.ts:158](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L158) +[src/types/app-client.ts:161](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L161) diff --git a/docs/code/interfaces/types_app_client.AppClientDeployParams.md b/docs/code/interfaces/types_app_client.AppClientDeployParams.md index f0742673..40862588 100644 --- a/docs/code/interfaces/types_app_client.AppClientDeployParams.md +++ b/docs/code/interfaces/types_app_client.AppClientDeployParams.md @@ -47,7 +47,7 @@ If this is not specified then it will automatically be determined based on the A #### Defined in -[src/types/app-client.ts:170](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L170) +[src/types/app-client.ts:173](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L173) ___ @@ -64,7 +64,7 @@ If this is not specified then it will automatically be determined based on the A #### Defined in -[src/types/app-client.ts:166](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L166) +[src/types/app-client.ts:169](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L169) ___ @@ -80,7 +80,7 @@ Any args to pass to any create transaction that is issued as part of deployment #### Defined in -[src/types/app-client.ts:182](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L182) +[src/types/app-client.ts:185](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L185) ___ @@ -96,7 +96,7 @@ Override the on-completion action for the create call; defaults to NoOp #### Defined in -[src/types/app-client.ts:184](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L184) +[src/types/app-client.ts:187](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L187) ___ @@ -112,7 +112,7 @@ Any args to pass to any delete transaction that is issued as part of deployment #### Defined in -[src/types/app-client.ts:188](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L188) +[src/types/app-client.ts:191](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L191) ___ @@ -128,7 +128,7 @@ Any deploy-time parameters to replace in the TEAL code #### Defined in -[src/types/app-client.ts:180](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L180) +[src/types/app-client.ts:183](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L183) ___ @@ -144,7 +144,7 @@ What action to perform if a schema break is detected #### Defined in -[src/types/app-client.ts:172](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L172) +[src/types/app-client.ts:175](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L175) ___ @@ -160,7 +160,7 @@ What action to perform if a TEAL update is detected #### Defined in -[src/types/app-client.ts:174](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L174) +[src/types/app-client.ts:177](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L177) ___ @@ -172,7 +172,7 @@ Any overrides for the storage schema to request for the created app; by default #### Defined in -[src/types/app-client.ts:194](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L194) +[src/types/app-client.ts:197](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L197) ___ @@ -188,7 +188,7 @@ Parameters to control transaction sending #### Defined in -[src/types/app-client.ts:162](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L162) +[src/types/app-client.ts:165](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L165) ___ @@ -204,7 +204,7 @@ The optional sender to send the transaction from, will use the application clien #### Defined in -[src/types/app-client.ts:160](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L160) +[src/types/app-client.ts:163](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L163) ___ @@ -220,7 +220,7 @@ Any args to pass to any update transaction that is issued as part of deployment #### Defined in -[src/types/app-client.ts:186](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L186) +[src/types/app-client.ts:189](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L189) ___ @@ -236,4 +236,4 @@ The version of the contract, uses "1.0" by default #### Defined in -[src/types/app-client.ts:158](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L158) +[src/types/app-client.ts:161](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L161) diff --git a/docs/code/interfaces/types_app_client.AppClientParams.md b/docs/code/interfaces/types_app_client.AppClientParams.md index cbd623fd..a10f0684 100644 --- a/docs/code/interfaces/types_app_client.AppClientParams.md +++ b/docs/code/interfaces/types_app_client.AppClientParams.md @@ -29,7 +29,7 @@ An `AlgorandClient` instance #### Defined in -[src/types/app-client.ts:328](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L328) +[src/types/app-client.ts:331](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L331) ___ @@ -41,7 +41,7 @@ The ID of the app instance this client should make calls against. #### Defined in -[src/types/app-client.ts:318](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L318) +[src/types/app-client.ts:321](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L321) ___ @@ -54,7 +54,7 @@ Defaults to the ARC-32/ARC-56 app spec name #### Defined in -[src/types/app-client.ts:334](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L334) +[src/types/app-client.ts:337](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L337) ___ @@ -69,7 +69,7 @@ The ARC-56 or ARC-32 application spec as either: #### Defined in -[src/types/app-client.ts:325](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L325) +[src/types/app-client.ts:328](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L328) ___ @@ -81,7 +81,7 @@ Optional source map for the approval program #### Defined in -[src/types/app-client.ts:340](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L340) +[src/types/app-client.ts:343](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L343) ___ @@ -93,7 +93,7 @@ Optional source map for the clear state program #### Defined in -[src/types/app-client.ts:342](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L342) +[src/types/app-client.ts:345](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L345) ___ @@ -105,7 +105,7 @@ Optional address to use for the account to use as the default sender for calls. #### Defined in -[src/types/app-client.ts:336](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L336) +[src/types/app-client.ts:339](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L339) ___ @@ -117,4 +117,4 @@ Optional signer to use as the default signer for default sender calls (if not sp #### Defined in -[src/types/app-client.ts:338](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L338) +[src/types/app-client.ts:341](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L341) diff --git a/docs/code/interfaces/types_app_client.AppSourceMaps.md b/docs/code/interfaces/types_app_client.AppSourceMaps.md index 4d84967d..d3169505 100644 --- a/docs/code/interfaces/types_app_client.AppSourceMaps.md +++ b/docs/code/interfaces/types_app_client.AppSourceMaps.md @@ -23,7 +23,7 @@ The source map of the approval program #### Defined in -[src/types/app-client.ts:263](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L263) +[src/types/app-client.ts:266](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L266) ___ @@ -35,4 +35,4 @@ The source map of the clear program #### Defined in -[src/types/app-client.ts:265](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L265) +[src/types/app-client.ts:268](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L268) diff --git a/docs/code/interfaces/types_app_client.FundAppAccountParams.md b/docs/code/interfaces/types_app_client.FundAppAccountParams.md index 17c027bf..d4cd7282 100644 --- a/docs/code/interfaces/types_app_client.FundAppAccountParams.md +++ b/docs/code/interfaces/types_app_client.FundAppAccountParams.md @@ -23,7 +23,7 @@ Parameters for funding an app account #### Defined in -[src/types/app-client.ts:251](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L251) +[src/types/app-client.ts:254](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L254) ___ @@ -35,7 +35,7 @@ The transaction note for the smart contract call #### Defined in -[src/types/app-client.ts:255](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L255) +[src/types/app-client.ts:258](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L258) ___ @@ -47,7 +47,7 @@ Parameters to control transaction sending #### Defined in -[src/types/app-client.ts:257](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L257) +[src/types/app-client.ts:260](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L260) ___ @@ -59,4 +59,4 @@ The optional sender to send the transaction from, will use the application clien #### Defined in -[src/types/app-client.ts:253](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L253) +[src/types/app-client.ts:256](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L256) diff --git a/docs/code/interfaces/types_app_client.ResolveAppById.md b/docs/code/interfaces/types_app_client.ResolveAppById.md index 113d2eeb..80fdb7b0 100644 --- a/docs/code/interfaces/types_app_client.ResolveAppById.md +++ b/docs/code/interfaces/types_app_client.ResolveAppById.md @@ -34,7 +34,7 @@ The id of an existing app to call using this client, or 0 if the app hasn't been #### Defined in -[src/types/app-client.ts:112](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L112) +[src/types/app-client.ts:115](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L115) ___ @@ -50,7 +50,7 @@ The optional name to use to mark the app when deploying `ApplicationClient.deplo #### Defined in -[src/types/app-client.ts:114](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L114) +[src/types/app-client.ts:117](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L117) ___ @@ -62,4 +62,4 @@ How the app ID is resolved, either by `'id'` or `'creatorAndName'`; must be `'cr #### Defined in -[src/types/app-client.ts:119](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L119) +[src/types/app-client.ts:122](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L122) diff --git a/docs/code/interfaces/types_app_client.ResolveAppByIdBase.md b/docs/code/interfaces/types_app_client.ResolveAppByIdBase.md index c9571d3f..fc961a8c 100644 --- a/docs/code/interfaces/types_app_client.ResolveAppByIdBase.md +++ b/docs/code/interfaces/types_app_client.ResolveAppByIdBase.md @@ -29,7 +29,7 @@ The id of an existing app to call using this client, or 0 if the app hasn't been #### Defined in -[src/types/app-client.ts:112](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L112) +[src/types/app-client.ts:115](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L115) ___ @@ -41,4 +41,4 @@ The optional name to use to mark the app when deploying `ApplicationClient.deplo #### Defined in -[src/types/app-client.ts:114](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L114) +[src/types/app-client.ts:117](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L117) diff --git a/docs/code/interfaces/types_app_client.SourceMapExport.md b/docs/code/interfaces/types_app_client.SourceMapExport.md index 07b40a63..3f73408c 100644 --- a/docs/code/interfaces/types_app_client.SourceMapExport.md +++ b/docs/code/interfaces/types_app_client.SourceMapExport.md @@ -21,7 +21,7 @@ #### Defined in -[src/types/app-client.ts:272](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L272) +[src/types/app-client.ts:275](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L275) ___ @@ -31,7 +31,7 @@ ___ #### Defined in -[src/types/app-client.ts:271](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L271) +[src/types/app-client.ts:274](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L274) ___ @@ -41,7 +41,7 @@ ___ #### Defined in -[src/types/app-client.ts:270](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L270) +[src/types/app-client.ts:273](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L273) ___ @@ -51,4 +51,4 @@ ___ #### Defined in -[src/types/app-client.ts:269](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L269) +[src/types/app-client.ts:272](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L272) diff --git a/docs/code/modules/types_app_client.md b/docs/code/modules/types_app_client.md index 9bf2c350..1aa861ac 100644 --- a/docs/code/modules/types_app_client.md +++ b/docs/code/modules/types_app_client.md @@ -60,7 +60,7 @@ AppClient common parameters for a bare app call #### Defined in -[src/types/app-client.ts:355](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L355) +[src/types/app-client.ts:358](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L358) ___ @@ -72,7 +72,7 @@ The arguments to pass to an Application Client smart contract call #### Defined in -[src/types/app-client.ts:205](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L205) +[src/types/app-client.ts:208](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L208) ___ @@ -84,7 +84,7 @@ Parameters to construct a ApplicationClient contract call #### Defined in -[src/types/app-client.ts:218](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L218) +[src/types/app-client.ts:221](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L221) ___ @@ -94,7 +94,7 @@ ___ #### Defined in -[src/types/app-client.ts:197](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L197) +[src/types/app-client.ts:200](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L200) ___ @@ -106,7 +106,7 @@ Parameters to construct a ApplicationClient clear state contract call #### Defined in -[src/types/app-client.ts:221](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L221) +[src/types/app-client.ts:224](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L224) ___ @@ -124,7 +124,7 @@ On-complete action parameter for creating a contract using ApplicationClient #### Defined in -[src/types/app-client.ts:233](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L233) +[src/types/app-client.ts:236](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L236) ___ @@ -136,7 +136,7 @@ Parameters for creating a contract using ApplicationClient #### Defined in -[src/types/app-client.ts:239](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L239) +[src/types/app-client.ts:242](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L242) ___ @@ -148,7 +148,7 @@ AppClient common parameters for an ABI method call #### Defined in -[src/types/app-client.ts:363](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L363) +[src/types/app-client.ts:366](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L366) ___ @@ -160,7 +160,7 @@ Parameters for updating a contract using ApplicationClient #### Defined in -[src/types/app-client.ts:247](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L247) +[src/types/app-client.ts:250](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L250) ___ @@ -172,7 +172,7 @@ The details of an AlgoKit Utils deployed app #### Defined in -[src/types/app-client.ts:135](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L135) +[src/types/app-client.ts:138](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L138) ___ @@ -192,7 +192,7 @@ The details of an AlgoKit Utils deployed app #### Defined in -[src/types/app-client.ts:123](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L123) +[src/types/app-client.ts:126](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L126) ___ @@ -204,7 +204,7 @@ The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app #### Defined in -[src/types/app-client.ts:153](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L153) +[src/types/app-client.ts:156](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L156) ___ @@ -222,7 +222,7 @@ The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app #### Defined in -[src/types/app-client.ts:138](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L138) +[src/types/app-client.ts:141](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L141) ___ @@ -234,7 +234,7 @@ The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app by cre #### Defined in -[src/types/app-client.ts:150](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L150) +[src/types/app-client.ts:153](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L153) ___ @@ -246,7 +246,7 @@ The details of an ARC-0032 app spec specified, AlgoKit Utils deployed app by id #### Defined in -[src/types/app-client.ts:147](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L147) +[src/types/app-client.ts:150](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L150) ___ @@ -264,7 +264,7 @@ onComplete parameter for a non-update app call #### Defined in -[src/types/app-client.ts:349](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L349) +[src/types/app-client.ts:352](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L352) ___ @@ -276,7 +276,7 @@ Parameters to clone an app client #### Defined in -[src/types/app-client.ts:346](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L346) +[src/types/app-client.ts:349](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L349) ___ @@ -288,7 +288,7 @@ Parameters for funding an app account #### Defined in -[src/types/app-client.ts:388](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L388) +[src/types/app-client.ts:391](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L391) ___ @@ -300,7 +300,7 @@ Configuration to resolve app by creator and name `getCreatorAppsByName` #### Defined in -[src/types/app-client.ts:104](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L104) +[src/types/app-client.ts:107](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L107) ___ @@ -320,7 +320,7 @@ Configuration to resolve app by creator and name `getCreatorAppsByName` #### Defined in -[src/types/app-client.ts:91](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L91) +[src/types/app-client.ts:94](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L94) ___ @@ -332,7 +332,7 @@ Resolve an app client instance by looking up an app created by the given creator #### Defined in -[src/types/app-client.ts:397](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L397) +[src/types/app-client.ts:400](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L400) ___ @@ -344,4 +344,4 @@ Resolve an app client instance by looking up the current network. #### Defined in -[src/types/app-client.ts:411](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L411) +[src/types/app-client.ts:414](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/app-client.ts#L414) diff --git a/package-lock.json b/package-lock.json index c69b9f85..6443693c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1110,9 +1110,9 @@ } }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -1185,9 +1185,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -3316,10 +3316,11 @@ "dev": true }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -4495,10 +4496,11 @@ } }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" diff --git a/src/transaction/transaction.spec.ts b/src/transaction/transaction.spec.ts index 45195275..49a30598 100644 --- a/src/transaction/transaction.spec.ts +++ b/src/transaction/transaction.spec.ts @@ -652,52 +652,55 @@ describe('transaction', () => { }) describe('readonly', () => { - test('alters fee, handling expensive abi method calls that use ensure_budget to op-up', async () => { - // The expectedFee differs to non readonly method call, as we don't want to run simulate twice (once for resolving the minimum fee and once for the actual transaction result). - // Because no fees are actually paid with readonly calls, we simply use the maxFee value and skip any minimum fee calculations. - const expectedFee = 12_000n + test.each([ + { coverAppCallInnerTransactionFees: true, description: 'with coverAppCallInnerTransactionFees enabled' }, + { coverAppCallInnerTransactionFees: false, description: 'with coverAppCallInnerTransactionFees disabled' }, + ])('uses fixed opcode budget without op-up inner transactions $description', async ({ coverAppCallInnerTransactionFees }) => { + // This test verifies that readonly calls use the fixed MAX_SIMULATE_OPCODE_BUDGET + // and don't require inner transactions for op-ups, regardless of coverAppCallInnerTransactionFees setting. const params = { method: 'burn_ops_readonly', - args: [6200], - coverAppCallInnerTransactionFees: true, - maxFee: microAlgo(expectedFee), + args: [6200], // This would normally require op-ups via inner transactions + coverAppCallInnerTransactionFees, } satisfies Parameters<(typeof appClient1)['send']['call']>[0] const result = await appClient1.send.call(params) - expect(result.transaction.fee).toBe(expectedFee) - expect(result.confirmation.innerTxns?.length).toBe(9) // Op up transactions sent by ensure_budget + expect(result.transaction.fee).toBe(1_000n) + expect(result.confirmation.innerTxns).toBeUndefined() // No op-up inner transactions needed + expect(result.txIds.length).toBe(1) }) - test('throws when no max fee is supplied', async () => { - const params = { - method: 'burn_ops_readonly', - coverAppCallInnerTransactionFees: true, - } satisfies Parameters<(typeof appClient1)['send']['call']>[0] + test('alters fee, handling inner transactions', async () => { + // Force `send_inners_with_fees` to be marked as readonly + appClient1['_appSpec'].methods.find((m) => m.name === 'send_inners_with_fees')!.readonly = true - await expect(async () => await appClient1.send.call(params)).rejects.toThrow( - 'Please provide a maxFee for the transaction when coverAppCallInnerTransactionFees is enabled.', - ) - }) - - test('throws when inner transaction fees are not covered and coverAppCallInnerTransactionFees is disabled', async () => { - const expectedFee = 7000n + // The expectedFee differs to non readonly method call, as we don't want to run simulate twice (once for resolving the minimum fee and once for the actual transaction result). + // Because no fees are actually paid with readonly calls, we simply use the maxFee value (if set) and skip any minimum fee calculations. + // If this method is running in a non readonly context, the minimum fee would be calculated as 5300n. + const expectedFee = 12_000n const params = { - method: 'burn_ops_readonly', - args: [6200], + method: 'send_inners_with_fees', + args: [appClient2.appId, appClient3.appId, [1000n, 0n, 200n, 0n, [500n, 0n]]], + coverAppCallInnerTransactionFees: true, maxFee: microAlgo(expectedFee), - coverAppCallInnerTransactionFees: false, } satisfies Parameters<(typeof appClient1)['send']['call']>[0] - await expect(async () => await appClient1.send.call(params)).rejects.toThrow(/fee too small/) + const result = await appClient1.send.call(params) + + expect(result.transaction.fee).toBe(expectedFee) + expect(result.confirmation.innerTxns?.length).toBe(4) + expect(result.txIds.length).toBe(1) }) test('throws when max fee is too small to cover inner transaction fees', async () => { - const expectedFee = 7000n + // Force `send_inners_with_fees` to be marked as readonly + appClient1['_appSpec'].methods.find((m) => m.name === 'send_inners_with_fees')!.readonly = true + const params = { - method: 'burn_ops_readonly', - args: [6200], + method: 'send_inners_with_fees', + args: [appClient2.appId, appClient3.appId, [1000n, 0n, 200n, 0n, [500n, 0n]]], coverAppCallInnerTransactionFees: true, - maxFee: microAlgo(expectedFee), + maxFee: microAlgo(2000n), } satisfies Parameters<(typeof appClient1)['send']['call']>[0] await expect(async () => await appClient1.send.call(params)).rejects.toThrow( diff --git a/src/types/app-client.ts b/src/types/app-client.ts index 2e013794..ff3d6224 100644 --- a/src/types/app-client.ts +++ b/src/types/app-client.ts @@ -87,6 +87,9 @@ import SourceMap = algosdk.ProgramSourceMap import SuggestedParams = algosdk.SuggestedParams import TransactionSigner = algosdk.TransactionSigner +/** The maximum opcode budget for a simulate call as per https://github.com/algorand/go-algorand/blob/807b29a91c371d225e12b9287c5d56e9b33c4e4c/ledger/simulation/trace.go#L104 */ +const MAX_SIMULATE_OPCODE_BUDGET = 20_000 * 16 + /** Configuration to resolve app by creator and name `getCreatorAppsByName` */ export type ResolveAppByCreatorAndNameBase = { /** The address of the app creator account to resolve the app by */ @@ -1413,13 +1416,11 @@ export class AppClient { } // Read-only calls do not require fees to be paid, as they are only simulated on the network. - // Therefore there is no value in calculating the minimum fee needed for a successful app call with inner transactions. - // As a a result we only need to send a single simulate call, - // however to do this successfully we need to ensure fees for the transaction are fully covered using maxFee. - if (params.coverAppCallInnerTransactionFees) { - if (params.maxFee === undefined) { - throw Error(`Please provide a maxFee for the transaction when coverAppCallInnerTransactionFees is enabled.`) - } + // With maximum opcode budget provided, ensure_budget (and similar op-up utilities) won't need to create inner transactions, + // so fee coverage for op-up inner transactions does not need to be accounted for in readonly calls. + // If max_fee is provided, use it as static_fee, as there may still be inner transactions sent which need to be covered by the outermost transaction, + // even though ARC-22 specifies that readonly methods should not send inner transactions. + if (params.coverAppCallInnerTransactionFees && params.maxFee) { readonlyParams.staticFee = params.maxFee readonlyParams.extraFee = undefined } @@ -1432,6 +1433,8 @@ export class AppClient { allowUnnamedResources: params.populateAppCallResources ?? true, // Simulate calls for a readonly method shouldn't invoke signing skipSignatures: true, + // Simulate calls for a readonly method can use the max opcode budget + extraOpcodeBudget: MAX_SIMULATE_OPCODE_BUDGET, }) return this.processMethodCallReturn( { @@ -1445,6 +1448,8 @@ export class AppClient { ) } catch (e) { const error = e as Error + // For read-only calls with max opcode budget, fee issues should be rare + // but we can still provide helpful error message if they occur if (params.coverAppCallInnerTransactionFees && error && error.message && error.message.match(/fee too small/)) { throw Error(`Fees were too small. You may need to increase the transaction maxFee.`) } From b0278f3d282c206ab027320a614a1f6722deeec5 Mon Sep 17 00:00:00 2001 From: Al Date: Thu, 19 Jun 2025 16:28:15 +0300 Subject: [PATCH 10/10] chore: bot auth for release (#416) --- .github/workflows/prod_release.yml | 21 +++++++++++++++++---- .github/workflows/release.yml | 17 ++++++++++++++--- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/.github/workflows/prod_release.yml b/.github/workflows/prod_release.yml index 35cbd85a..fe901129 100644 --- a/.github/workflows/prod_release.yml +++ b/.github/workflows/prod_release.yml @@ -10,17 +10,30 @@ jobs: prod_release: runs-on: ubuntu-latest steps: - - name: Clone repository - uses: actions/checkout@v3 + - name: Generate bot token + uses: actions/create-github-app-token@v1 + id: app_token with: + app-id: ${{ secrets.BOT_ID }} + private-key: ${{ secrets.BOT_SK }} + + - uses: actions/checkout@v4 + with: + # Fetch entire repository history so we can determine version number from it fetch-depth: 0 + token: ${{ steps.app_token.outputs.token }} + + - name: Set Git user as GitHub actions + run: git config --global user.email "179917785+engineering-ci[bot]@users.noreply.github.com" && git config --global user.name "engineering-ci[bot]" + - name: Merge main -> release uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f with: type: now from_branch: main target_branch: release - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ steps.app_token.outputs.token }} + - name: Merge release -> main uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f with: @@ -28,4 +41,4 @@ jobs: from_branch: release target_branch: main message: Merge release back to main to get version increment [no ci] - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ steps.app_token.outputs.token }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c3518c5b..4b97eb3b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,10 +60,21 @@ jobs: needs: build runs-on: ubuntu-latest steps: - - name: Clone repository - uses: actions/checkout@v3 + - name: Generate bot token + uses: actions/create-github-app-token@v1 + id: app_token with: + app-id: ${{ secrets.BOT_ID }} + private-key: ${{ secrets.BOT_SK }} + + - uses: actions/checkout@v4 + with: + # Fetch entire repository history so we can determine version number from it fetch-depth: 0 + token: ${{ steps.app_token.outputs.token }} + + - name: Set Git user as GitHub actions + run: git config --global user.email "179917785+engineering-ci[bot]@users.noreply.github.com" && git config --global user.name "engineering-ci[bot]" # semantic-release needs node 20 - name: Use Node.js 20.x @@ -89,5 +100,5 @@ jobs: - name: 'Semantic release' run: npx semantic-release env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ steps.app_token.outputs.token }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}