@algorandfoundation/puya-ts 1.2.0-beta.36 → 1.2.0-beta.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/{analyser-service-C1sYEdlC.js → analyser-service-Bk9GEtDA.js} +3 -3
  2. package/{analyser-service-C1sYEdlC.js.map → analyser-service-Bk9GEtDA.js.map} +1 -1
  3. package/analyserService.mjs +3 -3
  4. package/{arc4-clientgen-BBdFxRUs.js → arc4-clientgen-qBTlCOIm.js} +2 -2
  5. package/{arc4-clientgen-BBdFxRUs.js.map → arc4-clientgen-qBTlCOIm.js.map} +1 -1
  6. package/bin/puyats-clientgen.mjs +5 -5
  7. package/bin/puyats-clientgen.mjs.map +1 -1
  8. package/bin/puyats-ls.mjs +13 -13
  9. package/bin/puyats-ls.mjs.map +1 -1
  10. package/bin/run-cli.mjs +12 -12
  11. package/{check-node-version-jdAtH-rx.js → check-node-version-CLFFTDHN.js} +3 -3
  12. package/{check-node-version-jdAtH-rx.js.map → check-node-version-CLFFTDHN.js.map} +1 -1
  13. package/cli-ls.d.ts +1 -1
  14. package/cli.d.ts +1 -1
  15. package/cli.mjs +15 -15
  16. package/cli.mjs.map +1 -1
  17. package/clientgen.d.ts +1 -1
  18. package/{compile-DbGGbErI.js → compile-ycpMcgmJ.js} +6 -6
  19. package/{compile-DbGGbErI.js.map → compile-ycpMcgmJ.js.map} +1 -1
  20. package/constants.d.ts +1 -1
  21. package/{contract-class-model-CkfUf4wT.js → contract-class-model-BZeEDGw0.js} +2 -70
  22. package/contract-class-model-BZeEDGw0.js.map +1 -0
  23. package/index.d.ts +0 -1
  24. package/index.mjs +8 -8
  25. package/index.mjs.map +1 -1
  26. package/language-server/analyser-service.d.ts +0 -1
  27. package/{options-BMqysQHP.js → options-DD9MApH4.js} +2 -2
  28. package/{options-BMqysQHP.js.map → options-DD9MApH4.js.map} +1 -1
  29. package/package.json +6 -3
  30. package/{resolve-puya-path-C4sw8aVH.js → resolve-puya-path-Ba54kz9o.js} +4 -4
  31. package/{resolve-puya-path-C4sw8aVH.js.map → resolve-puya-path-Ba54kz9o.js.map} +1 -1
  32. package/{semver-BcvZGdLN.js → semver-B0p_0XuH.js} +2 -2
  33. package/{semver-BcvZGdLN.js.map → semver-B0p_0XuH.js.map} +1 -1
  34. package/{util-DgN3iON1.js → util-Aa8RgOmt.js} +2 -2
  35. package/{util-DgN3iON1.js.map → util-Aa8RgOmt.js.map} +1 -1
  36. package/contract-class-model-CkfUf4wT.js.map +0 -1
  37. package/util/polyfills.d.ts +0 -1
@@ -1,8 +1,8 @@
1
1
  import 'crypto';
2
2
  import 'node:worker_threads';
3
- export { c as createAnalyserService } from './analyser-service-C1sYEdlC.js';
4
- import './contract-class-model-CkfUf4wT.js';
5
- import './options-BMqysQHP.js';
3
+ export { c as createAnalyserService } from './analyser-service-Bk9GEtDA.js';
4
+ import './contract-class-model-BZeEDGw0.js';
5
+ import './options-DD9MApH4.js';
6
6
  import 'pathe';
7
7
  import 'typescript';
8
8
  import 'node:util';
@@ -1,7 +1,7 @@
1
1
  import * as abi from '@algorandfoundation/algokit-utils/abi';
2
2
  import { existsSync } from 'fs';
3
3
  import { writeFile, readFile } from 'fs/promises';
4
- import { C as ContractReference, b as ContractClassModel, A as AbsolutePath, l as logger, c as CodeError, d as Constants, I as InternalError, e as accountPType, f as applicationPType, g as assetPType, v as voidPType, h as anyGtxnType, p as paymentGtxnType, k as keyRegistrationGtxnType, i as assetConfigGtxnType, j as assetTransferGtxnType, m as assetFreezeGtxnType, n as applicationCallGtxnType, O as OnCompletionAction } from './contract-class-model-CkfUf4wT.js';
4
+ import { C as ContractReference, b as ContractClassModel, A as AbsolutePath, l as logger, c as CodeError, d as Constants, I as InternalError, e as accountPType, f as applicationPType, g as assetPType, v as voidPType, h as anyGtxnType, p as paymentGtxnType, k as keyRegistrationGtxnType, i as assetConfigGtxnType, j as assetTransferGtxnType, m as assetFreezeGtxnType, n as applicationCallGtxnType, O as OnCompletionAction } from './contract-class-model-BZeEDGw0.js';
5
5
 
6
6
  const AUTO_GENERATED_COMMENT = '// This file is auto-generated, do not modify';
7
7
  const DISABLE_ESLINT_PRAGMA = '/* eslint-disable */';
@@ -321,4 +321,4 @@ function generateClientFor(contract) {
321
321
  }
322
322
 
323
323
  export { writeARC4Clients as a, writeARC4Client as w };
