@algorandfoundation/algokit-client-generator 2.6.0 → 3.0.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/bin/cli.mjs +4 -0
- package/cli.d.ts +0 -1
- package/cli.js +47 -49
- package/cli.js.map +1 -1
- package/cli.mjs +56 -0
- package/cli.mjs.map +1 -0
- package/client/app-types.d.ts +0 -1
- package/client/app-types.js +92 -97
- package/client/app-types.js.map +1 -1
- package/client/app-types.mjs +135 -0
- package/client/app-types.mjs.map +1 -0
- package/client/call-client.d.ts +0 -1
- package/client/call-client.js +145 -143
- package/client/call-client.js.map +1 -1
- package/client/call-client.mjs +320 -0
- package/client/call-client.mjs.map +1 -0
- package/client/call-composer-types.d.ts +0 -1
- package/client/call-composer-types.js +60 -62
- package/client/call-composer-types.js.map +1 -1
- package/client/call-composer-types.mjs +122 -0
- package/client/call-composer-types.mjs.map +1 -0
- package/client/call-composer.d.ts +0 -1
- package/client/call-composer.js +76 -78
- package/client/call-composer.js.map +1 -1
- package/client/call-composer.mjs +128 -0
- package/client/call-composer.mjs.map +1 -0
- package/client/call-factory.d.ts +0 -1
- package/client/call-factory.js +62 -62
- package/client/call-factory.js.map +1 -1
- package/client/call-factory.mjs +121 -0
- package/client/call-factory.mjs.map +1 -0
- package/client/deploy-types.d.ts +1 -2
- package/client/deploy-types.js +42 -40
- package/client/deploy-types.js.map +1 -1
- package/client/deploy-types.mjs +94 -0
- package/client/deploy-types.mjs.map +1 -0
- package/client/generate.d.ts +2 -2
- package/client/generate.js +28 -27
- package/client/generate.js.map +1 -1
- package/client/generate.mjs +36 -0
- package/client/generate.mjs.map +1 -0
- package/client/generator-context.d.ts +7 -2
- package/client/generator-context.js +39 -38
- package/client/generator-context.js.map +1 -1
- package/client/generator-context.mjs +21 -0
- package/client/generator-context.mjs.map +1 -0
- package/client/helpers/get-call-config-summary.d.ts +1 -2
- package/client/helpers/get-call-config-summary.js +8 -25
- package/client/helpers/get-call-config-summary.js.map +1 -1
- package/client/helpers/get-call-config-summary.mjs +55 -0
- package/client/helpers/get-call-config-summary.mjs.map +1 -0
- package/client/helpers/get-equivalent-type.d.ts +0 -1
- package/client/helpers/get-equivalent-type.js +21 -20
- package/client/helpers/get-equivalent-type.js.map +1 -1
- package/client/helpers/get-equivalent-type.mjs +57 -0
- package/client/helpers/get-equivalent-type.mjs.map +1 -0
- package/client/imports.d.ts +0 -1
- package/client/imports.js +4 -4
- package/client/imports.js.map +1 -1
- package/client/imports.mjs +28 -0
- package/client/imports.mjs.map +1 -0
- package/client/utility-types.d.ts +0 -1
- package/client/utility-types.js +27 -25
- package/client/utility-types.js.map +1 -1
- package/client/utility-types.mjs +48 -0
- package/client/utility-types.mjs.map +1 -0
- package/dev.d.ts +0 -1
- package/index.d.ts +0 -1
- package/index.js +14 -12
- package/index.js.map +1 -1
- package/index.mjs +4 -0
- package/index.mjs.map +1 -0
- package/output/writer.d.ts +0 -1
- package/output/writer.js +45 -38
- package/output/writer.js.map +1 -1
- package/output/writer.mjs +140 -0
- package/output/writer.mjs.map +1 -0
- package/package.json +9 -4
- package/schema/application.schema.json.js +375 -0
- package/schema/application.schema.json.js.map +1 -0
- package/schema/application.schema.json.mjs +364 -0
- package/schema/application.schema.json.mjs.map +1 -0
- package/schema/contract.schema.json.js +160 -0
- package/schema/contract.schema.json.js.map +1 -0
- package/schema/contract.schema.json.mjs +149 -0
- package/schema/contract.schema.json.mjs.map +1 -0
- package/schema/load.d.ts +0 -1
- package/schema/load.js +16 -41
- package/schema/load.js.map +1 -1
- package/schema/load.mjs +23 -0
- package/schema/load.mjs.map +1 -0
- package/tests/approval-tests.spec.d.ts +0 -1
- package/tests/util.d.ts +1 -0
- package/util/boom.d.ts +0 -1
- package/util/boom.js +4 -4
- package/util/boom.js.map +1 -1
- package/util/boom.mjs +6 -0
- package/util/boom.mjs.map +1 -0
- package/util/color-console.d.ts +0 -1
- package/util/color-console.js +12 -13
- package/util/color-console.js.map +1 -1
- package/util/color-console.mjs +17 -0
- package/util/color-console.mjs.map +1 -0
- package/util/not-falsy.d.ts +0 -1
- package/util/sanitization.d.ts +12 -6
- package/util/sanitization.js +54 -15
- package/util/sanitization.js.map +1 -1
- package/util/sanitization.mjs +54 -0
- package/util/sanitization.mjs.map +1 -0
- package/bin/cli.js +0 -4
- package/cli.d.ts.map +0 -1
- package/client/app-types.d.ts.map +0 -1
- package/client/call-client.d.ts.map +0 -1
- package/client/call-composer-types.d.ts.map +0 -1
- package/client/call-composer.d.ts.map +0 -1
- package/client/call-factory.d.ts.map +0 -1
- package/client/deploy-types.d.ts.map +0 -1
- package/client/generate.d.ts.map +0 -1
- package/client/generator-context.d.ts.map +0 -1
- package/client/helpers/get-call-config-summary.d.ts.map +0 -1
- package/client/helpers/get-equivalent-type.d.ts.map +0 -1
- package/client/imports.d.ts.map +0 -1
- package/client/utility-types.d.ts.map +0 -1
- package/dev.d.ts.map +0 -1
- package/dev.js +0 -5
- package/dev.js.map +0 -1
- package/index.d.ts.map +0 -1
- package/output/writer.d.ts.map +0 -1
- package/schema/application.schema.json +0 -354
- package/schema/contract.schema.json +0 -139
- package/schema/load.d.ts.map +0 -1
- package/tests/approval-tests.spec.d.ts.map +0 -1
- package/tests/approval-tests.spec.js +0 -24
- package/tests/approval-tests.spec.js.map +0 -1
- package/util/boom.d.ts.map +0 -1
- package/util/color-console.d.ts.map +0 -1
- package/util/not-falsy.d.ts.map +0 -1
- package/util/not-falsy.js +0 -6
- package/util/not-falsy.js.map +0 -1
- package/util/sanitization.d.ts.map +0 -1
package/client/call-factory.js
CHANGED
|
@@ -1,46 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var writer = require('../output/writer.js');
|
|
4
|
+
var algokit = require('@algorandfoundation/algokit-utils');
|
|
5
|
+
var getCallConfigSummary = require('./helpers/get-call-config-summary.js');
|
|
6
|
+
var deployTypes = require('./deploy-types.js');
|
|
7
|
+
|
|
8
|
+
function _interopNamespaceDefault(e) {
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
7
20
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.callFactory = void 0;
|
|
27
|
-
const writer_1 = require("../output/writer");
|
|
28
|
-
const sanitization_1 = require("../util/sanitization");
|
|
29
|
-
const algokit = __importStar(require("@algorandfoundation/algokit-utils"));
|
|
30
|
-
const get_call_config_summary_1 = require("./helpers/get-call-config-summary");
|
|
31
|
-
const deploy_types_1 = require("./deploy-types");
|
|
21
|
+
n.default = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var algokit__namespace = /*#__PURE__*/_interopNamespaceDefault(algokit);
|
|
26
|
+
|
|
32
27
|
function* callFactory(ctx) {
|
|
33
|
-
yield*
|
|
28
|
+
yield* writer.jsDoc('Exposes methods for constructing all available smart contract calls');
|
|
34
29
|
yield `export abstract class ${ctx.name}CallFactory {`;
|
|
35
|
-
yield
|
|
30
|
+
yield writer.IncIndent;
|
|
36
31
|
yield* opMethods(ctx);
|
|
37
32
|
for (const method of ctx.app.contract.methods) {
|
|
38
33
|
yield* callFactoryMethod(ctx, method);
|
|
39
34
|
}
|
|
40
|
-
yield
|
|
35
|
+
yield writer.DecIndent;
|
|
41
36
|
yield '}';
|
|
42
37
|
}
|
|
43
|
-
exports.callFactory = callFactory;
|
|
44
38
|
function* opMethods(ctx) {
|
|
45
39
|
const { app, callConfig } = ctx;
|
|
46
40
|
yield* operationMethod(ctx, `Constructs a create call for the ${app.contract.name} smart contract`, callConfig.createMethods, 'create', true);
|
|
@@ -49,17 +43,17 @@ function* opMethods(ctx) {
|
|
|
49
43
|
yield* operationMethod(ctx, `Constructs an opt in call for the ${app.contract.name} smart contract`, callConfig.optInMethods, 'optIn');
|
|
50
44
|
yield* operationMethod(ctx, `Constructs a close out call for the ${app.contract.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
|
|
51
45
|
}
|
|
52
|
-
function* operationMethod({ app, methodSignatureToUniqueName }, description, methods, verb, includeCompilation) {
|
|
46
|
+
function* operationMethod({ app, methodSignatureToUniqueName, sanitizer }, description, methods, verb, includeCompilation) {
|
|
53
47
|
if (methods.length) {
|
|
54
|
-
yield*
|
|
48
|
+
yield* writer.jsDoc(`Gets available ${verb} call factories`);
|
|
55
49
|
yield `static get ${verb}() {`;
|
|
56
|
-
yield
|
|
50
|
+
yield writer.IncIndent;
|
|
57
51
|
yield `return {`;
|
|
58
|
-
yield
|
|
52
|
+
yield writer.IncIndent;
|
|
59
53
|
for (const methodSig of methods) {
|
|
60
|
-
const onComplete = verb === 'create' ?
|
|
61
|
-
if (methodSig ===
|
|
62
|
-
yield*
|
|
54
|
+
const onComplete = verb === 'create' ? deployTypes.getCreateOnCompleteOptions(methodSig, app) : undefined;
|
|
55
|
+
if (methodSig === getCallConfigSummary.BARE_CALL) {
|
|
56
|
+
yield* writer.jsDoc({
|
|
63
57
|
description: `${description} using a bare call`,
|
|
64
58
|
params: {
|
|
65
59
|
params: `Any parameters for the call`,
|
|
@@ -69,13 +63,14 @@ function* operationMethod({ app, methodSignatureToUniqueName }, description, met
|
|
|
69
63
|
yield* factoryMethod({
|
|
70
64
|
isNested: true,
|
|
71
65
|
name: 'bare',
|
|
72
|
-
|
|
66
|
+
sanitizer,
|
|
67
|
+
paramTypes: `BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,
|
|
73
68
|
});
|
|
74
69
|
}
|
|
75
70
|
else {
|
|
76
|
-
const method = app.contract.methods.find((m) =>
|
|
71
|
+
const method = app.contract.methods.find((m) => algokit__namespace.getABIMethodSignature(m) === methodSig);
|
|
77
72
|
const uniqueName = methodSignatureToUniqueName[methodSig];
|
|
78
|
-
yield*
|
|
73
|
+
yield* writer.jsDoc({
|
|
79
74
|
description: `${description} using the ${methodSig} ABI method`,
|
|
80
75
|
params: {
|
|
81
76
|
args: `Any args for the contract call`,
|
|
@@ -85,23 +80,24 @@ function* operationMethod({ app, methodSignatureToUniqueName }, description, met
|
|
|
85
80
|
});
|
|
86
81
|
yield* factoryMethod({
|
|
87
82
|
isNested: true,
|
|
88
|
-
|
|
83
|
+
sanitizer,
|
|
84
|
+
name: sanitizer.makeSafeMethodIdentifier(uniqueName),
|
|
89
85
|
signature: methodSig,
|
|
90
86
|
args: method.args,
|
|
91
|
-
paramTypes: `AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${
|
|
87
|
+
paramTypes: `AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,
|
|
92
88
|
});
|
|
93
89
|
}
|
|
94
90
|
}
|
|
95
|
-
yield
|
|
96
|
-
yield
|
|
97
|
-
yield
|
|
91
|
+
yield writer.DecIndentAndCloseBlock;
|
|
92
|
+
yield writer.DecIndentAndCloseBlock;
|
|
93
|
+
yield writer.NewLine;
|
|
98
94
|
}
|
|
99
95
|
}
|
|
100
|
-
function* callFactoryMethod({ methodSignatureToUniqueName, callConfig }, method) {
|
|
101
|
-
const methodSignature =
|
|
96
|
+
function* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer }, method) {
|
|
97
|
+
const methodSignature = algokit__namespace.getABIMethodSignature(method);
|
|
102
98
|
if (!callConfig.callMethods.includes(methodSignature))
|
|
103
99
|
return;
|
|
104
|
-
yield*
|
|
100
|
+
yield* writer.jsDoc({
|
|
105
101
|
description: `Constructs a no op call for the ${methodSignature} ABI method`,
|
|
106
102
|
abiDescription: method.desc,
|
|
107
103
|
params: {
|
|
@@ -112,21 +108,23 @@ function* callFactoryMethod({ methodSignatureToUniqueName, callConfig }, method)
|
|
|
112
108
|
});
|
|
113
109
|
yield* factoryMethod({
|
|
114
110
|
isNested: false,
|
|
115
|
-
|
|
111
|
+
sanitizer,
|
|
112
|
+
name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),
|
|
116
113
|
signature: methodSignature,
|
|
117
114
|
args: method.args,
|
|
118
115
|
paramTypes: 'AppClientCallCoreParams & CoreAppCallArgs',
|
|
119
116
|
});
|
|
120
117
|
}
|
|
121
|
-
function* factoryMethod({ isNested, name, signature, args, paramTypes, }) {
|
|
122
|
-
|
|
123
|
-
yield
|
|
118
|
+
function* factoryMethod({ isNested, name, signature, args, paramTypes, sanitizer, }) {
|
|
119
|
+
const signatureSafe = signature && sanitizer.makeSafeStringTypeLiteral(signature);
|
|
120
|
+
yield `${isNested ? '' : 'static '}${name}(${signature === undefined ? '' : `args: MethodArgs<'${signatureSafe}'>, `}params: ${paramTypes}) {`;
|
|
121
|
+
yield writer.IncIndent;
|
|
124
122
|
yield `return {`;
|
|
125
|
-
yield
|
|
123
|
+
yield writer.IncIndent;
|
|
126
124
|
if (signature) {
|
|
127
|
-
yield `method: '${
|
|
125
|
+
yield `method: '${signatureSafe}' as const,`;
|
|
128
126
|
yield `methodArgs: Array.isArray(args) ? args : [${args
|
|
129
|
-
.map((a) =>
|
|
127
|
+
.map((a) => `args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name))}`)
|
|
130
128
|
.join(', ')}],`;
|
|
131
129
|
}
|
|
132
130
|
else {
|
|
@@ -134,9 +132,11 @@ function* factoryMethod({ isNested, name, signature, args, paramTypes, }) {
|
|
|
134
132
|
yield `methodArgs: undefined,`;
|
|
135
133
|
}
|
|
136
134
|
yield '...params,';
|
|
137
|
-
yield
|
|
135
|
+
yield writer.DecIndent;
|
|
138
136
|
yield '}';
|
|
139
|
-
yield
|
|
137
|
+
yield writer.DecIndent;
|
|
140
138
|
yield `}${isNested ? ',' : ''}`;
|
|
141
139
|
}
|
|
142
|
-
|
|
140
|
+
|
|
141
|
+
exports.callFactory = callFactory;
|
|
142
|
+
//# sourceMappingURL=call-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-factory.js","sourceRoot":"","sources":["../../src/client/call-factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"call-factory.js","sources":["../../src/client/call-factory.ts"],"sourcesContent":["import { ContractMethod } from '../schema/application'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport * as algokit from '@algorandfoundation/algokit-utils'\nimport { GeneratorContext } from './generator-context'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { Sanitizer } from '../util/sanitization'\n\nexport function* callFactory(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc('Exposes methods for constructing all available smart contract calls')\n yield `export abstract class ${ctx.name}CallFactory {`\n yield IncIndent\n\n yield* opMethods(ctx)\n\n for (const method of ctx.app.contract.methods) {\n yield* callFactoryMethod(ctx, method)\n }\n\n yield DecIndent\n\n yield '}'\n}\n\nfunction* opMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethod(\n ctx,\n `Constructs a create call for the ${app.contract.name} smart contract`,\n callConfig.createMethods,\n 'create',\n true,\n )\n yield* operationMethod(\n ctx,\n `Constructs an update call for the ${app.contract.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n true,\n )\n yield* operationMethod(ctx, `Constructs a delete call for the ${app.contract.name} smart contract`, callConfig.deleteMethods, 'delete')\n yield* operationMethod(ctx, `Constructs an opt in call for the ${app.contract.name} smart contract`, callConfig.optInMethods, 'optIn')\n yield* operationMethod(\n ctx,\n `Constructs a close out call for the ${app.contract.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n}\n\nfunction* operationMethod(\n { app, methodSignatureToUniqueName, sanitizer }: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} call factories`)\n yield `static get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of methods) {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n if (methodSig === BARE_CALL) {\n yield* jsDoc({\n description: `${description} using a bare call`,\n params: {\n params: `Any parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: true,\n name: 'bare',\n sanitizer,\n paramTypes: `BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs${\n includeCompilation ? ' & AppClientCompilationParams' : ''\n }${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,\n })\n } else {\n const method = app.contract.methods.find((m) => algokit.getABIMethodSignature(m) === methodSig)!\n const uniqueName = methodSignatureToUniqueName[methodSig]\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method`,\n params: {\n args: `Any args for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: true,\n sanitizer,\n name: sanitizer.makeSafeMethodIdentifier(uniqueName),\n signature: methodSig,\n args: method.args,\n paramTypes: `AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.type ? ` & ${onComplete.type}` : ''\n }${onComplete?.isOptional !== false ? ' = {}' : ''}`,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n\nfunction* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer }: GeneratorContext, method: ContractMethod) {\n const methodSignature = algokit.getABIMethodSignature(method)\n if (!callConfig.callMethods.includes(methodSignature)) return\n\n yield* jsDoc({\n description: `Constructs a no op call for the ${methodSignature} ABI method`,\n abiDescription: method.desc,\n params: {\n args: `Any args for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: false,\n sanitizer,\n name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),\n signature: methodSignature,\n args: method.args,\n paramTypes: 'AppClientCallCoreParams & CoreAppCallArgs',\n })\n}\n\nfunction* factoryMethod({\n isNested,\n name,\n signature,\n args,\n paramTypes,\n sanitizer,\n}:\n | {\n isNested: boolean\n name?: string\n signature?: undefined\n args?: undefined\n paramTypes: string\n sanitizer: Sanitizer\n }\n | {\n isNested: boolean\n name?: string\n signature: string\n args: Array<{ name: string }>\n paramTypes: string\n sanitizer: Sanitizer\n }) {\n const signatureSafe = signature && sanitizer.makeSafeStringTypeLiteral(signature)\n yield `${isNested ? '' : 'static '}${name}(${signature === undefined ? '' : `args: MethodArgs<'${signatureSafe}'>, `}params: ${paramTypes}) {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n if (signature) {\n yield `method: '${signatureSafe}' as const,`\n yield `methodArgs: Array.isArray(args) ? args : [${args\n .map((a) => `args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name))}`)\n .join(', ')}],`\n } else {\n yield `method: undefined,`\n yield `methodArgs: undefined,`\n }\n\n yield '...params,'\n yield DecIndent\n yield '}'\n yield DecIndent\n yield `}${isNested ? ',' : ''}`\n}\n"],"names":["jsDoc","IncIndent","DecIndent","getCreateOnCompleteOptions","BARE_CALL","algokit","DecIndentAndCloseBlock","NewLine"],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { jsDoc, IncIndent, DecIndent, DecIndentAndCloseBlock, NewLine } from '../output/writer.mjs';
|
|
2
|
+
import * as algokit from '@algorandfoundation/algokit-utils';
|
|
3
|
+
import { BARE_CALL } from './helpers/get-call-config-summary.mjs';
|
|
4
|
+
import { getCreateOnCompleteOptions } from './deploy-types.mjs';
|
|
5
|
+
|
|
6
|
+
function* callFactory(ctx) {
|
|
7
|
+
yield* jsDoc('Exposes methods for constructing all available smart contract calls');
|
|
8
|
+
yield `export abstract class ${ctx.name}CallFactory {`;
|
|
9
|
+
yield IncIndent;
|
|
10
|
+
yield* opMethods(ctx);
|
|
11
|
+
for (const method of ctx.app.contract.methods) {
|
|
12
|
+
yield* callFactoryMethod(ctx, method);
|
|
13
|
+
}
|
|
14
|
+
yield DecIndent;
|
|
15
|
+
yield '}';
|
|
16
|
+
}
|
|
17
|
+
function* opMethods(ctx) {
|
|
18
|
+
const { app, callConfig } = ctx;
|
|
19
|
+
yield* operationMethod(ctx, `Constructs a create call for the ${app.contract.name} smart contract`, callConfig.createMethods, 'create', true);
|
|
20
|
+
yield* operationMethod(ctx, `Constructs an update call for the ${app.contract.name} smart contract`, callConfig.updateMethods, 'update', true);
|
|
21
|
+
yield* operationMethod(ctx, `Constructs a delete call for the ${app.contract.name} smart contract`, callConfig.deleteMethods, 'delete');
|
|
22
|
+
yield* operationMethod(ctx, `Constructs an opt in call for the ${app.contract.name} smart contract`, callConfig.optInMethods, 'optIn');
|
|
23
|
+
yield* operationMethod(ctx, `Constructs a close out call for the ${app.contract.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
|
|
24
|
+
}
|
|
25
|
+
function* operationMethod({ app, methodSignatureToUniqueName, sanitizer }, description, methods, verb, includeCompilation) {
|
|
26
|
+
if (methods.length) {
|
|
27
|
+
yield* jsDoc(`Gets available ${verb} call factories`);
|
|
28
|
+
yield `static get ${verb}() {`;
|
|
29
|
+
yield IncIndent;
|
|
30
|
+
yield `return {`;
|
|
31
|
+
yield IncIndent;
|
|
32
|
+
for (const methodSig of methods) {
|
|
33
|
+
const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined;
|
|
34
|
+
if (methodSig === BARE_CALL) {
|
|
35
|
+
yield* jsDoc({
|
|
36
|
+
description: `${description} using a bare call`,
|
|
37
|
+
params: {
|
|
38
|
+
params: `Any parameters for the call`,
|
|
39
|
+
},
|
|
40
|
+
returns: `A TypedCallParams object for the call`,
|
|
41
|
+
});
|
|
42
|
+
yield* factoryMethod({
|
|
43
|
+
isNested: true,
|
|
44
|
+
name: 'bare',
|
|
45
|
+
sanitizer,
|
|
46
|
+
paramTypes: `BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const method = app.contract.methods.find((m) => algokit.getABIMethodSignature(m) === methodSig);
|
|
51
|
+
const uniqueName = methodSignatureToUniqueName[methodSig];
|
|
52
|
+
yield* jsDoc({
|
|
53
|
+
description: `${description} using the ${methodSig} ABI method`,
|
|
54
|
+
params: {
|
|
55
|
+
args: `Any args for the contract call`,
|
|
56
|
+
params: `Any additional parameters for the call`,
|
|
57
|
+
},
|
|
58
|
+
returns: `A TypedCallParams object for the call`,
|
|
59
|
+
});
|
|
60
|
+
yield* factoryMethod({
|
|
61
|
+
isNested: true,
|
|
62
|
+
sanitizer,
|
|
63
|
+
name: sanitizer.makeSafeMethodIdentifier(uniqueName),
|
|
64
|
+
signature: methodSig,
|
|
65
|
+
args: method.args,
|
|
66
|
+
paramTypes: `AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
yield DecIndentAndCloseBlock;
|
|
71
|
+
yield DecIndentAndCloseBlock;
|
|
72
|
+
yield NewLine;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer }, method) {
|
|
76
|
+
const methodSignature = algokit.getABIMethodSignature(method);
|
|
77
|
+
if (!callConfig.callMethods.includes(methodSignature))
|
|
78
|
+
return;
|
|
79
|
+
yield* jsDoc({
|
|
80
|
+
description: `Constructs a no op call for the ${methodSignature} ABI method`,
|
|
81
|
+
abiDescription: method.desc,
|
|
82
|
+
params: {
|
|
83
|
+
args: `Any args for the contract call`,
|
|
84
|
+
params: `Any additional parameters for the call`,
|
|
85
|
+
},
|
|
86
|
+
returns: `A TypedCallParams object for the call`,
|
|
87
|
+
});
|
|
88
|
+
yield* factoryMethod({
|
|
89
|
+
isNested: false,
|
|
90
|
+
sanitizer,
|
|
91
|
+
name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),
|
|
92
|
+
signature: methodSignature,
|
|
93
|
+
args: method.args,
|
|
94
|
+
paramTypes: 'AppClientCallCoreParams & CoreAppCallArgs',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function* factoryMethod({ isNested, name, signature, args, paramTypes, sanitizer, }) {
|
|
98
|
+
const signatureSafe = signature && sanitizer.makeSafeStringTypeLiteral(signature);
|
|
99
|
+
yield `${isNested ? '' : 'static '}${name}(${signature === undefined ? '' : `args: MethodArgs<'${signatureSafe}'>, `}params: ${paramTypes}) {`;
|
|
100
|
+
yield IncIndent;
|
|
101
|
+
yield `return {`;
|
|
102
|
+
yield IncIndent;
|
|
103
|
+
if (signature) {
|
|
104
|
+
yield `method: '${signatureSafe}' as const,`;
|
|
105
|
+
yield `methodArgs: Array.isArray(args) ? args : [${args
|
|
106
|
+
.map((a) => `args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name))}`)
|
|
107
|
+
.join(', ')}],`;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
yield `method: undefined,`;
|
|
111
|
+
yield `methodArgs: undefined,`;
|
|
112
|
+
}
|
|
113
|
+
yield '...params,';
|
|
114
|
+
yield DecIndent;
|
|
115
|
+
yield '}';
|
|
116
|
+
yield DecIndent;
|
|
117
|
+
yield `}${isNested ? ',' : ''}`;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export { callFactory };
|
|
121
|
+
//# sourceMappingURL=call-factory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-factory.mjs","sources":["../../src/client/call-factory.ts"],"sourcesContent":["import { ContractMethod } from '../schema/application'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport * as algokit from '@algorandfoundation/algokit-utils'\nimport { GeneratorContext } from './generator-context'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { Sanitizer } from '../util/sanitization'\n\nexport function* callFactory(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc('Exposes methods for constructing all available smart contract calls')\n yield `export abstract class ${ctx.name}CallFactory {`\n yield IncIndent\n\n yield* opMethods(ctx)\n\n for (const method of ctx.app.contract.methods) {\n yield* callFactoryMethod(ctx, method)\n }\n\n yield DecIndent\n\n yield '}'\n}\n\nfunction* opMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethod(\n ctx,\n `Constructs a create call for the ${app.contract.name} smart contract`,\n callConfig.createMethods,\n 'create',\n true,\n )\n yield* operationMethod(\n ctx,\n `Constructs an update call for the ${app.contract.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n true,\n )\n yield* operationMethod(ctx, `Constructs a delete call for the ${app.contract.name} smart contract`, callConfig.deleteMethods, 'delete')\n yield* operationMethod(ctx, `Constructs an opt in call for the ${app.contract.name} smart contract`, callConfig.optInMethods, 'optIn')\n yield* operationMethod(\n ctx,\n `Constructs a close out call for the ${app.contract.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n}\n\nfunction* operationMethod(\n { app, methodSignatureToUniqueName, sanitizer }: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} call factories`)\n yield `static get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of methods) {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n if (methodSig === BARE_CALL) {\n yield* jsDoc({\n description: `${description} using a bare call`,\n params: {\n params: `Any parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: true,\n name: 'bare',\n sanitizer,\n paramTypes: `BareCallArgs & AppClientCallCoreParams & CoreAppCallArgs${\n includeCompilation ? ' & AppClientCompilationParams' : ''\n }${onComplete?.type ? ` & ${onComplete.type}` : ''}${onComplete?.isOptional !== false ? ' = {}' : ''}`,\n })\n } else {\n const method = app.contract.methods.find((m) => algokit.getABIMethodSignature(m) === methodSig)!\n const uniqueName = methodSignatureToUniqueName[methodSig]\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method`,\n params: {\n args: `Any args for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: true,\n sanitizer,\n name: sanitizer.makeSafeMethodIdentifier(uniqueName),\n signature: methodSig,\n args: method.args,\n paramTypes: `AppClientCallCoreParams & CoreAppCallArgs${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.type ? ` & ${onComplete.type}` : ''\n }${onComplete?.isOptional !== false ? ' = {}' : ''}`,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n\nfunction* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer }: GeneratorContext, method: ContractMethod) {\n const methodSignature = algokit.getABIMethodSignature(method)\n if (!callConfig.callMethods.includes(methodSignature)) return\n\n yield* jsDoc({\n description: `Constructs a no op call for the ${methodSignature} ABI method`,\n abiDescription: method.desc,\n params: {\n args: `Any args for the contract call`,\n params: `Any additional parameters for the call`,\n },\n returns: `A TypedCallParams object for the call`,\n })\n yield* factoryMethod({\n isNested: false,\n sanitizer,\n name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),\n signature: methodSignature,\n args: method.args,\n paramTypes: 'AppClientCallCoreParams & CoreAppCallArgs',\n })\n}\n\nfunction* factoryMethod({\n isNested,\n name,\n signature,\n args,\n paramTypes,\n sanitizer,\n}:\n | {\n isNested: boolean\n name?: string\n signature?: undefined\n args?: undefined\n paramTypes: string\n sanitizer: Sanitizer\n }\n | {\n isNested: boolean\n name?: string\n signature: string\n args: Array<{ name: string }>\n paramTypes: string\n sanitizer: Sanitizer\n }) {\n const signatureSafe = signature && sanitizer.makeSafeStringTypeLiteral(signature)\n yield `${isNested ? '' : 'static '}${name}(${signature === undefined ? '' : `args: MethodArgs<'${signatureSafe}'>, `}params: ${paramTypes}) {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n if (signature) {\n yield `method: '${signatureSafe}' as const,`\n yield `methodArgs: Array.isArray(args) ? args : [${args\n .map((a) => `args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name))}`)\n .join(', ')}],`\n } else {\n yield `method: undefined,`\n yield `methodArgs: undefined,`\n }\n\n yield '...params,'\n yield DecIndent\n yield '}'\n yield DecIndent\n yield `}${isNested ? ',' : ''}`\n}\n"],"names":[],"mappings":"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"}
|
package/client/deploy-types.d.ts
CHANGED
|
@@ -6,5 +6,4 @@ export declare function getCreateOnCompleteOptions(method: MethodIdentifier, app
|
|
|
6
6
|
type: {};
|
|
7
7
|
isOptional: boolean;
|
|
8
8
|
};
|
|
9
|
-
export declare function deployTypes({ app, callConfig }: GeneratorContext): DocumentParts;
|
|
10
|
-
//# sourceMappingURL=deploy-types.d.ts.map
|
|
9
|
+
export declare function deployTypes({ app, callConfig, sanitizer }: GeneratorContext): DocumentParts;
|
package/client/deploy-types.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const utility_types_1 = require("./utility-types");
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var writer = require('../output/writer.js');
|
|
4
|
+
var getCallConfigSummary = require('./helpers/get-call-config-summary.js');
|
|
5
|
+
var utilityTypes = require('./utility-types.js');
|
|
6
|
+
|
|
8
7
|
function getCreateOnCompleteOptions(method, app) {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const hasNoOp = (callConfig === null || callConfig === void 0 ? void 0 : callConfig.no_op) === 'ALL' || (callConfig === null || callConfig === void 0 ? void 0 : callConfig.no_op) === 'CREATE';
|
|
8
|
+
const callConfig = method === getCallConfigSummary.BARE_CALL ? app.bare_call_config : app.hints?.[method]?.call_config;
|
|
9
|
+
const hasNoOp = callConfig?.no_op === 'ALL' || callConfig?.no_op === 'CREATE';
|
|
12
10
|
const onCompleteType = callConfig
|
|
13
11
|
? `(${Object.entries(callConfig)
|
|
14
12
|
.filter(([_, value]) => value === 'ALL' || value === 'CREATE')
|
|
15
|
-
.map(([oc]) =>
|
|
13
|
+
.map(([oc]) => utilityTypes.OnCompleteCodeMap[oc])
|
|
16
14
|
.join(' | ')})`
|
|
17
15
|
: {};
|
|
18
16
|
return {
|
|
@@ -20,76 +18,80 @@ function getCreateOnCompleteOptions(method, app) {
|
|
|
20
18
|
isOptional: hasNoOp,
|
|
21
19
|
};
|
|
22
20
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const name = (0, sanitization_1.makeSafeTypeIdentifier)(app.contract.name);
|
|
21
|
+
function* deployTypes({ app, callConfig, sanitizer }) {
|
|
22
|
+
const name = sanitizer.makeSafeTypeIdentifier(app.contract.name);
|
|
26
23
|
if (callConfig.createMethods.length > 0) {
|
|
27
|
-
yield*
|
|
24
|
+
yield* writer.jsDoc(`A factory for available 'create' calls`);
|
|
28
25
|
yield `export type ${name}CreateCalls = (typeof ${name}CallFactory)['create']`;
|
|
29
|
-
yield*
|
|
26
|
+
yield* writer.jsDoc('Defines supported create methods for this smart contract');
|
|
30
27
|
yield `export type ${name}CreateCallParams =`;
|
|
31
|
-
yield
|
|
28
|
+
yield writer.IncIndent;
|
|
32
29
|
for (const method of callConfig.createMethods) {
|
|
33
30
|
const onComplete = getCreateOnCompleteOptions(method, app);
|
|
34
|
-
if (method ===
|
|
31
|
+
if (method === getCallConfigSummary.BARE_CALL) {
|
|
35
32
|
yield `| (TypedCallParams<undefined> & ${onComplete.type})`;
|
|
36
33
|
}
|
|
37
34
|
else {
|
|
38
|
-
|
|
35
|
+
const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
|
|
36
|
+
yield `| (TypedCallParams<'${methodSigSafe}'> & ${onComplete.type})`;
|
|
39
37
|
}
|
|
40
38
|
}
|
|
41
|
-
yield
|
|
39
|
+
yield writer.DecIndent;
|
|
42
40
|
}
|
|
43
41
|
if (callConfig.updateMethods.length > 0) {
|
|
44
|
-
yield*
|
|
42
|
+
yield* writer.jsDoc(`A factory for available 'update' calls`);
|
|
45
43
|
yield `export type ${name}UpdateCalls = (typeof ${name}CallFactory)['update']`;
|
|
46
|
-
yield*
|
|
44
|
+
yield* writer.jsDoc('Defines supported update methods for this smart contract');
|
|
47
45
|
yield `export type ${name}UpdateCallParams =`;
|
|
48
|
-
yield
|
|
46
|
+
yield writer.IncIndent;
|
|
49
47
|
for (const method of callConfig.updateMethods) {
|
|
50
|
-
if (method ===
|
|
48
|
+
if (method === getCallConfigSummary.BARE_CALL) {
|
|
51
49
|
yield `| TypedCallParams<undefined>`;
|
|
52
50
|
}
|
|
53
51
|
else {
|
|
54
|
-
|
|
52
|
+
const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
|
|
53
|
+
yield `| TypedCallParams<'${methodSigSafe}'>`;
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
|
-
yield
|
|
56
|
+
yield writer.DecIndent;
|
|
58
57
|
}
|
|
59
58
|
if (callConfig.deleteMethods.length > 0) {
|
|
60
|
-
yield*
|
|
59
|
+
yield* writer.jsDoc(`A factory for available 'delete' calls`);
|
|
61
60
|
yield `export type ${name}DeleteCalls = (typeof ${name}CallFactory)['delete']`;
|
|
62
|
-
yield*
|
|
61
|
+
yield* writer.jsDoc('Defines supported delete methods for this smart contract');
|
|
63
62
|
yield `export type ${name}DeleteCallParams =`;
|
|
64
|
-
yield
|
|
63
|
+
yield writer.IncIndent;
|
|
65
64
|
for (const method of callConfig.deleteMethods) {
|
|
66
|
-
if (method ===
|
|
65
|
+
if (method === getCallConfigSummary.BARE_CALL) {
|
|
67
66
|
yield `| TypedCallParams<undefined>`;
|
|
68
67
|
}
|
|
69
68
|
else {
|
|
70
|
-
|
|
69
|
+
const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
|
|
70
|
+
yield `| TypedCallParams<'${methodSigSafe}'>`;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
yield
|
|
73
|
+
yield writer.DecIndent;
|
|
74
74
|
}
|
|
75
|
-
yield*
|
|
75
|
+
yield* writer.jsDoc('Defines arguments required for the deploy method.');
|
|
76
76
|
yield `export type ${name}DeployArgs = {`;
|
|
77
|
-
yield
|
|
77
|
+
yield writer.IncIndent;
|
|
78
78
|
yield `deployTimeParams?: TealTemplateParams`;
|
|
79
79
|
if (callConfig.createMethods.length) {
|
|
80
|
-
yield*
|
|
80
|
+
yield* writer.jsDoc('A delegate which takes a create call factory and returns the create call params for this smart contract');
|
|
81
81
|
yield `createCall?: (callFactory: ${name}CreateCalls) => ${name}CreateCallParams`;
|
|
82
82
|
}
|
|
83
83
|
if (callConfig.updateMethods.length) {
|
|
84
|
-
yield*
|
|
84
|
+
yield* writer.jsDoc('A delegate which takes a update call factory and returns the update call params for this smart contract');
|
|
85
85
|
yield `updateCall?: (callFactory: ${name}UpdateCalls) => ${name}UpdateCallParams`;
|
|
86
86
|
}
|
|
87
87
|
if (callConfig.deleteMethods.length) {
|
|
88
|
-
yield*
|
|
88
|
+
yield* writer.jsDoc('A delegate which takes a delete call factory and returns the delete call params for this smart contract');
|
|
89
89
|
yield `deleteCall?: (callFactory: ${name}DeleteCalls) => ${name}DeleteCallParams`;
|
|
90
90
|
}
|
|
91
|
-
yield
|
|
92
|
-
yield
|
|
91
|
+
yield writer.DecIndentAndCloseBlock;
|
|
92
|
+
yield writer.NewLine;
|
|
93
93
|
}
|
|
94
|
+
|
|
94
95
|
exports.deployTypes = deployTypes;
|
|
95
|
-
|
|
96
|
+
exports.getCreateOnCompleteOptions = getCreateOnCompleteOptions;
|
|
97
|
+
//# sourceMappingURL=deploy-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-types.js","
|
|
1
|
+
{"version":3,"file":"deploy-types.js","sources":["../../src/client/deploy-types.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\n\nimport { BARE_CALL, MethodIdentifier } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { AlgoAppSpec, CallConfig } from '../schema/application'\nimport { OnCompleteCodeMap } from './utility-types'\n\nexport function getCreateOnCompleteOptions(method: MethodIdentifier, app: AlgoAppSpec) {\n const callConfig = method === BARE_CALL ? app.bare_call_config : app.hints?.[method]?.call_config\n const hasNoOp = callConfig?.no_op === 'ALL' || callConfig?.no_op === 'CREATE'\n const onCompleteType = callConfig\n ? `(${Object.entries(callConfig)\n .filter(([_, value]) => value === 'ALL' || value === 'CREATE')\n .map(([oc]) => OnCompleteCodeMap[oc as keyof CallConfig])\n .join(' | ')})`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function* deployTypes({ app, callConfig, sanitizer }: GeneratorContext): DocumentParts {\n const name = sanitizer.makeSafeTypeIdentifier(app.contract.name)\n\n if (callConfig.createMethods.length > 0) {\n yield* jsDoc(`A factory for available 'create' calls`)\n yield `export type ${name}CreateCalls = (typeof ${name}CallFactory)['create']`\n yield* jsDoc('Defines supported create methods for this smart contract')\n yield `export type ${name}CreateCallParams =`\n yield IncIndent\n for (const method of callConfig.createMethods) {\n const onComplete = getCreateOnCompleteOptions(method, app)\n if (method === BARE_CALL) {\n yield `| (TypedCallParams<undefined> & ${onComplete.type})`\n } else {\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n yield `| (TypedCallParams<'${methodSigSafe}'> & ${onComplete.type})`\n }\n }\n yield DecIndent\n }\n if (callConfig.updateMethods.length > 0) {\n yield* jsDoc(`A factory for available 'update' calls`)\n\n yield `export type ${name}UpdateCalls = (typeof ${name}CallFactory)['update']`\n yield* jsDoc('Defines supported update methods for this smart contract')\n yield `export type ${name}UpdateCallParams =`\n yield IncIndent\n for (const method of callConfig.updateMethods) {\n if (method === BARE_CALL) {\n yield `| TypedCallParams<undefined>`\n } else {\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n\n yield `| TypedCallParams<'${methodSigSafe}'>`\n }\n }\n yield DecIndent\n }\n\n if (callConfig.deleteMethods.length > 0) {\n yield* jsDoc(`A factory for available 'delete' calls`)\n\n yield `export type ${name}DeleteCalls = (typeof ${name}CallFactory)['delete']`\n\n yield* jsDoc('Defines supported delete methods for this smart contract')\n yield `export type ${name}DeleteCallParams =`\n yield IncIndent\n for (const method of callConfig.deleteMethods) {\n if (method === BARE_CALL) {\n yield `| TypedCallParams<undefined>`\n } else {\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n\n yield `| TypedCallParams<'${methodSigSafe}'>`\n }\n }\n yield DecIndent\n }\n\n yield* jsDoc('Defines arguments required for the deploy method.')\n yield `export type ${name}DeployArgs = {`\n yield IncIndent\n yield `deployTimeParams?: TealTemplateParams`\n if (callConfig.createMethods.length) {\n yield* jsDoc('A delegate which takes a create call factory and returns the create call params for this smart contract')\n yield `createCall?: (callFactory: ${name}CreateCalls) => ${name}CreateCallParams`\n }\n if (callConfig.updateMethods.length) {\n yield* jsDoc('A delegate which takes a update call factory and returns the update call params for this smart contract')\n yield `updateCall?: (callFactory: ${name}UpdateCalls) => ${name}UpdateCallParams`\n }\n if (callConfig.deleteMethods.length) {\n yield* jsDoc('A delegate which takes a delete call factory and returns the delete call params for this smart contract')\n yield `deleteCall?: (callFactory: ${name}DeleteCalls) => ${name}DeleteCallParams`\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":["BARE_CALL","OnCompleteCodeMap","jsDoc","IncIndent","DecIndent","DecIndentAndCloseBlock","NewLine"],"mappings":"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"}
|