@algorandfoundation/algokit-client-generator 7.0.0-alpha.1 → 7.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js.map +1 -0
- package/cli.mjs.map +1 -0
- package/{src/client → client}/app-client-context.js +3 -2
- package/client/app-client-context.js.map +1 -0
- package/{src/client → client}/app-client-context.mjs +3 -2
- package/client/app-client-context.mjs.map +1 -0
- package/client/app-client.js.map +1 -0
- package/client/app-client.mjs.map +1 -0
- package/client/app-factory.js.map +1 -0
- package/client/app-factory.mjs.map +1 -0
- package/{src/client → client}/app-types.js +7 -0
- package/client/app-types.js.map +1 -0
- package/{src/client → client}/app-types.mjs +8 -1
- package/client/app-types.mjs.map +1 -0
- package/client/call-composer-types.js.map +1 -0
- package/client/call-composer-types.mjs.map +1 -0
- package/client/call-composer.js.map +1 -0
- package/client/call-composer.mjs.map +1 -0
- package/client/deploy-types.js.map +1 -0
- package/client/deploy-types.mjs.map +1 -0
- package/client/generate.js.map +1 -0
- package/client/generate.mjs.map +1 -0
- package/client/generator-context.js.map +1 -0
- package/client/generator-context.mjs.map +1 -0
- package/client/helpers/contains-non-void-method.js.map +1 -0
- package/client/helpers/contains-non-void-method.mjs.map +1 -0
- package/client/helpers/get-equivalent-type.js.map +1 -0
- package/client/helpers/get-equivalent-type.mjs.map +1 -0
- package/{src/client → client}/imports.js +2 -2
- package/client/imports.js.map +1 -0
- package/{src/client → client}/imports.mjs +2 -2
- package/client/imports.mjs.map +1 -0
- package/client/params-factory.js.map +1 -0
- package/client/params-factory.mjs.map +1 -0
- package/client/utility-types.js.map +1 -0
- package/client/utility-types.mjs.map +1 -0
- package/output/writer.js.map +1 -0
- package/output/writer.mjs.map +1 -0
- package/package.json +2 -2
- package/schema/load.js.map +1 -0
- package/schema/load.mjs.map +1 -0
- package/util/boom.js.map +1 -0
- package/util/boom.mjs.map +1 -0
- package/util/color-console.js.map +1 -0
- package/util/color-console.mjs.map +1 -0
- package/util/sanitization.js.map +1 -0
- package/util/sanitization.mjs.map +1 -0
- package/src/cli.js.map +0 -1
- package/src/cli.mjs.map +0 -1
- package/src/client/app-client-context.js.map +0 -1
- package/src/client/app-client-context.mjs.map +0 -1
- package/src/client/app-client.js.map +0 -1
- package/src/client/app-client.mjs.map +0 -1
- package/src/client/app-factory.js.map +0 -1
- package/src/client/app-factory.mjs.map +0 -1
- package/src/client/app-types.js.map +0 -1
- package/src/client/app-types.mjs.map +0 -1
- package/src/client/call-composer-types.js.map +0 -1
- package/src/client/call-composer-types.mjs.map +0 -1
- package/src/client/call-composer.js.map +0 -1
- package/src/client/call-composer.mjs.map +0 -1
- package/src/client/deploy-types.js.map +0 -1
- package/src/client/deploy-types.mjs.map +0 -1
- package/src/client/generate.js.map +0 -1
- package/src/client/generate.mjs.map +0 -1
- package/src/client/generator-context.js.map +0 -1
- package/src/client/generator-context.mjs.map +0 -1
- package/src/client/helpers/contains-non-void-method.js.map +0 -1
- package/src/client/helpers/contains-non-void-method.mjs.map +0 -1
- package/src/client/helpers/get-equivalent-type.js.map +0 -1
- package/src/client/helpers/get-equivalent-type.mjs.map +0 -1
- package/src/client/imports.js.map +0 -1
- package/src/client/imports.mjs.map +0 -1
- package/src/client/params-factory.js.map +0 -1
- package/src/client/params-factory.mjs.map +0 -1
- package/src/client/utility-types.js.map +0 -1
- package/src/client/utility-types.mjs.map +0 -1
- package/src/output/writer.js.map +0 -1
- package/src/output/writer.mjs.map +0 -1
- package/src/schema/load.js.map +0 -1
- package/src/schema/load.mjs.map +0 -1
- package/src/util/boom.js.map +0 -1
- package/src/util/boom.mjs.map +0 -1
- package/src/util/color-console.js.map +0 -1
- package/src/util/color-console.mjs.map +0 -1
- package/src/util/sanitization.js.map +0 -1
- package/src/util/sanitization.mjs.map +0 -1
- /package/{src/cli.js → cli.js} +0 -0
- /package/{src/cli.mjs → cli.mjs} +0 -0
- /package/{src/client → client}/app-client.js +0 -0
- /package/{src/client → client}/app-client.mjs +0 -0
- /package/{src/client → client}/app-factory.js +0 -0
- /package/{src/client → client}/app-factory.mjs +0 -0
- /package/{src/client → client}/call-composer-types.js +0 -0
- /package/{src/client → client}/call-composer-types.mjs +0 -0
- /package/{src/client → client}/call-composer.js +0 -0
- /package/{src/client → client}/call-composer.mjs +0 -0
- /package/{src/client → client}/deploy-types.js +0 -0
- /package/{src/client → client}/deploy-types.mjs +0 -0
- /package/{src/client → client}/generate.js +0 -0
- /package/{src/client → client}/generate.mjs +0 -0
- /package/{src/client → client}/generator-context.js +0 -0
- /package/{src/client → client}/generator-context.mjs +0 -0
- /package/{src/client → client}/helpers/contains-non-void-method.js +0 -0
- /package/{src/client → client}/helpers/contains-non-void-method.mjs +0 -0
- /package/{src/client → client}/helpers/get-equivalent-type.js +0 -0
- /package/{src/client → client}/helpers/get-equivalent-type.mjs +0 -0
- /package/{src/client → client}/params-factory.js +0 -0
- /package/{src/client → client}/params-factory.mjs +0 -0
- /package/{src/client → client}/utility-types.js +0 -0
- /package/{src/client → client}/utility-types.mjs +0 -0
- /package/{src/index.js → index.js} +0 -0
- /package/{src/index.js.map → index.js.map} +0 -0
- /package/{src/index.mjs → index.mjs} +0 -0
- /package/{src/index.mjs.map → index.mjs.map} +0 -0
- /package/{src/output → output}/writer.js +0 -0
- /package/{src/output → output}/writer.mjs +0 -0
- /package/{src/schema → schema}/application.schema.json.js +0 -0
- /package/{src/schema → schema}/application.schema.json.js.map +0 -0
- /package/{src/schema → schema}/application.schema.json.mjs +0 -0
- /package/{src/schema → schema}/application.schema.json.mjs.map +0 -0
- /package/{src/schema → schema}/arc56.schema.json.js +0 -0
- /package/{src/schema → schema}/arc56.schema.json.js.map +0 -0
- /package/{src/schema → schema}/arc56.schema.json.mjs +0 -0
- /package/{src/schema → schema}/arc56.schema.json.mjs.map +0 -0
- /package/{src/schema → schema}/contract.schema.json.js +0 -0
- /package/{src/schema → schema}/contract.schema.json.js.map +0 -0
- /package/{src/schema → schema}/contract.schema.json.mjs +0 -0
- /package/{src/schema → schema}/contract.schema.json.mjs.map +0 -0
- /package/{src/schema → schema}/load.js +0 -0
- /package/{src/schema → schema}/load.mjs +0 -0
- /package/{src/util → util}/boom.js +0 -0
- /package/{src/util → util}/boom.mjs +0 -0
- /package/{src/util → util}/color-console.js +0 -0
- /package/{src/util → util}/color-console.mjs +0 -0
- /package/{src/util → util}/sanitization.js +0 -0
- /package/{src/util → util}/sanitization.mjs +0 -0
package/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../src/cli.ts"],"sourcesContent":["import { Command, Option } from 'commander'\nimport { loadApplicationJson } from './schema/load'\nimport * as path from 'path'\nimport { generate } from './client/generate'\nimport { writeDocumentPartsToStream } from './output/writer'\nimport { colorConsole } from './util/color-console'\nimport { GenerateMode, generateModes, GeneratorOptions } from './client/generator-context'\n\nexport function cli(workingDirectory: string, args: string[]) {\n // Pre 13 commander allowed `-pn` however the latest version doesn't. Rewrite it to `--pn` for backwards compatibility.\n const processedArgs = args.map((arg) => (arg === '-pn' ? '--pn' : arg))\n const program = new Command()\n program\n .command('generate')\n .description('Generates a TypeScript client for the given application.json file')\n .requiredOption('-a --application <path>', 'Specifies the application.json file')\n .requiredOption('-o --output <path>', 'Specifies the output file path')\n .option('--pn --preserve-names', 'Preserve names from application.json spec instead of sanitizing them')\n .addOption(\n new Option(\n '-m --mode <mode>',\n \"Generate client in specified mode. The 'full' mode includes all features, 'minimal' generates a smaller client without deployment features.\",\n )\n .choices(generateModes)\n .default('full'),\n )\n .allowExcessArguments(true) // Maintains backwards compatibility with pre 13 commanded\n .action(\n async ({\n application,\n output,\n preserveNames,\n mode,\n }: {\n application: string\n output: string\n preserveNames?: boolean\n mode?: GenerateMode\n }): Promise<void> => {\n await generateClientCommand({\n application,\n output,\n preserveNames: Boolean(preserveNames),\n mode: (mode ?? 'full') as GenerateMode,\n workingDirectory,\n })\n colorConsole.success`Operation completed successfully`\n },\n )\n .configureOutput({\n writeErr(str: string) {\n colorConsole.error`${str}`\n },\n })\n try {\n program.parse(processedArgs)\n } catch (err) {\n if (err instanceof Error) {\n colorConsole.error`Unhandled error: \\n\\n${err.stack}`\n } else {\n colorConsole.error`Unhandled error: \\n\\n${err}`\n }\n process.exit(-1)\n }\n}\n\nexport async function generateClientCommand({\n application,\n output,\n preserveNames,\n mode,\n workingDirectory,\n}: {\n application: string\n output: string\n workingDirectory: string\n} & GeneratorOptions): Promise<void> {\n const fs = await import('fs')\n\n const resolvedAppJsonPath = path.resolve(workingDirectory, application)\n const resolvedOutPath = path.resolve(workingDirectory, output)\n const resolvedOutDir = path.dirname(resolvedOutPath)\n colorConsole.info`Reading application.json file from path ${resolvedAppJsonPath}`\n const spec = await loadApplicationJson(resolvedAppJsonPath)\n colorConsole.info`Generating TS client for ${spec.name}`\n const parts = generate(spec, { preserveNames, mode })\n if (!fs.existsSync(resolvedOutDir)) {\n colorConsole.warn`Output directory ${resolvedOutDir} does not exist and will be created.`\n fs.mkdirSync(resolvedOutDir, { recursive: true })\n }\n colorConsole.info`Writing TS client to ${resolvedOutPath}`\n const file = await createAwaitableWriteStream(resolvedOutPath)\n writeDocumentPartsToStream(parts, file)\n await file.finish()\n}\n\nasync function createAwaitableWriteStream(path: string) {\n const fs = await import('fs')\n const stream = fs.createWriteStream(path, {\n flags: 'w',\n })\n const finish = new Promise<void>((resolve, reject) => {\n stream.on('error', (err) => {\n reject(err)\n })\n stream.on('finish', () => {\n resolve()\n })\n })\n return {\n write(chunk: string): void {\n stream.write(chunk)\n },\n finish() {\n stream.end()\n return finish\n },\n }\n}\n"],"names":["Command","Option","generateModes","colorConsole","path","loadApplicationJson","generate","writeDocumentPartsToStream"],"mappings":"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"}
|
package/cli.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.mjs","sources":["../src/cli.ts"],"sourcesContent":["import { Command, Option } from 'commander'\nimport { loadApplicationJson } from './schema/load'\nimport * as path from 'path'\nimport { generate } from './client/generate'\nimport { writeDocumentPartsToStream } from './output/writer'\nimport { colorConsole } from './util/color-console'\nimport { GenerateMode, generateModes, GeneratorOptions } from './client/generator-context'\n\nexport function cli(workingDirectory: string, args: string[]) {\n // Pre 13 commander allowed `-pn` however the latest version doesn't. Rewrite it to `--pn` for backwards compatibility.\n const processedArgs = args.map((arg) => (arg === '-pn' ? '--pn' : arg))\n const program = new Command()\n program\n .command('generate')\n .description('Generates a TypeScript client for the given application.json file')\n .requiredOption('-a --application <path>', 'Specifies the application.json file')\n .requiredOption('-o --output <path>', 'Specifies the output file path')\n .option('--pn --preserve-names', 'Preserve names from application.json spec instead of sanitizing them')\n .addOption(\n new Option(\n '-m --mode <mode>',\n \"Generate client in specified mode. The 'full' mode includes all features, 'minimal' generates a smaller client without deployment features.\",\n )\n .choices(generateModes)\n .default('full'),\n )\n .allowExcessArguments(true) // Maintains backwards compatibility with pre 13 commanded\n .action(\n async ({\n application,\n output,\n preserveNames,\n mode,\n }: {\n application: string\n output: string\n preserveNames?: boolean\n mode?: GenerateMode\n }): Promise<void> => {\n await generateClientCommand({\n application,\n output,\n preserveNames: Boolean(preserveNames),\n mode: (mode ?? 'full') as GenerateMode,\n workingDirectory,\n })\n colorConsole.success`Operation completed successfully`\n },\n )\n .configureOutput({\n writeErr(str: string) {\n colorConsole.error`${str}`\n },\n })\n try {\n program.parse(processedArgs)\n } catch (err) {\n if (err instanceof Error) {\n colorConsole.error`Unhandled error: \\n\\n${err.stack}`\n } else {\n colorConsole.error`Unhandled error: \\n\\n${err}`\n }\n process.exit(-1)\n }\n}\n\nexport async function generateClientCommand({\n application,\n output,\n preserveNames,\n mode,\n workingDirectory,\n}: {\n application: string\n output: string\n workingDirectory: string\n} & GeneratorOptions): Promise<void> {\n const fs = await import('fs')\n\n const resolvedAppJsonPath = path.resolve(workingDirectory, application)\n const resolvedOutPath = path.resolve(workingDirectory, output)\n const resolvedOutDir = path.dirname(resolvedOutPath)\n colorConsole.info`Reading application.json file from path ${resolvedAppJsonPath}`\n const spec = await loadApplicationJson(resolvedAppJsonPath)\n colorConsole.info`Generating TS client for ${spec.name}`\n const parts = generate(spec, { preserveNames, mode })\n if (!fs.existsSync(resolvedOutDir)) {\n colorConsole.warn`Output directory ${resolvedOutDir} does not exist and will be created.`\n fs.mkdirSync(resolvedOutDir, { recursive: true })\n }\n colorConsole.info`Writing TS client to ${resolvedOutPath}`\n const file = await createAwaitableWriteStream(resolvedOutPath)\n writeDocumentPartsToStream(parts, file)\n await file.finish()\n}\n\nasync function createAwaitableWriteStream(path: string) {\n const fs = await import('fs')\n const stream = fs.createWriteStream(path, {\n flags: 'w',\n })\n const finish = new Promise<void>((resolve, reject) => {\n stream.on('error', (err) => {\n reject(err)\n })\n stream.on('finish', () => {\n resolve()\n })\n })\n return {\n write(chunk: string): void {\n stream.write(chunk)\n },\n finish() {\n stream.end()\n return finish\n },\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var abi = require('@algorandfoundation/algokit-utils/abi');
|
|
4
4
|
var getEquivalentType = require('./helpers/get-equivalent-type.js');
|
|
5
|
-
var tinyInvariant = require('../../node_modules/tiny-invariant/dist/esm/tiny-invariant.js');
|
|
6
5
|
|
|
7
6
|
function isAbiMethod(method) {
|
|
8
7
|
return !method.isBare;
|
|
@@ -80,7 +79,9 @@ function createAppClientContext(appSpec, sanitizer) {
|
|
|
80
79
|
function buildStructCtx(name, appSpec, sanitizer) {
|
|
81
80
|
const typeCtx = buildTypeContext(name, appSpec, sanitizer);
|
|
82
81
|
const abiType = typeCtx.type;
|
|
83
|
-
|
|
82
|
+
if (!(abiType instanceof abi.ABIStructType)) {
|
|
83
|
+
throw new Error(`Expected abiType to be ABIStructType`);
|
|
84
|
+
}
|
|
84
85
|
return {
|
|
85
86
|
type: typeCtx,
|
|
86
87
|
tsObjDef: buildStructObjDef(abiType.structFields, appSpec, sanitizer, 1),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-client-context.js","sources":["../../src/client/app-client-context.ts"],"sourcesContent":["import {\n arc56MethodToABIMethod,\n Arc56Contract,\n ABIType,\n ABIReferenceType,\n ABITransactionType,\n AVMType,\n ABIStructField,\n ABIStructType,\n StorageKey,\n StorageMap,\n} from '@algorandfoundation/algokit-utils/abi'\nimport { Sanitizer } from '../util/sanitization'\nimport { abiTypeToTs, getEquivalentType } from './helpers/get-equivalent-type'\n\nexport type AppClientContext = {\n name: SanitizableString\n\n methods: AppClientMethodContext[]\n abiMethods: AbiMethodClientContext[]\n\n state: {\n keys: {\n global: {\n [name: string]: StorageKeyContext\n }\n local: {\n [name: string]: StorageKeyContext\n }\n box: {\n [name: string]: StorageKeyContext\n }\n }\n /** Mapping of human-readable names to StorageMap objects */\n maps: {\n global: {\n [name: string]: StorageMapContext\n }\n local: {\n [name: string]: StorageMapContext\n }\n box: {\n [name: string]: StorageMapContext\n }\n }\n }\n\n structs: Record<string, StructContext>\n\n createMethods: AppClientMethodContext[]\n updateMethods: AppClientMethodContext[]\n deleteMethods: AppClientMethodContext[]\n optInMethods: AppClientMethodContext[]\n closeOutMethods: AppClientMethodContext[]\n clearStateMethods: AppClientMethodContext[]\n noOpMethods: AppClientMethodContext[]\n\n bareMethod: BareMethodClientContext\n\n templateVariables: Record<string, TemplateVariableContext>\n}\n\nexport type AppClientMethodContext = AbiMethodClientContext | BareMethodClientContext\n\nexport function isAbiMethod(method: AppClientMethodContext): method is AbiMethodClientContext {\n return !method.isBare\n}\n\nexport type StructContext = {\n type: TypeContext\n tsObjDef: string\n tsTupDef: string\n}\n\nexport type StorageKeyContext = {\n desc?: string\n keyType: TypeContext\n valueType: TypeContext\n key: string\n}\n/** Describes a mapping of key-value pairs in storage */\nexport type StorageMapContext = {\n desc?: string\n keyType: TypeContext\n valueType: TypeContext\n prefix?: string\n}\n\nexport type TypeContext = {\n type: ABIType | AVMType\n isAvmBytes?: boolean\n tsInType: string\n tsOutType: string\n}\n\nexport type TemplateVariableContext = {\n type: TypeContext\n value: string | undefined\n}\n\nexport type AbiMethodClientContext = {\n isBare: false\n desc: string | undefined\n name: SanitizableString\n baseNameIsUnique: boolean\n uniqueName: SanitizableString\n signature: string\n args: MethodArgClientContext[]\n returns: MethodReturnClientContext\n createActions: MethodOcas\n callActions: MethodOcas\n readonly: boolean\n}\nexport type BareMethodClientContext = {\n isBare: true\n //desc: string | undefined\n createActions: MethodOcas\n callActions: MethodOcas\n //readonly: boolean\n}\n\nexport type MethodOcas = {\n raw: string[]\n any: boolean\n noOp: boolean\n optIn: boolean\n closeOut: boolean\n clearState: boolean\n updateApplication: boolean\n deleteApplication: boolean\n\n inputType: {\n isOptional: boolean\n typeLiteral: string | undefined\n }\n}\n\nexport type MethodArgClientContext = {\n name: SanitizableString | undefined\n desc: string | undefined\n type: ABIType | ABIReferenceType | ABITransactionType\n tsInType: string\n defaultValue: unknown\n}\n\nexport type MethodReturnClientContext = {\n tsOutType: string\n type: ABIType | undefined\n desc: string | undefined\n}\n\nexport type SanitizableString = {\n original: string\n} & {\n [key in keyof Sanitizer]: ReturnType<Sanitizer[key]>\n}\n\nexport function createAppClientContext(appSpec: Arc56Contract, sanitizer: Sanitizer): AppClientContext {\n const methods: AppClientMethodContext[] = []\n\n for (const m of appSpec.methods) {\n const abiMethod = arc56MethodToABIMethod(m, appSpec)\n const baseNameIsUnique = appSpec.methods.filter((o) => o.name === m.name).length === 1\n methods.push({\n isBare: false,\n name: createSanitizableString(m.name, sanitizer),\n desc: m.desc,\n baseNameIsUnique,\n uniqueName: createSanitizableString(baseNameIsUnique ? m.name : abiMethod.getSignature(), sanitizer),\n args: abiMethod.args.map((a): MethodArgClientContext => {\n return {\n name: a.name ? createSanitizableString(a.name, sanitizer) : undefined,\n desc: a.description,\n type: a.type,\n tsInType: getEquivalentType(a.type, 'input', sanitizer),\n defaultValue: Boolean(a.defaultValue),\n }\n }),\n callActions: buildOcas(m.actions.call),\n createActions: buildOcas(m.actions.create),\n readonly: Boolean(m.readonly),\n signature: abiMethod.getSignature(),\n returns: {\n tsOutType: getEquivalentType(abiMethod.returns.type, 'output', sanitizer),\n type: abiMethod.returns.type === 'void' ? undefined : abiMethod.returns.type,\n desc: abiMethod.returns.description,\n },\n })\n }\n\n const bareMethod: BareMethodClientContext = {\n isBare: true,\n createActions: buildOcas(appSpec.bareActions.create),\n callActions: buildOcas(appSpec.bareActions.call),\n }\n if (bareMethod.createActions.any || bareMethod.callActions.any) {\n methods.push(bareMethod)\n }\n\n return {\n name: createSanitizableString(appSpec.name, sanitizer),\n methods,\n bareMethod,\n createMethods: methods.filter((m) => m.createActions.any),\n updateMethods: methods.filter((m) => m.callActions.updateApplication),\n deleteMethods: methods.filter((m) => m.callActions.deleteApplication),\n noOpMethods: methods.filter((m) => m.callActions.noOp),\n optInMethods: methods.filter((m) => m.callActions.optIn),\n closeOutMethods: methods.filter((m) => m.callActions.closeOut),\n clearStateMethods: methods.filter((m) => m.callActions.clearState),\n abiMethods: methods.filter(isAbiMethod),\n\n state: {\n maps: {\n global: buildStorageMap(appSpec.state.maps.global, appSpec, sanitizer),\n local: buildStorageMap(appSpec.state.maps.local, appSpec, sanitizer),\n box: buildStorageMap(appSpec.state.maps.box, appSpec, sanitizer),\n },\n keys: {\n global: buildStorageKey(appSpec.state.keys.global, appSpec, sanitizer),\n local: buildStorageKey(appSpec.state.keys.local, appSpec, sanitizer),\n box: buildStorageKey(appSpec.state.keys.box, appSpec, sanitizer),\n },\n },\n\n structs: mapRecord(appSpec.structs, (def, name) => buildStructCtx(name, appSpec, sanitizer)),\n\n templateVariables: mapRecord(appSpec.templateVariables ?? {}, (v) => ({\n value: v.value,\n type: buildTypeContext(v.type, appSpec, sanitizer),\n })),\n }\n}\n\nfunction buildStructCtx(name: string, appSpec: Arc56Contract, sanitizer: Sanitizer): StructContext {\n const typeCtx = buildTypeContext(name, appSpec, sanitizer)\n\n const abiType = typeCtx.type\n if (!(abiType instanceof ABIStructType)) {\n throw new Error(`Expected abiType to be ABIStructType`)\n }\n\n return {\n type: typeCtx,\n tsObjDef: buildStructObjDef(abiType.structFields, appSpec, sanitizer, 1),\n tsTupDef: `[${Array.from(buildStructTupleDef(abiType.structFields, appSpec, sanitizer)).join(', ')}]`,\n }\n}\n\nfunction buildStructObjDef(fields: ABIStructField[], appSpec: Arc56Contract, sanitizer: Sanitizer, indent: number): string {\n const indentStr = ' '.repeat(indent)\n const closingIndent = ' '.repeat(indent - 1)\n const lines: string[] = []\n\n for (const field of fields) {\n const typeDef = Array.isArray(field.type)\n ? buildStructObjDef(field.type, appSpec, sanitizer, indent + 1)\n : abiTypeToTs(field.type, 'output', sanitizer)\n lines.push(`${indentStr}${sanitizer.makeSafePropertyIdentifier(field.name)}: ${typeDef}`)\n }\n\n return `{\\n${lines.join(',\\n')}\\n${closingIndent}}`\n}\nfunction* buildStructTupleDef(fields: ABIStructField[], appSpec: Arc56Contract, sanitizer: Sanitizer) {\n for (const field of fields) {\n let typeDef: string\n if (Array.isArray(field.type)) {\n typeDef = `[${Array.from(buildStructTupleDef(field.type, appSpec, sanitizer)).join(', ')}]`\n } else {\n typeDef = abiTypeToTs(field.type, 'output', sanitizer)\n }\n yield `${typeDef}`\n }\n}\n\nfunction buildStorageMap(\n maps: Record<string, StorageMap>,\n appSpec: Arc56Contract,\n sanitizer: Sanitizer,\n): Record<string, StorageMapContext> {\n return mapRecord(maps, (v) => ({\n desc: v.desc,\n valueType: buildTypeContext(v.valueType, appSpec, sanitizer),\n keyType: buildTypeContext(v.keyType, appSpec, sanitizer),\n prefix: v.prefix,\n }))\n}\nfunction buildStorageKey(\n keys: Record<string, StorageKey>,\n appSpec: Arc56Contract,\n sanitizer: Sanitizer,\n): Record<string, StorageKeyContext> {\n return mapRecord(keys, (v) => ({\n desc: v.desc,\n valueType: buildTypeContext(v.valueType, appSpec, sanitizer),\n keyType: buildTypeContext(v.valueType, appSpec, sanitizer),\n key: v.key,\n }))\n}\n\nfunction mapRecord<TIn, TOut>(input: Record<string, TIn>, mapper: (value: TIn, key: string) => TOut): Record<string, TOut> {\n return Object.fromEntries(Object.entries(input).map(([k, v]) => [k, mapper(v, k)]))\n}\n\nfunction createSanitizableString(name: string, sanitizer: Sanitizer): SanitizableString {\n return new Proxy<SanitizableString>({} as SanitizableString, {\n get(target, property) {\n if (property === 'toString') return () => name\n if (property === 'original') return name\n if (property in sanitizer) {\n return sanitizer[property as keyof Sanitizer](name)\n }\n },\n })\n}\n\nfunction buildOcas(actions: string[]): MethodOcas {\n const isOptional = actions.includes('NoOp') || actions.length === 1\n const typeLiteral = actions.length\n ? `{ onComplete${isOptional ? '?' : ''}: ${actions.map((oc) => `OnApplicationComplete.${oc}`).join(' | ')} }`\n : undefined\n\n return {\n raw: actions,\n any: Boolean(actions.length),\n noOp: actions.includes('NoOp'),\n optIn: actions.includes('OptIn'),\n closeOut: actions.includes('CloseOut'),\n clearState: actions.includes('ClearState'),\n updateApplication: actions.includes('UpdateApplication'),\n deleteApplication: actions.includes('DeleteApplication'),\n\n inputType: {\n isOptional,\n typeLiteral,\n },\n }\n}\n\nfunction buildTypeContext(typeName: string, appSpec: Arc56Contract, sanitizer: Sanitizer): TypeContext {\n switch (typeName) {\n case 'AVMBytes':\n return {\n isAvmBytes: true,\n type: typeName,\n tsInType: 'Uint8Array | string',\n tsOutType: 'Uint8Array',\n }\n case 'AVMString':\n return {\n type: typeName,\n tsInType: 'string',\n tsOutType: 'string',\n }\n case 'AVMUint64':\n return {\n type: typeName,\n tsInType: 'bigint',\n tsOutType: 'bigint',\n }\n }\n if (typeName in appSpec.structs) {\n return {\n type: ABIStructType.fromStruct(typeName, appSpec.structs),\n tsInType: sanitizer.makeSafeTypeIdentifier(typeName),\n tsOutType: sanitizer.makeSafeTypeIdentifier(typeName),\n }\n }\n // Otherwise parse as ABI type\n try {\n const abiType = ABIType.from(typeName)\n return {\n type: abiType,\n tsInType: abiTypeToTs(abiType, 'input', sanitizer),\n tsOutType: abiTypeToTs(abiType, 'output', sanitizer),\n }\n } catch (error) {\n throw new Error(`Failed to parse storage type '${typeName}': ${error}`)\n }\n}\n"],"names":["arc56MethodToABIMethod","getEquivalentType","ABIStructType","abiTypeToTs","ABIType"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { arc56MethodToABIMethod, ABIStructType, ABIType } from '@algorandfoundation/algokit-utils/abi';
|
|
2
2
|
import { getEquivalentType, abiTypeToTs } from './helpers/get-equivalent-type.mjs';
|
|
3
|
-
import invariant from '../../node_modules/tiny-invariant/dist/esm/tiny-invariant.mjs';
|
|
4
3
|
|
|
5
4
|
function isAbiMethod(method) {
|
|
6
5
|
return !method.isBare;
|
|
@@ -78,7 +77,9 @@ function createAppClientContext(appSpec, sanitizer) {
|
|
|
78
77
|
function buildStructCtx(name, appSpec, sanitizer) {
|
|
79
78
|
const typeCtx = buildTypeContext(name, appSpec, sanitizer);
|
|
80
79
|
const abiType = typeCtx.type;
|
|
81
|
-
|
|
80
|
+
if (!(abiType instanceof ABIStructType)) {
|
|
81
|
+
throw new Error(`Expected abiType to be ABIStructType`);
|
|
82
|
+
}
|
|
82
83
|
return {
|
|
83
84
|
type: typeCtx,
|
|
84
85
|
tsObjDef: buildStructObjDef(abiType.structFields, appSpec, sanitizer, 1),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-client-context.mjs","sources":["../../src/client/app-client-context.ts"],"sourcesContent":["import {\n arc56MethodToABIMethod,\n Arc56Contract,\n ABIType,\n ABIReferenceType,\n ABITransactionType,\n AVMType,\n ABIStructField,\n ABIStructType,\n StorageKey,\n StorageMap,\n} from '@algorandfoundation/algokit-utils/abi'\nimport { Sanitizer } from '../util/sanitization'\nimport { abiTypeToTs, getEquivalentType } from './helpers/get-equivalent-type'\n\nexport type AppClientContext = {\n name: SanitizableString\n\n methods: AppClientMethodContext[]\n abiMethods: AbiMethodClientContext[]\n\n state: {\n keys: {\n global: {\n [name: string]: StorageKeyContext\n }\n local: {\n [name: string]: StorageKeyContext\n }\n box: {\n [name: string]: StorageKeyContext\n }\n }\n /** Mapping of human-readable names to StorageMap objects */\n maps: {\n global: {\n [name: string]: StorageMapContext\n }\n local: {\n [name: string]: StorageMapContext\n }\n box: {\n [name: string]: StorageMapContext\n }\n }\n }\n\n structs: Record<string, StructContext>\n\n createMethods: AppClientMethodContext[]\n updateMethods: AppClientMethodContext[]\n deleteMethods: AppClientMethodContext[]\n optInMethods: AppClientMethodContext[]\n closeOutMethods: AppClientMethodContext[]\n clearStateMethods: AppClientMethodContext[]\n noOpMethods: AppClientMethodContext[]\n\n bareMethod: BareMethodClientContext\n\n templateVariables: Record<string, TemplateVariableContext>\n}\n\nexport type AppClientMethodContext = AbiMethodClientContext | BareMethodClientContext\n\nexport function isAbiMethod(method: AppClientMethodContext): method is AbiMethodClientContext {\n return !method.isBare\n}\n\nexport type StructContext = {\n type: TypeContext\n tsObjDef: string\n tsTupDef: string\n}\n\nexport type StorageKeyContext = {\n desc?: string\n keyType: TypeContext\n valueType: TypeContext\n key: string\n}\n/** Describes a mapping of key-value pairs in storage */\nexport type StorageMapContext = {\n desc?: string\n keyType: TypeContext\n valueType: TypeContext\n prefix?: string\n}\n\nexport type TypeContext = {\n type: ABIType | AVMType\n isAvmBytes?: boolean\n tsInType: string\n tsOutType: string\n}\n\nexport type TemplateVariableContext = {\n type: TypeContext\n value: string | undefined\n}\n\nexport type AbiMethodClientContext = {\n isBare: false\n desc: string | undefined\n name: SanitizableString\n baseNameIsUnique: boolean\n uniqueName: SanitizableString\n signature: string\n args: MethodArgClientContext[]\n returns: MethodReturnClientContext\n createActions: MethodOcas\n callActions: MethodOcas\n readonly: boolean\n}\nexport type BareMethodClientContext = {\n isBare: true\n //desc: string | undefined\n createActions: MethodOcas\n callActions: MethodOcas\n //readonly: boolean\n}\n\nexport type MethodOcas = {\n raw: string[]\n any: boolean\n noOp: boolean\n optIn: boolean\n closeOut: boolean\n clearState: boolean\n updateApplication: boolean\n deleteApplication: boolean\n\n inputType: {\n isOptional: boolean\n typeLiteral: string | undefined\n }\n}\n\nexport type MethodArgClientContext = {\n name: SanitizableString | undefined\n desc: string | undefined\n type: ABIType | ABIReferenceType | ABITransactionType\n tsInType: string\n defaultValue: unknown\n}\n\nexport type MethodReturnClientContext = {\n tsOutType: string\n type: ABIType | undefined\n desc: string | undefined\n}\n\nexport type SanitizableString = {\n original: string\n} & {\n [key in keyof Sanitizer]: ReturnType<Sanitizer[key]>\n}\n\nexport function createAppClientContext(appSpec: Arc56Contract, sanitizer: Sanitizer): AppClientContext {\n const methods: AppClientMethodContext[] = []\n\n for (const m of appSpec.methods) {\n const abiMethod = arc56MethodToABIMethod(m, appSpec)\n const baseNameIsUnique = appSpec.methods.filter((o) => o.name === m.name).length === 1\n methods.push({\n isBare: false,\n name: createSanitizableString(m.name, sanitizer),\n desc: m.desc,\n baseNameIsUnique,\n uniqueName: createSanitizableString(baseNameIsUnique ? m.name : abiMethod.getSignature(), sanitizer),\n args: abiMethod.args.map((a): MethodArgClientContext => {\n return {\n name: a.name ? createSanitizableString(a.name, sanitizer) : undefined,\n desc: a.description,\n type: a.type,\n tsInType: getEquivalentType(a.type, 'input', sanitizer),\n defaultValue: Boolean(a.defaultValue),\n }\n }),\n callActions: buildOcas(m.actions.call),\n createActions: buildOcas(m.actions.create),\n readonly: Boolean(m.readonly),\n signature: abiMethod.getSignature(),\n returns: {\n tsOutType: getEquivalentType(abiMethod.returns.type, 'output', sanitizer),\n type: abiMethod.returns.type === 'void' ? undefined : abiMethod.returns.type,\n desc: abiMethod.returns.description,\n },\n })\n }\n\n const bareMethod: BareMethodClientContext = {\n isBare: true,\n createActions: buildOcas(appSpec.bareActions.create),\n callActions: buildOcas(appSpec.bareActions.call),\n }\n if (bareMethod.createActions.any || bareMethod.callActions.any) {\n methods.push(bareMethod)\n }\n\n return {\n name: createSanitizableString(appSpec.name, sanitizer),\n methods,\n bareMethod,\n createMethods: methods.filter((m) => m.createActions.any),\n updateMethods: methods.filter((m) => m.callActions.updateApplication),\n deleteMethods: methods.filter((m) => m.callActions.deleteApplication),\n noOpMethods: methods.filter((m) => m.callActions.noOp),\n optInMethods: methods.filter((m) => m.callActions.optIn),\n closeOutMethods: methods.filter((m) => m.callActions.closeOut),\n clearStateMethods: methods.filter((m) => m.callActions.clearState),\n abiMethods: methods.filter(isAbiMethod),\n\n state: {\n maps: {\n global: buildStorageMap(appSpec.state.maps.global, appSpec, sanitizer),\n local: buildStorageMap(appSpec.state.maps.local, appSpec, sanitizer),\n box: buildStorageMap(appSpec.state.maps.box, appSpec, sanitizer),\n },\n keys: {\n global: buildStorageKey(appSpec.state.keys.global, appSpec, sanitizer),\n local: buildStorageKey(appSpec.state.keys.local, appSpec, sanitizer),\n box: buildStorageKey(appSpec.state.keys.box, appSpec, sanitizer),\n },\n },\n\n structs: mapRecord(appSpec.structs, (def, name) => buildStructCtx(name, appSpec, sanitizer)),\n\n templateVariables: mapRecord(appSpec.templateVariables ?? {}, (v) => ({\n value: v.value,\n type: buildTypeContext(v.type, appSpec, sanitizer),\n })),\n }\n}\n\nfunction buildStructCtx(name: string, appSpec: Arc56Contract, sanitizer: Sanitizer): StructContext {\n const typeCtx = buildTypeContext(name, appSpec, sanitizer)\n\n const abiType = typeCtx.type\n if (!(abiType instanceof ABIStructType)) {\n throw new Error(`Expected abiType to be ABIStructType`)\n }\n\n return {\n type: typeCtx,\n tsObjDef: buildStructObjDef(abiType.structFields, appSpec, sanitizer, 1),\n tsTupDef: `[${Array.from(buildStructTupleDef(abiType.structFields, appSpec, sanitizer)).join(', ')}]`,\n }\n}\n\nfunction buildStructObjDef(fields: ABIStructField[], appSpec: Arc56Contract, sanitizer: Sanitizer, indent: number): string {\n const indentStr = ' '.repeat(indent)\n const closingIndent = ' '.repeat(indent - 1)\n const lines: string[] = []\n\n for (const field of fields) {\n const typeDef = Array.isArray(field.type)\n ? buildStructObjDef(field.type, appSpec, sanitizer, indent + 1)\n : abiTypeToTs(field.type, 'output', sanitizer)\n lines.push(`${indentStr}${sanitizer.makeSafePropertyIdentifier(field.name)}: ${typeDef}`)\n }\n\n return `{\\n${lines.join(',\\n')}\\n${closingIndent}}`\n}\nfunction* buildStructTupleDef(fields: ABIStructField[], appSpec: Arc56Contract, sanitizer: Sanitizer) {\n for (const field of fields) {\n let typeDef: string\n if (Array.isArray(field.type)) {\n typeDef = `[${Array.from(buildStructTupleDef(field.type, appSpec, sanitizer)).join(', ')}]`\n } else {\n typeDef = abiTypeToTs(field.type, 'output', sanitizer)\n }\n yield `${typeDef}`\n }\n}\n\nfunction buildStorageMap(\n maps: Record<string, StorageMap>,\n appSpec: Arc56Contract,\n sanitizer: Sanitizer,\n): Record<string, StorageMapContext> {\n return mapRecord(maps, (v) => ({\n desc: v.desc,\n valueType: buildTypeContext(v.valueType, appSpec, sanitizer),\n keyType: buildTypeContext(v.keyType, appSpec, sanitizer),\n prefix: v.prefix,\n }))\n}\nfunction buildStorageKey(\n keys: Record<string, StorageKey>,\n appSpec: Arc56Contract,\n sanitizer: Sanitizer,\n): Record<string, StorageKeyContext> {\n return mapRecord(keys, (v) => ({\n desc: v.desc,\n valueType: buildTypeContext(v.valueType, appSpec, sanitizer),\n keyType: buildTypeContext(v.valueType, appSpec, sanitizer),\n key: v.key,\n }))\n}\n\nfunction mapRecord<TIn, TOut>(input: Record<string, TIn>, mapper: (value: TIn, key: string) => TOut): Record<string, TOut> {\n return Object.fromEntries(Object.entries(input).map(([k, v]) => [k, mapper(v, k)]))\n}\n\nfunction createSanitizableString(name: string, sanitizer: Sanitizer): SanitizableString {\n return new Proxy<SanitizableString>({} as SanitizableString, {\n get(target, property) {\n if (property === 'toString') return () => name\n if (property === 'original') return name\n if (property in sanitizer) {\n return sanitizer[property as keyof Sanitizer](name)\n }\n },\n })\n}\n\nfunction buildOcas(actions: string[]): MethodOcas {\n const isOptional = actions.includes('NoOp') || actions.length === 1\n const typeLiteral = actions.length\n ? `{ onComplete${isOptional ? '?' : ''}: ${actions.map((oc) => `OnApplicationComplete.${oc}`).join(' | ')} }`\n : undefined\n\n return {\n raw: actions,\n any: Boolean(actions.length),\n noOp: actions.includes('NoOp'),\n optIn: actions.includes('OptIn'),\n closeOut: actions.includes('CloseOut'),\n clearState: actions.includes('ClearState'),\n updateApplication: actions.includes('UpdateApplication'),\n deleteApplication: actions.includes('DeleteApplication'),\n\n inputType: {\n isOptional,\n typeLiteral,\n },\n }\n}\n\nfunction buildTypeContext(typeName: string, appSpec: Arc56Contract, sanitizer: Sanitizer): TypeContext {\n switch (typeName) {\n case 'AVMBytes':\n return {\n isAvmBytes: true,\n type: typeName,\n tsInType: 'Uint8Array | string',\n tsOutType: 'Uint8Array',\n }\n case 'AVMString':\n return {\n type: typeName,\n tsInType: 'string',\n tsOutType: 'string',\n }\n case 'AVMUint64':\n return {\n type: typeName,\n tsInType: 'bigint',\n tsOutType: 'bigint',\n }\n }\n if (typeName in appSpec.structs) {\n return {\n type: ABIStructType.fromStruct(typeName, appSpec.structs),\n tsInType: sanitizer.makeSafeTypeIdentifier(typeName),\n tsOutType: sanitizer.makeSafeTypeIdentifier(typeName),\n }\n }\n // Otherwise parse as ABI type\n try {\n const abiType = ABIType.from(typeName)\n return {\n type: abiType,\n tsInType: abiTypeToTs(abiType, 'input', sanitizer),\n tsOutType: abiTypeToTs(abiType, 'output', sanitizer),\n }\n } catch (error) {\n throw new Error(`Failed to parse storage type '${typeName}': ${error}`)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-client.js","sources":["../../src/client/app-client.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\nimport { composeMethod } from './call-composer'\n\nimport { AppClientMethodContext, AbiMethodClientContext, isAbiMethod } from './app-client-context'\n\nexport function* appClient(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(`A client to make calls to the ${app.name} smart contract`)\n yield `export class ${name}Client {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppClient\\` for when you want to have more flexibility`)\n yield 'public readonly appClient: _AppClient'\n yield NewLine\n\n yield `\n /**\n * Creates a new instance of \\`${name}Client\\`\n *\n * @param appClient An \\`AppClient\\` instance which has been created with the ${name} app spec\n */\n constructor(appClient: _AppClient)\n /**\n * Creates a new instance of \\`${name}Client\\`\n *\n * @param params The parameters to initialise the app client with\n */\n constructor(params: Omit<AppClientParams, 'appSpec'>)\n constructor(appClientOrParams: _AppClient | Omit<AppClientParams, 'appSpec'>) {\n this.appClient = appClientOrParams instanceof _AppClient ? appClientOrParams : new _AppClient({\n ...appClientOrParams,\n appSpec: APP_SPEC,\n })\n }`\n\n yield `\n /**\n * Returns a new \\`${name}Client\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n * @param params The parameters to create the app client\n */\n public static async fromCreatorAndName(params: Omit<ResolveAppClientByCreatorAndName, 'appSpec'>): Promise<${name}Client> {\n return new ${name}Client(await _AppClient.fromCreatorAndName({...params, appSpec: APP_SPEC}))\n }\n\n /**\n * Returns an \\`${name}Client\\` instance for the current network based on\n * pre-determined network-specific app IDs specified in the ARC-56 app spec.\n *\n * If no IDs are in the app spec or the network isn't recognised, an error is thrown.\n * @param params The parameters to create the app client\n */\n static async fromNetwork(\n params: Omit<ResolveAppClientByNetwork, 'appSpec'>\n ): Promise<${name}Client> {\n return new ${name}Client(await _AppClient.fromNetwork({...params, appSpec: APP_SPEC}))\n }\n\n /** The ID of the app instance this client is linked to. */\n public get appId() {\n return this.appClient.appId\n }\n\n /** The app address of the app instance this client is linked to. */\n public get appAddress() {\n return this.appClient.appAddress\n }\n\n /** The name of the app. */\n public get appName() {\n return this.appClient.appName\n }\n\n /** The ARC-56 app spec being used */\n public get appSpec() {\n return this.appClient.appSpec\n }\n\n /** A reference to the underlying \\`AlgorandClient\\` this app client is using. */\n public get algorand(): AlgorandClient {\n return this.appClient.algorand\n }\n\n `\n\n yield* params(ctx)\n yield* createTransaction(ctx)\n yield* send(ctx)\n yield* cloneMethod(ctx)\n yield* readonlyMethods(ctx)\n yield* getStateMethods(ctx)\n yield* composeMethod(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(\n `Get parameters to create transactions for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`,\n )\n yield `readonly params = {`\n yield IncIndent\n yield* opMethods(ctx, 'params')\n yield* clearState(ctx, 'params')\n yield* call(ctx, 'params')\n yield* noopMethods(ctx, 'params')\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* createTransaction(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Create transactions for the current app`)\n yield `readonly createTransaction = {`\n yield IncIndent\n yield* opMethods(ctx, 'createTransaction')\n yield* clearState(ctx, 'createTransaction')\n yield* call(ctx, 'createTransaction')\n yield* noopMethods(ctx, 'createTransaction')\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = {`\n yield IncIndent\n yield* opMethods(ctx, 'send')\n yield* clearState(ctx, 'send')\n yield* call(ctx, 'send')\n yield* noopMethods(ctx, 'send')\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* opMethods(ctx: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n const { app } = ctx\n\n if (ctx.mode === 'full') {\n yield* operationMethods(ctx, `Updates an existing instance of the ${app.name} smart contract`, app.updateMethods, 'update', type, true)\n yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, app.deleteMethods, 'delete', type)\n }\n yield* operationMethods(ctx, `Opts the user into an existing instance of the ${app.name} smart contract`, app.optInMethods, 'optIn', type)\n yield* operationMethods(\n ctx,\n `Makes a close out call to an existing instance of the ${app.name} smart contract`,\n app.closeOutMethods,\n 'closeOut',\n type,\n )\n}\n\nfunction* bareMethodCall({\n generator: { app },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete' | 'clearState' | 'call'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete =\n verb === 'create' ? app.bareMethod.createActions.inputType : verb === 'call' ? app.bareMethod.callActions.inputType : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (raw) call`,\n },\n returns: `The ${verb} result`,\n })\n yield `${name}: (params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}>) => {`\n yield* indent(`return this.appClient.${type}.bare.${verb}(params)`)\n yield '},'\n}\n\nfunction* abiMethodCall({\n generator: { sanitizer, name },\n method,\n description,\n verb,\n type,\n includeCompilation,\n readonly,\n}: {\n generator: GeneratorContext\n method: AbiMethodClientContext\n description: string\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete' | 'call'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n readonly?: boolean\n}) {\n const methodSig = method.signature\n const uniqueName = method.uniqueName.original\n const onComplete = verb === 'create' ? method.createActions.inputType : method.callActions.inputType\n yield* jsDoc({\n description:\n verb === 'call' && method.readonly\n ? [\n `${description} using the \\`${methodSig}\\` ABI method.`,\n '',\n 'This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.',\n ]\n : `${description} using the \\`${methodSig}\\` ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${!readonly ? `${methodName}: ` : ''}${type === 'send' ? 'async ' : ''}${readonly ? `${methodName}` : ''}(params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${\n includeCompilation ? ' &' + ' AppClientCompilationParams' : ''\n }${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' && !readonly ? ' & SendParams' : ''}${onComplete?.typeLiteral && !readonly ? ` & ${onComplete.typeLiteral}` : ''}${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''})${!readonly ? ' =>' : ''} {`\n if (type === 'send') {\n yield* indent(\n `const result = await this.appClient.${type}.${verb}(${name}ParamsFactory${verb !== 'call' ? `.${verb}` : ''}${methodNameAccessor}(params))`,\n readonly\n ? `return result.return as unknown as ${name}Returns['${methodSigSafe}']`\n : `return {...result, return: result.return as unknown as (undefined | ${name}Returns['${methodSigSafe}'])}`,\n )\n } else {\n yield* indent(\n `return this.appClient.${type}.${verb}(${name}ParamsFactory${verb !== 'call' ? `.${verb}` : ''}${methodNameAccessor}(params))`,\n )\n }\n yield `}${!readonly ? ',' : ''}`\n yield NewLine\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: AppClientMethodContext[],\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n type: 'params' | 'createTransaction' | 'send',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `${verb}: {`\n yield IncIndent\n for (const method of methods) {\n if (!isAbiMethod(method)) {\n yield* bareMethodCall({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type,\n includeCompilation,\n })\n } else {\n yield* abiMethodCall({\n generator,\n method,\n description,\n verb,\n type,\n includeCompilation,\n })\n }\n }\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* clearState(generator: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n yield* bareMethodCall({\n generator,\n name: 'clearState',\n description: `Makes a clear_state call to an existing instance of the ${generator.app.name} smart contract`,\n verb: 'clearState',\n type,\n })\n yield NewLine\n}\n\nfunction* call(generator: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n if (generator.app.bareMethod.callActions.noOp) {\n yield* bareMethodCall({\n generator,\n name: 'bare',\n description: `Makes a call to the ${generator.app.name} smart contract using a bare call`,\n verb: 'call',\n type,\n })\n yield NewLine\n }\n}\n\nfunction* readonlyMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n for (const method of app.abiMethods) {\n // Skip non readonly methods\n if (!method.readonly) continue\n\n yield* abiMethodCall({\n generator,\n description: `Makes a readonly (simulated) call to the ${generator.app.name} smart contract`,\n method,\n verb: 'call',\n type: 'send',\n includeCompilation: false,\n readonly: true,\n })\n }\n}\n\nfunction* noopMethods(generator: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n const { app } = generator\n for (const method of app.noOpMethods) {\n if (!isAbiMethod(method)) continue\n yield* abiMethodCall({\n generator,\n description: `Makes a call to the ${generator.app.name} smart contract`,\n method,\n verb: 'call',\n type,\n includeCompilation: false,\n })\n }\n}\n\nfunction* getStateMethods({ app, sanitizer }: GeneratorContext): DocumentParts {\n if (Object.keys(app.state).length === 0) return\n\n yield* jsDoc(`Methods to access state for the current ${app.name} app`)\n yield 'state = {'\n yield IncIndent\n\n const storageTypes = ['global', 'local', 'box'] as const\n\n for (const storageType of storageTypes) {\n const hasKeys = Object.keys(app.state.keys[storageType]).length > 0\n const hasMaps = Object.keys(app.state.maps[storageType]).length > 0\n if (!hasKeys && !hasMaps) continue\n\n yield* jsDoc(`Methods to access ${storageType} state for the current ${app.name} app`)\n yield `${storageType}${storageType === 'local' ? ': (address: string | Address) => {' : ': {'}`\n yield IncIndent\n if (storageType === 'local') {\n yield \"const encodedAddress = typeof address === 'string' ? address : encodeAddress(address.publicKey)\"\n yield 'return {'\n yield IncIndent\n }\n\n yield* jsDoc(`Get all current keyed values from ${storageType} state`)\n yield `getAll: async (): Promise<Partial<Expand<${storageType[0].toUpperCase()}${storageType.substring(1)}KeysState>>> => {`\n yield* indent(\n `const result = await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getAll()`,\n `return {`,\n ...Object.keys(app.state.keys[storageType]).map((n) => {\n return ` ${sanitizer.makeSafePropertyIdentifier(n)}: ${app.state.keys[storageType][n].valueType.isAvmBytes ? `new BinaryStateValue(result${sanitizer.getSafeMemberAccessor(n)})` : `result${sanitizer.getSafeMemberAccessor(n)}`},`\n }),\n `}`,\n )\n yield `},`\n\n for (const n of Object.keys(app.state.keys[storageType])) {\n const name = sanitizer.makeSafePropertyIdentifier(n)\n const k = app.state.keys[storageType][n]\n yield* jsDoc(`Get the current value of the ${n} key in ${storageType} state`)\n yield `${name}: async (): Promise<${k.valueType.isAvmBytes ? 'BinaryState' : `${k.valueType.tsOutType} | undefined`}> => { return ${k.valueType.isAvmBytes ? 'new BinaryStateValue(' : ''}(await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getValue(\"${sanitizer.makeSafeStringTypeLiteral(n)}\"))${k.valueType.isAvmBytes ? ' as Uint8Array | undefined)' : ` as ${k.valueType.tsOutType} | undefined`} },`\n }\n\n for (const n of Object.keys(app.state.maps[storageType])) {\n const name = sanitizer.makeSafePropertyIdentifier(app.state.keys[storageType][n] ? `${n}Map` : n)\n const m = app.state.maps[storageType][n]\n yield* jsDoc(`Get values from the ${n} map in ${storageType} state`)\n yield `${name}: {`\n yield IncIndent\n\n yield* jsDoc(`Get all current values of the ${n} map in ${storageType} state`)\n yield `getMap: async (): Promise<Map<${m.keyType.tsOutType}, ${m.valueType.tsOutType}>> => { return (await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getMap(\"${sanitizer.makeSafeStringTypeLiteral(n)}\")) as Map<${m.keyType.tsOutType}, ${m.valueType.tsOutType}> },`\n\n yield* jsDoc(`Get a current value of the ${n} map by key from ${storageType} state`)\n yield `value: async (key: ${m.keyType.tsInType}): Promise<${m.valueType.tsOutType} | undefined> => { return await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getMapValue(\"${sanitizer.makeSafeStringTypeLiteral(n)}\", key) as ${m.valueType.tsOutType} | undefined },`\n\n yield DecIndent\n yield `},`\n }\n\n yield DecIndent\n if (storageType === 'local') {\n yield '}'\n yield DecIndent\n }\n yield '},'\n }\n\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* cloneMethod({ app }: GeneratorContext): DocumentParts {\n yield* jsDoc({\n description: 'Clone this app client with different params',\n params: {\n params:\n 'The params to use for the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value.',\n },\n returns: 'A new app client with the altered params',\n })\n yield `public clone(params: CloneAppClientParams) {`\n yield IncIndent\n yield `return new ${app.name.makeSafeTypeIdentifier}Client(this.appClient.clone(params))`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":["jsDoc","IncIndent","NewLine","composeMethod","DecIndentAndCloseBlock","indent","isAbiMethod","DecIndent"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-client.mjs","sources":["../../src/client/app-client.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\nimport { GeneratorContext } from './generator-context'\nimport { composeMethod } from './call-composer'\n\nimport { AppClientMethodContext, AbiMethodClientContext, isAbiMethod } from './app-client-context'\n\nexport function* appClient(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(`A client to make calls to the ${app.name} smart contract`)\n yield `export class ${name}Client {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppClient\\` for when you want to have more flexibility`)\n yield 'public readonly appClient: _AppClient'\n yield NewLine\n\n yield `\n /**\n * Creates a new instance of \\`${name}Client\\`\n *\n * @param appClient An \\`AppClient\\` instance which has been created with the ${name} app spec\n */\n constructor(appClient: _AppClient)\n /**\n * Creates a new instance of \\`${name}Client\\`\n *\n * @param params The parameters to initialise the app client with\n */\n constructor(params: Omit<AppClientParams, 'appSpec'>)\n constructor(appClientOrParams: _AppClient | Omit<AppClientParams, 'appSpec'>) {\n this.appClient = appClientOrParams instanceof _AppClient ? appClientOrParams : new _AppClient({\n ...appClientOrParams,\n appSpec: APP_SPEC,\n })\n }`\n\n yield `\n /**\n * Returns a new \\`${name}Client\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n * @param params The parameters to create the app client\n */\n public static async fromCreatorAndName(params: Omit<ResolveAppClientByCreatorAndName, 'appSpec'>): Promise<${name}Client> {\n return new ${name}Client(await _AppClient.fromCreatorAndName({...params, appSpec: APP_SPEC}))\n }\n\n /**\n * Returns an \\`${name}Client\\` instance for the current network based on\n * pre-determined network-specific app IDs specified in the ARC-56 app spec.\n *\n * If no IDs are in the app spec or the network isn't recognised, an error is thrown.\n * @param params The parameters to create the app client\n */\n static async fromNetwork(\n params: Omit<ResolveAppClientByNetwork, 'appSpec'>\n ): Promise<${name}Client> {\n return new ${name}Client(await _AppClient.fromNetwork({...params, appSpec: APP_SPEC}))\n }\n\n /** The ID of the app instance this client is linked to. */\n public get appId() {\n return this.appClient.appId\n }\n\n /** The app address of the app instance this client is linked to. */\n public get appAddress() {\n return this.appClient.appAddress\n }\n\n /** The name of the app. */\n public get appName() {\n return this.appClient.appName\n }\n\n /** The ARC-56 app spec being used */\n public get appSpec() {\n return this.appClient.appSpec\n }\n\n /** A reference to the underlying \\`AlgorandClient\\` this app client is using. */\n public get algorand(): AlgorandClient {\n return this.appClient.algorand\n }\n\n `\n\n yield* params(ctx)\n yield* createTransaction(ctx)\n yield* send(ctx)\n yield* cloneMethod(ctx)\n yield* readonlyMethods(ctx)\n yield* getStateMethods(ctx)\n yield* composeMethod(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(\n `Get parameters to create transactions for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`,\n )\n yield `readonly params = {`\n yield IncIndent\n yield* opMethods(ctx, 'params')\n yield* clearState(ctx, 'params')\n yield* call(ctx, 'params')\n yield* noopMethods(ctx, 'params')\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* createTransaction(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Create transactions for the current app`)\n yield `readonly createTransaction = {`\n yield IncIndent\n yield* opMethods(ctx, 'createTransaction')\n yield* clearState(ctx, 'createTransaction')\n yield* call(ctx, 'createTransaction')\n yield* noopMethods(ctx, 'createTransaction')\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = {`\n yield IncIndent\n yield* opMethods(ctx, 'send')\n yield* clearState(ctx, 'send')\n yield* call(ctx, 'send')\n yield* noopMethods(ctx, 'send')\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* opMethods(ctx: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n const { app } = ctx\n\n if (ctx.mode === 'full') {\n yield* operationMethods(ctx, `Updates an existing instance of the ${app.name} smart contract`, app.updateMethods, 'update', type, true)\n yield* operationMethods(ctx, `Deletes an existing instance of the ${app.name} smart contract`, app.deleteMethods, 'delete', type)\n }\n yield* operationMethods(ctx, `Opts the user into an existing instance of the ${app.name} smart contract`, app.optInMethods, 'optIn', type)\n yield* operationMethods(\n ctx,\n `Makes a close out call to an existing instance of the ${app.name} smart contract`,\n app.closeOutMethods,\n 'closeOut',\n type,\n )\n}\n\nfunction* bareMethodCall({\n generator: { app },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete' | 'clearState' | 'call'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete =\n verb === 'create' ? app.bareMethod.createActions.inputType : verb === 'call' ? app.bareMethod.callActions.inputType : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (raw) call`,\n },\n returns: `The ${verb} result`,\n })\n yield `${name}: (params?: Expand<AppClientBareCallParams${includeCompilation ? ' & AppClientCompilationParams' : ''}${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}>) => {`\n yield* indent(`return this.appClient.${type}.bare.${verb}(params)`)\n yield '},'\n}\n\nfunction* abiMethodCall({\n generator: { sanitizer, name },\n method,\n description,\n verb,\n type,\n includeCompilation,\n readonly,\n}: {\n generator: GeneratorContext\n method: AbiMethodClientContext\n description: string\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete' | 'call'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n readonly?: boolean\n}) {\n const methodSig = method.signature\n const uniqueName = method.uniqueName.original\n const onComplete = verb === 'create' ? method.createActions.inputType : method.callActions.inputType\n yield* jsDoc({\n description:\n verb === 'call' && method.readonly\n ? [\n `${description} using the \\`${methodSig}\\` ABI method.`,\n '',\n 'This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.',\n ]\n : `${description} using the \\`${methodSig}\\` ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${!readonly ? `${methodName}: ` : ''}${type === 'send' ? 'async ' : ''}${readonly ? `${methodName}` : ''}(params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${\n includeCompilation ? ' &' + ' AppClientCompilationParams' : ''\n }${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' && !readonly ? ' & SendParams' : ''}${onComplete?.typeLiteral && !readonly ? ` & ${onComplete.typeLiteral}` : ''}${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''})${!readonly ? ' =>' : ''} {`\n if (type === 'send') {\n yield* indent(\n `const result = await this.appClient.${type}.${verb}(${name}ParamsFactory${verb !== 'call' ? `.${verb}` : ''}${methodNameAccessor}(params))`,\n readonly\n ? `return result.return as unknown as ${name}Returns['${methodSigSafe}']`\n : `return {...result, return: result.return as unknown as (undefined | ${name}Returns['${methodSigSafe}'])}`,\n )\n } else {\n yield* indent(\n `return this.appClient.${type}.${verb}(${name}ParamsFactory${verb !== 'call' ? `.${verb}` : ''}${methodNameAccessor}(params))`,\n )\n }\n yield `}${!readonly ? ',' : ''}`\n yield NewLine\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: AppClientMethodContext[],\n verb: 'create' | 'update' | 'optIn' | 'closeOut' | 'delete',\n type: 'params' | 'createTransaction' | 'send',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `${verb}: {`\n yield IncIndent\n for (const method of methods) {\n if (!isAbiMethod(method)) {\n yield* bareMethodCall({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type,\n includeCompilation,\n })\n } else {\n yield* abiMethodCall({\n generator,\n method,\n description,\n verb,\n type,\n includeCompilation,\n })\n }\n }\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* clearState(generator: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n yield* bareMethodCall({\n generator,\n name: 'clearState',\n description: `Makes a clear_state call to an existing instance of the ${generator.app.name} smart contract`,\n verb: 'clearState',\n type,\n })\n yield NewLine\n}\n\nfunction* call(generator: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n if (generator.app.bareMethod.callActions.noOp) {\n yield* bareMethodCall({\n generator,\n name: 'bare',\n description: `Makes a call to the ${generator.app.name} smart contract using a bare call`,\n verb: 'call',\n type,\n })\n yield NewLine\n }\n}\n\nfunction* readonlyMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n for (const method of app.abiMethods) {\n // Skip non readonly methods\n if (!method.readonly) continue\n\n yield* abiMethodCall({\n generator,\n description: `Makes a readonly (simulated) call to the ${generator.app.name} smart contract`,\n method,\n verb: 'call',\n type: 'send',\n includeCompilation: false,\n readonly: true,\n })\n }\n}\n\nfunction* noopMethods(generator: GeneratorContext, type: 'params' | 'createTransaction' | 'send'): DocumentParts {\n const { app } = generator\n for (const method of app.noOpMethods) {\n if (!isAbiMethod(method)) continue\n yield* abiMethodCall({\n generator,\n description: `Makes a call to the ${generator.app.name} smart contract`,\n method,\n verb: 'call',\n type,\n includeCompilation: false,\n })\n }\n}\n\nfunction* getStateMethods({ app, sanitizer }: GeneratorContext): DocumentParts {\n if (Object.keys(app.state).length === 0) return\n\n yield* jsDoc(`Methods to access state for the current ${app.name} app`)\n yield 'state = {'\n yield IncIndent\n\n const storageTypes = ['global', 'local', 'box'] as const\n\n for (const storageType of storageTypes) {\n const hasKeys = Object.keys(app.state.keys[storageType]).length > 0\n const hasMaps = Object.keys(app.state.maps[storageType]).length > 0\n if (!hasKeys && !hasMaps) continue\n\n yield* jsDoc(`Methods to access ${storageType} state for the current ${app.name} app`)\n yield `${storageType}${storageType === 'local' ? ': (address: string | Address) => {' : ': {'}`\n yield IncIndent\n if (storageType === 'local') {\n yield \"const encodedAddress = typeof address === 'string' ? address : encodeAddress(address.publicKey)\"\n yield 'return {'\n yield IncIndent\n }\n\n yield* jsDoc(`Get all current keyed values from ${storageType} state`)\n yield `getAll: async (): Promise<Partial<Expand<${storageType[0].toUpperCase()}${storageType.substring(1)}KeysState>>> => {`\n yield* indent(\n `const result = await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getAll()`,\n `return {`,\n ...Object.keys(app.state.keys[storageType]).map((n) => {\n return ` ${sanitizer.makeSafePropertyIdentifier(n)}: ${app.state.keys[storageType][n].valueType.isAvmBytes ? `new BinaryStateValue(result${sanitizer.getSafeMemberAccessor(n)})` : `result${sanitizer.getSafeMemberAccessor(n)}`},`\n }),\n `}`,\n )\n yield `},`\n\n for (const n of Object.keys(app.state.keys[storageType])) {\n const name = sanitizer.makeSafePropertyIdentifier(n)\n const k = app.state.keys[storageType][n]\n yield* jsDoc(`Get the current value of the ${n} key in ${storageType} state`)\n yield `${name}: async (): Promise<${k.valueType.isAvmBytes ? 'BinaryState' : `${k.valueType.tsOutType} | undefined`}> => { return ${k.valueType.isAvmBytes ? 'new BinaryStateValue(' : ''}(await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getValue(\"${sanitizer.makeSafeStringTypeLiteral(n)}\"))${k.valueType.isAvmBytes ? ' as Uint8Array | undefined)' : ` as ${k.valueType.tsOutType} | undefined`} },`\n }\n\n for (const n of Object.keys(app.state.maps[storageType])) {\n const name = sanitizer.makeSafePropertyIdentifier(app.state.keys[storageType][n] ? `${n}Map` : n)\n const m = app.state.maps[storageType][n]\n yield* jsDoc(`Get values from the ${n} map in ${storageType} state`)\n yield `${name}: {`\n yield IncIndent\n\n yield* jsDoc(`Get all current values of the ${n} map in ${storageType} state`)\n yield `getMap: async (): Promise<Map<${m.keyType.tsOutType}, ${m.valueType.tsOutType}>> => { return (await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getMap(\"${sanitizer.makeSafeStringTypeLiteral(n)}\")) as Map<${m.keyType.tsOutType}, ${m.valueType.tsOutType}> },`\n\n yield* jsDoc(`Get a current value of the ${n} map by key from ${storageType} state`)\n yield `value: async (key: ${m.keyType.tsInType}): Promise<${m.valueType.tsOutType} | undefined> => { return await this.appClient.state.${storageType}${storageType === 'local' ? '(encodedAddress)' : ''}.getMapValue(\"${sanitizer.makeSafeStringTypeLiteral(n)}\", key) as ${m.valueType.tsOutType} | undefined },`\n\n yield DecIndent\n yield `},`\n }\n\n yield DecIndent\n if (storageType === 'local') {\n yield '}'\n yield DecIndent\n }\n yield '},'\n }\n\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* cloneMethod({ app }: GeneratorContext): DocumentParts {\n yield* jsDoc({\n description: 'Clone this app client with different params',\n params: {\n params:\n 'The params to use for the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value.',\n },\n returns: 'A new app client with the altered params',\n })\n yield `public clone(params: CloneAppClientParams) {`\n yield IncIndent\n yield `return new ${app.name.makeSafeTypeIdentifier}Client(this.appClient.clone(params))`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-factory.js","sources":["../../src/client/app-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\n\nimport { GeneratorContext } from './generator-context'\n\nimport { AppClientMethodContext, AbiMethodClientContext, isAbiMethod } from './app-client-context'\n\nexport function* appFactory(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(\n `A factory to create and deploy one or more instance of the ${app.name} smart contract and to create one or more app clients to interact with those (or other) app instances`,\n )\n yield `export class ${name}Factory {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppFactory\\` for when you want to have more flexibility`)\n yield 'public readonly appFactory: _AppFactory'\n yield NewLine\n\n yield* jsDoc({\n description: `Creates a new instance of \\`${name}Factory\\``,\n params: {\n params: 'The parameters to initialise the app factory with',\n },\n })\n\n yield `\n constructor(params: Omit<AppFactoryParams, 'appSpec'>) {\n this.appFactory = new _AppFactory({\n ...params,\n appSpec: APP_SPEC,\n })\n }\n\n /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */\n public get appName() {\n return this.appFactory.appName\n }\n\n /** The ARC-56 app spec being used */\n get appSpec() {\n return APP_SPEC\n }\n\n /** A reference to the underlying \\`AlgorandClient\\` this app factory is using. */\n public get algorand(): AlgorandClient {\n return this.appFactory.algorand\n }\n\n /**\n * Returns a new \\`AppClient\\` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public getAppClientById(params: AppFactoryAppClientParams) {\n return new ${name}Client(this.appFactory.getAppClientById(params))\n }\n\n /**\n * Returns a new \\`AppClient\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public async getAppClientByCreatorAndName(\n params: AppFactoryResolveAppClientByCreatorAndNameParams,\n ) {\n return new ${name}Client(await this.appFactory.getAppClientByCreatorAndName(params))\n }\n `\n\n yield* deployMethod(ctx)\n yield* params(ctx)\n yield* createTransaction(ctx)\n yield* send(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(\n `Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`,\n )\n yield `readonly params = {`\n yield IncIndent\n yield* paramMethods(ctx)\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* createTransaction(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Create transactions for the current app`)\n yield `readonly createTransaction = {`\n yield IncIndent\n yield* createTransactionMethods(ctx)\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = {`\n yield IncIndent\n yield* createMethods(ctx)\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* createMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n if (app.createMethods.length) {\n yield* jsDoc(`Gets available create methods`)\n yield `create: {`\n yield IncIndent\n for (const method of generator.app.createMethods) {\n if (!isAbiMethod(method)) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `Creates a new instance of the ${app.name} smart contract using a bare call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n } else {\n yield* abiMethodCallParams({\n generator,\n method,\n description: `Creates a new instance of the ${app.name} smart contract using an ABI method call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n }\n }\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* paramMethods(ctx: GeneratorContext): DocumentParts {\n const { app } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, app.createMethods, 'create', 'params', true)\n\n yield* operationMethods(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n app.updateMethods,\n 'deployUpdate',\n 'params',\n true,\n )\n yield* operationMethods(\n ctx,\n `Deletes an existing instance of the ${app.name} smart contract`,\n app.deleteMethods,\n 'deployDelete',\n 'params',\n )\n}\n\nfunction* createTransactionMethods(ctx: GeneratorContext): DocumentParts {\n const { app } = ctx\n\n yield* operationMethods(\n ctx,\n `Creates a new instance of the ${app.name} smart contract`,\n app.createMethods,\n 'create',\n 'createTransaction',\n true,\n )\n}\n\nfunction* bareMethodCallParams({\n generator: { app, name: clientName },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete = verb === 'create' ? app.bareMethod.createActions.inputType : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (raw) call`,\n },\n returns:\n type === 'params' || type === 'createTransaction'\n ? `The ${type === 'createTransaction' ? 'transaction' : type} for a ${verb} call`\n : `The ${verb} result`,\n })\n yield `${name}: ${type === 'send' ? 'async ' : ''}(params?: Expand<AppClientBareCallParams${\n includeCompilation ? ' &' + ' AppClientCompilationParams' : ''\n }${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}>) => {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(`return this.appFactory.${type}.bare.${verb}(params)`)\n } else {\n yield* indent(\n `const result = await this.appFactory.send.bare.create(params)`,\n `return { result: result.result, appClient: new ${clientName}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* abiMethodCallParams({\n generator: { name, sanitizer },\n method,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n method: AbiMethodClientContext\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}) {\n const methodSig = method.signature\n const uniqueName = method.uniqueName.original\n const onComplete = verb === 'create' ? method.createActions.inputType : undefined\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${methodName}: ${type === 'send' ? 'async ' : ''}(params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${\n includeCompilation ? ' &' + ' AppClientCompilationParams' : ''\n }${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) => {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(\n `return this.appFactory.${type}.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`,\n )\n } else {\n yield* indent(\n `const result = await this.appFactory.send.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`,\n `return { result: { ...result.result, return: result.result.return as unknown as (undefined | ${name}Returns['${methodSigSafe}']) }, appClient: new ${name}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: AppClientMethodContext[],\n verb: 'create' | 'deployUpdate' | 'deployDelete',\n type: 'params' | 'createTransaction',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `${verb}: {`\n yield IncIndent\n for (const method of methods) {\n if (!isAbiMethod(method)) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type,\n includeCompilation,\n })\n } else {\n yield* abiMethodCallParams({\n generator,\n method,\n description,\n verb,\n type,\n includeCompilation,\n })\n }\n }\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* deployMethod(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n yield* jsDoc({\n description: `Idempotently deploys the ${app.name} smart contract.`,\n params: {\n params: 'The arguments for the contract calls and any additional parameters for the call',\n },\n returns: 'The deployment result',\n })\n yield `public async deploy(params: ${name}DeployParams = {}) {`\n yield IncIndent\n\n yield `const result = await this.appFactory.deploy({`\n yield IncIndent\n yield `...params,`\n if (app.createMethods.some((m) => !m.isBare)) {\n yield `createParams: params.createParams?.method ? ${name}ParamsFactory.create._resolveByMethod(params.createParams) : params.createParams ? params.createParams as (${name}CreateCallParams & { args: Uint8Array[] }) : undefined,`\n }\n if (app.updateMethods.some((m) => !m.isBare)) {\n yield `updateParams: params.updateParams?.method ? ${name}ParamsFactory.update._resolveByMethod(params.updateParams) : params.updateParams ? params.updateParams as (${name}UpdateCallParams & { args: Uint8Array[] }) : undefined,`\n }\n if (app.deleteMethods.some((m) => !m.isBare)) {\n yield `deleteParams: params.deleteParams?.method ? ${name}ParamsFactory.delete._resolveByMethod(params.deleteParams) : params.deleteParams ? params.deleteParams as (${name}DeleteCallParams & { args: Uint8Array[] }) : undefined,`\n }\n yield DecIndent\n yield `})`\n yield `return { result: result.result, appClient: new ${name}Client(result.appClient) }`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":["jsDoc","IncIndent","NewLine","DecIndentAndCloseBlock","isAbiMethod","DecIndent","indent"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-factory.mjs","sources":["../../src/client/app-factory.ts"],"sourcesContent":["import { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, jsDoc, NewLine } from '../output/writer'\n\nimport { GeneratorContext } from './generator-context'\n\nimport { AppClientMethodContext, AbiMethodClientContext, isAbiMethod } from './app-client-context'\n\nexport function* appFactory(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n\n yield* jsDoc(\n `A factory to create and deploy one or more instance of the ${app.name} smart contract and to create one or more app clients to interact with those (or other) app instances`,\n )\n yield `export class ${name}Factory {`\n yield IncIndent\n yield* jsDoc(`The underlying \\`AppFactory\\` for when you want to have more flexibility`)\n yield 'public readonly appFactory: _AppFactory'\n yield NewLine\n\n yield* jsDoc({\n description: `Creates a new instance of \\`${name}Factory\\``,\n params: {\n params: 'The parameters to initialise the app factory with',\n },\n })\n\n yield `\n constructor(params: Omit<AppFactoryParams, 'appSpec'>) {\n this.appFactory = new _AppFactory({\n ...params,\n appSpec: APP_SPEC,\n })\n }\n\n /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */\n public get appName() {\n return this.appFactory.appName\n }\n\n /** The ARC-56 app spec being used */\n get appSpec() {\n return APP_SPEC\n }\n\n /** A reference to the underlying \\`AlgorandClient\\` this app factory is using. */\n public get algorand(): AlgorandClient {\n return this.appFactory.algorand\n }\n\n /**\n * Returns a new \\`AppClient\\` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public getAppClientById(params: AppFactoryAppClientParams) {\n return new ${name}Client(this.appFactory.getAppClientById(params))\n }\n\n /**\n * Returns a new \\`AppClient\\` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The \\`AppClient\\`\n */\n public async getAppClientByCreatorAndName(\n params: AppFactoryResolveAppClientByCreatorAndNameParams,\n ) {\n return new ${name}Client(await this.appFactory.getAppClientByCreatorAndName(params))\n }\n `\n\n yield* deployMethod(ctx)\n yield* params(ctx)\n yield* createTransaction(ctx)\n yield* send(ctx)\n yield DecIndentAndCloseBlock\n}\n\nfunction* params(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(\n `Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.`,\n )\n yield `readonly params = {`\n yield IncIndent\n yield* paramMethods(ctx)\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* createTransaction(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Create transactions for the current app`)\n yield `readonly createTransaction = {`\n yield IncIndent\n yield* createTransactionMethods(ctx)\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* send(ctx: GeneratorContext): DocumentParts {\n yield* jsDoc(`Send calls to the current app`)\n yield `readonly send = {`\n yield IncIndent\n yield* createMethods(ctx)\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* createMethods(generator: GeneratorContext): DocumentParts {\n const { app } = generator\n if (app.createMethods.length) {\n yield* jsDoc(`Gets available create methods`)\n yield `create: {`\n yield IncIndent\n for (const method of generator.app.createMethods) {\n if (!isAbiMethod(method)) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `Creates a new instance of the ${app.name} smart contract using a bare call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n } else {\n yield* abiMethodCallParams({\n generator,\n method,\n description: `Creates a new instance of the ${app.name} smart contract using an ABI method call`,\n verb: 'create',\n type: 'send',\n includeCompilation: true,\n })\n }\n }\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* paramMethods(ctx: GeneratorContext): DocumentParts {\n const { app } = ctx\n\n yield* operationMethods(ctx, `Creates a new instance of the ${app.name} smart contract`, app.createMethods, 'create', 'params', true)\n\n yield* operationMethods(\n ctx,\n `Updates an existing instance of the ${app.name} smart contract`,\n app.updateMethods,\n 'deployUpdate',\n 'params',\n true,\n )\n yield* operationMethods(\n ctx,\n `Deletes an existing instance of the ${app.name} smart contract`,\n app.deleteMethods,\n 'deployDelete',\n 'params',\n )\n}\n\nfunction* createTransactionMethods(ctx: GeneratorContext): DocumentParts {\n const { app } = ctx\n\n yield* operationMethods(\n ctx,\n `Creates a new instance of the ${app.name} smart contract`,\n app.createMethods,\n 'create',\n 'createTransaction',\n true,\n )\n}\n\nfunction* bareMethodCallParams({\n generator: { app, name: clientName },\n name,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n name: string\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}): DocumentParts {\n const onComplete = verb === 'create' ? app.bareMethod.createActions.inputType : undefined\n yield* jsDoc({\n description: `${description}.`,\n params: {\n params: `The params for the bare (raw) call`,\n },\n returns:\n type === 'params' || type === 'createTransaction'\n ? `The ${type === 'createTransaction' ? 'transaction' : type} for a ${verb} call`\n : `The ${verb} result`,\n })\n yield `${name}: ${type === 'send' ? 'async ' : ''}(params?: Expand<AppClientBareCallParams${\n includeCompilation ? ' &' + ' AppClientCompilationParams' : ''\n }${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}>) => {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(`return this.appFactory.${type}.bare.${verb}(params)`)\n } else {\n yield* indent(\n `const result = await this.appFactory.send.bare.create(params)`,\n `return { result: result.result, appClient: new ${clientName}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* abiMethodCallParams({\n generator: { name, sanitizer },\n method,\n description,\n verb,\n type,\n includeCompilation,\n}: {\n generator: GeneratorContext\n method: AbiMethodClientContext\n description: string\n verb: 'create' | 'deployUpdate' | 'deployDelete'\n type: 'params' | 'createTransaction' | 'send'\n includeCompilation?: boolean\n}) {\n const methodSig = method.signature\n const uniqueName = method.uniqueName.original\n const onComplete = verb === 'create' ? method.createActions.inputType : undefined\n yield* jsDoc({\n description: `${description} using the ${methodSig} ABI method.`,\n abiDescription: method?.desc,\n params: {\n params: `The params for the smart contract call`,\n },\n returns: `The ${verb} ${type === 'params' ? 'params' : type === 'createTransaction' ? 'transaction' : 'result'}${method?.returns?.desc ? `: ${method.returns.desc}` : ''}`,\n })\n const methodName = sanitizer.makeSafeMethodIdentifier(uniqueName)\n const methodNameAccessor = sanitizer.getSafeMemberAccessor(methodName)\n const methodSigSafe = sanitizer.makeSafeStringTypeLiteral(methodSig)\n yield `${methodName}: ${type === 'send' ? 'async ' : ''}(params: CallParams<${name}Args['obj']['${methodSigSafe}'] | ${name}Args['tuple']['${methodSigSafe}']>${\n includeCompilation ? ' &' + ' AppClientCompilationParams' : ''\n }${\n verb === 'create' ? ' & CreateSchema' : ''\n }${type === 'send' ? ' & SendParams' : ''}${onComplete?.typeLiteral ? ` & ${onComplete.typeLiteral}` : ''}${onComplete?.isOptional !== false && (method.args.length === 0 || !method.args.some((a) => !a.defaultValue)) ? ` = {args: [${method.args.map((_) => 'undefined').join(', ')}]}` : ''}) => {`\n if (type === 'params' || type === 'createTransaction') {\n yield* indent(\n `return this.appFactory.${type}.${verb}(${name}ParamsFactory.${verb == 'deployDelete' ? 'delete' : verb === 'deployUpdate' ? 'update' : verb}${methodNameAccessor}(params))`,\n )\n } else {\n yield* indent(\n `const result = await this.appFactory.send.create(${name}ParamsFactory.${verb}${methodNameAccessor}(params))`,\n `return { result: { ...result.result, return: result.result.return as unknown as (undefined | ${name}Returns['${methodSigSafe}']) }, appClient: new ${name}Client(result.appClient) }`,\n )\n }\n yield '},'\n}\n\nfunction* operationMethods(\n generator: GeneratorContext,\n description: string,\n methods: AppClientMethodContext[],\n verb: 'create' | 'deployUpdate' | 'deployDelete',\n type: 'params' | 'createTransaction',\n includeCompilation?: boolean,\n): DocumentParts {\n if (methods.length) {\n yield* jsDoc(`Gets available ${verb} methods`)\n yield `${verb}: {`\n yield IncIndent\n for (const method of methods) {\n if (!isAbiMethod(method)) {\n yield* bareMethodCallParams({\n generator,\n name: 'bare',\n description: `${description} using a bare call`,\n verb,\n type,\n includeCompilation,\n })\n } else {\n yield* abiMethodCallParams({\n generator,\n method,\n description,\n verb,\n type,\n includeCompilation,\n })\n }\n }\n yield DecIndent\n yield '},'\n yield NewLine\n }\n}\n\nfunction* deployMethod(ctx: GeneratorContext): DocumentParts {\n const { app, name } = ctx\n yield* jsDoc({\n description: `Idempotently deploys the ${app.name} smart contract.`,\n params: {\n params: 'The arguments for the contract calls and any additional parameters for the call',\n },\n returns: 'The deployment result',\n })\n yield `public async deploy(params: ${name}DeployParams = {}) {`\n yield IncIndent\n\n yield `const result = await this.appFactory.deploy({`\n yield IncIndent\n yield `...params,`\n if (app.createMethods.some((m) => !m.isBare)) {\n yield `createParams: params.createParams?.method ? ${name}ParamsFactory.create._resolveByMethod(params.createParams) : params.createParams ? params.createParams as (${name}CreateCallParams & { args: Uint8Array[] }) : undefined,`\n }\n if (app.updateMethods.some((m) => !m.isBare)) {\n yield `updateParams: params.updateParams?.method ? ${name}ParamsFactory.update._resolveByMethod(params.updateParams) : params.updateParams ? params.updateParams as (${name}UpdateCallParams & { args: Uint8Array[] }) : undefined,`\n }\n if (app.deleteMethods.some((m) => !m.isBare)) {\n yield `deleteParams: params.deleteParams?.method ? ${name}ParamsFactory.delete._resolveByMethod(params.deleteParams) : params.deleteParams ? params.deleteParams as (${name}DeleteCallParams & { args: Uint8Array[] }) : undefined,`\n }\n yield DecIndent\n yield `})`\n yield `return { result: result.result, appClient: new ${name}Client(result.appClient) }`\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -174,6 +174,13 @@ function* structTypes(ctx) {
|
|
|
174
174
|
// Emit the struct type
|
|
175
175
|
yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${structCtx.tsObjDef}`;
|
|
176
176
|
yield writer.NewLine;
|
|
177
|
+
// Emit method that converts ABI tuple to the struct object
|
|
178
|
+
yield* writer.jsDoc(`Converts the ABI tuple representation of a ${structName} to the struct representation`);
|
|
179
|
+
yield* writer.inline(`export function ${sanitizer.makeSafeTypeIdentifier(structName)}FromTuple(`, `abiTuple: ${structCtx.tsTupDef}`, `) {`);
|
|
180
|
+
yield* writer.indent(`const abiStructType = ABIStructType.fromStruct('${structName}', APP_SPEC.structs)`);
|
|
181
|
+
yield* writer.indent(`return getStructValueFromTupleValue(abiStructType, abiTuple) as ${sanitizer.makeSafeTypeIdentifier(structName)}`);
|
|
182
|
+
yield '}';
|
|
183
|
+
yield writer.NewLine;
|
|
177
184
|
}
|
|
178
185
|
}
|
|
179
186
|
function* templateVariableTypes(ctx) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-types.js","sources":["../../src/client/app-types.ts"],"sourcesContent":["import { GeneratorContext } from './generator-context'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, inline, jsDoc, NewLine } from '../output/writer'\nimport { argTypeIsTransaction, ABITransactionType } from '@algorandfoundation/algokit-utils/abi'\nimport { Sanitizer } from '../util/sanitization'\nimport { Expand } from '@algorandfoundation/algokit-utils/types/expand'\nimport { containsNonVoidMethod } from './helpers/contains-non-void-method'\nimport { AbiMethodClientContext, StorageKeyContext, StorageMapContext } from './app-client-context'\n\nfunction getMethodMetadata(method: AbiMethodClientContext) {\n const methodSig = method.signature\n const uniqueName = method.uniqueName.original\n\n let hasAppCallArgToTheRight = false\n const argsMeta = new Array<Expand<Omit<(typeof method.args)[0], 'name'> & { name: string; isOptional: boolean; tsType: string }>>()\n\n for (let i = (method.args ?? []).length - 1; i >= 0; i--) {\n const arg = method.args[i]\n\n argsMeta.push({\n ...arg,\n name: arg.name?.original ?? `arg${i + 1}`,\n isOptional: !!arg.defaultValue || (hasAppCallArgToTheRight && argTypeIsTransaction(arg.type)),\n tsType: arg.tsInType,\n })\n\n if (\n !hasAppCallArgToTheRight &&\n argTypeIsTransaction(arg.type) &&\n [ABITransactionType.AppCall, ABITransactionType.Txn].includes(arg.type)\n ) {\n hasAppCallArgToTheRight = true\n }\n }\n argsMeta.reverse()\n\n return { methodSig, uniqueName, argsMeta }\n}\n\nexport function* appTypes(ctx: GeneratorContext): DocumentParts {\n yield* structTypes(ctx)\n yield* templateVariableTypes(ctx)\n\n const { app, name } = ctx\n\n yield* jsDoc(`The argument types for the ${name} contract`)\n yield `export type ${name}Args = {`\n yield IncIndent\n yield* jsDoc('The object representation of the arguments for each method')\n yield 'obj: {'\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig, argsMeta } = getMethodMetadata(method)\n if (argsMeta.length) {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': {`\n yield IncIndent\n for (const arg of argsMeta) {\n if (arg.desc) yield* jsDoc(arg.desc)\n yield `${ctx.sanitizer.makeSafePropertyIdentifier(arg.name)}${arg.isOptional ? '?' : ''}: ${arg.tsType}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': Record<string, never>`\n }\n }\n yield DecIndentAndCloseBlock\n\n yield* jsDoc('The tuple representation of the arguments for each method')\n yield 'tuple: {'\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig, argsMeta } = getMethodMetadata(method)\n yield* inline(\n `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': [`,\n argsMeta\n .map((arg) => `${ctx.sanitizer.makeSafeVariableIdentifier(arg.name)}: ${arg.tsType}${arg.isOptional ? ' | undefined' : ''}`)\n .join(', '),\n ']',\n )\n }\n yield DecIndentAndCloseBlock\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc('The return type for each method')\n yield `export type ${name}Returns = {`\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig } = getMethodMetadata(method)\n yield* inline(`'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': ${method.returns.tsOutType}`)\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc(`Defines the types of available calls and state of the ${name} smart contract.`)\n yield `export type ${name}Types = {`\n yield IncIndent\n yield* jsDoc('Maps method signatures / names to their argument and return types.')\n if (app.abiMethods.length == 0) {\n yield 'methods: {}'\n } else {\n yield 'methods:'\n }\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig } = getMethodMetadata(method)\n yield `& Record<'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}'${method.baseNameIsUnique ? ` | '${method.name.makeSafeStringTypeLiteral}'` : ''}, {`\n yield IncIndent\n yield `argsObj: ${name}Args['obj']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n yield `argsTuple: ${name}Args['tuple']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n if (method.returns.desc) yield* jsDoc(method.returns.desc)\n yield `returns: ${name}Returns['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n yield DecIndent\n yield '}>'\n }\n yield DecIndent\n\n const hasLocal =\n (app.state.keys.local && Object.keys(app.state.keys.local).length > 0) ||\n (app.state.maps.local && Object.keys(app.state.maps.local).length > 0)\n const hasGlobal =\n (app.state.keys.global && Object.keys(app.state.keys.global).length > 0) ||\n (app.state.maps.global && Object.keys(app.state.maps.global).length > 0)\n const hasBox =\n (app.state.keys.box && Object.keys(app.state.keys.box).length > 0) || (app.state.maps.box && Object.keys(app.state.maps.box).length > 0)\n yield* appState(ctx, { hasBox, hasGlobal, hasLocal })\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* inline(`\n /**\n * Defines the possible abi call signatures.\n */\n export type ${name}Signatures = keyof ${name}Types['methods']`)\n\n if (containsNonVoidMethod(app.methods)) {\n yield* inline(`\n /**\n * Defines the possible abi call signatures for methods that return a non-void value.\n */\n export type ${name}NonVoidMethodSignatures = keyof ${name}Types['methods'] extends infer T ? T extends keyof ${name}Types['methods'] ? MethodReturn<T> extends void ? never : T : never : never`)\n }\n\n yield `\n /**\n * Defines an object containing all relevant parameters for a single call to the contract.\n */\n export type CallParams<TArgs> = Expand<\n Omit<AppClientMethodCallParams, 'method' | 'args' | 'onComplete'> &\n {\n /** The args for the ABI method call, either as an ordered array or an object */\n args: Expand<TArgs>\n }\n >\n /**\n * Maps a method signature from the ${name} smart contract to the method's arguments in either tuple or struct form\n */\n export type MethodArgs<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['argsObj' | 'argsTuple']\n /**\n * Maps a method signature from the ${name} smart contract to the method's return type\n */\n export type MethodReturn<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['returns']\n `\n\n if (hasGlobal) {\n yield `\n /**\n * Defines the shape of the keyed global state of the application.\n */\n export type GlobalKeysState = ${name}Types['state']['global']['keys']\n `\n }\n\n if (hasLocal) {\n yield `\n /**\n * Defines the shape of the keyed local state of the application.\n */\n export type LocalKeysState = ${name}Types['state']['local']['keys']\n `\n }\n\n if (hasBox) {\n yield `\n /**\n * Defines the shape of the keyed box state of the application.\n */\n export type BoxKeysState = ${name}Types['state']['box']['keys']\n `\n }\n\n yield NewLine\n}\n\nfunction* structTypes(ctx: GeneratorContext): DocumentParts {\n const { app, sanitizer } = ctx\n if (Object.keys(app.structs).length === 0) return\n\n yield '// Type definitions for ARC-56 structs'\n yield NewLine\n\n for (const [structName, structCtx] of Object.entries(app.structs)) {\n // Emit the struct type\n yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${structCtx.tsObjDef}`\n yield NewLine\n\n // Emit method that converts ABI tuple to the struct object\n yield* jsDoc(`Converts the ABI tuple representation of a ${structName} to the struct representation`)\n yield* inline(`export function ${sanitizer.makeSafeTypeIdentifier(structName)}FromTuple(`, `abiTuple: ${structCtx.tsTupDef}`, `) {`)\n yield* indent(`const abiStructType = ABIStructType.fromStruct('${structName}', APP_SPEC.structs)`)\n yield* indent(`return getStructValueFromTupleValue(abiStructType, abiTuple) as ${sanitizer.makeSafeTypeIdentifier(structName)}`)\n yield '}'\n yield NewLine\n }\n}\n\nfunction* templateVariableTypes(ctx: GeneratorContext): DocumentParts {\n if (Object.keys(ctx.app.templateVariables ?? {}).length === 0) {\n return\n }\n\n yield* jsDoc('Deploy-time template variables')\n yield 'export type TemplateVariables = {'\n yield IncIndent\n\n for (const [name, def] of Object.entries(ctx.app.templateVariables ?? {})) {\n yield `${name}: ${def.type.tsInType},`\n }\n\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* keysAndMaps(\n sanitizer: Sanitizer,\n keys: {\n [name: string]: StorageKeyContext\n },\n maps: {\n [name: string]: StorageMapContext\n },\n): DocumentParts {\n if (keys && Object.keys(keys).length) {\n yield 'keys: {'\n yield IncIndent\n for (const [name, prop] of Object.entries(keys)) {\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n prop.valueType\n yield `${keySafe}: ${prop.valueType.isAvmBytes ? 'BinaryState' : prop.valueType.tsOutType}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'keys: {}'\n }\n\n if (maps && Object.keys(maps).length) {\n yield 'maps: {'\n yield IncIndent\n for (const name of Object.keys(maps)) {\n const prop = maps[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: Map<${prop.keyType.tsInType}, ${prop.valueType.tsOutType}>`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'maps: {}'\n }\n}\n\nfunction* appState(\n { app, sanitizer }: GeneratorContext,\n stateFlags: { hasLocal: boolean; hasGlobal: boolean; hasBox: boolean },\n): DocumentParts {\n const { hasBox, hasGlobal, hasLocal } = stateFlags\n\n if (hasLocal || hasGlobal || hasBox) {\n yield* jsDoc('Defines the shape of the state of the application.')\n yield 'state: {'\n yield IncIndent\n if (hasGlobal) {\n yield 'global: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.global, app.state.maps.global)\n yield DecIndentAndCloseBlock\n }\n if (hasLocal) {\n yield 'local: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.local, app.state.maps.local)\n yield DecIndentAndCloseBlock\n }\n if (hasBox) {\n yield 'box: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.box, app.state.maps.box)\n yield DecIndentAndCloseBlock\n }\n yield DecIndentAndCloseBlock\n }\n}\n"],"names":["argTypeIsTransaction","ABITransactionType","jsDoc","IncIndent","DecIndentAndCloseBlock","inline","NewLine","DecIndent","containsNonVoidMethod","indent"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsDoc, IncIndent, DecIndentAndCloseBlock, inline, NewLine, DecIndent } from '../output/writer.mjs';
|
|
1
|
+
import { jsDoc, IncIndent, DecIndentAndCloseBlock, inline, NewLine, DecIndent, indent } from '../output/writer.mjs';
|
|
2
2
|
import { argTypeIsTransaction, ABITransactionType } from '@algorandfoundation/algokit-utils/abi';
|
|
3
3
|
import { containsNonVoidMethod } from './helpers/contains-non-void-method.mjs';
|
|
4
4
|
|
|
@@ -172,6 +172,13 @@ function* structTypes(ctx) {
|
|
|
172
172
|
// Emit the struct type
|
|
173
173
|
yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${structCtx.tsObjDef}`;
|
|
174
174
|
yield NewLine;
|
|
175
|
+
// Emit method that converts ABI tuple to the struct object
|
|
176
|
+
yield* jsDoc(`Converts the ABI tuple representation of a ${structName} to the struct representation`);
|
|
177
|
+
yield* inline(`export function ${sanitizer.makeSafeTypeIdentifier(structName)}FromTuple(`, `abiTuple: ${structCtx.tsTupDef}`, `) {`);
|
|
178
|
+
yield* indent(`const abiStructType = ABIStructType.fromStruct('${structName}', APP_SPEC.structs)`);
|
|
179
|
+
yield* indent(`return getStructValueFromTupleValue(abiStructType, abiTuple) as ${sanitizer.makeSafeTypeIdentifier(structName)}`);
|
|
180
|
+
yield '}';
|
|
181
|
+
yield NewLine;
|
|
175
182
|
}
|
|
176
183
|
}
|
|
177
184
|
function* templateVariableTypes(ctx) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-types.mjs","sources":["../../src/client/app-types.ts"],"sourcesContent":["import { GeneratorContext } from './generator-context'\nimport { DecIndent, DecIndentAndCloseBlock, DocumentParts, IncIndent, indent, inline, jsDoc, NewLine } from '../output/writer'\nimport { argTypeIsTransaction, ABITransactionType } from '@algorandfoundation/algokit-utils/abi'\nimport { Sanitizer } from '../util/sanitization'\nimport { Expand } from '@algorandfoundation/algokit-utils/types/expand'\nimport { containsNonVoidMethod } from './helpers/contains-non-void-method'\nimport { AbiMethodClientContext, StorageKeyContext, StorageMapContext } from './app-client-context'\n\nfunction getMethodMetadata(method: AbiMethodClientContext) {\n const methodSig = method.signature\n const uniqueName = method.uniqueName.original\n\n let hasAppCallArgToTheRight = false\n const argsMeta = new Array<Expand<Omit<(typeof method.args)[0], 'name'> & { name: string; isOptional: boolean; tsType: string }>>()\n\n for (let i = (method.args ?? []).length - 1; i >= 0; i--) {\n const arg = method.args[i]\n\n argsMeta.push({\n ...arg,\n name: arg.name?.original ?? `arg${i + 1}`,\n isOptional: !!arg.defaultValue || (hasAppCallArgToTheRight && argTypeIsTransaction(arg.type)),\n tsType: arg.tsInType,\n })\n\n if (\n !hasAppCallArgToTheRight &&\n argTypeIsTransaction(arg.type) &&\n [ABITransactionType.AppCall, ABITransactionType.Txn].includes(arg.type)\n ) {\n hasAppCallArgToTheRight = true\n }\n }\n argsMeta.reverse()\n\n return { methodSig, uniqueName, argsMeta }\n}\n\nexport function* appTypes(ctx: GeneratorContext): DocumentParts {\n yield* structTypes(ctx)\n yield* templateVariableTypes(ctx)\n\n const { app, name } = ctx\n\n yield* jsDoc(`The argument types for the ${name} contract`)\n yield `export type ${name}Args = {`\n yield IncIndent\n yield* jsDoc('The object representation of the arguments for each method')\n yield 'obj: {'\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig, argsMeta } = getMethodMetadata(method)\n if (argsMeta.length) {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': {`\n yield IncIndent\n for (const arg of argsMeta) {\n if (arg.desc) yield* jsDoc(arg.desc)\n yield `${ctx.sanitizer.makeSafePropertyIdentifier(arg.name)}${arg.isOptional ? '?' : ''}: ${arg.tsType}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': Record<string, never>`\n }\n }\n yield DecIndentAndCloseBlock\n\n yield* jsDoc('The tuple representation of the arguments for each method')\n yield 'tuple: {'\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig, argsMeta } = getMethodMetadata(method)\n yield* inline(\n `'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': [`,\n argsMeta\n .map((arg) => `${ctx.sanitizer.makeSafeVariableIdentifier(arg.name)}: ${arg.tsType}${arg.isOptional ? ' | undefined' : ''}`)\n .join(', '),\n ']',\n )\n }\n yield DecIndentAndCloseBlock\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc('The return type for each method')\n yield `export type ${name}Returns = {`\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig } = getMethodMetadata(method)\n yield* inline(`'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}': ${method.returns.tsOutType}`)\n }\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* jsDoc(`Defines the types of available calls and state of the ${name} smart contract.`)\n yield `export type ${name}Types = {`\n yield IncIndent\n yield* jsDoc('Maps method signatures / names to their argument and return types.')\n if (app.abiMethods.length == 0) {\n yield 'methods: {}'\n } else {\n yield 'methods:'\n }\n yield IncIndent\n for (const method of app.abiMethods) {\n const { methodSig } = getMethodMetadata(method)\n yield `& Record<'${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}'${method.baseNameIsUnique ? ` | '${method.name.makeSafeStringTypeLiteral}'` : ''}, {`\n yield IncIndent\n yield `argsObj: ${name}Args['obj']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n yield `argsTuple: ${name}Args['tuple']['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n if (method.returns.desc) yield* jsDoc(method.returns.desc)\n yield `returns: ${name}Returns['${ctx.sanitizer.makeSafeStringTypeLiteral(methodSig)}']`\n\n yield DecIndent\n yield '}>'\n }\n yield DecIndent\n\n const hasLocal =\n (app.state.keys.local && Object.keys(app.state.keys.local).length > 0) ||\n (app.state.maps.local && Object.keys(app.state.maps.local).length > 0)\n const hasGlobal =\n (app.state.keys.global && Object.keys(app.state.keys.global).length > 0) ||\n (app.state.maps.global && Object.keys(app.state.maps.global).length > 0)\n const hasBox =\n (app.state.keys.box && Object.keys(app.state.keys.box).length > 0) || (app.state.maps.box && Object.keys(app.state.maps.box).length > 0)\n yield* appState(ctx, { hasBox, hasGlobal, hasLocal })\n\n yield DecIndentAndCloseBlock\n yield NewLine\n\n yield* inline(`\n /**\n * Defines the possible abi call signatures.\n */\n export type ${name}Signatures = keyof ${name}Types['methods']`)\n\n if (containsNonVoidMethod(app.methods)) {\n yield* inline(`\n /**\n * Defines the possible abi call signatures for methods that return a non-void value.\n */\n export type ${name}NonVoidMethodSignatures = keyof ${name}Types['methods'] extends infer T ? T extends keyof ${name}Types['methods'] ? MethodReturn<T> extends void ? never : T : never : never`)\n }\n\n yield `\n /**\n * Defines an object containing all relevant parameters for a single call to the contract.\n */\n export type CallParams<TArgs> = Expand<\n Omit<AppClientMethodCallParams, 'method' | 'args' | 'onComplete'> &\n {\n /** The args for the ABI method call, either as an ordered array or an object */\n args: Expand<TArgs>\n }\n >\n /**\n * Maps a method signature from the ${name} smart contract to the method's arguments in either tuple or struct form\n */\n export type MethodArgs<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['argsObj' | 'argsTuple']\n /**\n * Maps a method signature from the ${name} smart contract to the method's return type\n */\n export type MethodReturn<TSignature extends ${name}Signatures> = ${name}Types['methods'][TSignature]['returns']\n `\n\n if (hasGlobal) {\n yield `\n /**\n * Defines the shape of the keyed global state of the application.\n */\n export type GlobalKeysState = ${name}Types['state']['global']['keys']\n `\n }\n\n if (hasLocal) {\n yield `\n /**\n * Defines the shape of the keyed local state of the application.\n */\n export type LocalKeysState = ${name}Types['state']['local']['keys']\n `\n }\n\n if (hasBox) {\n yield `\n /**\n * Defines the shape of the keyed box state of the application.\n */\n export type BoxKeysState = ${name}Types['state']['box']['keys']\n `\n }\n\n yield NewLine\n}\n\nfunction* structTypes(ctx: GeneratorContext): DocumentParts {\n const { app, sanitizer } = ctx\n if (Object.keys(app.structs).length === 0) return\n\n yield '// Type definitions for ARC-56 structs'\n yield NewLine\n\n for (const [structName, structCtx] of Object.entries(app.structs)) {\n // Emit the struct type\n yield `export type ${sanitizer.makeSafeTypeIdentifier(structName)} = ${structCtx.tsObjDef}`\n yield NewLine\n\n // Emit method that converts ABI tuple to the struct object\n yield* jsDoc(`Converts the ABI tuple representation of a ${structName} to the struct representation`)\n yield* inline(`export function ${sanitizer.makeSafeTypeIdentifier(structName)}FromTuple(`, `abiTuple: ${structCtx.tsTupDef}`, `) {`)\n yield* indent(`const abiStructType = ABIStructType.fromStruct('${structName}', APP_SPEC.structs)`)\n yield* indent(`return getStructValueFromTupleValue(abiStructType, abiTuple) as ${sanitizer.makeSafeTypeIdentifier(structName)}`)\n yield '}'\n yield NewLine\n }\n}\n\nfunction* templateVariableTypes(ctx: GeneratorContext): DocumentParts {\n if (Object.keys(ctx.app.templateVariables ?? {}).length === 0) {\n return\n }\n\n yield* jsDoc('Deploy-time template variables')\n yield 'export type TemplateVariables = {'\n yield IncIndent\n\n for (const [name, def] of Object.entries(ctx.app.templateVariables ?? {})) {\n yield `${name}: ${def.type.tsInType},`\n }\n\n yield DecIndentAndCloseBlock\n yield NewLine\n}\n\nfunction* keysAndMaps(\n sanitizer: Sanitizer,\n keys: {\n [name: string]: StorageKeyContext\n },\n maps: {\n [name: string]: StorageMapContext\n },\n): DocumentParts {\n if (keys && Object.keys(keys).length) {\n yield 'keys: {'\n yield IncIndent\n for (const [name, prop] of Object.entries(keys)) {\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n prop.valueType\n yield `${keySafe}: ${prop.valueType.isAvmBytes ? 'BinaryState' : prop.valueType.tsOutType}`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'keys: {}'\n }\n\n if (maps && Object.keys(maps).length) {\n yield 'maps: {'\n yield IncIndent\n for (const name of Object.keys(maps)) {\n const prop = maps[name]\n if (prop.desc) {\n yield* jsDoc(prop.desc)\n }\n const keySafe = sanitizer.makeSafePropertyIdentifier(name)\n\n yield `${keySafe}: Map<${prop.keyType.tsInType}, ${prop.valueType.tsOutType}>`\n }\n yield DecIndentAndCloseBlock\n } else {\n yield 'maps: {}'\n }\n}\n\nfunction* appState(\n { app, sanitizer }: GeneratorContext,\n stateFlags: { hasLocal: boolean; hasGlobal: boolean; hasBox: boolean },\n): DocumentParts {\n const { hasBox, hasGlobal, hasLocal } = stateFlags\n\n if (hasLocal || hasGlobal || hasBox) {\n yield* jsDoc('Defines the shape of the state of the application.')\n yield 'state: {'\n yield IncIndent\n if (hasGlobal) {\n yield 'global: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.global, app.state.maps.global)\n yield DecIndentAndCloseBlock\n }\n if (hasLocal) {\n yield 'local: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.local, app.state.maps.local)\n yield DecIndentAndCloseBlock\n }\n if (hasBox) {\n yield 'box: {'\n yield IncIndent\n yield* keysAndMaps(sanitizer, app.state.keys.box, app.state.maps.box)\n yield DecIndentAndCloseBlock\n }\n yield DecIndentAndCloseBlock\n }\n}\n"],"names":[],"mappings":";;;;AAQA,SAAS,iBAAiB,CAAC,MAA8B,EAAA;AACvD,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;AAClC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ;IAE7C,IAAI,uBAAuB,GAAG,KAAK;AACnC,IAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAyG;IAEnI,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1B,QAAQ,CAAC,IAAI,CAAC;AACZ,YAAA,GAAG,GAAG;YACN,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAA,GAAA,EAAM,CAAC,GAAG,CAAC,CAAA,CAAE;AACzC,YAAA,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,KAAK,uBAAuB,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7F,MAAM,EAAE,GAAG,CAAC,QAAQ;AACrB,SAAA,CAAC;AAEF,QAAA,IACE,CAAC,uBAAuB;AACxB,YAAA,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,YAAA,CAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EACvE;YACA,uBAAuB,GAAG,IAAI;QAChC;IACF;IACA,QAAQ,CAAC,OAAO,EAAE;AAElB,IAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;AAC5C;AAEM,UAAW,QAAQ,CAAC,GAAqB,EAAA;AAC7C,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AACvB,IAAA,OAAO,qBAAqB,CAAC,GAAG,CAAC;AAEjC,IAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG;IAEzB,OAAO,KAAK,CAAC,8BAA8B,IAAI,CAAA,SAAA,CAAW,CAAC;IAC3D,MAAM,CAAA,YAAA,EAAe,IAAI,CAAA,QAAA,CAAU;AACnC,IAAA,MAAM,SAAS;AACf,IAAA,OAAO,KAAK,CAAC,4DAA4D,CAAC;AAC1E,IAAA,MAAM,QAAQ;AACd,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC;AACzD,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,IAAA,CAAM;AAClE,YAAA,MAAM,SAAS;AACf,YAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBAC1B,IAAI,GAAG,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,gBAAA,MAAM,CAAA,EAAG,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAA,CAAE;YAC1G;AACA,YAAA,MAAM,sBAAsB;QAC9B;aAAO;YACL,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,wBAAA,CAA0B;QACxF;IACF;AACA,IAAA,MAAM,sBAAsB;AAE5B,IAAA,OAAO,KAAK,CAAC,2DAA2D,CAAC;AACzE,IAAA,MAAM,UAAU;AAChB,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC;AACzD,QAAA,OAAO,MAAM,CACX,IAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,IAAA,CAAM,EAC5D;AACG,aAAA,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA,EAAG,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAA,EAAG,GAAG,CAAC,UAAU,GAAG,cAAc,GAAG,EAAE,EAAE;AAC1H,aAAA,IAAI,CAAC,IAAI,CAAC,EACb,GAAG,CACJ;IACH;AACA,IAAA,MAAM,sBAAsB;AAE5B,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;AAEb,IAAA,OAAO,KAAK,CAAC,iCAAiC,CAAC;IAC/C,MAAM,CAAA,YAAA,EAAe,IAAI,CAAA,WAAA,CAAa;AACtC,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC/C,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAA,CAAE,CAAC;IACvG;AACA,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;IAEb,OAAO,KAAK,CAAC,yDAAyD,IAAI,CAAA,gBAAA,CAAkB,CAAC;IAC7F,MAAM,CAAA,YAAA,EAAe,IAAI,CAAA,SAAA,CAAW;AACpC,IAAA,MAAM,SAAS;AACf,IAAA,OAAO,KAAK,CAAC,oEAAoE,CAAC;IAClF,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,QAAA,MAAM,aAAa;IACrB;SAAO;AACL,QAAA,MAAM,UAAU;IAClB;AACA,IAAA,MAAM,SAAS;AACf,IAAA,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC/C,QAAA,MAAM,CAAA,UAAA,EAAa,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,gBAAgB,GAAG,CAAA,IAAA,EAAO,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAA,CAAA,CAAG,GAAG,EAAE,CAAA,GAAA,CAAK;AAC5J,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,CAAA,SAAA,EAAY,IAAI,CAAA,aAAA,EAAgB,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,EAAA,CAAI;AAC5F,QAAA,MAAM,CAAA,WAAA,EAAc,IAAI,CAAA,eAAA,EAAkB,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,EAAA,CAAI;AAEhG,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1D,QAAA,MAAM,CAAA,SAAA,EAAY,IAAI,CAAA,SAAA,EAAY,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA,EAAA,CAAI;AAExF,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,IAAI;IACZ;AACA,IAAA,MAAM,SAAS;IAEf,MAAM,QAAQ,GACZ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;SACpE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,SAAS,GACb,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;SACtE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1E,MAAM,MAAM,GACV,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1I,IAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAErD,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;IAEb,OAAO,MAAM,CAAC;;;;AAIA,cAAA,EAAA,IAAI,CAAA,mBAAA,EAAsB,IAAI,CAAA,gBAAA,CAAkB,CAAC;AAE/D,IAAA,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QACtC,OAAO,MAAM,CAAC;;;;AAIF,cAAA,EAAA,IAAI,mCAAmC,IAAI,CAAA,mDAAA,EAAsD,IAAI,CAAA,4EAAA,CAA8E,CAAC;IAClM;IAEA,MAAM;;;;;;;;;;;;wCAYgC,IAAI,CAAA;;AAEE,4CAAA,EAAA,IAAI,iBAAiB,IAAI,CAAA;;wCAE/B,IAAI,CAAA;;AAEI,8CAAA,EAAA,IAAI,iBAAiB,IAAI,CAAA;GACtE;IAED,IAAI,SAAS,EAAE;QACb,MAAM;;;;sCAI4B,IAAI,CAAA;KACrC;IACH;IAEA,IAAI,QAAQ,EAAE;QACZ,MAAM;;;;qCAI2B,IAAI,CAAA;KACpC;IACH;IAEA,IAAI,MAAM,EAAE;QACV,MAAM;;;;mCAIyB,IAAI,CAAA;KAClC;IACH;AAEA,IAAA,MAAM,OAAO;AACf;AAEA,UAAU,WAAW,CAAC,GAAqB,EAAA;AACzC,IAAA,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE;AAE3C,IAAA,MAAM,wCAAwC;AAC9C,IAAA,MAAM,OAAO;AAEb,IAAA,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;;AAEjE,QAAA,MAAM,CAAA,YAAA,EAAe,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA,GAAA,EAAM,SAAS,CAAC,QAAQ,CAAA,CAAE;AAC3F,QAAA,MAAM,OAAO;;QAGb,OAAO,KAAK,CAAC,8CAA8C,UAAU,CAAA,6BAAA,CAA+B,CAAC;QACrG,OAAO,MAAM,CAAC,mBAAmB,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA,UAAA,CAAY,EAAE,aAAa,SAAS,CAAC,QAAQ,CAAA,CAAE,EAAE,CAAA,GAAA,CAAK,CAAC;QACpI,OAAO,MAAM,CAAC,mDAAmD,UAAU,CAAA,oBAAA,CAAsB,CAAC;AAClG,QAAA,OAAO,MAAM,CAAC,CAAA,gEAAA,EAAmE,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAA,CAAE,CAAC;AAChI,QAAA,MAAM,GAAG;AACT,QAAA,MAAM,OAAO;IACf;AACF;AAEA,UAAU,qBAAqB,CAAC,GAAqB,EAAA;AACnD,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7D;IACF;AAEA,IAAA,OAAO,KAAK,CAAC,gCAAgC,CAAC;AAC9C,IAAA,MAAM,mCAAmC;AACzC,IAAA,MAAM,SAAS;IAEf,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAAE;QACzE,MAAM,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAA,CAAG;IACxC;AAEA,IAAA,MAAM,sBAAsB;AAC5B,IAAA,MAAM,OAAO;AACf;AAEA,UAAU,WAAW,CACnB,SAAoB,EACpB,IAEC,EACD,IAEC,EAAA;IAED,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACpC,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,SAAS;AACf,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;YACA,MAAM,OAAO,GAAG,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC;YAE1D,MAAM,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAA,CAAE;QAC7F;AACA,QAAA,MAAM,sBAAsB;IAC9B;SAAO;AACL,QAAA,MAAM,UAAU;IAClB;IAEA,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACpC,QAAA,MAAM,SAAS;AACf,QAAA,MAAM,SAAS;QACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;YACA,MAAM,OAAO,GAAG,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC;AAE1D,YAAA,MAAM,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG;QAChF;AACA,QAAA,MAAM,sBAAsB;IAC9B;SAAO;AACL,QAAA,MAAM,UAAU;IAClB;AACF;AAEA,UAAU,QAAQ,CAChB,EAAE,GAAG,EAAE,SAAS,EAAoB,EACpC,UAAsE,EAAA;IAEtE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU;AAElD,IAAA,IAAI,QAAQ,IAAI,SAAS,IAAI,MAAM,EAAE;AACnC,QAAA,OAAO,KAAK,CAAC,oDAAoD,CAAC;AAClE,QAAA,MAAM,UAAU;AAChB,QAAA,MAAM,SAAS;QACf,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,WAAW;AACjB,YAAA,MAAM,SAAS;YACf,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3E,YAAA,MAAM,sBAAsB;QAC9B;QACA,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,UAAU;AAChB,YAAA,MAAM,SAAS;YACf,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACzE,YAAA,MAAM,sBAAsB;QAC9B;QACA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,QAAQ;AACd,YAAA,MAAM,SAAS;YACf,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACrE,YAAA,MAAM,sBAAsB;QAC9B;AACA,QAAA,MAAM,sBAAsB;IAC9B;AACF;;;;"}
|