324
- //# sourceMappingURL=arc4-clientgen-BBdFxRUs.js.map
324
+ //# sourceMappingURL=arc4-clientgen-qBTlCOIm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arc4-clientgen-BBdFxRUs.js","sources":["../src/arc4-clientgen.ts"],"sourcesContent":["import * as abi from '@algorandfoundation/algokit-utils/abi'\nimport { existsSync } from 'fs'\nimport { readFile, writeFile } from 'fs/promises'\nimport { ContractReference, OnCompletionAction } from './awst/models'\nimport type { CompilationSet } from './awst_build/models/contract-class-model'\nimport { ContractClassModel } from './awst_build/models/contract-class-model'\nimport type { ABICompatiblePType } from './awst_build/ptypes'\nimport * as ptype from './awst_build/ptypes'\nimport { Constants } from './constants'\nimport { CodeError, InternalError } from './errors'\nimport { logger } from './logger'\nimport type { AlgoFile } from './options'\nimport { AbsolutePath } from './util/absolute-path'\n\ntype Arc56Arg = abi.Arc56Method['args'][number]\n\ntype ClientTask = {\n spec: abi.Arc56Contract\n outFile: AbsolutePath\n}\n\nconst AUTO_GENERATED_COMMENT = '// This file is auto-generated, do not modify'\nconst DISABLE_ESLINT_PRAGMA = '/* eslint-disable */'\n\nconst ARC4_PYTYPE_MAPPING = new Map<string, ABICompatiblePType>([\n ['account', ptype.accountPType],\n ['application', ptype.applicationPType],\n ['asset', ptype.assetPType],\n ['void', ptype.voidPType],\n ['txn', ptype.anyGtxnType],\n ['pay', ptype.paymentGtxnType],\n ['keyreg', ptype.keyRegistrationGtxnType],\n ['acfg', ptype.assetConfigGtxnType],\n ['axfer', ptype.assetTransferGtxnType],\n ['afrz', ptype.assetFreezeGtxnType],\n ['appl', ptype.applicationCallGtxnType],\n])\n\nfunction resolveClients(\n compilationSet: CompilationSet,\n filePaths: AlgoFile[],\n arc56Contracts: Record<string, abi.Arc56Contract>,\n): ClientTask[] {\n const sourceFileToOutDir = new Map<string, AbsolutePath>()\n for (const { sourceFile, outDir } of filePaths) {\n sourceFileToOutDir.set(sourceFile.toString(), outDir)\n }\n\n const arc56Files = []\n for (const ref of compilationSet.compilationOutputSet) {\n if (!(ref instanceof ContractReference)) {\n continue\n }\n const model = compilationSet.get(ref)\n if (!(model instanceof ContractClassModel)) {\n continue\n }\n if (!model.type.isARC4) {\n continue\n }\n\n const sourceFile = AbsolutePath.resolve({ path: ref.moduleName })\n const outDir = sourceFileToOutDir.get(sourceFile.toString())\n if (outDir === undefined) {\n logger.error(undefined, `Could not find a source file for the contract ${ref.className} at ${ref.moduleName}`)\n continue\n }\n\n const spec = arc56Contracts[ref.id]\n if (spec === undefined) {\n logger.error(undefined, `Could not find a generated spec for the contract ${ref.className} at ${ref.moduleName}`)\n continue\n }\n\n const name = model.options?.name || model.name\n arc56Files.push({\n spec,\n outFile: outDir.join(`${name}.client.ts`),\n })\n }\n return arc56Files\n}\n\nexport function writeARC4Clients(compilationSet: CompilationSet, filePaths: AlgoFile[], arc56Contracts: Record<string, abi.Arc56Contract>) {\n const clientFiles = resolveClients(compilationSet, filePaths, arc56Contracts)\n return Promise.all(\n clientFiles.map(async (clientTask) => {\n await writeARC4Client(clientTask.spec, clientTask.outFile)\n }),\n )\n}\n\nexport async function writeARC4Client(spec: abi.Arc56Contract, outFile: AbsolutePath) {\n if (await shouldWriteFile(outFile)) {\n logger.info(undefined, `Writing ${outFile.relativeTo('.')}`)\n const typescriptClient = generateClientFor(spec)\n await writeFile(outFile.toString(), typescriptClient, { encoding: 'utf-8' })\n } else {\n logger.error(undefined, `Not outputting ${outFile.relativeTo('.')} since content does not appear to be auto-generated`)\n }\n}\n\nasync function shouldWriteFile(outFile: AbsolutePath): Promise<boolean> {\n const filePath = outFile.toString()\n // FIXME: There's a TOCTOU bug here...\n if (!existsSync(filePath)) {\n return true\n }\n const contents = await readFile(filePath, { encoding: 'utf-8' })\n return contents.startsWith(AUTO_GENERATED_COMMENT)\n}\n\nfunction generateClientFor(contract: abi.Arc56Contract): string {\n const typeImports = new Set<string>()\n const imports = new Set<string>()\n const structToClass = new Map<string, string>()\n const reservedClassNames = new Set<string>()\n const reservedMethodNames = new Set<string>()\n const classDecls: string[] = []\n\n function useImport(name: string, asValue: boolean) {\n if (asValue) {\n if (typeImports.has(name)) typeImports.delete(name)\n imports.add(name)\n } else if (!imports.has(name)) {\n typeImports.add(name)\n }\n }\n function indent(...texts: string[]): string {\n const INDENT = ' '\n return INDENT + texts.join('\\n').replaceAll(/\\n+/g, `$&${INDENT}`)\n }\n\n function classNameFor(name: string): string {\n const base_name = name\n let seq = 1\n while (reservedClassNames.has(name)) {\n seq++\n name = `${base_name}${seq}`\n }\n\n reservedClassNames.add(name)\n return name\n }\n\n function methodNameFor(name: string): string {\n const base_name = name\n let seq = 1\n while (reservedMethodNames.has(name)) {\n seq++\n name = `${base_name}${seq}`\n }\n\n reservedMethodNames.add(name)\n return name\n }\n\n function typeNameToAlgoTSName(typeName: string): string {\n const knownMapping = ARC4_PYTYPE_MAPPING.get(typeName)\n if (knownMapping !== undefined) {\n const { name, module } = knownMapping\n if (module === Constants.moduleNames.algoTs.gtxn) {\n useImport('gtxn', false)\n return `gtxn.${name}`\n } else if (module === Constants.moduleNames.algoTs.reference) {\n useImport(name, false)\n return name\n } else if (module === Constants.moduleNames.tslib) {\n // The TypeScript prelude is always imported\n return name\n }\n\n throw new InternalError(`Cannot import ${name}: The module ${module} is unsupported`)\n }\n return ARC4ToAlgoTSName(abi.ABIType.from(typeName))\n }\n\n function ARC4ToAlgoTSName(type: abi.ABIType): string {\n useImport('arc4', false)\n if (type instanceof abi.ABIBoolType) return 'arc4.Bool'\n if (type instanceof abi.ABIStringType) return 'arc4.Str'\n if (type instanceof abi.ABIAddressType) return 'arc4.Address'\n if (type instanceof abi.ABIByteType) return 'arc4.Byte'\n if (type instanceof abi.ABIUintType) return `arc4.Uint<${type.bitSize}>`\n if (type instanceof abi.ABIUfixedType) return `arc4.UFixed<${type.bitSize}, ${type.precision}>`\n if (type instanceof abi.ABIArrayStaticType) {\n const elementType = ARC4ToAlgoTSName(type.childType)\n return `arc4.StaticArray<${elementType}, ${type.length}>`\n }\n if (type instanceof abi.ABIArrayDynamicType) {\n if (type.childType instanceof abi.ABIByteType) return 'arc4.DynamicBytes'\n\n const elementType = ARC4ToAlgoTSName(type.childType)\n return `arc4.DynamicArray<${elementType}>`\n }\n if (type instanceof abi.ABITupleType) {\n const tupleTypes = type.childTypes.map(ARC4ToAlgoTSName)\n return `arc4.Tuple<readonly [${tupleTypes.join(', ')}]>`\n }\n throw new CodeError(`unknown ARC-4 type '${type}'`)\n }\n\n function getClientType(type: string): string {\n // map ABI / AVM type to algots type\n if (type === 'AVMUint64') {\n useImport('uint64', false)\n return 'uint64'\n } else if (type === 'AVMBytes') {\n useImport('bytes', false)\n return 'bytes'\n } else if (type in contract.structs) {\n return structToClass.get(type) || prepareStructClass(type, contract.structs[type])\n } else {\n return typeNameToAlgoTSName(type)\n }\n }\n\n function prepareStructClass(name: string, fields: abi.StructField[]) {\n useImport('arc4', true)\n\n const className = classNameFor(name)\n structToClass.set(name, className)\n const lines = ['', `export class ${className} extends arc4.Struct<{`]\n for (const field of fields) {\n let type: string\n if (typeof field.type === 'string') {\n type = getClientType(field.type)\n } else {\n // generate anonymous struct type\n const anonStruct = `${name}_${field.name}`\n type = prepareStructClass(anonStruct, field.type)\n }\n lines.push(indent(`${field.name}: ${type}`))\n }\n lines.push('}> {}')\n classDecls.push(...lines)\n return className\n }\n\n function tsdoc(description: string | undefined | null): string[] {\n if (description === undefined || description === null) {\n return []\n }\n return ['/**', ` * ${description.replaceAll(/\\n+/g, '$& * ')}`, ' */']\n }\n\n function compatibleActions(create: string[], call: string[]): boolean {\n if (create.length === 0) {\n return true\n }\n if (call.length === 0) {\n return true\n }\n // if both collections are present, then they are compatible if everything in\n // create is also in call\n const createSet = new Set(create)\n const callSet = new Set(call)\n return createSet.symmetricDifference(callSet).size === 0\n }\n\n function ARC4MethodToTSDecorator(name: string, method: abi.Arc56Method): string {\n useImport('abimethod', true)\n\n const abimethodArgs: string[] = []\n if (method.name !== name) {\n abimethodArgs.push(`name: '${method.name}'`)\n }\n if (method.readonly) {\n abimethodArgs.push('readonly: true')\n }\n // if any alias types are encountered, force index encoding\n const argTypes = new Set(method.args.map((v) => v.type))\n const aliasTypes = new Set(['asset', 'application', 'account'])\n if (argTypes.intersection(aliasTypes).size !== 0) {\n abimethodArgs.push(\"resourceEncoding: 'index'\")\n }\n if (!compatibleActions(method.actions.create, method.actions.call)) {\n // TODO: support this, once decorators support it\n throw new CodeError(`unsupported on completion combination for generating an ARC-4 client for method: ${method.name}`)\n }\n const actions = [...method.actions.create, ...method.actions.call]\n actions.sort((a, b) => OnCompletionAction[a] - OnCompletionAction[b])\n const uniqueActions = new Set(actions)\n\n if (!(uniqueActions.size === 1 && uniqueActions.has('NoOp'))) {\n abimethodArgs.push(`allowActions: [${actions.map((v) => `'${v}'`).join(', ')}]`)\n }\n if (method.actions.create.length !== 0 && method.actions.call.length !== 0) {\n abimethodArgs.push(\"onCreate: 'allow'\")\n } else if (method.actions.create.length !== 0) {\n abimethodArgs.push(\"onCreate: 'require'\")\n } else {\n // disallow is default\n }\n const args = abimethodArgs.length === 0 ? '' : `{ ${abimethodArgs.join(', ')} }`\n return `@abimethod(${args})`\n }\n\n function genArg(arg: Arc56Arg): string {\n const argType = getClientType(arg.struct || arg.type)\n return `${arg.name}: ${argType},`\n }\n\n function genMethod(method: abi.Arc56Method): string {\n useImport('err', true)\n\n const return_type = getClientType(method.returns.struct || method.returns.type)\n const method_name = methodNameFor(method.name)\n const args = method.args.map(genArg)\n let arglist: string\n if (args.length === 0) {\n // No args -> inline arglist\n arglist = '()'\n } else if (args.length === 1) {\n // One arg -> inline arglist (remove trailing comma)\n arglist = `(${args[0].slice(0, -1)})`\n } else {\n // At least two args -> multiline arglist\n arglist = `(\\n${indent(...args)}\\n)`\n }\n\n return indent(\n ...tsdoc(method.desc),\n ARC4MethodToTSDecorator(method_name, method),\n `${method_name}${arglist}: ${return_type} {`,\n indent(\"err('stub only')\"),\n '}',\n )\n }\n\n function genMethods(): string[] {\n const methods = []\n if (contract.methods.length !== 0) {\n methods.push(genMethod(contract.methods[0]))\n }\n for (const method of contract.methods.slice(1)) {\n methods.push(`\\n${genMethod(method)}`)\n }\n return methods\n }\n\n // generate class definitions for any referenced structs in methods\n // don't generate from self.contract.structs as it may contain other struct definitions\n const clientClass = classNameFor(contract.name)\n const docs = tsdoc(contract.desc)\n const methods = genMethods()\n useImport('Contract', true)\n\n const sortedTypeImports = [...typeImports].toSorted().join(', ')\n const sortedImports = [...imports].toSorted().join(', ')\n const lines = []\n // Header\n lines.push(AUTO_GENERATED_COMMENT)\n lines.push(DISABLE_ESLINT_PRAGMA)\n if (sortedTypeImports.length !== 0) lines.push(`import type { ${sortedTypeImports} } from '@algorandfoundation/algorand-typescript'`)\n if (sortedImports.length !== 0) lines.push(`import { ${sortedImports} } from '@algorandfoundation/algorand-typescript'`)\n\n lines.push(\n // Struct declarations\n ...classDecls,\n '',\n // Contract definition\n ...docs,\n `export abstract class ${clientClass} extends Contract {`,\n ...methods,\n '}',\n '',\n )\n return lines.join('\\n')\n}\n"],"names":["ptype.accountPType","ptype.applicationPType","ptype.assetPType","ptype.voidPType","ptype.anyGtxnType","ptype.paymentGtxnType","ptype.keyRegistrationGtxnType","ptype.assetConfigGtxnType","ptype.assetTransferGtxnType","ptype.assetFreezeGtxnType","ptype.applicationCallGtxnType"],"mappings":";;;;;AAqBA,MAAM,sBAAsB,GAAG,+CAA+C;AAC9E,MAAM,qBAAqB,GAAG,sBAAsB;AAEpD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAA6B;AAC9D,IAAA,CAAC,SAAS,EAAEA,YAAkB,CAAC;AAC/B,IAAA,CAAC,aAAa,EAAEC,gBAAsB,CAAC;AACvC,IAAA,CAAC,OAAO,EAAEC,UAAgB,CAAC;AAC3B,IAAA,CAAC,MAAM,EAAEC,SAAe,CAAC;AACzB,IAAA,CAAC,KAAK,EAAEC,WAAiB,CAAC;AAC1B,IAAA,CAAC,KAAK,EAAEC,eAAqB,CAAC;AAC9B,IAAA,CAAC,QAAQ,EAAEC,uBAA6B,CAAC;AACzC,IAAA,CAAC,MAAM,EAAEC,mBAAyB,CAAC;AACnC,IAAA,CAAC,OAAO,EAAEC,qBAA2B,CAAC;AACtC,IAAA,CAAC,MAAM,EAAEC,mBAAyB,CAAC;AACnC,IAAA,CAAC,MAAM,EAAEC,uBAA6B,CAAC;AACxC,CAAA,CAAC;AAEF,SAAS,cAAc,CACrB,cAA8B,EAC9B,SAAqB,EACrB,cAAiD,EAAA;AAEjD,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAwB;IAC1D,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;QAC9C,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;IACvD;IAEA,MAAM,UAAU,GAAG,EAAE;AACrB,IAAA,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,oBAAoB,EAAE;AACrD,QAAA,IAAI,EAAE,GAAG,YAAY,iBAAiB,CAAC,EAAE;YACvC;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,EAAE,KAAK,YAAY,kBAAkB,CAAC,EAAE;YAC1C;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC5D,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,8CAAA,EAAiD,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,UAAU,CAAA,CAAE,CAAC;YAC9G;QACF;QAEA,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AACnC,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,iDAAA,EAAoD,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,UAAU,CAAA,CAAE,CAAC;YACjH;QACF;QAEA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI;QAC9C,UAAU,CAAC,IAAI,CAAC;YACd,IAAI;YACJ,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,YAAY,CAAC;AAC1C,SAAA,CAAC;IACJ;AACA,IAAA,OAAO,UAAU;AACnB;SAEgB,gBAAgB,CAAC,cAA8B,EAAE,SAAqB,EAAE,cAAiD,EAAA;IACvI,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,cAAc,CAAC;AAC7E,IAAA,OAAO,OAAO,CAAC,GAAG,CAChB,WAAW,CAAC,GAAG,CAAC,OAAO,UAAU,KAAI;QACnC,MAAM,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC;IAC5D,CAAC,CAAC,CACH;AACH;AAEO,eAAe,eAAe,CAAC,IAAuB,EAAE,OAAqB,EAAA;AAClF,IAAA,IAAI,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE;AAClC,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA,QAAA,EAAW,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AAC5D,QAAA,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC9E;SAAO;AACL,QAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,eAAA,EAAkB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,mDAAA,CAAqD,CAAC;IACzH;AACF;AAEA,eAAe,eAAe,CAAC,OAAqB,EAAA;AAClD,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;;AAEnC,IAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACzB,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAChE,IAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;AACpD;AAEA,SAAS,iBAAiB,CAAC,QAA2B,EAAA;AACpD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AACrC,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU;AACjC,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB;AAC/C,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU;AAC5C,IAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU;IAC7C,MAAM,UAAU,GAAa,EAAE;AAE/B,IAAA,SAAS,SAAS,CAAC,IAAY,EAAE,OAAgB,EAAA;QAC/C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAAE,gBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;AACnD,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB;aAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB;IACF;IACA,SAAS,MAAM,CAAC,GAAG,KAAe,EAAA;QAChC,MAAM,MAAM,GAAG,IAAI;AACnB,QAAA,OAAO,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,MAAM,CAAA,CAAE,CAAC;IACpE;IAEA,SAAS,YAAY,CAAC,IAAY,EAAA;QAChC,MAAM,SAAS,GAAG,IAAI;QACtB,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,GAAG,EAAE;AACL,YAAA,IAAI,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,EAAE;QAC7B;AAEA,QAAA,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,OAAO,IAAI;IACb;IAEA,SAAS,aAAa,CAAC,IAAY,EAAA;QACjC,MAAM,SAAS,GAAG,IAAI;QACtB,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACpC,YAAA,GAAG,EAAE;AACL,YAAA,IAAI,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,EAAE;QAC7B;AAEA,QAAA,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,OAAO,IAAI;IACb;IAEA,SAAS,oBAAoB,CAAC,QAAgB,EAAA;QAC5C,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtD,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,YAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY;YACrC,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE;AAChD,gBAAA,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;gBACxB,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE;YACvB;iBAAO,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5D,gBAAA,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AACtB,gBAAA,OAAO,IAAI;YACb;iBAAO,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE;;AAEjD,gBAAA,OAAO,IAAI;YACb;YAEA,MAAM,IAAI,aAAa,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAA,aAAA,EAAgB,MAAM,CAAA,eAAA,CAAiB,CAAC;QACvF;QACA,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD;IAEA,SAAS,gBAAgB,CAAC,IAAiB,EAAA;AACzC,QAAA,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;AACxB,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,WAAW;AAAE,YAAA,OAAO,WAAW;AACvD,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,aAAa;AAAE,YAAA,OAAO,UAAU;AACxD,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,cAAc;AAAE,YAAA,OAAO,cAAc;AAC7D,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,WAAW;AAAE,YAAA,OAAO,WAAW;AACvD,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,WAAW;AAAE,YAAA,OAAO,CAAA,UAAA,EAAa,IAAI,CAAC,OAAO,GAAG;AACxE,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,aAAa;YAAE,OAAO,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG;AAC/F,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,kBAAkB,EAAE;YAC1C,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AACpD,YAAA,OAAO,oBAAoB,WAAW,CAAA,EAAA,EAAK,IAAI,CAAC,MAAM,GAAG;QAC3D;AACA,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,mBAAmB,EAAE;AAC3C,YAAA,IAAI,IAAI,CAAC,SAAS,YAAY,GAAG,CAAC,WAAW;AAAE,gBAAA,OAAO,mBAAmB;YAEzE,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;YACpD,OAAO,CAAA,kBAAA,EAAqB,WAAW,CAAA,CAAA,CAAG;QAC5C;AACA,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,YAAY,EAAE;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACxD,OAAO,CAAA,qBAAA,EAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC1D;AACA,QAAA,MAAM,IAAI,SAAS,CAAC,uBAAuB,IAAI,CAAA,CAAA,CAAG,CAAC;IACrD;IAEA,SAAS,aAAa,CAAC,IAAY,EAAA;;AAEjC,QAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC1B,YAAA,OAAO,QAAQ;QACjB;AAAO,aAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AAC9B,YAAA,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AACzB,YAAA,OAAO,OAAO;QAChB;AAAO,aAAA,IAAI,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE;AACnC,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpF;aAAO;AACL,YAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC;QACnC;IACF;AAEA,IAAA,SAAS,kBAAkB,CAAC,IAAY,EAAE,MAAyB,EAAA;AACjE,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;AAEvB,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC;AACpC,QAAA,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,CAAA,aAAA,EAAgB,SAAS,CAAA,sBAAA,CAAwB,CAAC;AACrE,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,IAAY;AAChB,YAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,gBAAA,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC;iBAAO;;gBAEL,MAAM,UAAU,GAAG,CAAA,EAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA,CAAE;gBAC1C,IAAI,GAAG,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC;YACnD;AACA,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,KAAK,CAAC,IAAI,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAC,CAAC;QAC9C;AACA,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,QAAA,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB,QAAA,OAAO,SAAS;IAClB;IAEA,SAAS,KAAK,CAAC,WAAsC,EAAA;QACnD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE;AACrD,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,CAAC,KAAK,EAAE,CAAA,GAAA,EAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA,CAAE,EAAE,KAAK,CAAC;IACxE;AAEA,IAAA,SAAS,iBAAiB,CAAC,MAAgB,EAAE,IAAc,EAAA;AACzD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;;;AAGA,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;QAC7B,OAAO,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC;IAC1D;AAEA,IAAA,SAAS,uBAAuB,CAAC,IAAY,EAAE,MAAuB,EAAA;AACpE,QAAA,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;QAE5B,MAAM,aAAa,GAAa,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;YACxB,aAAa,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;QAC9C;AACA,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACtC;;QAEA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AAChD,YAAA,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;YAElE,MAAM,IAAI,SAAS,CAAC,CAAA,iFAAA,EAAoF,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;QACxH;AACA,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAEtC,QAAA,IAAI,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;YAC5D,aAAa,CAAC,IAAI,CAAC,CAAA,eAAA,EAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;QAClF;QACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1E,YAAA,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACzC;aAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7C,YAAA,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAC3C;aAAO;QAGP,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;QAChF,OAAO,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA,CAAG;IAC9B;IAEA,SAAS,MAAM,CAAC,GAAa,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;AACrD,QAAA,OAAO,GAAG,GAAG,CAAC,IAAI,CAAA,EAAA,EAAK,OAAO,GAAG;IACnC;IAEA,SAAS,SAAS,CAAC,MAAuB,EAAA;AACxC,QAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AAEtB,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/E,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,OAAe;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;;YAErB,OAAO,GAAG,IAAI;QAChB;AAAO,aAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;;AAE5B,YAAA,OAAO,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;QACvC;aAAO;;YAEL,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;QACtC;AAEA,QAAA,OAAO,MAAM,CACX,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EACrB,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,EAC5C,CAAA,EAAG,WAAW,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,WAAW,CAAA,EAAA,CAAI,EAC5C,MAAM,CAAC,kBAAkB,CAAC,EAC1B,GAAG,CACJ;IACH;AAEA,IAAA,SAAS,UAAU,GAAA;QACjB,MAAM,OAAO,GAAG,EAAE;QAClB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C;AACA,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAA,EAAA,EAAK,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;QACxC;AACA,QAAA,OAAO,OAAO;IAChB;;;IAIA,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,IAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,IAAA,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC;AAE3B,IAAA,MAAM,iBAAiB,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAChE,IAAA,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IACxD,MAAM,KAAK,GAAG,EAAE;;AAEhB,IAAA,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAClC,IAAA,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACjC,IAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,KAAK,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,CAAA,iDAAA,CAAmD,CAAC;AACrI,IAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,KAAK,CAAC,IAAI,CAAC,YAAY,aAAa,CAAA,iDAAA,CAAmD,CAAC;AAExH,IAAA,KAAK,CAAC,IAAI;;IAER,GAAG,UAAU,EACb,EAAE;;AAEF,IAAA,GAAG,IAAI,EACP,CAAA,sBAAA,EAAyB,WAAW,CAAA,mBAAA,CAAqB,EACzD,GAAG,OAAO,EACV,GAAG,EACH,EAAE,CACH;AACD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB;;;;"}
1
+ {"version":3,"file":"arc4-clientgen-qBTlCOIm.js","sources":["../src/arc4-clientgen.ts"],"sourcesContent":["import * as abi from '@algorandfoundation/algokit-utils/abi'\nimport { existsSync } from 'fs'\nimport { readFile, writeFile } from 'fs/promises'\nimport { ContractReference, OnCompletionAction } from './awst/models'\nimport type { CompilationSet } from './awst_build/models/contract-class-model'\nimport { ContractClassModel } from './awst_build/models/contract-class-model'\nimport type { ABICompatiblePType } from './awst_build/ptypes'\nimport * as ptype from './awst_build/ptypes'\nimport { Constants } from './constants'\nimport { CodeError, InternalError } from './errors'\nimport { logger } from './logger'\nimport type { AlgoFile } from './options'\nimport { AbsolutePath } from './util/absolute-path'\n\ntype Arc56Arg = abi.Arc56Method['args'][number]\n\ntype ClientTask = {\n spec: abi.Arc56Contract\n outFile: AbsolutePath\n}\n\nconst AUTO_GENERATED_COMMENT = '// This file is auto-generated, do not modify'\nconst DISABLE_ESLINT_PRAGMA = '/* eslint-disable */'\n\nconst ARC4_PYTYPE_MAPPING = new Map<string, ABICompatiblePType>([\n ['account', ptype.accountPType],\n ['application', ptype.applicationPType],\n ['asset', ptype.assetPType],\n ['void', ptype.voidPType],\n ['txn', ptype.anyGtxnType],\n ['pay', ptype.paymentGtxnType],\n ['keyreg', ptype.keyRegistrationGtxnType],\n ['acfg', ptype.assetConfigGtxnType],\n ['axfer', ptype.assetTransferGtxnType],\n ['afrz', ptype.assetFreezeGtxnType],\n ['appl', ptype.applicationCallGtxnType],\n])\n\nfunction resolveClients(\n compilationSet: CompilationSet,\n filePaths: AlgoFile[],\n arc56Contracts: Record<string, abi.Arc56Contract>,\n): ClientTask[] {\n const sourceFileToOutDir = new Map<string, AbsolutePath>()\n for (const { sourceFile, outDir } of filePaths) {\n sourceFileToOutDir.set(sourceFile.toString(), outDir)\n }\n\n const arc56Files = []\n for (const ref of compilationSet.compilationOutputSet) {\n if (!(ref instanceof ContractReference)) {\n continue\n }\n const model = compilationSet.get(ref)\n if (!(model instanceof ContractClassModel)) {\n continue\n }\n if (!model.type.isARC4) {\n continue\n }\n\n const sourceFile = AbsolutePath.resolve({ path: ref.moduleName })\n const outDir = sourceFileToOutDir.get(sourceFile.toString())\n if (outDir === undefined) {\n logger.error(undefined, `Could not find a source file for the contract ${ref.className} at ${ref.moduleName}`)\n continue\n }\n\n const spec = arc56Contracts[ref.id]\n if (spec === undefined) {\n logger.error(undefined, `Could not find a generated spec for the contract ${ref.className} at ${ref.moduleName}`)\n continue\n }\n\n const name = model.options?.name || model.name\n arc56Files.push({\n spec,\n outFile: outDir.join(`${name}.client.ts`),\n })\n }\n return arc56Files\n}\n\nexport function writeARC4Clients(compilationSet: CompilationSet, filePaths: AlgoFile[], arc56Contracts: Record<string, abi.Arc56Contract>) {\n const clientFiles = resolveClients(compilationSet, filePaths, arc56Contracts)\n return Promise.all(\n clientFiles.map(async (clientTask) => {\n await writeARC4Client(clientTask.spec, clientTask.outFile)\n }),\n )\n}\n\nexport async function writeARC4Client(spec: abi.Arc56Contract, outFile: AbsolutePath) {\n if (await shouldWriteFile(outFile)) {\n logger.info(undefined, `Writing ${outFile.relativeTo('.')}`)\n const typescriptClient = generateClientFor(spec)\n await writeFile(outFile.toString(), typescriptClient, { encoding: 'utf-8' })\n } else {\n logger.error(undefined, `Not outputting ${outFile.relativeTo('.')} since content does not appear to be auto-generated`)\n }\n}\n\nasync function shouldWriteFile(outFile: AbsolutePath): Promise<boolean> {\n const filePath = outFile.toString()\n // FIXME: There's a TOCTOU bug here...\n if (!existsSync(filePath)) {\n return true\n }\n const contents = await readFile(filePath, { encoding: 'utf-8' })\n return contents.startsWith(AUTO_GENERATED_COMMENT)\n}\n\nfunction generateClientFor(contract: abi.Arc56Contract): string {\n const typeImports = new Set<string>()\n const imports = new Set<string>()\n const structToClass = new Map<string, string>()\n const reservedClassNames = new Set<string>()\n const reservedMethodNames = new Set<string>()\n const classDecls: string[] = []\n\n function useImport(name: string, asValue: boolean) {\n if (asValue) {\n if (typeImports.has(name)) typeImports.delete(name)\n imports.add(name)\n } else if (!imports.has(name)) {\n typeImports.add(name)\n }\n }\n function indent(...texts: string[]): string {\n const INDENT = ' '\n return INDENT + texts.join('\\n').replaceAll(/\\n+/g, `$&${INDENT}`)\n }\n\n function classNameFor(name: string): string {\n const base_name = name\n let seq = 1\n while (reservedClassNames.has(name)) {\n seq++\n name = `${base_name}${seq}`\n }\n\n reservedClassNames.add(name)\n return name\n }\n\n function methodNameFor(name: string): string {\n const base_name = name\n let seq = 1\n while (reservedMethodNames.has(name)) {\n seq++\n name = `${base_name}${seq}`\n }\n\n reservedMethodNames.add(name)\n return name\n }\n\n function typeNameToAlgoTSName(typeName: string): string {\n const knownMapping = ARC4_PYTYPE_MAPPING.get(typeName)\n if (knownMapping !== undefined) {\n const { name, module } = knownMapping\n if (module === Constants.moduleNames.algoTs.gtxn) {\n useImport('gtxn', false)\n return `gtxn.${name}`\n } else if (module === Constants.moduleNames.algoTs.reference) {\n useImport(name, false)\n return name\n } else if (module === Constants.moduleNames.tslib) {\n // The TypeScript prelude is always imported\n return name\n }\n\n throw new InternalError(`Cannot import ${name}: The module ${module} is unsupported`)\n }\n return ARC4ToAlgoTSName(abi.ABIType.from(typeName))\n }\n\n function ARC4ToAlgoTSName(type: abi.ABIType): string {\n useImport('arc4', false)\n if (type instanceof abi.ABIBoolType) return 'arc4.Bool'\n if (type instanceof abi.ABIStringType) return 'arc4.Str'\n if (type instanceof abi.ABIAddressType) return 'arc4.Address'\n if (type instanceof abi.ABIByteType) return 'arc4.Byte'\n if (type instanceof abi.ABIUintType) return `arc4.Uint<${type.bitSize}>`\n if (type instanceof abi.ABIUfixedType) return `arc4.UFixed<${type.bitSize}, ${type.precision}>`\n if (type instanceof abi.ABIArrayStaticType) {\n const elementType = ARC4ToAlgoTSName(type.childType)\n return `arc4.StaticArray<${elementType}, ${type.length}>`\n }\n if (type instanceof abi.ABIArrayDynamicType) {\n if (type.childType instanceof abi.ABIByteType) return 'arc4.DynamicBytes'\n\n const elementType = ARC4ToAlgoTSName(type.childType)\n return `arc4.DynamicArray<${elementType}>`\n }\n if (type instanceof abi.ABITupleType) {\n const tupleTypes = type.childTypes.map(ARC4ToAlgoTSName)\n return `arc4.Tuple<readonly [${tupleTypes.join(', ')}]>`\n }\n throw new CodeError(`unknown ARC-4 type '${type}'`)\n }\n\n function getClientType(type: string): string {\n // map ABI / AVM type to algots type\n if (type === 'AVMUint64') {\n useImport('uint64', false)\n return 'uint64'\n } else if (type === 'AVMBytes') {\n useImport('bytes', false)\n return 'bytes'\n } else if (type in contract.structs) {\n return structToClass.get(type) || prepareStructClass(type, contract.structs[type])\n } else {\n return typeNameToAlgoTSName(type)\n }\n }\n\n function prepareStructClass(name: string, fields: abi.StructField[]) {\n useImport('arc4', true)\n\n const className = classNameFor(name)\n structToClass.set(name, className)\n const lines = ['', `export class ${className} extends arc4.Struct<{`]\n for (const field of fields) {\n let type: string\n if (typeof field.type === 'string') {\n type = getClientType(field.type)\n } else {\n // generate anonymous struct type\n const anonStruct = `${name}_${field.name}`\n type = prepareStructClass(anonStruct, field.type)\n }\n lines.push(indent(`${field.name}: ${type}`))\n }\n lines.push('}> {}')\n classDecls.push(...lines)\n return className\n }\n\n function tsdoc(description: string | undefined | null): string[] {\n if (description === undefined || description === null) {\n return []\n }\n return ['/**', ` * ${description.replaceAll(/\\n+/g, '$& * ')}`, ' */']\n }\n\n function compatibleActions(create: string[], call: string[]): boolean {\n if (create.length === 0) {\n return true\n }\n if (call.length === 0) {\n return true\n }\n // if both collections are present, then they are compatible if everything in\n // create is also in call\n const createSet = new Set(create)\n const callSet = new Set(call)\n return createSet.symmetricDifference(callSet).size === 0\n }\n\n function ARC4MethodToTSDecorator(name: string, method: abi.Arc56Method): string {\n useImport('abimethod', true)\n\n const abimethodArgs: string[] = []\n if (method.name !== name) {\n abimethodArgs.push(`name: '${method.name}'`)\n }\n if (method.readonly) {\n abimethodArgs.push('readonly: true')\n }\n // if any alias types are encountered, force index encoding\n const argTypes = new Set(method.args.map((v) => v.type))\n const aliasTypes = new Set(['asset', 'application', 'account'])\n if (argTypes.intersection(aliasTypes).size !== 0) {\n abimethodArgs.push(\"resourceEncoding: 'index'\")\n }\n if (!compatibleActions(method.actions.create, method.actions.call)) {\n // TODO: support this, once decorators support it\n throw new CodeError(`unsupported on completion combination for generating an ARC-4 client for method: ${method.name}`)\n }\n const actions = [...method.actions.create, ...method.actions.call]\n actions.sort((a, b) => OnCompletionAction[a] - OnCompletionAction[b])\n const uniqueActions = new Set(actions)\n\n if (!(uniqueActions.size === 1 && uniqueActions.has('NoOp'))) {\n abimethodArgs.push(`allowActions: [${actions.map((v) => `'${v}'`).join(', ')}]`)\n }\n if (method.actions.create.length !== 0 && method.actions.call.length !== 0) {\n abimethodArgs.push(\"onCreate: 'allow'\")\n } else if (method.actions.create.length !== 0) {\n abimethodArgs.push(\"onCreate: 'require'\")\n } else {\n // disallow is default\n }\n const args = abimethodArgs.length === 0 ? '' : `{ ${abimethodArgs.join(', ')} }`\n return `@abimethod(${args})`\n }\n\n function genArg(arg: Arc56Arg): string {\n const argType = getClientType(arg.struct || arg.type)\n return `${arg.name}: ${argType},`\n }\n\n function genMethod(method: abi.Arc56Method): string {\n useImport('err', true)\n\n const return_type = getClientType(method.returns.struct || method.returns.type)\n const method_name = methodNameFor(method.name)\n const args = method.args.map(genArg)\n let arglist: string\n if (args.length === 0) {\n // No args -> inline arglist\n arglist = '()'\n } else if (args.length === 1) {\n // One arg -> inline arglist (remove trailing comma)\n arglist = `(${args[0].slice(0, -1)})`\n } else {\n // At least two args -> multiline arglist\n arglist = `(\\n${indent(...args)}\\n)`\n }\n\n return indent(\n ...tsdoc(method.desc),\n ARC4MethodToTSDecorator(method_name, method),\n `${method_name}${arglist}: ${return_type} {`,\n indent(\"err('stub only')\"),\n '}',\n )\n }\n\n function genMethods(): string[] {\n const methods = []\n if (contract.methods.length !== 0) {\n methods.push(genMethod(contract.methods[0]))\n }\n for (const method of contract.methods.slice(1)) {\n methods.push(`\\n${genMethod(method)}`)\n }\n return methods\n }\n\n // generate class definitions for any referenced structs in methods\n // don't generate from self.contract.structs as it may contain other struct definitions\n const clientClass = classNameFor(contract.name)\n const docs = tsdoc(contract.desc)\n const methods = genMethods()\n useImport('Contract', true)\n\n const sortedTypeImports = [...typeImports].toSorted().join(', ')\n const sortedImports = [...imports].toSorted().join(', ')\n const lines = []\n // Header\n lines.push(AUTO_GENERATED_COMMENT)\n lines.push(DISABLE_ESLINT_PRAGMA)\n if (sortedTypeImports.length !== 0) lines.push(`import type { ${sortedTypeImports} } from '@algorandfoundation/algorand-typescript'`)\n if (sortedImports.length !== 0) lines.push(`import { ${sortedImports} } from '@algorandfoundation/algorand-typescript'`)\n\n lines.push(\n // Struct declarations\n ...classDecls,\n '',\n // Contract definition\n ...docs,\n `export abstract class ${clientClass} extends Contract {`,\n ...methods,\n '}',\n '',\n )\n return lines.join('\\n')\n}\n"],"names":["ptype.accountPType","ptype.applicationPType","ptype.assetPType","ptype.voidPType","ptype.anyGtxnType","ptype.paymentGtxnType","ptype.keyRegistrationGtxnType","ptype.assetConfigGtxnType","ptype.assetTransferGtxnType","ptype.assetFreezeGtxnType","ptype.applicationCallGtxnType"],"mappings":";;;;;AAqBA,MAAM,sBAAsB,GAAG,+CAA+C;AAC9E,MAAM,qBAAqB,GAAG,sBAAsB;AAEpD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAA6B;AAC9D,IAAA,CAAC,SAAS,EAAEA,YAAkB,CAAC;AAC/B,IAAA,CAAC,aAAa,EAAEC,gBAAsB,CAAC;AACvC,IAAA,CAAC,OAAO,EAAEC,UAAgB,CAAC;AAC3B,IAAA,CAAC,MAAM,EAAEC,SAAe,CAAC;AACzB,IAAA,CAAC,KAAK,EAAEC,WAAiB,CAAC;AAC1B,IAAA,CAAC,KAAK,EAAEC,eAAqB,CAAC;AAC9B,IAAA,CAAC,QAAQ,EAAEC,uBAA6B,CAAC;AACzC,IAAA,CAAC,MAAM,EAAEC,mBAAyB,CAAC;AACnC,IAAA,CAAC,OAAO,EAAEC,qBAA2B,CAAC;AACtC,IAAA,CAAC,MAAM,EAAEC,mBAAyB,CAAC;AACnC,IAAA,CAAC,MAAM,EAAEC,uBAA6B,CAAC;AACxC,CAAA,CAAC;AAEF,SAAS,cAAc,CACrB,cAA8B,EAC9B,SAAqB,EACrB,cAAiD,EAAA;AAEjD,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAwB;IAC1D,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;QAC9C,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;IACvD;IAEA,MAAM,UAAU,GAAG,EAAE;AACrB,IAAA,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,oBAAoB,EAAE;AACrD,QAAA,IAAI,EAAE,GAAG,YAAY,iBAAiB,CAAC,EAAE;YACvC;QACF;QACA,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,EAAE,KAAK,YAAY,kBAAkB,CAAC,EAAE;YAC1C;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC5D,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,8CAAA,EAAiD,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,UAAU,CAAA,CAAE,CAAC;YAC9G;QACF;QAEA,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AACnC,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,iDAAA,EAAoD,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,UAAU,CAAA,CAAE,CAAC;YACjH;QACF;QAEA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI;QAC9C,UAAU,CAAC,IAAI,CAAC;YACd,IAAI;YACJ,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,YAAY,CAAC;AAC1C,SAAA,CAAC;IACJ;AACA,IAAA,OAAO,UAAU;AACnB;SAEgB,gBAAgB,CAAC,cAA8B,EAAE,SAAqB,EAAE,cAAiD,EAAA;IACvI,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,cAAc,CAAC;AAC7E,IAAA,OAAO,OAAO,CAAC,GAAG,CAChB,WAAW,CAAC,GAAG,CAAC,OAAO,UAAU,KAAI;QACnC,MAAM,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC;IAC5D,CAAC,CAAC,CACH;AACH;AAEO,eAAe,eAAe,CAAC,IAAuB,EAAE,OAAqB,EAAA;AAClF,IAAA,IAAI,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE;AAClC,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA,QAAA,EAAW,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AAC5D,QAAA,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC9E;SAAO;AACL,QAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,eAAA,EAAkB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,mDAAA,CAAqD,CAAC;IACzH;AACF;AAEA,eAAe,eAAe,CAAC,OAAqB,EAAA;AAClD,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;;AAEnC,IAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACzB,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAChE,IAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;AACpD;AAEA,SAAS,iBAAiB,CAAC,QAA2B,EAAA;AACpD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU;AACrC,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU;AACjC,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB;AAC/C,IAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU;AAC5C,IAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU;IAC7C,MAAM,UAAU,GAAa,EAAE;AAE/B,IAAA,SAAS,SAAS,CAAC,IAAY,EAAE,OAAgB,EAAA;QAC/C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAAE,gBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;AACnD,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB;aAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB;IACF;IACA,SAAS,MAAM,CAAC,GAAG,KAAe,EAAA;QAChC,MAAM,MAAM,GAAG,IAAI;AACnB,QAAA,OAAO,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,MAAM,CAAA,CAAE,CAAC;IACpE;IAEA,SAAS,YAAY,CAAC,IAAY,EAAA;QAChC,MAAM,SAAS,GAAG,IAAI;QACtB,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,GAAG,EAAE;AACL,YAAA,IAAI,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,EAAE;QAC7B;AAEA,QAAA,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,OAAO,IAAI;IACb;IAEA,SAAS,aAAa,CAAC,IAAY,EAAA;QACjC,MAAM,SAAS,GAAG,IAAI;QACtB,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACpC,YAAA,GAAG,EAAE;AACL,YAAA,IAAI,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,EAAE;QAC7B;AAEA,QAAA,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,OAAO,IAAI;IACb;IAEA,SAAS,oBAAoB,CAAC,QAAgB,EAAA;QAC5C,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtD,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,YAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY;YACrC,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE;AAChD,gBAAA,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;gBACxB,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE;YACvB;iBAAO,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5D,gBAAA,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AACtB,gBAAA,OAAO,IAAI;YACb;iBAAO,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE;;AAEjD,gBAAA,OAAO,IAAI;YACb;YAEA,MAAM,IAAI,aAAa,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAA,aAAA,EAAgB,MAAM,CAAA,eAAA,CAAiB,CAAC;QACvF;QACA,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD;IAEA,SAAS,gBAAgB,CAAC,IAAiB,EAAA;AACzC,QAAA,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;AACxB,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,WAAW;AAAE,YAAA,OAAO,WAAW;AACvD,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,aAAa;AAAE,YAAA,OAAO,UAAU;AACxD,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,cAAc;AAAE,YAAA,OAAO,cAAc;AAC7D,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,WAAW;AAAE,YAAA,OAAO,WAAW;AACvD,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,WAAW;AAAE,YAAA,OAAO,CAAA,UAAA,EAAa,IAAI,CAAC,OAAO,GAAG;AACxE,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,aAAa;YAAE,OAAO,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG;AAC/F,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,kBAAkB,EAAE;YAC1C,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AACpD,YAAA,OAAO,oBAAoB,WAAW,CAAA,EAAA,EAAK,IAAI,CAAC,MAAM,GAAG;QAC3D;AACA,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,mBAAmB,EAAE;AAC3C,YAAA,IAAI,IAAI,CAAC,SAAS,YAAY,GAAG,CAAC,WAAW;AAAE,gBAAA,OAAO,mBAAmB;YAEzE,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;YACpD,OAAO,CAAA,kBAAA,EAAqB,WAAW,CAAA,CAAA,CAAG;QAC5C;AACA,QAAA,IAAI,IAAI,YAAY,GAAG,CAAC,YAAY,EAAE;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACxD,OAAO,CAAA,qBAAA,EAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC1D;AACA,QAAA,MAAM,IAAI,SAAS,CAAC,uBAAuB,IAAI,CAAA,CAAA,CAAG,CAAC;IACrD;IAEA,SAAS,aAAa,CAAC,IAAY,EAAA;;AAEjC,QAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC1B,YAAA,OAAO,QAAQ;QACjB;AAAO,aAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AAC9B,YAAA,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AACzB,YAAA,OAAO,OAAO;QAChB;AAAO,aAAA,IAAI,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE;AACnC,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpF;aAAO;AACL,YAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC;QACnC;IACF;AAEA,IAAA,SAAS,kBAAkB,CAAC,IAAY,EAAE,MAAyB,EAAA;AACjE,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;AAEvB,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC;AACpC,QAAA,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,CAAA,aAAA,EAAgB,SAAS,CAAA,sBAAA,CAAwB,CAAC;AACrE,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,IAAY;AAChB,YAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,gBAAA,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC;iBAAO;;gBAEL,MAAM,UAAU,GAAG,CAAA,EAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA,CAAE;gBAC1C,IAAI,GAAG,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC;YACnD;AACA,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,KAAK,CAAC,IAAI,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAC,CAAC;QAC9C;AACA,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,QAAA,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB,QAAA,OAAO,SAAS;IAClB;IAEA,SAAS,KAAK,CAAC,WAAsC,EAAA;QACnD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE;AACrD,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,CAAC,KAAK,EAAE,CAAA,GAAA,EAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA,CAAE,EAAE,KAAK,CAAC;IACxE;AAEA,IAAA,SAAS,iBAAiB,CAAC,MAAgB,EAAE,IAAc,EAAA;AACzD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;;;AAGA,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;QAC7B,OAAO,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC;IAC1D;AAEA,IAAA,SAAS,uBAAuB,CAAC,IAAY,EAAE,MAAuB,EAAA;AACpE,QAAA,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;QAE5B,MAAM,aAAa,GAAa,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;YACxB,aAAa,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;QAC9C;AACA,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACtC;;QAEA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AAChD,YAAA,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;YAElE,MAAM,IAAI,SAAS,CAAC,CAAA,iFAAA,EAAoF,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;QACxH;AACA,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAEtC,QAAA,IAAI,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;YAC5D,aAAa,CAAC,IAAI,CAAC,CAAA,eAAA,EAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;QAClF;QACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1E,YAAA,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACzC;aAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7C,YAAA,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAC3C;aAAO;QAGP,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;QAChF,OAAO,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA,CAAG;IAC9B;IAEA,SAAS,MAAM,CAAC,GAAa,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;AACrD,QAAA,OAAO,GAAG,GAAG,CAAC,IAAI,CAAA,EAAA,EAAK,OAAO,GAAG;IACnC;IAEA,SAAS,SAAS,CAAC,MAAuB,EAAA;AACxC,QAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AAEtB,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/E,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,OAAe;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;;YAErB,OAAO,GAAG,IAAI;QAChB;AAAO,aAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;;AAE5B,YAAA,OAAO,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;QACvC;aAAO;;YAEL,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;QACtC;AAEA,QAAA,OAAO,MAAM,CACX,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EACrB,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,EAC5C,CAAA,EAAG,WAAW,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,WAAW,CAAA,EAAA,CAAI,EAC5C,MAAM,CAAC,kBAAkB,CAAC,EAC1B,GAAG,CACJ;IACH;AAEA,IAAA,SAAS,UAAU,GAAA;QACjB,MAAM,OAAO,GAAG,EAAE;QAClB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C;AACA,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAA,EAAA,EAAK,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;QACxC;AACA,QAAA,OAAO,OAAO;IAChB;;;IAIA,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,IAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,IAAA,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC;AAE3B,IAAA,MAAM,iBAAiB,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAChE,IAAA,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IACxD,MAAM,KAAK,GAAG,EAAE;;AAEhB,IAAA,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAClC,IAAA,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACjC,IAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,KAAK,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,CAAA,iDAAA,CAAmD,CAAC;AACrI,IAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,KAAK,CAAC,IAAI,CAAC,YAAY,aAAa,CAAA,iDAAA,CAAmD,CAAC;AAExH,IAAA,KAAK,CAAC,IAAI;;IAER,GAAG,UAAU,EACb,EAAE;;AAEF,IAAA,GAAG,IAAI,EACP,CAAA,sBAAA,EAAyB,WAAW,CAAA,mBAAA,CAAqB,EACzD,GAAG,OAAO,EACV,GAAG,EACH,EAAE,CACH;AACD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB;;;;"}
@@ -2,11 +2,11 @@
2
2
  import { arc32ToArc56 } from '@algorandfoundation/algokit-utils/app-spec';
