Skip to content
Draft
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
5bd14c0
chore: update to the latest algosdk decoupled packages
neilcampbell Dec 24, 2025
35c080f
chore: updating to the latest libs
neilcampbell Dec 29, 2025
bb7f710
chore: update alpha versions
neilcampbell Dec 30, 2025
05be1fa
fix: update typescript template generator from CJS to ESM and fixes a…
p2arthur Feb 27, 2026
32449e6
chore: update generated template snapshots to use ESM setup instead o…
p2arthur Feb 27, 2026
1c5bafb
chore: remove ESM migration decision report
p2arthur Feb 27, 2026
2b8f3a3
chore: update transpiler executor from ts-node to tsx for better ESM …
p2arthur Mar 5, 2026
55de8c3
chore: add jest as generated template explicit dependency - It was mi…
p2arthur Mar 7, 2026
e210618
chore: update deploy script to watch for .env changes and hot reload
p2arthur Mar 7, 2026
0a5130e
chore: remove ts-node dependency
p2arthur Mar 7, 2026
a39bb96
chore: re-add ts-node as typescript template dependency because jest …
p2arthur Mar 7, 2026
2e242e6
chore: update generated templates
p2arthur Mar 7, 2026
270c4a5
feat: enable commiting changelog to github source code
p2arthur Mar 7, 2026
bd3f029
chore: remove ts-node dependency by making jest configuration js first
p2arthur Mar 12, 2026
3bfbad2
feat: migrate from poetry to uv - support upcoming uv-first algokit v…
aorumbayev Mar 23, 2026
6d91235
fix: update template CI for uv workflow
aorumbayev Mar 23, 2026
2e44a45
chore: refresh generated example lockfiles
aorumbayev Mar 23, 2026
2c13ac1
fix: restore deploy config generation
aorumbayev Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def deploy() -> None:
deployer_ = algorand.account.from_environment("DEPLOYER")

factory = algorand.client.get_typed_app_factory(
{{ contract_name.split('_')|map('capitalize')|join }}Factory, default_sender=deployer_.address
{{ contract_name.split('_')|map('capitalize')|join }}Factory, default_sender=deployer_.addr
)

