@algorandfoundation/algokit-client-generator 4.0.0-beta.1 → 4.0.0-beta.10

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.
Files changed (63) hide show
  1. package/cli.d.ts +6 -0
  2. package/cli.js +47 -16
  3. package/cli.js.map +1 -1
  4. package/cli.mjs +47 -17
  5. package/cli.mjs.map +1 -1
  6. package/client/app-client.js +115 -49
  7. package/client/app-client.js.map +1 -1
  8. package/client/app-client.mjs +115 -49
  9. package/client/app-client.mjs.map +1 -1
  10. package/client/app-factory.js +49 -35
  11. package/client/app-factory.js.map +1 -1
  12. package/client/app-factory.mjs +49 -35
  13. package/client/app-factory.mjs.map +1 -1
  14. package/client/app-types.js +98 -102
  15. package/client/app-types.js.map +1 -1
  16. package/client/app-types.mjs +100 -104
  17. package/client/app-types.mjs.map +1 -1
  18. package/client/call-composer-types.js +9 -9
  19. package/client/call-composer-types.js.map +1 -1
  20. package/client/call-composer-types.mjs +9 -9
  21. package/client/call-composer-types.mjs.map +1 -1
  22. package/client/call-composer.js +25 -23
  23. package/client/call-composer.js.map +1 -1
  24. package/client/call-composer.mjs +25 -23
  25. package/client/call-composer.mjs.map +1 -1
  26. package/client/deploy-types.js +9 -9
  27. package/client/deploy-types.js.map +1 -1
  28. package/client/deploy-types.mjs +9 -9
  29. package/client/deploy-types.mjs.map +1 -1
  30. package/client/generate.js +6 -7
  31. package/client/generate.js.map +1 -1
  32. package/client/generate.mjs +6 -7
  33. package/client/generate.mjs.map +1 -1
  34. package/client/helpers/get-equivalent-type.js +9 -3
  35. package/client/helpers/get-equivalent-type.js.map +1 -1
  36. package/client/helpers/get-equivalent-type.mjs +9 -3
  37. package/client/helpers/get-equivalent-type.mjs.map +1 -1
  38. package/client/imports.js +8 -5
  39. package/client/imports.js.map +1 -1
  40. package/client/imports.mjs +8 -5
  41. package/client/imports.mjs.map +1 -1
  42. package/client/params-factory.js +12 -12
  43. package/client/params-factory.js.map +1 -1
  44. package/client/params-factory.mjs +12 -12
  45. package/client/params-factory.mjs.map +1 -1
  46. package/output/writer.d.ts +5 -5
  47. package/output/writer.js +9 -3
  48. package/output/writer.js.map +1 -1
  49. package/output/writer.mjs +9 -3
  50. package/output/writer.mjs.map +1 -1
  51. package/package.json +9 -5
  52. package/schema/arc56.schema.json.js +465 -501
  53. package/schema/arc56.schema.json.js.map +1 -1
  54. package/schema/arc56.schema.json.mjs +462 -501
  55. package/schema/arc56.schema.json.mjs.map +1 -1
  56. package/schema/load.js +7 -1
  57. package/schema/load.js.map +1 -1
  58. package/schema/load.mjs +7 -1
  59. package/schema/load.mjs.map +1 -1
  60. package/util/sanitization.js +13 -8
  61. package/util/sanitization.js.map +1 -1
  62. package/util/sanitization.mjs +13 -8
  63. package/util/sanitization.mjs.map +1 -1
@@ -5,34 +5,36 @@ import { ABIMethod } from 'algosdk';
5
5
 