3
3
  import { ArgumentParser } from 'argparse';
4
4
  import { readFile } from 'fs/promises';
5
- import { w as writeARC4Client } from '../arc4-clientgen-BBdFxRUs.js';
6
- import { a as appVersion } from '../semver-BcvZGdLN.js';
7
- import { c as checkNodeVersion } from '../check-node-version-jdAtH-rx.js';
8
- import { a as addEnumArg, C as ConsoleLogSink } from '../util-DgN3iON1.js';
9
- import { L as LogLevel, l as logger, A as AbsolutePath, P as PuyaError, a as LoggingContext } from '../contract-class-model-CkfUf4wT.js';
5
+ import { w as writeARC4Client } from '../arc4-clientgen-qBTlCOIm.js';
6
+ import { a as appVersion } from '../semver-B0p_0XuH.js';
7
+ import { c as checkNodeVersion } from '../check-node-version-CLFFTDHN.js';
8
+ import { a as addEnumArg, C as ConsoleLogSink } from '../util-Aa8RgOmt.js';
9
+ import { L as LogLevel, l as logger, A as AbsolutePath, P as PuyaError, a as LoggingContext } from '../contract-class-model-BZeEDGw0.js';
10
10
  import '@algorandfoundation/algokit-utils/abi';
11
11
  import 'fs';
