@algorandfoundation/algokit-utils 1.0.0-beta.2 → 1.0.0-beta.21
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/{dist/account.d.ts → account.d.ts} +29 -31
- package/account.d.ts.map +1 -0
- package/{dist/account.js → account.js} +43 -43
- package/account.js.map +1 -0
- package/amount.d.ts +8 -0
- package/amount.d.ts.map +1 -0
- package/amount.js +24 -0
- package/amount.js.map +1 -0
- package/app.d.ts +51 -0
- package/app.d.ts.map +1 -0
- package/app.js +288 -0
- package/app.js.map +1 -0
- package/application-client.d.ts +10 -0
- package/application-client.d.ts.map +1 -0
- package/application-client.js +15 -0
- package/application-client.js.map +1 -0
- package/deploy-app.d.ts +93 -0
- package/deploy-app.d.ts.map +1 -0
- package/{dist/deploy-app.js → deploy-app.js} +129 -137
- package/deploy-app.js.map +1 -0
- package/index.d.ts +14 -0
- package/index.d.ts.map +1 -0
- package/{dist/index.js → index.js} +6 -4
- package/index.js.map +1 -0
- package/{dist/indexer-lookup.d.ts → indexer-lookup.d.ts} +1 -1
- package/{dist/indexer-lookup.d.ts.map → indexer-lookup.d.ts.map} +1 -1
- package/{dist/localnet.d.ts → localnet.d.ts} +4 -4
- package/localnet.d.ts.map +1 -0
- package/{dist/localnet.js → localnet.js} +10 -10
- package/localnet.js.map +1 -0
- package/{dist/network-client.d.ts → network-client.d.ts} +11 -20
- package/network-client.d.ts.map +1 -0
- package/{dist/network-client.js → network-client.js} +11 -11
- package/{dist/network-client.js.map → network-client.js.map} +1 -1
- package/package.json +4 -92
- package/testing/account.d.ts +14 -0
- package/testing/account.d.ts.map +1 -0
- package/testing/account.js +31 -0
- package/testing/account.js.map +1 -0
- package/testing/fixtures/algokit-log-capture-fixture.d.ts +19 -0
- package/testing/fixtures/algokit-log-capture-fixture.d.ts.map +1 -0
- package/testing/fixtures/algokit-log-capture-fixture.js +43 -0
- package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -0
- package/testing/fixtures/algorand-fixture.d.ts +20 -0
- package/testing/fixtures/algorand-fixture.d.ts.map +1 -0
- package/testing/fixtures/algorand-fixture.js +49 -0
- package/testing/fixtures/algorand-fixture.js.map +1 -0
- package/testing/fixtures/index.d.ts +3 -0
- package/testing/fixtures/index.d.ts.map +1 -0
- package/testing/fixtures/index.js +19 -0
- package/testing/fixtures/index.js.map +1 -0
- package/testing/index.d.ts +6 -0
- package/testing/index.d.ts.map +1 -0
- package/testing/index.js +22 -0
- package/testing/index.js.map +1 -0
- package/testing/indexer.d.ts +12 -0
- package/testing/indexer.d.ts.map +1 -0
- package/testing/indexer.js +39 -0
- package/testing/indexer.js.map +1 -0
- package/testing/test-logger.d.ts +39 -0
- package/testing/test-logger.d.ts.map +1 -0
- package/testing/test-logger.js +69 -0
- package/testing/test-logger.js.map +1 -0
- package/testing/transaction-logger.d.ts +29 -0
- package/testing/transaction-logger.d.ts.map +1 -0
- package/testing/transaction-logger.js +71 -0
- package/testing/transaction-logger.js.map +1 -0
- package/transaction.d.ts +80 -0
- package/transaction.d.ts.map +1 -0
- package/{dist/transaction.js → transaction.js} +88 -106
- package/transaction.js.map +1 -0
- package/transfer.d.ts +21 -0
- package/transfer.d.ts.map +1 -0
- package/transfer.js +65 -0
- package/transfer.js.map +1 -0
- package/types/account.d.ts +52 -0
- package/types/account.d.ts.map +1 -0
- package/types/account.js +86 -0
- package/types/account.js.map +1 -0
- package/types/algo-http-client-with-retry.d.ts.map +1 -0
- package/{dist → types}/algo-http-client-with-retry.js +2 -2
- package/types/algo-http-client-with-retry.js.map +1 -0
- package/{dist/algod-type.d.ts → types/algod.d.ts} +6 -7
- package/types/algod.d.ts.map +1 -0
- package/{dist/algod-type.js → types/algod.js} +1 -1
- package/types/algod.js.map +1 -0
- package/{dist/algo-amount.d.ts → types/amount.d.ts} +3 -1
- package/types/amount.d.ts.map +1 -0
- package/{dist/algo-amount.js → types/amount.js} +7 -1
- package/types/amount.js.map +1 -0
- package/types/app.d.ts +234 -0
- package/types/app.d.ts.map +1 -0
- package/types/app.js +32 -0
- package/types/app.js.map +1 -0
- package/types/application-client.d.ts +155 -0
- package/types/application-client.d.ts.map +1 -0
- package/types/application-client.js +348 -0
- package/types/application-client.js.map +1 -0
- package/types/appspec.d.ts +77 -0
- package/types/appspec.d.ts.map +1 -0
- package/types/appspec.js +15 -0
- package/types/appspec.js.map +1 -0
- package/types/config.d.ts +15 -0
- package/types/config.d.ts.map +1 -0
- package/types/config.js +27 -0
- package/types/config.js.map +1 -0
- package/{dist/indexer-type.d.ts → types/indexer.d.ts} +9 -10
- package/types/indexer.d.ts.map +1 -0
- package/{dist/indexer-type.js → types/indexer.js} +1 -1
- package/types/indexer.js.map +1 -0
- package/{dist/config.d.ts → types/logging.d.ts} +3 -15
- package/types/logging.d.ts.map +1 -0
- package/types/logging.js +27 -0
- package/types/logging.js.map +1 -0
- package/types/logic-error.d.ts +33 -0
- package/types/logic-error.d.ts.map +1 -0
- package/types/logic-error.js +46 -0
- package/types/logic-error.js.map +1 -0
- package/types/network-client.d.ts +11 -0
- package/types/network-client.d.ts.map +1 -0
- package/types/network-client.js +3 -0
- package/types/network-client.js.map +1 -0
- package/types/testing.d.ts +89 -0
- package/types/testing.d.ts.map +1 -0
- package/types/testing.js +3 -0
- package/types/testing.js.map +1 -0
- package/types/transaction.d.ts +67 -0
- package/types/transaction.d.ts.map +1 -0
- package/types/transaction.js +3 -0
- package/types/transaction.js.map +1 -0
- package/types/transfer.d.ts +32 -0
- package/types/transfer.d.ts.map +1 -0
- package/types/transfer.js +3 -0
- package/types/transfer.js.map +1 -0
- package/types/urlTokenBaseHTTPClient.d.ts.map +1 -0
- package/types/urlTokenBaseHTTPClient.js.map +1 -0
- package/LICENSE +0 -21
- package/README.md +0 -31
- package/dist/account.d.ts.map +0 -1
- package/dist/account.js.map +0 -1
- package/dist/algo-amount.d.ts.map +0 -1
- package/dist/algo-amount.js.map +0 -1
- package/dist/algo-http-client-with-retry.d.ts.map +0 -1
- package/dist/algo-http-client-with-retry.js.map +0 -1
- package/dist/algod-type.d.ts.map +0 -1
- package/dist/algod-type.js.map +0 -1
- package/dist/app.d.ts +0 -150
- package/dist/app.d.ts.map +0 -1
- package/dist/app.js +0 -160
- package/dist/app.js.map +0 -1
- package/dist/application-client.d.ts +0 -1
- package/dist/application-client.d.ts.map +0 -1
- package/dist/application-client.js +0 -69
- package/dist/application-client.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -28
- package/dist/config.js.map +0 -1
- package/dist/deploy-app.d.ts +0 -149
- package/dist/deploy-app.d.ts.map +0 -1
- package/dist/deploy-app.js.map +0 -1
- package/dist/index.d.ts +0 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/indexer-type.d.ts.map +0 -1
- package/dist/indexer-type.js.map +0 -1
- package/dist/localnet.d.ts.map +0 -1
- package/dist/localnet.js.map +0 -1
- package/dist/network-client.d.ts.map +0 -1
- package/dist/package.json +0 -20
- package/dist/transaction.d.ts +0 -147
- package/dist/transaction.d.ts.map +0 -1
- package/dist/transaction.js.map +0 -1
- package/dist/transfer.d.ts +0 -24
- package/dist/transfer.d.ts.map +0 -1
- package/dist/transfer.js +0 -33
- package/dist/transfer.js.map +0 -1
- package/dist/urlTokenBaseHTTPClient.d.ts.map +0 -1
- package/dist/urlTokenBaseHTTPClient.js.map +0 -1
- /package/{dist/indexer-lookup.js → indexer-lookup.js} +0 -0
- /package/{dist/indexer-lookup.js.map → indexer-lookup.js.map} +0 -0
- /package/{dist → types}/algo-http-client-with-retry.d.ts +0 -0
- /package/{dist → types}/urlTokenBaseHTTPClient.d.ts +0 -0
- /package/{dist → types}/urlTokenBaseHTTPClient.js +0 -0
package/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Algodv2 } from 'algosdk';
|
|
2
|
+
import { ApplicationClient, AppSpecAppDetails } from './types/application-client';
|
|
3
|
+
/**
|
|
4
|
+
* Create a new ApplicationClient instance
|
|
5
|
+
* @param appDetails The details of the app
|
|
6
|
+
* @param algod An algod instance
|
|
7
|
+
* @returns The application client
|
|
8
|
+
*/
|
|
9
|
+
export declare function getApplicationClient(appDetails: AppSpecAppDetails, algod: Algodv2): ApplicationClient;
|
|
10
|
+
//# sourceMappingURL=application-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-client.d.ts","sourceRoot":"","sources":["../src/application-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEjF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,qBAEjF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getApplicationClient = void 0;
|
|
4
|
+
const application_client_1 = require("./types/application-client");
|
|
5
|
+
/**
|
|
6
|
+
* Create a new ApplicationClient instance
|
|
7
|
+
* @param appDetails The details of the app
|
|
8
|
+
* @param algod An algod instance
|
|
9
|
+
* @returns The application client
|
|
10
|
+
*/
|
|
11
|
+
function getApplicationClient(appDetails, algod) {
|
|
12
|
+
return new application_client_1.ApplicationClient(appDetails, algod);
|
|
13
|
+
}
|
|
14
|
+
exports.getApplicationClient = getApplicationClient;
|
|
15
|
+
//# sourceMappingURL=application-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-client.js","sourceRoot":"","sources":["../src/application-client.ts"],"names":[],"mappings":";;;AACA,mEAAiF;AAEjF;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,UAA6B,EAAE,KAAc;IAChF,OAAO,IAAI,sCAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACjD,CAAC;AAFD,oDAEC"}
|
package/deploy-app.d.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Algodv2, Indexer } from 'algosdk';
|
|
2
|
+
import { ApplicationStateSchema } from './types/algod';
|
|
3
|
+
import { AppCompilationResult, AppDeploymentParams, AppDeployMetadata, AppLookup, AppMetadata, CompiledTeal, TealTemplateParameters } from './types/app';
|
|
4
|
+
import { ConfirmedTransactionResult, SendTransactionFrom } from './types/transaction';
|
|
5
|
+
/**
|
|
6
|
+
* Idempotently deploy (create, update/delete if changed) an app against the given name via the given creator account, including deploy-time template placeholder substitutions.
|
|
7
|
+
*
|
|
8
|
+
* 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
|
|
9
|
+
*
|
|
10
|
+
* **Note:** When using the return from this function be sure to check `operationPerformed` to get access to various return properties like `transaction`, `confirmation` and `deleteResult`.
|
|
11
|
+
*
|
|
12
|
+
* **Note:** if there is a breaking state schema change to an existing app (and `onSchemaBreak` is set to `'replace'`) the existing app will be deleted and re-created.
|
|
13
|
+
*
|
|
14
|
+
* **Note:** if there is an update (different TEAL code) to an existing app (and `onUpdate` is set to `'replace'`) the existing app will be deleted and re-created.
|
|
15
|
+
* @param deployment The arguments to control the app deployment
|
|
16
|
+
* @param algod An algod client
|
|
17
|
+
* @param indexer An indexer client, needed if `existingDeployments` not passed in
|
|
18
|
+
* @returns The app reference of the new/existing app
|
|
19
|
+
*/
|
|
20
|
+
export declare function deployApp(deployment: AppDeploymentParams, algod: Algodv2, indexer?: Indexer): Promise<Partial<AppCompilationResult> & ((ConfirmedTransactionResult & AppMetadata & {
|
|
21
|
+
operationPerformed: 'create' | 'update';
|
|
22
|
+
}) | (ConfirmedTransactionResult & AppMetadata & {
|
|
23
|
+
deleteResult: ConfirmedTransactionResult;
|
|
24
|
+
operationPerformed: 'replace';
|
|
25
|
+
}) | (AppMetadata & {
|
|
26
|
+
operationPerformed: 'nothing';
|
|
27
|
+
}))>;
|
|
28
|
+
/** Returns true is there is a breaking change in the application state schema from before to after.
|
|
29
|
+
* i.e. if the schema becomes larger, since applications can't ask for more schema after creation.
|
|
30
|
+
* Otherwise, there is no error, the app just doesn't store data in the extra schema :(
|
|
31
|
+
*
|
|
32
|
+
* @param before The existing schema
|
|
33
|
+
* @param after The new schema
|
|
34
|
+
* @returns Whether or not there is a breaking change
|
|
35
|
+
*/
|
|
36
|
+
export declare function isSchemaIsBroken(before: ApplicationStateSchema, after: ApplicationStateSchema): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Returns a lookup of name => app metadata (id, address, ...metadata) for all apps created by the given account that have an @see {AppDeployNote} in the transaction note of the creation transaction.
|
|
39
|
+
*
|
|
40
|
+
* **Note:** It's recommended this is only called once and then stored since it's a somewhat expensive operation (multiple indexer calls).
|
|
41
|
+
*
|
|
42
|
+
* @param creatorAccount The account (with private key loaded) or string address of an account that is the creator of the apps you want to search for
|
|
43
|
+
* @param indexer An indexer client
|
|
44
|
+
* @returns A name-based lookup of the app information (id, address)
|
|
45
|
+
*/
|
|
46
|
+
export declare function getCreatorAppsByName(creatorAccount: SendTransactionFrom | string, indexer: Indexer): Promise<AppLookup>;
|
|
47
|
+
/**
|
|
48
|
+
* Return the transaction note for an app deployment.
|
|
49
|
+
* @param metadata The metadata of the deployment
|
|
50
|
+
* @returns The transaction note as a utf-8 string
|
|
51
|
+
*/
|
|
52
|
+
export declare function getAppDeploymentTransactionNote(metadata: AppDeployMetadata): {
|
|
53
|
+
dAppName: string;
|
|
54
|
+
data: AppDeployMetadata;
|
|
55
|
+
format: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Replaces deploy-time deployment control parameters within the given teal code.
|
|
59
|
+
*
|
|
60
|
+
* @see {UPDATABLE_TEMPLATE_NAME}
|
|
61
|
+
* @see {DELETABLE_TEMPLATE_NAME}
|
|
62
|
+
*
|
|
63
|
+
* @param tealCode The TEAL code to substitute
|
|
64
|
+
* @param params The deploy-time deployment control parameter value to replace
|
|
65
|
+
* @returns The replaced TEAL code
|
|
66
|
+
*/
|
|
67
|
+
export declare function replaceDeployTimeControlParams(tealCode: string, params: {
|
|
68
|
+
updatable?: boolean;
|
|
69
|
+
deletable?: boolean;
|
|
70
|
+
}): string;
|
|
71
|
+
/**
|
|
72
|
+
* Performs template substitution of a teal file.
|
|
73
|
+
*
|
|
74
|
+
* Looks for `TMPL_{parameter}` for template replacements.
|
|
75
|
+
*
|
|
76
|
+
* @param tealCode The TEAL logic to compile
|
|
77
|
+
* @param templateParameters Any parameters to replace in the .teal file before compiling
|
|
78
|
+
* @returns The TEAL code with replacements
|
|
79
|
+
*/
|
|
80
|
+
export declare function performTemplateSubstitution(tealCode: string, templateParameters?: TealTemplateParameters): string;
|
|
81
|
+
/**
|
|
82
|
+
* Performs template substitution of a teal file and compiles it, returning the compiled result.
|
|
83
|
+
*
|
|
84
|
+
* Looks for `TMPL_{parameter}` for template replacements.
|
|
85
|
+
*
|
|
86
|
+
* @param tealCode The TEAL logic to compile
|
|
87
|
+
* @param algod An algod client
|
|
88
|
+
* @param templateParameters Any parameters to replace in the .teal file before compiling
|
|
89
|
+
* @param deploymentMetadata The deployment metadata the app will be deployed with
|
|
90
|
+
* @returns The information about the compiled code
|
|
91
|
+
*/
|
|
92
|
+
export declare function performTemplateSubstitutionAndCompile(tealCode: string, algod: Algodv2, templateParameters?: TealTemplateParameters, deploymentMetadata?: AppDeployMetadata): Promise<CompiledTeal>;
|
|
93
|
+
//# sourceMappingURL=deploy-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-app.d.ts","sourceRoot":"","sources":["../src/deploy-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAyB,OAAO,EAAmB,MAAM,SAAS,CAAA;AAKlF,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,WAAW,EAEX,YAAY,EAIZ,sBAAsB,EAEvB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAErF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,mBAAmB,EAC/B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CACR,OAAO,CAAC,oBAAoB,CAAC,GAC3B,CACI,CAAC,0BAA0B,GAAG,WAAW,GAAG;IAAE,kBAAkB,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAE,CAAC,GACxF,CAAC,0BAA0B,GAAG,WAAW,GAAG;IAAE,YAAY,EAAE,0BAA0B,CAAC;IAAC,kBAAkB,EAAE,SAAS,CAAA;CAAE,CAAC,GACxH,CAAC,WAAW,GAAG;IAAE,kBAAkB,EAAE,SAAS,CAAA;CAAE,CAAC,CACpD,CACJ,CAmTA;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,WAE7F;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,mBAAmB,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAyF7H;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,iBAAiB;;;;EAM1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,UAoBpH;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,sBAAsB,UAiBxG;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qCAAqC,CACzD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,kBAAkB,CAAC,EAAE,sBAAsB,EAC3C,kBAAkB,CAAC,EAAE,iBAAiB,GACrC,OAAO,CAAC,YAAY,CAAC,CAQvB"}
|
|
@@ -1,43 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.performTemplateSubstitutionAndCompile = exports.
|
|
3
|
+
exports.performTemplateSubstitutionAndCompile = exports.performTemplateSubstitution = exports.replaceDeployTimeControlParams = exports.getAppDeploymentTransactionNote = exports.getCreatorAppsByName = exports.isSchemaIsBroken = exports.deployApp = void 0;
|
|
4
4
|
const algosdk_1 = require("algosdk");
|
|
5
|
+
const _1 = require("./");
|
|
5
6
|
const app_1 = require("./app");
|
|
6
|
-
const config_1 = require("./config");
|
|
7
7
|
const indexer_lookup_1 = require("./indexer-lookup");
|
|
8
8
|
const transaction_1 = require("./transaction");
|
|
9
|
-
|
|
10
|
-
exports.DELETABLE_TEMPLATE_NAME = 'TMPL_DELETABLE';
|
|
11
|
-
exports.APP_DEPLOY_NOTE_PREFIX = 'APP_DEPLOY::';
|
|
12
|
-
/** What action to perform when deploying an app and an update is detected in the TEAL code */
|
|
13
|
-
var OnUpdate;
|
|
14
|
-
(function (OnUpdate) {
|
|
15
|
-
/** Fail the deployment */
|
|
16
|
-
OnUpdate[OnUpdate["Fail"] = 0] = "Fail";
|
|
17
|
-
/** Update the app */
|
|
18
|
-
OnUpdate[OnUpdate["UpdateApp"] = 1] = "UpdateApp";
|
|
19
|
-
/** Delete the app and create a new one in its place */
|
|
20
|
-
OnUpdate[OnUpdate["ReplaceApp"] = 2] = "ReplaceApp";
|
|
21
|
-
})(OnUpdate = exports.OnUpdate || (exports.OnUpdate = {}));
|
|
22
|
-
/** What action to perform when deploying an app and a breaking schema change is detected */
|
|
23
|
-
var OnSchemaBreak;
|
|
24
|
-
(function (OnSchemaBreak) {
|
|
25
|
-
/** Fail the deployment */
|
|
26
|
-
OnSchemaBreak[OnSchemaBreak["Fail"] = 0] = "Fail";
|
|
27
|
-
/** Delete the app and create a new one in its place */
|
|
28
|
-
OnSchemaBreak[OnSchemaBreak["ReplaceApp"] = 1] = "ReplaceApp";
|
|
29
|
-
})(OnSchemaBreak = exports.OnSchemaBreak || (exports.OnSchemaBreak = {}));
|
|
9
|
+
const app_2 = require("./types/app");
|
|
30
10
|
/**
|
|
31
11
|
* Idempotently deploy (create, update/delete if changed) an app against the given name via the given creator account, including deploy-time template placeholder substitutions.
|
|
32
12
|
*
|
|
33
13
|
* 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
|
|
34
14
|
*
|
|
35
|
-
* **Note:**
|
|
15
|
+
* **Note:** When using the return from this function be sure to check `operationPerformed` to get access to various return properties like `transaction`, `confirmation` and `deleteResult`.
|
|
36
16
|
*
|
|
37
|
-
* **Note:** if there is
|
|
38
|
-
*
|
|
17
|
+
* **Note:** if there is a breaking state schema change to an existing app (and `onSchemaBreak` is set to `'replace'`) the existing app will be deleted and re-created.
|
|
18
|
+
*
|
|
19
|
+
* **Note:** if there is an update (different TEAL code) to an existing app (and `onUpdate` is set to `'replace'`) the existing app will be deleted and re-created.
|
|
20
|
+
* @param deployment The arguments to control the app deployment
|
|
39
21
|
* @param algod An algod client
|
|
40
|
-
* @param indexer An indexer client
|
|
22
|
+
* @param indexer An indexer client, needed if `existingDeployments` not passed in
|
|
41
23
|
* @returns The app reference of the new/existing app
|
|
42
24
|
*/
|
|
43
25
|
async function deployApp(deployment, algod, indexer) {
|
|
@@ -45,19 +27,20 @@ async function deployApp(deployment, algod, indexer) {
|
|
|
45
27
|
if (existingDeployments && existingDeployments.creator !== (0, transaction_1.getSenderAddress)(appParams.from)) {
|
|
46
28
|
throw new Error(`Received invalid existingDeployments value for creator ${existingDeployments.creator} when attempting to deploy for creator ${appParams.from}`);
|
|
47
29
|
}
|
|
48
|
-
if (!
|
|
49
|
-
|
|
30
|
+
if (!existingDeployments && !indexer) {
|
|
31
|
+
throw new Error(`Didn't receive an indexer client, but also didn't receive an existingDeployments cache - one of them must be provided`);
|
|
50
32
|
}
|
|
51
|
-
appParams.approvalProgram
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
appParams.clearStateProgram
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
33
|
+
_1.Config.getLogger(appParams.suppressLog).info(`Idempotently deploying app "${metadata.name}" from creator ${(0, transaction_1.getSenderAddress)(appParams.from)} using ${appParams.approvalProgram.length} bytes of teal code and ${appParams.clearStateProgram.length} bytes of teal code`);
|
|
34
|
+
const compiledApproval = typeof appParams.approvalProgram === 'string'
|
|
35
|
+
? await performTemplateSubstitutionAndCompile(appParams.approvalProgram, algod, deployTimeParameters, metadata)
|
|
36
|
+
: undefined;
|
|
37
|
+
appParams.approvalProgram = compiledApproval ? compiledApproval.compiledBase64ToBytes : appParams.approvalProgram;
|
|
38
|
+
const compiledClear = typeof appParams.clearStateProgram === 'string'
|
|
39
|
+
? await performTemplateSubstitutionAndCompile(appParams.clearStateProgram, algod, deployTimeParameters)
|
|
40
|
+
: undefined;
|
|
41
|
+
appParams.clearStateProgram = compiledClear ? compiledClear.compiledBase64ToBytes : appParams.clearStateProgram;
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
43
|
+
const apps = existingDeployments ?? (await getCreatorAppsByName(appParams.from, indexer));
|
|
61
44
|
const create = async (skipSending) => {
|
|
62
45
|
const result = await (0, app_1.createApp)({
|
|
63
46
|
...appParams,
|
|
@@ -68,27 +51,27 @@ async function deployApp(deployment, algod, indexer) {
|
|
|
68
51
|
}, algod);
|
|
69
52
|
return {
|
|
70
53
|
transaction: result.transaction,
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
71
55
|
confirmation: result.confirmation,
|
|
72
|
-
|
|
56
|
+
appId: result.appId,
|
|
73
57
|
appAddress: result.appAddress,
|
|
74
58
|
createdMetadata: metadata,
|
|
75
59
|
createdRound: Number(result.confirmation?.['confirmed-round']),
|
|
76
60
|
updatedRound: Number(result.confirmation?.['confirmed-round']),
|
|
77
61
|
...metadata,
|
|
78
62
|
deleted: false,
|
|
63
|
+
operationPerformed: 'create',
|
|
64
|
+
compiledApproval,
|
|
65
|
+
compiledClear,
|
|
79
66
|
};
|
|
80
67
|
};
|
|
81
68
|
const existingApp = apps.apps[metadata.name];
|
|
82
|
-
if (!existingApp) {
|
|
83
|
-
|
|
84
|
-
config_1.AlgoKitConfig.logger.info(`App ${metadata.name} not found in apps created by ${(0, transaction_1.getSenderAddress)(appParams.from)}; deploying app with version ${metadata.version}.`);
|
|
85
|
-
}
|
|
69
|
+
if (!existingApp || existingApp.deleted) {
|
|
70
|
+
_1.Config.getLogger(appParams.suppressLog).info(`App ${metadata.name} not found in apps created by ${(0, transaction_1.getSenderAddress)(appParams.from)}; deploying app with version ${metadata.version}.`);
|
|
86
71
|
return await create();
|
|
87
72
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
const existingAppRecord = await (0, app_1.getAppByIndex)(existingApp.appIndex, algod);
|
|
73
|
+
_1.Config.getLogger(appParams.suppressLog).info(`Existing app ${metadata.name} found by creator ${(0, transaction_1.getSenderAddress)(appParams.from)}, with app id ${existingApp.appId} and version ${existingApp.version}.`);
|
|
74
|
+
const existingAppRecord = await (0, app_1.getAppByIndex)(existingApp.appId, algod);
|
|
92
75
|
const existingApproval = existingAppRecord.params['approval-program'];
|
|
93
76
|
const existingClear = existingAppRecord.params['clear-state-program'];
|
|
94
77
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -106,19 +89,15 @@ async function deployApp(deployment, algod, indexer) {
|
|
|
106
89
|
const newApproval = Buffer.from(appParams.approvalProgram).toString('base64');
|
|
107
90
|
const newClear = Buffer.from(appParams.clearStateProgram).toString('base64');
|
|
108
91
|
const isUpdate = newApproval !== existingApproval || newClear !== existingClear;
|
|
109
|
-
const isSchemaBreak =
|
|
92
|
+
const isSchemaBreak = isSchemaIsBroken(existingGlobalSchema, newGlobalSchema) || isSchemaIsBroken(existingLocalSchema, newLocalSchema);
|
|
110
93
|
const replace = async () => {
|
|
111
94
|
// Create
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
const { transaction: createTransaction, ...newApp } = await create(true);
|
|
95
|
+
_1.Config.getLogger(appParams.suppressLog).info(`Deploying a new ${metadata.name} app for ${(0, transaction_1.getSenderAddress)(appParams.from)}; deploying app with version ${metadata.version}.`);
|
|
96
|
+
const { transaction: createTransaction } = await create(true);
|
|
116
97
|
// Delete
|
|
117
|
-
|
|
118
|
-
config_1.AlgoKitConfig.logger.warn(`Deleting existing ${metadata.name} app with index ${existingApp.appIndex} from ${(0, transaction_1.getSenderAddress)(appParams.from)} account.`);
|
|
119
|
-
}
|
|
98
|
+
_1.Config.getLogger(appParams.suppressLog).warn(`Deleting existing ${metadata.name} app with id ${existingApp.appId} from ${(0, transaction_1.getSenderAddress)(appParams.from)} account.`);
|
|
120
99
|
const { transaction: deleteTransaction } = await (0, app_1.callApp)({
|
|
121
|
-
|
|
100
|
+
appId: existingApp.appId,
|
|
122
101
|
callType: 'delete',
|
|
123
102
|
from: appParams.from,
|
|
124
103
|
args: deleteArgs,
|
|
@@ -150,13 +129,12 @@ async function deployApp(deployment, algod, indexer) {
|
|
|
150
129
|
const deleteConfirmation = confirmations[1];
|
|
151
130
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
152
131
|
const newAppIndex = createConfirmation['application-index'];
|
|
153
|
-
|
|
154
|
-
config_1.AlgoKitConfig.logger.warn(`Sent transactions ${createTransaction.txID()} to create app with index ${newAppIndex} and ${deleteTransaction.txID()} to delete app with index ${existingApp.appIndex} from ${(0, transaction_1.getSenderAddress)(appParams.from)} account.`);
|
|
155
|
-
}
|
|
132
|
+
_1.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 ${(0, transaction_1.getSenderAddress)(appParams.from)} account.`);
|
|
156
133
|
return {
|
|
157
134
|
transaction: createTransaction,
|
|
135
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
158
136
|
confirmation: createConfirmation,
|
|
159
|
-
|
|
137
|
+
appId: newAppIndex,
|
|
160
138
|
appAddress: (0, algosdk_1.getApplicationAddress)(newAppIndex),
|
|
161
139
|
createdMetadata: metadata,
|
|
162
140
|
createdRound: Number(createConfirmation['confirmed-round']),
|
|
@@ -164,14 +142,15 @@ async function deployApp(deployment, algod, indexer) {
|
|
|
164
142
|
...metadata,
|
|
165
143
|
deleted: false,
|
|
166
144
|
deleteResult: { transaction: deleteTransaction, confirmation: deleteConfirmation },
|
|
145
|
+
operationPerformed: 'replace',
|
|
146
|
+
compiledApproval,
|
|
147
|
+
compiledClear,
|
|
167
148
|
};
|
|
168
149
|
};
|
|
169
150
|
const update = async () => {
|
|
170
|
-
|
|
171
|
-
config_1.AlgoKitConfig.logger.info(`Updating existing ${metadata.name} app for ${(0, transaction_1.getSenderAddress)(appParams.from)} to version ${metadata.version}.`);
|
|
172
|
-
}
|
|
151
|
+
_1.Config.getLogger(appParams.suppressLog).info(`Updating existing ${metadata.name} app for ${(0, transaction_1.getSenderAddress)(appParams.from)} to version ${metadata.version}.`);
|
|
173
152
|
const result = await (0, app_1.updateApp)({
|
|
174
|
-
|
|
153
|
+
appId: existingApp.appId,
|
|
175
154
|
from: appParams.from,
|
|
176
155
|
args: updateArgs,
|
|
177
156
|
note: getAppDeploymentTransactionNote(metadata),
|
|
@@ -184,80 +163,72 @@ async function deployApp(deployment, algod, indexer) {
|
|
|
184
163
|
}, algod);
|
|
185
164
|
return {
|
|
186
165
|
transaction: result.transaction,
|
|
166
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
187
167
|
confirmation: result.confirmation,
|
|
188
|
-
|
|
168
|
+
appId: existingApp.appId,
|
|
189
169
|
appAddress: existingApp.appAddress,
|
|
190
170
|
createdMetadata: existingApp.createdMetadata,
|
|
191
171
|
createdRound: existingApp.createdRound,
|
|
192
172
|
updatedRound: Number(result.confirmation?.['confirmed-round']),
|
|
193
173
|
...metadata,
|
|
194
174
|
deleted: false,
|
|
175
|
+
operationPerformed: 'update',
|
|
176
|
+
compiledApproval,
|
|
177
|
+
compiledClear,
|
|
195
178
|
};
|
|
196
179
|
};
|
|
197
180
|
if (isSchemaBreak) {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
if (onSchemaBreak === undefined || onSchemaBreak === 'fail' || onSchemaBreak === OnSchemaBreak.Fail) {
|
|
181
|
+
_1.Config.getLogger(appParams.suppressLog).warn(`Detected a breaking app schema change in app ${existingApp.appId}:`, {
|
|
182
|
+
from: {
|
|
183
|
+
global: existingGlobalSchema,
|
|
184
|
+
local: existingLocalSchema,
|
|
185
|
+
},
|
|
186
|
+
to: {
|
|
187
|
+
global: newGlobalSchema,
|
|
188
|
+
local: newLocalSchema,
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
if (onSchemaBreak === undefined || onSchemaBreak === 'fail' || onSchemaBreak === app_2.OnSchemaBreak.Fail) {
|
|
211
192
|
throw new Error('Schema break detected and onSchemaBreak=OnSchemaBreak.Fail, stopping deployment. ' +
|
|
212
193
|
'If you want to try deleting and recreating the app then ' +
|
|
213
194
|
're-run with onSchemaBreak=OnSchemaBreak.ReplaceApp');
|
|
214
195
|
}
|
|
215
|
-
if (
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
config_1.AlgoKitConfig.logger.info('App is not deletable but onSchemaBreak=ReplaceApp, will attempt to delete app, delete will most likely fail');
|
|
221
|
-
}
|
|
196
|
+
if (existingApp.deletable) {
|
|
197
|
+
_1.Config.getLogger(appParams.suppressLog).info('App is deletable and onSchemaBreak=ReplaceApp, will attempt to create new app and delete old app');
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
_1.Config.getLogger(appParams.suppressLog).info('App is not deletable but onSchemaBreak=ReplaceApp, will attempt to delete app, delete will most likely fail');
|
|
222
201
|
}
|
|
223
202
|
return await replace();
|
|
224
203
|
}
|
|
225
204
|
if (isUpdate) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
229
|
-
if (onUpdate === undefined || onUpdate === 'fail' || onUpdate === OnUpdate.Fail) {
|
|
205
|
+
_1.Config.getLogger(appParams.suppressLog).info(`Detected a TEAL update in app ${existingApp.appId} for creator ${(0, transaction_1.getSenderAddress)(appParams.from)}`);
|
|
206
|
+
if (onUpdate === undefined || onUpdate === 'fail' || onUpdate === app_2.OnUpdate.Fail) {
|
|
230
207
|
throw new Error('Update detected and onUpdate=Fail, stopping deployment. ' +
|
|
231
208
|
'If you want to try deleting and recreating the app then ' +
|
|
232
209
|
're-run with onUpdate=UpdateApp');
|
|
233
210
|
}
|
|
234
|
-
if (onUpdate === 'update' || onUpdate === OnUpdate.UpdateApp) {
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
config_1.AlgoKitConfig.logger.warn(`App is not updatable but onUpdate=UpdateApp, will attempt to update app, update will most likely fail`);
|
|
241
|
-
}
|
|
211
|
+
if (onUpdate === 'update' || onUpdate === app_2.OnUpdate.UpdateApp) {
|
|
212
|
+
if (existingApp.updatable) {
|
|
213
|
+
_1.Config.getLogger(appParams.suppressLog).info(`App is updatable and onUpdate=UpdateApp, updating app...`);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
_1.Config.getLogger(appParams.suppressLog).warn(`App is not updatable but onUpdate=UpdateApp, will attempt to update app, update will most likely fail`);
|
|
242
217
|
}
|
|
243
218
|
return await update();
|
|
244
219
|
}
|
|
245
|
-
if (onUpdate === 'replace' || onUpdate === OnUpdate.ReplaceApp) {
|
|
246
|
-
if (
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
config_1.AlgoKitConfig.logger.warn('App is not deletable and onUpdate=ReplaceApp, will attempt to create new app and delete old app, delete will most likely fail');
|
|
252
|
-
}
|
|
220
|
+
if (onUpdate === 'replace' || onUpdate === app_2.OnUpdate.ReplaceApp) {
|
|
221
|
+
if (existingApp.deletable) {
|
|
222
|
+
_1.Config.getLogger(appParams.suppressLog).warn('App is deletable and onUpdate=ReplaceApp, creating new app and deleting old app...');
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
_1.Config.getLogger(appParams.suppressLog).warn('App is not deletable and onUpdate=ReplaceApp, will attempt to create new app and delete old app, delete will most likely fail');
|
|
253
226
|
}
|
|
254
227
|
return await replace();
|
|
255
228
|
}
|
|
256
229
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}
|
|
260
|
-
return existingApp;
|
|
230
|
+
_1.Config.getLogger(appParams.suppressLog).debug('No detected changes in app, nothing to do.');
|
|
231
|
+
return { ...existingApp, operationPerformed: 'nothing', compiledApproval, compiledClear };
|
|
261
232
|
}
|
|
262
233
|
exports.deployApp = deployApp;
|
|
263
234
|
/** Returns true is there is a breaking change in the application state schema from before to after.
|
|
@@ -268,20 +239,20 @@ exports.deployApp = deployApp;
|
|
|
268
239
|
* @param after The new schema
|
|
269
240
|
* @returns Whether or not there is a breaking change
|
|
270
241
|
*/
|
|
271
|
-
function
|
|
242
|
+
function isSchemaIsBroken(before, after) {
|
|
272
243
|
return before['num-byte-slice'] < after['num-byte-slice'] || before['num-uint'] < after['num-uint'];
|
|
273
244
|
}
|
|
274
|
-
exports.
|
|
245
|
+
exports.isSchemaIsBroken = isSchemaIsBroken;
|
|
275
246
|
/**
|
|
276
247
|
* Returns a lookup of name => app metadata (id, address, ...metadata) for all apps created by the given account that have an @see {AppDeployNote} in the transaction note of the creation transaction.
|
|
277
248
|
*
|
|
278
249
|
* **Note:** It's recommended this is only called once and then stored since it's a somewhat expensive operation (multiple indexer calls).
|
|
279
250
|
*
|
|
280
|
-
* @param indexer An indexer client
|
|
281
251
|
* @param creatorAccount The account (with private key loaded) or string address of an account that is the creator of the apps you want to search for
|
|
252
|
+
* @param indexer An indexer client
|
|
282
253
|
* @returns A name-based lookup of the app information (id, address)
|
|
283
254
|
*/
|
|
284
|
-
async function getCreatorAppsByName(
|
|
255
|
+
async function getCreatorAppsByName(creatorAccount, indexer) {
|
|
285
256
|
const appLookup = {};
|
|
286
257
|
const creatorAddress = typeof creatorAccount !== 'string' ? (0, transaction_1.getSenderAddress)(creatorAccount) : creatorAccount;
|
|
287
258
|
// Extract all apps that account created
|
|
@@ -298,7 +269,7 @@ async function getCreatorAppsByName(indexer, creatorAccount) {
|
|
|
298
269
|
.applicationID(createdApp.id)
|
|
299
270
|
.address(creatorAddress)
|
|
300
271
|
.addressRole('sender')
|
|
301
|
-
.notePrefix(Buffer.from(
|
|
272
|
+
.notePrefix(Buffer.from(app_2.APP_DEPLOY_NOTE_DAPP).toString('base64')));
|
|
302
273
|
// Triple check the transaction is intact by filtering for the one we want:
|
|
303
274
|
// * application-id is 0 when the app is first created
|
|
304
275
|
// * also verify the sender to prevent a potential security risk
|
|
@@ -323,17 +294,17 @@ async function getCreatorAppsByName(indexer, creatorAccount) {
|
|
|
323
294
|
const decoder = new TextDecoder();
|
|
324
295
|
const noteAsBase64 = decoder.decode(Buffer.from(note));
|
|
325
296
|
const noteAsString = Buffer.from(noteAsBase64, 'base64').toString('utf-8');
|
|
326
|
-
if (!noteAsString.startsWith(`${
|
|
297
|
+
if (!noteAsString.startsWith(`${app_2.APP_DEPLOY_NOTE_DAPP}:j{`))
|
|
327
298
|
// Clearly not APP_DEPLOY JSON; ignoring...
|
|
328
299
|
return;
|
|
329
|
-
return JSON.parse(noteAsString.substring(
|
|
300
|
+
return JSON.parse(noteAsString.substring(app_2.APP_DEPLOY_NOTE_DAPP.length + 2));
|
|
330
301
|
};
|
|
331
302
|
try {
|
|
332
303
|
const creationNote = parseNote(appCreationTransaction.note);
|
|
333
304
|
const updateNote = parseNote(latestAppUpdateTransaction.note);
|
|
334
305
|
if (creationNote?.name) {
|
|
335
306
|
appLookup[creationNote.name] = {
|
|
336
|
-
|
|
307
|
+
appId: createdApp.id,
|
|
337
308
|
appAddress: (0, algosdk_1.getApplicationAddress)(createdApp.id),
|
|
338
309
|
createdMetadata: creationNote,
|
|
339
310
|
createdRound: Number(appCreationTransaction['confirmed-round']),
|
|
@@ -344,7 +315,7 @@ async function getCreatorAppsByName(indexer, creatorAccount) {
|
|
|
344
315
|
}
|
|
345
316
|
}
|
|
346
317
|
catch (e) {
|
|
347
|
-
|
|
318
|
+
_1.Config.logger.warn(`Received error trying to retrieve app with ${createdApp.id} for creator ${creatorAddress}; failing silently`, e);
|
|
348
319
|
return;
|
|
349
320
|
}
|
|
350
321
|
}));
|
|
@@ -360,7 +331,11 @@ exports.getCreatorAppsByName = getCreatorAppsByName;
|
|
|
360
331
|
* @returns The transaction note as a utf-8 string
|
|
361
332
|
*/
|
|
362
333
|
function getAppDeploymentTransactionNote(metadata) {
|
|
363
|
-
return
|
|
334
|
+
return {
|
|
335
|
+
dAppName: app_2.APP_DEPLOY_NOTE_DAPP,
|
|
336
|
+
data: metadata,
|
|
337
|
+
format: 'j',
|
|
338
|
+
};
|
|
364
339
|
}
|
|
365
340
|
exports.getAppDeploymentTransactionNote = getAppDeploymentTransactionNote;
|
|
366
341
|
/**
|
|
@@ -374,28 +349,35 @@ exports.getAppDeploymentTransactionNote = getAppDeploymentTransactionNote;
|
|
|
374
349
|
* @returns The replaced TEAL code
|
|
375
350
|
*/
|
|
376
351
|
function replaceDeployTimeControlParams(tealCode, params) {
|
|
377
|
-
|
|
378
|
-
.
|
|
379
|
-
|
|
352
|
+
if (params.updatable !== undefined) {
|
|
353
|
+
if (!tealCode.includes(app_2.UPDATABLE_TEMPLATE_NAME)) {
|
|
354
|
+
throw new Error(`Deploy-time updatability control requested for app deployment, but ${app_2.UPDATABLE_TEMPLATE_NAME} not present in TEAL code`);
|
|
355
|
+
}
|
|
356
|
+
tealCode = tealCode.replace(new RegExp(app_2.UPDATABLE_TEMPLATE_NAME, 'g'), (params.updatable ? 1 : 0).toString());
|
|
357
|
+
}
|
|
358
|
+
if (params.deletable !== undefined) {
|
|
359
|
+
if (!tealCode.includes(app_2.DELETABLE_TEMPLATE_NAME)) {
|
|
360
|
+
throw new Error(`Deploy-time deletability control requested for app deployment, but ${app_2.DELETABLE_TEMPLATE_NAME} not present in TEAL code`);
|
|
361
|
+
}
|
|
362
|
+
tealCode = tealCode.replace(new RegExp(app_2.DELETABLE_TEMPLATE_NAME, 'g'), (params.deletable ? 1 : 0).toString());
|
|
363
|
+
}
|
|
364
|
+
return tealCode;
|
|
380
365
|
}
|
|
381
366
|
exports.replaceDeployTimeControlParams = replaceDeployTimeControlParams;
|
|
382
367
|
/**
|
|
383
|
-
* Performs template substitution of a teal file
|
|
368
|
+
* Performs template substitution of a teal file.
|
|
384
369
|
*
|
|
385
370
|
* Looks for `TMPL_{parameter}` for template replacements.
|
|
386
371
|
*
|
|
387
372
|
* @param tealCode The TEAL logic to compile
|
|
388
|
-
* @param algod An algod client
|
|
389
373
|
* @param templateParameters Any parameters to replace in the .teal file before compiling
|
|
390
|
-
* @
|
|
391
|
-
* @returns The information about the compiled code
|
|
374
|
+
* @returns The TEAL code with replacements
|
|
392
375
|
*/
|
|
393
|
-
|
|
376
|
+
function performTemplateSubstitution(tealCode, templateParameters) {
|
|
394
377
|
if (templateParameters !== undefined) {
|
|
395
378
|
for (const key in templateParameters) {
|
|
396
379
|
const value = templateParameters[key];
|
|
397
|
-
const token = `TMPL_${key}`;
|
|
398
|
-
// todo: handle uint8array
|
|
380
|
+
const token = `TMPL_${key.replace(/^TMPL_/, '')}`;
|
|
399
381
|
tealCode = tealCode.replace(new RegExp(token, 'g'), typeof value === 'string'
|
|
400
382
|
? `0x${Buffer.from(value, 'utf-8').toString('hex')}`
|
|
401
383
|
: ArrayBuffer.isView(value)
|
|
@@ -403,16 +385,26 @@ async function performTemplateSubstitutionAndCompile(tealCode, algod, templatePa
|
|
|
403
385
|
: value.toString());
|
|
404
386
|
}
|
|
405
387
|
}
|
|
388
|
+
return tealCode;
|
|
389
|
+
}
|
|
390
|
+
exports.performTemplateSubstitution = performTemplateSubstitution;
|
|
391
|
+
/**
|
|
392
|
+
* Performs template substitution of a teal file and compiles it, returning the compiled result.
|
|
393
|
+
*
|
|
394
|
+
* Looks for `TMPL_{parameter}` for template replacements.
|
|
395
|
+
*
|
|
396
|
+
* @param tealCode The TEAL logic to compile
|
|
397
|
+
* @param algod An algod client
|
|
398
|
+
* @param templateParameters Any parameters to replace in the .teal file before compiling
|
|
399
|
+
* @param deploymentMetadata The deployment metadata the app will be deployed with
|
|
400
|
+
* @returns The information about the compiled code
|
|
401
|
+
*/
|
|
402
|
+
async function performTemplateSubstitutionAndCompile(tealCode, algod, templateParameters, deploymentMetadata) {
|
|
403
|
+
tealCode = performTemplateSubstitution(tealCode, templateParameters);
|
|
406
404
|
if (deploymentMetadata) {
|
|
407
405
|
tealCode = replaceDeployTimeControlParams(tealCode, deploymentMetadata);
|
|
408
406
|
}
|
|
409
|
-
|
|
410
|
-
return {
|
|
411
|
-
teal: tealCode,
|
|
412
|
-
compiled: compiled.result,
|
|
413
|
-
compiledHash: compiled.hash,
|
|
414
|
-
compiledBase64ToBytes: new Uint8Array(Buffer.from(compiled.result, 'base64')),
|
|
415
|
-
};
|
|
407
|
+
return await (0, app_1.compileTeal)(tealCode, algod);
|
|
416
408
|
}
|
|
417
409
|
exports.performTemplateSubstitutionAndCompile = performTemplateSubstitutionAndCompile;
|
|
418
410
|
//# sourceMappingURL=deploy-app.js.map
|