6
6
  function* composeMethod(ctx) {
7
7
  const { name, callConfig } = ctx;
8
+ // todo: Patrick feedback - allow common params to be passed in here so they propagate to all params calls e.g. firstValid
8
9
  yield `public newGroup(): ${name}Composer {`;
9
10
  yield IncIndent;
10
11
  yield `const client = this`;
11
- yield `const composer = client.appClient.newGroup()`;
12
+ yield `const composer = this.algorand.newGroup()`;
13
+ yield `let promiseChain:Promise<unknown> = Promise.resolve()`;
12
14
  yield `const resultMappers: Array<undefined | ((x: ABIReturn | undefined) => any)> = []`;
13
15
  yield `return {`;
14
16
  yield IncIndent;
15
17
  yield* callComposerNoops(ctx);
16
- // This is async and unless we bring back promiseChain (which is possible) it's not a nice
17
- // experience to expose update method(s)
18
- //yield* callComposerOperationMethods(ctx, callConfig.updateMethods, 'update', true)
18
+ yield* callComposerOperationMethods(ctx, callConfig.updateMethods, 'update', true);
19
19
  yield* callComposerOperationMethods(ctx, callConfig.deleteMethods, 'delete');
20
20
  yield* callComposerOperationMethods(ctx, callConfig.optInMethods, 'optIn');
21
21
  yield* callComposerOperationMethods(ctx, callConfig.closeOutMethods, 'closeOut');
22
22
  yield* callComposerClearState(ctx);
23
23
  yield `addTransaction(txn: Transaction, signer?: TransactionSigner) {`;
24
24
  yield IncIndent;
25
- yield 'composer.addTransaction(txn, signer)';
25
+ yield 'promiseChain = promiseChain.then(() => composer.addTransaction(txn, signer))';
26
26
  yield 'return this';
27
27
  yield DecIndent;
28
28
  yield '},';
29
- yield `composer() {`;
29
+ yield `async composer() {`;
30
30
  yield IncIndent;
31
+ yield `await promiseChain`;
31
32
  yield 'return composer';
32
33
  yield DecIndent;
33
34
  yield '},';
34
35
  yield `async simulate(options?: SimulateOptions) {`;
35
36
  yield IncIndent;
37
+ yield `await promiseChain`;
36
38
  yield `const result = await composer.simulate(options)`;
37
39
  yield `return {`;
38
40
  yield IncIndent;
@@ -41,9 +43,10 @@ function* composeMethod(ctx) {
41
43
  yield DecIndentAndCloseBlock;
42
44
  yield DecIndent;
43
45
  yield '},';
44
- yield `async execute(params?: ExecuteParams) {`;
46
+ yield `async send(params?: SendParams) {`;
45
47
  yield IncIndent;
46
- yield `const result = await composer.execute(params)`;
48
+ yield `await promiseChain`;
49
+ yield `const result = await composer.send(params)`;
47
50
  yield `return {`;
48
51
  yield IncIndent;
49
52
  yield `...result,`;
@@ -54,29 +57,29 @@ function* composeMethod(ctx) {
54
57
  yield `} as unknown as ${name}Composer`;
55
58
  yield DecIndentAndCloseBlock;
56
59
  }
57
- function* callComposerNoops({ app, callConfig, methodSignatureToUniqueName, sanitizer }) {
60
+ function* callComposerNoops({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }) {
58
61
  if (callConfig.callMethods.includes(BARE_CALL)) {
59
62
  yield* jsDoc(`Add a bare method call to the ${app.name} contract`);
60
63
  yield `bare(params: AppClientBareCallParams & ${getCallOnCompleteOptions(BARE_CALL, app).type}) {`;
61
64
  yield IncIndent;
62
- yield `composer.addAppCall(client.params.bare(params))`;
65
+ yield `promiseChain = promiseChain.then(() => composer.addAppCall(client.params.bare(params)))`;
63
66
  yield `return this`;
64
67
  yield DecIndent;
65
68
  yield '},';
66
69
  }
67
70
  for (const methodSignature of callConfig.callMethods.filter((m) => m !== BARE_CALL).map((m) => m)) {
68
71
  const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]);
69
- const methodSignatureSafe = sanitizer.makeSafeStringTypeLiteral(methodSignature);
72
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSignature);
70
73
  const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName);
71
74
  // Skip methods which don't support a no_op call config
72
75
  if (!callConfig.callMethods.includes(methodSignature))
73
76
  continue;
74
77
  yield* jsDoc(`Add a ${methodSignature} method call against the ${app.name} contract`);
75
- yield `${methodName}(params: CallParams<'${methodSignatureSafe}'> & ${getCallOnCompleteOptions(methodSignature, app).type}) {`;
78
+ yield `${methodName}(params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & ${getCallOnCompleteOptions(methodSignature, app).type}) {`;
76
79
  yield IncIndent;
77
- yield `composer.addAppCallMethodCall(client.params${methodNameAccessor}(params))`;
80
+ yield `promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params${methodNameAccessor}(params)))`;
78
81
  const outputTypeName = app.methods.find((m) => new ABIMethod(m).getSignature() === methodSignature)?.returns.type;
79
- yield `resultMappers.push(${outputTypeName && outputTypeName !== 'void' ? `(v) => client.decodeReturnValue('${methodSignatureSafe}', v)` : 'undefined'})`;
82
+ yield `resultMappers.push(${outputTypeName && outputTypeName !== 'void' ? `(v) => client.decodeReturnValue('${methodSigSafe}', v)` : 'undefined'})`;
80
83
  yield `return this`;
81
84
  yield DecIndent;
82
85
  yield '},';
@@ -86,25 +89,24 @@ function* callComposerClearState({ app }) {
86
89
  yield* jsDoc(`Add a clear state call to the ${app.name} contract`);
87
90
  yield `clearState(params: AppClientBareCallParams) {`;
88
91
  yield IncIndent;
89
- yield `composer.addAppCall(client.params.clearState(params))`;
92
+ yield `promiseChain = promiseChain.then(() => composer.addAppCall(client.params.clearState(params)))`;
90
93
  yield `return this`;
91
94
  yield DecIndent;
92
95
  yield '},';
93
96
  }
94
- function* callComposerOperationMethods({ app, methodSignatureToUniqueName, sanitizer }, methods, verb, includeCompilation) {
97
+ function* callComposerOperationMethods({ app, name, methodSignatureToUniqueName, sanitizer }, methods, verb, includeCompilation) {
95
98
  const callType = verb === 'update' ? 'Update' : verb === 'delete' ? 'Delete' : 'Call';
96
99
  if (methods.length) {
97
100
  yield `get ${verb}() {`;
98
101
  yield IncIndent;
99
- yield `const $this = this`;
100
102
  yield `return {`;
101
103
  yield IncIndent;
102
104
  for (const methodSig of methods) {
103
105
  if (methodSig === BARE_CALL) {
104
- yield `bare(params?: AppClientBareCallParams ${''}) {`;
106
+ yield `bare: (params?: AppClientBareCallParams ${includeCompilation ? '& AppClientCompilationParams ' : ''}) => {`;
105
107
  yield IncIndent;
106
- yield `composer.addApp${callType}(client.params.${verb}.bare(params))`;
107
- yield `return $this`;
108
+ yield `promiseChain = promiseChain.then(${verb === 'update' ? 'async ' : ''}() => composer.addApp${callType}(${verb === 'update' ? 'await ' : ''}client.params.${verb}.bare(params)))`;
109
+ yield `return this`;
108
110
  yield DecIndent;
109
111
  yield '},';
110
112
  }
@@ -113,12 +115,12 @@ function* callComposerOperationMethods({ app, methodSignatureToUniqueName, sanit
113
115
  const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName);
114
116
  const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName);
115
117
  const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig);
116
- yield `${methodName}(params: CallParams<'${methodSigSafe}'>${''}) {`;
118
+ yield `${methodName}: (params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${includeCompilation ? ' & AppClientCompilationParams' : ''}) => {`;
117
119
  yield IncIndent;
118
- yield `composer.addApp${callType}MethodCall(client.params.${verb}${methodNameAccessor}(params))`;
120
+ yield `promiseChain = promiseChain.then(async () => composer.addApp${callType}MethodCall(await client.params.${verb}${methodNameAccessor}(params)))`;
119
121
  const outputTypeName = app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)?.returns.type;
120
122
  yield `resultMappers.push(${outputTypeName && outputTypeName !== 'void' ? `(v) => client.decodeReturnValue('${methodSigSafe}', v)` : 'undefined'})`;
121
- yield `return $this`;
123
+ yield `return this`;
122
124
  yield DecIndent;
123
125
  yield '},';
124
126
  }
@@ -1 +1 @@
1
- {"version":3,"file":"call-composer.mjs","sources":["../../src/client/call-composer.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { getCallOnCompleteOptions } from './deploy-types'\nimport { ABIMethod, ABIMethodParams } from 'algosdk'\n\nexport function* composeMethod(ctx: GeneratorContext): DocumentParts {\n const { name, callConfig } = ctx\n yield `public newGroup(): ${name}Composer {`\n yield IncIndent\n\n yield `const client = this`\n yield `const composer = client.appClient.newGroup()`\n yield `const resultMappers: Array<undefined | ((x: ABIReturn | undefined) => any)> = []`\n yield `return {`\n yield IncIndent\n\n yield* callComposerNoops(ctx)\n // This is async and unless we bring back promiseChain (which is possible) it's not a nice\n // experience to expose update method(s)\n //yield* callComposerOperationMethods(ctx, callConfig.updateMethods, 'update', true)\n yield* callComposerOperationMethods(ctx, callConfig.deleteMethods, 'delete')\n yield* callComposerOperationMethods(ctx, callConfig.optInMethods, 'optIn')\n yield* callComposerOperationMethods(ctx, callConfig.closeOutMethods, 'closeOut')\n yield* callComposerClearState(ctx)\n\n yield `addTransaction(txn: Transaction, signer?: TransactionSigner) {`\n yield IncIndent\n yield 'composer.addTransaction(txn, signer)'\n yield 'return this'\n yield DecIndent\n yield '},'\n\n yield `composer() {`\n yield IncIndent\n yield 'return composer'\n yield DecIndent\n yield '},'\n\n yield `async simulate(options?: SimulateOptions) {`\n yield IncIndent\n yield `const result = await composer.simulate(options)`\n yield `return {`\n yield IncIndent\n yield `...result,`\n yield `returns: result.returns?.map((val, i) => resultMappers[i] !== undefined ? resultMappers[i]!(val) : val.returnValue)`\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n\n yield `async execute(params?: ExecuteParams) {`\n yield IncIndent\n yield `const result = await composer.execute(params)`\n yield `return {`\n yield IncIndent\n yield `...result,`\n yield `returns: result.returns?.map((val, i) => resultMappers[i] !== undefined ? resultMappers[i]!(val) : val.returnValue)`\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `} as unknown as ${name}Composer`\n\n yield DecIndentAndCloseBlock\n}\n\nfunction* callComposerNoops({ app, callConfig, methodSignatureToUniqueName, sanitizer }: GeneratorContext): DocumentParts {\n if (callConfig.callMethods.includes(BARE_CALL)) {\n yield* jsDoc(`Add a bare method call to the ${app.name} contract`)\n yield `bare(params: AppClientBareCallParams & ${getCallOnCompleteOptions(BARE_CALL, app).type}) {`\n yield IncIndent\n yield `composer.addAppCall(client.params.bare(params))`\n yield `return this`\n yield DecIndent\n yield '},'\n }\n\n for (const methodSignature of callConfig.callMethods.filter((m) => m !== BARE_CALL).map((m) => m as string)) {\n const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature])\n const methodSignatureSafe = sanitizer.makeSafeStringTypeLiteral(methodSignature)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n // Skip methods which don't support a no_op call config\n if (!callConfig.callMethods.includes(methodSignature)) continue\n yield* jsDoc(`Add a ${methodSignature} method call against the ${app.name} contract`)\n yield `${methodName}(params: CallParams<'${methodSignatureSafe}'> & ${getCallOnCompleteOptions(methodSignature, app).type}) {`\n yield IncIndent\n yield `composer.addAppCallMethodCall(client.params${methodNameAccessor}(params))`\n const outputTypeName = app.methods.find((m: ABIMethodParams) => new ABIMethod(m).getSignature() === methodSignature)?.returns.type\n yield `resultMappers.push(${outputTypeName && outputTypeName !== 'void' ? `(v) => client.decodeReturnValue('${methodSignatureSafe}', v)` : 'undefined'})`\n yield `return this`\n yield DecIndent\n yield '},'\n }\n}\n\nfunction* callComposerClearState({ app }: GeneratorContext): DocumentParts {\n yield* jsDoc(`Add a clear state call to the ${app.name} contract`)\n yield `clearState(params: AppClientBareCallParams) {`\n yield IncIndent\n yield `composer.addAppCall(client.params.clearState(params))`\n yield `return this`\n yield DecIndent\n yield '},'\n}\n\nfunction* callComposerOperationMethods(\n { app, methodSignatureToUniqueName, sanitizer }: GeneratorContext,\n methods: MethodList,\n verb: 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n const callType = verb === 'update' ? 'Update' : verb === 'delete' ? 'Delete' : 'Call'\n if (methods.length) {\n yield `get ${verb}() {`\n yield IncIndent\n yield `const $this = this`\n yield `return {`\n yield IncIndent\n for (const methodSig of methods) {\n if (methodSig === BARE_CALL) {\n yield `bare(params?: AppClientBareCallParams ${includeCompilation ? '& AppClientCompilationParams ' : ''}) {`\n yield IncIndent\n yield `composer.addApp${callType}(client.params.${verb}.bare(params))`\n yield `return $this`\n yield DecIndent\n yield '},'\n } else {\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${methodName}(params: CallParams<'${methodSigSafe}'>${includeCompilation ? ' & AppClientCompilationParams' : ''}) {`\n yield IncIndent\n yield `composer.addApp${callType}MethodCall(client.params.${verb}${methodNameAccessor}(params))`\n const outputTypeName = app.methods.find((m: ABIMethodParams) => new ABIMethod(m).getSignature() === methodSig)?.returns.type\n yield `resultMappers.push(${outputTypeName && outputTypeName !== 'void' ? `(v) => client.decodeReturnValue('${methodSigSafe}', v)` : 'undefined'})`\n yield `return $this`\n yield DecIndent\n yield '},'\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-composer.mjs","sources":["../../src/client/call-composer.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, jsDoc } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\nimport { BARE_CALL, MethodList } from './helpers/get-call-config-summary'\nimport { getCallOnCompleteOptions } from './deploy-types'\nimport { ABIMethod, ABIMethodParams } from 'algosdk'\n\nexport function* composeMethod(ctx: GeneratorContext): DocumentParts {\n const { name, callConfig } = ctx\n // todo: Patrick feedback - allow common params to be passed in here so they propagate to all params calls e.g. firstValid\n yield `public newGroup(): ${name}Composer {`\n yield IncIndent\n\n yield `const client = this`\n yield `const composer = this.algorand.newGroup()`\n yield `let promiseChain:Promise<unknown> = Promise.resolve()`\n yield `const resultMappers: Array<undefined | ((x: ABIReturn | undefined) => any)> = []`\n yield `return {`\n yield IncIndent\n\n yield* callComposerNoops(ctx)\n yield* callComposerOperationMethods(ctx, callConfig.updateMethods, 'update', true)\n yield* callComposerOperationMethods(ctx, callConfig.deleteMethods, 'delete')\n yield* callComposerOperationMethods(ctx, callConfig.optInMethods, 'optIn')\n yield* callComposerOperationMethods(ctx, callConfig.closeOutMethods, 'closeOut')\n yield* callComposerClearState(ctx)\n\n yield `addTransaction(txn: Transaction, signer?: TransactionSigner) {`\n yield IncIndent\n yield 'promiseChain = promiseChain.then(() => composer.addTransaction(txn, signer))'\n yield 'return this'\n yield DecIndent\n yield '},'\n\n yield `async composer() {`\n yield IncIndent\n yield `await promiseChain`\n yield 'return composer'\n yield DecIndent\n yield '},'\n\n yield `async simulate(options?: SimulateOptions) {`\n yield IncIndent\n yield `await promiseChain`\n yield `const result = await composer.simulate(options)`\n yield `return {`\n yield IncIndent\n yield `...result,`\n yield `returns: result.returns?.map((val, i) => resultMappers[i] !== undefined ? resultMappers[i]!(val) : val.returnValue)`\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n\n yield `async send(params?: SendParams) {`\n yield IncIndent\n yield `await promiseChain`\n yield `const result = await composer.send(params)`\n yield `return {`\n yield IncIndent\n yield `...result,`\n yield `returns: result.returns?.map((val, i) => resultMappers[i] !== undefined ? resultMappers[i]!(val) : val.returnValue)`\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield `} as unknown as ${name}Composer`\n\n yield DecIndentAndCloseBlock\n}\n\nfunction* callComposerNoops({ app, name, callConfig, methodSignatureToUniqueName, sanitizer }: GeneratorContext): DocumentParts {\n if (callConfig.callMethods.includes(BARE_CALL)) {\n yield* jsDoc(`Add a bare method call to the ${app.name} contract`)\n yield `bare(params: AppClientBareCallParams & ${getCallOnCompleteOptions(BARE_CALL, app).type}) {`\n yield IncIndent\n yield `promiseChain = promiseChain.then(() => composer.addAppCall(client.params.bare(params)))`\n yield `return this`\n yield DecIndent\n yield '},'\n }\n\n for (const methodSignature of callConfig.callMethods.filter((m) => m !== BARE_CALL).map((m) => m as string)) {\n const methodName = sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature])\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSignature)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n // Skip methods which don't support a no_op call config\n if (!callConfig.callMethods.includes(methodSignature)) continue\n yield* jsDoc(`Add a ${methodSignature} method call against the ${app.name} contract`)\n yield `${methodName}(params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & ${getCallOnCompleteOptions(methodSignature, app).type}) {`\n yield IncIndent\n yield `promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params${methodNameAccessor}(params)))`\n const outputTypeName = app.methods.find((m: ABIMethodParams) => new ABIMethod(m).getSignature() === methodSignature)?.returns.type\n yield `resultMappers.push(${outputTypeName && outputTypeName !== 'void' ? `(v) => client.decodeReturnValue('${methodSigSafe}', v)` : 'undefined'})`\n yield `return this`\n yield DecIndent\n yield '},'\n }\n}\n\nfunction* callComposerClearState({ app }: GeneratorContext): DocumentParts {\n yield* jsDoc(`Add a clear state call to the ${app.name} contract`)\n yield `clearState(params: AppClientBareCallParams) {`\n yield IncIndent\n yield `promiseChain = promiseChain.then(() => composer.addAppCall(client.params.clearState(params)))`\n yield `return this`\n yield DecIndent\n yield '},'\n}\n\nfunction* callComposerOperationMethods(\n { app, name, methodSignatureToUniqueName, sanitizer }: GeneratorContext,\n methods: MethodList,\n verb: 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n const callType = verb === 'update' ? 'Update' : verb === 'delete' ? 'Delete' : 'Call'\n if (methods.length) {\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 `bare: (params?: AppClientBareCallParams ${includeCompilation ? '& AppClientCompilationParams ' : ''}) => {`\n yield IncIndent\n yield `promiseChain = promiseChain.then(${verb === 'update' ? 'async ' : ''}() => composer.addApp${callType}(${verb === 'update' ? 'await ' : ''}client.params.${verb}.bare(params)))`\n yield `return this`\n yield DecIndent\n yield '},'\n } else {\n const uniqueName = methodSignatureToUniqueName[methodSig]\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${methodName}: (params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${includeCompilation ? ' & AppClientCompilationParams' : ''}) => {`\n yield IncIndent\n yield `promiseChain = promiseChain.then(async () => composer.addApp${callType}MethodCall(await client.params.${verb}${methodNameAccessor}(params)))`\n const outputTypeName = app.methods.find((m: ABIMethodParams) => new ABIMethod(m).getSignature() === methodSig)?.returns.type\n yield `resultMappers.push(${outputTypeName && outputTypeName !== 'void' ? `(v) => client.decodeReturnValue('${methodSigSafe}', v)` : 'undefined'})`\n yield `return this`\n yield DecIndent\n yield '},'\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndent\n yield '},'\n }\n}\n"],"names":[],"mappings":"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"}
@@ -38,13 +38,13 @@ function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName
38
38
  yield `| Expand<AppClientBareCallParams & {method?: undefined} & ${onComplete.type} & CreateSchema>`;
39
39
  }
40
40
  else {
41
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
41
42
  const uniqueName = methodSignatureToUniqueName[method];
42
43
  if (uniqueName !== method) {
43
44
  const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName);
44
- yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`;
45
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`;
45
46
  }
46
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
47
- yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`;
47
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`;
48
48
  }
49
49
  }
