@algorandfoundation/algokit-client-generator 3.0.6 → 4.0.0-alpha.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 (96) hide show
  1. package/README.md +4 -2
  2. package/cli.d.ts +6 -0
  3. package/cli.js +47 -16
  4. package/cli.js.map +1 -1
  5. package/cli.mjs +47 -17
  6. package/cli.mjs.map +1 -1
  7. package/client/{call-factory.d.ts → app-client.d.ts} +1 -1
  8. package/client/app-client.js +345 -0
  9. package/client/app-client.js.map +1 -0
  10. package/client/app-client.mjs +343 -0
  11. package/client/app-client.mjs.map +1 -0
  12. package/client/{call-client.d.ts → app-factory.d.ts} +1 -1
  13. package/client/app-factory.js +252 -0
  14. package/client/app-factory.js.map +1 -0
  15. package/client/app-factory.mjs +250 -0
  16. package/client/app-factory.mjs.map +1 -0
  17. package/client/app-types.js +206 -112
  18. package/client/app-types.js.map +1 -1
  19. package/client/app-types.mjs +210 -97
  20. package/client/app-types.mjs.map +1 -1
  21. package/client/call-composer-types.js +27 -57
  22. package/client/call-composer-types.js.map +1 -1
  23. package/client/call-composer-types.mjs +27 -38
  24. package/client/call-composer-types.mjs.map +1 -1
  25. package/client/call-composer.js +47 -59
  26. package/client/call-composer.js.map +1 -1
  27. package/client/call-composer.mjs +49 -42
  28. package/client/call-composer.mjs.map +1 -1
  29. package/client/deploy-types.d.ts +8 -4
  30. package/client/deploy-types.js +52 -34
  31. package/client/deploy-types.js.map +1 -1
  32. package/client/deploy-types.mjs +53 -36
  33. package/client/deploy-types.mjs.map +1 -1
  34. package/client/generate.d.ts +2 -2
  35. package/client/generate.js +18 -7
  36. package/client/generate.js.map +1 -1
  37. package/client/generate.mjs +18 -7
  38. package/client/generate.mjs.map +1 -1
  39. package/client/generator-context.d.ts +4 -4
  40. package/client/generator-context.js +5 -24
  41. package/client/generator-context.js.map +1 -1
  42. package/client/generator-context.mjs +5 -5
  43. package/client/generator-context.mjs.map +1 -1
  44. package/client/helpers/get-call-config-summary.d.ts +8 -3
  45. package/client/helpers/get-call-config-summary.js +22 -20
  46. package/client/helpers/get-call-config-summary.js.map +1 -1
  47. package/client/helpers/get-call-config-summary.mjs +22 -20
  48. package/client/helpers/get-call-config-summary.mjs.map +1 -1
  49. package/client/helpers/get-equivalent-type.d.ts +6 -1
  50. package/client/helpers/get-equivalent-type.js +20 -10
  51. package/client/helpers/get-equivalent-type.js.map +1 -1
  52. package/client/helpers/get-equivalent-type.mjs +20 -10
  53. package/client/helpers/get-equivalent-type.mjs.map +1 -1
  54. package/client/imports.js +21 -24
  55. package/client/imports.js.map +1 -1
  56. package/client/imports.mjs +21 -24
  57. package/client/imports.mjs.map +1 -1
  58. package/client/params-factory.d.ts +3 -0
  59. package/client/params-factory.js +126 -0
  60. package/client/params-factory.js.map +1 -0
  61. package/client/params-factory.mjs +124 -0
  62. package/client/params-factory.mjs.map +1 -0
  63. package/client/utility-types.d.ts +0 -7
  64. package/client/utility-types.js +37 -50
  65. package/client/utility-types.js.map +1 -1
  66. package/client/utility-types.mjs +38 -50
  67. package/client/utility-types.mjs.map +1 -1
  68. package/output/writer.d.ts +5 -5
  69. package/output/writer.js +26 -6
  70. package/output/writer.js.map +1 -1
  71. package/output/writer.mjs +26 -6
  72. package/output/writer.mjs.map +1 -1
  73. package/package.json +7 -5
  74. package/schema/application.schema.json.js +2 -2
  75. package/schema/application.schema.json.mjs +2 -2
  76. package/schema/arc56.schema.json.js +751 -0
  77. package/schema/arc56.schema.json.js.map +1 -0
  78. package/schema/arc56.schema.json.mjs +741 -0
  79. package/schema/arc56.schema.json.mjs.map +1 -0
  80. package/schema/load.d.ts +3 -3
  81. package/schema/load.js +28 -8
  82. package/schema/load.js.map +1 -1
  83. package/schema/load.mjs +29 -9
  84. package/schema/load.mjs.map +1 -1
  85. package/util/sanitization.js +13 -8
  86. package/util/sanitization.js.map +1 -1
  87. package/util/sanitization.mjs +13 -8
  88. package/util/sanitization.mjs.map +1 -1
  89. package/client/call-client.js +0 -341
  90. package/client/call-client.js.map +0 -1
  91. package/client/call-client.mjs +0 -320
  92. package/client/call-client.mjs.map +0 -1
  93. package/client/call-factory.js +0 -142
  94. package/client/call-factory.js.map +0 -1
  95. package/client/call-factory.mjs +0 -121
  96. package/client/call-factory.mjs.map +0 -1
@@ -2,34 +2,44 @@
2
2
 
3
3
  var algosdk = require('algosdk');
4
4
 