app_client, result = factory.deploy(
Expand All @@ -31,7 +31,7 @@ def deploy() -> None:
algorand.send.payment(
algokit_utils.PaymentParams(
amount=algokit_utils.AlgoAmount(algo=1),
sender=deployer_.address,
sender=deployer_.addr,
receiver=app_client.app_address,
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ package-mode = false

[tool.poetry.dependencies]
python = "^3.12"
algokit-utils = "^4.0.0"
algokit-utils = "^5.0.0a13"
python-dotenv = "^1.0.0"
algorand-python = "^3"
algorand-python-testing = "^1"
algorand-python-testing = {git = "https://github.com/algorandfoundation/algorand-python-testing.git", branch = "refactor/util-v5"}

[tool.poetry.group.dev.dependencies]
algokit-client-generator = "^2.1.0"
algokit-client-generator = "^3.0.0a3"
black = {extras = ["d"], version = "*"}
ruff = "^0.9.4"
mypy = "^1"
Expand Down Expand Up @@ -59,9 +59,8 @@ disallow_any_unimported = true
disallow_any_expr = true
disallow_any_decorated = true
disallow_any_explicit = true
untyped_calls_exclude = ["algosdk"]
# Remove if you prefer to use mypy's default behavior against
# untyped algosdk types
# untyped types
[[tool.mypy.overrides]]
module = "tests.*"
disallow_any_expr = false
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def deploy() -> None:
deployer_ = algorand.account.from_environment("DEPLOYER")

factory = algorand.client.get_typed_app_factory(
CoolContractFactory, default_sender=deployer_.address
CoolContractFactory, default_sender=deployer_.addr
)

app_client, result = factory.deploy(
Expand All @@ -31,7 +31,7 @@ def deploy() -> None:
algorand.send.payment(
algokit_utils.PaymentParams(
amount=algokit_utils.AlgoAmount(algo=1),
sender=deployer_.address,
sender=deployer_.addr,
receiver=app_client.app_address,
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def deploy() -> None:
deployer_ = algorand.account.from_environment("DEPLOYER")

factory = algorand.client.get_typed_app_factory(
HelloWorldFactory, default_sender=deployer_.address
HelloWorldFactory, default_sender=deployer_.addr
)

app_client, result = factory.deploy(
Expand All @@ -31,7 +31,7 @@ def deploy() -> None:
algorand.send.payment(
algokit_utils.PaymentParams(
amount=algokit_utils.AlgoAmount(algo=1),
sender=deployer_.address,
sender=deployer_.addr,
receiver=app_client.app_address,
)
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import algokit_utils
import pytest
from algokit_utils import (
AddressWithSigners,
AlgoAmount,
AlgorandClient,
SigningAccount,
)

from smart_contracts.artifacts.hello_world.hello_world_client import (
Expand All @@ -13,20 +13,20 @@


@pytest.fixture()
def deployer(algorand_client: AlgorandClient) -> SigningAccount:
def deployer(algorand_client: AlgorandClient) -> AddressWithSigners:
account = algorand_client.account.from_environment("DEPLOYER")
algorand_client.account.ensure_funded_from_environment(
account_to_fund=account.address, min_spending_balance=AlgoAmount.from_algo(10)
account_to_fund=account.addr, min_spending_balance=AlgoAmount.from_algo(10)
)
return account


@pytest.fixture()
def hello_world_client(
algorand_client: AlgorandClient, deployer: SigningAccount
algorand_client: AlgorandClient, deployer: AddressWithSigners
) -> HelloWorldClient:
factory = algorand_client.client.get_typed_app_factory(
HelloWorldFactory, default_sender=deployer.address
HelloWorldFactory, default_sender=deployer.addr
)

client, _ = factory.deploy(
Expand All @@ -52,4 +52,4 @@ def test_simulate_says_hello_with_correct_budget_consumed(
)
assert result.returns[0].value == "Hello, World"
assert result.returns[1].value == "Hello, Jane"
assert result.simulate_response["txn-groups"][0]["app-budget-consumed"] < 100
assert result.simulate_response.txn_groups[0].app_budget_consumed < 100
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@
import type { Config } from 'jest'

const config: Config = {
preset: 'ts-jest',
preset: 'ts-jest/presets/default-esm',
verbose: true,
transform: {
'^.+\\.tsx?$': 'ts-jest',
'^.+\\.tsx?$': ['ts-jest', { useESM: true }],
},
extensionsToTreatAsEsm: ['.ts'],
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1',
},
testPathIgnorePatterns: ['node_modules', '.venv', 'coverage'],
testTimeout: 10000,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,29 @@
"version": "1.0.0",
"description": "Smart contract deployer",
"main": "index.ts",
"type": "module",
"scripts": {
"deploy": "ts-node-dev --transpile-only --watch .env -r dotenv/config smart_contracts/index.ts",
"deploy:ci": "ts-node --transpile-only -r dotenv/config smart_contracts/index.ts",
"test": "jest --coverage",
"deploy": "tsx watch -r dotenv/config smart_contracts/index.ts",
"deploy:ci": "tsx -r dotenv/config smart_contracts/index.ts",
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage",
"format": "prettier --write ."
Comment thread
p2arthur marked this conversation as resolved.
Outdated
},
"engines": {
"node": ">=20.0",
"npm": ">=9.0"
},
"dependencies": {
"@algorandfoundation/algokit-utils": "^9.0.0",
"@algorandfoundation/algokit-utils-debug": "^1.0.2",
"algosdk": "^3.0.0"
"@algorandfoundation/algokit-utils": "^10.0.0-alpha.27",
"@algorandfoundation/algokit-utils-debug": "^2.0.0-alpha.2"
},
"devDependencies": {
"@algorandfoundation/algokit-client-generator": "^6.0.0",
"@algorandfoundation/algokit-client-generator": "^7.0.0-alpha.5",
"@types/jest": "^29.5.11",
"dotenv": "^16.0.3",
"prettier": "^2.8.4",
"ts-jest": "^29.1.1",
"ts-node-dev": "^2.0.0",
"typescript": "^4.9.5"
"ts-node": "^10.9.2",
"tsx": "^4.19.3",
"typescript": "^5.7.3"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ package-mode = false

[tool.poetry.dependencies]
python = "^3.12"
algokit-utils = "^4.0.0"
algokit-utils = "^5.0.0a13"
python-dotenv = "^1.0.0"
algorand-python = "^3"
algorand-python-testing = "^1"
algorand-python-testing = {git = "https://github.com/algorandfoundation/algorand-python-testing.git", branch = "refactor/util-v5"}

[tool.poetry.group.dev.dependencies]
black = {extras = ["d"], version = "*"}
Expand Down Expand Up @@ -53,9 +53,8 @@ disallow_any_unimported = true
disallow_any_expr = true
disallow_any_decorated = true
disallow_any_explicit = true
untyped_calls_exclude = ["algosdk"]
# Remove if you prefer to use mypy's default behavior against
# untyped algosdk types
# untyped types
[[tool.mypy.overrides]]
module = "tests.*"
disallow_any_expr = false
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import * as fs from 'fs'
import * as path from 'path'
import { fileURLToPath, pathToFileURL } from 'url'
import { consoleLogger } from '@algorandfoundation/algokit-utils/types/logging'
import { Config } from '@algorandfoundation/algokit-utils'
// import { registerDebugEventHandlers } from '@algorandfoundation/algokit-utils-debug' // Uncomment to enable persisting artifacts required by AlgoKit AVM Debugger
Expand All @@ -15,13 +16,16 @@ Config.configure({
// registerDebugEventHandlers() // Uncomment to enable persisting artifacts required by AlgoKit AVM Debugger

// base directory
const baseDir = path.resolve(__dirname)
const baseDir = path.dirname(fileURLToPath(import.meta.url))

// function to validate and dynamically import a module
async function importDeployerIfExists(dir: string) {
const deployerPath = path.resolve(dir, 'deploy-config')
if (fs.existsSync(deployerPath + '.ts') || fs.existsSync(deployerPath + '.js')) {
const deployer = await import(deployerPath)
const tsPath = path.resolve(dir, 'deploy-config.ts')
const jsPath = path.resolve(dir, 'deploy-config.js')
const deployerPath = fs.existsSync(tsPath) ? tsPath : fs.existsSync(jsPath) ? jsPath : undefined

if (deployerPath) {
const deployer = await import(pathToFileURL(deployerPath).href)
return { ...deployer, name: path.basename(dir) }
}
return null
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { algorandFixture } from '@algorandfoundation/algokit-utils/testing'
import { HelloWorldFactory } from '../smart_contracts/artifacts/hello_world/HelloWorldClient'
import { Account, Algodv2, Indexer } from 'algosdk'
import { Config } from '@algorandfoundation/algokit-utils'
import { TransactionSignerAccount } from '@algorandfoundation/algokit-utils/types/account'
import { AddressWithSigners } from '@algorandfoundation/algokit-utils/transact'

describe('hello world contract', () => {
const localnet = algorandFixture()
Expand All @@ -14,7 +13,7 @@ describe('hello world contract', () => {
})
beforeEach(localnet.newScope)

const deploy = async (account: Account & TransactionSignerAccount) => {
const deploy = async (account: AddressWithSigners) => {
const factory = localnet.algorand.client.getTypedAppFactory(HelloWorldFactory, {
defaultSender: account.addr,
defaultSigner: account.signer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
"forceConsistentCasingInFileNames": true,
"allowJs": false,
"allowSyntheticDefaultImports": true,
"module": "CommonJS",
"moduleResolution": "Node",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def deploy() -> None:
deployer_ = algorand.account.from_environment("DEPLOYER")

factory = algorand.client.get_typed_app_factory(
{{ contract_name.split('_')|map('capitalize')|join }}Factory, default_sender=deployer_.address
{{ contract_name.split('_')|map('capitalize')|join }}Factory, default_sender=deployer_.addr
)

app_client, result = factory.deploy(
Expand All @@ -31,7 +31,7 @@ def deploy() -> None:
algorand.send.payment(
algokit_utils.PaymentParams(
amount=algokit_utils.AlgoAmount(algo=1),
sender=deployer_.address,
sender=deployer_.addr,
receiver=app_client.app_address,
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ package-mode = false

[tool.poetry.dependencies]
python = "^3.12"
algokit-utils = "^4.0.0"
algokit-utils = "^5.0.0a13"
python-dotenv = "^1.0.0"
algorand-python = "^3"
algorand-python-testing = "^1"
algorand-python-testing = {git = "https://github.com/algorandfoundation/algorand-python-testing.git", branch = "refactor/util-v5"}

[tool.poetry.group.dev.dependencies]
algokit-client-generator = "^2.1.0"
algokit-client-generator = "^3.0.0a3"
puyapy = "*"

[build-system]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def deploy() -> None:
deployer_ = algorand.account.from_environment("DEPLOYER")

factory = algorand.client.get_typed_app_factory(
CoolContractFactory, default_sender=deployer_.address
CoolContractFactory, default_sender=deployer_.addr
)

app_client, result = factory.deploy(
Expand All @@ -31,7 +31,7 @@ def deploy() -> None:
algorand.send.payment(
algokit_utils.PaymentParams(
amount=algokit_utils.AlgoAmount(algo=1),
sender=deployer_.address,
sender=deployer_.addr,
receiver=app_client.app_address,
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def deploy() -> None:
deployer_ = algorand.account.from_environment("DEPLOYER")

factory = algorand.client.get_typed_app_factory(
HelloWorldFactory, default_sender=deployer_.address
HelloWorldFactory, default_sender=deployer_.addr
)

app_client, result = factory.deploy(
Expand All @@ -31,7 +31,7 @@ def deploy() -> None:
algorand.send.payment(
algokit_utils.PaymentParams(
amount=algokit_utils.AlgoAmount(algo=1),
sender=deployer_.address,
sender=deployer_.addr,
receiver=app_client.app_address,
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@
"version": "1.0.0",
"description": "Smart contract deployer",
"main": "index.ts",
"type": "module",
"scripts": {
"deploy": "ts-node-dev --transpile-only --watch .env -r dotenv/config smart_contracts/index.ts",
"deploy:ci": "ts-node --transpile-only -r dotenv/config smart_contracts/index.ts",
"deploy": "tsx watch -r dotenv/config smart_contracts/index.ts",
"deploy:ci": "tsx -r dotenv/config smart_contracts/index.ts",
Comment thread
p2arthur marked this conversation as resolved.
Outdated
"format": "prettier --write ."
},
"engines": {
"node": ">=20.0",
"npm": ">=9.0"
},
"dependencies": {
"@algorandfoundation/algokit-utils": "^9.0.0",
"@algorandfoundation/algokit-utils-debug": "^1.0.2",
"algosdk": "^3.0.0"
"@algorandfoundation/algokit-utils": "^10.0.0-alpha.27",
"@algorandfoundation/algokit-utils-debug": "^2.0.0-alpha.2"
},
"devDependencies": {
"@algorandfoundation/algokit-client-generator": "^6.0.0",
"@algorandfoundation/algokit-client-generator": "^7.0.0-alpha.5",
"dotenv": "^16.0.3",
"prettier": "^2.8.4",
"ts-node-dev": "^2.0.0",
"typescript": "^4.9.5"
"tsx": "^4.19.3",
"typescript": "^5.7.3"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ package-mode = false

[tool.poetry.dependencies]
python = "^3.12"
algokit-utils = "^4.0.0"
algokit-utils = "^5.0.0a13"
python-dotenv = "^1.0.0"
algorand-python = "^3"
algorand-python-testing = "^1"
algorand-python-testing = {git = "https://github.com/algorandfoundation/algorand-python-testing.git", branch = "refactor/util-v5"}

[tool.poetry.group.dev.dependencies]
puyapy = "*"
Expand Down
Loading