50
50
  yield writer.DecIndent;
@@ -59,12 +59,12 @@ function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName
59
59
  }
60
60
  else {
61
61
  const uniqueName = methodSignatureToUniqueName[method];
62
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
62
63
  if (uniqueName !== method) {
63
64
  const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName);
64
- yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`;
65
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`;
65
66
  }
66
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
67
- yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`;
67
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`;
68
68
  }
69
69
  }
70
70
  yield writer.DecIndent;
@@ -79,12 +79,12 @@ function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName
79
79
  }
80
80
  else {
81
81
  const uniqueName = methodSignatureToUniqueName[method];
82
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
82
83
  if (uniqueName !== method) {
83
84
  const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName);
84
- yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`;
85
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`;
85
86
  }
86
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
87
- yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`;
87
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`;
88
88
  }
89
89
  }
90
90
  yield writer.DecIndent;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-types.js","sources":["../../src/client/deploy-types.ts"],"sourcesContent":["import { DecIndent, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodIdentifier } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport function getCreateOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCreateOnCompletes =\n method === BARE_CALL ? app.bareActions.create : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.create\n const hasNoOp = validCreateOnCompletes?.includes('NoOp')\n const onCompleteType = validCreateOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCreateOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function getCallOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCallOnCompletes =\n method === BARE_CALL ? app.bareActions.call : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.call\n const hasNoOp = validCallOnCompletes?.includes('NoOp')\n const onCompleteType = validCallOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCallOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName }: GeneratorContext): DocumentParts {\n const name = sanitizer.makeSafeTypeIdentifier(app.name)\n\n if (callConfig.createMethods.length > 0) {\n yield* jsDoc('Defines supported create method params 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 `| Expand<AppClientBareCallParams & {method?: undefined} & ${onComplete.type} & CreateSchema>`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`\n }\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`\n }\n }\n yield DecIndent\n }\n if (callConfig.updateMethods.length > 0) {\n yield* jsDoc('Defines supported update method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`\n }\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n if (callConfig.deleteMethods.length > 0) {\n yield* jsDoc('Defines supported delete method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`\n }\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n yield* jsDoc('Defines arguments required for the deploy method.')\n yield `export type ${name}DeployParams = Expand<Omit<AppFactoryDeployParams, 'createParams' | 'updateParams' | 'deleteParams'> & {`\n yield IncIndent\n if (callConfig.createMethods.length) {\n yield* jsDoc(\n 'Create transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `createParams?: ${name}CreateCallParams`\n }\n if (callConfig.updateMethods.length) {\n yield* jsDoc(\n 'Update transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `updateParams?: ${name}UpdateCallParams`\n }\n if (callConfig.deleteMethods.length) {\n yield* jsDoc(\n 'Delete transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `deleteParams?: ${name}DeleteCallParams`\n }\n yield DecIndent\n yield `}>`\n yield NewLine\n}\n"],"names":["BARE_CALL","ABIMethod","jsDoc","IncIndent","DecIndent","NewLine"],"mappings":"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"}
1
+ {"version":3,"file":"deploy-types.js","sources":["../../src/client/deploy-types.ts"],"sourcesContent":["import { DecIndent, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodIdentifier } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport function getCreateOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCreateOnCompletes =\n method === BARE_CALL ? app.bareActions.create : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.create\n const hasNoOp = validCreateOnCompletes?.includes('NoOp')\n const onCompleteType = validCreateOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCreateOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function getCallOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCallOnCompletes =\n method === BARE_CALL ? app.bareActions.call : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.call\n const hasNoOp = validCallOnCompletes?.includes('NoOp')\n const onCompleteType = validCallOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCallOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName }: GeneratorContext): DocumentParts {\n const name = sanitizer.makeSafeTypeIdentifier(app.name)\n\n if (callConfig.createMethods.length > 0) {\n yield* jsDoc('Defines supported create method params 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 `| Expand<AppClientBareCallParams & {method?: undefined} & ${onComplete.type} & CreateSchema>`\n } else {\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`\n }\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`\n }\n }\n yield DecIndent\n }\n if (callConfig.updateMethods.length > 0) {\n yield* jsDoc('Defines supported update method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`\n }\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n if (callConfig.deleteMethods.length > 0) {\n yield* jsDoc('Defines supported delete method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`\n }\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n yield* jsDoc('Defines arguments required for the deploy method.')\n yield `export type ${name}DeployParams = Expand<Omit<AppFactoryDeployParams, 'createParams' | 'updateParams' | 'deleteParams'> & {`\n yield IncIndent\n if (callConfig.createMethods.length) {\n yield* jsDoc(\n 'Create transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `createParams?: ${name}CreateCallParams`\n }\n if (callConfig.updateMethods.length) {\n yield* jsDoc(\n 'Update transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `updateParams?: ${name}UpdateCallParams`\n }\n if (callConfig.deleteMethods.length) {\n yield* jsDoc(\n 'Delete transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `deleteParams?: ${name}DeleteCallParams`\n }\n yield DecIndent\n yield `}>`\n yield NewLine\n}\n"],"names":["BARE_CALL","ABIMethod","jsDoc","IncIndent","DecIndent","NewLine"],"mappings":"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"}
@@ -36,13 +36,13 @@ function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName
36
36
  yield `| Expand<AppClientBareCallParams & {method?: undefined} & ${onComplete.type} & CreateSchema>`;
37
37
  }
38
38
  else {
39
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
39
40
  const uniqueName = methodSignatureToUniqueName[method];
40
41
  if (uniqueName !== method) {
41
42
  const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName);
42
- yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`;
43
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`;
43
44
  }
44
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
45
- yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`;
45
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`;
46
46
  }
47
47
  }
48
48
  yield DecIndent;
@@ -57,12 +57,12 @@ function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName
57
57
  }
58
58
  else {
59
59
  const uniqueName = methodSignatureToUniqueName[method];
60
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
60
61
  if (uniqueName !== method) {
61
62
  const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName);
62
- yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`;
63
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`;
63
64
  }
64
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
65
- yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`;
65
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`;
66
66
  }