5
- function getEquivalentType(abiTypeStr, ioType) {
5
+ function getEquivalentType(abiTypeStr, ioType, ctx) {
6
+ const { app, sanitizer } = ctx;
6
7
  if (abiTypeStr == 'void') {
7
8
  return 'void';
8
9
  }
10
+ if (abiTypeStr == 'AVMBytes') {
11
+ return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array';
12
+ }
13
+ if (abiTypeStr == 'AVMString') {
14
+ return 'string';
15
+ }
16
+ if (abiTypeStr == 'AVMUint64') {
17
+ return 'bigint';
18
+ }
9
19
  if (algosdk.abiTypeIsTransaction(abiTypeStr)) {
10
- return 'TransactionToSign | Transaction | Promise<SendTransactionResult>';
20
+ return 'AppMethodCallTransactionArgument';
11
21
  }
12
22
  if (abiTypeStr == algosdk.ABIReferenceType.account) {
13
- return 'string | Uint8Array';
23
+ return 'string | Address | Uint8Array';
14
24
  }
15
25
  if (abiTypeStr == algosdk.ABIReferenceType.application || abiTypeStr == algosdk.ABIReferenceType.asset) {
16
- return 'number | bigint';
26
+ return 'bigint';
27
+ }
28
+ if (Object.keys(app.structs).includes(abiTypeStr)) {
29
+ return sanitizer.makeSafeTypeIdentifier(abiTypeStr);
17
30
  }
18
31
  const abiType = algosdk.ABIType.from(abiTypeStr);
19
32
  return abiTypeToTs(abiType, ioType);
20
33
  function abiTypeToTs(abiType, ioType) {
21
34
  if (abiType instanceof algosdk.ABIUintType) {
22
- if (abiType.bitSize <= 51)
23
- return 'number';
35
+ if (abiType.bitSize < 53)
36
+ return ioType === 'input' ? 'bigint | number' : 'number';
24
37
  return ioType === 'input' ? 'bigint | number' : 'bigint';
25
38
  }
26
39
  if (abiType instanceof algosdk.ABIArrayDynamicType) {
27
40
  if (abiType.childType instanceof algosdk.ABIByteType)
28
41
  return 'Uint8Array';
29
42
  const childTsType = abiTypeToTs(abiType.childType, ioType);
30
- if (childTsType === 'bigint | number') {
31
- return 'bigint[] | number[]';
32
- }
33
43
  return `${childTsType}[]`;
34
44
  }
35
45
  if (abiType instanceof algosdk.ABIArrayStaticType) {
@@ -38,7 +48,7 @@ function getEquivalentType(abiTypeStr, ioType) {
38
48
  return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`;
39
49
  }
40
50
  if (abiType instanceof algosdk.ABIAddressType) {
41
- return 'string';
51
+ return 'string | Address';
42
52
  }
43
53
  if (abiType instanceof algosdk.ABIBoolType) {
44
54
  return 'boolean';
@@ -1 +1 @@
1
- {"version":3,"file":"get-equivalent-type.js","sources":["../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import {\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'\n\nexport function getEquivalentType(abiTypeStr: string, ioType: 'input' | 'output'): string {\n if (abiTypeStr == 'void') {\n return 'void'\n }\n if (abiTypeIsTransaction(abiTypeStr)) {\n return 'TransactionToSign | Transaction | Promise<SendTransactionResult>'\n }\n if (abiTypeStr == ABIReferenceType.account) {\n return 'string | Uint8Array'\n }\n if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {\n return 'number | bigint'\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 if (childTsType === 'bigint | number') {\n return 'bigint[] | number[]'\n }\n\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":";;;;AAegB,SAAA,iBAAiB,CAAC,UAAkB,EAAE,MAA0B,EAAA;AAC9E,IAAA,IAAI,UAAU,IAAI,MAAM,EAAE;AACxB,QAAA,OAAO,MAAM,CAAA;KACd;AACD,IAAA,IAAIA,4BAAoB,CAAC,UAAU,CAAC,EAAE;AACpC,QAAA,OAAO,kEAAkE,CAAA;KAC1E;AACD,IAAA,IAAI,UAAU,IAAIC,wBAAgB,CAAC,OAAO,EAAE;AAC1C,QAAA,OAAO,qBAAqB,CAAA;KAC7B;AACD,IAAA,IAAI,UAAU,IAAIA,wBAAgB,CAAC,WAAW,IAAI,UAAU,IAAIA,wBAAgB,CAAC,KAAK,EAAE;AACtF,QAAA,OAAO,iBAAiB,CAAA;KACzB;IAED,MAAM,OAAO,GAAGC,eAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAExC,IAAA,OAAO,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAEnC,IAAA,SAAS,WAAW,CAAC,OAAgB,EAAE,MAA0B,EAAA;AAC/D,QAAA,IAAI,OAAO,YAAYC,mBAAW,EAAE;AAClC,YAAA,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE;AAAE,gBAAA,OAAO,QAAQ,CAAA;YAC1C,OAAO,MAAM,KAAK,OAAO,GAAG,iBAAiB,GAAG,QAAQ,CAAA;SACzD;AACD,QAAA,IAAI,OAAO,YAAYC,2BAAmB,EAAE;AAC1C,YAAA,IAAI,OAAO,CAAC,SAAS,YAAYC,mBAAW;AAAE,gBAAA,OAAO,YAAY,CAAA;YAEjE,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC1D,YAAA,IAAI,WAAW,KAAK,iBAAiB,EAAE;AACrC,gBAAA,OAAO,qBAAqB,CAAA;aAC7B;YAED,OAAO,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAA;SAC1B;AACD,QAAA,IAAI,OAAO,YAAYC,0BAAkB,EAAE;AACzC,YAAA,IAAI,OAAO,CAAC,SAAS,YAAYD,mBAAW;AAAE,gBAAA,OAAO,YAAY,CAAA;YACjE,OAAO,CAAA,CAAA,EAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;SACtG;AACD,QAAA,IAAI,OAAO,YAAYE,sBAAc,EAAE;AACrC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,IAAI,OAAO,YAAYC,mBAAW,EAAE;AAClC,YAAA,OAAO,SAAS,CAAA;SACjB;AACD,QAAA,IAAI,OAAO,YAAYC,qBAAa,EAAE;AACpC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,IAAI,OAAO,YAAYC,oBAAY,EAAE;YACnC,OAAO,CAAA,CAAA,EAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;SAC/E;AACD,QAAA,IAAI,OAAO,YAAYL,mBAAW,EAAE;AAClC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,IAAI,OAAO,YAAYM,qBAAa,EAAE;AACpC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,OAAO,SAAS,CAAA;KACjB;AACH;;;;"}
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 | Address | 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 | Address'\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,33 +1,43 @@
1
1
  import { abiTypeIsTransaction, ABIReferenceType, ABIType, ABIUintType, ABIArrayDynamicType, ABIByteType, ABIArrayStaticType, ABIAddressType, ABIBoolType, ABIUfixedType, ABITupleType, ABIStringType } from 'algosdk';
2
2
 
3
- function getEquivalentType(abiTypeStr, ioType) {
3
+ function getEquivalentType(abiTypeStr, ioType, ctx) {
4
+ const { app, sanitizer } = ctx;
4
5
  if (abiTypeStr == 'void') {
5
6
  return 'void';
6
7
  }
8
+ if (abiTypeStr == 'AVMBytes') {
9
+ return ioType === 'input' ? 'Uint8Array | string' : 'Uint8Array';
10
+ }
11
+ if (abiTypeStr == 'AVMString') {
12
+ return 'string';
13
+ }
14
+ if (abiTypeStr == 'AVMUint64') {
15
+ return 'bigint';
16
+ }
7
17
  if (abiTypeIsTransaction(abiTypeStr)) {
8
- return 'TransactionToSign | Transaction | Promise<SendTransactionResult>';
18
+ return 'AppMethodCallTransactionArgument';
9
19
  }
10
20
  if (abiTypeStr == ABIReferenceType.account) {
11
- return 'string | Uint8Array';
21
+ return 'string | Address | Uint8Array';
12
22
  }
13
23
  if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {
14
- return 'number | bigint';
24
+ return 'bigint';
25
+ }
26
+ if (Object.keys(app.structs).includes(abiTypeStr)) {
27
+ return sanitizer.makeSafeTypeIdentifier(abiTypeStr);
15
28
  }
16
29
  const abiType = ABIType.from(abiTypeStr);
17
30
  return abiTypeToTs(abiType, ioType);
18
31
  function abiTypeToTs(abiType, ioType) {
19
32
  if (abiType instanceof ABIUintType) {
20
- if (abiType.bitSize <= 51)
21
- return 'number';
33
+ if (abiType.bitSize < 53)
34
+ return ioType === 'input' ? 'bigint | number' : 'number';
22
35
  return ioType === 'input' ? 'bigint | number' : 'bigint';
23
36
  }
24
37
  if (abiType instanceof ABIArrayDynamicType) {
25
38
  if (abiType.childType instanceof ABIByteType)
26
39
  return 'Uint8Array';
27
40
  const childTsType = abiTypeToTs(abiType.childType, ioType);
28
- if (childTsType === 'bigint | number') {
29
- return 'bigint[] | number[]';
30
- }
31
41
  return `${childTsType}[]`;
32
42
  }
33
43
  if (abiType instanceof ABIArrayStaticType) {
@@ -36,7 +46,7 @@ function getEquivalentType(abiTypeStr, ioType) {
36
46
  return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`;
37
47
  }
38
48
  if (abiType instanceof ABIAddressType) {
39
- return 'string';
49
+ return 'string | Address';
40
50
  }
41
51
  if (abiType instanceof ABIBoolType) {
42
52
  return 'boolean';
@@ -1 +1 @@
1
- {"version":3,"file":"get-equivalent-type.mjs","sources":["../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import {\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'\n\nexport function getEquivalentType(abiTypeStr: string, ioType: 'input' | 'output'): string {\n if (abiTypeStr == 'void') {\n return 'void'\n }\n if (abiTypeIsTransaction(abiTypeStr)) {\n return 'TransactionToSign | Transaction | Promise<SendTransactionResult>'\n }\n if (abiTypeStr == ABIReferenceType.account) {\n return 'string | Uint8Array'\n }\n if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {\n return 'number | bigint'\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 if (childTsType === 'bigint | number') {\n return 'bigint[] | number[]'\n }\n\n return `${childTsType}[]`\n }\n if (abiType instanceof ABIArrayStaticType) {\n if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIAddressType) {\n return 'string'\n }\n if (abiType instanceof ABIBoolType) {\n return 'boolean'\n }\n if (abiType instanceof ABIUfixedType) {\n return 'number'\n }\n if (abiType instanceof ABITupleType) {\n return `[${abiType.childTypes.map((c) => abiTypeToTs(c, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIByteType) {\n return 'number'\n }\n if (abiType instanceof ABIStringType) {\n return 'string'\n }\n return 'unknown'\n }\n}\n"],"names":[],"mappings":";;AAegB,SAAA,iBAAiB,CAAC,UAAkB,EAAE,MAA0B,EAAA;AAC9E,IAAA,IAAI,UAAU,IAAI,MAAM,EAAE;AACxB,QAAA,OAAO,MAAM,CAAA;KACd;AACD,IAAA,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE;AACpC,QAAA,OAAO,kEAAkE,CAAA;KAC1E;AACD,IAAA,IAAI,UAAU,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC1C,QAAA,OAAO,qBAAqB,CAAA;KAC7B;AACD,IAAA,IAAI,UAAU,IAAI,gBAAgB,CAAC,WAAW,IAAI,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE;AACtF,QAAA,OAAO,iBAAiB,CAAA;KACzB;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAExC,IAAA,OAAO,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAEnC,IAAA,SAAS,WAAW,CAAC,OAAgB,EAAE,MAA0B,EAAA;AAC/D,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE;AAAE,gBAAA,OAAO,QAAQ,CAAA;YAC1C,OAAO,MAAM,KAAK,OAAO,GAAG,iBAAiB,GAAG,QAAQ,CAAA;SACzD;AACD,QAAA,IAAI,OAAO,YAAY,mBAAmB,EAAE;AAC1C,YAAA,IAAI,OAAO,CAAC,SAAS,YAAY,WAAW;AAAE,gBAAA,OAAO,YAAY,CAAA;YAEjE,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC1D,YAAA,IAAI,WAAW,KAAK,iBAAiB,EAAE;AACrC,gBAAA,OAAO,qBAAqB,CAAA;aAC7B;YAED,OAAO,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAA;SAC1B;AACD,QAAA,IAAI,OAAO,YAAY,kBAAkB,EAAE;AACzC,YAAA,IAAI,OAAO,CAAC,SAAS,YAAY,WAAW;AAAE,gBAAA,OAAO,YAAY,CAAA;YACjE,OAAO,CAAA,CAAA,EAAI,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;SACtG;AACD,QAAA,IAAI,OAAO,YAAY,cAAc,EAAE;AACrC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,OAAO,SAAS,CAAA;SACjB;AACD,QAAA,IAAI,OAAO,YAAY,aAAa,EAAE;AACpC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,IAAI,OAAO,YAAY,YAAY,EAAE;YACnC,OAAO,CAAA,CAAA,EAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;SAC/E;AACD,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,IAAI,OAAO,YAAY,aAAa,EAAE;AACpC,YAAA,OAAO,QAAQ,CAAA;SAChB;AACD,QAAA,OAAO,SAAS,CAAA;KACjB;AACH;;;;"}
1
+ {"version":3,"file":"get-equivalent-type.mjs","sources":["../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport {\n ABIAddressType,\n ABIArrayDynamicType,\n ABIArrayStaticType,\n ABIBoolType,\n ABIByteType,\n ABIReferenceType,\n ABIStringType,\n ABITupleType,\n ABIType,\n ABIUfixedType,\n ABIUintType,\n abiTypeIsTransaction,\n} from 'algosdk'\nimport { Sanitizer } from '../../util/sanitization'\n\nexport function getEquivalentType(\n abiTypeStr: string,\n ioType: 'input' | 'output',\n ctx: { app: Arc56Contract; sanitizer: Sanitizer },\n): string {\n const { app, sanitizer } = ctx\n if (abiTypeStr == 'void') {\n return 'void'\n }\n if (abiTypeStr == '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 | Address | 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 | Address'\n }\n if (abiType instanceof ABIBoolType) {\n return 'boolean'\n }\n if (abiType instanceof ABIUfixedType) {\n return 'number'\n }\n if (abiType instanceof ABITupleType) {\n return `[${abiType.childTypes.map((c) => abiTypeToTs(c, ioType)).join(', ')}]`\n }\n if (abiType instanceof ABIByteType) {\n return 'number'\n }\n if (abiType instanceof ABIStringType) {\n return 'string'\n }\n return 'unknown'\n }\n}\n"],"names":[],"mappings":"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"}
package/client/imports.js CHANGED
@@ -1,30 +1,27 @@
1
1
  'use strict';
2
2
 
3
3
  function* imports() {
4
- yield `import * as algokit from '@algorandfoundation/algokit-utils'
5
- import type {
6
- ABIAppCallArg,
7
- AppCallTransactionResult,
8
- AppCallTransactionResultOfType,
9
- AppCompilationResult,
10
- AppReference,
11
- AppState,
12
- AppStorageSchema,
13
- CoreAppCallArgs,
14
- RawAppCallArgs,
15
- TealTemplateParams,
16
- } from '@algorandfoundation/algokit-utils/types/app'
17
- import type {
18
- AppClientCallCoreParams,
19
- AppClientCompilationParams,
20
- AppClientDeployCoreParams,
21
- AppDetails,
22
- ApplicationClient,
23
- } from '@algorandfoundation/algokit-utils/types/app-client'
24
- import type { AppSpec } from '@algorandfoundation/algokit-utils/types/app-spec'
25
- import type { SendTransactionResult, TransactionToSign, SendTransactionFrom, SendTransactionParams } from '@algorandfoundation/algokit-utils/types/transaction'
26
- import type { ABIResult, TransactionWithSigner } from 'algosdk'
27
- import { Algodv2, OnApplicationComplete, Transaction, AtomicTransactionComposer, modelsv2 } from 'algosdk'`;
4
+ yield `
5
+ import { AlgorandClientInterface } from '@algorandfoundation/algokit-utils/types/algorand-client-interface'
6
+ import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'
7
+ import { Arc56Contract, getArc56ReturnValue, getABIStructFromABITuple } from '@algorandfoundation/algokit-utils/types/app-arc56'
8
+ import {
9
+ AppClient,
10
+ AppClientMethodCallParams,
11
+ AppClientParams,
12
+ AppClientBareCallParams,
13
+ CallOnComplete,
14
+ AppClientCompilationParams,
15
+ ResolveAppClientByCreatorAndName,
16
+ ResolveAppClientByNetwork,
17
+ CloneAppClientParams,
18
+ } from '@algorandfoundation/algokit-utils/types/app-client'
19
+ import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'
20
+ import { TransactionComposer, AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'
21
+ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'
22
+ import { Address, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'
23
+ import SimulateResponse = modelsv2.SimulateResponse
24
+ `;
28
25
  }
29
26
 
30
27
  exports.imports = imports;
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sources":["../../src/client/imports.ts"],"sourcesContent":["import { DocumentParts } from '../output/writer'\n\nexport function* imports(): DocumentParts {\n yield `import * as algokit from '@algorandfoundation/algokit-utils'\nimport type {\n ABIAppCallArg,\n AppCallTransactionResult,\n AppCallTransactionResultOfType,\n AppCompilationResult,\n AppReference,\n AppState,\n AppStorageSchema,\n CoreAppCallArgs,\n RawAppCallArgs,\n TealTemplateParams,\n} from '@algorandfoundation/algokit-utils/types/app'\nimport type {\n AppClientCallCoreParams,\n AppClientCompilationParams,\n AppClientDeployCoreParams,\n AppDetails,\n ApplicationClient,\n} from '@algorandfoundation/algokit-utils/types/app-client'\nimport type { AppSpec } from '@algorandfoundation/algokit-utils/types/app-spec'\nimport type { SendTransactionResult, TransactionToSign, SendTransactionFrom, SendTransactionParams } from '@algorandfoundation/algokit-utils/types/transaction'\nimport type { ABIResult, TransactionWithSigner } from 'algosdk'\nimport { Algodv2, OnApplicationComplete, Transaction, AtomicTransactionComposer, modelsv2 } from 'algosdk'`\n}\n"],"names":[],"mappings":";;AAEM,UAAW,OAAO,GAAA;IACtB,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;2GAuBmG,CAAA;AAC3G;;;;"}
1
+ {"version":3,"file":"imports.js","sources":["../../src/client/imports.ts"],"sourcesContent":["import { DocumentParts } from '../output/writer'\n\nexport function* imports(): DocumentParts {\n yield `\n import { AlgorandClientInterface } from '@algorandfoundation/algokit-utils/types/algorand-client-interface'\n import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'\n import { Arc56Contract, getArc56ReturnValue, getABIStructFromABITuple } from '@algorandfoundation/algokit-utils/types/app-arc56'\n import {\n AppClient,\n AppClientMethodCallParams,\n AppClientParams,\n AppClientBareCallParams,\n CallOnComplete,\n AppClientCompilationParams,\n ResolveAppClientByCreatorAndName,\n ResolveAppClientByNetwork,\n CloneAppClientParams,\n } from '@algorandfoundation/algokit-utils/types/app-client'\n import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'\n import { TransactionComposer, AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'\n import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'\n import { Address, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'\n import SimulateResponse = modelsv2.SimulateResponse\n `\n}\n"],"names":[],"mappings":";;AAEM,UAAW,OAAO,GAAA;IACtB,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;GAoBL,CAAA;AACH;;;;"}
@@ -1,28 +1,25 @@
1
1
  function* imports() {
2
- yield `import * as algokit from '@algorandfoundation/algokit-utils'
3
- import type {
4
- ABIAppCallArg,
5
- AppCallTransactionResult,
6
- AppCallTransactionResultOfType,
7
- AppCompilationResult,
8
- AppReference,
9
- AppState,
10
- AppStorageSchema,
11
- CoreAppCallArgs,
12
- RawAppCallArgs,
13
- TealTemplateParams,
14
- } from '@algorandfoundation/algokit-utils/types/app'
15
- import type {
16
- AppClientCallCoreParams,
17
- AppClientCompilationParams,
18
- AppClientDeployCoreParams,
19
- AppDetails,
20
- ApplicationClient,
21
- } from '@algorandfoundation/algokit-utils/types/app-client'
22
- import type { AppSpec } from '@algorandfoundation/algokit-utils/types/app-spec'
23
- import type { SendTransactionResult, TransactionToSign, SendTransactionFrom, SendTransactionParams } from '@algorandfoundation/algokit-utils/types/transaction'
24
- import type { ABIResult, TransactionWithSigner } from 'algosdk'
25
- import { Algodv2, OnApplicationComplete, Transaction, AtomicTransactionComposer, modelsv2 } from 'algosdk'`;
2
+ yield `
3
+ import { AlgorandClientInterface } from '@algorandfoundation/algokit-utils/types/algorand-client-interface'
4
+ import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'
5
+ import { Arc56Contract, getArc56ReturnValue, getABIStructFromABITuple } from '@algorandfoundation/algokit-utils/types/app-arc56'
6
+ import {
7
+ AppClient,
8
+ AppClientMethodCallParams,
9
+ AppClientParams,
10
+ AppClientBareCallParams,
11
+ CallOnComplete,
12
+ AppClientCompilationParams,
13
+ ResolveAppClientByCreatorAndName,
14
+ ResolveAppClientByNetwork,
15
+ CloneAppClientParams,
16
+ } from '@algorandfoundation/algokit-utils/types/app-client'
17
+ import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'
18
+ import { TransactionComposer, AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'
19
+ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'
20
+ import { Address, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'
21
+ import SimulateResponse = modelsv2.SimulateResponse
22
+ `;
26
23
  }
27
24
 
28
25
  export { imports };
@@ -1 +1 @@
1
- {"version":3,"file":"imports.mjs","sources":["../../src/client/imports.ts"],"sourcesContent":["import { DocumentParts } from '../output/writer'\n\nexport function* imports(): DocumentParts {\n yield `import * as algokit from '@algorandfoundation/algokit-utils'\nimport type {\n ABIAppCallArg,\n AppCallTransactionResult,\n AppCallTransactionResultOfType,\n AppCompilationResult,\n AppReference,\n AppState,\n AppStorageSchema,\n CoreAppCallArgs,\n RawAppCallArgs,\n TealTemplateParams,\n} from '@algorandfoundation/algokit-utils/types/app'\nimport type {\n AppClientCallCoreParams,\n AppClientCompilationParams,\n AppClientDeployCoreParams,\n AppDetails,\n ApplicationClient,\n} from '@algorandfoundation/algokit-utils/types/app-client'\nimport type { AppSpec } from '@algorandfoundation/algokit-utils/types/app-spec'\nimport type { SendTransactionResult, TransactionToSign, SendTransactionFrom, SendTransactionParams } from '@algorandfoundation/algokit-utils/types/transaction'\nimport type { ABIResult, TransactionWithSigner } from 'algosdk'\nimport { Algodv2, OnApplicationComplete, Transaction, AtomicTransactionComposer, modelsv2 } from 'algosdk'`\n}\n"],"names":[],"mappings":"AAEM,UAAW,OAAO,GAAA;IACtB,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;2GAuBmG,CAAA;AAC3G;;;;"}
1
+ {"version":3,"file":"imports.mjs","sources":["../../src/client/imports.ts"],"sourcesContent":["import { DocumentParts } from '../output/writer'\n\nexport function* imports(): DocumentParts {\n yield `\n import { AlgorandClientInterface } from '@algorandfoundation/algokit-utils/types/algorand-client-interface'\n import { ABIReturn, AppReturn, SendAppTransactionResult } from '@algorandfoundation/algokit-utils/types/app'\n import { Arc56Contract, getArc56ReturnValue, getABIStructFromABITuple } from '@algorandfoundation/algokit-utils/types/app-arc56'\n import {\n AppClient,\n AppClientMethodCallParams,\n AppClientParams,\n AppClientBareCallParams,\n CallOnComplete,\n AppClientCompilationParams,\n ResolveAppClientByCreatorAndName,\n ResolveAppClientByNetwork,\n CloneAppClientParams,\n } from '@algorandfoundation/algokit-utils/types/app-client'\n import { AppFactory, AppFactoryAppClientParams, AppFactoryResolveAppClientByCreatorAndNameParams, AppFactoryDeployParams, AppFactoryParams, CreateSchema } from '@algorandfoundation/algokit-utils/types/app-factory'\n import { TransactionComposer, AppCallMethodCall, AppMethodCallTransactionArgument, SimulateOptions } from '@algorandfoundation/algokit-utils/types/composer'\n import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerResults } from '@algorandfoundation/algokit-utils/types/transaction'\n import { Address, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk'\n import SimulateResponse = modelsv2.SimulateResponse\n `\n}\n"],"names":[],"mappings":"AAEM,UAAW,OAAO,GAAA;IACtB,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;GAoBL,CAAA;AACH;;;;"}
@@ -0,0 +1,3 @@
1
+ import { DocumentParts } from '../output/writer';
2
+ import { GeneratorContext } from './generator-context';
3
+ export declare function paramsFactory(ctx: GeneratorContext): DocumentParts;
@@ -0,0 +1,126 @@
1
+ 'use strict';
2
+
3
+ var writer = require('../output/writer.js');
4
+ var getCallConfigSummary = require('./helpers/get-call-config-summary.js');
5
+ var deployTypes = require('./deploy-types.js');
6
+ var algosdk = require('algosdk');
7
+
8
+ function* paramsFactory(ctx) {
9
+ yield* writer.jsDoc(`Exposes methods for constructing \`AppClient\` params objects for ABI calls to the ${ctx.name} smart contract`);
10
+ yield `export abstract class ${ctx.name}ParamsFactory {`;
11
+ yield writer.IncIndent;
12
+ yield* opMethods(ctx);
13
+ for (const method of ctx.app.methods) {
14
+ yield* callFactoryMethod(ctx, method);
15
+ }
16
+ yield writer.DecIndent;
17
+ yield '}';
18
+ }
19
+ function* opMethods(ctx) {
20
+ const { app, callConfig } = ctx;
21
+ yield* operationMethod(ctx, `Constructs create ABI call params for the ${app.name} smart contract`, callConfig.createMethods, 'create', true);
22
+ yield* operationMethod(ctx, `Constructs update ABI call params for the ${app.name} smart contract`, callConfig.updateMethods, 'update', true);
23
+ yield* operationMethod(ctx, `Constructs delete ABI call params for the ${app.name} smart contract`, callConfig.deleteMethods, 'delete');
24
+ yield* operationMethod(ctx, `Constructs opt-in ABI call params for the ${app.name} smart contract`, callConfig.optInMethods, 'optIn');
25
+ yield* operationMethod(ctx, `Constructs close out ABI call params for the ${app.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
26
+ }
27
+ function* operationMethod(ctx, description, methods, verb, includeCompilation) {
28
+ const { app, methodSignatureToUniqueName, sanitizer, name } = ctx;
29
+ if (methods.length > 0 && methods.some((m) => m !== getCallConfigSummary.BARE_CALL)) {
30
+ yield* writer.jsDoc(`Gets available ${verb} ABI call param factories`);
31
+ yield `static get ${verb}() {`;
32
+ yield writer.IncIndent;
33
+ yield `return {`;
34
+ yield writer.IncIndent;
35
+ if (['create', 'update', 'delete'].includes(verb)) {
36
+ yield `_resolveByMethod<TParams extends ${ctx.name}${verb[0].toUpperCase()}${verb.substring(1)}CallParams & {method: string}>(params: TParams) {`;
37
+ yield writer.IncIndent;
38
+ yield `switch(params.method) {`;
39
+ yield writer.IncIndent;
40
+ for (const methodSig of methods) {
41
+ if (methodSig === getCallConfigSummary.BARE_CALL)
42
+ continue;
43
+ const uniqueName = methodSignatureToUniqueName[methodSig];
44
+ if (uniqueName !== methodSig) {
45
+ yield `case '${sanitizer.makeSafeStringTypeLiteral(uniqueName)}':`;
46
+ }
47
+ yield `case '${sanitizer.makeSafeStringTypeLiteral(methodSig)}':`;
48
+ yield* writer.indent(`return ${ctx.name}ParamsFactory.${verb}${sanitizer.getSafeMemberAccessor(sanitizer.makeSafeMethodIdentifier(uniqueName))}(params)`);
49
+ }
50
+ yield writer.DecIndentAndCloseBlock;
51
+ // Ordinarily we'd pop in the params.method value, but we can't here since it knows at compile time the type of params.method is never
52
+ yield `throw new Error(\`Unknown ' + verb + ' method\`)`;
53
+ yield writer.DecIndent;
54
+ yield '},';
55
+ yield writer.NewLine;
56
+ }
57
+ for (const methodSig of methods) {
58
+ const onComplete = verb === 'create' ? deployTypes.getCreateOnCompleteOptions(methodSig, app) : undefined;
59
+ if (methodSig !== getCallConfigSummary.BARE_CALL) {
60
+ const method = app.methods.find((m) => new algosdk.ABIMethod(m).getSignature() === methodSig);
61
+ const uniqueName = methodSignatureToUniqueName[methodSig];
62
+ yield* writer.jsDoc({
63
+ description: `${description} using the ${methodSig} ABI method`,
64
+ params: {
65
+ params: `Parameters for the call`,
66
+ },
67
+ returns: 'An `AppClientMethodCallParams` object for the call',
68
+ });
69
+ yield* factoryMethod({
70
+ isNested: true,
71
+ sanitizer,
72
+ name: sanitizer.makeSafeMethodIdentifier(uniqueName),
73
+ signature: methodSig,
74
+ args: method.args,
75
+ additionalParamTypes: `${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}`,
76
+ contractName: name,
77
+ });
78
+ }
79
+ }
80
+ yield writer.DecIndentAndCloseBlock;
81
+ yield writer.DecIndentAndCloseBlock;
82
+ yield writer.NewLine;
83
+ }
84
+ }
85
+ function* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer, name }, method) {
86
+ const methodSignature = new algosdk.ABIMethod(method).getSignature();
87
+ if (!callConfig.callMethods.includes(methodSignature))
88
+ return;
89
+ yield* writer.jsDoc({
90
+ description: `Constructs a no op call for the ${methodSignature} ABI method`,
91
+ abiDescription: method.desc,
92
+ params: {
93
+ params: `Parameters for the call`,
94
+ },
95
+ returns: 'An `AppClientMethodCallParams` object for the call',
96
+ });
97
+ yield* factoryMethod({
98
+ isNested: false,
99
+ sanitizer,
100
+ name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),
101
+ signature: methodSignature,
102
+ args: method.args,
103
+ additionalParamTypes: ' & CallOnComplete',
104
+ contractName: name,
105
+ });
106
+ }
107
+ function* factoryMethod(m) {
108
+ const { isNested, name, signature, args, additionalParamTypes, sanitizer, contractName } = m;
109
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(signature);
110
+ yield `${isNested ? '' : 'static '}${name}(params: CallParams<${contractName}Args['obj']['${methodSigSafe}'] | ${contractName}Args['tuple']['${methodSigSafe}']>${additionalParamTypes}): AppClientMethodCallParams${additionalParamTypes} {`;
111
+ yield writer.IncIndent;
112
+ yield `return {`;
113
+ yield writer.IncIndent;
114
+ yield '...params,';
115
+ yield `method: '${methodSigSafe}' as const,`;
116
+ yield `args: Array.isArray(params.args) ? params.args : [${args
117
+ .map((a, i) => `params.args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name ?? `arg${i + 1}`))}`)
118
+ .join(', ')}],`;
119
+ yield writer.DecIndent;
120
+ yield '}';
121
+ yield writer.DecIndent;
122
+ yield `}${isNested ? ',' : ''}`;
123
+ }
124
+
125
+ exports.paramsFactory = paramsFactory;
126
+ //# sourceMappingURL=params-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params-factory.js","sources":["../../src/client/params-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\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'\nimport { Method } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport function* paramsFactory(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Exposes methods for constructing \\`AppClient\\` params objects for ABI calls to the ${ctx.name} smart contract`)\n yield `export abstract class ${ctx.name}ParamsFactory {`\n yield IncIndent\n\n yield* opMethods(ctx)\n\n for (const method of ctx.app.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 create ABI call params for the ${app.name} smart contract`,\n callConfig.createMethods,\n 'create',\n true,\n )\n yield* operationMethod(\n ctx,\n `Constructs update ABI call params for the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n true,\n )\n yield* operationMethod(ctx, `Constructs delete ABI call params for the ${app.name} smart contract`, callConfig.deleteMethods, 'delete')\n yield* operationMethod(ctx, `Constructs opt-in ABI call params for the ${app.name} smart contract`, callConfig.optInMethods, 'optIn')\n yield* operationMethod(\n ctx,\n `Constructs close out ABI call params for the ${app.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n}\n\nfunction* operationMethod(\n ctx: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n const { app, methodSignatureToUniqueName, sanitizer, name } = ctx\n if (methods.length > 0 && methods.some((m) => m !== BARE_CALL)) {\n yield* jsDoc(`Gets available ${verb} ABI call param factories`)\n yield `static get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n\n if (['create', 'update', 'delete'].includes(verb)) {\n yield `_resolveByMethod<TParams extends ${ctx.name}${verb[0].toUpperCase()}${verb.substring(1)}CallParams & {method: string}>(params: TParams) {`\n yield IncIndent\n yield `switch(params.method) {`\n yield IncIndent\n\n for (const methodSig of methods) {\n if (methodSig === BARE_CALL) continue\n\n const uniqueName = methodSignatureToUniqueName[methodSig]\n if (uniqueName !== methodSig) {\n yield `case '${sanitizer.makeSafeStringTypeLiteral(uniqueName)}':`\n }\n yield `case '${sanitizer.makeSafeStringTypeLiteral(methodSig)}':`\n yield* indent(\n `return ${ctx.name}ParamsFactory.${verb}${sanitizer.getSafeMemberAccessor(sanitizer.makeSafeMethodIdentifier(uniqueName))}(params)`,\n )\n }\n yield DecIndentAndCloseBlock\n\n // Ordinarily we'd pop in the params.method value, but we can't here since it knows at compile time the type of params.method is never\n yield `throw new Error(\\`Unknown ' + verb + ' method\\`)`\n yield DecIndent\n yield '},'\n yield NewLine\n }\n\n for (const methodSig of methods) {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n if (methodSig !== BARE_CALL) {\n const method = app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n const uniqueName = methodSignatureToUniqueName[methodSig]\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method`,\n params: {\n params: `Parameters for the call`,\n },\n returns: 'An `AppClientMethodCallParams` 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 additionalParamTypes: `${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.type ? ` & ${onComplete.type}` : ''\n }`,\n contractName: name,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n\nfunction* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer, name }: GeneratorContext, method: Method) {\n const methodSignature = new ABIMethod(method).getSignature()\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 params: `Parameters for the call`,\n },\n returns: 'An `AppClientMethodCallParams` 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 additionalParamTypes: ' & CallOnComplete',\n contractName: name,\n })\n}\n\nfunction* factoryMethod(m: {\n isNested: boolean\n name?: string\n signature: string\n args: Array<{ name?: string }>\n additionalParamTypes?: string\n sanitizer: Sanitizer\n contractName: string\n}) {\n const { isNested, name, signature, args, additionalParamTypes, sanitizer, contractName } = m\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(signature)\n yield `${isNested ? '' : 'static '}${name}(params: CallParams<${contractName}Args['obj']['${methodSigSafe}'] | ${contractName}Args['tuple']['${methodSigSafe}']>${additionalParamTypes}): AppClientMethodCallParams${additionalParamTypes} {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield '...params,'\n yield `method: '${methodSigSafe}' as const,`\n yield `args: Array.isArray(params.args) ? params.args : [${args\n .map((a, i) => `params.args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name ?? `arg${i + 1}`))}`)\n .join(', ')}],`\n yield DecIndent\n yield '}'\n yield DecIndent\n yield `}${isNested ? ',' : ''}`\n}\n"],"names":["jsDoc","IncIndent","DecIndent","BARE_CALL","indent","DecIndentAndCloseBlock","NewLine","getCreateOnCompleteOptions","ABIMethod"],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import { jsDoc, IncIndent, DecIndent, indent, DecIndentAndCloseBlock, NewLine } from '../output/writer.mjs';
2
+ import { BARE_CALL } from './helpers/get-call-config-summary.mjs';
3
+ import { getCreateOnCompleteOptions } from './deploy-types.mjs';
4
+ import { ABIMethod } from 'algosdk';
5
+
6
+ function* paramsFactory(ctx) {
7
+ yield* jsDoc(`Exposes methods for constructing \`AppClient\` params objects for ABI calls to the ${ctx.name} smart contract`);
8
+ yield `export abstract class ${ctx.name}ParamsFactory {`;
9
+ yield IncIndent;
10
+ yield* opMethods(ctx);
11
+ for (const method of ctx.app.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 create ABI call params for the ${app.name} smart contract`, callConfig.createMethods, 'create', true);
20
+ yield* operationMethod(ctx, `Constructs update ABI call params for the ${app.name} smart contract`, callConfig.updateMethods, 'update', true);
21
+ yield* operationMethod(ctx, `Constructs delete ABI call params for the ${app.name} smart contract`, callConfig.deleteMethods, 'delete');
22
+ yield* operationMethod(ctx, `Constructs opt-in ABI call params for the ${app.name} smart contract`, callConfig.optInMethods, 'optIn');
23
+ yield* operationMethod(ctx, `Constructs close out ABI call params for the ${app.name} smart contract`, callConfig.closeOutMethods, 'closeOut');
24
+ }
25
+ function* operationMethod(ctx, description, methods, verb, includeCompilation) {
26
+ const { app, methodSignatureToUniqueName, sanitizer, name } = ctx;
27
+ if (methods.length > 0 && methods.some((m) => m !== BARE_CALL)) {
28
+ yield* jsDoc(`Gets available ${verb} ABI call param factories`);
29
+ yield `static get ${verb}() {`;
30
+ yield IncIndent;
31
+ yield `return {`;
32
+ yield IncIndent;
33
+ if (['create', 'update', 'delete'].includes(verb)) {
34
+ yield `_resolveByMethod<TParams extends ${ctx.name}${verb[0].toUpperCase()}${verb.substring(1)}CallParams & {method: string}>(params: TParams) {`;
35
+ yield IncIndent;
36
+ yield `switch(params.method) {`;
37
+ yield IncIndent;
38
+ for (const methodSig of methods) {
39
+ if (methodSig === BARE_CALL)
40
+ continue;
41
+ const uniqueName = methodSignatureToUniqueName[methodSig];
42
+ if (uniqueName !== methodSig) {
43
+ yield `case '${sanitizer.makeSafeStringTypeLiteral(uniqueName)}':`;
44
+ }
45
+ yield `case '${sanitizer.makeSafeStringTypeLiteral(methodSig)}':`;
46
+ yield* indent(`return ${ctx.name}ParamsFactory.${verb}${sanitizer.getSafeMemberAccessor(sanitizer.makeSafeMethodIdentifier(uniqueName))}(params)`);
47
+ }
48
+ yield DecIndentAndCloseBlock;
49
+ // Ordinarily we'd pop in the params.method value, but we can't here since it knows at compile time the type of params.method is never
50
+ yield `throw new Error(\`Unknown ' + verb + ' method\`)`;
51
+ yield DecIndent;
52
+ yield '},';
53
+ yield NewLine;
54
+ }
55
+ for (const methodSig of methods) {
56
+ const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined;
57
+ if (methodSig !== BARE_CALL) {
58
+ const method = app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig);
59
+ const uniqueName = methodSignatureToUniqueName[methodSig];
60
+ yield* jsDoc({
61
+ description: `${description} using the ${methodSig} ABI method`,
62
+ params: {
63
+ params: `Parameters for the call`,
64
+ },
65
+ returns: 'An `AppClientMethodCallParams` object for the call',
66
+ });
67
+ yield* factoryMethod({
68
+ isNested: true,
69
+ sanitizer,
70
+ name: sanitizer.makeSafeMethodIdentifier(uniqueName),
71
+ signature: methodSig,
72
+ args: method.args,
73
+ additionalParamTypes: `${includeCompilation ? ' & AppClientCompilationParams' : ''}${onComplete?.type ? ` & ${onComplete.type}` : ''}`,
74
+ contractName: name,
75
+ });
76
+ }
77
+ }
78
+ yield DecIndentAndCloseBlock;
79
+ yield DecIndentAndCloseBlock;
80
+ yield NewLine;
81
+ }
82
+ }
83
+ function* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer, name }, method) {
84
+ const methodSignature = new ABIMethod(method).getSignature();
85
+ if (!callConfig.callMethods.includes(methodSignature))
86
+ return;
87
+ yield* jsDoc({
88
+ description: `Constructs a no op call for the ${methodSignature} ABI method`,
89
+ abiDescription: method.desc,
90
+ params: {
91
+ params: `Parameters for the call`,
92
+ },
93
+ returns: 'An `AppClientMethodCallParams` object for the call',
94
+ });
95
+ yield* factoryMethod({
96
+ isNested: false,
97
+ sanitizer,
98
+ name: sanitizer.makeSafeMethodIdentifier(methodSignatureToUniqueName[methodSignature]),
99
+ signature: methodSignature,
100
+ args: method.args,
101
+ additionalParamTypes: ' & CallOnComplete',
102
+ contractName: name,
103
+ });
104
+ }
105
+ function* factoryMethod(m) {
106
+ const { isNested, name, signature, args, additionalParamTypes, sanitizer, contractName } = m;
107
+ const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(signature);
108
+ yield `${isNested ? '' : 'static '}${name}(params: CallParams<${contractName}Args['obj']['${methodSigSafe}'] | ${contractName}Args['tuple']['${methodSigSafe}']>${additionalParamTypes}): AppClientMethodCallParams${additionalParamTypes} {`;
109
+ yield IncIndent;
110
+ yield `return {`;
111
+ yield IncIndent;
112
+ yield '...params,';
113
+ yield `method: '${methodSigSafe}' as const,`;
114
+ yield `args: Array.isArray(params.args) ? params.args : [${args
115
+ .map((a, i) => `params.args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name ?? `arg${i + 1}`))}`)
116
+ .join(', ')}],`;
117
+ yield DecIndent;
118
+ yield '}';
119
+ yield DecIndent;
120
+ yield `}${isNested ? ',' : ''}`;
121
+ }
122
+
123
+ export { paramsFactory };
124
+ //# sourceMappingURL=params-factory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params-factory.mjs","sources":["../../src/client/params-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\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'\nimport { Method } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { ABIMethod } from 'algosdk'\n\nexport function* paramsFactory(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Exposes methods for constructing \\`AppClient\\` params objects for ABI calls to the ${ctx.name} smart contract`)\n yield `export abstract class ${ctx.name}ParamsFactory {`\n yield IncIndent\n\n yield* opMethods(ctx)\n\n for (const method of ctx.app.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 create ABI call params for the ${app.name} smart contract`,\n callConfig.createMethods,\n 'create',\n true,\n )\n yield* operationMethod(\n ctx,\n `Constructs update ABI call params for the ${app.name} smart contract`,\n callConfig.updateMethods,\n 'update',\n true,\n )\n yield* operationMethod(ctx, `Constructs delete ABI call params for the ${app.name} smart contract`, callConfig.deleteMethods, 'delete')\n yield* operationMethod(ctx, `Constructs opt-in ABI call params for the ${app.name} smart contract`, callConfig.optInMethods, 'optIn')\n yield* operationMethod(\n ctx,\n `Constructs close out ABI call params for the ${app.name} smart contract`,\n callConfig.closeOutMethods,\n 'closeOut',\n )\n}\n\nfunction* operationMethod(\n ctx: GeneratorContext,\n description: string,\n methods: MethodList,\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n includeCompilation?: boolean,\n): DocumentParts {\n const { app, methodSignatureToUniqueName, sanitizer, name } = ctx\n if (methods.length > 0 && methods.some((m) => m !== BARE_CALL)) {\n yield* jsDoc(`Gets available ${verb} ABI call param factories`)\n yield `static get ${verb}() {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n\n if (['create', 'update', 'delete'].includes(verb)) {\n yield `_resolveByMethod<TParams extends ${ctx.name}${verb[0].toUpperCase()}${verb.substring(1)}CallParams & {method: string}>(params: TParams) {`\n yield IncIndent\n yield `switch(params.method) {`\n yield IncIndent\n\n for (const methodSig of methods) {\n if (methodSig === BARE_CALL) continue\n\n const uniqueName = methodSignatureToUniqueName[methodSig]\n if (uniqueName !== methodSig) {\n yield `case '${sanitizer.makeSafeStringTypeLiteral(uniqueName)}':`\n }\n yield `case '${sanitizer.makeSafeStringTypeLiteral(methodSig)}':`\n yield* indent(\n `return ${ctx.name}ParamsFactory.${verb}${sanitizer.getSafeMemberAccessor(sanitizer.makeSafeMethodIdentifier(uniqueName))}(params)`,\n )\n }\n yield DecIndentAndCloseBlock\n\n // Ordinarily we'd pop in the params.method value, but we can't here since it knows at compile time the type of params.method is never\n yield `throw new Error(\\`Unknown ' + verb + ' method\\`)`\n yield DecIndent\n yield '},'\n yield NewLine\n }\n\n for (const methodSig of methods) {\n const onComplete = verb === 'create' ? getCreateOnCompleteOptions(methodSig, app) : undefined\n if (methodSig !== BARE_CALL) {\n const method = app.methods.find((m) => new ABIMethod(m).getSignature() === methodSig)!\n const uniqueName = methodSignatureToUniqueName[methodSig]\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method`,\n params: {\n params: `Parameters for the call`,\n },\n returns: 'An `AppClientMethodCallParams` 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 additionalParamTypes: `${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n onComplete?.type ? ` & ${onComplete.type}` : ''\n }`,\n contractName: name,\n })\n }\n }\n yield DecIndentAndCloseBlock\n yield DecIndentAndCloseBlock\n yield NewLine\n }\n}\n\nfunction* callFactoryMethod({ methodSignatureToUniqueName, callConfig, sanitizer, name }: GeneratorContext, method: Method) {\n const methodSignature = new ABIMethod(method).getSignature()\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 params: `Parameters for the call`,\n },\n returns: 'An `AppClientMethodCallParams` 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 additionalParamTypes: ' & CallOnComplete',\n contractName: name,\n })\n}\n\nfunction* factoryMethod(m: {\n isNested: boolean\n name?: string\n signature: string\n args: Array<{ name?: string }>\n additionalParamTypes?: string\n sanitizer: Sanitizer\n contractName: string\n}) {\n const { isNested, name, signature, args, additionalParamTypes, sanitizer, contractName } = m\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(signature)\n yield `${isNested ? '' : 'static '}${name}(params: CallParams<${contractName}Args['obj']['${methodSigSafe}'] | ${contractName}Args['tuple']['${methodSigSafe}']>${additionalParamTypes}): AppClientMethodCallParams${additionalParamTypes} {`\n yield IncIndent\n yield `return {`\n yield IncIndent\n yield '...params,'\n yield `method: '${methodSigSafe}' as const,`\n yield `args: Array.isArray(params.args) ? params.args : [${args\n .map((a, i) => `params.args${sanitizer.getSafeMemberAccessor(sanitizer.makeSafePropertyIdentifier(a.name ?? `arg${i + 1}`))}`)\n .join(', ')}],`\n yield DecIndent\n yield '}'\n yield DecIndent\n yield `}${isNested ? ',' : ''}`\n}\n"],"names":[],"mappings":"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"}