12
12
  import 'node:url';
@@ -1 +1 @@
1
- {"version":3,"file":"puyats-clientgen.mjs","sources":["../../src/clientgen.ts"],"sourcesContent":["import type { Arc56Contract } from '@algorandfoundation/algokit-utils/abi'\nimport { arc32ToArc56 } from '@algorandfoundation/algokit-utils/app-spec'\nimport { ArgumentParser } from 'argparse'\nimport { readFile } from 'fs/promises'\nimport { writeARC4Client } from './arc4-clientgen'\nimport { appVersion } from './cli/app-version'\nimport { checkNodeVersion } from './cli/check-node-version'\nimport { addEnumArg } from './cli/util'\nimport { PuyaError } from './errors'\nimport { logger, LoggingContext, LogLevel } from './logger'\nimport { ConsoleLogSink } from './logger/sinks/console-log-sink'\nimport { AbsolutePath } from './util/absolute-path'\nimport './util/polyfills'\n\ninterface ClientgenCommandArgs {\n command: 'clientgen'\n specs: string[]\n out_dir: string\n log_level: LogLevel\n}\n\ninterface VersionCommand {\n command: 'version'\n}\n\ntype PuyaTsClientgenCommand = ClientgenCommandArgs | VersionCommand\n\nasync function parseCliArguments() {\n checkNodeVersion()\n const parser = new ArgumentParser({\n prog: 'puya-ts-clientgen',\n })\n\n addEnumArg(parser, {\n name: '--log-level',\n default: LogLevel.Info,\n enumType: LogLevel,\n help: 'The minimum log level to output',\n })\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.add_argument('specs', {\n metavar: 'SPECS',\n nargs: '+',\n help: 'The path, or paths to the .arc32.json or .arc56.json files',\n })\n parser.add_argument('--out-dir', {\n action: 'store',\n help: 'Where to output clientgen artifacts',\n default: 'out',\n })\n parser.set_defaults({\n command: 'clientgen',\n })\n const result: PuyaTsClientgenCommand = parser.parse_args()\n switch (result.command) {\n case 'clientgen':\n await outputStubs(result.specs, result.out_dir, result.log_level)\n break\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion())\n break\n default:\n parser.print_help()\n break\n }\n}\n\nasync function outputStubs(paths: string[], outDir: string, logLevel: LogLevel) {\n const logCtx = LoggingContext.create()\n return logCtx.run(async () => {\n logger.configure([new ConsoleLogSink(logLevel, AbsolutePath.resolve({ path: '' }))])\n for (const appSpecPath of paths) {\n try {\n const appSpecJSON = JSON.parse(await readFile(appSpecPath, { encoding: 'utf-8' }))\n let appSpec: Arc56Contract\n if (appSpecPath.endsWith('.arc56.json')) {\n appSpec = appSpecJSON\n } else {\n appSpec = arc32ToArc56(appSpecJSON)\n }\n const sourceFile = AbsolutePath.resolve({ path: appSpecPath })\n const outFile = AbsolutePath.resolve({ path: outDir, workingDirectory: sourceFile.resolve('..') }).join(`${appSpec.name}.client.ts`)\n await writeARC4Client(appSpec, outFile)\n } catch (e) {\n if (e instanceof PuyaError) {\n logger.error(e)\n } else if (e instanceof Error) {\n logger.error(e)\n throw e\n } else {\n throw e\n }\n }\n }\n logCtx.exitIfErrors()\n })\n}\n\nvoid parseCliArguments()\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2BA,eAAe,iBAAiB,GAAA;AAC9B,IAAA,gBAAgB,EAAE;AAClB,IAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;AAChC,QAAA,IAAI,EAAE,mBAAmB;AAC1B,KAAA,CAAC;IAEF,UAAU,CAAC,MAAM,EAAE;AACjB,QAAA,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,QAAQ,CAAC,IAAI;AACtB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,IAAI,EAAE,iCAAiC;AACxC,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,IAAI,EAAE,4DAA4D;AACnE,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,IAAI,EAAE,qCAAqC;AAC3C,QAAA,OAAO,EAAE,KAAK;AACf,KAAA,CAAC;IACF,MAAM,CAAC,YAAY,CAAC;AAClB,QAAA,OAAO,EAAE,WAAW;AACrB,KAAA,CAAC;AACF,IAAA,MAAM,MAAM,GAA2B,MAAM,CAAC,UAAU,EAAE;AAC1D,IAAA,QAAQ,MAAM,CAAC,OAAO;AACpB,QAAA,KAAK,WAAW;AACd,YAAA,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;YACjE;AACF,QAAA,KAAK,SAAS;;AAEZ,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACzB;AACF,QAAA;YACE,MAAM,CAAC,UAAU,EAAE;YACnB;;AAEN;AAEA,eAAe,WAAW,CAAC,KAAe,EAAE,MAAc,EAAE,QAAkB,EAAA;AAC5E,IAAA,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE;AACtC,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,YAAW;QAC3B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACpF,QAAA,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE;AAC/B,YAAA,IAAI;AACF,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AAClF,gBAAA,IAAI,OAAsB;AAC1B,gBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;oBACvC,OAAO,GAAG,WAAW;gBACvB;qBAAO;AACL,oBAAA,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;gBACrC;AACA,gBAAA,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC9D,gBAAA,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA,EAAG,OAAO,CAAC,IAAI,CAAA,UAAA,CAAY,CAAC;AACpI,gBAAA,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;YACzC;YAAE,OAAO,CAAC,EAAE;AACV,gBAAA,IAAI,CAAC,YAAY,SAAS,EAAE;AAC1B,oBAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjB;AAAO,qBAAA,IAAI,CAAC,YAAY,KAAK,EAAE;AAC7B,oBAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,oBAAA,MAAM,CAAC;gBACT;qBAAO;AACL,oBAAA,MAAM,CAAC;gBACT;YACF;QACF;QACA,MAAM,CAAC,YAAY,EAAE;AACvB,IAAA,CAAC,CAAC;AACJ;AAEA,KAAK,iBAAiB,EAAE"}
1
+ {"version":3,"file":"puyats-clientgen.mjs","sources":["../../src/clientgen.ts"],"sourcesContent":["import type { Arc56Contract } from '@algorandfoundation/algokit-utils/abi'\nimport { arc32ToArc56 } from '@algorandfoundation/algokit-utils/app-spec'\nimport { ArgumentParser } from 'argparse'\nimport { readFile } from 'fs/promises'\nimport { writeARC4Client } from './arc4-clientgen'\nimport { appVersion } from './cli/app-version'\nimport { checkNodeVersion } from './cli/check-node-version'\nimport { addEnumArg } from './cli/util'\nimport { PuyaError } from './errors'\nimport { logger, LoggingContext, LogLevel } from './logger'\nimport { ConsoleLogSink } from './logger/sinks/console-log-sink'\nimport { AbsolutePath } from './util/absolute-path'\n\ninterface ClientgenCommandArgs {\n command: 'clientgen'\n specs: string[]\n out_dir: string\n log_level: LogLevel\n}\n\ninterface VersionCommand {\n command: 'version'\n}\n\ntype PuyaTsClientgenCommand = ClientgenCommandArgs | VersionCommand\n\nasync function parseCliArguments() {\n checkNodeVersion()\n const parser = new ArgumentParser({\n prog: 'puya-ts-clientgen',\n })\n\n addEnumArg(parser, {\n name: '--log-level',\n default: LogLevel.Info,\n enumType: LogLevel,\n help: 'The minimum log level to output',\n })\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.add_argument('specs', {\n metavar: 'SPECS',\n nargs: '+',\n help: 'The path, or paths to the .arc32.json or .arc56.json files',\n })\n parser.add_argument('--out-dir', {\n action: 'store',\n help: 'Where to output clientgen artifacts',\n default: 'out',\n })\n parser.set_defaults({\n command: 'clientgen',\n })\n const result: PuyaTsClientgenCommand = parser.parse_args()\n switch (result.command) {\n case 'clientgen':\n await outputStubs(result.specs, result.out_dir, result.log_level)\n break\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion())\n break\n default:\n parser.print_help()\n break\n }\n}\n\nasync function outputStubs(paths: string[], outDir: string, logLevel: LogLevel) {\n const logCtx = LoggingContext.create()\n return logCtx.run(async () => {\n logger.configure([new ConsoleLogSink(logLevel, AbsolutePath.resolve({ path: '' }))])\n for (const appSpecPath of paths) {\n try {\n const appSpecJSON = JSON.parse(await readFile(appSpecPath, { encoding: 'utf-8' }))\n let appSpec: Arc56Contract\n if (appSpecPath.endsWith('.arc56.json')) {\n appSpec = appSpecJSON\n } else {\n appSpec = arc32ToArc56(appSpecJSON)\n }\n const sourceFile = AbsolutePath.resolve({ path: appSpecPath })\n const outFile = AbsolutePath.resolve({ path: outDir, workingDirectory: sourceFile.resolve('..') }).join(`${appSpec.name}.client.ts`)\n await writeARC4Client(appSpec, outFile)\n } catch (e) {\n if (e instanceof PuyaError) {\n logger.error(e)\n } else if (e instanceof Error) {\n logger.error(e)\n throw e\n } else {\n throw e\n }\n }\n }\n logCtx.exitIfErrors()\n })\n}\n\nvoid parseCliArguments()\n"],"names":[],"mappings":"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"}
package/bin/puyats-ls.mjs CHANGED
@@ -1,25 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import { L as LogLevel, cl as distinct, l as logger, cm as zipStrict, d as Constants } from '../contract-class-model-CkfUf4wT.js';
3
2
  import { ArgumentParser, BooleanOptionalAction } from 'argparse';
4
- import { b as packageVersion, a as appVersion } from '../semver-BcvZGdLN.js';
5
- import { c as checkNodeVersion } from '../check-node-version-jdAtH-rx.js';
3
+ import { b as packageVersion, a as appVersion } from '../semver-B0p_0XuH.js';
4
+ import { c as checkNodeVersion } from '../check-node-version-CLFFTDHN.js';
6
5
  import { __esDecorate, __runInitializers } from 'tslib';
7
- import { r as requireMain, l as logCaughtExpression, L as LogExceptions, c as createAnalyserService, a as createNormalisedTextDocumentConnection, n as normalisedUri, i as isCodeFixData } from '../analyser-service-C1sYEdlC.js';
8
- import { r as resolvePuyaPath } from '../resolve-puya-path-C4sw8aVH.js';
6
+ import { r as requireMain, l as logCaughtExpression, L as LogExceptions, c as createAnalyserService, a as createNormalisedTextDocumentConnection, n as normalisedUri, i as isCodeFixData } from '../analyser-service-Bk9GEtDA.js';
7
+ import { L as LogLevel, cl as distinct, l as logger, cm as zipStrict, d as Constants } from '../contract-class-model-BZeEDGw0.js';
8
+ import { r as resolvePuyaPath } from '../resolve-puya-path-Ba54kz9o.js';
9
9
  import EventEmitter from 'node:events';
10
- import { a7 as DefaultMap } from '../options-BMqysQHP.js';
11
- import 'typescript';
12
- import 'node:fs';
13
- import 'node:util';
14
- import 'pathe';
15
- import 'node:crypto';
16
- import 'polytype';
17
- import 'node:async_hooks';
10
+ import { a7 as DefaultMap } from '../options-DD9MApH4.js';
18
11
  import 'fs';
19
12
  import 'node:url';
13
+ import 'pathe';
20
14
  import 'chalk';
21
15
  import 'crypto';
22
16
  import 'node:worker_threads';
17
+ import 'typescript';
18
+ import 'node:util';
23
19
  import 'util';
24
20
  import 'path';
25
21
  import 'os';
@@ -27,6 +23,10 @@ import 'net';
27
23
  import 'url';
28
24
  import 'child_process';
29
25
  import 'glob';
26
+ import 'node:fs';
27
+ import 'node:crypto';
28
+ import 'polytype';
29
+ import 'node:async_hooks';
30
30
  import 'signal-exit';
31
31
  import 'cross-spawn';
32
32
  import 'tar';
@@ -1 +1 @@
1
- {"version":3,"file":"puyats-ls.mjs","sources":["../../node_modules/vscode-languageserver-textdocument/lib/esm/main.js","../../node_modules/vscode-languageserver/node.js","../../src/logger/sinks/language-server-log-sink.ts","../../src/language-server/compile-trigger-queue.ts","../../src/language-server/compile-worker.ts","../../src/language-server/diagnostics-manager.ts","../../src/language-server/puya-language-server.ts","../../src/language-server/parse.ts","../../src/cli-ls.ts"],"sourcesContent":["/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nclass FullTextDocument {\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(changes, version) {\n for (const change of changes) {\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n const range = getWellformedRange(change.range);\n // update content\n const startOffset = this.offsetAt(range.start);\n const endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n const startLine = Math.max(range.start.line, 0);\n const endLine = Math.max(range.end.line, 0);\n let lineOffsets = this._lineOffsets;\n const addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (let i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets);\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n const diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n const line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line, character: offset - lineOffsets[line] };\n }\n offsetAt(position) {\n const lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n const lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n const nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n const offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n }\n ensureBeforeEOL(offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n static isIncremental(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n static isFull(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n}\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifying its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @param version the changes version for the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n const text = document.getText();\n const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => {\n const diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = 0;\n const spans = [];\n for (const e of sortedEdits) {\n const startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\nfunction computeLineOffsets(text, isAtLineStart, textOffset = 0) {\n const result = isAtLineStart ? [textOffset] : [];\n for (let i = 0; i < text.length; i++) {\n const ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction isEOL(char) {\n return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */;\n}\nfunction getWellformedRange(range) {\n const start = range.start;\n const end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n const range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range };\n }\n return textEdit;\n}\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","import type * as lsp from 'vscode-languageserver/node'\nimport type { LogEvent } from '../index'\nimport { LogLevel } from '../index'\nimport type { LogSink } from './index'\n\nexport class LanguageServerLogSink implements LogSink {\n constructor(private connection: lsp.Connection) {}\n\n minLogLevel = LogLevel.Debug\n\n add(e: LogEvent): void {\n if (e.sourceLocation) return // Ignore code specific logs\n\n switch (e.level) {\n case 'error':\n case 'info':\n case 'debug':\n this.connection.console[e.level](e.message)\n break\n case 'warning':\n this.connection.console.warn(e.message)\n break\n case 'critical':\n this.connection.console.error(e.message)\n break\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver/node'\nimport { distinct } from '../util'\n\ntype WorkspaceCompileTrigger = {\n type: 'workspace'\n uris: lsp.URI[]\n}\ntype FileCompileTrigger = {\n type: 'file'\n uris: lsp.URI[]\n}\n\nexport type CompileTrigger = WorkspaceCompileTrigger | FileCompileTrigger\n\ntype CompileTriggerQueueEvents = {\n itemEnqueued: [CompileTrigger]\n}\n\nexport class CompileTriggerQueue {\n private readonly queue: CompileTrigger[] = []\n private readonly events = new EventEmitter<CompileTriggerQueueEvents>()\n\n enqueue(trigger: CompileTrigger) {\n const lastInQueue = this.queue.at(-1)\n if (trigger.type === lastInQueue?.type) {\n this.queue.splice(-1, 1, {\n type: trigger.type,\n uris: lastInQueue.uris.concat(trigger.uris).filter(distinct()),\n })\n } else {\n this.queue.push(trigger)\n }\n this.events.emit('itemEnqueued', this.queue.at(-1)!)\n }\n\n tryDequeue(): CompileTrigger | undefined {\n return this.queue.shift()\n }\n\n onItemEnqueued(handler: (...args: CompileTriggerQueueEvents['itemEnqueued']) => void): lsp.Disposable {\n this.events.on('itemEnqueued', handler)\n return {\n dispose: () => {\n this.events.off('itemEnqueued', handler)\n },\n }\n }\n}\n","import type { TextDocument } from 'vscode-languageserver-textdocument'\nimport type { TextDocuments } from 'vscode-languageserver/node.js'\nimport { logger } from '../logger'\nimport type { AnalyserService, OpenDocuments } from './analyser-service'\nimport type { CompileTrigger, CompileTriggerQueue } from './compile-trigger-queue'\nimport type { DiagnosticsManager } from './diagnostics-manager'\nimport { logCaughtExpression, LogExceptions } from './util/log-exceptions'\n\ntype ActiveBuild = {\n trigger: CompileTrigger\n abort: AbortController\n}\n\nexport class CompileWorker {\n stopping: boolean = false\n private stopped = Promise.withResolvers<void>()\n private sleeping: PromiseWithResolvers<void> | undefined = undefined\n private activeBuild: ActiveBuild | undefined = undefined\n constructor(\n private readonly queue: CompileTriggerQueue,\n private readonly analyserService: AnalyserService,\n private readonly documents: TextDocuments<TextDocument>,\n private readonly diagnostics: DiagnosticsManager,\n ) {\n this.queue.onItemEnqueued(this.onCompileTriggerQueueItemQueued.bind(this))\n }\n\n start() {\n setTimeout(async () => {\n while (!this.stopping) {\n try {\n const trigger = this.queue.tryDequeue()\n if (trigger) {\n logger.debug(undefined, `[Compile Worker] Found ${trigger.type} compile ${trigger.uris.join(', ')}`)\n this.activeBuild = { abort: new AbortController(), trigger }\n await this.compileWithService(trigger, this.activeBuild.abort.signal)\n delete this.activeBuild\n } else {\n logger.debug(undefined, `[Compile Worker] No work, sleeping`)\n this.sleeping = Promise.withResolvers()\n await this.sleeping.promise\n delete this.sleeping\n }\n } catch (e) {\n logCaughtExpression(e)\n }\n }\n this.stopped.resolve()\n })\n }\n\n @LogExceptions\n async stop() {\n this.stopping = true\n this.sleeping?.resolve()\n this.activeBuild?.abort.abort()\n await this.stopped.promise\n }\n\n onCompileTriggerQueueItemQueued(trigger: CompileTrigger) {\n if (this.activeBuild) {\n if (this.activeBuild.trigger.type === trigger.type) {\n if (new Set(trigger.uris).isSubsetOf(new Set(this.activeBuild.trigger.uris))) {\n logger.debug(undefined, `[Compile Worker] Aborting build, newer version of file is available`)\n this.activeBuild.abort.abort('Build superseded')\n }\n }\n }\n if (this.sleeping) {\n logger.debug(undefined, `[Compile Worker] New work, waking worker`)\n this.sleeping.resolve()\n }\n }\n\n private async compileWithService(trigger: CompileTrigger, abort: AbortSignal) {\n const openDocuments = this.documents.all().reduce((acc: OpenDocuments, cur) => {\n acc[cur.uri] = {\n contents: cur.getText(),\n version: cur.version,\n }\n return acc\n }, {})\n try {\n const results = await this.analyserService.analyse(\n {\n uris: trigger.uris,\n openDocuments,\n },\n abort,\n )\n for (const file of results) {\n this.diagnostics.setDiagnostics(file)\n }\n } catch (e) {\n if (e === 'aborted') return\n throw e\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver'\nimport { logger } from '../logger'\nimport { zipStrict } from '../util'\nimport { DefaultMap } from '../util/default-map'\n\nfunction diagnosticsAreSame(a: lsp.Diagnostic, b: lsp.Diagnostic) {\n return (\n a.message === b.message &&\n a.range.start.line === b.range.start.line &&\n a.range.start.character === b.range.start.character &&\n a.range.end.line === b.range.end.line &&\n a.range.end.character === b.range.end.character &&\n a.severity === b.severity\n )\n}\n\nfunction isSameOrMoreRecentVersion(prev: number | undefined, next: number | undefined): boolean {\n if (prev === undefined || next === undefined) return true\n return prev <= next\n}\n\nexport class SourceFileDiagnostics {\n private diagnostics: lsp.Diagnostic[] | 'pending' = 'pending'\n private version: number | undefined\n /**\n * Update the diagnostics for this file and return a boolean indicating if they have changed\n * @param version The file version used to generate these diagnostics\n * @param diagnostics\n */\n setDiagnostics({ version, diagnostics }: { diagnostics: lsp.Diagnostic[] | 'pending'; version: number | undefined }): boolean {\n // Ignore older diagnostics (even though this shouldn't happen)\n if (!isSameOrMoreRecentVersion(this.version, version)) return false\n if (diagnostics !== 'pending' && this.diagnostics !== 'pending' && diagnostics.length === this.diagnostics.length) {\n if (zipStrict(this.diagnostics, diagnostics).every(([l, r]) => diagnosticsAreSame(l, r))) {\n this.version = version\n return false\n }\n }\n this.diagnostics = diagnostics\n this.version = version\n\n return true\n }\n}\nexport type FileWithDiagnostics = {\n uri: lsp.DocumentUri\n version: number | undefined\n diagnostics: lsp.Diagnostic[]\n}\n\ntype DiagnosticEvents = {\n fileDiagnosticsChanged: [event: FileWithDiagnostics]\n}\n\nexport class DiagnosticsManager {\n private readonly sourceFiles = new DefaultMap<lsp.DocumentUri, SourceFileDiagnostics>()\n private readonly events = new EventEmitter<DiagnosticEvents>()\n\n setDiagnostics({\n uri,\n diagnostics,\n version,\n }: {\n uri: lsp.DocumentUri\n diagnostics: lsp.Diagnostic[] | 'pending'\n version: number | undefined\n }) {\n logger.debug(\n undefined,\n `[DiagMgr] Setting diagnostics for ${uri} ${version ?? '<no version>'} (${diagnostics === 'pending' ? 'pending' : diagnostics.length})`,\n )\n const fileDiagnostics = this.sourceFiles.getOrDefault(uri, () => new SourceFileDiagnostics())\n if (fileDiagnostics.setDiagnostics({ diagnostics, version })) {\n if (diagnostics === 'pending') return\n this.events.emit('fileDiagnosticsChanged', { uri, diagnostics, version })\n }\n }\n\n onFileDiagnosticsChanged(handler: (...args: DiagnosticEvents['fileDiagnosticsChanged']) => void): lsp.Disposable {\n this.events.on('fileDiagnosticsChanged', handler)\n return {\n dispose: () => {\n this.events.off('fileDiagnosticsChanged', handler)\n },\n }\n }\n}\n","import { TextDocument } from 'vscode-languageserver-textdocument'\nimport * as lsp from 'vscode-languageserver/node'\nimport { appVersion, packageVersion } from '../cli/app-version'\nimport { Constants } from '../constants'\nimport { logger, LogLevel } from '../logger'\nimport { LanguageServerLogSink } from '../logger/sinks/language-server-log-sink'\nimport { resolvePuyaPath } from '../puya/resolve-puya-path'\nimport type { AnalyserService } from './analyser-service'\nimport { createAnalyserService } from './analyser-service'\nimport { CompileTriggerQueue } from './compile-trigger-queue'\nimport { CompileWorker } from './compile-worker'\nimport type { FileWithDiagnostics } from './diagnostics-manager'\nimport { DiagnosticsManager } from './diagnostics-manager'\nimport { isCodeFixData } from './mapping'\nimport { LogExceptions } from './util/log-exceptions'\nimport { createNormalisedTextDocumentConnection, normalisedUri } from './util/uris'\n\ninterface LanguageServerConfiguration {\n // use LogLevel member names to maintain consistency with other extension settings\n logLevel?: Omit<keyof typeof LogLevel, 'Critical'>\n debounce?: number\n}\n\nconst resolveConnection = async (lspPort: number | undefined) => {\n if (!lspPort) {\n return lsp.createConnection(lsp.ProposedFeatures.all)\n }\n\n // When the debug env variable PUYA_TS_DEBUG_LSP_PORT is set, we start the server with socket transport.\n // Note: this is actually the opposite to how vscode-languageserver is designed.\n // Normally, the extension is the web socker server and the language server is the client.\n // Here, we flip it. This allows an easier debugging experience.\n // If changes are made to the language server, you can just restart the debugger\n // and choose the option \"Restart language server\" in the VS Code extension host instance.\n const transport = await lsp.createClientSocketTransport(lspPort)\n const protocol = await transport.onConnected()\n\n return lsp.createConnection(lsp.ProposedFeatures.all, protocol[0], protocol[1])\n}\n\nexport type LanguageServerOptions = {\n port?: number\n customPuyaPath?: string\n}\n\nconst PACKAGE_VERSION = packageVersion()\n\nclass PuyaLanguageServer {\n readonly documents = new lsp.TextDocuments(TextDocument)\n readonly triggers = new CompileTriggerQueue()\n readonly workspaceFolders: lsp.URI[] = []\n readonly diagnosticsMgr: DiagnosticsManager\n readonly compileWorker: CompileWorker\n readonly analyserService: AnalyserService\n stopping = false\n\n constructor(\n public readonly connection: lsp.Connection,\n private readonly loggingSink: LanguageServerLogSink,\n puyaPath: string,\n ) {\n this.diagnosticsMgr = new DiagnosticsManager()\n this.analyserService = createAnalyserService({ puyaPath })\n this.compileWorker = new CompileWorker(this.triggers, this.analyserService, this.documents, this.diagnosticsMgr)\n\n connection.onInitialize(this.initialize.bind(this))\n connection.onInitialized(this.initialized.bind(this))\n connection.onCodeAction(this.codeAction.bind(this))\n connection.onDidChangeConfiguration(this.configurationChange.bind(this))\n this.documents.onDidChangeContent(this.documentDidChangeContent.bind(this))\n this.diagnosticsMgr.onFileDiagnosticsChanged(this.fileDiagnosticsChanged.bind(this))\n connection.onShutdown(this.shutdown.bind(this))\n }\n\n start() {\n this.documents.listen(createNormalisedTextDocumentConnection(this.connection))\n this.connection.listen()\n this.compileWorker.start()\n }\n\n async shutdown() {\n logger.debug(undefined, '[PuyaLanguageServer] Shutting down')\n this.stopping = true\n await this.compileWorker.stop()\n await this.analyserService.shutdown()\n logger.debug(undefined, '[PuyaLanguageServer] Shutdown')\n }\n\n initialize(params: lsp.InitializeParams): lsp.InitializeResult {\n this.workspaceFolders.push(...(params.workspaceFolders?.map((f) => normalisedUri({ uri: f.uri }).toString()) ?? []))\n this.triggers.enqueue({\n type: 'workspace',\n uris: this.workspaceFolders,\n })\n return {\n serverInfo: {\n name: 'Puya-TS Language Server',\n version: PACKAGE_VERSION,\n },\n capabilities: {\n textDocumentSync: lsp.TextDocumentSyncKind.Incremental,\n codeActionProvider: {\n resolveProvider: false,\n },\n },\n }\n }\n\n @LogExceptions\n initialized(params: lsp.InitializedParams) {\n logger.debug(undefined, `${Constants.languageServerSource}-ls initialized`)\n }\n\n @LogExceptions\n async fileDiagnosticsChanged(params: FileWithDiagnostics) {\n if (this.stopping) {\n logger.debug(undefined, `[Diagnostics Ignored (shutting down)]: ${params.uri}`)\n return\n }\n logger.debug(undefined, `[Diagnostics Changed]: ${params.uri}`)\n\n await this.connection.sendDiagnostics(params)\n logger.debug(undefined, `[Diagnostics Sent]: ${params.uri}`)\n }\n\n @LogExceptions\n documentDidChangeContent(params: lsp.TextDocumentChangeEvent<TextDocument>) {\n if (this.stopping) return\n const normalizedDocumentUri = normalisedUri({ uri: params.document.uri }).toString()\n logger.debug(undefined, `[Document Changed]: ${normalizedDocumentUri}`)\n this.diagnosticsMgr.setDiagnostics({ uri: normalizedDocumentUri, version: params.document.version, diagnostics: 'pending' })\n\n this.triggers.enqueue({\n type: 'file',\n uris: [normalizedDocumentUri],\n })\n }\n\n /**\n * Bound to connection.onCodeAction and called when a user hovers over a piece of code.\n *\n * Params includes the text range the user is hovering over and any diagnostics known to the\n * client at the time.\n *\n * Response should include actions the user can take and the command or text edits that should be\n * invoked/applied if selected\n * @param params\n */\n @LogExceptions\n codeAction(params: lsp.CodeActionParams): lsp.CodeAction[] {\n return params.context.diagnostics.flatMap((d): lsp.CodeAction | lsp.CodeAction[] => {\n if (isCodeFixData(d.data)) {\n return {\n title: d.data.message,\n kind: lsp.CodeActionKind.QuickFix,\n diagnostics: [d],\n edit: {\n changes: {\n [params.textDocument.uri]: [...d.data.edits],\n },\n },\n }\n }\n return []\n })\n }\n\n @LogExceptions\n configurationChange(params: lsp.DidChangeConfigurationParams) {\n const settings = params.settings as LanguageServerConfiguration\n const logLevel = LogLevel[settings.logLevel as keyof typeof LogLevel]\n if (logLevel !== undefined) {\n logger.debug(undefined, `setting log level to ${logLevel}`)\n this.loggingSink.minLogLevel = logLevel\n }\n }\n}\n\n// eslint-disable-next-line no-console\nconst cliLog = console.error\n\nexport async function startLanguageServer(options: LanguageServerOptions) {\n cliLog(`Puya-TS Language Server:\\n${appVersion({ withAVMVersion: false })}`)\n const connection = await resolveConnection(options.port)\n const languageServerSink = new LanguageServerLogSink(connection)\n logger.configure([languageServerSink])\n try {\n const puyaPath = await resolvePuyaPath(options)\n const server = new PuyaLanguageServer(connection, languageServerSink, puyaPath)\n server.start()\n } catch (e) {\n connection.console.error(`Unhandled exception ${e}`)\n }\n}\n","import { ArgumentParser, BooleanOptionalAction } from 'argparse'\nimport { appVersion } from '../cli/app-version'\nimport { checkNodeVersion } from '../cli/check-node-version'\nimport type { LanguageServerOptions } from './puya-language-server'\nimport { startLanguageServer } from './puya-language-server'\n\nexport async function parseCliArguments() {\n checkNodeVersion()\n const prog = 'puyats-ls'\n const parser = new ArgumentParser({\n prog,\n })\n\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.add_argument('--debug-mode', {\n help: 'Start the language server in debug mode. Server will listen on the debug port (default 4001) for connections.',\n default: false,\n dest: 'debugMode',\n action: BooleanOptionalAction,\n })\n const [result, _] = parser.parse_known_args() as [PuyaTsCommand, unknown]\n\n switch (result.command) {\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion({ name: prog }))\n break\n default: {\n const options: LanguageServerOptions = {\n port: result.debugMode ? (parsePort(process.env.PUYA_TS_DEBUG_LSP_PORT) ?? 4001) : undefined,\n }\n\n await startLanguageServer(options)\n break\n }\n }\n}\n\ntype PuyaTsCommand = NoCommandArgs | VersionCommand\ninterface NoCommandArgs {\n command: 'none'\n debugMode: boolean\n}\ninterface VersionCommand {\n command: 'version'\n}\n\nfunction parsePort(value: string | undefined) {\n if (value === undefined) return undefined\n const val = Number(value)\n if (val > 0 && val < 2 ** 16 && Math.floor(val) === val) {\n return val\n }\n throw new Error(`Invalid port number ${value}`)\n}\n","import './util/polyfills'\nimport { parseCliArguments } from './language-server/parse'\n\nvoid parseCliArguments()\n"],"names":["require$$0","lsp.createConnection","lsp.ProposedFeatures","lsp.createClientSocketTransport","lsp.TextDocuments","lsp.TextDocumentSyncKind","lsp.CodeActionKind"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"puyats-ls.mjs","sources":["../../node_modules/vscode-languageserver-textdocument/lib/esm/main.js","../../node_modules/vscode-languageserver/node.js","../../src/logger/sinks/language-server-log-sink.ts","../../src/language-server/compile-trigger-queue.ts","../../src/language-server/compile-worker.ts","../../src/language-server/diagnostics-manager.ts","../../src/language-server/puya-language-server.ts","../../src/language-server/parse.ts","../../src/cli-ls.ts"],"sourcesContent":["/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nclass FullTextDocument {\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(changes, version) {\n for (const change of changes) {\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n const range = getWellformedRange(change.range);\n // update content\n const startOffset = this.offsetAt(range.start);\n const endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n const startLine = Math.max(range.start.line, 0);\n const endLine = Math.max(range.end.line, 0);\n let lineOffsets = this._lineOffsets;\n const addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (let i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets);\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n const diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n const line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line, character: offset - lineOffsets[line] };\n }\n offsetAt(position) {\n const lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n const lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n const nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n const offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n }\n ensureBeforeEOL(offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n static isIncremental(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n static isFull(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n}\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifying its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @param version the changes version for the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n const text = document.getText();\n const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => {\n const diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = 0;\n const spans = [];\n for (const e of sortedEdits) {\n const startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\nfunction computeLineOffsets(text, isAtLineStart, textOffset = 0) {\n const result = isAtLineStart ? [textOffset] : [];\n for (let i = 0; i < text.length; i++) {\n const ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction isEOL(char) {\n return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */;\n}\nfunction getWellformedRange(range) {\n const start = range.start;\n const end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n const range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range };\n }\n return textEdit;\n}\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","import type * as lsp from 'vscode-languageserver/node'\nimport type { LogEvent } from '../index'\nimport { LogLevel } from '../index'\nimport type { LogSink } from './index'\n\nexport class LanguageServerLogSink implements LogSink {\n constructor(private connection: lsp.Connection) {}\n\n minLogLevel = LogLevel.Debug\n\n add(e: LogEvent): void {\n if (e.sourceLocation) return // Ignore code specific logs\n\n switch (e.level) {\n case 'error':\n case 'info':\n case 'debug':\n this.connection.console[e.level](e.message)\n break\n case 'warning':\n this.connection.console.warn(e.message)\n break\n case 'critical':\n this.connection.console.error(e.message)\n break\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver/node'\nimport { distinct } from '../util'\n\ntype WorkspaceCompileTrigger = {\n type: 'workspace'\n uris: lsp.URI[]\n}\ntype FileCompileTrigger = {\n type: 'file'\n uris: lsp.URI[]\n}\n\nexport type CompileTrigger = WorkspaceCompileTrigger | FileCompileTrigger\n\ntype CompileTriggerQueueEvents = {\n itemEnqueued: [CompileTrigger]\n}\n\nexport class CompileTriggerQueue {\n private readonly queue: CompileTrigger[] = []\n private readonly events = new EventEmitter<CompileTriggerQueueEvents>()\n\n enqueue(trigger: CompileTrigger) {\n const lastInQueue = this.queue.at(-1)\n if (trigger.type === lastInQueue?.type) {\n this.queue.splice(-1, 1, {\n type: trigger.type,\n uris: lastInQueue.uris.concat(trigger.uris).filter(distinct()),\n })\n } else {\n this.queue.push(trigger)\n }\n this.events.emit('itemEnqueued', this.queue.at(-1)!)\n }\n\n tryDequeue(): CompileTrigger | undefined {\n return this.queue.shift()\n }\n\n onItemEnqueued(handler: (...args: CompileTriggerQueueEvents['itemEnqueued']) => void): lsp.Disposable {\n this.events.on('itemEnqueued', handler)\n return {\n dispose: () => {\n this.events.off('itemEnqueued', handler)\n },\n }\n }\n}\n","import type { TextDocument } from 'vscode-languageserver-textdocument'\nimport type { TextDocuments } from 'vscode-languageserver/node.js'\nimport { logger } from '../logger'\nimport type { AnalyserService, OpenDocuments } from './analyser-service'\nimport type { CompileTrigger, CompileTriggerQueue } from './compile-trigger-queue'\nimport type { DiagnosticsManager } from './diagnostics-manager'\nimport { logCaughtExpression, LogExceptions } from './util/log-exceptions'\n\ntype ActiveBuild = {\n trigger: CompileTrigger\n abort: AbortController\n}\n\nexport class CompileWorker {\n stopping: boolean = false\n private stopped = Promise.withResolvers<void>()\n private sleeping: PromiseWithResolvers<void> | undefined = undefined\n private activeBuild: ActiveBuild | undefined = undefined\n constructor(\n private readonly queue: CompileTriggerQueue,\n private readonly analyserService: AnalyserService,\n private readonly documents: TextDocuments<TextDocument>,\n private readonly diagnostics: DiagnosticsManager,\n ) {\n this.queue.onItemEnqueued(this.onCompileTriggerQueueItemQueued.bind(this))\n }\n\n start() {\n setTimeout(async () => {\n while (!this.stopping) {\n try {\n const trigger = this.queue.tryDequeue()\n if (trigger) {\n logger.debug(undefined, `[Compile Worker] Found ${trigger.type} compile ${trigger.uris.join(', ')}`)\n this.activeBuild = { abort: new AbortController(), trigger }\n await this.compileWithService(trigger, this.activeBuild.abort.signal)\n delete this.activeBuild\n } else {\n logger.debug(undefined, `[Compile Worker] No work, sleeping`)\n this.sleeping = Promise.withResolvers()\n await this.sleeping.promise\n delete this.sleeping\n }\n } catch (e) {\n logCaughtExpression(e)\n }\n }\n this.stopped.resolve()\n })\n }\n\n @LogExceptions\n async stop() {\n this.stopping = true\n this.sleeping?.resolve()\n this.activeBuild?.abort.abort()\n await this.stopped.promise\n }\n\n onCompileTriggerQueueItemQueued(trigger: CompileTrigger) {\n if (this.activeBuild) {\n if (this.activeBuild.trigger.type === trigger.type) {\n if (new Set(trigger.uris).isSubsetOf(new Set(this.activeBuild.trigger.uris))) {\n logger.debug(undefined, `[Compile Worker] Aborting build, newer version of file is available`)\n this.activeBuild.abort.abort('Build superseded')\n }\n }\n }\n if (this.sleeping) {\n logger.debug(undefined, `[Compile Worker] New work, waking worker`)\n this.sleeping.resolve()\n }\n }\n\n private async compileWithService(trigger: CompileTrigger, abort: AbortSignal) {\n const openDocuments = this.documents.all().reduce((acc: OpenDocuments, cur) => {\n acc[cur.uri] = {\n contents: cur.getText(),\n version: cur.version,\n }\n return acc\n }, {})\n try {\n const results = await this.analyserService.analyse(\n {\n uris: trigger.uris,\n openDocuments,\n },\n abort,\n )\n for (const file of results) {\n this.diagnostics.setDiagnostics(file)\n }\n } catch (e) {\n if (e === 'aborted') return\n throw e\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver'\nimport { logger } from '../logger'\nimport { zipStrict } from '../util'\nimport { DefaultMap } from '../util/default-map'\n\nfunction diagnosticsAreSame(a: lsp.Diagnostic, b: lsp.Diagnostic) {\n return (\n a.message === b.message &&\n a.range.start.line === b.range.start.line &&\n a.range.start.character === b.range.start.character &&\n a.range.end.line === b.range.end.line &&\n a.range.end.character === b.range.end.character &&\n a.severity === b.severity\n )\n}\n\nfunction isSameOrMoreRecentVersion(prev: number | undefined, next: number | undefined): boolean {\n if (prev === undefined || next === undefined) return true\n return prev <= next\n}\n\nexport class SourceFileDiagnostics {\n private diagnostics: lsp.Diagnostic[] | 'pending' = 'pending'\n private version: number | undefined\n /**\n * Update the diagnostics for this file and return a boolean indicating if they have changed\n * @param version The file version used to generate these diagnostics\n * @param diagnostics\n */\n setDiagnostics({ version, diagnostics }: { diagnostics: lsp.Diagnostic[] | 'pending'; version: number | undefined }): boolean {\n // Ignore older diagnostics (even though this shouldn't happen)\n if (!isSameOrMoreRecentVersion(this.version, version)) return false\n if (diagnostics !== 'pending' && this.diagnostics !== 'pending' && diagnostics.length === this.diagnostics.length) {\n if (zipStrict(this.diagnostics, diagnostics).every(([l, r]) => diagnosticsAreSame(l, r))) {\n this.version = version\n return false\n }\n }\n this.diagnostics = diagnostics\n this.version = version\n\n return true\n }\n}\nexport type FileWithDiagnostics = {\n uri: lsp.DocumentUri\n version: number | undefined\n diagnostics: lsp.Diagnostic[]\n}\n\ntype DiagnosticEvents = {\n fileDiagnosticsChanged: [event: FileWithDiagnostics]\n}\n\nexport class DiagnosticsManager {\n private readonly sourceFiles = new DefaultMap<lsp.DocumentUri, SourceFileDiagnostics>()\n private readonly events = new EventEmitter<DiagnosticEvents>()\n\n setDiagnostics({\n uri,\n diagnostics,\n version,\n }: {\n uri: lsp.DocumentUri\n diagnostics: lsp.Diagnostic[] | 'pending'\n version: number | undefined\n }) {\n logger.debug(\n undefined,\n `[DiagMgr] Setting diagnostics for ${uri} ${version ?? '<no version>'} (${diagnostics === 'pending' ? 'pending' : diagnostics.length})`,\n )\n const fileDiagnostics = this.sourceFiles.getOrDefault(uri, () => new SourceFileDiagnostics())\n if (fileDiagnostics.setDiagnostics({ diagnostics, version })) {\n if (diagnostics === 'pending') return\n this.events.emit('fileDiagnosticsChanged', { uri, diagnostics, version })\n }\n }\n\n onFileDiagnosticsChanged(handler: (...args: DiagnosticEvents['fileDiagnosticsChanged']) => void): lsp.Disposable {\n this.events.on('fileDiagnosticsChanged', handler)\n return {\n dispose: () => {\n this.events.off('fileDiagnosticsChanged', handler)\n },\n }\n }\n}\n","import { TextDocument } from 'vscode-languageserver-textdocument'\nimport * as lsp from 'vscode-languageserver/node'\nimport { appVersion, packageVersion } from '../cli/app-version'\nimport { Constants } from '../constants'\nimport { logger, LogLevel } from '../logger'\nimport { LanguageServerLogSink } from '../logger/sinks/language-server-log-sink'\nimport { resolvePuyaPath } from '../puya/resolve-puya-path'\nimport type { AnalyserService } from './analyser-service'\nimport { createAnalyserService } from './analyser-service'\nimport { CompileTriggerQueue } from './compile-trigger-queue'\nimport { CompileWorker } from './compile-worker'\nimport type { FileWithDiagnostics } from './diagnostics-manager'\nimport { DiagnosticsManager } from './diagnostics-manager'\nimport { isCodeFixData } from './mapping'\nimport { LogExceptions } from './util/log-exceptions'\nimport { createNormalisedTextDocumentConnection, normalisedUri } from './util/uris'\n\ninterface LanguageServerConfiguration {\n // use LogLevel member names to maintain consistency with other extension settings\n logLevel?: Omit<keyof typeof LogLevel, 'Critical'>\n debounce?: number\n}\n\nconst resolveConnection = async (lspPort: number | undefined) => {\n if (!lspPort) {\n return lsp.createConnection(lsp.ProposedFeatures.all)\n }\n\n // When the debug env variable PUYA_TS_DEBUG_LSP_PORT is set, we start the server with socket transport.\n // Note: this is actually the opposite to how vscode-languageserver is designed.\n // Normally, the extension is the web socker server and the language server is the client.\n // Here, we flip it. This allows an easier debugging experience.\n // If changes are made to the language server, you can just restart the debugger\n // and choose the option \"Restart language server\" in the VS Code extension host instance.\n const transport = await lsp.createClientSocketTransport(lspPort)\n const protocol = await transport.onConnected()\n\n return lsp.createConnection(lsp.ProposedFeatures.all, protocol[0], protocol[1])\n}\n\nexport type LanguageServerOptions = {\n port?: number\n customPuyaPath?: string\n}\n\nconst PACKAGE_VERSION = packageVersion()\n\nclass PuyaLanguageServer {\n readonly documents = new lsp.TextDocuments(TextDocument)\n readonly triggers = new CompileTriggerQueue()\n readonly workspaceFolders: lsp.URI[] = []\n readonly diagnosticsMgr: DiagnosticsManager\n readonly compileWorker: CompileWorker\n readonly analyserService: AnalyserService\n stopping = false\n\n constructor(\n public readonly connection: lsp.Connection,\n private readonly loggingSink: LanguageServerLogSink,\n puyaPath: string,\n ) {\n this.diagnosticsMgr = new DiagnosticsManager()\n this.analyserService = createAnalyserService({ puyaPath })\n this.compileWorker = new CompileWorker(this.triggers, this.analyserService, this.documents, this.diagnosticsMgr)\n\n connection.onInitialize(this.initialize.bind(this))\n connection.onInitialized(this.initialized.bind(this))\n connection.onCodeAction(this.codeAction.bind(this))\n connection.onDidChangeConfiguration(this.configurationChange.bind(this))\n this.documents.onDidChangeContent(this.documentDidChangeContent.bind(this))\n this.diagnosticsMgr.onFileDiagnosticsChanged(this.fileDiagnosticsChanged.bind(this))\n connection.onShutdown(this.shutdown.bind(this))\n }\n\n start() {\n this.documents.listen(createNormalisedTextDocumentConnection(this.connection))\n this.connection.listen()\n this.compileWorker.start()\n }\n\n async shutdown() {\n logger.debug(undefined, '[PuyaLanguageServer] Shutting down')\n this.stopping = true\n await this.compileWorker.stop()\n await this.analyserService.shutdown()\n logger.debug(undefined, '[PuyaLanguageServer] Shutdown')\n }\n\n initialize(params: lsp.InitializeParams): lsp.InitializeResult {\n this.workspaceFolders.push(...(params.workspaceFolders?.map((f) => normalisedUri({ uri: f.uri }).toString()) ?? []))\n this.triggers.enqueue({\n type: 'workspace',\n uris: this.workspaceFolders,\n })\n return {\n serverInfo: {\n name: 'Puya-TS Language Server',\n version: PACKAGE_VERSION,\n },\n capabilities: {\n textDocumentSync: lsp.TextDocumentSyncKind.Incremental,\n codeActionProvider: {\n resolveProvider: false,\n },\n },\n }\n }\n\n @LogExceptions\n initialized(params: lsp.InitializedParams) {\n logger.debug(undefined, `${Constants.languageServerSource}-ls initialized`)\n }\n\n @LogExceptions\n async fileDiagnosticsChanged(params: FileWithDiagnostics) {\n if (this.stopping) {\n logger.debug(undefined, `[Diagnostics Ignored (shutting down)]: ${params.uri}`)\n return\n }\n logger.debug(undefined, `[Diagnostics Changed]: ${params.uri}`)\n\n await this.connection.sendDiagnostics(params)\n logger.debug(undefined, `[Diagnostics Sent]: ${params.uri}`)\n }\n\n @LogExceptions\n documentDidChangeContent(params: lsp.TextDocumentChangeEvent<TextDocument>) {\n if (this.stopping) return\n const normalizedDocumentUri = normalisedUri({ uri: params.document.uri }).toString()\n logger.debug(undefined, `[Document Changed]: ${normalizedDocumentUri}`)\n this.diagnosticsMgr.setDiagnostics({ uri: normalizedDocumentUri, version: params.document.version, diagnostics: 'pending' })\n\n this.triggers.enqueue({\n type: 'file',\n uris: [normalizedDocumentUri],\n })\n }\n\n /**\n * Bound to connection.onCodeAction and called when a user hovers over a piece of code.\n *\n * Params includes the text range the user is hovering over and any diagnostics known to the\n * client at the time.\n *\n * Response should include actions the user can take and the command or text edits that should be\n * invoked/applied if selected\n * @param params\n */\n @LogExceptions\n codeAction(params: lsp.CodeActionParams): lsp.CodeAction[] {\n return params.context.diagnostics.flatMap((d): lsp.CodeAction | lsp.CodeAction[] => {\n if (isCodeFixData(d.data)) {\n return {\n title: d.data.message,\n kind: lsp.CodeActionKind.QuickFix,\n diagnostics: [d],\n edit: {\n changes: {\n [params.textDocument.uri]: [...d.data.edits],\n },\n },\n }\n }\n return []\n })\n }\n\n @LogExceptions\n configurationChange(params: lsp.DidChangeConfigurationParams) {\n const settings = params.settings as LanguageServerConfiguration\n const logLevel = LogLevel[settings.logLevel as keyof typeof LogLevel]\n if (logLevel !== undefined) {\n logger.debug(undefined, `setting log level to ${logLevel}`)\n this.loggingSink.minLogLevel = logLevel\n }\n }\n}\n\n// eslint-disable-next-line no-console\nconst cliLog = console.error\n\nexport async function startLanguageServer(options: LanguageServerOptions) {\n cliLog(`Puya-TS Language Server:\\n${appVersion({ withAVMVersion: false })}`)\n const connection = await resolveConnection(options.port)\n const languageServerSink = new LanguageServerLogSink(connection)\n logger.configure([languageServerSink])\n try {\n const puyaPath = await resolvePuyaPath(options)\n const server = new PuyaLanguageServer(connection, languageServerSink, puyaPath)\n server.start()\n } catch (e) {\n connection.console.error(`Unhandled exception ${e}`)\n }\n}\n","import { ArgumentParser, BooleanOptionalAction } from 'argparse'\nimport { appVersion } from '../cli/app-version'\nimport { checkNodeVersion } from '../cli/check-node-version'\nimport type { LanguageServerOptions } from './puya-language-server'\nimport { startLanguageServer } from './puya-language-server'\n\nexport async function parseCliArguments() {\n checkNodeVersion()\n const prog = 'puyats-ls'\n const parser = new ArgumentParser({\n prog,\n })\n\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.add_argument('--debug-mode', {\n help: 'Start the language server in debug mode. Server will listen on the debug port (default 4001) for connections.',\n default: false,\n dest: 'debugMode',\n action: BooleanOptionalAction,\n })\n const [result, _] = parser.parse_known_args() as [PuyaTsCommand, unknown]\n\n switch (result.command) {\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion({ name: prog }))\n break\n default: {\n const options: LanguageServerOptions = {\n port: result.debugMode ? (parsePort(process.env.PUYA_TS_DEBUG_LSP_PORT) ?? 4001) : undefined,\n }\n\n await startLanguageServer(options)\n break\n }\n }\n}\n\ntype PuyaTsCommand = NoCommandArgs | VersionCommand\ninterface NoCommandArgs {\n command: 'none'\n debugMode: boolean\n}\ninterface VersionCommand {\n command: 'version'\n}\n\nfunction parsePort(value: string | undefined) {\n if (value === undefined) return undefined\n const val = Number(value)\n if (val > 0 && val < 2 ** 16 && Math.floor(val) === val) {\n return val\n }\n throw new Error(`Invalid port number ${value}`)\n}\n","import { parseCliArguments } from './language-server/parse'\n\nvoid parseCliArguments()\n"],"names":["require$$0","lsp.createConnection","lsp.ProposedFeatures","lsp.createClientSocketTransport","lsp.TextDocuments","lsp.TextDocumentSyncKind","lsp.CodeActionKind"],"mappings":"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","x_google_ignoreList":[0,1]}
package/bin/run-cli.mjs CHANGED
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import '../cli.mjs';
3
- import '../contract-class-model-CkfUf4wT.js';
3
+ import 'argparse';
4
+ import '../semver-B0p_0XuH.js';
5
+ import 'fs';
6
+ import 'node:url';
7
+ import 'pathe';
8
+ import '../contract-class-model-BZeEDGw0.js';
4
9
  import 'typescript';
5
10
  import 'node:fs';
6
11
  import 'node:util';
7
- import 'pathe';
8
12
  import 'node:crypto';
9
13
  import 'polytype';
10
14
  import 'node:async_hooks';
11
- import 'argparse';
12
- import '../semver-BcvZGdLN.js';
13
- import 'fs';
14
- import 'node:url';
15
- import '../compile-DbGGbErI.js';
16
- import '../arc4-clientgen-BBdFxRUs.js';
15
+ import '../compile-ycpMcgmJ.js';
16
+ import '../arc4-clientgen-qBTlCOIm.js';
17
17
  import '@algorandfoundation/algokit-utils/abi';
18
18
  import 'fs/promises';
19
- import '../options-BMqysQHP.js';
19
+ import '../options-DD9MApH4.js';
20
20
  import 'arcsecond';
21
21
  import 'tslib';
22
22
  import 'node:buffer';
@@ -29,11 +29,11 @@ import 'net';
29
29
  import 'change-case';
30
30
  import 'glob';
31
31
  import 'minimatch';
32
- import '../resolve-puya-path-C4sw8aVH.js';
32
+ import '../resolve-puya-path-Ba54kz9o.js';
33
33
  import 'signal-exit';
34
34
  import 'tar';
35
35
  import 'node:zlib';
36
- import '../util-DgN3iON1.js';
36
+ import '../util-Aa8RgOmt.js';
37
37
  import 'chalk';
38
- import '../check-node-version-jdAtH-rx.js';
38
+ import '../check-node-version-CLFFTDHN.js';
39
39
  //# sourceMappingURL=run-cli.mjs.map
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
- import { d as Constants } from './contract-class-model-CkfUf4wT.js';
3
- import { p as parseSemVer } from './semver-BcvZGdLN.js';
2
+ import { d as Constants } from './contract-class-model-BZeEDGw0.js';
3
+ import { p as parseSemVer } from './semver-B0p_0XuH.js';
4
4
 
5
5
  function writeError(text) {
6
6
  // eslint-disable-next-line no-console
@@ -17,4 +17,4 @@ function checkNodeVersion() {
17
17
  }
18
18
 
19
19
  export { checkNodeVersion as c };
20
- //# sourceMappingURL=check-node-version-jdAtH-rx.js.map
20
+ //# sourceMappingURL=check-node-version-CLFFTDHN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-node-version-jdAtH-rx.js","sources":["../src/cli/check-node-version.ts"],"sourcesContent":["import chalk from 'chalk'\nimport { Constants } from '../constants'\nimport { parseSemVer } from '../puya/semver'\n\nfunction writeError(text: string) {\n // eslint-disable-next-line no-console\n console.error(chalk.red(text))\n}\n\nexport function checkNodeVersion() {\n const min = parseSemVer(Constants.minNodeVersion)\n const actual = parseSemVer(process.versions.node)\n\n if (\n actual.major < min.major ||\n (actual.major === min.major && actual.minor < min.minor) ||\n (actual.major === min.major && actual.minor === min.minor && actual.rev < min.rev)\n ) {\n writeError(\n `Installed node version ${process.versions.node} is older than the minimum required version ${Constants.minNodeVersion}. You may experience compatibility issues.`,\n )\n }\n}\n"],"names":[],"mappings":";;;;AAIA,SAAS,UAAU,CAAC,IAAY,EAAA;;IAE9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;SAEgB,gBAAgB,GAAA;IAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEjD,IAAA,IACE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AACxB,SAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;SACvD,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAClF;AACA,QAAA,UAAU,CACR,CAAA,uBAAA,EAA0B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA,4CAAA,EAA+C,SAAS,CAAC,cAAc,CAAA,0CAAA,CAA4C,CACnK;IACH;AACF;;;;"}
1
+ {"version":3,"file":"check-node-version-CLFFTDHN.js","sources":["../src/cli/check-node-version.ts"],"sourcesContent":["import chalk from 'chalk'\nimport { Constants } from '../constants'\nimport { parseSemVer } from '../puya/semver'\n\nfunction writeError(text: string) {\n // eslint-disable-next-line no-console\n console.error(chalk.red(text))\n}\n\nexport function checkNodeVersion() {\n const min = parseSemVer(Constants.minNodeVersion)\n const actual = parseSemVer(process.versions.node)\n\n if (\n actual.major < min.major ||\n (actual.major === min.major && actual.minor < min.minor) ||\n (actual.major === min.major && actual.minor === min.minor && actual.rev < min.rev)\n ) {\n writeError(\n `Installed node version ${process.versions.node} is older than the minimum required version ${Constants.minNodeVersion}. You may experience compatibility issues.`,\n )\n }\n}\n"],"names":[],"mappings":";;;;AAIA,SAAS,UAAU,CAAC,IAAY,EAAA;;IAE9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;SAEgB,gBAAgB,GAAA;IAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEjD,IAAA,IACE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AACxB,SAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;SACvD,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAClF;AACA,QAAA,UAAU,CACR,CAAA,uBAAA,EAA0B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA,4CAAA,EAA+C,SAAS,CAAC,cAAc,CAAA,0CAAA,CAA4C,CACnK;IACH;AACF;;;;"}
package/cli-ls.d.ts CHANGED
@@ -1 +1 @@
1
- import './util/polyfills';
1
+ export {};
package/cli.d.ts CHANGED
@@ -1 +1 @@
1
- import './util/polyfills';
1
+ export {};