67
67
  }
68
68
  yield DecIndent;
@@ -77,12 +77,12 @@ function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName
77
77
  }
78
78
  else {
79
79
  const uniqueName = methodSignatureToUniqueName[method];
80
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
80
81
  if (uniqueName !== method) {
81
82
  const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName);
82
- yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`;
83
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`;
83
84
  }
84
- const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method);
85
- yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`;
85
+ yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`;
86
86
  }
87
87
  }
88
88
  yield DecIndent;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-types.mjs","sources":["../../src/client/deploy-types.ts"],"sourcesContent":["import { DecIndent, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodIdentifier } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport function getCreateOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCreateOnCompletes =\n method === BARE_CALL ? app.bareActions.create : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.create\n const hasNoOp = validCreateOnCompletes?.includes('NoOp')\n const onCompleteType = validCreateOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCreateOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function getCallOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCallOnCompletes =\n method === BARE_CALL ? app.bareActions.call : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.call\n const hasNoOp = validCallOnCompletes?.includes('NoOp')\n const onCompleteType = validCallOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCallOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName }: GeneratorContext): DocumentParts {\n const name = sanitizer.makeSafeTypeIdentifier(app.name)\n\n if (callConfig.createMethods.length > 0) {\n yield* jsDoc('Defines supported create method params 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 `| Expand<AppClientBareCallParams & {method?: undefined} & ${onComplete.type} & CreateSchema>`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`\n }\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`\n }\n }\n yield DecIndent\n }\n if (callConfig.updateMethods.length > 0) {\n yield* jsDoc('Defines supported update method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`\n }\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n if (callConfig.deleteMethods.length > 0) {\n yield* jsDoc('Defines supported delete method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<'${methodName}'> & {method: '${methodName}'}>`\n }\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n yield `| Expand<CallParams<'${methodSigSafe}'> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n yield* jsDoc('Defines arguments required for the deploy method.')\n yield `export type ${name}DeployParams = Expand<Omit<AppFactoryDeployParams, 'createParams' | 'updateParams' | 'deleteParams'> & {`\n yield IncIndent\n if (callConfig.createMethods.length) {\n yield* jsDoc(\n 'Create transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `createParams?: ${name}CreateCallParams`\n }\n if (callConfig.updateMethods.length) {\n yield* jsDoc(\n 'Update transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `updateParams?: ${name}UpdateCallParams`\n }\n if (callConfig.deleteMethods.length) {\n yield* jsDoc(\n 'Delete transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `deleteParams?: ${name}DeleteCallParams`\n }\n yield DecIndent\n yield `}>`\n yield NewLine\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-types.mjs","sources":["../../src/client/deploy-types.ts"],"sourcesContent":["import { DecIndent, DocumentParts, IncIndent, jsDoc, NewLine } from '../output/writer'\nimport { BARE_CALL, MethodIdentifier } from './helpers/get-call-config-summary'\nimport { GeneratorContext } from './generator-context'\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport function getCreateOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCreateOnCompletes =\n method === BARE_CALL ? app.bareActions.create : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.create\n const hasNoOp = validCreateOnCompletes?.includes('NoOp')\n const onCompleteType = validCreateOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCreateOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function getCallOnCompleteOptions(method: MethodIdentifier, app: Arc56Contract) {\n const validCallOnCompletes =\n method === BARE_CALL ? app.bareActions.call : app.methods.find((m) => new ABIMethod(m).getSignature() === method)?.actions?.call\n const hasNoOp = validCallOnCompletes?.includes('NoOp')\n const onCompleteType = validCallOnCompletes\n ? `{onComplete${hasNoOp ? '?' : ''}: ${validCallOnCompletes.map((oc) => `OnApplicationComplete.${oc}OC`).join(' | ')}}`\n : {}\n return {\n type: onCompleteType,\n isOptional: hasNoOp,\n }\n}\n\nexport function* deployTypes({ app, callConfig, sanitizer, methodSignatureToUniqueName }: GeneratorContext): DocumentParts {\n const name = sanitizer.makeSafeTypeIdentifier(app.name)\n\n if (callConfig.createMethods.length > 0) {\n yield* jsDoc('Defines supported create method params 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 `| Expand<AppClientBareCallParams & {method?: undefined} & ${onComplete.type} & CreateSchema>`\n } else {\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n const uniqueName = methodSignatureToUniqueName[method]\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'} & ${onComplete.type} & CreateSchema>`\n }\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'} & ${onComplete.type} & CreateSchema>`\n }\n }\n yield DecIndent\n }\n if (callConfig.updateMethods.length > 0) {\n yield* jsDoc('Defines supported update method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`\n }\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n if (callConfig.deleteMethods.length > 0) {\n yield* jsDoc('Defines supported delete method params 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 `| Expand<AppClientBareCallParams> & {method?: undefined}`\n } else {\n const uniqueName = methodSignatureToUniqueName[method]\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(method)\n if (uniqueName !== method) {\n const methodName = sanitizer.makeSafeStringTypeLiteral(uniqueName)\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodName}'}>`\n }\n yield `| Expand<CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']> & {method: '${methodSigSafe}'}>`\n }\n }\n yield DecIndent\n }\n\n yield* jsDoc('Defines arguments required for the deploy method.')\n yield `export type ${name}DeployParams = Expand<Omit<AppFactoryDeployParams, 'createParams' | 'updateParams' | 'deleteParams'> & {`\n yield IncIndent\n if (callConfig.createMethods.length) {\n yield* jsDoc(\n 'Create transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `createParams?: ${name}CreateCallParams`\n }\n if (callConfig.updateMethods.length) {\n yield* jsDoc(\n 'Update transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `updateParams?: ${name}UpdateCallParams`\n }\n if (callConfig.deleteMethods.length) {\n yield* jsDoc(\n 'Delete transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)',\n )\n yield `deleteParams?: ${name}DeleteCallParams`\n }\n yield DecIndent\n yield `}>`\n yield NewLine\n}\n"],"names":[],"mappings":"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"}
