@algorandfoundation/algokit-client-generator 4.0.0-beta.2 → 4.0.0-beta.3
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/client/app-client.js +34 -19
- package/client/app-client.js.map +1 -1
- package/client/app-client.mjs +34 -19
- package/client/app-client.mjs.map +1 -1
- package/client/app-factory.js +34 -17
- package/client/app-factory.js.map +1 -1
- package/client/app-factory.mjs +34 -17
- package/client/app-factory.mjs.map +1 -1
- package/client/app-types.js +11 -7
- package/client/app-types.js.map +1 -1
- package/client/app-types.mjs +11 -7
- package/client/app-types.mjs.map +1 -1
- package/client/call-composer-types.js +2 -2
- package/client/call-composer-types.js.map +1 -1
- package/client/call-composer-types.mjs +2 -2
- package/client/call-composer-types.mjs.map +1 -1
- package/client/call-composer.js +16 -14
- package/client/call-composer.js.map +1 -1
- package/client/call-composer.mjs +16 -14
- package/client/call-composer.mjs.map +1 -1
- package/client/generate.js +4 -4
- package/client/generate.js.map +1 -1
- package/client/generate.mjs +4 -4
- package/client/generate.mjs.map +1 -1
- package/client/helpers/get-equivalent-type.js +7 -3
- package/client/helpers/get-equivalent-type.js.map +1 -1
- package/client/helpers/get-equivalent-type.mjs +7 -3
- package/client/helpers/get-equivalent-type.mjs.map +1 -1
- package/client/imports.js +3 -2
- package/client/imports.js.map +1 -1
- package/client/imports.mjs +3 -2
- package/client/imports.mjs.map +1 -1
- package/package.json +4 -3
- package/schema/arc56.schema.json.js +106 -55
- package/schema/arc56.schema.json.js.map +1 -1
- package/schema/arc56.schema.json.mjs +106 -55
- package/schema/arc56.schema.json.mjs.map +1 -1
package/client/app-factory.js
CHANGED
|
@@ -20,7 +20,7 @@ function* appFactory(ctx) {
|
|
|
20
20
|
},
|
|
21
21
|
});
|
|
22
22
|
yield `
|
|
23
|
-
constructor(params:
|
|
23
|
+
constructor(params: Omit<AppFactoryParams, 'appSpec'>) {
|
|
24
24
|
this.appFactory = new AppFactory({
|
|
25
25
|
...params,
|
|
26
26
|
appSpec: APP_SPEC,
|
|
@@ -35,7 +35,7 @@ function* appFactory(ctx) {
|
|
|
35
35
|
* @param params The parameters to create the app client
|
|
36
36
|
* @returns The \`AppClient\`
|
|
37
37
|
*/
|
|
38
|
-
public getAppClientById(params:
|
|
38
|
+
public getAppClientById(params: AppFactoryAppClientParams) {
|
|
39
39
|
return new ${name}Client(this.appFactory.getAppClientById(params))
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -48,19 +48,20 @@ function* appFactory(ctx) {
|
|
|
48
48
|
* @param params The parameters to create the app client
|
|
49
49
|
* @returns The \`AppClient\`
|
|
50
50
|
*/
|
|
51
|
-
public async
|
|
52
|
-
params:
|
|
51
|
+
public async getAppClientByCreatorAndName(
|
|
52
|
+
params: AppFactoryResolveAppClientByCreatorAndNameParams,
|
|
53
53
|
) {
|
|
54
|
-
return new ${name}Client(await this.appFactory.
|
|
54
|
+
return new ${name}Client(await this.appFactory.getAppClientByCreatorAndName(params))
|
|
55
55
|
}
|
|
56
56
|
`;
|
|
57
57
|
yield* deployMethod(ctx);
|
|
58
58
|
yield* params(ctx);
|
|
59
|
+
yield* createTransaction(ctx);
|
|
59
60
|
yield* send(ctx);
|
|
60
61
|
yield writer.DecIndentAndCloseBlock;
|
|
61
62
|
}
|
|
62
63
|
function* params(ctx) {
|
|
63
|
-
yield* writer.jsDoc(`Get parameters to
|
|
64
|
+
yield* writer.jsDoc(`Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`);
|
|
64
65
|
yield `readonly params = (($this) => {`;
|
|
65
66
|
yield writer.IncIndent;
|
|
66
67
|
yield `return {`;
|
|
@@ -71,6 +72,18 @@ function* params(ctx) {
|
|
|
71
72
|
yield `})(this)`;
|
|
72
73
|
yield writer.NewLine;
|
|
73
74
|
}
|
|
75
|
+
function* createTransaction(ctx) {
|
|
76
|
+
yield* writer.jsDoc(`Create transactions for the current app`);
|
|
77
|
+
yield `readonly createTransaction = (($this) => {`;
|
|
78
|
+
yield writer.IncIndent;
|
|
79
|
+
yield `return {`;
|
|
80
|
+
yield writer.IncIndent;
|
|
81
|
+
yield* createTransactionMethods(ctx);
|
|
82
|
+
yield writer.DecIndentAndCloseBlock;
|
|
83
|
+
yield writer.DecIndent;
|
|
84
|
+
yield `})(this)`;
|
|
85
|
+
yield writer.NewLine;
|
|
86
|
+
}
|
|
74
87
|
function* send(ctx) {
|
|
75
88
|
yield* writer.jsDoc(`Send calls to the current app`);
|
|
76
89
|
yield `readonly send = (($this) => {`;
|
|
@@ -126,21 +139,25 @@ function* paramMethods(ctx) {
|
|
|
126
139
|
yield* operationMethods(ctx, `Updates an existing instance of the ${app.name} smart contract`, callConfig.updateMethods, 'deployUpdate', true);
|
|
127
140
|
yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'deployDelete');
|
|
128
141
|
}
|
|
142
|
+
function* createTransactionMethods(ctx) {
|
|
143
|
+
const { app, callConfig } = ctx;
|
|
144
|
+
yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true);
|
|
145
|
+
}
|
|
129
146
|
function* bareMethodCallParams({ generator: { app, name: clientName }, name, description, verb, type, includeCompilation, }) {
|
|
130
147
|
const onComplete = verb === 'create' ? deployTypes.getCreateOnCompleteOptions(getCallConfigSummary.BARE_CALL, app) : undefined;
|
|
131
148
|
yield* writer.jsDoc({
|
|
132
149
|
description: `${description}.`,
|
|
133
150
|
params: {
|
|
134
|
-
params: `The params for the bare (
|
|
151
|
+
params: `The params for the bare (raw) call`,
|
|
135
152
|
},
|
|
136
153
|
returns: type === 'params' ? `The params for a ${verb} call` : `The ${verb} result`,
|
|
137
154
|
});
|
|
138
|
-
yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' &
|
|
139
|
-
if (type === 'params') {
|
|
140
|
-
yield* writer.indent(`return $this.appFactory.
|
|
155
|
+
yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>) {`;
|
|
156
|
+
if (type === 'params' || type === 'createTransaction') {
|
|
157
|
+
yield* writer.indent(`return $this.appFactory.${type}.bare.${verb}(params)`);
|
|
141
158
|
}
|
|
142
159
|
else {
|
|
143
|
-
yield* writer.indent(`const result = await $this.appFactory.create(params)`, `return { result: result.result,
|
|
160
|
+
yield* writer.indent(`const result = await $this.appFactory.send.bare.create(params)`, `return { result: result.result, appClient: new ${clientName}Client(result.appClient) }`);
|
|
144
161
|
}
|
|
145
162
|
yield '},';
|
|
146
163
|
}
|
|
@@ -154,17 +171,17 @@ function* abiMethodCallParams({ generator: { app, methodSignatureToUniqueName, n
|
|
|
154
171
|
params: {
|
|
155
172
|
params: `The params for the smart contract call`,
|
|
156
173
|
},
|
|
157
|
-
returns: `The ${verb} ${type === 'params' ? 'params' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,
|
|
174
|
+
returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,
|
|
158
175
|
});
|
|
159
176
|
const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName);
|
|
160
177
|
const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName);
|
|
161
178
|
const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
|
|
162
|
-
yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' &
|
|
163
|
-
if (type === 'params') {
|
|
164
|
-
yield* writer.indent(`return $this.appFactory
|
|
179
|
+
yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) {`;
|
|
180
|
+
if (type === 'params' || type === 'createTransaction') {
|
|
181
|
+
yield* writer.indent(`return $this.appFactory.${type}.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`);
|
|
165
182
|
}
|
|
166
183
|
else {
|
|
167
|
-
yield* writer.indent(`const result = await $this.appFactory.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`, `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> },
|
|
184
|
+
yield* writer.indent(`const result = await $this.appFactory.send.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`, `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> }, appClient: new ${name}Client(result.appClient) }`);
|
|
168
185
|
}
|
|
169
186
|
yield '},';
|
|
170
187
|
}
|
|
@@ -229,7 +246,7 @@ function* deployMethod(ctx) {
|
|
|
229
246
|
}
|
|
230
247
|
yield writer.DecIndent;
|
|
231
248
|
yield `})`;
|
|
232
|
-
yield `return { result: result.result,
|
|
249
|
+
yield `return { result: result.result, appClient: new ${name}Client(result.appClient) }`;
|
|
233
250
|
yield writer.DecIndentAndCloseBlock;
|
|
234
251
|
yield writer.NewLine;
|
|
235
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-factory.js","sources":["../../src/client/app-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { ABIMethod } from 'algosdk'\nimport { Method } from '@algorandfoundation/algokit-utils/types/app-arc56'\n\nexport function* appFactory(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(\n `A factory to create and deploy one or more instance of the ${app.name} smart contract and to create one or more app clients to interact with those (or other) app instances`,\n )\n yield `export class ${name}Factory {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppFactory\\` for when you want to have more flexibility`)\n yield 'public readonly appFactory: AppFactory'\n yield NewLine\n\n yield* jsDoc({\n description: `Creates a new instance of \\`${name}Factory\\``,\n params: {\n params: 'The parameters to initialise the app factory with',\n },\n })\n\n yield `\n constructor(params: Expand<Omit<AppFactoryParams, 'appSpec'>>) {\n this.appFactory = new AppFactory({\n ...params,\n appSpec: APP_SPEC,\n })\n }\n\n /**\n * Returns a new \\`AppClient\\` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public getAppClientById(params: Expand<Omit<AppClientParams, 'algorand' | 'appSpec'>>) {\n return new ${name}Client(this.appFactory.getAppClientById(params))\n }\n\n /**\n * Returns a new \\`AppClient\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public async getAppClientByCreatorAddressAndName(\n params: Expand<Omit<AppClientParams, 'algorand' | 'appSpec' | 'appId'> & ResolveAppClientByCreatorAndName>,\n ) {\n return new ${name}Client(await this.appFactory.getAppClientByCreatorAddressAndName(params))\n }\n `\n\n yield* deployMethod(ctx)\n yield* params(ctx)\n yield* send(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Get parameters to define transactions to the current app`)\n yield `readonly params = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* paramMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* createMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* createMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n if (generator.callConfig.createMethods.length) {\n yield* jsDoc(`Gets available create methods`)\n yield `get create() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of generator.callConfig.createMethods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `Creates a new instance of the ${app.name} smart contract using a bare call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description: `Creates a new instance of the ${app.name} smart contract using an ABI method call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* paramMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true)\n\n yield* operationMethods(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'deployUpdate',\n true,\n )\n yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'deployDelete')\n}\n\nfunction* bareMethodCallParams({\n generator: { app, name: clientName },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(BARE_CALL, app) : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (non-ABI) call`,\n },\n returns: type === 'params' ? `The params for a ${verb} call` : `The ${verb} result`,\n })\n yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & ExecuteParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>) {`\n if (type === 'params') {\n yield* indent(`return $this.appFactory.params.bare.${verb}(params)`)\n } else {\n yield* indent(\n `const result = await $this.appFactory.create(params)`,\n `return { result: result.result, app: new ${clientName}Client(result.app) }`,\n )\n }\n yield '},'\n}\n\nfunction* abiMethodCallParams({\n generator: { app, methodSignatureToUniqueName, name, sanitizer },\n method,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n method: Method\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'send'\n includeCompilation?: boolean\n}) {\n const methodSig = new ABIMethod(method).getSignature()\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & ExecuteParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) {`\n if (type === 'params') {\n yield* indent(\n `return $this.appFactory.params.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`,\n )\n } else {\n yield* indent(\n `const result = await $this.appFactory.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`,\n `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> }, app: new ${name}Client(result.app) }`,\n )\n }\n yield '},'\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'deployUpdate' | 'deployDelete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of methods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type: 'params',\n includeCompilation,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description,\n verb,\n type: 'params',\n includeCompilation,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* deployMethod(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig, name } = ctx\n yield* jsDoc({\n description: `Idempotently deploys the ${app.name} smart contract.`,\n params: {\n params: 'The arguments for the contract calls and any additional parameters for the call',\n },\n returns: 'The deployment result',\n })\n yield `public async deploy(params: ${name}DeployParams = {}) {`\n yield IncIndent\n\n yield `const result = await this.appFactory.deploy({`\n yield IncIndent\n yield `...params,`\n if (callConfig.createMethods.filter((m) => m !== BARE_CALL).length) {\n yield `createParams: params.createParams?.method ? ${name}ParamsFactory.create._resolveByMethod(params.createParams) : params.createParams,`\n }\n if (callConfig.updateMethods.filter((m) => m !== BARE_CALL).length) {\n yield `updateParams: params.updateParams?.method ? ${name}ParamsFactory.update._resolveByMethod(params.updateParams) : params.updateParams,`\n }\n if (callConfig.deleteMethods.filter((m) => m !== BARE_CALL).length) {\n yield `deleteParams: params.deleteParams?.method ? ${name}ParamsFactory.delete._resolveByMethod(params.deleteParams) : params.deleteParams,`\n }\n yield DecIndent\n yield `})`\n yield `return { result: result.result, app: new ${name}Client(result.app) }`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":["jsDoc","IncIndent","NewLine","DecIndentAndCloseBlock","DecIndent","BARE_CALL","ABIMethod","getCreateOnCompleteOptions","indent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-factory.js","sources":["../../src/client/app-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { ABIMethod } from 'algosdk'\nimport { Method } from '@algorandfoundation/algokit-utils/types/app-arc56'\n\nexport function* appFactory(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(\n `A factory to create and deploy one or more instance of the ${app.name} smart contract and to create one or more app clients to interact with those (or other) app instances`,\n )\n yield `export class ${name}Factory {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppFactory\\` for when you want to have more flexibility`)\n yield 'public readonly appFactory: AppFactory'\n yield NewLine\n\n yield* jsDoc({\n description: `Creates a new instance of \\`${name}Factory\\``,\n params: {\n params: 'The parameters to initialise the app factory with',\n },\n })\n\n yield `\n constructor(params: Omit<AppFactoryParams, 'appSpec'>) {\n this.appFactory = new AppFactory({\n ...params,\n appSpec: APP_SPEC,\n })\n }\n\n /**\n * Returns a new \\`AppClient\\` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public getAppClientById(params: AppFactoryAppClientParams) {\n return new ${name}Client(this.appFactory.getAppClientById(params))\n }\n\n /**\n * Returns a new \\`AppClient\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public async getAppClientByCreatorAndName(\n params: AppFactoryResolveAppClientByCreatorAndNameParams,\n ) {\n return new ${name}Client(await this.appFactory.getAppClientByCreatorAndName(params))\n }\n `\n\n yield* deployMethod(ctx)\n yield* params(ctx)\n yield* createTransaction(ctx)\n yield* send(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(\n `Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`,\n )\n yield `readonly params = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* paramMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* createTransaction(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Create transactions for the current app`)\n yield `readonly createTransaction = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* createTransactionMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* createMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* createMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n if (generator.callConfig.createMethods.length) {\n yield* jsDoc(`Gets available create methods`)\n yield `get create() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of generator.callConfig.createMethods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `Creates a new instance of the ${app.name} smart contract using a bare call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description: `Creates a new instance of the ${app.name} smart contract using an ABI method call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* paramMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true)\n\n yield* operationMethods(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'deployUpdate',\n true,\n )\n yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'deployDelete')\n}\n\nfunction* createTransactionMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true)\n}\n\nfunction* bareMethodCallParams({\n generator: { app, name: clientName },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(BARE_CALL, app) : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (raw) call`,\n },\n returns: type === 'params' ? `The params for a ${verb} call` : `The ${verb} result`,\n })\n yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>) {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(`return $this.appFactory.${type}.bare.${verb}(params)`)\n } else {\n yield* indent(\n `const result = await $this.appFactory.send.bare.create(params)`,\n `return { result: result.result, appClient: new ${clientName}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* abiMethodCallParams({\n generator: { app, methodSignatureToUniqueName, name, sanitizer },\n method,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n method: Method\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}) {\n const methodSig = new ABIMethod(method).getSignature()\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(\n `return $this.appFactory.${type}.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`,\n )\n } else {\n yield* indent(\n `const result = await $this.appFactory.send.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`,\n `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> }, appClient: new ${name}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'deployUpdate' | 'deployDelete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of methods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type: 'params',\n includeCompilation,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description,\n verb,\n type: 'params',\n includeCompilation,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* deployMethod(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig, name } = ctx\n yield* jsDoc({\n description: `Idempotently deploys the ${app.name} smart contract.`,\n params: {\n params: 'The arguments for the contract calls and any additional parameters for the call',\n },\n returns: 'The deployment result',\n })\n yield `public async deploy(params: ${name}DeployParams = {}) {`\n yield IncIndent\n\n yield `const result = await this.appFactory.deploy({`\n yield IncIndent\n yield `...params,`\n if (callConfig.createMethods.filter((m) => m !== BARE_CALL).length) {\n yield `createParams: params.createParams?.method ? ${name}ParamsFactory.create._resolveByMethod(params.createParams) : params.createParams,`\n }\n if (callConfig.updateMethods.filter((m) => m !== BARE_CALL).length) {\n yield `updateParams: params.updateParams?.method ? ${name}ParamsFactory.update._resolveByMethod(params.updateParams) : params.updateParams,`\n }\n if (callConfig.deleteMethods.filter((m) => m !== BARE_CALL).length) {\n yield `deleteParams: params.deleteParams?.method ? ${name}ParamsFactory.delete._resolveByMethod(params.deleteParams) : params.deleteParams,`\n }\n yield DecIndent\n yield `})`\n yield `return { result: result.result, appClient: new ${name}Client(result.appClient) }`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":["jsDoc","IncIndent","NewLine","DecIndentAndCloseBlock","DecIndent","BARE_CALL","ABIMethod","getCreateOnCompleteOptions","indent"],"mappings":"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"}
|
package/client/app-factory.mjs
CHANGED
|
@@ -18,7 +18,7 @@ function* appFactory(ctx) {
|
|
|
18
18
|
},
|
|
19
19
|
});
|
|
20
20
|
yield `
|
|
21
|
-
constructor(params:
|
|
21
|
+
constructor(params: Omit<AppFactoryParams, 'appSpec'>) {
|
|
22
22
|
this.appFactory = new AppFactory({
|
|
23
23
|
...params,
|
|
24
24
|
appSpec: APP_SPEC,
|
|
@@ -33,7 +33,7 @@ function* appFactory(ctx) {
|
|
|
33
33
|
* @param params The parameters to create the app client
|
|
34
34
|
* @returns The \`AppClient\`
|
|
35
35
|
*/
|
|
36
|
-
public getAppClientById(params:
|
|
36
|
+
public getAppClientById(params: AppFactoryAppClientParams) {
|
|
37
37
|
return new ${name}Client(this.appFactory.getAppClientById(params))
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -46,19 +46,20 @@ function* appFactory(ctx) {
|
|
|
46
46
|
* @param params The parameters to create the app client
|
|
47
47
|
* @returns The \`AppClient\`
|
|
48
48
|
*/
|
|
49
|
-
public async
|
|
50
|
-
params:
|
|
49
|
+
public async getAppClientByCreatorAndName(
|
|
50
|
+
params: AppFactoryResolveAppClientByCreatorAndNameParams,
|
|
51
51
|
) {
|
|
52
|
-
return new ${name}Client(await this.appFactory.
|
|
52
|
+
return new ${name}Client(await this.appFactory.getAppClientByCreatorAndName(params))
|
|
53
53
|
}
|
|
54
54
|
`;
|
|
55
55
|
yield* deployMethod(ctx);
|
|
56
56
|
yield* params(ctx);
|
|
57
|
+
yield* createTransaction(ctx);
|
|
57
58
|
yield* send(ctx);
|
|
58
59
|
yield DecIndentAndCloseBlock;
|
|
59
60
|
}
|
|
60
61
|
function* params(ctx) {
|
|
61
|
-
yield* jsDoc(`Get parameters to
|
|
62
|
+
yield* jsDoc(`Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`);
|
|
62
63
|
yield `readonly params = (($this) => {`;
|
|
63
64
|
yield IncIndent;
|
|
64
65
|
yield `return {`;
|
|
@@ -69,6 +70,18 @@ function* params(ctx) {
|
|
|
69
70
|
yield `})(this)`;
|
|
70
71
|
yield NewLine;
|
|
71
72
|
}
|
|
73
|
+
function* createTransaction(ctx) {
|
|
74
|
+
yield* jsDoc(`Create transactions for the current app`);
|
|
75
|
+
yield `readonly createTransaction = (($this) => {`;
|
|
76
|
+
yield IncIndent;
|
|
77
|
+
yield `return {`;
|
|
78
|
+
yield IncIndent;
|
|
79
|
+
yield* createTransactionMethods(ctx);
|
|
80
|
+
yield DecIndentAndCloseBlock;
|
|
81
|
+
yield DecIndent;
|
|
82
|
+
yield `})(this)`;
|
|
83
|
+
yield NewLine;
|
|
84
|
+
}
|
|
72
85
|
function* send(ctx) {
|
|
73
86
|
yield* jsDoc(`Send calls to the current app`);
|
|
74
87
|
yield `readonly send = (($this) => {`;
|
|
@@ -124,21 +137,25 @@ function* paramMethods(ctx) {
|
|
|
124
137
|
yield* operationMethods(ctx, `Updates an existing instance of the ${app.name} smart contract`, callConfig.updateMethods, 'deployUpdate', true);
|
|
125
138
|
yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'deployDelete');
|
|
126
139
|
}
|
|
140
|
+
function* createTransactionMethods(ctx) {
|
|
141
|
+
const { app, callConfig } = ctx;
|
|
142
|
+
yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true);
|
|
143
|
+
}
|
|
127
144
|
function* bareMethodCallParams({ generator: { app, name: clientName }, name, description, verb, type, includeCompilation, }) {
|
|
128
145
|
const onComplete = verb === 'create' ? getCreateOnCompleteOptions(BARE_CALL, app) : undefined;
|
|
129
146
|
yield* jsDoc({
|
|
130
147
|
description: `${description}.`,
|
|
131
148
|
params: {
|
|
132
|
-
params: `The params for the bare (
|
|
149
|
+
params: `The params for the bare (raw) call`,
|
|
133
150
|
},
|
|
134
151
|
returns: type === 'params' ? `The params for a ${verb} call` : `The ${verb} result`,
|
|
135
152
|
});
|
|
136
|
-
yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' &
|
|
137
|
-
if (type === 'params') {
|
|
138
|
-
yield* indent(`return $this.appFactory.
|
|
153
|
+
yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>) {`;
|
|
154
|
+
if (type === 'params' || type === 'createTransaction') {
|
|
155
|
+
yield* indent(`return $this.appFactory.${type}.bare.${verb}(params)`);
|
|
139
156
|
}
|
|
140
157
|
else {
|
|
141
|
-
yield* indent(`const result = await $this.appFactory.create(params)`, `return { result: result.result,
|
|
158
|
+
yield* indent(`const result = await $this.appFactory.send.bare.create(params)`, `return { result: result.result, appClient: new ${clientName}Client(result.appClient) }`);
|
|
142
159
|
}
|
|
143
160
|
yield '},';
|
|
144
161
|
}
|
|
@@ -152,17 +169,17 @@ function* abiMethodCallParams({ generator: { app, methodSignatureToUniqueName, n
|
|
|
152
169
|
params: {
|
|
153
170
|
params: `The params for the smart contract call`,
|
|
154
171
|
},
|
|
155
|
-
returns: `The ${verb} ${type === 'params' ? 'params' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,
|
|
172
|
+
returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,
|
|
156
173
|
});
|
|
157
174
|
const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName);
|
|
158
175
|
const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName);
|
|
159
176
|
const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
|
|
160
|
-
yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' &
|
|
161
|
-
if (type === 'params') {
|
|
162
|
-
yield* indent(`return $this.appFactory
|
|
177
|
+
yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${verb === 'create' ? ' & CreateSchema' : ''}${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) {`;
|
|
178
|
+
if (type === 'params' || type === 'createTransaction') {
|
|
179
|
+
yield* indent(`return $this.appFactory.${type}.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`);
|
|
163
180
|
}
|
|
164
181
|
else {
|
|
165
|
-
yield* indent(`const result = await $this.appFactory.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`, `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> },
|
|
182
|
+
yield* indent(`const result = await $this.appFactory.send.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`, `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> }, appClient: new ${name}Client(result.appClient) }`);
|
|
166
183
|
}
|
|
167
184
|
yield '},';
|
|
168
185
|
}
|
|
@@ -227,7 +244,7 @@ function* deployMethod(ctx) {
|
|
|
227
244
|
}
|
|
228
245
|
yield DecIndent;
|
|
229
246
|
yield `})`;
|
|
230
|
-
yield `return { result: result.result,
|
|
247
|
+
yield `return { result: result.result, appClient: new ${name}Client(result.appClient) }`;
|
|
231
248
|
yield DecIndentAndCloseBlock;
|
|
232
249
|
yield NewLine;
|
|
233
250
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-factory.mjs","sources":["../../src/client/app-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { ABIMethod } from 'algosdk'\nimport { Method } from '@algorandfoundation/algokit-utils/types/app-arc56'\n\nexport function* appFactory(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(\n `A factory to create and deploy one or more instance of the ${app.name} smart contract and to create one or more app clients to interact with those (or other) app instances`,\n )\n yield `export class ${name}Factory {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppFactory\\` for when you want to have more flexibility`)\n yield 'public readonly appFactory: AppFactory'\n yield NewLine\n\n yield* jsDoc({\n description: `Creates a new instance of \\`${name}Factory\\``,\n params: {\n params: 'The parameters to initialise the app factory with',\n },\n })\n\n yield `\n constructor(params: Expand<Omit<AppFactoryParams, 'appSpec'>>) {\n this.appFactory = new AppFactory({\n ...params,\n appSpec: APP_SPEC,\n })\n }\n\n /**\n * Returns a new \\`AppClient\\` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public getAppClientById(params: Expand<Omit<AppClientParams, 'algorand' | 'appSpec'>>) {\n return new ${name}Client(this.appFactory.getAppClientById(params))\n }\n\n /**\n * Returns a new \\`AppClient\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public async getAppClientByCreatorAddressAndName(\n params: Expand<Omit<AppClientParams, 'algorand' | 'appSpec' | 'appId'> & ResolveAppClientByCreatorAndName>,\n ) {\n return new ${name}Client(await this.appFactory.getAppClientByCreatorAddressAndName(params))\n }\n `\n\n yield* deployMethod(ctx)\n yield* params(ctx)\n yield* send(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Get parameters to define transactions to the current app`)\n yield `readonly params = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* paramMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* createMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* createMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n if (generator.callConfig.createMethods.length) {\n yield* jsDoc(`Gets available create methods`)\n yield `get create() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of generator.callConfig.createMethods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `Creates a new instance of the ${app.name} smart contract using a bare call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description: `Creates a new instance of the ${app.name} smart contract using an ABI method call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* paramMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true)\n\n yield* operationMethods(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'deployUpdate',\n true,\n )\n yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'deployDelete')\n}\n\nfunction* bareMethodCallParams({\n generator: { app, name: clientName },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(BARE_CALL, app) : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (non-ABI) call`,\n },\n returns: type === 'params' ? `The params for a ${verb} call` : `The ${verb} result`,\n })\n yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & ExecuteParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>) {`\n if (type === 'params') {\n yield* indent(`return $this.appFactory.params.bare.${verb}(params)`)\n } else {\n yield* indent(\n `const result = await $this.appFactory.create(params)`,\n `return { result: result.result, app: new ${clientName}Client(result.app) }`,\n )\n }\n yield '},'\n}\n\nfunction* abiMethodCallParams({\n generator: { app, methodSignatureToUniqueName, name, sanitizer },\n method,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n method: Method\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'send'\n includeCompilation?: boolean\n}) {\n const methodSig = new ABIMethod(method).getSignature()\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & ExecuteParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) {`\n if (type === 'params') {\n yield* indent(\n `return $this.appFactory.params.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`,\n )\n } else {\n yield* indent(\n `const result = await $this.appFactory.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`,\n `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> }, app: new ${name}Client(result.app) }`,\n )\n }\n yield '},'\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'deployUpdate' | 'deployDelete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of methods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type: 'params',\n includeCompilation,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description,\n verb,\n type: 'params',\n includeCompilation,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* deployMethod(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig, name } = ctx\n yield* jsDoc({\n description: `Idempotently deploys the ${app.name} smart contract.`,\n params: {\n params: 'The arguments for the contract calls and any additional parameters for the call',\n },\n returns: 'The deployment result',\n })\n yield `public async deploy(params: ${name}DeployParams = {}) {`\n yield IncIndent\n\n yield `const result = await this.appFactory.deploy({`\n yield IncIndent\n yield `...params,`\n if (callConfig.createMethods.filter((m) => m !== BARE_CALL).length) {\n yield `createParams: params.createParams?.method ? ${name}ParamsFactory.create._resolveByMethod(params.createParams) : params.createParams,`\n }\n if (callConfig.updateMethods.filter((m) => m !== BARE_CALL).length) {\n yield `updateParams: params.updateParams?.method ? ${name}ParamsFactory.update._resolveByMethod(params.updateParams) : params.updateParams,`\n }\n if (callConfig.deleteMethods.filter((m) => m !== BARE_CALL).length) {\n yield `deleteParams: params.deleteParams?.method ? ${name}ParamsFactory.delete._resolveByMethod(params.deleteParams) : params.deleteParams,`\n }\n yield DecIndent\n yield `})`\n yield `return { result: result.result, app: new ${name}Client(result.app) }`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-factory.mjs","sources":["../../src/client/app-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { getCreateOnCompleteOptions } from './deploy-types'\nimport { ABIMethod } from 'algosdk'\nimport { Method } from '@algorandfoundation/algokit-utils/types/app-arc56'\n\nexport function* appFactory(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(\n `A factory to create and deploy one or more instance of the ${app.name} smart contract and to create one or more app clients to interact with those (or other) app instances`,\n )\n yield `export class ${name}Factory {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppFactory\\` for when you want to have more flexibility`)\n yield 'public readonly appFactory: AppFactory'\n yield NewLine\n\n yield* jsDoc({\n description: `Creates a new instance of \\`${name}Factory\\``,\n params: {\n params: 'The parameters to initialise the app factory with',\n },\n })\n\n yield `\n constructor(params: Omit<AppFactoryParams, 'appSpec'>) {\n this.appFactory = new AppFactory({\n ...params,\n appSpec: APP_SPEC,\n })\n }\n\n /**\n * Returns a new \\`AppClient\\` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public getAppClientById(params: AppFactoryAppClientParams) {\n return new ${name}Client(this.appFactory.getAppClientById(params))\n }\n\n /**\n * Returns a new \\`AppClient\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public async getAppClientByCreatorAndName(\n params: AppFactoryResolveAppClientByCreatorAndNameParams,\n ) {\n return new ${name}Client(await this.appFactory.getAppClientByCreatorAndName(params))\n }\n `\n\n yield* deployMethod(ctx)\n yield* params(ctx)\n yield* createTransaction(ctx)\n yield* send(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(\n `Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`,\n )\n yield `readonly params = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* paramMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* createTransaction(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Create transactions for the current app`)\n yield `readonly createTransaction = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* createTransactionMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = (($this) => {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield* createMethods(ctx)\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `})(this)`\n yield NewLine\n}\n\nfunction* createMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n if (generator.callConfig.createMethods.length) {\n yield* jsDoc(`Gets available create methods`)\n yield `get create() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of generator.callConfig.createMethods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `Creates a new instance of the ${app.name} smart contract using a bare call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description: `Creates a new instance of the ${app.name} smart contract using an ABI method call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* paramMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true)\n\n yield* operationMethods(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'deployUpdate',\n true,\n )\n yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, callConfig.deleteMethods, 'deployDelete')\n}\n\nfunction* createTransactionMethods(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, callConfig.createMethods, 'create', true)\n}\n\nfunction* bareMethodCallParams({\n generator: { app, name: clientName },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(BARE_CALL, app) : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (raw) call`,\n },\n returns: type === 'params' ? `The params for a ${verb} call` : `The ${verb} result`,\n })\n yield `${type === 'send' ? 'async ' : ''}${name}(params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>) {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(`return $this.appFactory.${type}.bare.${verb}(params)`)\n } else {\n yield* indent(\n `const result = await $this.appFactory.send.bare.create(params)`,\n `return { result: result.result, appClient: new ${clientName}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* abiMethodCallParams({\n generator: { app, methodSignatureToUniqueName, name, sanitizer },\n method,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n method: Method\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}) {\n const methodSig = new ABIMethod(method).getSignature()\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${type === 'send' ? 'async ' : ''}${methodName}(params: Expand<CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}>${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(\n `return $this.appFactory.${type}.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`,\n )\n } else {\n yield* indent(\n `const result = await $this.appFactory.send.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`,\n `return { result: { ...result.result, return: result.result.return as undefined | MethodReturn<'${methodSigSafe}'> }, appClient: new ${name}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'deployUpdate' | 'deployDelete',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n for (const methodSig of methods) {\n if (methodSig === BARE_CALL) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type: 'params',\n includeCompilation,\n })\n } else {\n const method = generator.app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n yield* abiMethodCallParams({\n generator,\n method,\n description,\n verb,\n type: 'params',\n includeCompilation,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* deployMethod(ctx: GeneratorContext): DocumentParts {\n const { app, callConfig, name } = ctx\n yield* jsDoc({\n description: `Idempotently deploys the ${app.name} smart contract.`,\n params: {\n params: 'The arguments for the contract calls and any additional parameters for the call',\n },\n returns: 'The deployment result',\n })\n yield `public async deploy(params: ${name}DeployParams = {}) {`\n yield IncIndent\n\n yield `const result = await this.appFactory.deploy({`\n yield IncIndent\n yield `...params,`\n if (callConfig.createMethods.filter((m) => m !== BARE_CALL).length) {\n yield `createParams: params.createParams?.method ? ${name}ParamsFactory.create._resolveByMethod(params.createParams) : params.createParams,`\n }\n if (callConfig.updateMethods.filter((m) => m !== BARE_CALL).length) {\n yield `updateParams: params.updateParams?.method ? ${name}ParamsFactory.update._resolveByMethod(params.updateParams) : params.updateParams,`\n }\n if (callConfig.deleteMethods.filter((m) => m !== BARE_CALL).length) {\n yield `deleteParams: params.deleteParams?.method ? ${name}ParamsFactory.delete._resolveByMethod(params.deleteParams) : params.deleteParams,`\n }\n yield DecIndent\n yield `})`\n yield `return { result: result.result, appClient: new ${name}Client(result.appClient) }`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":[],"mappings":"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"}
|
package/client/app-types.js
CHANGED
|
@@ -160,11 +160,11 @@ function* abiTypes(ctx) {
|
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
162
|
const pushStructFields = (fields) => {
|
|
163
|
-
|
|
164
|
-
if (typeof sf === 'string')
|
|
165
|
-
pushType(sf);
|
|
166
|
-
else
|
|
167
|
-
pushStructFields(sf);
|
|
163
|
+
fields.forEach((sf) => {
|
|
164
|
+
if (typeof sf.type === 'string' && !app.structs[sf.type])
|
|
165
|
+
pushType(sf.type);
|
|
166
|
+
else if (typeof sf.type !== 'string')
|
|
167
|
+
pushStructFields(sf.type);
|
|
168
168
|
});
|
|
169
169
|
};
|
|
170
170
|
Object.values(app.structs).forEach((sf) => {
|
|
@@ -177,13 +177,17 @@ function* abiTypes(ctx) {
|
|
|
177
177
|
}
|
|
178
178
|
yield writer.NewLine;
|
|
179
179
|
}
|
|
180
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
181
|
+
function getStructAsObject(struct) {
|
|
182
|
+
return Object.fromEntries(struct.map((s) => [s.name, typeof s.type === 'string' ? s.type : getStructAsObject(s.type)]));
|
|
183
|
+
}
|
|
180
184
|
function* structTypes({ app, sanitizer }) {
|
|
181
185
|
if (Object.keys(app.structs).length === 0)
|
|
182
186
|
return;
|
|
183
187
|
yield '// Type definitions for ARC-56 structs';
|
|
184
188
|
yield writer.NewLine;
|
|
185
189
|
for (const structName of Object.keys(app.structs)) {
|
|
186
|
-
yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${JSON.stringify(app.structs[structName], null, 2)
|
|
190
|
+
yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${JSON.stringify(getStructAsObject(app.structs[structName]), null, 2)
|
|
187
191
|
.replace(/"/g, '')
|
|
188
192
|
.replaceAll('(', '[')
|
|
189
193
|
.replaceAll(')', ']')
|
|
@@ -213,7 +217,7 @@ function* keysAndMaps(app, sanitizer, keys, maps) {
|
|
|
213
217
|
yield* writer.jsDoc(prop.desc);
|
|
214
218
|
}
|
|
215
219
|
const keySafe = sanitizer.makeSafePropertyIdentifier(name);
|
|
216
|
-
yield `${keySafe}: ${prop.valueType === '
|
|
220
|
+
yield `${keySafe}: ${prop.valueType === 'AVMBytes' ? 'BinaryState' : getEquivalentType.getEquivalentType(prop.valueType, 'output', { app, sanitizer })}`;
|
|
217
221
|
}
|
|
218
222
|
yield writer.DecIndentAndCloseBlock;
|
|
219
223
|
}
|
package/client/app-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-types.js","sources":["../../src/client/app-types.ts"],"sourcesContent":["import { GeneratorContext } from './generator-context'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, inline, jsDoc, NewLine } from '../output/writer'\nimport { getEquivalentType } from './helpers/get-equivalent-type'\nimport { ABIMethod, ABITupleType } from 'algosdk'\nimport { Arc56Contract, StorageKey, StorageMap, StructFields } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { Sanitizer } from '../util/sanitization'\n\nexport function* appTypes(ctx: GeneratorContext): DocumentParts {\n yield* abiTypes(ctx)\n yield* structTypes(ctx)\n yield* templateVariableTypes(ctx)\n\n const { app, methodSignatureToUniqueName, name } = ctx\n yield* jsDoc(`Defines the types of available calls and state of the ${name} smart contract.`)\n yield `export type ${name}Types = {`\n yield IncIndent\n yield* jsDoc('Maps method signatures / names to their argument and return types.')\n if (app.methods.length == 0) {\n yield 'methods: {}'\n } else {\n yield 'methods:'\n }\n yield IncIndent\n for (const method of app.methods) {\n const methodSig = new ABIMethod(method).getSignature()\n const methodSigSafe = ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const uniqueNameSafe = ctx.sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `& Record<'${methodSigSafe}'${methodSig !== uniqueName ? ` | '${uniqueNameSafe}'` : ''}, {`\n yield IncIndent\n yield `argsObj: {`\n yield IncIndent\n\n const argsMeta = method.args.map((arg, i) => ({\n ...arg,\n name: arg.name ?? `arg${i + 1}`,\n hasDefault: !!arg.defaultValue,\n tsType: getEquivalentType(arg.struct ?? arg.type, 'input', ctx),\n }))\n\n for (const arg of argsMeta) {\n if (arg.desc) yield* jsDoc(arg.desc)\n yield `${ctx.sanitizer.makeSafePropertyIdentifier(arg.name)}${arg.hasDefault ? '?' : ''}: ${arg.tsType}`\n }\n yield DecIndentAndCloseBlock\n yield* inline(\n `argsTuple: [`,\n argsMeta\n .map((arg) => `${ctx.sanitizer.makeSafeVariableIdentifier(arg.name)}: ${arg.tsType}${arg.hasDefault ? ' | undefined' : ''}`)\n .join(', '),\n ']',\n )\n if (method.returns.desc) yield* jsDoc(method.returns.desc)\n yield `returns: ${getEquivalentType(method.returns.struct ?? method.returns.type ?? 'void', 'output', ctx)}`\n\n yield DecIndent\n yield '}>'\n }\n yield DecIndent\n\n const hasLocal =\n (app.state.keys.local && Object.keys(app.state.keys.local).length > 0) ||\n (app.state.maps.local && Object.keys(app.state.maps.local).length > 0)\n const hasGlobal =\n (app.state.keys.global && Object.keys(app.state.keys.global).length > 0) ||\n (app.state.maps.global && Object.keys(app.state.maps.global).length > 0)\n const hasBox =\n (app.state.keys.box && Object.keys(app.state.keys.box).length > 0) || (app.state.maps.box && Object.keys(app.state.maps.box).length > 0)\n yield* appState(ctx, { hasBox, hasGlobal, hasLocal })\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield `\n /**\n * Defines the possible abi call signatures.\n */\n export type ${name}Signatures = keyof ${name}Types['methods']\n /**\n * Defines the possible abi call signatures for methods that return a non-void value.\n */\n export type ${name}NonVoidMethodSignatures = keyof ${name}Types['methods'] extends infer T ? T extends keyof ${name}Types['methods'] ? MethodReturn<T> extends void ? never : T : never : never\n /**\n * Defines an object containing all relevant parameters for a single call to the contract.\n */\n export type CallParams<TSignature extends ${name}Signatures> = Expand<\n Omit<AppClientMethodCallParams, 'method' | 'args' | 'onComplete'> &\n {\n /** The args for the ABI method call, either as an ordered array or an object */\n args: Expand<MethodArgs<TSignature>>\n }\n >\n /**\n * Maps a method signature from the ${name} smart contract to the method's arguments in either tuple or struct form\n */\n export type MethodArgs<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['argsObj' | 'argsTuple']\n /**\n * Maps a method signature from the ${name} smart contract to the method's return type\n */\n export type MethodReturn<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['returns']\n `\n\n if (hasGlobal) {\n yield `\n /**\n * Defines the shape of the keyed global state of the application.\n */\n export type GlobalKeysState = ${name}Types['state']['global']['keys']\n `\n }\n\n if (hasLocal) {\n yield `\n /**\n * Defines the shape of the keyed local state of the application.\n */\n export type LocalKeysState = ${name}Types['state']['local']['keys']\n `\n }\n\n if (hasBox) {\n yield `\n /**\n * Defines the shape of the keyed box state of the application.\n */\n export type BoxKeysState = ${name}Types['state']['box']['keys']\n `\n }\n\n yield NewLine\n}\n\nfunction* abiTypes(ctx: GeneratorContext): DocumentParts {\n const { app } = ctx\n const abiTypes: string[] = []\n\n const pushType = (type: string) => {\n // If we already have this type, skip\n if (abiTypes.includes(type)) return\n\n // void and string are the same types in TS\n if (['void', 'string'].includes(type)) return\n\n // Skip structs\n if (app.structs[type]) return\n\n // If this is an array type, push the base type\n if (type.match(/\\[\\d*\\]$/)) {\n pushType(type.replace(/\\[\\d*\\]$/, ''))\n return\n }\n\n if (type.startsWith('(')) {\n const tupleType = ABITupleType.from(type) as ABITupleType\n\n tupleType.childTypes.forEach((t) => {\n pushType(t.toString())\n })\n\n return\n }\n\n abiTypes.push(type)\n }\n\n Object.values(app.templateVariables ?? {}).forEach((t) => {\n pushType(t.type)\n })\n\n app.methods.forEach((m) => {\n m.args.forEach((a) => {\n pushType(a.type)\n })\n\n pushType(m.returns.type)\n })\n ;(['global', 'local', 'box'] as ['global', 'local', 'box']).forEach((storageType) => {\n Object.values(app.state.keys[storageType]).forEach((k) => {\n pushType(k.keyType)\n pushType(k.valueType)\n })\n\n Object.values(app.state.maps[storageType]).forEach((m) => {\n pushType(m.keyType)\n pushType(m.valueType)\n })\n })\n\n const pushStructFields = (fields: StructFields) => {\n Object.values(fields).forEach((sf) => {\n if (typeof sf === 'string') pushType(sf)\n else pushStructFields(sf)\n })\n }\n\n Object.values(app.structs).forEach((sf) => {\n pushStructFields(sf)\n })\n\n yield '// Aliases for non-encoded ABI values'\n yield NewLine\n for (const t of abiTypes) {\n yield `type ${t} = ${getEquivalentType(t, 'output', ctx)};`\n }\n yield NewLine\n}\n\nfunction* structTypes({ app, sanitizer }: GeneratorContext): DocumentParts {\n if (Object.keys(app.structs).length === 0) return\n\n yield '// Type definitions for ARC-56 structs'\n yield NewLine\n\n for (const structName of Object.keys(app.structs)) {\n yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${JSON.stringify(app.structs[structName], null, 2)\n .replace(/\"/g, '')\n .replaceAll('(', '[')\n .replaceAll(')', ']')\n .replace(/\\[\\d+\\]/g, '[]')}`\n }\n\n yield NewLine\n}\n\nfunction* templateVariableTypes({ app }: GeneratorContext): DocumentParts {\n if (Object.keys(app.templateVariables ?? {}).length === 0) {\n return\n }\n\n yield* jsDoc('Deploy-time template variables')\n yield 'export type TemplateVariables = {'\n yield IncIndent\n\n for (const name of Object.keys(app.templateVariables ?? {})) {\n yield `${name}: ${app.templateVariables![name].type},`\n }\n\n yield DecIndentAndCloseBlock\n}\n\nfunction* keysAndMaps(\n app: Arc56Contract,\n sanitizer: Sanitizer,\n keys: {\n [name: string]: StorageKey\n },\n maps: {\n [name: string]: StorageMap\n },\n): DocumentParts {\n if (keys && Object.keys(keys).length) {\n yield 'keys: {'\n yield IncIndent\n for (const name of Object.keys(keys)) {\n const prop = keys[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: ${prop.valueType === 'bytes' ? 'BinaryState' : getEquivalentType(prop.valueType, 'output', { app, sanitizer })}`\n }\n yield DecIndentAndCloseBlock\n }\n\n if (maps && Object.keys(maps).length) {\n yield 'maps: {'\n yield IncIndent\n for (const name of Object.keys(maps)) {\n const prop = maps[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: Map<${getEquivalentType(prop.keyType, 'input', { app, sanitizer })}, ${getEquivalentType(prop.valueType, 'output', { app, sanitizer })}>`\n }\n yield DecIndentAndCloseBlock\n }\n}\n\nfunction* appState(\n { app, sanitizer }: GeneratorContext,\n stateFlags: { hasLocal: boolean; hasGlobal: boolean; hasBox: boolean },\n): DocumentParts {\n const { hasBox, hasGlobal, hasLocal } = stateFlags\n\n if (hasLocal || hasGlobal) {\n yield* jsDoc('Defines the shape of the state of the application.')\n yield 'state: {'\n yield IncIndent\n if (hasGlobal) {\n yield 'global: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.global, app.state.maps.global)\n yield DecIndentAndCloseBlock\n }\n if (hasLocal) {\n yield 'local: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.local, app.state.maps.local)\n yield DecIndentAndCloseBlock\n }\n if (hasBox) {\n yield 'box: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.box, app.state.maps.box)\n yield DecIndentAndCloseBlock\n }\n yield DecIndentAndCloseBlock\n }\n}\n"],"names":["jsDoc","IncIndent","ABIMethod","getEquivalentType","DecIndentAndCloseBlock","inline","DecIndent","NewLine","ABITupleType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-types.js","sources":["../../src/client/app-types.ts"],"sourcesContent":["import { GeneratorContext } from './generator-context'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, inline, jsDoc, NewLine } from '../output/writer'\nimport { getEquivalentType } from './helpers/get-equivalent-type'\nimport { ABIMethod, ABITupleType } from 'algosdk'\nimport { Arc56Contract, StorageKey, StorageMap, StructField } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { Sanitizer } from '../util/sanitization'\n\nexport function* appTypes(ctx: GeneratorContext): DocumentParts {\n yield* abiTypes(ctx)\n yield* structTypes(ctx)\n yield* templateVariableTypes(ctx)\n\n const { app, methodSignatureToUniqueName, name } = ctx\n yield* jsDoc(`Defines the types of available calls and state of the ${name} smart contract.`)\n yield `export type ${name}Types = {`\n yield IncIndent\n yield* jsDoc('Maps method signatures / names to their argument and return types.')\n if (app.methods.length == 0) {\n yield 'methods: {}'\n } else {\n yield 'methods:'\n }\n yield IncIndent\n for (const method of app.methods) {\n const methodSig = new ABIMethod(method).getSignature()\n const methodSigSafe = ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const uniqueNameSafe = ctx.sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `& Record<'${methodSigSafe}'${methodSig !== uniqueName ? ` | '${uniqueNameSafe}'` : ''}, {`\n yield IncIndent\n yield `argsObj: {`\n yield IncIndent\n\n const argsMeta = method.args.map((arg, i) => ({\n ...arg,\n name: arg.name ?? `arg${i + 1}`,\n hasDefault: !!arg.defaultValue,\n tsType: getEquivalentType(arg.struct ?? arg.type, 'input', ctx),\n }))\n\n for (const arg of argsMeta) {\n if (arg.desc) yield* jsDoc(arg.desc)\n yield `${ctx.sanitizer.makeSafePropertyIdentifier(arg.name)}${arg.hasDefault ? '?' : ''}: ${arg.tsType}`\n }\n yield DecIndentAndCloseBlock\n yield* inline(\n `argsTuple: [`,\n argsMeta\n .map((arg) => `${ctx.sanitizer.makeSafeVariableIdentifier(arg.name)}: ${arg.tsType}${arg.hasDefault ? ' | undefined' : ''}`)\n .join(', '),\n ']',\n )\n if (method.returns.desc) yield* jsDoc(method.returns.desc)\n yield `returns: ${getEquivalentType(method.returns.struct ?? method.returns.type ?? 'void', 'output', ctx)}`\n\n yield DecIndent\n yield '}>'\n }\n yield DecIndent\n\n const hasLocal =\n (app.state.keys.local && Object.keys(app.state.keys.local).length > 0) ||\n (app.state.maps.local && Object.keys(app.state.maps.local).length > 0)\n const hasGlobal =\n (app.state.keys.global && Object.keys(app.state.keys.global).length > 0) ||\n (app.state.maps.global && Object.keys(app.state.maps.global).length > 0)\n const hasBox =\n (app.state.keys.box && Object.keys(app.state.keys.box).length > 0) || (app.state.maps.box && Object.keys(app.state.maps.box).length > 0)\n yield* appState(ctx, { hasBox, hasGlobal, hasLocal })\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield `\n /**\n * Defines the possible abi call signatures.\n */\n export type ${name}Signatures = keyof ${name}Types['methods']\n /**\n * Defines the possible abi call signatures for methods that return a non-void value.\n */\n export type ${name}NonVoidMethodSignatures = keyof ${name}Types['methods'] extends infer T ? T extends keyof ${name}Types['methods'] ? MethodReturn<T> extends void ? never : T : never : never\n /**\n * Defines an object containing all relevant parameters for a single call to the contract.\n */\n export type CallParams<TSignature extends ${name}Signatures> = Expand<\n Omit<AppClientMethodCallParams, 'method' | 'args' | 'onComplete'> &\n {\n /** The args for the ABI method call, either as an ordered array or an object */\n args: Expand<MethodArgs<TSignature>>\n }\n >\n /**\n * Maps a method signature from the ${name} smart contract to the method's arguments in either tuple or struct form\n */\n export type MethodArgs<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['argsObj' | 'argsTuple']\n /**\n * Maps a method signature from the ${name} smart contract to the method's return type\n */\n export type MethodReturn<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['returns']\n `\n\n if (hasGlobal) {\n yield `\n /**\n * Defines the shape of the keyed global state of the application.\n */\n export type GlobalKeysState = ${name}Types['state']['global']['keys']\n `\n }\n\n if (hasLocal) {\n yield `\n /**\n * Defines the shape of the keyed local state of the application.\n */\n export type LocalKeysState = ${name}Types['state']['local']['keys']\n `\n }\n\n if (hasBox) {\n yield `\n /**\n * Defines the shape of the keyed box state of the application.\n */\n export type BoxKeysState = ${name}Types['state']['box']['keys']\n `\n }\n\n yield NewLine\n}\n\nfunction* abiTypes(ctx: GeneratorContext): DocumentParts {\n const { app } = ctx\n const abiTypes: string[] = []\n\n const pushType = (type: string) => {\n // If we already have this type, skip\n if (abiTypes.includes(type)) return\n\n // void and string are the same types in TS\n if (['void', 'string'].includes(type)) return\n\n // Skip structs\n if (app.structs[type]) return\n\n // If this is an array type, push the base type\n if (type.match(/\\[\\d*\\]$/)) {\n pushType(type.replace(/\\[\\d*\\]$/, ''))\n return\n }\n\n if (type.startsWith('(')) {\n const tupleType = ABITupleType.from(type) as ABITupleType\n\n tupleType.childTypes.forEach((t) => {\n pushType(t.toString())\n })\n\n return\n }\n\n abiTypes.push(type)\n }\n\n Object.values(app.templateVariables ?? {}).forEach((t) => {\n pushType(t.type)\n })\n\n app.methods.forEach((m) => {\n m.args.forEach((a) => {\n pushType(a.type)\n })\n\n pushType(m.returns.type)\n })\n ;(['global', 'local', 'box'] as ['global', 'local', 'box']).forEach((storageType) => {\n Object.values(app.state.keys[storageType]).forEach((k) => {\n pushType(k.keyType)\n pushType(k.valueType)\n })\n\n Object.values(app.state.maps[storageType]).forEach((m) => {\n pushType(m.keyType)\n pushType(m.valueType)\n })\n })\n\n const pushStructFields = (fields: StructField[]) => {\n fields.forEach((sf) => {\n if (typeof sf.type === 'string' && !app.structs[sf.type]) pushType(sf.type)\n else if (typeof sf.type !== 'string') pushStructFields(sf.type)\n })\n }\n\n Object.values(app.structs).forEach((sf) => {\n pushStructFields(sf)\n })\n\n yield '// Aliases for non-encoded ABI values'\n yield NewLine\n for (const t of abiTypes) {\n yield `type ${t} = ${getEquivalentType(t, 'output', ctx)};`\n }\n yield NewLine\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction getStructAsObject(struct: StructField[]): Record<string, any> {\n return Object.fromEntries(struct.map((s) => [s.name, typeof s.type === 'string' ? s.type : getStructAsObject(s.type)]))\n}\n\nfunction* structTypes({ app, sanitizer }: GeneratorContext): DocumentParts {\n if (Object.keys(app.structs).length === 0) return\n\n yield '// Type definitions for ARC-56 structs'\n yield NewLine\n\n for (const structName of Object.keys(app.structs)) {\n yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${JSON.stringify(\n getStructAsObject(app.structs[structName]),\n null,\n 2,\n )\n .replace(/\"/g, '')\n .replaceAll('(', '[')\n .replaceAll(')', ']')\n .replace(/\\[\\d+\\]/g, '[]')}`\n }\n\n yield NewLine\n}\n\nfunction* templateVariableTypes({ app }: GeneratorContext): DocumentParts {\n if (Object.keys(app.templateVariables ?? {}).length === 0) {\n return\n }\n\n yield* jsDoc('Deploy-time template variables')\n yield 'export type TemplateVariables = {'\n yield IncIndent\n\n for (const name of Object.keys(app.templateVariables ?? {})) {\n yield `${name}: ${app.templateVariables![name].type},`\n }\n\n yield DecIndentAndCloseBlock\n}\n\nfunction* keysAndMaps(\n app: Arc56Contract,\n sanitizer: Sanitizer,\n keys: {\n [name: string]: StorageKey\n },\n maps: {\n [name: string]: StorageMap\n },\n): DocumentParts {\n if (keys && Object.keys(keys).length) {\n yield 'keys: {'\n yield IncIndent\n for (const name of Object.keys(keys)) {\n const prop = keys[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: ${prop.valueType === 'AVMBytes' ? 'BinaryState' : getEquivalentType(prop.valueType, 'output', { app, sanitizer })}`\n }\n yield DecIndentAndCloseBlock\n }\n\n if (maps && Object.keys(maps).length) {\n yield 'maps: {'\n yield IncIndent\n for (const name of Object.keys(maps)) {\n const prop = maps[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: Map<${getEquivalentType(prop.keyType, 'input', { app, sanitizer })}, ${getEquivalentType(prop.valueType, 'output', { app, sanitizer })}>`\n }\n yield DecIndentAndCloseBlock\n }\n}\n\nfunction* appState(\n { app, sanitizer }: GeneratorContext,\n stateFlags: { hasLocal: boolean; hasGlobal: boolean; hasBox: boolean },\n): DocumentParts {\n const { hasBox, hasGlobal, hasLocal } = stateFlags\n\n if (hasLocal || hasGlobal) {\n yield* jsDoc('Defines the shape of the state of the application.')\n yield 'state: {'\n yield IncIndent\n if (hasGlobal) {\n yield 'global: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.global, app.state.maps.global)\n yield DecIndentAndCloseBlock\n }\n if (hasLocal) {\n yield 'local: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.local, app.state.maps.local)\n yield DecIndentAndCloseBlock\n }\n if (hasBox) {\n yield 'box: {'\n yield IncIndent\n yield* keysAndMaps(app, sanitizer, app.state.keys.box, app.state.maps.box)\n yield DecIndentAndCloseBlock\n }\n yield DecIndentAndCloseBlock\n }\n}\n"],"names":["jsDoc","IncIndent","ABIMethod","getEquivalentType","DecIndentAndCloseBlock","inline","DecIndent","NewLine","ABITupleType"],"mappings":"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"}
|