@algorandfoundation/algorand-typescript-testing 1.2.0-beta.3 → 1.2.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -4,12 +4,16 @@
|
|
|
4
4
|
"**"
|
|
5
5
|
],
|
|
6
6
|
"name": "@algorandfoundation/algorand-typescript-testing",
|
|
7
|
-
"version": "1.2.0-beta.
|
|
7
|
+
"version": "1.2.0-beta.5",
|
|
8
8
|
"description": "A library which allows you to execute Algorand TypeScript code locally under a test context either emulating or mocking AVM behaviour.",
|
|
9
9
|
"private": false,
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/algorandfoundation/algorand-typescript-testing.git"
|
|
13
|
+
},
|
|
10
14
|
"dependencies": {
|
|
11
|
-
"@algorandfoundation/algorand-typescript": "1.2.0-beta.
|
|
12
|
-
"@algorandfoundation/puya-ts": "1.2.0-beta.
|
|
15
|
+
"@algorandfoundation/algorand-typescript": "1.2.0-beta.30",
|
|
16
|
+
"@algorandfoundation/puya-ts": "1.2.0-beta.30",
|
|
13
17
|
"elliptic": "^6.6.1",
|
|
14
18
|
"js-sha256": "^0.11.0",
|
|
15
19
|
"js-sha3": "^0.9.3",
|
|
@@ -94,7 +94,7 @@ function ptypeToArc4EncodedType(ptype, sourceLocation) {
|
|
|
94
94
|
name: ptype.alias?.name ?? ptype.name,
|
|
95
95
|
module: ptype.module,
|
|
96
96
|
description: ptype.description,
|
|
97
|
-
fields:
|
|
97
|
+
fields: ptype.properties.map((p) => ({ ...p, ptype: ptypeToArc4EncodedType(p.ptype) })),
|
|
98
98
|
frozen: true,
|
|
99
99
|
});
|
|
100
100
|
if (ptype instanceof ptypes.MutableObjectPType)
|
|
@@ -102,7 +102,7 @@ function ptypeToArc4EncodedType(ptype, sourceLocation) {
|
|
|
102
102
|
name: ptype.alias?.name ?? ptype.name,
|
|
103
103
|
module: ptype.module,
|
|
104
104
|
description: ptype.description,
|
|
105
|
-
fields:
|
|
105
|
+
fields: ptype.properties.map((p) => ({ ...p, ptype: ptypeToArc4EncodedType(p.ptype) })),
|
|
106
106
|
frozen: false,
|
|
107
107
|
});
|
|
108
108
|
throw new CodeError(`${ptype} cannot be encoded to an ARC4 type`);
|
|
@@ -667,15 +667,11 @@ const getGenericTypeInfo = (type, sourceLocation) => {
|
|
|
667
667
|
}
|
|
668
668
|
else if (type instanceof ptypes.ARC4StructType) {
|
|
669
669
|
typeName = `Struct<${type.name}>`;
|
|
670
|
-
genericArgs = Object.fromEntries(
|
|
671
|
-
.map(([key, value]) => [key, getGenericTypeInfo(value, sourceLocation)])
|
|
672
|
-
.filter((x) => !!x));
|
|
670
|
+
genericArgs = Object.fromEntries(type.fields.map((f) => [f.name, getGenericTypeInfo(f.ptype, sourceLocation)]).filter((x) => !!x));
|
|
673
671
|
}
|
|
674
672
|
else if (type instanceof ptypes.MutableObjectPType || type instanceof ptypes.ImmutableObjectPType) {
|
|
675
673
|
typeName = type instanceof ptypes.MutableObjectPType ? `Object<${type.name}>` : `ReadonlyObject<${type.name}>`;
|
|
676
|
-
genericArgs = Object.fromEntries(
|
|
677
|
-
.map(([key, value]) => [key, getGenericTypeInfo(value, sourceLocation)])
|
|
678
|
-
.filter((x) => !!x));
|
|
674
|
+
genericArgs = Object.fromEntries(type.properties.map((p) => [p.name, getGenericTypeInfo(p.ptype, sourceLocation)]).filter((x) => !!x));
|
|
679
675
|
}
|
|
680
676
|
else if (type instanceof ptypes.ARC4TupleType ||
|
|
681
677
|
type instanceof ptypes.MutableTuplePType ||
|
|
@@ -761,4 +757,4 @@ function programFactory(config, program) {
|
|
|
761
757
|
}
|
|
762
758
|
|
|
763
759
|
export { defaultTransformerConfig as d, programFactory as p };
|
|
764
|
-
//# sourceMappingURL=program-factory-
|
|
760
|
+
//# sourceMappingURL=program-factory-Dwx3qOoD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-factory-Dwx3qOoD.js","sources":["../src/test-transformer/errors.ts","../src/test-transformer/helpers.ts","../src/test-transformer/node-factory.ts","../src/test-transformer/supported-binary-op-string.ts","../src/test-transformer/visitors.ts","../src/test-transformer/program-factory.ts"],"sourcesContent":["/** @internal */\nexport class TransformerError extends Error {\n constructor(message: string) {\n super(message)\n }\n}\n","import type { SourceLocation } from '@algorandfoundation/puya-ts'\nimport { ptypes } from '@algorandfoundation/puya-ts'\nimport ts from 'typescript'\nimport upath from 'upath'\nimport { CodeError } from '../errors'\nimport { TransformerError } from './errors'\n\n/** @internal */\nexport const getPropertyNameAsString = (name: ts.PropertyName): ts.Identifier | ts.StringLiteral | ts.NoSubstitutionTemplateLiteral => {\n if (ts.isStringLiteralLike(name)) {\n return name\n }\n if (ts.isIdentifier(name)) {\n return ts.factory.createStringLiteral(name.text)\n }\n throw new TransformerError(`Node ${name.kind} cannot be converted to a static string`)\n}\n\n/** @internal */\nexport const trimGenericTypeName = (typeName: string) => typeName.replace(/<.*>/, '')\n\n/**\n * @internal\n * Normalise a file path to only include relevant segments.\n *\n * - Anything in /node_modules/ is truncated to <package-name>/path.ext\n * - Anything in workingDirectory is truncated relative to the workingDirectory\n * - Forward slashes are used to segment paths\n * @param filePath\n * @param workingDirectory\n */\nexport function normalisePath(filePath: string, workingDirectory: string): string {\n const localPackageName = /packages\\/algo-ts\\/dist\\/(.*)$/.exec(filePath)\n if (localPackageName) {\n return `@algorandfoundation/algorand-typescript/${localPackageName[1]}`\n }\n const nodeModuleName = /.*\\/node_modules\\/(.*)$/.exec(filePath)\n if (nodeModuleName) {\n return nodeModuleName[1]\n }\n const cwd = upath.normalize(`${workingDirectory}/`)\n const normalizedPath = upath.normalize(filePath)\n const moduleName = normalizedPath.startsWith(cwd) ? normalizedPath.slice(cwd.length) : normalizedPath\n return moduleName.replaceAll('\\\\', '/')\n}\n\n/** @internal */\nexport function ptypeToArc4EncodedType(ptype: ptypes.ReadonlyTuplePType, sourceLocation: SourceLocation): ptypes.ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: ptypes.MutableTuplePType, sourceLocation: SourceLocation): ptypes.ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: ptypes.ImmutableObjectPType, sourceLocation: SourceLocation): ptypes.ARC4StructType\nexport function ptypeToArc4EncodedType(ptype: ptypes.ArrayPType, sourceLocation: SourceLocation): ptypes.DynamicArrayType\nexport function ptypeToArc4EncodedType(ptype: ptypes.ReadonlyArrayPType, sourceLocation: SourceLocation): ptypes.DynamicArrayType\nexport function ptypeToArc4EncodedType(ptype: ptypes.FixedArrayPType, sourceLocation: SourceLocation): ptypes.StaticArrayType\nexport function ptypeToArc4EncodedType<T extends ptypes.ARC4EncodedType>(ptype: T, sourceLocation: SourceLocation): T\nexport function ptypeToArc4EncodedType(ptype: ptypes.PType, sourceLocation: SourceLocation): ptypes.ARC4EncodedType\nexport function ptypeToArc4EncodedType(ptype: ptypes.PType, sourceLocation: SourceLocation): ptypes.ARC4EncodedType {\n if (ptype instanceof ptypes.ARC4EncodedType) return ptype\n if (ptype.equals(ptypes.boolPType)) return ptypes.arc4BooleanType\n if (ptype.equals(ptypes.uint64PType)) return new ptypes.UintNType({ n: 64n })\n if (ptype.equals(ptypes.biguintPType)) return new ptypes.UintNType({ n: 512n })\n if (ptype instanceof ptypes.BytesPType)\n return ptype.length === null ? ptypes.DynamicBytesType : new ptypes.StaticBytesType({ length: ptype.length })\n if (ptype.equals(ptypes.stringPType)) return ptypes.arc4StringType\n if (ptype.equals(ptypes.assetPType)) return ptypes.arc4Uint64\n if (ptype.equals(ptypes.applicationPType)) return ptypes.arc4Uint64\n if (ptype.equals(ptypes.accountPType)) return ptypes.arc4AddressAlias\n if (ptype instanceof ptypes.TransientType) {\n throw new CodeError(ptype.expressionMessage)\n }\n if (ptype instanceof ptypes.ArrayPType)\n return new ptypes.DynamicArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n immutable: ptype.immutable,\n })\n if (ptype instanceof ptypes.ReadonlyArrayPType)\n return new ptypes.DynamicArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n immutable: ptype.immutable,\n })\n if (ptype instanceof ptypes.FixedArrayPType)\n return new ptypes.StaticArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n arraySize: ptype.arraySize,\n immutable: ptype.immutable,\n })\n\n if (ptype instanceof ptypes.ReadonlyTuplePType)\n return new ptypes.ARC4TupleType({ types: ptype.items.map((i) => ptypeToArc4EncodedType(i, sourceLocation)) })\n if (ptype instanceof ptypes.MutableTuplePType)\n return new ptypes.ARC4TupleType({ types: ptype.items.map((i) => ptypeToArc4EncodedType(i, sourceLocation)) })\n\n if (ptype instanceof ptypes.ImmutableObjectPType)\n return new ptypes.ARC4StructType({\n name: ptype.alias?.name ?? ptype.name,\n module: ptype.module,\n description: ptype.description,\n fields: ptype.properties.map((p) => ({ ...p, ptype: ptypeToArc4EncodedType(p.ptype, sourceLocation) })),\n frozen: true,\n })\n if (ptype instanceof ptypes.MutableObjectPType)\n return new ptypes.ARC4StructType({\n name: ptype.alias?.name ?? ptype.name,\n module: ptype.module,\n description: ptype.description,\n fields: ptype.properties.map((p) => ({ ...p, ptype: ptypeToArc4EncodedType(p.ptype, sourceLocation) })),\n frozen: false,\n })\n\n throw new CodeError(`${ptype} cannot be encoded to an ARC4 type`)\n}\n","import { ptypes } from '@algorandfoundation/puya-ts'\nimport ts from 'typescript'\nimport type { TypeInfo } from '../impl/encoded-types'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport { getPropertyNameAsString, trimGenericTypeName } from './helpers'\n\nconst factory = ts.factory\n/** @internal */\nexport const nodeFactory = {\n importHelpers(testingPackageName: string) {\n return [\n factory.createImportDeclaration(\n undefined,\n factory.createImportClause(false, undefined, factory.createNamespaceImport(factory.createIdentifier('runtimeHelpers'))),\n factory.createStringLiteral(`${testingPackageName}/runtime-helpers`),\n undefined,\n ),\n factory.createImportDeclaration(\n undefined,\n factory.createImportClause(\n false,\n undefined,\n factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier('arc4'))]),\n ),\n factory.createStringLiteral(`${testingPackageName}/internal`),\n undefined,\n ),\n ]\n },\n\n switchableValue(x: ts.Expression) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('switchableValue')),\n undefined,\n [x],\n )\n },\n binaryOp(left: ts.Expression, right: ts.Expression, op: string) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('binaryOp')),\n undefined,\n [left, right, factory.createStringLiteral(op)],\n )\n },\n augmentedAssignmentBinaryOp(left: ts.Expression, right: ts.Expression, op: string) {\n return factory.createAssignment(\n left,\n factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('binaryOp')),\n undefined,\n [left, right, factory.createStringLiteral(op.replace('=', ''))],\n ),\n )\n },\n\n prefixUnaryOp(operand: ts.Expression, op: string) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('unaryOp')),\n undefined,\n [operand, factory.createStringLiteral(op)],\n )\n },\n\n attachMetaData(\n sourceFileName: string,\n classIdentifier: ts.Identifier,\n method: ts.MethodDeclaration,\n argTypes: string[],\n returnType: string,\n ) {\n const methodName = getPropertyNameAsString(method.name)\n const metadata = factory.createObjectLiteralExpression([\n factory.createPropertyAssignment('methodName', methodName),\n factory.createPropertyAssignment(\n 'argTypes',\n factory.createArrayLiteralExpression(argTypes.map((p) => factory.createStringLiteral(p))),\n ),\n factory.createPropertyAssignment('returnType', factory.createStringLiteral(returnType)),\n ])\n return factory.createExpressionStatement(\n factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('attachAbiMetadata')),\n undefined,\n [\n classIdentifier,\n methodName,\n metadata,\n factory.createStringLiteral(sourceFileName),\n factory.createStringLiteral(classIdentifier.text),\n ],\n ),\n )\n },\n\n captureGenericTypeInfo(x: ts.Expression, info: string) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(\n factory.createIdentifier('runtimeHelpers'),\n factory.createIdentifier('captureGenericTypeInfo'),\n ),\n undefined,\n [x, factory.createStringLiteral(info)],\n )\n },\n\n instantiateEncodedType(node: ts.NewExpression, typeInfo?: TypeInfo) {\n const infoString = JSON.stringify(typeInfo)\n const classIdentifier = node.expression.getText().replace('arc4.', '')\n return factory.createNewExpression(\n factory.createIdentifier(`arc4.${trimGenericTypeName(typeInfo?.name ?? classIdentifier)}`),\n node.typeArguments,\n [infoString ? factory.createStringLiteral(infoString) : undefined, ...(node.arguments ?? [])].filter((arg) => !!arg),\n )\n },\n\n callStubbedFunction(node: ts.CallExpression, typeInfo?: TypeInfo | TypeInfo[]) {\n const typeInfoArgs = typeInfo\n ? (Array.isArray(typeInfo) ? typeInfo : [typeInfo]).map((t) => factory.createStringLiteral(JSON.stringify(t)))\n : []\n\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [...typeInfoArgs, ...(node.arguments ?? [])])\n },\n\n callMethodSelectorFunction(node: ts.CallExpression, typeParams: ptypes.PType[]) {\n if (typeParams.length === 1 && typeParams[0] instanceof ptypes.FunctionPType && typeParams[0].declaredIn) {\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createObjectLiteralExpression([\n factory.createPropertyAssignment('method', factory.createStringLiteral(typeParams[0].name)),\n factory.createPropertyAssignment('contract', factory.createStringLiteral(typeParams[0].declaredIn.fullName)),\n ]),\n ])\n } else if (\n node.arguments.length === 1 &&\n ts.isPropertyAccessExpression(node.arguments[0]) &&\n ts.isPropertyAccessExpression(node.arguments[0].expression)\n ) {\n const contractIdenifier = node.arguments[0].expression.expression\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createObjectLiteralExpression([\n factory.createPropertyAssignment('method', node.arguments[0]),\n factory.createPropertyAssignment('contract', contractIdenifier),\n ]),\n ])\n } else {\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createObjectLiteralExpression([factory.createPropertyAssignment('method', node.arguments[0])]),\n ])\n }\n },\n\n callAbiCallFunction(node: ts.CallExpression, typeParams: ptypes.PType[]) {\n if (typeParams.length === 1 && typeParams[0] instanceof ptypes.FunctionPType && typeParams[0].declaredIn) {\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createStringLiteral(typeParams[0].declaredIn.fullName),\n factory.createStringLiteral(typeParams[0].name),\n ...node.arguments,\n ])\n }\n return node\n },\n\n callItxnComposeFunction(node: ts.CallExpression, typeParams: ptypes.PType[]) {\n if (\n node.arguments.length === 2 &&\n ts.isPropertyAccessExpression(node.arguments[0]) &&\n ts.isPropertyAccessExpression(node.arguments[0].expression)\n ) {\n const contractIdenifier = node.arguments[0].expression.expression\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [...node.arguments, contractIdenifier])\n } else if (\n node.arguments.length === 1 &&\n typeParams.length === 1 &&\n typeParams[0] instanceof ptypes.FunctionPType &&\n typeParams[0].declaredIn\n ) {\n const contractIdentifier = factory.createStringLiteral(typeParams[0].declaredIn.fullName)\n const methodName = factory.createStringLiteral(typeParams[0].name)\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [...node.arguments, contractIdentifier, methodName])\n }\n return node\n },\n} satisfies Record<string, (...args: DeliberateAny[]) => ts.Node | ts.Node[]>\n","import type { BinaryOperator, PrefixUnaryOperator } from 'typescript'\nimport ts from 'typescript'\n\n/** @internal */\nexport function supportedBinaryOpString(x: BinaryOperator): string | undefined {\n switch (x) {\n case ts.SyntaxKind.MinusToken:\n return '-'\n case ts.SyntaxKind.PlusToken:\n return '+'\n case ts.SyntaxKind.EqualsEqualsEqualsToken:\n return '==='\n case ts.SyntaxKind.ExclamationEqualsEqualsToken:\n return '!=='\n case ts.SyntaxKind.GreaterThanToken:\n return '>'\n case ts.SyntaxKind.GreaterThanEqualsToken:\n return '>='\n case ts.SyntaxKind.GreaterThanGreaterThanToken:\n return '>>'\n case ts.SyntaxKind.LessThanToken:\n return '<'\n case ts.SyntaxKind.LessThanEqualsToken:\n return '<='\n case ts.SyntaxKind.LessThanLessThanToken:\n return '<<'\n case ts.SyntaxKind.AsteriskToken:\n return '*'\n case ts.SyntaxKind.AsteriskAsteriskToken:\n return '**'\n case ts.SyntaxKind.SlashToken:\n return '/'\n case ts.SyntaxKind.PercentToken:\n return '%'\n case ts.SyntaxKind.AmpersandToken:\n return '&'\n case ts.SyntaxKind.BarToken:\n return '|'\n case ts.SyntaxKind.CaretToken:\n return '^'\n case ts.SyntaxKind.AmpersandAmpersandEqualsToken:\n case ts.SyntaxKind.AmpersandAmpersandToken:\n case ts.SyntaxKind.AmpersandEqualsToken:\n case ts.SyntaxKind.BarBarEqualsToken:\n case ts.SyntaxKind.BarBarToken:\n case ts.SyntaxKind.BarEqualsToken:\n case ts.SyntaxKind.CaretEqualsToken:\n case ts.SyntaxKind.CommaToken:\n case ts.SyntaxKind.EqualsEqualsToken:\n case ts.SyntaxKind.EqualsToken:\n case ts.SyntaxKind.ExclamationEqualsToken:\n case ts.SyntaxKind.InKeyword:\n case ts.SyntaxKind.InstanceOfKeyword:\n case ts.SyntaxKind.QuestionQuestionEqualsToken:\n case ts.SyntaxKind.QuestionQuestionToken:\n case ts.SyntaxKind.GreaterThanGreaterThanEqualsToken:\n case ts.SyntaxKind.LessThanLessThanEqualsToken:\n case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken:\n case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:\n return undefined\n }\n}\n\n/** @internal */\nexport function supportedAugmentedAssignmentBinaryOpString(x: BinaryOperator): string | undefined {\n switch (x) {\n case ts.SyntaxKind.PlusEqualsToken:\n return '+='\n case ts.SyntaxKind.MinusEqualsToken:\n return '-='\n case ts.SyntaxKind.SlashEqualsToken:\n return '/='\n case ts.SyntaxKind.AsteriskEqualsToken:\n return '*='\n case ts.SyntaxKind.AsteriskAsteriskEqualsToken:\n return '**='\n case ts.SyntaxKind.PercentEqualsToken:\n return '%='\n default:\n return undefined\n }\n}\n\n/** @internal */\nexport function supportedPrefixUnaryOpString(x: PrefixUnaryOperator): string | undefined {\n switch (x) {\n case ts.SyntaxKind.TildeToken:\n return '~'\n default:\n return undefined\n }\n}\n","import { AbsolutePath, LoggingContext, ptypes, SourceLocation, TypeResolver } from '@algorandfoundation/puya-ts'\nimport path from 'path'\nimport ts from 'typescript'\nimport { CodeError } from '../errors'\nimport type { TypeInfo } from '../impl/encoded-types'\nimport { instanceOfAny } from '../typescript-helpers'\nimport { normalisePath, ptypeToArc4EncodedType } from './helpers'\nimport { nodeFactory } from './node-factory'\nimport type { TransformerConfig } from './program-factory'\nimport {\n supportedAugmentedAssignmentBinaryOpString,\n supportedBinaryOpString,\n supportedPrefixUnaryOpString,\n} from './supported-binary-op-string'\n\nconst { factory } = ts\n\nconst algotsModuleRegExp = new RegExp(/^(\"|')@algorandfoundation\\/algorand-typescript(\\/|\"|')/)\nconst algotsModuleSpecifier = '@algorandfoundation/algorand-typescript'\nconst testingInternalModuleSpecifier = (testingPackageName: string) => `${testingPackageName}/internal`\nconst algotsModulePaths = [\n algotsModuleSpecifier,\n '/puya-ts/packages/algo-ts/',\n `${path.sep}puya-ts${path.sep}packages${path.sep}algo-ts${path.sep}`,\n]\nconst algotsTestingModulePaths = (testingPackageName: string) => [\n testingPackageName,\n `${path.sep}algorand-typescript-testing${path.sep}src${path.sep}`,\n `${path.sep}algorand-typescript-testing${path.sep}dist${path.sep}`,\n]\n\nconst testingExamplePath = `${path.sep}algorand-typescript-testing${path.sep}examples${path.sep}`\n\ntype VisitorHelper = {\n additionalStatements: ts.Statement[]\n resolveType(node: ts.Node): ptypes.PType\n resolveTypeParameters(node: ts.CallExpression): ptypes.PType[]\n sourceLocation(node: ts.Node): SourceLocation\n tryGetSymbol(node: ts.Node): ts.Symbol | undefined\n getConfig(): TransformerConfig\n}\n\ntype Context = ts.TransformationContext & { currentDirectory: string }\n\n/** @internal */\nexport class SourceFileVisitor {\n private helper: VisitorHelper\n private context: Context\n\n constructor(\n context: ts.TransformationContext,\n private sourceFile: ts.SourceFile,\n program: ts.Program,\n config: TransformerConfig,\n ) {\n this.context = { ...context, currentDirectory: program.getCurrentDirectory() }\n const typeChecker = program.getTypeChecker()\n const loggingContext = LoggingContext.create()\n const programDir = AbsolutePath.resolve({ path: program.getCurrentDirectory() })\n const typeResolver = new TypeResolver(typeChecker, programDir)\n this.helper = {\n additionalStatements: [],\n resolveType(node: ts.Node): ptypes.PType {\n const sourceLocation = this.sourceLocation(node)\n try {\n return loggingContext.run(() => typeResolver.resolve(node, sourceLocation!))\n } catch (e) {\n const err = e as Error\n if (\n err.constructor.name === 'CodeError' &&\n !['Classes must extend', 'is not supported', 'Unable to reflect'].some((s) => err.message.includes(s))\n ) {\n throw new Error(`${sourceLocation?.toString()}: ${err.message}`, { cause: err })\n }\n return ptypes.anyPType\n }\n },\n resolveTypeParameters(node: ts.CallExpression) {\n return loggingContext.run(() => typeResolver.resolveTypeParameters(node, this.sourceLocation(node)))\n },\n tryGetSymbol(node: ts.Node): ts.Symbol | undefined {\n const s = typeChecker.getSymbolAtLocation(node)\n return s && s.flags & ts.SymbolFlags.Alias ? typeChecker.getAliasedSymbol(s) : s\n },\n sourceLocation(node: ts.Node): SourceLocation {\n try {\n return SourceLocation.fromNode(node, programDir)\n } catch {\n return SourceLocation.None\n }\n },\n getConfig(): TransformerConfig {\n return config\n },\n }\n }\n\n public result(): ts.SourceFile {\n const updatedSourceFile = ts.visitNode(this.sourceFile, this.visit) as ts.SourceFile\n return factory.updateSourceFile(updatedSourceFile, [\n ...nodeFactory.importHelpers(this.helper.getConfig().testingPackageName),\n ...updatedSourceFile.statements,\n ...this.helper.additionalStatements,\n ])\n }\n\n private visit = (node: ts.Node): ts.Node => {\n if (ts.isImportDeclaration(node)) {\n return new ImportDeclarationVisitor(node, this.helper).result()\n }\n if (ts.isFunctionLike(node)) {\n return new FunctionLikeDecVisitor(this.context, this.helper, node).result()\n }\n if (ts.isClassDeclaration(node)) {\n return new ClassVisitor(this.context, this.helper, node).result()\n }\n\n // capture generic type info for variable initialising outside class and function declarations\n // e.g. `const x = new Uint<32>(42)\n if (ts.isVariableDeclaration(node) && node.initializer) {\n return new VariableInitializerVisitor(this.context, this.helper, node).result()\n }\n\n return ts.visitEachChild(node, this.visit, this.context)\n }\n}\n\nclass ImportDeclarationVisitor {\n constructor(\n private declarationNode: ts.ImportDeclaration,\n private helper: VisitorHelper,\n ) {}\n\n public result(): ts.ImportDeclaration {\n const moduleSpecifier = this.declarationNode.moduleSpecifier.getText()\n if (this.declarationNode.importClause?.isTypeOnly || !algotsModuleRegExp.test(moduleSpecifier)) return this.declarationNode\n\n const namedBindings = this.declarationNode.importClause?.namedBindings\n // remove `arc4` from named bindings, as it is explicitly imported in the `importHelpers` method\n const nonTypeNamedBindings =\n namedBindings && ts.isNamedImports(namedBindings)\n ? (namedBindings as ts.NamedImports).elements.filter((e) => !e.isTypeOnly && e.name.getText() !== 'arc4')\n : []\n return factory.createImportDeclaration(\n this.declarationNode.modifiers,\n nonTypeNamedBindings.length\n ? factory.createImportClause(false, this.declarationNode.importClause?.name, factory.createNamedImports(nonTypeNamedBindings))\n : this.declarationNode.importClause,\n factory.createStringLiteral(\n moduleSpecifier\n .replace(algotsModuleSpecifier, testingInternalModuleSpecifier(this.helper.getConfig().testingPackageName))\n .replace(/^(\"|')/, '')\n .replace(/(\"|')$/, ''),\n ),\n this.declarationNode.attributes,\n )\n }\n}\n\nclass ExpressionVisitor {\n constructor(\n private context: Context,\n private helper: VisitorHelper,\n private expressionNode: ts.Expression,\n private stubbedFunctionName?: string,\n ) {}\n\n public result(): ts.Expression {\n return this.visit(this.expressionNode) as ts.Expression\n }\n\n private visit = (node: ts.Node): ts.Node => {\n handleTypeInfoCapture: if (ts.isCallExpression(node) || ts.isNewExpression(node)) {\n if (!tryGetAlgoTsSymbolName(node.expression, this.helper)) break handleTypeInfoCapture\n\n const type = this.helper.resolveType(node)\n\n const isGeneric = isGenericType(type)\n const isArc4Encoded = isEncodedType(type)\n const info = isGeneric || isArc4Encoded ? getGenericTypeInfo(type) : undefined\n let updatedNode = node\n\n if (ts.isNewExpression(updatedNode)) {\n if (isEncodedType(type)) {\n updatedNode = nodeFactory.instantiateEncodedType(updatedNode, info)\n }\n }\n\n if (ts.isCallExpression(updatedNode)) {\n const stubbedFunctionName = this.stubbedFunctionName ?? tryGetStubbedFunctionName(updatedNode, this.helper)\n this.stubbedFunctionName = undefined\n let infoArg: TypeInfo | TypeInfo[] | undefined = info\n\n // the nodes which have been created or updated by the node factory will not have source location,\n // and we do not need to process them further\n const sourceLocation = this.helper.sourceLocation(updatedNode)\n if (sourceLocation === SourceLocation.None) break handleTypeInfoCapture\n\n if (\n isCallingEmit(stubbedFunctionName) ||\n isCallingEncodeArc4(stubbedFunctionName) ||\n isCallingSizeOf(stubbedFunctionName) ||\n isCallingClone(stubbedFunctionName)\n ) {\n infoArg = this.helper.resolveTypeParameters(updatedNode).map((t) => getGenericTypeInfo(t, sourceLocation))[0]\n } else if (isCallingDecodeArc4(stubbedFunctionName)) {\n const sourceType = ptypeToArc4EncodedType(type, sourceLocation)\n const sourceTypeInfo = getGenericTypeInfo(sourceType, sourceLocation)\n const targetTypeInfo = getGenericTypeInfo(type, sourceLocation)\n infoArg = [sourceTypeInfo, targetTypeInfo]\n }\n\n if (stubbedFunctionName) {\n if (isCallingMethodSelector(stubbedFunctionName)) {\n const typeParams = this.helper.resolveTypeParameters(updatedNode)\n updatedNode = nodeFactory.callMethodSelectorFunction(updatedNode, typeParams)\n } else if (isCallingAbiCall(stubbedFunctionName)) {\n const typeParams = this.helper.resolveTypeParameters(updatedNode)\n updatedNode = nodeFactory.callAbiCallFunction(updatedNode, typeParams)\n } else if (isCallingItxnCompose(stubbedFunctionName)) {\n const typeParams = this.helper.resolveTypeParameters(updatedNode)\n updatedNode = nodeFactory.callItxnComposeFunction(updatedNode, typeParams)\n } else {\n updatedNode = nodeFactory.callStubbedFunction(updatedNode, infoArg)\n }\n }\n }\n return isGeneric\n ? nodeFactory.captureGenericTypeInfo(ts.visitEachChild(updatedNode, this.visit, this.context), JSON.stringify(info))\n : ts.visitEachChild(updatedNode, this.visit, this.context)\n }\n return ts.visitEachChild(node, this.visit, this.context)\n }\n}\nclass VariableInitializerVisitor {\n constructor(\n private context: Context,\n private helper: VisitorHelper,\n private declarationNode: ts.VariableDeclaration,\n ) {}\n\n public result(): ts.VariableDeclaration {\n const initializerNode = this.declarationNode.initializer\n if (!initializerNode) return this.declarationNode\n\n const updatedInitializer = new ExpressionVisitor(this.context, this.helper, initializerNode).result()\n if (updatedInitializer === initializerNode) return this.declarationNode\n return factory.updateVariableDeclaration(\n this.declarationNode,\n this.declarationNode.name,\n this.declarationNode.exclamationToken,\n this.declarationNode.type,\n updatedInitializer,\n )\n }\n}\n\nclass FunctionOrMethodVisitor {\n constructor(\n protected context: Context,\n protected helper: VisitorHelper,\n ) {}\n protected visit = (node: ts.Node): ts.Node => {\n return ts.visitEachChild(this.updateNode(node), this.visit, this.context)\n }\n\n protected updateNode(node: ts.Node): ts.Node {\n if (ts.isSwitchStatement(node)) {\n return factory.updateSwitchStatement(node, nodeFactory.switchableValue(node.expression), node.caseBlock)\n }\n\n if (ts.isCaseClause(node)) {\n return factory.updateCaseClause(node, nodeFactory.switchableValue(node.expression), node.statements)\n }\n\n if (ts.isBinaryExpression(node)) {\n const opTokenText = supportedBinaryOpString(node.operatorToken.kind)\n if (opTokenText) {\n return nodeFactory.binaryOp(node.left, node.right, opTokenText)\n }\n const augmentedAssignmentOpTokenText = supportedAugmentedAssignmentBinaryOpString(node.operatorToken.kind)\n if (augmentedAssignmentOpTokenText) {\n return nodeFactory.augmentedAssignmentBinaryOp(node.left, node.right, augmentedAssignmentOpTokenText)\n }\n }\n if (ts.isPrefixUnaryExpression(node)) {\n const tokenText = supportedPrefixUnaryOpString(node.operator)\n if (tokenText) {\n return nodeFactory.prefixUnaryOp(node.operand, tokenText)\n }\n }\n\n /*\n * capture generic type info in test functions; e.g.\n * ```\n * it('should work', () => {\n * ctx.txn.createScope([ctx.any.txn.applicationCall()]).execute(() => {\n * const box = Box<uint64>({key: Bytes('test-key')})\n * })\n * })\n * ```\n */\n if (ts.isVariableDeclaration(node) && node.initializer) {\n return new VariableInitializerVisitor(this.context, this.helper, node).result()\n }\n\n /*\n * capture generic type info in test functions and swap arc4 types with implementation; e.g.\n * ```\n * it('should work', () => {\n * expect(() => new Uint<32>(2 ** 32)).toThrowError(`expected value <= ${2 ** 32 - 1}`)\n * expect(Uint.fromBytes<Uint<32>>('').bytes).toEqual(Bytes())\n * })\n * ```\n */\n if (ts.isNewExpression(node)) {\n return new ExpressionVisitor(this.context, this.helper, node).result()\n }\n if (ts.isCallExpression(node)) {\n const stubbedFunctionName = tryGetStubbedFunctionName(node, this.helper)\n if (stubbedFunctionName) {\n return new ExpressionVisitor(this.context, this.helper, node, stubbedFunctionName).result()\n }\n }\n\n return node\n }\n}\n\nclass FunctionLikeDecVisitor extends FunctionOrMethodVisitor {\n constructor(\n context: Context,\n helper: VisitorHelper,\n private funcNode: ts.SignatureDeclaration,\n ) {\n super(context, helper)\n }\n\n public result(): ts.SignatureDeclaration {\n return ts.visitNode(this.funcNode, this.visit) as ts.SignatureDeclaration\n }\n}\nclass MethodDecVisitor extends FunctionOrMethodVisitor {\n constructor(\n context: Context,\n helper: VisitorHelper,\n private methodNode: ts.MethodDeclaration,\n ) {\n super(context, helper)\n }\n\n public result(): ts.MethodDeclaration {\n return ts.visitNode(this.methodNode, this.visit) as ts.MethodDeclaration\n }\n}\n\nclass ClassVisitor {\n private isArc4: boolean\n private _sourceFileName: string | undefined\n constructor(\n private context: Context,\n private helper: VisitorHelper,\n private classDec: ts.ClassDeclaration,\n ) {\n const classType = helper.resolveType(classDec)\n this.isArc4 = classType instanceof ptypes.ContractClassPType && classType.isARC4\n }\n\n public result(): ts.ClassDeclaration {\n return this.visit(this.classDec) as ts.ClassDeclaration\n }\n\n private get sourceFileName(): string {\n if (!this._sourceFileName) {\n this._sourceFileName = normalisePath(this.classDec.parent.getSourceFile().fileName, this.context.currentDirectory)\n }\n return this._sourceFileName\n }\n\n private visit = (node: ts.Node): ts.Node => {\n if (ts.isMethodDeclaration(node)) {\n if (this.classDec.name && this.isArc4) {\n const methodType = this.helper.resolveType(node)\n if (methodType instanceof ptypes.FunctionPType) {\n const argTypes = methodType.parameters.map((p) => JSON.stringify(getGenericTypeInfo(p[1])))\n const returnType = JSON.stringify(getGenericTypeInfo(methodType.returnType))\n this.helper.additionalStatements.push(\n nodeFactory.attachMetaData(this.sourceFileName, this.classDec.name, node, argTypes, returnType),\n )\n }\n }\n\n return new MethodDecVisitor(this.context, this.helper, node).result()\n }\n\n if (ts.isCallExpression(node)) {\n return new ExpressionVisitor(this.context, this.helper, node).result()\n }\n return ts.visitEachChild(node, this.visit, this.context)\n }\n}\n\nconst isGenericType = (type: ptypes.PType): boolean =>\n instanceOfAny(\n type,\n ptypes.ARC4StructType,\n ptypes.ARC4TupleType,\n ptypes.BoxMapPType,\n ptypes.BoxPType,\n ptypes.DynamicArrayType,\n ptypes.GlobalMapType,\n ptypes.GlobalStateType,\n ptypes.LocalMapType,\n ptypes.LocalStateType,\n ptypes.StaticArrayType,\n ptypes.UFixedNxMType,\n ptypes.UintNType,\n ptypes.MutableTuplePType,\n ptypes.ReadonlyTuplePType,\n ptypes.MutableObjectPType,\n ptypes.ImmutableObjectPType,\n )\n\nconst isEncodedType = (type: ptypes.PType): boolean =>\n instanceOfAny(\n type,\n ptypes.ARC4StructType,\n ptypes.ARC4TupleType,\n ptypes.DynamicArrayType,\n ptypes.StaticArrayType,\n ptypes.UFixedNxMType,\n ptypes.UintNType,\n ptypes.ReferenceArrayType,\n ptypes.FixedArrayPType,\n ) ||\n type === ptypes.arc4StringType ||\n type === ptypes.arc4BooleanType\n\nconst getGenericTypeInfo = (type: ptypes.PType, sourceLocation?: SourceLocation): TypeInfo => {\n if (type instanceof ptypes.UnionPType) {\n throw new CodeError(\n `${sourceLocation}: Union types are not valid as a variable, parameter, return, or property type. Expression type is ${type.name}`,\n )\n }\n let typeName = type?.name ?? type?.toString() ?? 'unknown'\n let genericArgs: TypeInfo[] | Record<string, TypeInfo> = []\n\n if (instanceOfAny(type, ptypes.LocalStateType, ptypes.GlobalStateType, ptypes.BoxPType)) {\n genericArgs.push(getGenericTypeInfo(type.contentType, sourceLocation))\n } else if (instanceOfAny(type, ptypes.BoxMapPType, ptypes.GlobalMapType, ptypes.LocalMapType)) {\n genericArgs.push(getGenericTypeInfo(type.keyType, sourceLocation))\n genericArgs.push(getGenericTypeInfo(type.contentType, sourceLocation))\n } else if (\n instanceOfAny(\n type,\n ptypes.StaticArrayType,\n ptypes.DynamicArrayType,\n ptypes.ArrayPType,\n ptypes.ReadonlyArrayPType,\n ptypes.ReferenceArrayType,\n ptypes.FixedArrayPType,\n )\n ) {\n const entries = []\n entries.push(['elementType', getGenericTypeInfo(type.elementType, sourceLocation)])\n if (instanceOfAny(type, ptypes.StaticArrayType, ptypes.FixedArrayPType)) {\n entries.push(['size', { name: type.arraySize.toString() }])\n }\n genericArgs = Object.fromEntries(entries)\n } else if (type instanceof ptypes.UFixedNxMType) {\n genericArgs = { n: { name: type.n.toString() }, m: { name: type.m.toString() } }\n } else if (type instanceof ptypes.UintNType) {\n genericArgs.push({ name: type.n.toString() })\n } else if (type instanceof ptypes.ARC4StructType) {\n typeName = `Struct<${type.name}>`\n genericArgs = Object.fromEntries(type.fields.map((f) => [f.name, getGenericTypeInfo(f.ptype, sourceLocation)]).filter((x) => !!x))\n } else if (type instanceof ptypes.MutableObjectPType || type instanceof ptypes.ImmutableObjectPType) {\n typeName = type instanceof ptypes.MutableObjectPType ? `Object<${type.name}>` : `ReadonlyObject<${type.name}>`\n genericArgs = Object.fromEntries(type.properties.map((p) => [p.name, getGenericTypeInfo(p.ptype, sourceLocation)]).filter((x) => !!x))\n } else if (\n type instanceof ptypes.ARC4TupleType ||\n type instanceof ptypes.MutableTuplePType ||\n type instanceof ptypes.ReadonlyTuplePType\n ) {\n typeName =\n type instanceof ptypes.MutableTuplePType\n ? `MutableTuple<${type.name}>`\n : type instanceof ptypes.ReadonlyTuplePType\n ? `ReadonlyTuple<${type.name}>`\n : type.name\n genericArgs.push(...type.items.map((t) => getGenericTypeInfo(t, sourceLocation)))\n }\n\n const result: TypeInfo = { name: typeName }\n if (genericArgs && (genericArgs.length || Object.keys(genericArgs).length)) {\n result.genericArgs = genericArgs\n }\n return result\n}\n\nconst tryGetStubbedFunctionName = (node: ts.CallExpression, helper: VisitorHelper): string | undefined => {\n if (node.expression.kind !== ts.SyntaxKind.Identifier && !ts.isPropertyAccessExpression(node.expression)) return undefined\n const identityExpression = ts.isPropertyAccessExpression(node.expression)\n ? (node.expression as ts.PropertyAccessExpression).name\n : (node.expression as ts.Identifier)\n const functionName = tryGetAlgoTsSymbolName(identityExpression, helper)\n if (functionName === undefined) return undefined\n const stubbedFunctionNames = ['convertBytes', 'decodeArc4', 'encodeArc4', 'emit', 'methodSelector', 'sizeOf', 'abiCall', 'clone']\n\n if (stubbedFunctionNames.includes(functionName)) {\n if (ts.isPropertyAccessExpression(node.expression)) {\n const objectName = tryGetAlgoTsSymbolName(node.expression.expression, helper)\n return objectName !== undefined ? functionName : undefined\n }\n return functionName\n }\n\n if (['begin', 'next'].includes(functionName) && ts.isPropertyAccessExpression(node.expression)) {\n const objectExpression = node.expression.expression\n const objectName = tryGetAlgoTsSymbolName(objectExpression, helper)\n if (['itxnCompose'].includes(objectName || '')) return functionName\n }\n\n return undefined\n}\n\nconst tryGetAlgoTsSymbolName = (node: ts.Node, helper: VisitorHelper): string | undefined => {\n const symbol = helper.tryGetSymbol(node)\n if (!symbol) return undefined\n\n const sourceFileName = symbol.valueDeclaration?.getSourceFile().fileName\n if (!sourceFileName) return undefined\n\n // If the symbol is from algorand-typescript package or testing example path, return its name\n if (algotsModulePaths.some((path) => sourceFileName.includes(path)) || sourceFileName.includes(testingExamplePath))\n return symbol.getName()\n\n // If the symbol is from algorand-typescript-testing package, return undefined as they do not need to be processed\n if (algotsTestingModulePaths(helper.getConfig().testingPackageName).some((path) => sourceFileName.includes(path))) return undefined\n\n return symbol.getName()\n}\n\nconst isCallingDecodeArc4 = (functionName: string | undefined): boolean => 'decodeArc4' === (functionName ?? '')\nconst isCallingEncodeArc4 = (functionName: string | undefined): boolean => 'encodeArc4' === (functionName ?? '')\nconst isCallingSizeOf = (functionName: string | undefined): boolean => 'sizeOf' === (functionName ?? '')\nconst isCallingEmit = (functionName: string | undefined): boolean => 'emit' === (functionName ?? '')\nconst isCallingMethodSelector = (functionName: string | undefined): boolean => 'methodSelector' === (functionName ?? '')\nconst isCallingAbiCall = (functionName: string | undefined): boolean => ['abiCall'].includes(functionName ?? '')\nconst isCallingItxnCompose = (functionName: string | undefined): boolean => ['begin', 'next'].includes(functionName ?? '')\nconst isCallingClone = (functionName: string | undefined): boolean => 'clone' === (functionName ?? '')\n","import { registerPTypes, typeRegistry } from '@algorandfoundation/puya-ts'\nimport type ts from 'typescript'\nimport { SourceFileVisitor } from './visitors'\n\nexport interface TransformerConfig {\n includeExt: string[]\n testingPackageName: string\n}\n/** @internal */\nexport const defaultTransformerConfig: TransformerConfig = {\n includeExt: ['.algo.ts', '.algo.spec.ts', '.algo.test.ts'],\n testingPackageName: '@algorandfoundation/algorand-typescript-testing',\n}\n\n/** @internal */\nexport function programFactory(config: TransformerConfig, program: ts.Program): ts.TransformerFactory<ts.SourceFile> {\n registerPTypes(typeRegistry)\n return (context) => {\n return (sourceFile) => {\n if (!config.includeExt.some((i) => sourceFile.fileName.endsWith(i))) return sourceFile\n return new SourceFileVisitor(context, sourceFile, program, config).result()\n }\n }\n}\n"],"names":["factory"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as programFactory, d as defaultTransformerConfig } from '../program-factory-
|
|
1
|
+
import { p as programFactory, d as defaultTransformerConfig } from '../program-factory-Dwx3qOoD.js';
|
|
2
2
|
import '@algorandfoundation/puya-ts';
|
|
3
3
|
import 'path';
|
|
4
4
|
import 'typescript';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as programFactory, d as defaultTransformerConfig } from '../program-factory-
|
|
1
|
+
import { p as programFactory, d as defaultTransformerConfig } from '../program-factory-Dwx3qOoD.js';
|
|
2
2
|
import '@algorandfoundation/puya-ts';
|
|
3
3
|
import 'path';
|
|
4
4
|
import 'typescript';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"program-factory-Bk_jDGuz.js","sources":["../src/test-transformer/errors.ts","../src/test-transformer/helpers.ts","../src/test-transformer/node-factory.ts","../src/test-transformer/supported-binary-op-string.ts","../src/test-transformer/visitors.ts","../src/test-transformer/program-factory.ts"],"sourcesContent":["/** @internal */\nexport class TransformerError extends Error {\n constructor(message: string) {\n super(message)\n }\n}\n","import type { SourceLocation } from '@algorandfoundation/puya-ts'\nimport { ptypes } from '@algorandfoundation/puya-ts'\nimport ts from 'typescript'\nimport upath from 'upath'\nimport { CodeError } from '../errors'\nimport { TransformerError } from './errors'\n\n/** @internal */\nexport const getPropertyNameAsString = (name: ts.PropertyName): ts.Identifier | ts.StringLiteral | ts.NoSubstitutionTemplateLiteral => {\n if (ts.isStringLiteralLike(name)) {\n return name\n }\n if (ts.isIdentifier(name)) {\n return ts.factory.createStringLiteral(name.text)\n }\n throw new TransformerError(`Node ${name.kind} cannot be converted to a static string`)\n}\n\n/** @internal */\nexport const trimGenericTypeName = (typeName: string) => typeName.replace(/<.*>/, '')\n\n/**\n * @internal\n * Normalise a file path to only include relevant segments.\n *\n * - Anything in /node_modules/ is truncated to <package-name>/path.ext\n * - Anything in workingDirectory is truncated relative to the workingDirectory\n * - Forward slashes are used to segment paths\n * @param filePath\n * @param workingDirectory\n */\nexport function normalisePath(filePath: string, workingDirectory: string): string {\n const localPackageName = /packages\\/algo-ts\\/dist\\/(.*)$/.exec(filePath)\n if (localPackageName) {\n return `@algorandfoundation/algorand-typescript/${localPackageName[1]}`\n }\n const nodeModuleName = /.*\\/node_modules\\/(.*)$/.exec(filePath)\n if (nodeModuleName) {\n return nodeModuleName[1]\n }\n const cwd = upath.normalize(`${workingDirectory}/`)\n const normalizedPath = upath.normalize(filePath)\n const moduleName = normalizedPath.startsWith(cwd) ? normalizedPath.slice(cwd.length) : normalizedPath\n return moduleName.replaceAll('\\\\', '/')\n}\n\n/** @internal */\nexport function ptypeToArc4EncodedType(ptype: ptypes.ReadonlyTuplePType, sourceLocation: SourceLocation): ptypes.ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: ptypes.MutableTuplePType, sourceLocation: SourceLocation): ptypes.ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: ptypes.ImmutableObjectPType, sourceLocation: SourceLocation): ptypes.ARC4StructType\nexport function ptypeToArc4EncodedType(ptype: ptypes.ArrayPType, sourceLocation: SourceLocation): ptypes.DynamicArrayType\nexport function ptypeToArc4EncodedType(ptype: ptypes.ReadonlyArrayPType, sourceLocation: SourceLocation): ptypes.DynamicArrayType\nexport function ptypeToArc4EncodedType(ptype: ptypes.FixedArrayPType, sourceLocation: SourceLocation): ptypes.StaticArrayType\nexport function ptypeToArc4EncodedType<T extends ptypes.ARC4EncodedType>(ptype: T, sourceLocation: SourceLocation): T\nexport function ptypeToArc4EncodedType(ptype: ptypes.PType, sourceLocation: SourceLocation): ptypes.ARC4EncodedType\nexport function ptypeToArc4EncodedType(ptype: ptypes.PType, sourceLocation: SourceLocation): ptypes.ARC4EncodedType {\n if (ptype instanceof ptypes.ARC4EncodedType) return ptype\n if (ptype.equals(ptypes.boolPType)) return ptypes.arc4BooleanType\n if (ptype.equals(ptypes.uint64PType)) return new ptypes.UintNType({ n: 64n })\n if (ptype.equals(ptypes.biguintPType)) return new ptypes.UintNType({ n: 512n })\n if (ptype instanceof ptypes.BytesPType)\n return ptype.length === null ? ptypes.DynamicBytesType : new ptypes.StaticBytesType({ length: ptype.length })\n if (ptype.equals(ptypes.stringPType)) return ptypes.arc4StringType\n if (ptype.equals(ptypes.assetPType)) return ptypes.arc4Uint64\n if (ptype.equals(ptypes.applicationPType)) return ptypes.arc4Uint64\n if (ptype.equals(ptypes.accountPType)) return ptypes.arc4AddressAlias\n if (ptype instanceof ptypes.TransientType) {\n throw new CodeError(ptype.expressionMessage)\n }\n if (ptype instanceof ptypes.ArrayPType)\n return new ptypes.DynamicArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n immutable: ptype.immutable,\n })\n if (ptype instanceof ptypes.ReadonlyArrayPType)\n return new ptypes.DynamicArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n immutable: ptype.immutable,\n })\n if (ptype instanceof ptypes.FixedArrayPType)\n return new ptypes.StaticArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n arraySize: ptype.arraySize,\n immutable: ptype.immutable,\n })\n\n if (ptype instanceof ptypes.ReadonlyTuplePType)\n return new ptypes.ARC4TupleType({ types: ptype.items.map((i) => ptypeToArc4EncodedType(i, sourceLocation)) })\n if (ptype instanceof ptypes.MutableTuplePType)\n return new ptypes.ARC4TupleType({ types: ptype.items.map((i) => ptypeToArc4EncodedType(i, sourceLocation)) })\n\n if (ptype instanceof ptypes.ImmutableObjectPType)\n return new ptypes.ARC4StructType({\n name: ptype.alias?.name ?? ptype.name,\n module: ptype.module,\n description: ptype.description,\n fields: Object.fromEntries(ptype.orderedProperties().map(([p, pt]) => [p, ptypeToArc4EncodedType(pt, sourceLocation)])),\n frozen: true,\n })\n if (ptype instanceof ptypes.MutableObjectPType)\n return new ptypes.ARC4StructType({\n name: ptype.alias?.name ?? ptype.name,\n module: ptype.module,\n description: ptype.description,\n fields: Object.fromEntries(ptype.orderedProperties().map(([p, pt]) => [p, ptypeToArc4EncodedType(pt, sourceLocation)])),\n frozen: false,\n })\n\n throw new CodeError(`${ptype} cannot be encoded to an ARC4 type`)\n}\n","import { ptypes } from '@algorandfoundation/puya-ts'\nimport ts from 'typescript'\nimport type { TypeInfo } from '../impl/encoded-types'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport { getPropertyNameAsString, trimGenericTypeName } from './helpers'\n\nconst factory = ts.factory\n/** @internal */\nexport const nodeFactory = {\n importHelpers(testingPackageName: string) {\n return [\n factory.createImportDeclaration(\n undefined,\n factory.createImportClause(false, undefined, factory.createNamespaceImport(factory.createIdentifier('runtimeHelpers'))),\n factory.createStringLiteral(`${testingPackageName}/runtime-helpers`),\n undefined,\n ),\n factory.createImportDeclaration(\n undefined,\n factory.createImportClause(\n false,\n undefined,\n factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier('arc4'))]),\n ),\n factory.createStringLiteral(`${testingPackageName}/internal`),\n undefined,\n ),\n ]\n },\n\n switchableValue(x: ts.Expression) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('switchableValue')),\n undefined,\n [x],\n )\n },\n binaryOp(left: ts.Expression, right: ts.Expression, op: string) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('binaryOp')),\n undefined,\n [left, right, factory.createStringLiteral(op)],\n )\n },\n augmentedAssignmentBinaryOp(left: ts.Expression, right: ts.Expression, op: string) {\n return factory.createAssignment(\n left,\n factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('binaryOp')),\n undefined,\n [left, right, factory.createStringLiteral(op.replace('=', ''))],\n ),\n )\n },\n\n prefixUnaryOp(operand: ts.Expression, op: string) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('unaryOp')),\n undefined,\n [operand, factory.createStringLiteral(op)],\n )\n },\n\n attachMetaData(\n sourceFileName: string,\n classIdentifier: ts.Identifier,\n method: ts.MethodDeclaration,\n argTypes: string[],\n returnType: string,\n ) {\n const methodName = getPropertyNameAsString(method.name)\n const metadata = factory.createObjectLiteralExpression([\n factory.createPropertyAssignment('methodName', methodName),\n factory.createPropertyAssignment(\n 'argTypes',\n factory.createArrayLiteralExpression(argTypes.map((p) => factory.createStringLiteral(p))),\n ),\n factory.createPropertyAssignment('returnType', factory.createStringLiteral(returnType)),\n ])\n return factory.createExpressionStatement(\n factory.createCallExpression(\n factory.createPropertyAccessExpression(factory.createIdentifier('runtimeHelpers'), factory.createIdentifier('attachAbiMetadata')),\n undefined,\n [\n classIdentifier,\n methodName,\n metadata,\n factory.createStringLiteral(sourceFileName),\n factory.createStringLiteral(classIdentifier.text),\n ],\n ),\n )\n },\n\n captureGenericTypeInfo(x: ts.Expression, info: string) {\n return factory.createCallExpression(\n factory.createPropertyAccessExpression(\n factory.createIdentifier('runtimeHelpers'),\n factory.createIdentifier('captureGenericTypeInfo'),\n ),\n undefined,\n [x, factory.createStringLiteral(info)],\n )\n },\n\n instantiateEncodedType(node: ts.NewExpression, typeInfo?: TypeInfo) {\n const infoString = JSON.stringify(typeInfo)\n const classIdentifier = node.expression.getText().replace('arc4.', '')\n return factory.createNewExpression(\n factory.createIdentifier(`arc4.${trimGenericTypeName(typeInfo?.name ?? classIdentifier)}`),\n node.typeArguments,\n [infoString ? factory.createStringLiteral(infoString) : undefined, ...(node.arguments ?? [])].filter((arg) => !!arg),\n )\n },\n\n callStubbedFunction(node: ts.CallExpression, typeInfo?: TypeInfo | TypeInfo[]) {\n const typeInfoArgs = typeInfo\n ? (Array.isArray(typeInfo) ? typeInfo : [typeInfo]).map((t) => factory.createStringLiteral(JSON.stringify(t)))\n : []\n\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [...typeInfoArgs, ...(node.arguments ?? [])])\n },\n\n callMethodSelectorFunction(node: ts.CallExpression, typeParams: ptypes.PType[]) {\n if (typeParams.length === 1 && typeParams[0] instanceof ptypes.FunctionPType && typeParams[0].declaredIn) {\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createObjectLiteralExpression([\n factory.createPropertyAssignment('method', factory.createStringLiteral(typeParams[0].name)),\n factory.createPropertyAssignment('contract', factory.createStringLiteral(typeParams[0].declaredIn.fullName)),\n ]),\n ])\n } else if (\n node.arguments.length === 1 &&\n ts.isPropertyAccessExpression(node.arguments[0]) &&\n ts.isPropertyAccessExpression(node.arguments[0].expression)\n ) {\n const contractIdenifier = node.arguments[0].expression.expression\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createObjectLiteralExpression([\n factory.createPropertyAssignment('method', node.arguments[0]),\n factory.createPropertyAssignment('contract', contractIdenifier),\n ]),\n ])\n } else {\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createObjectLiteralExpression([factory.createPropertyAssignment('method', node.arguments[0])]),\n ])\n }\n },\n\n callAbiCallFunction(node: ts.CallExpression, typeParams: ptypes.PType[]) {\n if (typeParams.length === 1 && typeParams[0] instanceof ptypes.FunctionPType && typeParams[0].declaredIn) {\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [\n factory.createStringLiteral(typeParams[0].declaredIn.fullName),\n factory.createStringLiteral(typeParams[0].name),\n ...node.arguments,\n ])\n }\n return node\n },\n\n callItxnComposeFunction(node: ts.CallExpression, typeParams: ptypes.PType[]) {\n if (\n node.arguments.length === 2 &&\n ts.isPropertyAccessExpression(node.arguments[0]) &&\n ts.isPropertyAccessExpression(node.arguments[0].expression)\n ) {\n const contractIdenifier = node.arguments[0].expression.expression\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [...node.arguments, contractIdenifier])\n } else if (\n node.arguments.length === 1 &&\n typeParams.length === 1 &&\n typeParams[0] instanceof ptypes.FunctionPType &&\n typeParams[0].declaredIn\n ) {\n const contractIdentifier = factory.createStringLiteral(typeParams[0].declaredIn.fullName)\n const methodName = factory.createStringLiteral(typeParams[0].name)\n return factory.updateCallExpression(node, node.expression, node.typeArguments, [...node.arguments, contractIdentifier, methodName])\n }\n return node\n },\n} satisfies Record<string, (...args: DeliberateAny[]) => ts.Node | ts.Node[]>\n","import type { BinaryOperator, PrefixUnaryOperator } from 'typescript'\nimport ts from 'typescript'\n\n/** @internal */\nexport function supportedBinaryOpString(x: BinaryOperator): string | undefined {\n switch (x) {\n case ts.SyntaxKind.MinusToken:\n return '-'\n case ts.SyntaxKind.PlusToken:\n return '+'\n case ts.SyntaxKind.EqualsEqualsEqualsToken:\n return '==='\n case ts.SyntaxKind.ExclamationEqualsEqualsToken:\n return '!=='\n case ts.SyntaxKind.GreaterThanToken:\n return '>'\n case ts.SyntaxKind.GreaterThanEqualsToken:\n return '>='\n case ts.SyntaxKind.GreaterThanGreaterThanToken:\n return '>>'\n case ts.SyntaxKind.LessThanToken:\n return '<'\n case ts.SyntaxKind.LessThanEqualsToken:\n return '<='\n case ts.SyntaxKind.LessThanLessThanToken:\n return '<<'\n case ts.SyntaxKind.AsteriskToken:\n return '*'\n case ts.SyntaxKind.AsteriskAsteriskToken:\n return '**'\n case ts.SyntaxKind.SlashToken:\n return '/'\n case ts.SyntaxKind.PercentToken:\n return '%'\n case ts.SyntaxKind.AmpersandToken:\n return '&'\n case ts.SyntaxKind.BarToken:\n return '|'\n case ts.SyntaxKind.CaretToken:\n return '^'\n case ts.SyntaxKind.AmpersandAmpersandEqualsToken:\n case ts.SyntaxKind.AmpersandAmpersandToken:\n case ts.SyntaxKind.AmpersandEqualsToken:\n case ts.SyntaxKind.BarBarEqualsToken:\n case ts.SyntaxKind.BarBarToken:\n case ts.SyntaxKind.BarEqualsToken:\n case ts.SyntaxKind.CaretEqualsToken:\n case ts.SyntaxKind.CommaToken:\n case ts.SyntaxKind.EqualsEqualsToken:\n case ts.SyntaxKind.EqualsToken:\n case ts.SyntaxKind.ExclamationEqualsToken:\n case ts.SyntaxKind.InKeyword:\n case ts.SyntaxKind.InstanceOfKeyword:\n case ts.SyntaxKind.QuestionQuestionEqualsToken:\n case ts.SyntaxKind.QuestionQuestionToken:\n case ts.SyntaxKind.GreaterThanGreaterThanEqualsToken:\n case ts.SyntaxKind.LessThanLessThanEqualsToken:\n case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken:\n case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:\n return undefined\n }\n}\n\n/** @internal */\nexport function supportedAugmentedAssignmentBinaryOpString(x: BinaryOperator): string | undefined {\n switch (x) {\n case ts.SyntaxKind.PlusEqualsToken:\n return '+='\n case ts.SyntaxKind.MinusEqualsToken:\n return '-='\n case ts.SyntaxKind.SlashEqualsToken:\n return '/='\n case ts.SyntaxKind.AsteriskEqualsToken:\n return '*='\n case ts.SyntaxKind.AsteriskAsteriskEqualsToken:\n return '**='\n case ts.SyntaxKind.PercentEqualsToken:\n return '%='\n default:\n return undefined\n }\n}\n\n/** @internal */\nexport function supportedPrefixUnaryOpString(x: PrefixUnaryOperator): string | undefined {\n switch (x) {\n case ts.SyntaxKind.TildeToken:\n return '~'\n default:\n return undefined\n }\n}\n","import { AbsolutePath, LoggingContext, ptypes, SourceLocation, TypeResolver } from '@algorandfoundation/puya-ts'\nimport path from 'path'\nimport ts from 'typescript'\nimport { CodeError } from '../errors'\nimport type { TypeInfo } from '../impl/encoded-types'\nimport { instanceOfAny } from '../typescript-helpers'\nimport { normalisePath, ptypeToArc4EncodedType } from './helpers'\nimport { nodeFactory } from './node-factory'\nimport type { TransformerConfig } from './program-factory'\nimport {\n supportedAugmentedAssignmentBinaryOpString,\n supportedBinaryOpString,\n supportedPrefixUnaryOpString,\n} from './supported-binary-op-string'\n\nconst { factory } = ts\n\nconst algotsModuleRegExp = new RegExp(/^(\"|')@algorandfoundation\\/algorand-typescript(\\/|\"|')/)\nconst algotsModuleSpecifier = '@algorandfoundation/algorand-typescript'\nconst testingInternalModuleSpecifier = (testingPackageName: string) => `${testingPackageName}/internal`\nconst algotsModulePaths = [\n algotsModuleSpecifier,\n '/puya-ts/packages/algo-ts/',\n `${path.sep}puya-ts${path.sep}packages${path.sep}algo-ts${path.sep}`,\n]\nconst algotsTestingModulePaths = (testingPackageName: string) => [\n testingPackageName,\n `${path.sep}algorand-typescript-testing${path.sep}src${path.sep}`,\n `${path.sep}algorand-typescript-testing${path.sep}dist${path.sep}`,\n]\n\nconst testingExamplePath = `${path.sep}algorand-typescript-testing${path.sep}examples${path.sep}`\n\ntype VisitorHelper = {\n additionalStatements: ts.Statement[]\n resolveType(node: ts.Node): ptypes.PType\n resolveTypeParameters(node: ts.CallExpression): ptypes.PType[]\n sourceLocation(node: ts.Node): SourceLocation\n tryGetSymbol(node: ts.Node): ts.Symbol | undefined\n getConfig(): TransformerConfig\n}\n\ntype Context = ts.TransformationContext & { currentDirectory: string }\n\n/** @internal */\nexport class SourceFileVisitor {\n private helper: VisitorHelper\n private context: Context\n\n constructor(\n context: ts.TransformationContext,\n private sourceFile: ts.SourceFile,\n program: ts.Program,\n config: TransformerConfig,\n ) {\n this.context = { ...context, currentDirectory: program.getCurrentDirectory() }\n const typeChecker = program.getTypeChecker()\n const loggingContext = LoggingContext.create()\n const programDir = AbsolutePath.resolve({ path: program.getCurrentDirectory() })\n const typeResolver = new TypeResolver(typeChecker, programDir)\n this.helper = {\n additionalStatements: [],\n resolveType(node: ts.Node): ptypes.PType {\n const sourceLocation = this.sourceLocation(node)\n try {\n return loggingContext.run(() => typeResolver.resolve(node, sourceLocation!))\n } catch (e) {\n const err = e as Error\n if (\n err.constructor.name === 'CodeError' &&\n !['Classes must extend', 'is not supported', 'Unable to reflect'].some((s) => err.message.includes(s))\n ) {\n throw new Error(`${sourceLocation?.toString()}: ${err.message}`, { cause: err })\n }\n return ptypes.anyPType\n }\n },\n resolveTypeParameters(node: ts.CallExpression) {\n return loggingContext.run(() => typeResolver.resolveTypeParameters(node, this.sourceLocation(node)))\n },\n tryGetSymbol(node: ts.Node): ts.Symbol | undefined {\n const s = typeChecker.getSymbolAtLocation(node)\n return s && s.flags & ts.SymbolFlags.Alias ? typeChecker.getAliasedSymbol(s) : s\n },\n sourceLocation(node: ts.Node): SourceLocation {\n try {\n return SourceLocation.fromNode(node, programDir)\n } catch {\n return SourceLocation.None\n }\n },\n getConfig(): TransformerConfig {\n return config\n },\n }\n }\n\n public result(): ts.SourceFile {\n const updatedSourceFile = ts.visitNode(this.sourceFile, this.visit) as ts.SourceFile\n return factory.updateSourceFile(updatedSourceFile, [\n ...nodeFactory.importHelpers(this.helper.getConfig().testingPackageName),\n ...updatedSourceFile.statements,\n ...this.helper.additionalStatements,\n ])\n }\n\n private visit = (node: ts.Node): ts.Node => {\n if (ts.isImportDeclaration(node)) {\n return new ImportDeclarationVisitor(node, this.helper).result()\n }\n if (ts.isFunctionLike(node)) {\n return new FunctionLikeDecVisitor(this.context, this.helper, node).result()\n }\n if (ts.isClassDeclaration(node)) {\n return new ClassVisitor(this.context, this.helper, node).result()\n }\n\n // capture generic type info for variable initialising outside class and function declarations\n // e.g. `const x = new Uint<32>(42)\n if (ts.isVariableDeclaration(node) && node.initializer) {\n return new VariableInitializerVisitor(this.context, this.helper, node).result()\n }\n\n return ts.visitEachChild(node, this.visit, this.context)\n }\n}\n\nclass ImportDeclarationVisitor {\n constructor(\n private declarationNode: ts.ImportDeclaration,\n private helper: VisitorHelper,\n ) {}\n\n public result(): ts.ImportDeclaration {\n const moduleSpecifier = this.declarationNode.moduleSpecifier.getText()\n if (this.declarationNode.importClause?.isTypeOnly || !algotsModuleRegExp.test(moduleSpecifier)) return this.declarationNode\n\n const namedBindings = this.declarationNode.importClause?.namedBindings\n // remove `arc4` from named bindings, as it is explicitly imported in the `importHelpers` method\n const nonTypeNamedBindings =\n namedBindings && ts.isNamedImports(namedBindings)\n ? (namedBindings as ts.NamedImports).elements.filter((e) => !e.isTypeOnly && e.name.getText() !== 'arc4')\n : []\n return factory.createImportDeclaration(\n this.declarationNode.modifiers,\n nonTypeNamedBindings.length\n ? factory.createImportClause(false, this.declarationNode.importClause?.name, factory.createNamedImports(nonTypeNamedBindings))\n : this.declarationNode.importClause,\n factory.createStringLiteral(\n moduleSpecifier\n .replace(algotsModuleSpecifier, testingInternalModuleSpecifier(this.helper.getConfig().testingPackageName))\n .replace(/^(\"|')/, '')\n .replace(/(\"|')$/, ''),\n ),\n this.declarationNode.attributes,\n )\n }\n}\n\nclass ExpressionVisitor {\n constructor(\n private context: Context,\n private helper: VisitorHelper,\n private expressionNode: ts.Expression,\n private stubbedFunctionName?: string,\n ) {}\n\n public result(): ts.Expression {\n return this.visit(this.expressionNode) as ts.Expression\n }\n\n private visit = (node: ts.Node): ts.Node => {\n handleTypeInfoCapture: if (ts.isCallExpression(node) || ts.isNewExpression(node)) {\n if (!tryGetAlgoTsSymbolName(node.expression, this.helper)) break handleTypeInfoCapture\n\n const type = this.helper.resolveType(node)\n\n const isGeneric = isGenericType(type)\n const isArc4Encoded = isEncodedType(type)\n const info = isGeneric || isArc4Encoded ? getGenericTypeInfo(type) : undefined\n let updatedNode = node\n\n if (ts.isNewExpression(updatedNode)) {\n if (isEncodedType(type)) {\n updatedNode = nodeFactory.instantiateEncodedType(updatedNode, info)\n }\n }\n\n if (ts.isCallExpression(updatedNode)) {\n const stubbedFunctionName = this.stubbedFunctionName ?? tryGetStubbedFunctionName(updatedNode, this.helper)\n this.stubbedFunctionName = undefined\n let infoArg: TypeInfo | TypeInfo[] | undefined = info\n\n // the nodes which have been created or updated by the node factory will not have source location,\n // and we do not need to process them further\n const sourceLocation = this.helper.sourceLocation(updatedNode)\n if (sourceLocation === SourceLocation.None) break handleTypeInfoCapture\n\n if (\n isCallingEmit(stubbedFunctionName) ||\n isCallingEncodeArc4(stubbedFunctionName) ||\n isCallingSizeOf(stubbedFunctionName) ||\n isCallingClone(stubbedFunctionName)\n ) {\n infoArg = this.helper.resolveTypeParameters(updatedNode).map((t) => getGenericTypeInfo(t, sourceLocation))[0]\n } else if (isCallingDecodeArc4(stubbedFunctionName)) {\n const sourceType = ptypeToArc4EncodedType(type, sourceLocation)\n const sourceTypeInfo = getGenericTypeInfo(sourceType, sourceLocation)\n const targetTypeInfo = getGenericTypeInfo(type, sourceLocation)\n infoArg = [sourceTypeInfo, targetTypeInfo]\n }\n\n if (stubbedFunctionName) {\n if (isCallingMethodSelector(stubbedFunctionName)) {\n const typeParams = this.helper.resolveTypeParameters(updatedNode)\n updatedNode = nodeFactory.callMethodSelectorFunction(updatedNode, typeParams)\n } else if (isCallingAbiCall(stubbedFunctionName)) {\n const typeParams = this.helper.resolveTypeParameters(updatedNode)\n updatedNode = nodeFactory.callAbiCallFunction(updatedNode, typeParams)\n } else if (isCallingItxnCompose(stubbedFunctionName)) {\n const typeParams = this.helper.resolveTypeParameters(updatedNode)\n updatedNode = nodeFactory.callItxnComposeFunction(updatedNode, typeParams)\n } else {\n updatedNode = nodeFactory.callStubbedFunction(updatedNode, infoArg)\n }\n }\n }\n return isGeneric\n ? nodeFactory.captureGenericTypeInfo(ts.visitEachChild(updatedNode, this.visit, this.context), JSON.stringify(info))\n : ts.visitEachChild(updatedNode, this.visit, this.context)\n }\n return ts.visitEachChild(node, this.visit, this.context)\n }\n}\nclass VariableInitializerVisitor {\n constructor(\n private context: Context,\n private helper: VisitorHelper,\n private declarationNode: ts.VariableDeclaration,\n ) {}\n\n public result(): ts.VariableDeclaration {\n const initializerNode = this.declarationNode.initializer\n if (!initializerNode) return this.declarationNode\n\n const updatedInitializer = new ExpressionVisitor(this.context, this.helper, initializerNode).result()\n if (updatedInitializer === initializerNode) return this.declarationNode\n return factory.updateVariableDeclaration(\n this.declarationNode,\n this.declarationNode.name,\n this.declarationNode.exclamationToken,\n this.declarationNode.type,\n updatedInitializer,\n )\n }\n}\n\nclass FunctionOrMethodVisitor {\n constructor(\n protected context: Context,\n protected helper: VisitorHelper,\n ) {}\n protected visit = (node: ts.Node): ts.Node => {\n return ts.visitEachChild(this.updateNode(node), this.visit, this.context)\n }\n\n protected updateNode(node: ts.Node): ts.Node {\n if (ts.isSwitchStatement(node)) {\n return factory.updateSwitchStatement(node, nodeFactory.switchableValue(node.expression), node.caseBlock)\n }\n\n if (ts.isCaseClause(node)) {\n return factory.updateCaseClause(node, nodeFactory.switchableValue(node.expression), node.statements)\n }\n\n if (ts.isBinaryExpression(node)) {\n const opTokenText = supportedBinaryOpString(node.operatorToken.kind)\n if (opTokenText) {\n return nodeFactory.binaryOp(node.left, node.right, opTokenText)\n }\n const augmentedAssignmentOpTokenText = supportedAugmentedAssignmentBinaryOpString(node.operatorToken.kind)\n if (augmentedAssignmentOpTokenText) {\n return nodeFactory.augmentedAssignmentBinaryOp(node.left, node.right, augmentedAssignmentOpTokenText)\n }\n }\n if (ts.isPrefixUnaryExpression(node)) {\n const tokenText = supportedPrefixUnaryOpString(node.operator)\n if (tokenText) {\n return nodeFactory.prefixUnaryOp(node.operand, tokenText)\n }\n }\n\n /*\n * capture generic type info in test functions; e.g.\n * ```\n * it('should work', () => {\n * ctx.txn.createScope([ctx.any.txn.applicationCall()]).execute(() => {\n * const box = Box<uint64>({key: Bytes('test-key')})\n * })\n * })\n * ```\n */\n if (ts.isVariableDeclaration(node) && node.initializer) {\n return new VariableInitializerVisitor(this.context, this.helper, node).result()\n }\n\n /*\n * capture generic type info in test functions and swap arc4 types with implementation; e.g.\n * ```\n * it('should work', () => {\n * expect(() => new Uint<32>(2 ** 32)).toThrowError(`expected value <= ${2 ** 32 - 1}`)\n * expect(Uint.fromBytes<Uint<32>>('').bytes).toEqual(Bytes())\n * })\n * ```\n */\n if (ts.isNewExpression(node)) {\n return new ExpressionVisitor(this.context, this.helper, node).result()\n }\n if (ts.isCallExpression(node)) {\n const stubbedFunctionName = tryGetStubbedFunctionName(node, this.helper)\n if (stubbedFunctionName) {\n return new ExpressionVisitor(this.context, this.helper, node, stubbedFunctionName).result()\n }\n }\n\n return node\n }\n}\n\nclass FunctionLikeDecVisitor extends FunctionOrMethodVisitor {\n constructor(\n context: Context,\n helper: VisitorHelper,\n private funcNode: ts.SignatureDeclaration,\n ) {\n super(context, helper)\n }\n\n public result(): ts.SignatureDeclaration {\n return ts.visitNode(this.funcNode, this.visit) as ts.SignatureDeclaration\n }\n}\nclass MethodDecVisitor extends FunctionOrMethodVisitor {\n constructor(\n context: Context,\n helper: VisitorHelper,\n private methodNode: ts.MethodDeclaration,\n ) {\n super(context, helper)\n }\n\n public result(): ts.MethodDeclaration {\n return ts.visitNode(this.methodNode, this.visit) as ts.MethodDeclaration\n }\n}\n\nclass ClassVisitor {\n private isArc4: boolean\n private _sourceFileName: string | undefined\n constructor(\n private context: Context,\n private helper: VisitorHelper,\n private classDec: ts.ClassDeclaration,\n ) {\n const classType = helper.resolveType(classDec)\n this.isArc4 = classType instanceof ptypes.ContractClassPType && classType.isARC4\n }\n\n public result(): ts.ClassDeclaration {\n return this.visit(this.classDec) as ts.ClassDeclaration\n }\n\n private get sourceFileName(): string {\n if (!this._sourceFileName) {\n this._sourceFileName = normalisePath(this.classDec.parent.getSourceFile().fileName, this.context.currentDirectory)\n }\n return this._sourceFileName\n }\n\n private visit = (node: ts.Node): ts.Node => {\n if (ts.isMethodDeclaration(node)) {\n if (this.classDec.name && this.isArc4) {\n const methodType = this.helper.resolveType(node)\n if (methodType instanceof ptypes.FunctionPType) {\n const argTypes = methodType.parameters.map((p) => JSON.stringify(getGenericTypeInfo(p[1])))\n const returnType = JSON.stringify(getGenericTypeInfo(methodType.returnType))\n this.helper.additionalStatements.push(\n nodeFactory.attachMetaData(this.sourceFileName, this.classDec.name, node, argTypes, returnType),\n )\n }\n }\n\n return new MethodDecVisitor(this.context, this.helper, node).result()\n }\n\n if (ts.isCallExpression(node)) {\n return new ExpressionVisitor(this.context, this.helper, node).result()\n }\n return ts.visitEachChild(node, this.visit, this.context)\n }\n}\n\nconst isGenericType = (type: ptypes.PType): boolean =>\n instanceOfAny(\n type,\n ptypes.ARC4StructType,\n ptypes.ARC4TupleType,\n ptypes.BoxMapPType,\n ptypes.BoxPType,\n ptypes.DynamicArrayType,\n ptypes.GlobalMapType,\n ptypes.GlobalStateType,\n ptypes.LocalMapType,\n ptypes.LocalStateType,\n ptypes.StaticArrayType,\n ptypes.UFixedNxMType,\n ptypes.UintNType,\n ptypes.MutableTuplePType,\n ptypes.ReadonlyTuplePType,\n ptypes.MutableObjectPType,\n ptypes.ImmutableObjectPType,\n )\n\nconst isEncodedType = (type: ptypes.PType): boolean =>\n instanceOfAny(\n type,\n ptypes.ARC4StructType,\n ptypes.ARC4TupleType,\n ptypes.DynamicArrayType,\n ptypes.StaticArrayType,\n ptypes.UFixedNxMType,\n ptypes.UintNType,\n ptypes.ReferenceArrayType,\n ptypes.FixedArrayPType,\n ) ||\n type === ptypes.arc4StringType ||\n type === ptypes.arc4BooleanType\n\nconst getGenericTypeInfo = (type: ptypes.PType, sourceLocation?: SourceLocation): TypeInfo => {\n if (type instanceof ptypes.UnionPType) {\n throw new CodeError(\n `${sourceLocation}: Union types are not valid as a variable, parameter, return, or property type. Expression type is ${type.name}`,\n )\n }\n let typeName = type?.name ?? type?.toString() ?? 'unknown'\n let genericArgs: TypeInfo[] | Record<string, TypeInfo> = []\n\n if (instanceOfAny(type, ptypes.LocalStateType, ptypes.GlobalStateType, ptypes.BoxPType)) {\n genericArgs.push(getGenericTypeInfo(type.contentType, sourceLocation))\n } else if (instanceOfAny(type, ptypes.BoxMapPType, ptypes.GlobalMapType, ptypes.LocalMapType)) {\n genericArgs.push(getGenericTypeInfo(type.keyType, sourceLocation))\n genericArgs.push(getGenericTypeInfo(type.contentType, sourceLocation))\n } else if (\n instanceOfAny(\n type,\n ptypes.StaticArrayType,\n ptypes.DynamicArrayType,\n ptypes.ArrayPType,\n ptypes.ReadonlyArrayPType,\n ptypes.ReferenceArrayType,\n ptypes.FixedArrayPType,\n )\n ) {\n const entries = []\n entries.push(['elementType', getGenericTypeInfo(type.elementType, sourceLocation)])\n if (instanceOfAny(type, ptypes.StaticArrayType, ptypes.FixedArrayPType)) {\n entries.push(['size', { name: type.arraySize.toString() }])\n }\n genericArgs = Object.fromEntries(entries)\n } else if (type instanceof ptypes.UFixedNxMType) {\n genericArgs = { n: { name: type.n.toString() }, m: { name: type.m.toString() } }\n } else if (type instanceof ptypes.UintNType) {\n genericArgs.push({ name: type.n.toString() })\n } else if (type instanceof ptypes.ARC4StructType) {\n typeName = `Struct<${type.name}>`\n genericArgs = Object.fromEntries(\n Object.entries(type.fields)\n .map(([key, value]) => [key, getGenericTypeInfo(value, sourceLocation)])\n .filter((x) => !!x),\n )\n } else if (type instanceof ptypes.MutableObjectPType || type instanceof ptypes.ImmutableObjectPType) {\n typeName = type instanceof ptypes.MutableObjectPType ? `Object<${type.name}>` : `ReadonlyObject<${type.name}>`\n genericArgs = Object.fromEntries(\n Object.entries(type.properties)\n .map(([key, value]) => [key, getGenericTypeInfo(value, sourceLocation)])\n .filter((x) => !!x),\n )\n } else if (\n type instanceof ptypes.ARC4TupleType ||\n type instanceof ptypes.MutableTuplePType ||\n type instanceof ptypes.ReadonlyTuplePType\n ) {\n typeName =\n type instanceof ptypes.MutableTuplePType\n ? `MutableTuple<${type.name}>`\n : type instanceof ptypes.ReadonlyTuplePType\n ? `ReadonlyTuple<${type.name}>`\n : type.name\n genericArgs.push(...type.items.map((t) => getGenericTypeInfo(t, sourceLocation)))\n }\n\n const result: TypeInfo = { name: typeName }\n if (genericArgs && (genericArgs.length || Object.keys(genericArgs).length)) {\n result.genericArgs = genericArgs\n }\n return result\n}\n\nconst tryGetStubbedFunctionName = (node: ts.CallExpression, helper: VisitorHelper): string | undefined => {\n if (node.expression.kind !== ts.SyntaxKind.Identifier && !ts.isPropertyAccessExpression(node.expression)) return undefined\n const identityExpression = ts.isPropertyAccessExpression(node.expression)\n ? (node.expression as ts.PropertyAccessExpression).name\n : (node.expression as ts.Identifier)\n const functionName = tryGetAlgoTsSymbolName(identityExpression, helper)\n if (functionName === undefined) return undefined\n const stubbedFunctionNames = ['convertBytes', 'decodeArc4', 'encodeArc4', 'emit', 'methodSelector', 'sizeOf', 'abiCall', 'clone']\n\n if (stubbedFunctionNames.includes(functionName)) {\n if (ts.isPropertyAccessExpression(node.expression)) {\n const objectName = tryGetAlgoTsSymbolName(node.expression.expression, helper)\n return objectName !== undefined ? functionName : undefined\n }\n return functionName\n }\n\n if (['begin', 'next'].includes(functionName) && ts.isPropertyAccessExpression(node.expression)) {\n const objectExpression = node.expression.expression\n const objectName = tryGetAlgoTsSymbolName(objectExpression, helper)\n if (['itxnCompose'].includes(objectName || '')) return functionName\n }\n\n return undefined\n}\n\nconst tryGetAlgoTsSymbolName = (node: ts.Node, helper: VisitorHelper): string | undefined => {\n const symbol = helper.tryGetSymbol(node)\n if (!symbol) return undefined\n\n const sourceFileName = symbol.valueDeclaration?.getSourceFile().fileName\n if (!sourceFileName) return undefined\n\n // If the symbol is from algorand-typescript package or testing example path, return its name\n if (algotsModulePaths.some((path) => sourceFileName.includes(path)) || sourceFileName.includes(testingExamplePath))\n return symbol.getName()\n\n // If the symbol is from algorand-typescript-testing package, return undefined as they do not need to be processed\n if (algotsTestingModulePaths(helper.getConfig().testingPackageName).some((path) => sourceFileName.includes(path))) return undefined\n\n return symbol.getName()\n}\n\nconst isCallingDecodeArc4 = (functionName: string | undefined): boolean => 'decodeArc4' === (functionName ?? '')\nconst isCallingEncodeArc4 = (functionName: string | undefined): boolean => 'encodeArc4' === (functionName ?? '')\nconst isCallingSizeOf = (functionName: string | undefined): boolean => 'sizeOf' === (functionName ?? '')\nconst isCallingEmit = (functionName: string | undefined): boolean => 'emit' === (functionName ?? '')\nconst isCallingMethodSelector = (functionName: string | undefined): boolean => 'methodSelector' === (functionName ?? '')\nconst isCallingAbiCall = (functionName: string | undefined): boolean => ['abiCall'].includes(functionName ?? '')\nconst isCallingItxnCompose = (functionName: string | undefined): boolean => ['begin', 'next'].includes(functionName ?? '')\nconst isCallingClone = (functionName: string | undefined): boolean => 'clone' === (functionName ?? '')\n","import { registerPTypes, typeRegistry } from '@algorandfoundation/puya-ts'\nimport type ts from 'typescript'\nimport { SourceFileVisitor } from './visitors'\n\nexport interface TransformerConfig {\n includeExt: string[]\n testingPackageName: string\n}\n/** @internal */\nexport const defaultTransformerConfig: TransformerConfig = {\n includeExt: ['.algo.ts', '.algo.spec.ts', '.algo.test.ts'],\n testingPackageName: '@algorandfoundation/algorand-typescript-testing',\n}\n\n/** @internal */\nexport function programFactory(config: TransformerConfig, program: ts.Program): ts.TransformerFactory<ts.SourceFile> {\n registerPTypes(typeRegistry)\n return (context) => {\n return (sourceFile) => {\n if (!config.includeExt.some((i) => sourceFile.fileName.endsWith(i))) return sourceFile\n return new SourceFileVisitor(context, sourceFile, program, config).result()\n }\n }\n}\n"],"names":["factory"],"mappings":"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"}
|