@@ -12,25 +12,24 @@ var callComposerTypes = require('./call-composer-types.js');
12
12
  var appFactory = require('./app-factory.js');
13
13
 
14
14
  function convertStructs(s, sanitizer) {
15
- return Object.fromEntries(Object.keys(s).map((key) => [
16
- sanitizer.makeSafePropertyIdentifier(key),
17
- typeof s[key] === 'string' ? s[key] : convertStructs(s[key], sanitizer),
18
- ]));
15
+ return s.map(({ name, type }) => ({
16
+ name: sanitizer.makeSafePropertyIdentifier(name),
17
+ type: typeof type === 'string' ? type : convertStructs(type, sanitizer),
18
+ }));
19
19
  }
20
20
  function* generate(app, options = { preserveNames: false }) {
21
21
  const ctx = generatorContext.createGeneratorContext(app, options);
22
22
  yield `/* eslint-disable */`;
23
- yield `// @ts-nocheck`;
24
23
  yield `/**`;
25
24
  yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`;
26
25
  yield ` * DO NOT MODIFY IT BY HAND.`;
27
- yield ` * requires: @algorandfoundation/algokit-utils: ^3`;
26
+ yield ` * requires: @algorandfoundation/algokit-utils: ^7`;
28
27
  yield ` */`;
29
28
  yield* imports.imports();
30
29
  // Change the structs definition to sanitize property names according to the defined rules
31
30
  // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp
32
31
  app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]));
33
- yield* writer.inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app));
32
+ yield* writer.inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app), ' as unknown as Arc56Contract');
34
33
  yield writer.NewLine;
35
34
  yield* utilityTypes.utilityTypes();
36
35
  yield writer.NewLine;
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sources":["../../src/client/generate.ts"],"sourcesContent":["import { DocumentParts, inline, NewLine } from '../output/writer'\nimport { paramsFactory } from './params-factory'\nimport { appClient } from './app-client'\nimport { deployTypes } from './deploy-types'\nimport { utilityTypes } from './utility-types'\nimport { imports } from './imports'\nimport { createGeneratorContext, GeneratorOptions } from './generator-context'\nimport { appTypes } from './app-types'\nimport { callComposerType } from './call-composer-types'\nimport { Arc56Contract, StructFields } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { appFactory } from './app-factory'\nimport { Sanitizer } from '../util/sanitization'\n\nfunction convertStructs(s: StructFields, sanitizer: Sanitizer): StructFields {\n return Object.fromEntries(\n Object.keys(s).map((key) => [\n sanitizer.makeSafePropertyIdentifier(key),\n typeof s[key] === 'string' ? s[key] : convertStructs(s[key] as StructFields, sanitizer),\n ]),\n )\n}\n\nexport function* generate(app: Arc56Contract, options: GeneratorOptions = { preserveNames: false }): DocumentParts {\n const ctx = createGeneratorContext(app, options)\n yield `/* eslint-disable */`\n yield `// @ts-nocheck`\n yield `/**`\n yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`\n yield ` * DO NOT MODIFY IT BY HAND.`\n yield ` * requires: @algorandfoundation/algokit-utils: ^3`\n yield ` */`\n\n yield* imports()\n // Change the structs definition to sanitize property names according to the defined rules\n // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp\n app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]))\n yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app))\n yield NewLine\n\n yield* utilityTypes()\n yield NewLine\n yield* appTypes(ctx)\n yield* deployTypes(ctx)\n yield NewLine\n\n // Write a call factory\n yield* paramsFactory(ctx)\n yield NewLine\n // Write a factory\n yield* appFactory(ctx)\n // Write a client\n yield* appClient(ctx)\n\n yield* callComposerType(ctx)\n}\n"],"names":["createGeneratorContext","imports","inline","NewLine","utilityTypes","appTypes","deployTypes","paramsFactory","appFactory","appClient","callComposerType"],"mappings":";;;;;;;;;;;;;AAaA,SAAS,cAAc,CAAC,CAAe,EAAE,SAAoB,EAAA;AAC3D,IAAA,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAC1B,QAAA,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC;QACzC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAiB,EAAE,SAAS,CAAC;AACxF,KAAA,CAAC,CACH,CAAA;AACH,CAAC;AAEc,UAAE,QAAQ,CAAC,GAAkB,EAAE,OAAA,GAA4B,EAAE,aAAa,EAAE,KAAK,EAAE,EAAA;IAChG,MAAM,GAAG,GAAGA,uCAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAChD,IAAA,MAAM,sBAAsB,CAAA;AAC5B,IAAA,MAAM,gBAAgB,CAAA;AACtB,IAAA,MAAM,KAAK,CAAA;AACX,IAAA,MAAM,2FAA2F,CAAA;AACjG,IAAA,MAAM,8BAA8B,CAAA;AACpC,IAAA,MAAM,oDAAoD,CAAA;AAC1D,IAAA,MAAM,KAAK,CAAA;AAEX,IAAA,OAAOC,eAAO,EAAE,CAAA;;;AAGhB,IAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/H,IAAA,OAAOC,aAAM,CAAC,yCAAyC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7E,IAAA,MAAMC,cAAO,CAAA;AAEb,IAAA,OAAOC,yBAAY,EAAE,CAAA;AACrB,IAAA,MAAMD,cAAO,CAAA;AACb,IAAA,OAAOE,iBAAQ,CAAC,GAAG,CAAC,CAAA;AACpB,IAAA,OAAOC,uBAAW,CAAC,GAAG,CAAC,CAAA;AACvB,IAAA,MAAMH,cAAO,CAAA;;AAGb,IAAA,OAAOI,2BAAa,CAAC,GAAG,CAAC,CAAA;AACzB,IAAA,MAAMJ,cAAO,CAAA;;AAEb,IAAA,OAAOK,qBAAU,CAAC,GAAG,CAAC,CAAA;;AAEtB,IAAA,OAAOC,mBAAS,CAAC,GAAG,CAAC,CAAA;AAErB,IAAA,OAAOC,kCAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"generate.js","sources":["../../src/client/generate.ts"],"sourcesContent":["import { DocumentParts, inline, NewLine } from '../output/writer'\nimport { paramsFactory } from './params-factory'\nimport { appClient } from './app-client'\nimport { deployTypes } from './deploy-types'\nimport { utilityTypes } from './utility-types'\nimport { imports } from './imports'\nimport { createGeneratorContext, GeneratorOptions } from './generator-context'\nimport { appTypes } from './app-types'\nimport { callComposerType } from './call-composer-types'\nimport { Arc56Contract, StructField } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { appFactory } from './app-factory'\nimport { Sanitizer } from '../util/sanitization'\n\nfunction convertStructs(s: StructField[], sanitizer: Sanitizer): StructField[] {\n return s.map(\n ({ name, type }) =>\n ({\n name: sanitizer.makeSafePropertyIdentifier(name),\n type: typeof type === 'string' ? type : convertStructs(type, sanitizer),\n }) satisfies StructField,\n )\n}\n\nexport function* generate(app: Arc56Contract, options: GeneratorOptions = { preserveNames: false }): DocumentParts {\n const ctx = createGeneratorContext(app, options)\n yield `/* eslint-disable */`\n yield `/**`\n yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`\n yield ` * DO NOT MODIFY IT BY HAND.`\n yield ` * requires: @algorandfoundation/algokit-utils: ^7`\n yield ` */`\n\n yield* imports()\n // Change the structs definition to sanitize property names according to the defined rules\n // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp\n app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]))\n yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app), ' as unknown as Arc56Contract')\n yield NewLine\n\n yield* utilityTypes()\n yield NewLine\n yield* appTypes(ctx)\n yield* deployTypes(ctx)\n yield NewLine\n\n // Write a call factory\n yield* paramsFactory(ctx)\n yield NewLine\n // Write a factory\n yield* appFactory(ctx)\n // Write a client\n yield* appClient(ctx)\n\n yield* callComposerType(ctx)\n}\n"],"names":["createGeneratorContext","imports","inline","NewLine","utilityTypes","appTypes","deployTypes","paramsFactory","appFactory","appClient","callComposerType"],"mappings":";;;;;;;;;;;;;AAaA,SAAS,cAAc,CAAC,CAAgB,EAAE,SAAoB,EAAA;AAC5D,IAAA,OAAO,CAAC,CAAC,GAAG,CACV,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MACZ;AACC,QAAA,IAAI,EAAE,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC;AACxE,KAAA,CAAuB,CAC3B,CAAA;AACH,CAAC;AAEc,UAAE,QAAQ,CAAC,GAAkB,EAAE,OAAA,GAA4B,EAAE,aAAa,EAAE,KAAK,EAAE,EAAA;IAChG,MAAM,GAAG,GAAGA,uCAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAChD,IAAA,MAAM,sBAAsB,CAAA;AAC5B,IAAA,MAAM,KAAK,CAAA;AACX,IAAA,MAAM,2FAA2F,CAAA;AACjG,IAAA,MAAM,8BAA8B,CAAA;AACpC,IAAA,MAAM,oDAAoD,CAAA;AAC1D,IAAA,MAAM,KAAK,CAAA;AAEX,IAAA,OAAOC,eAAO,EAAE,CAAA;;;AAGhB,IAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/H,IAAA,OAAOC,aAAM,CAAC,yCAAyC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAA;AAC7G,IAAA,MAAMC,cAAO,CAAA;AAEb,IAAA,OAAOC,yBAAY,EAAE,CAAA;AACrB,IAAA,MAAMD,cAAO,CAAA;AACb,IAAA,OAAOE,iBAAQ,CAAC,GAAG,CAAC,CAAA;AACpB,IAAA,OAAOC,uBAAW,CAAC,GAAG,CAAC,CAAA;AACvB,IAAA,MAAMH,cAAO,CAAA;;AAGb,IAAA,OAAOI,2BAAa,CAAC,GAAG,CAAC,CAAA;AACzB,IAAA,MAAMJ,cAAO,CAAA;;AAEb,IAAA,OAAOK,qBAAU,CAAC,GAAG,CAAC,CAAA;;AAEtB,IAAA,OAAOC,mBAAS,CAAC,GAAG,CAAC,CAAA;AAErB,IAAA,OAAOC,kCAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B;;;;"}
@@ -10,25 +10,24 @@ import { callComposerType } from './call-composer-types.mjs';
10
10
  import { appFactory } from './app-factory.mjs';
11
11
 
12
12
  function convertStructs(s, sanitizer) {
13
- return Object.fromEntries(Object.keys(s).map((key) => [
14
- sanitizer.makeSafePropertyIdentifier(key),
15
- typeof s[key] === 'string' ? s[key] : convertStructs(s[key], sanitizer),
16
- ]));
13
+ return s.map(({ name, type }) => ({
14
+ name: sanitizer.makeSafePropertyIdentifier(name),
15
+ type: typeof type === 'string' ? type : convertStructs(type, sanitizer),
16
+ }));
17
17
  }
18
18
  function* generate(app, options = { preserveNames: false }) {
19
19
  const ctx = createGeneratorContext(app, options);
20
20
  yield `/* eslint-disable */`;
21
- yield `// @ts-nocheck`;
22
21
  yield `/**`;
23
22
  yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`;
24
23
  yield ` * DO NOT MODIFY IT BY HAND.`;
25
- yield ` * requires: @algorandfoundation/algokit-utils: ^3`;
24
+ yield ` * requires: @algorandfoundation/algokit-utils: ^7`;
26
25
  yield ` */`;
27
26
  yield* imports();
28
27
  // Change the structs definition to sanitize property names according to the defined rules
29
28
  // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp
30
29
  app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]));
31
- yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app));
30
+ yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app), ' as unknown as Arc56Contract');
32
31
  yield NewLine;
33
32
  yield* utilityTypes();
34
33
  yield NewLine;
@@ -1 +1 @@
1
- {"version":3,"file":"generate.mjs","sources":["../../src/client/generate.ts"],"sourcesContent":["import { DocumentParts, inline, NewLine } from '../output/writer'\nimport { paramsFactory } from './params-factory'\nimport { appClient } from './app-client'\nimport { deployTypes } from './deploy-types'\nimport { utilityTypes } from './utility-types'\nimport { imports } from './imports'\nimport { createGeneratorContext, GeneratorOptions } from './generator-context'\nimport { appTypes } from './app-types'\nimport { callComposerType } from './call-composer-types'\nimport { Arc56Contract, StructFields } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { appFactory } from './app-factory'\nimport { Sanitizer } from '../util/sanitization'\n\nfunction convertStructs(s: StructFields, sanitizer: Sanitizer): StructFields {\n return Object.fromEntries(\n Object.keys(s).map((key) => [\n sanitizer.makeSafePropertyIdentifier(key),\n typeof s[key] === 'string' ? s[key] : convertStructs(s[key] as StructFields, sanitizer),\n ]),\n )\n}\n\nexport function* generate(app: Arc56Contract, options: GeneratorOptions = { preserveNames: false }): DocumentParts {\n const ctx = createGeneratorContext(app, options)\n yield `/* eslint-disable */`\n yield `// @ts-nocheck`\n yield `/**`\n yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`\n yield ` * DO NOT MODIFY IT BY HAND.`\n yield ` * requires: @algorandfoundation/algokit-utils: ^3`\n yield ` */`\n\n yield* imports()\n // Change the structs definition to sanitize property names according to the defined rules\n // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp\n app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]))\n yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app))\n yield NewLine\n\n yield* utilityTypes()\n yield NewLine\n yield* appTypes(ctx)\n yield* deployTypes(ctx)\n yield NewLine\n\n // Write a call factory\n yield* paramsFactory(ctx)\n yield NewLine\n // Write a factory\n yield* appFactory(ctx)\n // Write a client\n yield* appClient(ctx)\n\n yield* callComposerType(ctx)\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAaA,SAAS,cAAc,CAAC,CAAe,EAAE,SAAoB,EAAA;AAC3D,IAAA,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAC1B,QAAA,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC;QACzC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAiB,EAAE,SAAS,CAAC;AACxF,KAAA,CAAC,CACH,CAAA;AACH,CAAC;AAEc,UAAE,QAAQ,CAAC,GAAkB,EAAE,OAAA,GAA4B,EAAE,aAAa,EAAE,KAAK,EAAE,EAAA;IAChG,MAAM,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAChD,IAAA,MAAM,sBAAsB,CAAA;AAC5B,IAAA,MAAM,gBAAgB,CAAA;AACtB,IAAA,MAAM,KAAK,CAAA;AACX,IAAA,MAAM,2FAA2F,CAAA;AACjG,IAAA,MAAM,8BAA8B,CAAA;AACpC,IAAA,MAAM,oDAAoD,CAAA;AAC1D,IAAA,MAAM,KAAK,CAAA;AAEX,IAAA,OAAO,OAAO,EAAE,CAAA;;;AAGhB,IAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/H,IAAA,OAAO,MAAM,CAAC,yCAAyC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7E,IAAA,MAAM,OAAO,CAAA;AAEb,IAAA,OAAO,YAAY,EAAE,CAAA;AACrB,IAAA,MAAM,OAAO,CAAA;AACb,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;AACpB,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;AACvB,IAAA,MAAM,OAAO,CAAA;;AAGb,IAAA,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;AACzB,IAAA,MAAM,OAAO,CAAA;;AAEb,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;;AAEtB,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;AAErB,IAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"generate.mjs","sources":["../../src/client/generate.ts"],"sourcesContent":["import { DocumentParts, inline, NewLine } from '../output/writer'\nimport { paramsFactory } from './params-factory'\nimport { appClient } from './app-client'\nimport { deployTypes } from './deploy-types'\nimport { utilityTypes } from './utility-types'\nimport { imports } from './imports'\nimport { createGeneratorContext, GeneratorOptions } from './generator-context'\nimport { appTypes } from './app-types'\nimport { callComposerType } from './call-composer-types'\nimport { Arc56Contract, StructField } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { appFactory } from './app-factory'\nimport { Sanitizer } from '../util/sanitization'\n\nfunction convertStructs(s: StructField[], sanitizer: Sanitizer): StructField[] {\n return s.map(\n ({ name, type }) =>\n ({\n name: sanitizer.makeSafePropertyIdentifier(name),\n type: typeof type === 'string' ? type : convertStructs(type, sanitizer),\n }) satisfies StructField,\n )\n}\n\nexport function* generate(app: Arc56Contract, options: GeneratorOptions = { preserveNames: false }): DocumentParts {\n const ctx = createGeneratorContext(app, options)\n yield `/* eslint-disable */`\n yield `/**`\n yield ` * This file was automatically generated by @algorandfoundation/algokit-client-generator.`\n yield ` * DO NOT MODIFY IT BY HAND.`\n yield ` * requires: @algorandfoundation/algokit-utils: ^7`\n yield ` */`\n\n yield* imports()\n // Change the structs definition to sanitize property names according to the defined rules\n // for instance, this may (unless you passed in --preserve-names) convert properties like my_prop to myProp\n app.structs = Object.fromEntries(Object.keys(app.structs).map((key) => [key, convertStructs(app.structs[key], ctx.sanitizer)]))\n yield* inline('export const APP_SPEC: Arc56Contract = ', JSON.stringify(app), ' as unknown as Arc56Contract')\n yield NewLine\n\n yield* utilityTypes()\n yield NewLine\n yield* appTypes(ctx)\n yield* deployTypes(ctx)\n yield NewLine\n\n // Write a call factory\n yield* paramsFactory(ctx)\n yield NewLine\n // Write a factory\n yield* appFactory(ctx)\n // Write a client\n yield* appClient(ctx)\n\n yield* callComposerType(ctx)\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAaA,SAAS,cAAc,CAAC,CAAgB,EAAE,SAAoB,EAAA;AAC5D,IAAA,OAAO,CAAC,CAAC,GAAG,CACV,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MACZ;AACC,QAAA,IAAI,EAAE,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC;AACxE,KAAA,CAAuB,CAC3B,CAAA;AACH,CAAC;AAEc,UAAE,QAAQ,CAAC,GAAkB,EAAE,OAAA,GAA4B,EAAE,aAAa,EAAE,KAAK,EAAE,EAAA;IAChG,MAAM,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAChD,IAAA,MAAM,sBAAsB,CAAA;AAC5B,IAAA,MAAM,KAAK,CAAA;AACX,IAAA,MAAM,2FAA2F,CAAA;AACjG,IAAA,MAAM,8BAA8B,CAAA;AACpC,IAAA,MAAM,oDAAoD,CAAA;AAC1D,IAAA,MAAM,KAAK,CAAA;AAEX,IAAA,OAAO,OAAO,EAAE,CAAA;;;AAGhB,IAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/H,IAAA,OAAO,MAAM,CAAC,yCAAyC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAA;AAC7G,IAAA,MAAM,OAAO,CAAA;AAEb,IAAA,OAAO,YAAY,EAAE,CAAA;AACrB,IAAA,MAAM,OAAO,CAAA;AACb,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;AACpB,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;AACvB,IAAA,MAAM,OAAO,CAAA;;AAGb,IAAA,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;AACzB,IAAA,MAAM,OAAO,CAAA;;AAEb,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;;AAEtB,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;AAErB,IAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B;;;;"}
@@ -7,9 +7,15 @@ function getEquivalentType(abiTypeStr, ioType, ctx) {
7
7
  if (abiTypeStr == 'void') {
8
8
  return 'void';
9
9
  }
10
- if (abiTypeStr == 'bytes') {
10
+ if (abiTypeStr == 'AVMBytes') {
11
11
  return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array';
12
12
  }
13
+ if (abiTypeStr == 'AVMString') {
14
+ return 'string';
15
+ }
16
+ if (abiTypeStr == 'AVMUint64') {
17
+ return 'bigint';
18
+ }
13
19
  if (algosdk.abiTypeIsTransaction(abiTypeStr)) {
14
20
  return 'AppMethodCallTransactionArgument';
15
21
  }
@@ -26,8 +32,8 @@ function getEquivalentType(abiTypeStr, ioType, ctx) {
26
32
  return abiTypeToTs(abiType, ioType);
27
33
  function abiTypeToTs(abiType, ioType) {
28
34
  if (abiType instanceof algosdk.ABIUintType) {
29
- if (abiType.bitSize <= 51)
30
- return 'number';
35
+ if (abiType.bitSize < 53)
36
+ return ioType === 'input' ? 'bigint | number' : 'number';
31
37
  return ioType === 'input' ? 'bigint | number' : 'bigint';
32
38
  }
33
39
  if (abiType instanceof algosdk.ABIArrayDynamicType) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-equivalent-type.js","sources":["../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport {\n ABIAddressType,\n ABIArrayDynamicType,\n ABIArrayStaticType,\n ABIBoolType,\n ABIByteType,\n ABIReferenceType,\n ABIStringType,\n ABITupleType,\n ABIType,\n ABIUfixedType,\n ABIUintType,\n abiTypeIsTransaction,\n} from 'algosdk'\nimport { Sanitizer } from '../../util/sanitization'\n\nexport function getEquivalentType(\n abiTypeStr: string,\n ioType: 'input' | 'output',\n ctx: { app: Arc56Contract; sanitizer: Sanitizer },\n): string {\n const { app, sanitizer } = ctx\n if (abiTypeStr == 'void') {\n return 'void'\n }\n if (abiTypeStr == 'bytes') {\n return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array'\n }\n if (abiTypeIsTransaction(abiTypeStr)) {\n return 'AppMethodCallTransactionArgument'\n }\n if (abiTypeStr == ABIReferenceType.account) {\n return 'string | Uint8Array'\n }\n if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {\n return 'bigint'\n }\n if (Object.keys(app.structs).includes(abiTypeStr)) {\n return sanitizer.makeSafeTypeIdentifier(abiTypeStr)\n }\n\n const abiType = ABIType.from(abiTypeStr)\n\n return abiTypeToTs(abiType, ioType)\n\n function abiTypeToTs(abiType: ABIType, ioType: 'input' | 'output'): string {\n if (abiType instanceof ABIUintType) {\n if (abiType.bitSize <= 51) return 'number'\n return ioType === 'input' ? 'bigint | number' : 'bigint'\n }\n if (abiType instanceof ABIArrayDynamicType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n\n const childTsType = abiTypeToTs(abiType.childType, ioType)\n return `${childTsType}[]`\n }\n if (abiType instanceof ABIArrayStaticType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIAddressType) {\n return 'string'\n }\n if (abiType instanceof ABIBoolType) {\n return 'boolean'\n }\n if (abiType instanceof ABIUfixedType) {\n return 'number'\n }\n if (abiType instanceof ABITupleType) {\n return `[${abiType.childTypes.map((c) => abiTypeToTs(c, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIByteType) {\n return 'number'\n }\n if (abiType instanceof ABIStringType) {\n return 'string'\n }\n return 'unknown'\n }\n}\n"],"names":["abiTypeIsTransaction","ABIReferenceType","ABIType","ABIUintType","ABIArrayDynamicType","ABIByteType","ABIArrayStaticType","ABIAddressType","ABIBoolType","ABIUfixedType","ABITupleType","ABIStringType"],"mappings":"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"}
1
+ {"version":3,"file":"get-equivalent-type.js","sources":["../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport {\n ABIAddressType,\n ABIArrayDynamicType,\n ABIArrayStaticType,\n ABIBoolType,\n ABIByteType,\n ABIReferenceType,\n ABIStringType,\n ABITupleType,\n ABIType,\n ABIUfixedType,\n ABIUintType,\n abiTypeIsTransaction,\n} from 'algosdk'\nimport { Sanitizer } from '../../util/sanitization'\n\nexport function getEquivalentType(\n abiTypeStr: string,\n ioType: 'input' | 'output',\n ctx: { app: Arc56Contract; sanitizer: Sanitizer },\n): string {\n const { app, sanitizer } = ctx\n if (abiTypeStr == 'void') {\n return 'void'\n }\n if (abiTypeStr == 'AVMBytes') {\n return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array'\n }\n if (abiTypeStr == 'AVMString') {\n return 'string'\n }\n if (abiTypeStr == 'AVMUint64') {\n return 'bigint'\n }\n if (abiTypeIsTransaction(abiTypeStr)) {\n return 'AppMethodCallTransactionArgument'\n }\n if (abiTypeStr == ABIReferenceType.account) {\n return 'string | Uint8Array'\n }\n if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {\n return 'bigint'\n }\n if (Object.keys(app.structs).includes(abiTypeStr)) {\n return sanitizer.makeSafeTypeIdentifier(abiTypeStr)\n }\n\n const abiType = ABIType.from(abiTypeStr)\n\n return abiTypeToTs(abiType, ioType)\n\n function abiTypeToTs(abiType: ABIType, ioType: 'input' | 'output'): string {\n if (abiType instanceof ABIUintType) {\n if (abiType.bitSize < 53) return ioType === 'input' ? 'bigint | number' : 'number'\n return ioType === 'input' ? 'bigint | number' : 'bigint'\n }\n if (abiType instanceof ABIArrayDynamicType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n\n const childTsType = abiTypeToTs(abiType.childType, ioType)\n return `${childTsType}[]`\n }\n if (abiType instanceof ABIArrayStaticType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIAddressType) {\n return 'string'\n }\n if (abiType instanceof ABIBoolType) {\n return 'boolean'\n }\n if (abiType instanceof ABIUfixedType) {\n return 'number'\n }\n if (abiType instanceof ABITupleType) {\n return `[${abiType.childTypes.map((c) => abiTypeToTs(c, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIByteType) {\n return 'number'\n }\n if (abiType instanceof ABIStringType) {\n return 'string'\n }\n return 'unknown'\n }\n}\n"],"names":["abiTypeIsTransaction","ABIReferenceType","ABIType","ABIUintType","ABIArrayDynamicType","ABIByteType","ABIArrayStaticType","ABIAddressType","ABIBoolType","ABIUfixedType","ABITupleType","ABIStringType"],"mappings":"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"}