@algorandfoundation/algokit-utils 7.0.0-beta.1 → 7.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/account/account.d.ts +7 -7
- package/account/account.js +7 -7
- package/account/account.mjs +7 -7
- package/account/get-account.d.ts +2 -2
- package/account/get-account.js +1 -1
- package/account/get-account.mjs +1 -1
- package/account/get-dispenser-account.d.ts +1 -1
- package/account/get-dispenser-account.js +1 -1
- package/account/get-dispenser-account.mjs +1 -1
- package/account/mnemonic-account.d.ts +1 -1
- package/account/mnemonic-account.js +1 -1
- package/account/mnemonic-account.mjs +1 -1
- package/app-deploy.d.ts +18 -1
- package/app-deploy.d.ts.map +1 -1
- package/app-deploy.js +142 -333
- package/app-deploy.js.map +1 -1
- package/app-deploy.mjs +145 -336
- package/app-deploy.mjs.map +1 -1
- package/app.d.ts +38 -1
- package/app.d.ts.map +1 -1
- package/app.js +113 -370
- package/app.js.map +1 -1
- package/app.mjs +114 -371
- package/app.mjs.map +1 -1
- package/asset.d.ts +5 -5
- package/asset.js +5 -5
- package/asset.mjs +5 -5
- package/debugging/debugging.js +2 -2
- package/debugging/debugging.js.map +1 -1
- package/debugging/debugging.mjs +2 -2
- package/debugging/debugging.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js +12 -12
- package/index.mjs +1 -1
- package/localnet/get-kmd-wallet-account.d.ts +1 -1
- package/localnet/get-kmd-wallet-account.js +1 -1
- package/localnet/get-kmd-wallet-account.mjs +1 -1
- package/localnet/get-localnet-dispenser-account.d.ts +1 -1
- package/localnet/get-localnet-dispenser-account.js +1 -1
- package/localnet/get-localnet-dispenser-account.mjs +1 -1
- package/localnet/get-or-create-kmd-wallet-account.d.ts +1 -1
- package/localnet/get-or-create-kmd-wallet-account.js +1 -1
- package/localnet/get-or-create-kmd-wallet-account.mjs +1 -1
- package/localnet/is-localnet.d.ts +1 -1
- package/localnet/is-localnet.js +1 -1
- package/localnet/is-localnet.mjs +1 -1
- package/network-client.d.ts +2 -2
- package/network-client.d.ts.map +1 -1
- package/network-client.js +2 -2
- package/network-client.mjs +2 -2
- package/package.json +1 -1
- package/testing/fixtures/algorand-fixture.js +12 -12
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs +12 -12
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/transaction/legacy-bridge.d.ts +31 -5
- package/transaction/legacy-bridge.d.ts.map +1 -1
- package/transaction/legacy-bridge.js +99 -5
- package/transaction/legacy-bridge.js.map +1 -1
- package/transaction/legacy-bridge.mjs +98 -7
- package/transaction/legacy-bridge.mjs.map +1 -1
- package/transfer/transfer-algos.d.ts +1 -1
- package/transfer/transfer-algos.js +1 -1
- package/transfer/transfer-algos.mjs +1 -1
- package/transfer/transfer.d.ts +1 -1
- package/transfer/transfer.js +1 -1
- package/transfer/transfer.mjs +1 -1
- package/types/account-manager.d.ts +1 -1
- package/types/account-manager.d.ts.map +1 -1
- package/types/algorand-client-transaction-creator.d.ts +450 -20
- package/types/algorand-client-transaction-creator.d.ts.map +1 -1
- package/types/algorand-client-transaction-creator.js +406 -22
- package/types/algorand-client-transaction-creator.js.map +1 -1
- package/types/algorand-client-transaction-creator.mjs +406 -22
- package/types/algorand-client-transaction-creator.mjs.map +1 -1
- package/types/algorand-client-transaction-sender.d.ts +750 -24
- package/types/algorand-client-transaction-sender.d.ts.map +1 -1
- package/types/algorand-client-transaction-sender.js +426 -12
- package/types/algorand-client-transaction-sender.js.map +1 -1
- package/types/algorand-client-transaction-sender.mjs +426 -12
- package/types/algorand-client-transaction-sender.mjs.map +1 -1
- package/types/algorand-client.d.ts +8 -0
- package/types/algorand-client.d.ts.map +1 -1
- package/types/algorand-client.js +14 -1
- package/types/algorand-client.js.map +1 -1
- package/types/algorand-client.mjs +14 -1
- package/types/algorand-client.mjs.map +1 -1
- package/types/app-client.d.ts +13 -1
- package/types/app-client.d.ts.map +1 -1
- package/types/app-client.js +8 -5
- package/types/app-client.js.map +1 -1
- package/types/app-client.mjs +9 -6
- package/types/app-client.mjs.map +1 -1
- package/types/app-deployer.d.ts +121 -0
- package/types/app-deployer.d.ts.map +1 -0
- package/types/app-deployer.js +354 -0
- package/types/app-deployer.js.map +1 -0
- package/types/app-deployer.mjs +352 -0
- package/types/app-deployer.mjs.map +1 -0
- package/types/app-manager.d.ts +235 -0
- package/types/app-manager.d.ts.map +1 -0
- package/types/app-manager.js +336 -0
- package/types/app-manager.js.map +1 -0
- package/types/app-manager.mjs +334 -0
- package/types/app-manager.mjs.map +1 -0
- package/types/app.d.ts +42 -7
- package/types/app.d.ts.map +1 -1
- package/types/app.js +1 -1
- package/types/app.js.map +1 -1
- package/types/app.mjs +1 -1
- package/types/app.mjs.map +1 -1
- package/types/client-manager.d.ts +2 -0
- package/types/client-manager.d.ts.map +1 -1
- package/types/client-manager.js +4 -0
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs +4 -0
- package/types/client-manager.mjs.map +1 -1
- package/types/composer.d.ts +150 -39
- package/types/composer.d.ts.map +1 -1
- package/types/composer.js +218 -62
- package/types/composer.js.map +1 -1
- package/types/composer.mjs +218 -62
- package/types/composer.mjs.map +1 -1
- package/types/expand.d.ts +8 -0
- package/types/expand.d.ts.map +1 -0
- package/types/expand.js +3 -0
- package/types/expand.js.map +1 -0
- package/types/expand.mjs +2 -0
- package/types/expand.mjs.map +1 -0
- package/types/transaction.d.ts +3 -0
- package/types/transaction.d.ts.map +1 -1
package/app-deploy.js
CHANGED
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
var algosdk = require('algosdk');
|
|
4
4
|
var app = require('./app.js');
|
|
5
|
-
var
|
|
6
|
-
var indexerLookup = require('./indexer-lookup.js');
|
|
5
|
+
var legacyBridge = require('./transaction/legacy-bridge.js');
|
|
7
6
|
var transaction = require('./transaction/transaction.js');
|
|
7
|
+
var types_algorandClientTransactionSender = require('./types/algorand-client-transaction-sender.js');
|
|
8
8
|
var types_app = require('./types/app.js');
|
|
9
|
+
var types_appDeployer = require('./types/app-deployer.js');
|
|
10
|
+
var types_appManager = require('./types/app-manager.js');
|
|
11
|
+
var types_assetManager = require('./types/asset-manager.js');
|
|
12
|
+
var types_composer = require('./types/composer.js');
|
|
9
13
|
|
|
10
|
-
var AtomicTransactionComposer = algosdk.AtomicTransactionComposer;
|
|
11
|
-
var getApplicationAddress = algosdk.getApplicationAddress;
|
|
12
|
-
var modelsv2 = algosdk.modelsv2;
|
|
13
|
-
var TransactionType = algosdk.TransactionType;
|
|
14
14
|
/**
|
|
15
|
+
* @deprecated Use `algorand.appDeployer.deploy` instead.
|
|
16
|
+
*
|
|
15
17
|
* Idempotently deploy (create, update/delete if changed) an app against the given name via the given creator account, including deploy-time template placeholder substitutions.
|
|
16
18
|
*
|
|
17
19
|
* To understand the architecture decisions behind this functionality please see https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md
|
|
@@ -27,230 +29,125 @@ var TransactionType = algosdk.TransactionType;
|
|
|
27
29
|
* @returns The app reference of the new/existing app
|
|
28
30
|
*/
|
|
29
31
|
async function deployApp(deployment, algod, indexer) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
config.Config.getLogger(appParams.suppressLog).info(`Idempotently deploying app "${metadata.name}" from creator ${transaction.getSenderAddress(appParams.from)} using ${appParams.approvalProgram.length} bytes of teal code and ${appParams.clearStateProgram.length} bytes of teal code`);
|
|
38
|
-
const compiledApproval = typeof appParams.approvalProgram === 'string'
|
|
39
|
-
? await performTemplateSubstitutionAndCompile(appParams.approvalProgram, algod, deployTimeParameters, metadata)
|
|
40
|
-
: undefined;
|
|
41
|
-
appParams.approvalProgram = compiledApproval ? compiledApproval.compiledBase64ToBytes : appParams.approvalProgram;
|
|
42
|
-
const compiledClear = typeof appParams.clearStateProgram === 'string'
|
|
43
|
-
? await performTemplateSubstitutionAndCompile(appParams.clearStateProgram, algod, deployTimeParameters)
|
|
44
|
-
: undefined;
|
|
45
|
-
appParams.clearStateProgram = compiledClear ? compiledClear.compiledBase64ToBytes : appParams.clearStateProgram;
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
47
|
-
const apps = existingDeployments ?? (await getCreatorAppsByName(appParams.from, indexer));
|
|
48
|
-
const create = async (atc) => {
|
|
49
|
-
const result = await app.createApp({
|
|
50
|
-
...appParams,
|
|
51
|
-
onCompleteAction: createOnCompleteAction,
|
|
52
|
-
args: createArgs,
|
|
53
|
-
note: getAppDeploymentTransactionNote(metadata),
|
|
54
|
-
atc,
|
|
55
|
-
skipWaiting: false,
|
|
56
|
-
}, algod);
|
|
57
|
-
return {
|
|
58
|
-
transaction: result.transaction,
|
|
59
|
-
transactions: result.transactions,
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
61
|
-
confirmation: result.confirmation,
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
63
|
-
confirmations: result.confirmations,
|
|
64
|
-
return: result.return,
|
|
65
|
-
appId: result.appId,
|
|
66
|
-
appAddress: result.appAddress,
|
|
67
|
-
createdMetadata: metadata,
|
|
68
|
-
createdRound: Number(result.confirmation?.confirmedRound),
|
|
69
|
-
updatedRound: Number(result.confirmation?.confirmedRound),
|
|
70
|
-
...metadata,
|
|
71
|
-
deleted: false,
|
|
72
|
-
operationPerformed: 'create',
|
|
73
|
-
compiledApproval,
|
|
74
|
-
compiledClear,
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
const existingApp = apps.apps[metadata.name];
|
|
78
|
-
if (!existingApp || existingApp.deleted) {
|
|
79
|
-
config.Config.getLogger(appParams.suppressLog).info(`App ${metadata.name} not found in apps created by ${transaction.getSenderAddress(appParams.from)}; deploying app with version ${metadata.version}.`);
|
|
80
|
-
return await create();
|
|
81
|
-
}
|
|
82
|
-
config.Config.getLogger(appParams.suppressLog).info(`Existing app ${metadata.name} found by creator ${transaction.getSenderAddress(appParams.from)}, with app id ${existingApp.appId} and version ${existingApp.version}.`);
|
|
83
|
-
const existingAppRecord = await app.getAppById(existingApp.appId, algod);
|
|
84
|
-
const existingApproval = Buffer.from(existingAppRecord.params.approvalProgram).toString('base64');
|
|
85
|
-
const existingClear = Buffer.from(existingAppRecord.params.clearStateProgram).toString('base64');
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
87
|
-
const existingGlobalSchema = existingAppRecord.params.globalStateSchema;
|
|
88
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
89
|
-
const existingLocalSchema = existingAppRecord.params.localStateSchema;
|
|
90
|
-
const newGlobalSchema = new modelsv2.ApplicationStateSchema({
|
|
91
|
-
numByteSlice: appParams.schema.globalByteSlices,
|
|
92
|
-
numUint: appParams.schema.globalInts,
|
|
93
|
-
});
|
|
94
|
-
const newLocalSchema = new modelsv2.ApplicationStateSchema({
|
|
95
|
-
numByteSlice: appParams.schema.localByteSlices,
|
|
96
|
-
numUint: appParams.schema.localInts,
|
|
32
|
+
const appManager = new types_appManager.AppManager(algod);
|
|
33
|
+
const newGroup = () => new types_composer.default({
|
|
34
|
+
algod,
|
|
35
|
+
getSigner: () => transaction.getSenderTransactionSigner(deployment.from),
|
|
36
|
+
getSuggestedParams: async () => await transaction.getTransactionParams(deployment.transactionParams, algod),
|
|
37
|
+
appManager,
|
|
97
38
|
});
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
suppressLog: appParams.suppressLog,
|
|
117
|
-
skipSending: true,
|
|
118
|
-
atc,
|
|
119
|
-
}, algod);
|
|
120
|
-
// Ensure create and delete happen atomically
|
|
121
|
-
const { transactions, confirmations, returns } = await transaction.sendAtomicTransactionComposer({
|
|
122
|
-
atc,
|
|
123
|
-
sendParams: {
|
|
124
|
-
maxRoundsToWaitForConfirmation: appParams.maxRoundsToWaitForConfirmation,
|
|
125
|
-
skipWaiting: false,
|
|
126
|
-
suppressLog: true,
|
|
127
|
-
},
|
|
128
|
-
}, algod);
|
|
129
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
130
|
-
const createConfirmation = confirmations[createTransactions.length - 1];
|
|
131
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
132
|
-
const deleteConfirmation = confirmations[confirmations.length - 1];
|
|
133
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
134
|
-
const newAppIndex = createConfirmation.applicationIndex;
|
|
135
|
-
config.Config.getLogger(appParams.suppressLog).warn(`Sent transactions ${createTransaction.txID()} to create app with id ${newAppIndex} and ${deleteTransaction.txID()} to delete app with id ${existingApp.appId} from ${transaction.getSenderAddress(appParams.from)} account.`);
|
|
136
|
-
return {
|
|
137
|
-
transaction: createTransaction,
|
|
138
|
-
transactions: transactions,
|
|
139
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
140
|
-
confirmation: createConfirmation,
|
|
141
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
142
|
-
confirmations: confirmations,
|
|
143
|
-
return: returns?.[0],
|
|
144
|
-
deleteReturn: returns?.[1],
|
|
145
|
-
appId: newAppIndex,
|
|
146
|
-
appAddress: getApplicationAddress(newAppIndex),
|
|
147
|
-
createdMetadata: metadata,
|
|
148
|
-
createdRound: Number(createConfirmation.confirmedRound),
|
|
149
|
-
updatedRound: Number(createConfirmation.confirmedRound),
|
|
150
|
-
...metadata,
|
|
151
|
-
deleted: false,
|
|
152
|
-
deleteResult: { transaction: deleteTransaction, confirmation: deleteConfirmation },
|
|
153
|
-
operationPerformed: 'replace',
|
|
154
|
-
compiledApproval,
|
|
155
|
-
compiledClear,
|
|
156
|
-
};
|
|
39
|
+
const deployer = new types_appDeployer.AppDeployer(appManager, new types_algorandClientTransactionSender.AlgorandClientTransactionSender(newGroup, new types_assetManager.AssetManager(algod, newGroup), appManager), indexer);
|
|
40
|
+
const createParams = {
|
|
41
|
+
approvalProgram: deployment.approvalProgram,
|
|
42
|
+
clearStateProgram: deployment.clearStateProgram,
|
|
43
|
+
sender: transaction.getSenderAddress(deployment.from),
|
|
44
|
+
accountReferences: deployment.createArgs?.accounts?.map((a) => (typeof a === 'string' ? a : algosdk.encodeAddress(a.publicKey))),
|
|
45
|
+
appReferences: deployment.createArgs?.apps?.map((a) => BigInt(a)),
|
|
46
|
+
assetReferences: deployment.createArgs?.assets?.map((a) => BigInt(a)),
|
|
47
|
+
boxReferences: deployment.createArgs?.boxes
|
|
48
|
+
?.map(legacyBridge._getBoxReference)
|
|
49
|
+
?.map((r) => ({ appId: BigInt(r.appIndex), name: r.name })),
|
|
50
|
+
lease: deployment.createArgs?.lease,
|
|
51
|
+
rekeyTo: deployment.createArgs?.rekeyTo ? transaction.getSenderAddress(deployment.createArgs?.rekeyTo) : undefined,
|
|
52
|
+
staticFee: deployment.fee,
|
|
53
|
+
maxFee: deployment.maxFee,
|
|
54
|
+
extraProgramPages: deployment.schema.extraPages,
|
|
55
|
+
onComplete: app.getAppOnCompleteAction(deployment.createOnCompleteAction),
|
|
56
|
+
schema: deployment.schema,
|
|
157
57
|
};
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
transaction: result.transaction,
|
|
174
|
-
transactions: result.transactions,
|
|
175
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
176
|
-
confirmation: result.confirmation,
|
|
177
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
178
|
-
confirmations: result.confirmations,
|
|
179
|
-
return: result.return,
|
|
180
|
-
appId: existingApp.appId,
|
|
181
|
-
appAddress: existingApp.appAddress,
|
|
182
|
-
createdMetadata: existingApp.createdMetadata,
|
|
183
|
-
createdRound: existingApp.createdRound,
|
|
184
|
-
updatedRound: Number(result.confirmation?.confirmedRound),
|
|
185
|
-
...metadata,
|
|
186
|
-
deleted: false,
|
|
187
|
-
operationPerformed: 'update',
|
|
188
|
-
compiledApproval,
|
|
189
|
-
compiledClear,
|
|
190
|
-
};
|
|
58
|
+
const updateParams = {
|
|
59
|
+
approvalProgram: deployment.approvalProgram,
|
|
60
|
+
clearStateProgram: deployment.clearStateProgram,
|
|
61
|
+
sender: transaction.getSenderAddress(deployment.from),
|
|
62
|
+
accountReferences: deployment.updateArgs?.accounts?.map((a) => (typeof a === 'string' ? a : algosdk.encodeAddress(a.publicKey))),
|
|
63
|
+
appReferences: deployment.updateArgs?.apps?.map((a) => BigInt(a)),
|
|
64
|
+
assetReferences: deployment.updateArgs?.assets?.map((a) => BigInt(a)),
|
|
65
|
+
boxReferences: deployment.updateArgs?.boxes
|
|
66
|
+
?.map(legacyBridge._getBoxReference)
|
|
67
|
+
?.map((r) => ({ appId: BigInt(r.appIndex), name: r.name })),
|
|
68
|
+
lease: deployment.updateArgs?.lease,
|
|
69
|
+
rekeyTo: deployment.updateArgs?.rekeyTo ? transaction.getSenderAddress(deployment.updateArgs?.rekeyTo) : undefined,
|
|
70
|
+
staticFee: deployment.fee,
|
|
71
|
+
maxFee: deployment.maxFee,
|
|
72
|
+
onComplete: algosdk.OnApplicationComplete.UpdateApplicationOC,
|
|
191
73
|
};
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
74
|
+
const deleteParams = {
|
|
75
|
+
sender: transaction.getSenderAddress(deployment.from),
|
|
76
|
+
accountReferences: deployment.deleteArgs?.accounts?.map((a) => (typeof a === 'string' ? a : algosdk.encodeAddress(a.publicKey))),
|
|
77
|
+
appReferences: deployment.deleteArgs?.apps?.map((a) => BigInt(a)),
|
|
78
|
+
assetReferences: deployment.deleteArgs?.assets?.map((a) => BigInt(a)),
|
|
79
|
+
boxReferences: deployment.deleteArgs?.boxes
|
|
80
|
+
?.map(legacyBridge._getBoxReference)
|
|
81
|
+
?.map((r) => ({ appId: BigInt(r.appIndex), name: r.name })),
|
|
82
|
+
lease: deployment.deleteArgs?.lease,
|
|
83
|
+
rekeyTo: deployment.deleteArgs?.rekeyTo ? transaction.getSenderAddress(deployment.deleteArgs?.rekeyTo) : undefined,
|
|
84
|
+
staticFee: deployment.fee,
|
|
85
|
+
maxFee: deployment.maxFee,
|
|
86
|
+
onComplete: algosdk.OnApplicationComplete.DeleteApplicationOC,
|
|
87
|
+
};
|
|
88
|
+
const encoder = new TextEncoder();
|
|
89
|
+
const result = await deployer.deploy({
|
|
90
|
+
createParams: deployment.createArgs?.method
|
|
91
|
+
? ({
|
|
92
|
+
...createParams,
|
|
93
|
+
method: 'txnCount' in deployment.createArgs.method ? deployment.createArgs.method : new algosdk.ABIMethod(deployment.createArgs.method),
|
|
94
|
+
args: (await legacyBridge._getAppArgsForABICall(deployment.createArgs, deployment.from)).methodArgs,
|
|
95
|
+
})
|
|
96
|
+
: ({
|
|
97
|
+
...createParams,
|
|
98
|
+
args: 'appArgs' in (deployment?.createArgs ?? {})
|
|
99
|
+
? deployment.createArgs?.appArgs?.map((a) => (typeof a === 'string' ? encoder.encode(a) : a))
|
|
100
|
+
: undefined,
|
|
101
|
+
}),
|
|
102
|
+
updateParams: deployment.updateArgs?.method
|
|
103
|
+
? ({
|
|
104
|
+
...updateParams,
|
|
105
|
+
method: 'txnCount' in deployment.updateArgs.method ? deployment.updateArgs.method : new algosdk.ABIMethod(deployment.updateArgs.method),
|
|
106
|
+
args: (await legacyBridge._getAppArgsForABICall(deployment.updateArgs, deployment.from)).methodArgs,
|
|
107
|
+
})
|
|
108
|
+
: ({
|
|
109
|
+
...updateParams,
|
|
110
|
+
args: 'appArgs' in (deployment?.updateArgs ?? {})
|
|
111
|
+
? deployment.updateArgs?.appArgs?.map((a) => (typeof a === 'string' ? encoder.encode(a) : a))
|
|
112
|
+
: undefined,
|
|
113
|
+
}),
|
|
114
|
+
deleteParams: deployment.deleteArgs?.method
|
|
115
|
+
? ({
|
|
116
|
+
...deleteParams,
|
|
117
|
+
method: 'txnCount' in deployment.deleteArgs.method ? deployment.deleteArgs.method : new algosdk.ABIMethod(deployment.deleteArgs.method),
|
|
118
|
+
args: (await legacyBridge._getAppArgsForABICall(deployment.deleteArgs, deployment.from)).methodArgs,
|
|
119
|
+
})
|
|
120
|
+
: ({
|
|
121
|
+
...deleteParams,
|
|
122
|
+
args: 'appArgs' in (deployment?.deleteArgs ?? {})
|
|
123
|
+
? deployment.deleteArgs?.appArgs?.map((a) => (typeof a === 'string' ? encoder.encode(a) : a))
|
|
124
|
+
: undefined,
|
|
125
|
+
}),
|
|
126
|
+
metadata: deployment.metadata,
|
|
127
|
+
deployTimeParams: deployment.deployTimeParams,
|
|
128
|
+
onSchemaBreak: deployment.onSchemaBreak,
|
|
129
|
+
onUpdate: deployment.onUpdate,
|
|
130
|
+
existingDeployments: deployment.existingDeployments
|
|
131
|
+
? {
|
|
132
|
+
creator: deployment.existingDeployments.creator,
|
|
133
|
+
apps: Object.fromEntries(Object.entries(deployment.existingDeployments.apps).map(([name, app]) => [
|
|
134
|
+
name,
|
|
135
|
+
{ ...app, appId: BigInt(app.appId), createdRound: BigInt(app.createdRound), updatedRound: BigInt(app.updatedRound) },
|
|
136
|
+
])),
|
|
246
137
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
138
|
+
: undefined,
|
|
139
|
+
executeParams: {
|
|
140
|
+
maxRoundsToWaitForConfirmation: deployment.maxRoundsToWaitForConfirmation,
|
|
141
|
+
populateAppCallResources: deployment.populateAppCallResources,
|
|
142
|
+
suppressLog: deployment.suppressLog,
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
return { ...result, appId: Number(result.appId), createdRound: Number(result.createdRound), updatedRound: Number(result.updatedRound) };
|
|
252
146
|
}
|
|
253
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* @deprecated Use `before.numByteSlice < after.numByteSlice || before.numUint < after.numUint` instead.
|
|
149
|
+
*
|
|
150
|
+
* Returns true is there is a breaking change in the application state schema from before to after.
|
|
254
151
|
* i.e. if the schema becomes larger, since applications can't ask for more schema after creation.
|
|
255
152
|
* Otherwise, there is no error, the app just doesn't store data in the extra schema :(
|
|
256
153
|
*
|
|
@@ -262,6 +159,8 @@ function isSchemaIsBroken(before, after) {
|
|
|
262
159
|
return before.numByteSlice < after.numByteSlice || before.numUint < after.numUint;
|
|
263
160
|
}
|
|
264
161
|
/**
|
|
162
|
+
* @deprecated Use `algorand.appDeployer.getCreatorAppsByName` instead.
|
|
163
|
+
*
|
|
265
164
|
* Returns a lookup of name => app metadata (id, address, ...metadata) for all apps created by the given account that have an `AppDeployNote` in the transaction note of the creation transaction.
|
|
266
165
|
*
|
|
267
166
|
* **Note:** It's recommended this is only called once and then stored since it's a somewhat expensive operation (multiple indexer calls).
|
|
@@ -271,87 +170,18 @@ function isSchemaIsBroken(before, after) {
|
|
|
271
170
|
* @returns A name-based lookup of the app information (id, address)
|
|
272
171
|
*/
|
|
273
172
|
async function getCreatorAppsByName(creatorAccount, indexer) {
|
|
274
|
-
const
|
|
275
|
-
const creatorAddress = typeof creatorAccount !== 'string' ? transaction.getSenderAddress(creatorAccount) : creatorAccount;
|
|
276
|
-
// Extract all apps that account created
|
|
277
|
-
const createdApps = (await indexerLookup.lookupAccountCreatedApplicationByAddress(indexer, creatorAddress))
|
|
278
|
-
.map((a) => {
|
|
279
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
280
|
-
return { id: a.id, createdAtRound: a['created-at-round'], deleted: a.deleted };
|
|
281
|
-
})
|
|
282
|
-
.sort((a, b) => a.createdAtRound - b.createdAtRound);
|
|
283
|
-
// For each app that account created (in parallel)...
|
|
284
|
-
const apps = await Promise.all(createdApps.map(async (createdApp) => {
|
|
285
|
-
// Find any app transactions for that app in the round it was created (should always just be a single creation transaction)
|
|
286
|
-
const appTransactions = await indexerLookup.searchTransactions(indexer, (s) => s
|
|
287
|
-
.minRound(createdApp.createdAtRound)
|
|
288
|
-
.txType(TransactionType.appl)
|
|
289
|
-
.applicationID(createdApp.id)
|
|
290
|
-
.address(creatorAddress)
|
|
291
|
-
.addressRole('sender')
|
|
292
|
-
.notePrefix(Buffer.from(types_app.APP_DEPLOY_NOTE_DAPP).toString('base64')));
|
|
293
|
-
// Triple check the transaction is intact by filtering for the one we want:
|
|
294
|
-
// * application-id is 0 when the app is first created
|
|
295
|
-
// * also verify the sender to prevent a potential security risk
|
|
296
|
-
const appCreationTransaction = appTransactions.transactions.filter(
|
|
297
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
298
|
-
(t) => t['application-transaction']['application-id'] === 0 && t.sender === creatorAddress)[0];
|
|
299
|
-
const latestAppUpdateTransaction = appTransactions.transactions
|
|
300
|
-
.filter((t) => t.sender === creatorAddress)
|
|
301
|
-
.sort((a, b) => a['confirmed-round'] === b['confirmed-round']
|
|
302
|
-
? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
303
|
-
(b['intra-round-offset'] - a['intra-round-offset']) / 10
|
|
304
|
-
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
305
|
-
b['confirmed-round'] - a['confirmed-round'])[0];
|
|
306
|
-
if (!appCreationTransaction?.note)
|
|
307
|
-
// No note; ignoring
|
|
308
|
-
return null;
|
|
309
|
-
return { createdApp, appCreationTransaction, latestAppUpdateTransaction };
|
|
310
|
-
}));
|
|
311
|
-
apps
|
|
312
|
-
.filter((a) => a !== null)
|
|
313
|
-
.forEach((a) => {
|
|
314
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
315
|
-
const { createdApp, appCreationTransaction, latestAppUpdateTransaction } = a;
|
|
316
|
-
const parseNote = (note) => {
|
|
317
|
-
if (!note) {
|
|
318
|
-
// No note; ignoring...
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
const decoder = new TextDecoder();
|
|
322
|
-
const noteAsBase64 = decoder.decode(Buffer.from(note));
|
|
323
|
-
const noteAsString = Buffer.from(noteAsBase64, 'base64').toString('utf-8');
|
|
324
|
-
if (!noteAsString.startsWith(`${types_app.APP_DEPLOY_NOTE_DAPP}:j{`))
|
|
325
|
-
// Clearly not APP_DEPLOY JSON; ignoring...
|
|
326
|
-
return;
|
|
327
|
-
return JSON.parse(noteAsString.substring(types_app.APP_DEPLOY_NOTE_DAPP.length + 2));
|
|
328
|
-
};
|
|
329
|
-
try {
|
|
330
|
-
const creationNote = parseNote(appCreationTransaction.note);
|
|
331
|
-
const updateNote = parseNote(latestAppUpdateTransaction.note);
|
|
332
|
-
if (creationNote?.name) {
|
|
333
|
-
appLookup[creationNote.name] = {
|
|
334
|
-
appId: createdApp.id,
|
|
335
|
-
appAddress: getApplicationAddress(createdApp.id),
|
|
336
|
-
createdMetadata: creationNote,
|
|
337
|
-
createdRound: Number(appCreationTransaction['confirmed-round']),
|
|
338
|
-
...(updateNote ?? creationNote),
|
|
339
|
-
updatedRound: Number(latestAppUpdateTransaction?.['confirmed-round']),
|
|
340
|
-
deleted: createdApp.deleted ?? false,
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
catch (e) {
|
|
345
|
-
config.Config.logger.warn(`Received error trying to retrieve app with ${createdApp.id} for creator ${creatorAddress}; failing silently`, e);
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
});
|
|
173
|
+
const lookup = await new types_appDeployer.AppDeployer(undefined, undefined, indexer).getCreatorAppsByName(transaction.getSenderAddress(creatorAccount));
|
|
349
174
|
return {
|
|
350
|
-
creator:
|
|
351
|
-
apps:
|
|
175
|
+
creator: lookup.creator,
|
|
176
|
+
apps: Object.fromEntries(Object.entries(lookup.apps).map(([name, app]) => [
|
|
177
|
+
name,
|
|
178
|
+
{ ...app, appId: Number(app.appId), createdRound: Number(app.createdRound), updatedRound: Number(app.updatedRound) },
|
|
179
|
+
])),
|
|
352
180
|
};
|
|
353
181
|
}
|
|
354
182
|
/**
|
|
183
|
+
* @deprecated Use `{ dAppName: APP_DEPLOY_NOTE_DAPP, data: metadata, format: 'j' }` instead.
|
|
184
|
+
*
|
|
355
185
|
* Return the transaction note for an app deployment.
|
|
356
186
|
* @param metadata The metadata of the deployment
|
|
357
187
|
* @returns The transaction note as a utf-8 string
|
|
@@ -364,6 +194,8 @@ function getAppDeploymentTransactionNote(metadata) {
|
|
|
364
194
|
};
|
|
365
195
|
}
|
|
366
196
|
/**
|
|
197
|
+
* @deprecated Use `AppManager.replaceTealTemplateDeployTimeControlParams` instead
|
|
198
|
+
*
|
|
367
199
|
* Replaces deploy-time deployment control parameters within the given teal code.
|
|
368
200
|
*
|
|
369
201
|
* * `TMPL_UPDATABLE` for updatability / immutability control
|
|
@@ -377,21 +209,11 @@ function getAppDeploymentTransactionNote(metadata) {
|
|
|
377
209
|
* @returns The replaced TEAL code
|
|
378
210
|
*/
|
|
379
211
|
function replaceDeployTimeControlParams(tealCode, params) {
|
|
380
|
-
|
|
381
|
-
if (!tealCode.includes(types_app.UPDATABLE_TEMPLATE_NAME)) {
|
|
382
|
-
throw new Error(`Deploy-time updatability control requested for app deployment, but ${types_app.UPDATABLE_TEMPLATE_NAME} not present in TEAL code`);
|
|
383
|
-
}
|
|
384
|
-
tealCode = tealCode.replace(new RegExp(types_app.UPDATABLE_TEMPLATE_NAME, 'g'), (params.updatable ? 1 : 0).toString());
|
|
385
|
-
}
|
|
386
|
-
if (params.deletable !== undefined) {
|
|
387
|
-
if (!tealCode.includes(types_app.DELETABLE_TEMPLATE_NAME)) {
|
|
388
|
-
throw new Error(`Deploy-time deletability control requested for app deployment, but ${types_app.DELETABLE_TEMPLATE_NAME} not present in TEAL code`);
|
|
389
|
-
}
|
|
390
|
-
tealCode = tealCode.replace(new RegExp(types_app.DELETABLE_TEMPLATE_NAME, 'g'), (params.deletable ? 1 : 0).toString());
|
|
391
|
-
}
|
|
392
|
-
return tealCode;
|
|
212
|
+
return types_appManager.AppManager.replaceTealTemplateDeployTimeControlParams(tealCode, params);
|
|
393
213
|
}
|
|
394
214
|
/**
|
|
215
|
+
* @deprecated Use `AppManager.replaceTealTemplateParams` instead
|
|
216
|
+
*
|
|
395
217
|
* Performs template substitution of a teal file.
|
|
396
218
|
*
|
|
397
219
|
* Looks for `TMPL_{parameter}` for template replacements.
|
|
@@ -401,26 +223,11 @@ function replaceDeployTimeControlParams(tealCode, params) {
|
|
|
401
223
|
* @returns The TEAL code with replacements
|
|
402
224
|
*/
|
|
403
225
|
function performTemplateSubstitution(tealCode, templateParams) {
|
|
404
|
-
|
|
405
|
-
for (const key in templateParams) {
|
|
406
|
-
const value = templateParams[key];
|
|
407
|
-
const token = `TMPL_${key.replace(/^TMPL_/, '')}`;
|
|
408
|
-
// If this is a number, first replace any byte representations of the number
|
|
409
|
-
// These may appear in the TEAL in order to circumvent int compression and preserve PC values
|
|
410
|
-
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
411
|
-
tealCode = tealCode.replace(new RegExp(`(?<=bytes )${token}`, 'g'), `0x${value.toString(16).padStart(16, '0')}`);
|
|
412
|
-
// We could probably return here since mixing pushint and pushbytes is likely not going to happen, but might as well do both
|
|
413
|
-
}
|
|
414
|
-
tealCode = tealCode.replace(new RegExp(token, 'g'), typeof value === 'string'
|
|
415
|
-
? `0x${Buffer.from(value, 'utf-8').toString('hex')}`
|
|
416
|
-
: ArrayBuffer.isView(value)
|
|
417
|
-
? `0x${Buffer.from(value).toString('hex')}`
|
|
418
|
-
: value.toString());
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
return tealCode;
|
|
226
|
+
return types_appManager.AppManager.replaceTealTemplateParams(tealCode, templateParams);
|
|
422
227
|
}
|
|
423
228
|
/**
|
|
229
|
+
* @deprecated Use `algorand.appManager.compileTealTemplate` instead.
|
|
230
|
+
*
|
|
424
231
|
* Performs template substitution of a teal file and compiles it, returning the compiled result.
|
|
425
232
|
*
|
|
426
233
|
* Looks for `TMPL_{parameter}` for template replacements.
|
|
@@ -440,6 +247,8 @@ async function performTemplateSubstitutionAndCompile(tealCode, algod, templatePa
|
|
|
440
247
|
return await app.compileTeal(tealCode, algod);
|
|
441
248
|
}
|
|
442
249
|
/**
|
|
250
|
+
* @deprecated Use `AppManager.stripTealComments` instead.
|
|
251
|
+
*
|
|
443
252
|
* Remove comments from TEAL Code
|
|
444
253
|
*
|
|
445
254
|
* @param tealCode The TEAL logic to compile
|
package/app-deploy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-deploy.js","sources":["../src/app-deploy.ts"],"sourcesContent":[null],"names":["getSenderAddress","Config","createApp","getAppById","callApp","sendAtomicTransactionComposer","updateApp","OnSchemaBreak","OnUpdate","lookupAccountCreatedApplicationByAddress","searchTransactions","APP_DEPLOY_NOTE_DAPP","UPDATABLE_TEMPLATE_NAME","DELETABLE_TEMPLATE_NAME","compileTeal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-deploy.js","sources":["../src/app-deploy.ts"],"sourcesContent":[null],"names":["AppManager","AlgoKitComposer","getSenderTransactionSigner","getTransactionParams","AppDeployer","AlgorandClientTransactionSender","AssetManager","getSenderAddress","_getBoxReference","getAppOnCompleteAction","_getAppArgsForABICall","APP_DEPLOY_NOTE_DAPP","compileTeal"],"mappings":"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"}
|