@algorandfoundation/algokit-client-generator 2.6.0 → 3.0.0-beta.1

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