@algorandfoundation/algokit-client-generator 3.0.6 → 3.1.0-beta.1
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/README.md +4 -2
- package/client/{call-factory.d.ts → app-client.d.ts} +1 -1
- package/client/{call-client.d.ts → app-factory.d.ts} +1 -1
- package/client/deploy-types.d.ts +8 -4
- package/client/generate.d.ts +2 -2
- package/client/generator-context.d.ts +4 -4
- package/client/helpers/get-call-config-summary.d.ts +8 -3
- package/client/helpers/get-equivalent-type.d.ts +6 -1
- package/client/params-factory.d.ts +3 -0
- package/client/utility-types.d.ts +0 -7
- package/package.json +4 -3
- package/schema/load.d.ts +3 -3
- package/{cli.js → src/cli.js} +1 -1
- package/src/cli.js.map +1 -0
- package/{cli.mjs → src/cli.mjs} +1 -1
- package/src/cli.mjs.map +1 -0
- package/src/client/app-client.js +288 -0
- package/src/client/app-client.js.map +1 -0
- package/src/client/app-client.mjs +286 -0
- package/src/client/app-client.mjs.map +1 -0
- package/src/client/app-factory.js +238 -0
- package/src/client/app-factory.js.map +1 -0
- package/src/client/app-factory.mjs +236 -0
- package/src/client/app-factory.mjs.map +1 -0
- package/src/client/app-types.js +263 -0
- package/src/client/app-types.js.map +1 -0
- package/src/client/app-types.mjs +261 -0
- package/src/client/app-types.mjs.map +1 -0
- package/{client → src/client}/call-composer-types.js +23 -53
- package/src/client/call-composer-types.js.map +1 -0
- package/{client → src/client}/call-composer-types.mjs +23 -34
- package/src/client/call-composer-types.mjs.map +1 -0
- package/src/client/call-composer.js +135 -0
- package/src/client/call-composer.js.map +1 -0
- package/src/client/call-composer.mjs +133 -0
- package/src/client/call-composer.mjs.map +1 -0
- package/src/client/deploy-types.js +115 -0
- package/src/client/deploy-types.js.map +1 -0
- package/src/client/deploy-types.mjs +111 -0
- package/src/client/deploy-types.mjs.map +1 -0
- package/{client → src/client}/generate.js +18 -6
- package/src/client/generate.js.map +1 -0
- package/{client → src/client}/generate.mjs +18 -6
- package/src/client/generate.mjs.map +1 -0
- package/src/client/generator-context.js +23 -0
- package/src/client/generator-context.js.map +1 -0
- package/{client → src/client}/generator-context.mjs +5 -5
- package/src/client/generator-context.mjs.map +1 -0
- package/src/client/helpers/get-call-config-summary.js +60 -0
- package/src/client/helpers/get-call-config-summary.js.map +1 -0
- package/src/client/helpers/get-call-config-summary.mjs +57 -0
- package/src/client/helpers/get-call-config-summary.mjs.map +1 -0
- package/{client → src/client}/helpers/get-equivalent-type.js +10 -6
- package/src/client/helpers/get-equivalent-type.js.map +1 -0
- package/{client → src/client}/helpers/get-equivalent-type.mjs +10 -6
- package/src/client/helpers/get-equivalent-type.mjs.map +1 -0
- package/src/client/imports.js +25 -0
- package/src/client/imports.js.map +1 -0
- package/src/client/imports.mjs +23 -0
- package/src/client/imports.mjs.map +1 -0
- package/src/client/params-factory.js +126 -0
- package/src/client/params-factory.js.map +1 -0
- package/src/client/params-factory.mjs +124 -0
- package/src/client/params-factory.mjs.map +1 -0
- package/src/client/utility-types.js +44 -0
- package/src/client/utility-types.js.map +1 -0
- package/src/client/utility-types.mjs +42 -0
- package/src/client/utility-types.mjs.map +1 -0
- package/{output → src/output}/writer.js +17 -3
- package/src/output/writer.js.map +1 -0
- package/{output → src/output}/writer.mjs +17 -3
- package/src/output/writer.mjs.map +1 -0
- package/{schema → src/schema}/application.schema.json.js +2 -2
- package/{schema → src/schema}/application.schema.json.mjs +2 -2
- package/src/schema/arc56.schema.json.js +787 -0
- package/src/schema/arc56.schema.json.js.map +1 -0
- package/src/schema/arc56.schema.json.mjs +780 -0
- package/src/schema/arc56.schema.json.mjs.map +1 -0
- package/src/schema/load.js +40 -0
- package/src/schema/load.js.map +1 -0
- package/src/schema/load.mjs +37 -0
- package/src/schema/load.mjs.map +1 -0
- package/src/util/boom.js.map +1 -0
- package/src/util/boom.mjs.map +1 -0
- package/src/util/color-console.js.map +1 -0
- package/src/util/color-console.mjs.map +1 -0
- package/src/util/sanitization.js.map +1 -0
- package/src/util/sanitization.mjs.map +1 -0
- package/cli.js.map +0 -1
- package/cli.mjs.map +0 -1
- package/client/app-types.js +0 -165
- package/client/app-types.js.map +0 -1
- package/client/app-types.mjs +0 -144
- package/client/app-types.mjs.map +0 -1
- package/client/call-client.js +0 -341
- package/client/call-client.js.map +0 -1
- package/client/call-client.mjs +0 -320
- package/client/call-client.mjs.map +0 -1
- package/client/call-composer-types.js.map +0 -1
- package/client/call-composer-types.mjs.map +0 -1
- package/client/call-composer.js +0 -149
- package/client/call-composer.js.map +0 -1
- package/client/call-composer.mjs +0 -128
- package/client/call-composer.mjs.map +0 -1
- package/client/call-factory.js +0 -142
- package/client/call-factory.js.map +0 -1
- package/client/call-factory.mjs +0 -121
- package/client/call-factory.mjs.map +0 -1
- package/client/deploy-types.js +0 -97
- package/client/deploy-types.js.map +0 -1
- package/client/deploy-types.mjs +0 -94
- package/client/deploy-types.mjs.map +0 -1
- package/client/generate.js.map +0 -1
- package/client/generate.mjs.map +0 -1
- package/client/generator-context.js +0 -42
- package/client/generator-context.js.map +0 -1
- package/client/generator-context.mjs.map +0 -1
- package/client/helpers/get-call-config-summary.js +0 -58
- package/client/helpers/get-call-config-summary.js.map +0 -1
- package/client/helpers/get-call-config-summary.mjs +0 -55
- package/client/helpers/get-call-config-summary.mjs.map +0 -1
- package/client/helpers/get-equivalent-type.js.map +0 -1
- package/client/helpers/get-equivalent-type.mjs.map +0 -1
- package/client/imports.js +0 -31
- package/client/imports.js.map +0 -1
- package/client/imports.mjs +0 -29
- package/client/imports.mjs.map +0 -1
- package/client/utility-types.js +0 -57
- package/client/utility-types.js.map +0 -1
- package/client/utility-types.mjs +0 -54
- package/client/utility-types.mjs.map +0 -1
- package/output/writer.js.map +0 -1
- package/output/writer.mjs.map +0 -1
- package/schema/load.js +0 -26
- package/schema/load.js.map +0 -1
- package/schema/load.mjs +0 -23
- package/schema/load.mjs.map +0 -1
- package/util/boom.js.map +0 -1
- package/util/boom.mjs.map +0 -1
- package/util/color-console.js.map +0 -1
- package/util/color-console.mjs.map +0 -1
- package/util/sanitization.js.map +0 -1
- package/util/sanitization.mjs.map +0 -1
- /package/{index.js → src/index.js} +0 -0
- /package/{index.js.map → src/index.js.map} +0 -0
- /package/{index.mjs → src/index.mjs} +0 -0
- /package/{index.mjs.map → src/index.mjs.map} +0 -0
- /package/{schema → src/schema}/application.schema.json.js.map +0 -0
- /package/{schema → src/schema}/application.schema.json.mjs.map +0 -0
- /package/{schema → src/schema}/contract.schema.json.js +0 -0
- /package/{schema → src/schema}/contract.schema.json.js.map +0 -0
- /package/{schema → src/schema}/contract.schema.json.mjs +0 -0
- /package/{schema → src/schema}/contract.schema.json.mjs.map +0 -0
- /package/{util → src/util}/boom.js +0 -0
- /package/{util → src/util}/boom.mjs +0 -0
- /package/{util → src/util}/color-console.js +0 -0
- /package/{util → src/util}/color-console.mjs +0 -0
- /package/{util → src/util}/sanitization.js +0 -0
- /package/{util → src/util}/sanitization.mjs +0 -0
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var writer = require('../output/writer.js');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var paramsFactory = require('./params-factory.js');
|
|
5
|
+
var appClient = require('./app-client.js');
|
|
6
6
|
var deployTypes = require('./deploy-types.js');
|
|
7
7
|
var utilityTypes = require('./utility-types.js');
|
|
8
8
|
var imports = require('./imports.js');
|
|
9
9
|
var generatorContext = require('./generator-context.js');
|
|
10
10
|
var appTypes = require('./app-types.js');
|
|
11
11
|
var callComposerTypes = require('./call-composer-types.js');
|
|
12
|
+
var appFactory = require('./app-factory.js');
|
|
12
13
|
|
|
14
|
+
function convertStructs(s, sanitizer) {
|
|
15
|
+
return Object.fromEntries(Object.keys(s).map((key) => [
|
|
16
|
+
sanitizer.makeSafePropertyIdentifier(key),
|
|
17
|
+
typeof s[key] === 'string' ? s[key] : convertStructs(s[key], sanitizer),
|
|
18
|
+
]));
|
|
19
|
+
}
|
|
13
20
|
function* generate(app, options = { preserveNames: false }) {
|
|
14
21
|
const ctx = generatorContext.createGeneratorContext(app, options);
|
|
15
22
|
yield `/* eslint-disable */`;
|
|
@@ -17,10 +24,13 @@ function* generate(app, options = { preserveNames: false }) {
|
|
|
17
24
|
yield `/**`;
|
|
18
25
|
yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`;
|
|
19
26
|
yield ` * DO NOT MODIFY IT BY HAND.`;
|
|
20
|
-
yield ` * requires: @algorandfoundation/algokit-utils: ^
|
|
27
|
+
yield ` * requires: @algorandfoundation/algokit-utils: ^3`;
|
|
21
28
|
yield ` */`;
|
|
22
29
|
yield* imports.imports();
|
|
23
|
-
|
|
30
|
+
// Change the structs definition to sanitize property names according to the defined rules
|
|
31
|
+
// for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp
|
|
32
|
+
app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]));
|
|
33
|
+
yield* writer.inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app));
|
|
24
34
|
yield writer.NewLine;
|
|
25
35
|
yield* utilityTypes.utilityTypes();
|
|
26
36
|
yield writer.NewLine;
|
|
@@ -28,10 +38,12 @@ function* generate(app, options = { preserveNames: false }) {
|
|
|
28
38
|
yield* deployTypes.deployTypes(ctx);
|
|
29
39
|
yield writer.NewLine;
|
|
30
40
|
// Write a call factory
|
|
31
|
-
yield*
|
|
41
|
+
yield* paramsFactory.paramsFactory(ctx);
|
|
32
42
|
yield writer.NewLine;
|
|
43
|
+
// Write a factory
|
|
44
|
+
yield* appFactory.appFactory(ctx);
|
|
33
45
|
// Write a client
|
|
34
|
-
yield*
|
|
46
|
+
yield* appClient.appClient(ctx);
|
|
35
47
|
yield* callComposerTypes.callComposerType(ctx);
|
|
36
48
|
}
|
|
37
49
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sources":["../../../src/client/generate.ts"],"sourcesContent":["import { DocumentParts, inline, NewLine } from '../output/writer'\nimport { paramsFactory } from './params-factory'\nimport { appClient } from './app-client'\nimport { deployTypes } from './deploy-types'\nimport { utilityTypes } from './utility-types'\nimport { imports } from './imports'\nimport { createGeneratorContext, GeneratorOptions } from './generator-context'\nimport { appTypes } from './app-types'\nimport { callComposerType } from './call-composer-types'\nimport { Arc56Contract, StructFields } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { appFactory } from './app-factory'\nimport { Sanitizer } from '../util/sanitization'\n\nfunction convertStructs(s: StructFields, sanitizer: Sanitizer): StructFields {\n return Object.fromEntries(\n Object.keys(s).map((key) => [\n sanitizer.makeSafePropertyIdentifier(key),\n typeof s[key] === 'string' ? s[key] : convertStructs(s[key] as StructFields, sanitizer),\n ]),\n )\n}\n\nexport function* generate(app: Arc56Contract, options: GeneratorOptions = { preserveNames: false }): DocumentParts {\n const ctx = createGeneratorContext(app, options)\n yield `/* eslint-disable */`\n yield `// @ts-nocheck`\n yield `/**`\n yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`\n yield ` * DO NOT MODIFY IT BY HAND.`\n yield ` * requires: @algorandfoundation/algokit-utils: ^3`\n yield ` */`\n\n yield* imports()\n // Change the structs definition to sanitize property names according to the defined rules\n // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp\n app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]))\n yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app))\n yield NewLine\n\n yield* utilityTypes()\n yield NewLine\n yield* appTypes(ctx)\n yield* deployTypes(ctx)\n yield NewLine\n\n // Write a call factory\n yield* paramsFactory(ctx)\n yield NewLine\n // Write a factory\n yield* appFactory(ctx)\n // Write a client\n yield* appClient(ctx)\n\n yield* callComposerType(ctx)\n}\n"],"names":["createGeneratorContext","imports","inline","NewLine","utilityTypes","appTypes","deployTypes","paramsFactory","appFactory","appClient","callComposerType"],"mappings":";;;;;;;;;;;;;AAaA,SAAS,cAAc,CAAC,CAAe,EAAE,SAAoB,EAAA;AAC3D,IAAA,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAC1B,QAAA,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC;QACzC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAiB,EAAE,SAAS,CAAC;AACxF,KAAA,CAAC,CACH,CAAA;AACH,CAAC;AAEc,UAAE,QAAQ,CAAC,GAAkB,EAAE,OAAA,GAA4B,EAAE,aAAa,EAAE,KAAK,EAAE,EAAA;IAChG,MAAM,GAAG,GAAGA,uCAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAChD,IAAA,MAAM,sBAAsB,CAAA;AAC5B,IAAA,MAAM,gBAAgB,CAAA;AACtB,IAAA,MAAM,KAAK,CAAA;AACX,IAAA,MAAM,2FAA2F,CAAA;AACjG,IAAA,MAAM,8BAA8B,CAAA;AACpC,IAAA,MAAM,oDAAoD,CAAA;AAC1D,IAAA,MAAM,KAAK,CAAA;AAEX,IAAA,OAAOC,eAAO,EAAE,CAAA;;;AAGhB,IAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/H,IAAA,OAAOC,aAAM,CAAC,yCAAyC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7E,IAAA,MAAMC,cAAO,CAAA;AAEb,IAAA,OAAOC,yBAAY,EAAE,CAAA;AACrB,IAAA,MAAMD,cAAO,CAAA;AACb,IAAA,OAAOE,iBAAQ,CAAC,GAAG,CAAC,CAAA;AACpB,IAAA,OAAOC,uBAAW,CAAC,GAAG,CAAC,CAAA;AACvB,IAAA,MAAMH,cAAO,CAAA;;AAGb,IAAA,OAAOI,2BAAa,CAAC,GAAG,CAAC,CAAA;AACzB,IAAA,MAAMJ,cAAO,CAAA;;AAEb,IAAA,OAAOK,qBAAU,CAAC,GAAG,CAAC,CAAA;;AAEtB,IAAA,OAAOC,mBAAS,CAAC,GAAG,CAAC,CAAA;AAErB,IAAA,OAAOC,kCAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B;;;;"}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { inline, NewLine } from '../output/writer.mjs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { paramsFactory } from './params-factory.mjs';
|
|
3
|
+
import { appClient } from './app-client.mjs';
|
|
4
4
|
import { deployTypes } from './deploy-types.mjs';
|
|
5
5
|
import { utilityTypes } from './utility-types.mjs';
|
|
6
6
|
import { imports } from './imports.mjs';
|
|
7
7
|
import { createGeneratorContext } from './generator-context.mjs';
|
|
8
8
|
import { appTypes } from './app-types.mjs';
|
|
9
9
|
import { callComposerType } from './call-composer-types.mjs';
|
|
10
|
+
import { appFactory } from './app-factory.mjs';
|
|
10
11
|
|
|
12
|
+
function convertStructs(s, sanitizer) {
|
|
13
|
+
return Object.fromEntries(Object.keys(s).map((key) => [
|
|
14
|
+
sanitizer.makeSafePropertyIdentifier(key),
|
|
15
|
+
typeof s[key] === 'string' ? s[key] : convertStructs(s[key], sanitizer),
|
|
16
|
+
]));
|
|
17
|
+
}
|
|
11
18
|
function* generate(app, options = { preserveNames: false }) {
|
|
12
19
|
const ctx = createGeneratorContext(app, options);
|
|
13
20
|
yield `/* eslint-disable */`;
|
|
@@ -15,10 +22,13 @@ function* generate(app, options = { preserveNames: false }) {
|
|
|
15
22
|
yield `/**`;
|
|
16
23
|
yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`;
|
|
17
24
|
yield ` * DO NOT MODIFY IT BY HAND.`;
|
|
18
|
-
yield ` * requires: @algorandfoundation/algokit-utils: ^
|
|
25
|
+
yield ` * requires: @algorandfoundation/algokit-utils: ^3`;
|
|
19
26
|
yield ` */`;
|
|
20
27
|
yield* imports();
|
|
21
|
-
|
|
28
|
+
// Change the structs definition to sanitize property names according to the defined rules
|
|
29
|
+
// for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp
|
|
30
|
+
app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]));
|
|
31
|
+
yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app));
|
|
22
32
|
yield NewLine;
|
|
23
33
|
yield* utilityTypes();
|
|
24
34
|
yield NewLine;
|
|
@@ -26,10 +36,12 @@ function* generate(app, options = { preserveNames: false }) {
|
|
|
26
36
|
yield* deployTypes(ctx);
|
|
27
37
|
yield NewLine;
|
|
28
38
|
// Write a call factory
|
|
29
|
-
yield*
|
|
39
|
+
yield* paramsFactory(ctx);
|
|
30
40
|
yield NewLine;
|
|
41
|
+
// Write a factory
|
|
42
|
+
yield* appFactory(ctx);
|
|
31
43
|
// Write a client
|
|
32
|
-
yield*
|
|
44
|
+
yield* appClient(ctx);
|
|
33
45
|
yield* callComposerType(ctx);
|
|
34
46
|
}
|
|
35
47
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.mjs","sources":["../../../src/client/generate.ts"],"sourcesContent":["import { DocumentParts, inline, NewLine } from '../output/writer'\nimport { paramsFactory } from './params-factory'\nimport { appClient } from './app-client'\nimport { deployTypes } from './deploy-types'\nimport { utilityTypes } from './utility-types'\nimport { imports } from './imports'\nimport { createGeneratorContext, GeneratorOptions } from './generator-context'\nimport { appTypes } from './app-types'\nimport { callComposerType } from './call-composer-types'\nimport { Arc56Contract, StructFields } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { appFactory } from './app-factory'\nimport { Sanitizer } from '../util/sanitization'\n\nfunction convertStructs(s: StructFields, sanitizer: Sanitizer): StructFields {\n return Object.fromEntries(\n Object.keys(s).map((key) => [\n sanitizer.makeSafePropertyIdentifier(key),\n typeof s[key] === 'string' ? s[key] : convertStructs(s[key] as StructFields, sanitizer),\n ]),\n )\n}\n\nexport function* generate(app: Arc56Contract, options: GeneratorOptions = { preserveNames: false }): DocumentParts {\n const ctx = createGeneratorContext(app, options)\n yield `/* eslint-disable */`\n yield `// @ts-nocheck`\n yield `/**`\n yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`\n yield ` * DO NOT MODIFY IT BY HAND.`\n yield ` * requires: @algorandfoundation/algokit-utils: ^3`\n yield ` */`\n\n yield* imports()\n // Change the structs definition to sanitize property names according to the defined rules\n // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp\n app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]))\n yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app))\n yield NewLine\n\n yield* utilityTypes()\n yield NewLine\n yield* appTypes(ctx)\n yield* deployTypes(ctx)\n yield NewLine\n\n // Write a call factory\n yield* paramsFactory(ctx)\n yield NewLine\n // Write a factory\n yield* appFactory(ctx)\n // Write a client\n yield* appClient(ctx)\n\n yield* callComposerType(ctx)\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAaA,SAAS,cAAc,CAAC,CAAe,EAAE,SAAoB,EAAA;AAC3D,IAAA,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAC1B,QAAA,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC;QACzC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAiB,EAAE,SAAS,CAAC;AACxF,KAAA,CAAC,CACH,CAAA;AACH,CAAC;AAEc,UAAE,QAAQ,CAAC,GAAkB,EAAE,OAAA,GAA4B,EAAE,aAAa,EAAE,KAAK,EAAE,EAAA;IAChG,MAAM,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAChD,IAAA,MAAM,sBAAsB,CAAA;AAC5B,IAAA,MAAM,gBAAgB,CAAA;AACtB,IAAA,MAAM,KAAK,CAAA;AACX,IAAA,MAAM,2FAA2F,CAAA;AACjG,IAAA,MAAM,8BAA8B,CAAA;AACpC,IAAA,MAAM,oDAAoD,CAAA;AAC1D,IAAA,MAAM,KAAK,CAAA;AAEX,IAAA,OAAO,OAAO,EAAE,CAAA;;;AAGhB,IAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/H,IAAA,OAAO,MAAM,CAAC,yCAAyC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7E,IAAA,MAAM,OAAO,CAAA;AAEb,IAAA,OAAO,YAAY,EAAE,CAAA;AACrB,IAAA,MAAM,OAAO,CAAA;AACb,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;AACpB,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;AACvB,IAAA,MAAM,OAAO,CAAA;;AAGb,IAAA,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;AACzB,IAAA,MAAM,OAAO,CAAA;;AAEb,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;;AAEtB,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;AAErB,IAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var getCallConfigSummary = require('./helpers/get-call-config-summary.js');
|
|
4
|
+
var sanitization = require('../util/sanitization.js');
|
|
5
|
+
var algosdk = require('algosdk');
|
|
6
|
+
|
|
7
|
+
const createGeneratorContext = (app, options) => {
|
|
8
|
+
const sanitizer = sanitization.getSanitizer(options);
|
|
9
|
+
return {
|
|
10
|
+
sanitizer,
|
|
11
|
+
app,
|
|
12
|
+
name: sanitizer.makeSafeTypeIdentifier(app.name),
|
|
13
|
+
callConfig: getCallConfigSummary.getCallConfigSummary(app),
|
|
14
|
+
methodSignatureToUniqueName: app.methods.reduce((acc, cur) => {
|
|
15
|
+
const signature = new algosdk.ABIMethod(cur).getSignature();
|
|
16
|
+
acc[signature] = app.methods.some((m) => m.name === cur.name && m !== cur) ? signature : cur.name;
|
|
17
|
+
return acc;
|
|
18
|
+
}, {}),
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.createGeneratorContext = createGeneratorContext;
|
|
23
|
+
//# sourceMappingURL=generator-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator-context.js","sources":["../../../src/client/generator-context.ts"],"sourcesContent":["import { CallConfigSummary, getCallConfigSummary } from './helpers/get-call-config-summary'\nimport { getSanitizer, Sanitizer } from '../util/sanitization'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport type GeneratorContext = {\n app: Arc56Contract\n name: string\n callConfig: CallConfigSummary\n methodSignatureToUniqueName: Record<string, string>\n sanitizer: Sanitizer\n}\n\nexport type GeneratorOptions = {\n preserveNames: boolean\n}\n\nexport const createGeneratorContext = (app: Arc56Contract, options: GeneratorOptions) => {\n const sanitizer = getSanitizer(options)\n return {\n sanitizer,\n app,\n name: sanitizer.makeSafeTypeIdentifier(app.name),\n callConfig: getCallConfigSummary(app),\n methodSignatureToUniqueName: app.methods.reduce(\n (acc, cur) => {\n const signature = new ABIMethod(cur).getSignature()\n acc[signature] = app.methods.some((m) => m.name === cur.name && m !== cur) ? signature : cur.name\n return acc\n },\n {} as Record<string, string>,\n ),\n }\n}\n"],"names":["getSanitizer","getCallConfigSummary","ABIMethod"],"mappings":";;;;;;MAiBa,sBAAsB,GAAG,CAAC,GAAkB,EAAE,OAAyB,KAAI;AACtF,IAAA,MAAM,SAAS,GAAGA,yBAAY,CAAC,OAAO,CAAC,CAAA;IACvC,OAAO;QACL,SAAS;QACT,GAAG;QACH,IAAI,EAAE,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChD,QAAA,UAAU,EAAEC,yCAAoB,CAAC,GAAG,CAAC;AACrC,QAAA,2BAA2B,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAC7C,CAAC,GAAG,EAAE,GAAG,KAAI;YACX,MAAM,SAAS,GAAG,IAAIC,iBAAS,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAA;AACnD,YAAA,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG,CAAC,IAAI,CAAA;AACjG,YAAA,OAAO,GAAG,CAAA;SACX,EACD,EAA4B,CAC7B;KACF,CAAA;AACH;;;;"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { getCallConfigSummary } from './helpers/get-call-config-summary.mjs';
|
|
2
2
|
import { getSanitizer } from '../util/sanitization.mjs';
|
|
3
|
-
import
|
|
3
|
+
import { ABIMethod } from 'algosdk';
|
|
4
4
|
|
|
5
5
|
const createGeneratorContext = (app, options) => {
|
|
6
6
|
const sanitizer = getSanitizer(options);
|
|
7
7
|
return {
|
|
8
8
|
sanitizer,
|
|
9
9
|
app,
|
|
10
|
-
name: sanitizer.makeSafeTypeIdentifier(app.
|
|
10
|
+
name: sanitizer.makeSafeTypeIdentifier(app.name),
|
|
11
11
|
callConfig: getCallConfigSummary(app),
|
|
12
|
-
methodSignatureToUniqueName: app.
|
|
13
|
-
const signature =
|
|
14
|
-
acc[signature] = app.
|
|
12
|
+
methodSignatureToUniqueName: app.methods.reduce((acc, cur) => {
|
|
13
|
+
const signature = new ABIMethod(cur).getSignature();
|
|
14
|
+
acc[signature] = app.methods.some((m) => m.name === cur.name && m !== cur) ? signature : cur.name;
|
|
15
15
|
return acc;
|
|
16
16
|
}, {}),
|
|
17
17
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator-context.mjs","sources":["../../../src/client/generator-context.ts"],"sourcesContent":["import { CallConfigSummary, getCallConfigSummary } from './helpers/get-call-config-summary'\nimport { getSanitizer, Sanitizer } from '../util/sanitization'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport type GeneratorContext = {\n app: Arc56Contract\n name: string\n callConfig: CallConfigSummary\n methodSignatureToUniqueName: Record<string, string>\n sanitizer: Sanitizer\n}\n\nexport type GeneratorOptions = {\n preserveNames: boolean\n}\n\nexport const createGeneratorContext = (app: Arc56Contract, options: GeneratorOptions) => {\n const sanitizer = getSanitizer(options)\n return {\n sanitizer,\n app,\n name: sanitizer.makeSafeTypeIdentifier(app.name),\n callConfig: getCallConfigSummary(app),\n methodSignatureToUniqueName: app.methods.reduce(\n (acc, cur) => {\n const signature = new ABIMethod(cur).getSignature()\n acc[signature] = app.methods.some((m) => m.name === cur.name && m !== cur) ? signature : cur.name\n return acc\n },\n {} as Record<string, string>,\n ),\n }\n}\n"],"names":[],"mappings":";;;;MAiBa,sBAAsB,GAAG,CAAC,GAAkB,EAAE,OAAyB,KAAI;AACtF,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACvC,OAAO;QACL,SAAS;QACT,GAAG;QACH,IAAI,EAAE,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChD,QAAA,UAAU,EAAE,oBAAoB,CAAC,GAAG,CAAC;AACrC,QAAA,2BAA2B,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAC7C,CAAC,GAAG,EAAE,GAAG,KAAI;YACX,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAA;AACnD,YAAA,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG,CAAC,IAAI,CAAA;AACjG,YAAA,OAAO,GAAG,CAAA;SACX,EACD,EAA4B,CAC7B;KACF,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var algosdk = require('algosdk');
|
|
4
|
+
|
|
5
|
+
const BARE_CALL = Symbol('bare');
|
|
6
|
+
const getCallConfigSummary = (app) => {
|
|
7
|
+
const result = {
|
|
8
|
+
createMethods: [],
|
|
9
|
+
callMethods: [],
|
|
10
|
+
deleteMethods: [],
|
|
11
|
+
updateMethods: [],
|
|
12
|
+
optInMethods: [],
|
|
13
|
+
closeOutMethods: [],
|
|
14
|
+
};
|
|
15
|
+
if (app.bareActions) {
|
|
16
|
+
addToConfig(result, BARE_CALL, app.bareActions);
|
|
17
|
+
}
|
|
18
|
+
if (app.methods) {
|
|
19
|
+
for (const m of app.methods) {
|
|
20
|
+
if (m.actions) {
|
|
21
|
+
addToConfig(result, new algosdk.ABIMethod(m).getSignature(), m.actions);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
const addToConfig = (result, method, config) => {
|
|
28
|
+
if (hasCall(config, 'NoOp')) {
|
|
29
|
+
result.callMethods.push(method);
|
|
30
|
+
}
|
|
31
|
+
if (hasCreate(config, 'NoOp') ||
|
|
32
|
+
hasCreate(config, 'OptIn') ||
|
|
33
|
+
hasCreate(config, 'CloseOut') ||
|
|
34
|
+
hasCreate(config, 'UpdateApplication') ||
|
|
35
|
+
hasCreate(config, 'DeleteApplication')) {
|
|
36
|
+
result.createMethods.push(method);
|
|
37
|
+
}
|
|
38
|
+
if (hasCall(config, 'DeleteApplication')) {
|
|
39
|
+
result.deleteMethods.push(method);
|
|
40
|
+
}
|
|
41
|
+
if (hasCall(config, 'UpdateApplication')) {
|
|
42
|
+
result.updateMethods.push(method);
|
|
43
|
+
}
|
|
44
|
+
if (hasCall(config, 'OptIn')) {
|
|
45
|
+
result.optInMethods.push(method);
|
|
46
|
+
}
|
|
47
|
+
if (hasCall(config, 'CloseOut')) {
|
|
48
|
+
result.closeOutMethods.push(method);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const hasCall = (config, action) => {
|
|
52
|
+
return config?.call.includes(action);
|
|
53
|
+
};
|
|
54
|
+
const hasCreate = (config, action) => {
|
|
55
|
+
return (config?.create).includes(action);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
exports.BARE_CALL = BARE_CALL;
|
|
59
|
+
exports.getCallConfigSummary = getCallConfigSummary;
|
|
60
|
+
//# sourceMappingURL=get-call-config-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-call-config-summary.js","sources":["../../../../src/client/helpers/get-call-config-summary.ts"],"sourcesContent":["import { pascalCase } from 'change-case'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport const BARE_CALL = Symbol('bare')\n\nexport type MethodIdentifier = string | typeof BARE_CALL\n\nexport type MethodList = Array<MethodIdentifier>\n\nexport type OnComplete = 'NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication'\n\nexport type Actions = {\n create: ('NoOp' | 'OptIn' | 'DeleteApplication')[]\n call: OnComplete[]\n}\n\nexport type CallConfigSummary = {\n createMethods: MethodList\n callMethods: MethodList\n deleteMethods: MethodList\n updateMethods: MethodList\n optInMethods: MethodList\n closeOutMethods: MethodList\n}\nexport const getCallConfigSummary = (app: Arc56Contract) => {\n const result: CallConfigSummary = {\n createMethods: [],\n callMethods: [],\n deleteMethods: [],\n updateMethods: [],\n optInMethods: [],\n closeOutMethods: [],\n }\n if (app.bareActions) {\n addToConfig(result, BARE_CALL, app.bareActions)\n }\n if (app.methods) {\n for (const m of app.methods) {\n if (m.actions) {\n addToConfig(result, new ABIMethod(m).getSignature(), m.actions)\n }\n }\n }\n return result\n}\n\nexport const getCreateOnComplete = (app: Arc56Contract, method: MethodIdentifier) => {\n const actions = method === BARE_CALL ? app.bareActions : app.methods?.find((m) => m.name === method)?.actions\n if (!actions) {\n return ''\n }\n const hasNoOp = actions.create.includes('NoOp')\n return `{ onCompleteAction${hasNoOp ? '?' : ''}: ${getCreateOnCompleteTypes(actions)} }`\n}\n\nconst getCreateOnCompleteTypes = (config: Actions) => {\n return config.create.map((oc) => `'${oc}' | OnApplicationComplete.${pascalCase(oc)}OC`).join(' | ')\n}\n\nconst addToConfig = (result: CallConfigSummary, method: MethodIdentifier, config: Actions) => {\n if (hasCall(config, 'NoOp')) {\n result.callMethods.push(method)\n }\n if (\n hasCreate(config, 'NoOp') ||\n hasCreate(config, 'OptIn') ||\n hasCreate(config, 'CloseOut') ||\n hasCreate(config, 'UpdateApplication') ||\n hasCreate(config, 'DeleteApplication')\n ) {\n result.createMethods.push(method)\n }\n if (hasCall(config, 'DeleteApplication')) {\n result.deleteMethods.push(method)\n }\n if (hasCall(config, 'UpdateApplication')) {\n result.updateMethods.push(method)\n }\n if (hasCall(config, 'OptIn')) {\n result.optInMethods.push(method)\n }\n if (hasCall(config, 'CloseOut')) {\n result.closeOutMethods.push(method)\n }\n}\n\nconst hasCall = (config: Actions | undefined, action: OnComplete) => {\n return config?.call.includes(action)\n}\nconst hasCreate = (config: Actions | undefined, action: OnComplete) => {\n return (config?.create as OnComplete[]).includes(action)\n}\n"],"names":["ABIMethod"],"mappings":";;;;MAIa,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC;AAqB1B,MAAA,oBAAoB,GAAG,CAAC,GAAkB,KAAI;AACzD,IAAA,MAAM,MAAM,GAAsB;AAChC,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,eAAe,EAAE,EAAE;KACpB,CAAA;AACD,IAAA,IAAI,GAAG,CAAC,WAAW,EAAE;QACnB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;KAChD;AACD,IAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,QAAA,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,gBAAA,WAAW,CAAC,MAAM,EAAE,IAAIA,iBAAS,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;aAChE;SACF;KACF;AACD,IAAA,OAAO,MAAM,CAAA;AACf,EAAC;AAeD,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAE,MAAwB,EAAE,MAAe,KAAI;AAC3F,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AAC3B,QAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAChC;AACD,IAAA,IACE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;AACzB,QAAA,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1B,QAAA,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;AAC7B,QAAA,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC;AACtC,QAAA,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACtC;AACA,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAClC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE;AACxC,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAClC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE;AACxC,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAClC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC5B,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACjC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;AAC/B,QAAA,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACpC;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,MAA2B,EAAE,MAAkB,KAAI;IAClE,OAAO,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC,CAAA;AACD,MAAM,SAAS,GAAG,CAAC,MAA2B,EAAE,MAAkB,KAAI;IACpE,OAAO,CAAC,MAAM,EAAE,MAAuB,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC1D,CAAC;;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ABIMethod } from 'algosdk';
|
|
2
|
+
|
|
3
|
+
const BARE_CALL = Symbol('bare');
|
|
4
|
+
const getCallConfigSummary = (app) => {
|
|
5
|
+
const result = {
|
|
6
|
+
createMethods: [],
|
|
7
|
+
callMethods: [],
|
|
8
|
+
deleteMethods: [],
|
|
9
|
+
updateMethods: [],
|
|
10
|
+
optInMethods: [],
|
|
11
|
+
closeOutMethods: [],
|
|
12
|
+
};
|
|
13
|
+
if (app.bareActions) {
|
|
14
|
+
addToConfig(result, BARE_CALL, app.bareActions);
|
|
15
|
+
}
|
|
16
|
+
if (app.methods) {
|
|
17
|
+
for (const m of app.methods) {
|
|
18
|
+
if (m.actions) {
|
|
19
|
+
addToConfig(result, new ABIMethod(m).getSignature(), m.actions);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
const addToConfig = (result, method, config) => {
|
|
26
|
+
if (hasCall(config, 'NoOp')) {
|
|
27
|
+
result.callMethods.push(method);
|
|
28
|
+
}
|
|
29
|
+
if (hasCreate(config, 'NoOp') ||
|
|
30
|
+
hasCreate(config, 'OptIn') ||
|
|
31
|
+
hasCreate(config, 'CloseOut') ||
|
|
32
|
+
hasCreate(config, 'UpdateApplication') ||
|
|
33
|
+
hasCreate(config, 'DeleteApplication')) {
|
|
34
|
+
result.createMethods.push(method);
|
|
35
|
+
}
|
|
36
|
+
if (hasCall(config, 'DeleteApplication')) {
|
|
37
|
+
result.deleteMethods.push(method);
|
|
38
|
+
}
|
|
39
|
+
if (hasCall(config, 'UpdateApplication')) {
|
|
40
|
+
result.updateMethods.push(method);
|
|
41
|
+
}
|
|
42
|
+
if (hasCall(config, 'OptIn')) {
|
|
43
|
+
result.optInMethods.push(method);
|
|
44
|
+
}
|
|
45
|
+
if (hasCall(config, 'CloseOut')) {
|
|
46
|
+
result.closeOutMethods.push(method);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const hasCall = (config, action) => {
|
|
50
|
+
return config?.call.includes(action);
|
|
51
|
+
};
|
|
52
|
+
const hasCreate = (config, action) => {
|
|
53
|
+
return (config?.create).includes(action);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { BARE_CALL, getCallConfigSummary };
|
|
57
|
+
//# sourceMappingURL=get-call-config-summary.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-call-config-summary.mjs","sources":["../../../../src/client/helpers/get-call-config-summary.ts"],"sourcesContent":["import { pascalCase } from 'change-case'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport const BARE_CALL = Symbol('bare')\n\nexport type MethodIdentifier = string | typeof BARE_CALL\n\nexport type MethodList = Array<MethodIdentifier>\n\nexport type OnComplete = 'NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication'\n\nexport type Actions = {\n create: ('NoOp' | 'OptIn' | 'DeleteApplication')[]\n call: OnComplete[]\n}\n\nexport type CallConfigSummary = {\n createMethods: MethodList\n callMethods: MethodList\n deleteMethods: MethodList\n updateMethods: MethodList\n optInMethods: MethodList\n closeOutMethods: MethodList\n}\nexport const getCallConfigSummary = (app: Arc56Contract) => {\n const result: CallConfigSummary = {\n createMethods: [],\n callMethods: [],\n deleteMethods: [],\n updateMethods: [],\n optInMethods: [],\n closeOutMethods: [],\n }\n if (app.bareActions) {\n addToConfig(result, BARE_CALL, app.bareActions)\n }\n if (app.methods) {\n for (const m of app.methods) {\n if (m.actions) {\n addToConfig(result, new ABIMethod(m).getSignature(), m.actions)\n }\n }\n }\n return result\n}\n\nexport const getCreateOnComplete = (app: Arc56Contract, method: MethodIdentifier) => {\n const actions = method === BARE_CALL ? app.bareActions : app.methods?.find((m) => m.name === method)?.actions\n if (!actions) {\n return ''\n }\n const hasNoOp = actions.create.includes('NoOp')\n return `{ onCompleteAction${hasNoOp ? '?' : ''}: ${getCreateOnCompleteTypes(actions)} }`\n}\n\nconst getCreateOnCompleteTypes = (config: Actions) => {\n return config.create.map((oc) => `'${oc}' | OnApplicationComplete.${pascalCase(oc)}OC`).join(' | ')\n}\n\nconst addToConfig = (result: CallConfigSummary, method: MethodIdentifier, config: Actions) => {\n if (hasCall(config, 'NoOp')) {\n result.callMethods.push(method)\n }\n if (\n hasCreate(config, 'NoOp') ||\n hasCreate(config, 'OptIn') ||\n hasCreate(config, 'CloseOut') ||\n hasCreate(config, 'UpdateApplication') ||\n hasCreate(config, 'DeleteApplication')\n ) {\n result.createMethods.push(method)\n }\n if (hasCall(config, 'DeleteApplication')) {\n result.deleteMethods.push(method)\n }\n if (hasCall(config, 'UpdateApplication')) {\n result.updateMethods.push(method)\n }\n if (hasCall(config, 'OptIn')) {\n result.optInMethods.push(method)\n }\n if (hasCall(config, 'CloseOut')) {\n result.closeOutMethods.push(method)\n }\n}\n\nconst hasCall = (config: Actions | undefined, action: OnComplete) => {\n return config?.call.includes(action)\n}\nconst hasCreate = (config: Actions | undefined, action: OnComplete) => {\n return (config?.create as OnComplete[]).includes(action)\n}\n"],"names":[],"mappings":";;MAIa,SAAS,GAAG,MAAM,CAAC,MAAM,EAAC;AAqB1B,MAAA,oBAAoB,GAAG,CAAC,GAAkB,KAAI;AACzD,IAAA,MAAM,MAAM,GAAsB;AAChC,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,eAAe,EAAE,EAAE;KACpB,CAAA;AACD,IAAA,IAAI,GAAG,CAAC,WAAW,EAAE;QACnB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;KAChD;AACD,IAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,QAAA,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,gBAAA,WAAW,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;aAChE;SACF;KACF;AACD,IAAA,OAAO,MAAM,CAAA;AACf,EAAC;AAeD,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAE,MAAwB,EAAE,MAAe,KAAI;AAC3F,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AAC3B,QAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAChC;AACD,IAAA,IACE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;AACzB,QAAA,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1B,QAAA,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;AAC7B,QAAA,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC;AACtC,QAAA,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACtC;AACA,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAClC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE;AACxC,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAClC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE;AACxC,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KAClC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC5B,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACjC;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;AAC/B,QAAA,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACpC;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,MAA2B,EAAE,MAAkB,KAAI;IAClE,OAAO,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC,CAAA;AACD,MAAM,SAAS,GAAG,CAAC,MAA2B,EAAE,MAAkB,KAAI;IACpE,OAAO,CAAC,MAAM,EAAE,MAAuB,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC1D,CAAC;;;;"}
|
|
@@ -2,18 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
var algosdk = require('algosdk');
|
|
4
4
|
|
|
5
|
-
function getEquivalentType(abiTypeStr, ioType) {
|
|
5
|
+
function getEquivalentType(abiTypeStr, ioType, ctx) {
|
|
6
|
+
const { app, sanitizer } = ctx;
|
|
6
7
|
if (abiTypeStr == 'void') {
|
|
7
8
|
return 'void';
|
|
8
9
|
}
|
|
10
|
+
if (abiTypeStr == 'bytes') {
|
|
11
|
+
return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array';
|
|
12
|
+
}
|
|
9
13
|
if (algosdk.abiTypeIsTransaction(abiTypeStr)) {
|
|
10
|
-
return '
|
|
14
|
+
return 'AppMethodCallTransactionArgument';
|
|
11
15
|
}
|
|
12
16
|
if (abiTypeStr == algosdk.ABIReferenceType.account) {
|
|
13
17
|
return 'string | Uint8Array';
|
|
14
18
|
}
|
|
15
19
|
if (abiTypeStr == algosdk.ABIReferenceType.application || abiTypeStr == algosdk.ABIReferenceType.asset) {
|
|
16
|
-
return '
|
|
20
|
+
return 'bigint';
|
|
21
|
+
}
|
|
22
|
+
if (Object.keys(app.structs).includes(abiTypeStr)) {
|
|
23
|
+
return sanitizer.makeSafeTypeIdentifier(abiTypeStr);
|
|
17
24
|
}
|
|
18
25
|
const abiType = algosdk.ABIType.from(abiTypeStr);
|
|
19
26
|
return abiTypeToTs(abiType, ioType);
|
|
@@ -27,9 +34,6 @@ function getEquivalentType(abiTypeStr, ioType) {
|
|
|
27
34
|
if (abiType.childType instanceof algosdk.ABIByteType)
|
|
28
35
|
return 'Uint8Array';
|
|
29
36
|
const childTsType = abiTypeToTs(abiType.childType, ioType);
|
|
30
|
-
if (childTsType === 'bigint | number') {
|
|
31
|
-
return 'bigint[] | number[]';
|
|
32
|
-
}
|
|
33
37
|
return `${childTsType}[]`;
|
|
34
38
|
}
|
|
35
39
|
if (abiType instanceof algosdk.ABIArrayStaticType) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-equivalent-type.js","sources":["../../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport {\n ABIAddressType,\n ABIArrayDynamicType,\n ABIArrayStaticType,\n ABIBoolType,\n ABIByteType,\n ABIReferenceType,\n ABIStringType,\n ABITupleType,\n ABIType,\n ABIUfixedType,\n ABIUintType,\n abiTypeIsTransaction,\n} from 'algosdk'\nimport { Sanitizer } from '../../util/sanitization'\n\nexport function getEquivalentType(\n abiTypeStr: string,\n ioType: 'input' | 'output',\n ctx: { app: Arc56Contract; sanitizer: Sanitizer },\n): string {\n const { app, sanitizer } = ctx\n if (abiTypeStr == 'void') {\n return 'void'\n }\n if (abiTypeStr == 'bytes') {\n return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array'\n }\n if (abiTypeIsTransaction(abiTypeStr)) {\n return 'AppMethodCallTransactionArgument'\n }\n if (abiTypeStr == ABIReferenceType.account) {\n return 'string | Uint8Array'\n }\n if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {\n return 'bigint'\n }\n if (Object.keys(app.structs).includes(abiTypeStr)) {\n return sanitizer.makeSafeTypeIdentifier(abiTypeStr)\n }\n\n const abiType = ABIType.from(abiTypeStr)\n\n return abiTypeToTs(abiType, ioType)\n\n function abiTypeToTs(abiType: ABIType, ioType: 'input' | 'output'): string {\n if (abiType instanceof ABIUintType) {\n if (abiType.bitSize <= 51) return 'number'\n return ioType === 'input' ? 'bigint | number' : 'bigint'\n }\n if (abiType instanceof ABIArrayDynamicType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n\n const childTsType = abiTypeToTs(abiType.childType, ioType)\n return `${childTsType}[]`\n }\n if (abiType instanceof ABIArrayStaticType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIAddressType) {\n return 'string'\n }\n if (abiType instanceof ABIBoolType) {\n return 'boolean'\n }\n if (abiType instanceof ABIUfixedType) {\n return 'number'\n }\n if (abiType instanceof ABITupleType) {\n return `[${abiType.childTypes.map((c) => abiTypeToTs(c, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIByteType) {\n return 'number'\n }\n if (abiType instanceof ABIStringType) {\n return 'string'\n }\n return 'unknown'\n }\n}\n"],"names":["abiTypeIsTransaction","ABIReferenceType","ABIType","ABIUintType","ABIArrayDynamicType","ABIByteType","ABIArrayStaticType","ABIAddressType","ABIBoolType","ABIUfixedType","ABITupleType","ABIStringType"],"mappings":"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"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { abiTypeIsTransaction, ABIReferenceType, ABIType, ABIUintType, ABIArrayDynamicType, ABIByteType, ABIArrayStaticType, ABIAddressType, ABIBoolType, ABIUfixedType, ABITupleType, ABIStringType } from 'algosdk';
|
|
2
2
|
|
|
3
|
-
function getEquivalentType(abiTypeStr, ioType) {
|
|
3
|
+
function getEquivalentType(abiTypeStr, ioType, ctx) {
|
|
4
|
+
const { app, sanitizer } = ctx;
|
|
4
5
|
if (abiTypeStr == 'void') {
|
|
5
6
|
return 'void';
|
|
6
7
|
}
|
|
8
|
+
if (abiTypeStr == 'bytes') {
|
|
9
|
+
return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array';
|
|
10
|
+
}
|
|
7
11
|
if (abiTypeIsTransaction(abiTypeStr)) {
|
|
8
|
-
return '
|
|
12
|
+
return 'AppMethodCallTransactionArgument';
|
|
9
13
|
}
|
|
10
14
|
if (abiTypeStr == ABIReferenceType.account) {
|
|
11
15
|
return 'string | Uint8Array';
|
|
12
16
|
}
|
|
13
17
|
if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {
|
|
14
|
-
return '
|
|
18
|
+
return 'bigint';
|
|
19
|
+
}
|
|
20
|
+
if (Object.keys(app.structs).includes(abiTypeStr)) {
|
|
21
|
+
return sanitizer.makeSafeTypeIdentifier(abiTypeStr);
|
|
15
22
|
}
|
|
16
23
|
const abiType = ABIType.from(abiTypeStr);
|
|
17
24
|
return abiTypeToTs(abiType, ioType);
|
|
@@ -25,9 +32,6 @@ function getEquivalentType(abiTypeStr, ioType) {
|
|
|
25
32
|
if (abiType.childType instanceof ABIByteType)
|
|
26
33
|
return 'Uint8Array';
|
|
27
34
|
const childTsType = abiTypeToTs(abiType.childType, ioType);
|
|
28
|
-
if (childTsType === 'bigint | number') {
|
|
29
|
-
return 'bigint[] | number[]';
|
|
30
|
-
}
|
|
31
35
|
return `${childTsType}[]`;
|
|
32
36
|
}
|
|
33
37
|
if (abiType instanceof ABIArrayStaticType) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-equivalent-type.mjs","sources":["../../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport {\n ABIAddressType,\n ABIArrayDynamicType,\n ABIArrayStaticType,\n ABIBoolType,\n ABIByteType,\n ABIReferenceType,\n ABIStringType,\n ABITupleType,\n ABIType,\n ABIUfixedType,\n ABIUintType,\n abiTypeIsTransaction,\n} from 'algosdk'\nimport { Sanitizer } from '../../util/sanitization'\n\nexport function getEquivalentType(\n abiTypeStr: string,\n ioType: 'input' | 'output',\n ctx: { app: Arc56Contract; sanitizer: Sanitizer },\n): string {\n const { app, sanitizer } = ctx\n if (abiTypeStr == 'void') {\n return 'void'\n }\n if (abiTypeStr == 'bytes') {\n return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array'\n }\n if (abiTypeIsTransaction(abiTypeStr)) {\n return 'AppMethodCallTransactionArgument'\n }\n if (abiTypeStr == ABIReferenceType.account) {\n return 'string | Uint8Array'\n }\n if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {\n return 'bigint'\n }\n if (Object.keys(app.structs).includes(abiTypeStr)) {\n return sanitizer.makeSafeTypeIdentifier(abiTypeStr)\n }\n\n const abiType = ABIType.from(abiTypeStr)\n\n return abiTypeToTs(abiType, ioType)\n\n function abiTypeToTs(abiType: ABIType, ioType: 'input' | 'output'): string {\n if (abiType instanceof ABIUintType) {\n if (abiType.bitSize <= 51) return 'number'\n return ioType === 'input' ? 'bigint | number' : 'bigint'\n }\n if (abiType instanceof ABIArrayDynamicType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n\n const childTsType = abiTypeToTs(abiType.childType, ioType)\n return `${childTsType}[]`\n }\n if (abiType instanceof ABIArrayStaticType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIAddressType) {\n return 'string'\n }\n if (abiType instanceof ABIBoolType) {\n return 'boolean'\n }\n if (abiType instanceof ABIUfixedType) {\n return 'number'\n }\n if (abiType instanceof ABITupleType) {\n return `[${abiType.childTypes.map((c) => abiTypeToTs(c, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIByteType) {\n return 'number'\n }\n if (abiType instanceof ABIStringType) {\n return 'string'\n }\n return 'unknown'\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function* imports() {
|
|
4
|
+
yield `
|
|
5
|
+
import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'
|
|
6
|
+
import { Arc56Contract, getArc56ReturnValue } from '@algorandfoundation/algokit-utils/types/app-arc56'
|
|
7
|
+
import {
|
|
8
|
+
AppClient,
|
|
9
|
+
AppClientMethodCallParams,
|
|
10
|
+
AppClientParams,
|
|
11
|
+
AppClientBareCallParams,
|
|
12
|
+
CallOnComplete,
|
|
13
|
+
AppClientCompilationParams,
|
|
14
|
+
ResolveAppClientByCreatorAndName,
|
|
15
|
+
} from '@algorandfoundation/algokit-utils/types/app-client'
|
|
16
|
+
import { AppFactory, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'
|
|
17
|
+
import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'
|
|
18
|
+
import { ExecuteParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'
|
|
19
|
+
import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'
|
|
20
|
+
import SimulateResponse = modelsv2.SimulateResponse
|
|
21
|
+
`;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.imports = imports;
|
|
25
|
+
//# sourceMappingURL=imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imports.js","sources":["../../../src/client/imports.ts"],"sourcesContent":["import { DocumentParts } from '../output/writer'\n\nexport function* imports(): DocumentParts {\n yield `\n import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'\n import { Arc56Contract, getArc56ReturnValue } from '@algorandfoundation/algokit-utils/types/app-arc56'\n import {\n AppClient,\n AppClientMethodCallParams,\n AppClientParams,\n AppClientBareCallParams,\n CallOnComplete,\n AppClientCompilationParams,\n ResolveAppClientByCreatorAndName,\n } from '@algorandfoundation/algokit-utils/types/app-client'\n import { AppFactory, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'\n import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'\n import { ExecuteParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'\n import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'\n import SimulateResponse = modelsv2.SimulateResponse\n `\n}\n"],"names":[],"mappings":";;AAEM,UAAW,OAAO,GAAA;IACtB,MAAM,CAAA;;;;;;;;;;;;;;;;;GAiBL,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
function* imports() {
|
|
2
|
+
yield `
|
|
3
|
+
import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'
|
|
4
|
+
import { Arc56Contract, getArc56ReturnValue } from '@algorandfoundation/algokit-utils/types/app-arc56'
|
|
5
|
+
import {
|
|
6
|
+
AppClient,
|
|
7
|
+
AppClientMethodCallParams,
|
|
8
|
+
AppClientParams,
|
|
9
|
+
AppClientBareCallParams,
|
|
10
|
+
CallOnComplete,
|
|
11
|
+
AppClientCompilationParams,
|
|
12
|
+
ResolveAppClientByCreatorAndName,
|
|
13
|
+
} from '@algorandfoundation/algokit-utils/types/app-client'
|
|
14
|
+
import { AppFactory, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'
|
|
15
|
+
import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'
|
|
16
|
+
import { ExecuteParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'
|
|
17
|
+
import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'
|
|
18
|
+
import SimulateResponse = modelsv2.SimulateResponse
|
|
19
|
+
`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { imports };
|
|
23
|
+
//# sourceMappingURL=imports.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imports.mjs","sources":["../../../src/client/imports.ts"],"sourcesContent":["import { DocumentParts } from '../output/writer'\n\nexport function* imports(): DocumentParts {\n yield `\n import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'\n import { Arc56Contract, getArc56ReturnValue } from '@algorandfoundation/algokit-utils/types/app-arc56'\n import {\n AppClient,\n AppClientMethodCallParams,\n AppClientParams,\n AppClientBareCallParams,\n CallOnComplete,\n AppClientCompilationParams,\n ResolveAppClientByCreatorAndName,\n } from '@algorandfoundation/algokit-utils/types/app-client'\n import { AppFactory, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'\n import AlgoKitComposer, { AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'\n import { ExecuteParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'\n import { modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'\n import SimulateResponse = modelsv2.SimulateResponse\n `\n}\n"],"names":[],"mappings":"AAEM,UAAW,OAAO,GAAA;IACtB,MAAM,CAAA;;;;;;;;;;;;;;;;;GAiBL,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var writer = require('../output/writer.js');
|
|
4
|
+
var getCallConfigSummary = require('./helpers/get-call-config-summary.js');
|
|
5
|
+
var deployTypes = require('./deploy-types.js');
|
|
6
|
+
var algosdk = require('algosdk');
|
|
7
|
+
|
|
8
|
+
function* paramsFactory(ctx) {
|
|
9
|
+
yield* writer.jsDoc(`Exposes methods for constructing \`AppClient\` params objects for ABI calls to the ${ctx.name} smart contract`);
|
|
10
|
+
yield `export abstract class ${ctx.name}ParamsFactory {`;
|
|
11
|
+
yield writer.IncIndent;
|
|
12
|
+
yield* opMethods(ctx);
|
|
13
|
+
for (const method of ctx.app.methods) {
|
|
14
|
+
yield* callFactoryMethod(ctx, method);
|
|
15
|
+
}
|
|
16
|
+
yield writer.DecIndent;
|
|
17
|
+
yield '}';
|
|
18
|
+
}
|
|
19
|
+
function* opMethods(ctx) {
|
|
20
|
+
const { app, callConfig } = ctx;
|
|
21
|
+
yield* operationMethod(ctx, `Constructs create ABI call params for the ${app.name} smart contract`, callConfig.createMethods, 'create', true);
|
|
22
|
+
yield* operationMethod(ctx, `Constructs update ABI call params for the ${app.name} smart contract`, callConfig.updateMethods, 'update', true);
|
|
23
|
+
yield* operationMethod(ctx, `Constructs delete ABI call params for the ${app.name} smart contract`, callConfig.deleteMethods, 'delete');
|
|
24
|
+
yield* operationMethod(ctx, `Constructs opt-in ABI call params for the ${app.name} smart contract`, callConfig.optInMethods, 'optIn');
|
|
25
|
+
yield* operationMethod(ctx, `Constructs close out ABI call params for the ${app.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
|
|
26
|
+
}
|
|
27
|
+
function* operationMethod(ctx, description, methods, verb, includeCompilation) {
|
|
28
|
+
const { app, methodSignatureToUniqueName, sanitizer } = ctx;
|
|
29
|
+
if (methods.length > 0 && methods.some((m) => m !== getCallConfigSummary.BARE_CALL)) {
|
|
30
|
+
yield* writer.jsDoc(`Gets available ${verb} ABI call param factories`);
|
|
31
|
+
yield `static get ${verb}() {`;
|
|
32
|
+
yield writer.IncIndent;
|
|
33
|
+
yield `return {`;
|
|
34
|
+
yield writer.IncIndent;
|
|
35
|
+
if (['create', 'update', 'delete'].includes(verb)) {
|
|
36
|
+
yield `_resolveByMethod<TParams extends ${ctx.name}${verb[0].toUpperCase()}${verb.substring(1)}CallParams & {method: string}>(params: TParams) {`;
|
|
37
|
+
yield writer.IncIndent;
|
|
38
|
+
yield `switch(params.method) {`;
|
|
39
|
+
yield writer.IncIndent;
|
|
40
|
+
for (const methodSig of methods) {
|
|
41
|
+
if (methodSig === getCallConfigSummary.BARE_CALL)
|
|
42
|
+
continue;
|
|
43
|
+
const uniqueName = methodSignatureToUniqueName[methodSig];
|
|
44
|
+
if (uniqueName !== methodSig) {
|
|
45
|
+
yield `case '${sanitizer.makeSafeStringTypeLiteral(uniqueName)}':`;
|
|
46
|
+
}
|
|
47
|
+
yield `case '${sanitizer.makeSafeStringTypeLiteral(methodSig)}':`;
|
|
48
|
+
yield* writer.indent(`return ${ctx.name}ParamsFactory.${verb}.${sanitizer.makeSafeMethodIdentifier(uniqueName)}(params)`);
|
|
49
|
+
}
|
|
50
|
+
yield writer.DecIndentAndCloseBlock;
|
|
51
|
+
// Ordinarily we'd pop in the params.method value, but we can't here since it knows at compile time the type of params.method is never
|
|
52
|
+
yield `throw new Error(\`Unknown ' + verb + ' method\`)`;
|
|
53
|
+
yield writer.DecIndent;
|
|
54
|
+
yield '},';
|
|
55
|
+
yield writer.NewLine;
|
|
56
|
+
}
|
|
57
|
+
for (const methodSig of methods) {
|
|
58
|
+
const onComplete = verb === 'create' ? deployTypes.getCreateOnCompleteOptions(methodSig, app) : undefined;
|
|
59
|
+
if (methodSig !== getCallConfigSummary.BARE_CALL) {
|
|
60
|
+
const method = app.methods.find((m) => new algosdk.ABIMethod(m).getSignature() === methodSig);
|
|
61
|
+
const uniqueName = methodSignatureToUniqueName[methodSig];
|
|
62
|
+
yield* writer.jsDoc({
|
|
63
|
+
description: `${description} using the ${methodSig} ABI method`,
|
|
64
|
+
params: {
|
|
65
|
+
params: `Parameters for the call`,
|
|
66
|
+
},
|
|
67
|
+
returns: 'An `AppClientMethodCallParams` object for the call',
|
|
68
|
+
});
|
|
69
|
+
yield* factoryMethod({
|
|
70
|
+
isNested: true,
|
|
71
|
+
sanitizer,
|
|
72
|
+
name: sanitizer.makeSafeMethodIdentifier(uniqueName),
|
|
73
|
+
signature: methodSig,
|
|
74
|
+
args: method.args,
|
|
75
|
+
additionalParamTypes: `${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}`,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
yield writer.DecIndentAndCloseBlock;
|
|
80
|
+
yield writer.DecIndentAndCloseBlock;
|
|
81
|
+
yield writer.NewLine;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer }, method) {
|
|
85
|
+
const methodSignature = new algosdk.ABIMethod(method).getSignature();
|
|
86
|
+
if (!callConfig.callMethods.includes(methodSignature))
|
|
87
|
+
return;
|
|
88
|
+
yield* writer.jsDoc({
|
|
89
|
+
description: `Constructs a no op call for the ${methodSignature} ABI method`,
|
|
90
|
+
abiDescription: method.desc,
|
|
91
|
+
params: {
|
|
92
|
+
params: `Parameters for the call`,
|
|
93
|
+
},
|
|
94
|
+
returns: 'An `AppClientMethodCallParams` object for the call',
|
|
95
|
+
});
|
|
96
|
+
yield* factoryMethod({
|
|
97
|
+
isNested: false,
|
|
98
|
+
sanitizer,
|
|
99
|
+
name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),
|
|
100
|
+
signature: methodSignature,
|
|
101
|
+
args: method.args,
|
|
102
|
+
additionalParamTypes: ' & CallOnComplete',
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function* factoryMethod(m) {
|
|
106
|
+
const { isNested, name, signature, args, additionalParamTypes, sanitizer } = m;
|
|
107
|
+
const signatureSafe = signature && sanitizer.makeSafeStringTypeLiteral(signature);
|
|
108
|
+
yield `${isNested ? '' : 'static '}${name}(params: CallParams<'${signatureSafe}'>${additionalParamTypes}): AppClientMethodCallParams${additionalParamTypes} {`;
|
|
109
|
+
yield writer.IncIndent;
|
|
110
|
+
yield `return {`;
|
|
111
|
+
yield writer.IncIndent;
|
|
112
|
+
yield '...params,';
|
|
113
|
+
if (signature) {
|
|
114
|
+
yield `method: '${signatureSafe}' as const,`;
|
|
115
|
+
yield `args: Array.isArray(params.args) ? params.args : [${args
|
|
116
|
+
.map((a, i) => `params.args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name ?? `arg${i + 1}`))}`)
|
|
117
|
+
.join(', ')}],`;
|
|
118
|
+
}
|
|
119
|
+
yield writer.DecIndent;
|
|
120
|
+
yield '}';
|
|
121
|
+
yield writer.DecIndent;
|
|
122
|
+
yield `}${isNested ? ',' : ''}`;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
exports.paramsFactory = paramsFactory;
|
|
126
|
+
//# sourceMappingURL=params-factory.js.map
|