@algorandfoundation/puya-ts 1.2.0-beta.2 → 1.2.0-beta.21

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 (67) hide show
  1. package/README.md +7 -5
  2. package/{analyser-service-DSK9g7zQ.js → analyser-service-CGprVWba.js} +409 -372
  3. package/analyser-service-CGprVWba.js.map +1 -0
  4. package/analyserService.mjs +7 -6
  5. package/analyserService.mjs.map +1 -1
  6. package/arc4-clientgen-C7FQSt3R.js +324 -0
  7. package/arc4-clientgen-C7FQSt3R.js.map +1 -0
  8. package/arc4-clientgen.d.ts +6 -0
  9. package/awst/intrinsic-factory.d.ts +4 -2
  10. package/awst/node-factory.d.ts +1 -0
  11. package/awst/nodes.d.ts +22 -2
  12. package/awst/to-code-visitor.d.ts +2 -0
  13. package/awst/validation/awst-traverser.d.ts +3 -1
  14. package/awst/wtypes.d.ts +8 -1
  15. package/awst_build/arc4-util.d.ts +1 -38
  16. package/awst_build/ast-visitors/contract-method-visitor.d.ts +0 -2
  17. package/awst_build/eb/arc28/arc-28-emit-function-builder.d.ts +1 -2
  18. package/awst_build/eb/arc4/uintn.d.ts +1 -1
  19. package/awst_build/eb/arc4/util.d.ts +1 -0
  20. package/awst_build/eb/array-like/util.d.ts +0 -1
  21. package/awst_build/eb/logged-error-builder.d.ts +11 -0
  22. package/awst_build/models/decorator-data.d.ts +1 -0
  23. package/awst_build/ptypes/for-export.d.ts +0 -1
  24. package/awst_build/ptypes/index.d.ts +2 -0
  25. package/bin/puyats-clientgen.d.ts +2 -0
  26. package/bin/puyats-clientgen.mjs +101 -0
  27. package/bin/puyats-clientgen.mjs.map +1 -0
  28. package/bin/puyats-ls.mjs +21 -46
  29. package/bin/puyats-ls.mjs.map +1 -1
  30. package/bin/run-cli.mjs +18 -12
  31. package/bin/run-cli.mjs.map +1 -1
  32. package/{check-node-version-BtcNqlid.js → check-node-version-DcMVGPC-.js} +3 -3
  33. package/{check-node-version-BtcNqlid.js.map → check-node-version-DcMVGPC-.js.map} +1 -1
  34. package/cli/build-command.d.ts +2 -0
  35. package/cli.mjs +36 -76
  36. package/cli.mjs.map +1 -1
  37. package/clientgen.d.ts +1 -0
  38. package/code-fix/{invalid-non-null-assertion.d.ts → no-op-non-null-assertion.d.ts} +1 -1
  39. package/{compile-Cj7vjDbw.js → compile-D0CpLiRh.js} +13 -4
  40. package/compile-D0CpLiRh.js.map +1 -0
  41. package/compile.d.ts +1 -1
  42. package/constants.d.ts +1 -1
  43. package/contract-class-model-CLKobHyV.js +5574 -0
  44. package/contract-class-model-CLKobHyV.js.map +1 -0
  45. package/index.d.ts +1 -1
  46. package/index.mjs +17 -10
  47. package/index.mjs.map +1 -1
  48. package/logger/index.d.ts +1 -0
  49. package/{options-Cbipn6vL.js → options-B93nVWrL.js} +2419 -8288
  50. package/options-B93nVWrL.js.map +1 -0
  51. package/options.d.ts +4 -0
  52. package/package.json +13 -12
  53. package/puya/puya-service.d.ts +5 -1
  54. package/{resolve-puya-path-CsuzbFH2.js → resolve-puya-path-D7qDcdPx.js} +9 -45
  55. package/resolve-puya-path-D7qDcdPx.js.map +1 -0
  56. package/semver-BPw8lYGI.js +45 -0
  57. package/semver-BPw8lYGI.js.map +1 -0
  58. package/util/typed-message-port.d.ts +2 -2
  59. package/util-BhM5b2cL.js +63 -0
  60. package/util-BhM5b2cL.js.map +1 -0
  61. package/visitor/syntax-names.d.ts +190 -190
  62. package/analyser-service-DSK9g7zQ.js.map +0 -1
  63. package/compile-Cj7vjDbw.js.map +0 -1
  64. package/options-Cbipn6vL.js.map +0 -1
  65. package/puya/index.d.ts +0 -14
  66. package/resolve-puya-path-CsuzbFH2.js.map +0 -1
  67. package/util/arc4-signature-parser.d.ts +0 -14
package/puya/index.d.ts DELETED
@@ -1,14 +0,0 @@
1
- import type { AWST } from '../awst/nodes';
2
- import type { CompilationSet } from '../awst_build/models/contract-class-model';
3
- import type { CompileOptions } from '../options';
4
- import type { SourceFileMapping } from '../parser';
5
- import type { AbsolutePath } from '../util/absolute-path';
6
- import { PuyaService } from './puya-service';
7
- export declare function puyaCompile({ moduleAwst, programDirectory, sourceFiles, options, compilationSet, puyaService, }: {
8
- moduleAwst: AWST[];
9
- programDirectory: AbsolutePath;
10
- sourceFiles: SourceFileMapping;
11
- options: CompileOptions;
12
- compilationSet: CompilationSet;
13
- puyaService?: PuyaService;
14
- }): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-puya-path-CsuzbFH2.js","sources":["../src/cli/app-version.ts","../src/util/lock-file.ts","../src/util/invoke-cli.ts","../src/puya/run-puya.ts","../src/puya/check-puya-version.ts","../src/util/generate-temp-file.ts","../src/puya/puya-binary.ts","../src/puya/semver.ts","../src/puya/resolve-puya-path.ts"],"sourcesContent":["import fs from 'fs'\nimport { fileURLToPath } from 'node:url'\nimport pathe from 'pathe'\nimport { Constants } from '../constants'\n\nexport function packageVersion(): string {\n let dirName = pathe.dirname(fileURLToPath(import.meta.url))\n\n while (true) {\n const packageJsonPath = pathe.join(dirName, 'package.json')\n if (fs.existsSync(packageJsonPath)) {\n return JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')).version\n }\n if (dirName === pathe.dirname(dirName)) break\n dirName = pathe.dirname(dirName)\n }\n return 'unknown'\n}\n\nexport function appVersion(options?: { name?: string; withAVMVersion?: boolean }): string {\n const name = options?.name ?? 'puya-ts'\n const withAVMVersion = options?.withAVMVersion ?? true\n\n const version = packageVersion()\n return [`${name} ${version}`]\n .concat(\n withAVMVersion\n ? ['', 'Targets:', `puya ${Constants.targetedPuyaVersion}`, `AVM ${Constants.supportedAvmVersions.join(', ')}`]\n : [`puya ${Constants.targetedPuyaVersion}`],\n )\n .join('\\n')\n}\n","import { existsSync, mkdirSync, rmdirSync, statSync } from 'fs'\nimport { onExit } from 'signal-exit'\nimport { logger } from '../logger'\nimport { sleep } from './sleep'\n\nconst lockPaths = new Set<string>()\n\nfunction acquireLock(path: string, options?: { staleMs?: number }) {\n const { staleMs = 60 * 1000 } = options ?? {}\n lockPaths.add(path)\n\n if (existsSync(path)) {\n const now = Date.now()\n const fileStat = statSync(path)\n\n if (now - fileStat.mtime.getTime() > staleMs) {\n // Remove the lock file if it has expired\n rmdirSync(path)\n } else {\n throw new Error('Lock file already exists')\n }\n }\n\n mkdirSync(path, { recursive: true })\n}\n\nexport async function createLockFile(\n path: string,\n options?: { staleMs?: number; maxRetries?: number; delayMs?: number },\n): Promise<AsyncDisposable> {\n const { maxRetries = 3, delayMs = 1000 } = options ?? {}\n\n for (let i = 0; i < maxRetries; i++) {\n try {\n acquireLock(path, options)\n\n return {\n async [Symbol.asyncDispose]() {\n await unlockFile(path)\n },\n }\n } catch (err) {\n logger.debug(undefined, `Failed to acquire lock file ${path}: ${err}`)\n await sleep(delayMs)\n }\n }\n\n throw new Error('Failed to lock file')\n}\n\nasync function unlockFile(path: string): Promise<void> {\n try {\n rmdirSync(path)\n lockPaths.delete(path)\n } catch (err) {\n logger.warn(undefined, `Failed to unlock file ${path}: ${err}`)\n }\n}\n\nonExit(() => {\n for (const path of lockPaths) {\n unlockFile(path)\n }\n})\n","import { spawn } from 'cross-spawn'\n\ntype InvokeCliOptions = {\n command: string\n args: string[]\n cwd?: string\n onReceiveLine?(line: string): void\n dontThrowOnNonzeroCode?: boolean\n}\n\ntype InvokeCliResponse = {\n lines: string[]\n code: number\n}\n\nclass InvokeCliError extends Error {\n constructor(public exit: { code?: number | null; signal?: NodeJS.Signals | null }) {\n if (exit.code) {\n super(`Exited with code ${exit.code}`)\n } else if (exit.signal) {\n super(`Exited with signal ${exit.signal}`)\n } else {\n super('Exited with unknown cause')\n }\n }\n}\n\nexport function invokeCli(options: InvokeCliOptions): Promise<InvokeCliResponse> {\n return new Promise<InvokeCliResponse>((resolve, reject) => {\n const lineAggregator = new LineAggregator(options.onReceiveLine)\n const process = spawn(options.command, options.args, {\n stdio: 'pipe',\n })\n\n process.stdout.on('data', (data) => lineAggregator.aggregate(data))\n process.once('close', (code) => {\n if (code !== 0 && !options.dontThrowOnNonzeroCode) {\n reject(new InvokeCliError({ code }))\n }\n lineAggregator.flush()\n resolve({\n code: code ?? 0,\n lines: lineAggregator.lines,\n })\n })\n process.once('exit', (code, signal) => {\n if (signal !== null) {\n reject(new InvokeCliError({ signal }))\n }\n if (code !== 0 && !options.dontThrowOnNonzeroCode) {\n reject(new InvokeCliError({ code }))\n }\n lineAggregator.flush()\n resolve({\n code: code ?? 0,\n lines: lineAggregator.lines,\n })\n })\n process.once('error', reject)\n })\n}\n\nclass LineAggregator {\n #line = ''\n #lines: string[] = []\n constructor(private readonly onLine?: (line: string) => void) {}\n\n aggregate(chunk: Buffer<ArrayBufferLike> | null | undefined) {\n if (chunk === undefined || chunk === null) return\n const text = chunk.toString('utf-8')\n for (const c of text) {\n switch (c) {\n case '\\n':\n this.flushLine()\n break\n case '\\r':\n continue\n default:\n this.#line += c\n break\n }\n }\n }\n\n flush() {\n if (this.#line) this.flushLine()\n }\n\n private flushLine() {\n this.#lines.push(this.#line)\n this.onLine?.(this.#line)\n this.#line = ''\n }\n\n get lines() {\n return this.#lines\n }\n}\n","import { logger } from '../logger'\nimport { invokeCli } from '../util/invoke-cli'\n\nexport async function runPuya({\n command,\n args,\n cwd,\n onOutput,\n}: {\n command: string\n args: string[]\n cwd?: string\n onOutput: (line: string) => void\n}) {\n const result = await invokeCli({\n command,\n args,\n cwd,\n onReceiveLine: onOutput,\n dontThrowOnNonzeroCode: true,\n })\n\n if (result.code !== 0) {\n logger.critical(undefined, `Compilation exited with status ${result.code}`)\n }\n}\n","import { Constants } from '../constants'\nimport { logger } from '../logger'\nimport { runPuya } from './run-puya'\nimport type { SemVer } from './semver'\n\nexport enum VersionCompareVerdict {\n ExactMatch = 'ExactMatch',\n Inconclusive = 'Inconclusive',\n MajorMismatch = 'MajorMismatch',\n MinorMismatch = 'MinorMismatch',\n OlderRevision = 'OlderRevision',\n NewerRevision = 'NewerRevision',\n}\n\nexport async function comparePuyaVersion(puyaPath: string): Promise<{\n target: string\n found?: string\n verdict: VersionCompareVerdict\n}> {\n const target = Constants.targetedPuyaVersion\n\n const versionParser = new VersionParser()\n await runPuya({\n command: puyaPath,\n args: ['--version'],\n onOutput: (line) => versionParser.receiveLine(line),\n })\n\n if (!versionParser.version) return { target, verdict: VersionCompareVerdict.Inconclusive }\n const ver = versionParser.version\n\n // Compare\n const [major, minor, rev] = target.split('.').map((x) => Number(x))\n if (ver.major !== major) return { verdict: VersionCompareVerdict.MajorMismatch, target, found: ver.formatted }\n if (ver.minor !== minor) return { verdict: VersionCompareVerdict.MinorMismatch, target, found: ver.formatted }\n if (ver.rev < rev) return { verdict: VersionCompareVerdict.OlderRevision, target, found: ver.formatted }\n if (ver.rev > rev) return { verdict: VersionCompareVerdict.NewerRevision, target, found: ver.formatted }\n return { verdict: VersionCompareVerdict.ExactMatch, target, found: ver.formatted }\n}\n\nexport async function checkPuyaVersion(puyaPath: string) {\n const result = await comparePuyaVersion(puyaPath)\n\n switch (result.verdict) {\n case VersionCompareVerdict.Inconclusive:\n logger.warn(undefined, `Unable to verify the version of Puya at ${puyaPath}.`)\n break\n case VersionCompareVerdict.MajorMismatch:\n case VersionCompareVerdict.MinorMismatch:\n logger.warn(\n undefined,\n `Version of Puya at ${puyaPath} (${result.found}) does not match targeted version (${result.target}). There may be compatibility issues.`,\n )\n break\n case VersionCompareVerdict.OlderRevision:\n logger.warn(undefined, `Revision of Puya at ${puyaPath} (${result.found}) is older than the targeted revision (${result.target})`)\n break\n case VersionCompareVerdict.NewerRevision:\n logger.debug(undefined, `Revision of Puya at ${puyaPath} (${result.found}) is newer than the targeted revision (${result.target})`)\n break\n }\n}\n\nclass VersionParser {\n #ver: SemVer | undefined\n\n receiveLine(line: string): void {\n const matched = /^puya ((\\d+)\\.(\\d+)\\.(\\d+)(-.*)?)$/.exec(line)\n if (!matched) {\n logger.debug(undefined, `'puya --version' command returned unexpected output: \"${line}\"`)\n } else {\n this.#ver = {\n formatted: matched[1],\n major: Number(matched[2]),\n minor: Number(matched[3]),\n rev: Number(matched[4]),\n suffix: matched[5] ?? '',\n }\n }\n }\n\n get version(): undefined | SemVer {\n return this.#ver\n }\n}\n","import { randomUUID } from 'crypto'\nimport fs from 'fs'\nimport { globIterateSync } from 'glob'\nimport type { WriteFileOptions } from 'node:fs'\nimport { writeFileSync } from 'node:fs'\nimport { gzipSync } from 'node:zlib'\nimport os from 'os'\nimport pathe from 'pathe'\n\nexport type TempFile = {\n writeFileSync(data: NodeJS.ArrayBufferView, options?: WriteFileOptions): void\n writeFileSync(data: string, options?: WriteFileOptions): void\n readonly filePath: string\n} & Disposable\n\nexport function generateTempFile(options?: { ext?: string }): TempFile {\n const { ext = 'tmp' } = options ?? {}\n const tempDir = generateTempDir()\n const filePath = pathe.join(tempDir.dirPath, `${randomUUID()}.${ext}`)\n\n return {\n get filePath() {\n return filePath\n },\n writeFileSync(data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions) {\n fs.writeFileSync(filePath, data, options)\n },\n [Symbol.dispose]() {\n tempDir[Symbol.dispose]()\n },\n }\n}\nexport type TempDir = {\n readonly dirPath: string\n files(): IterableIterator<string>\n\n makeFile(args: { name: string; ext?: string; compress?: boolean }): {\n readonly filePath: string\n writeFileSync(data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): void\n }\n} & Disposable\n\nexport function generateTempDir(): TempDir {\n const dirPath = fs.mkdtempSync(pathe.join(os.tmpdir(), 'puya-ts-'))\n\n return {\n get dirPath() {\n return dirPath\n },\n *files(): IterableIterator<string> {\n for (const p of globIterateSync(pathe.join(dirPath, '**'), {\n nodir: true,\n })) {\n yield p\n }\n },\n makeFile({ name, ext, compress }) {\n const path = pathe.join(this.dirPath, `${name}.${ext ?? 'tmp'}${compress ? '.gz' : ''}`)\n return {\n get filePath() {\n return path\n },\n writeFileSync(data, options) {\n if (compress) {\n data = gzipSync(data)\n }\n writeFileSync(path, data, options)\n },\n }\n },\n [Symbol.dispose]() {\n fs.rmSync(dirPath, { recursive: true, force: true })\n },\n }\n}\n","import * as crypto from 'crypto'\nimport * as fs from 'fs'\nimport { fileURLToPath } from 'node:url'\nimport * as path from 'path'\nimport pathe from 'pathe'\nimport * as tar from 'tar'\nimport { Constants } from '../constants'\nimport { InternalError } from '../errors'\nimport { logger } from '../logger'\nimport { generateTempDir } from '../util/generate-temp-file'\nimport { runPuya } from './run-puya'\nimport type { SemVer } from './semver'\n\n/**\n * Gets the platform-specific binary name\n * @returns The appropriate binary name for the current platform\n */\nfunction getBinaryName(): string {\n return process.platform === 'win32' ? 'puya.exe' : 'puya'\n}\n\nfunction getPuyaTsDir(): string {\n try {\n return pathe.dirname(require.resolve('@algorandfoundation/puya-ts'))\n } catch {\n return pathe.dirname(fileURLToPath(import.meta.url))\n }\n}\n\nexport function getPuyaStorageDir(): string {\n const puyaTsDirName = getPuyaTsDir()\n return path.join(puyaTsDirName, '.puya')\n}\n\nexport function getCachedPuyaBinaryPath(puyaStorageDir: string, version: SemVer): string {\n const binaryFileName = getBinaryName()\n return path.join(puyaStorageDir, version.formatted, binaryFileName)\n}\n\n/**\n * Gets the platform-specific details for downloads\n * @returns Object containing OS and architecture information\n */\nfunction getPlatformDetails(): { os: string; arch: string } {\n const cliMessage = `Please refer to the puya-ts CLI documentation for information on how to install the Puya backend manually.`\n\n // Map Node.js platform to OS name used in filenames\n let os: string\n switch (process.platform) {\n case 'win32':\n os = 'windows'\n break\n case 'darwin':\n os = 'macos'\n break\n case 'linux':\n os = 'linux'\n break\n default:\n throw new InternalError(`Unsupported platform: ${process.platform}. ${cliMessage}`)\n }\n\n // Map Node.js architecture to architecture name used in filenames\n let arch: string\n switch (process.arch) {\n case 'x64':\n arch = 'x64'\n break\n case 'arm64':\n arch = 'arm64'\n break\n default:\n throw new InternalError(`Unsupported architecture: ${process.arch}. ${cliMessage}`)\n }\n\n return { os, arch }\n}\n\n/**\n * Downloads the Puya binary for a specific release version\n * @param puyaStorageDir The directory where puya binaries should be stored once downloaded\n * @param version The release version to download (e.g., \"1.0.0\")\n * @returns Promise that resolves to the path of the extracted binary\n */\nexport async function downloadPuyaBinary(puyaStorageDir: string, version: SemVer): Promise<string> {\n // Get platform-specific details\n const { os, arch } = getPlatformDetails()\n\n // Build platform-specific filenames\n const platformId = `${os}_${arch}`\n const archiveFileName = `puya-${version.formatted}-${platformId}.tar.gz`\n const checksumFileName = `puya-${version.formatted}-${platformId}.sha256.txt`\n const binaryFileName = getBinaryName()\n\n const extractedDir = path.join(puyaStorageDir, version.formatted)\n\n // Ensure our storage directories exist\n if (!fs.existsSync(extractedDir)) {\n fs.mkdirSync(extractedDir, { recursive: true })\n }\n\n using tempDir = generateTempDir()\n\n const archiveFilePath = path.join(tempDir.dirPath, archiveFileName)\n const checksumFilePath = path.join(tempDir.dirPath, checksumFileName)\n const extractedBinaryPath = path.join(extractedDir, binaryFileName)\n\n logger.debug(undefined, `Downloading Puya binary for version ${version.formatted} and platform ${platformId}`)\n const archiveUrl = `https://github.com/${Constants.puyaGithubRepo}/releases/download/v${version.formatted}/${archiveFileName}`\n const checksumUrl = `https://github.com/${Constants.puyaGithubRepo}/releases/download/v${version.formatted}/${checksumFileName}`\n\n await downloadFile(archiveUrl, archiveFilePath)\n await downloadFile(checksumUrl, checksumFilePath)\n\n await verifyChecksum(archiveFilePath, archiveFileName, checksumFilePath)\n\n await tar.extract({\n file: archiveFilePath,\n cwd: extractedDir,\n })\n\n // Check if extraction was successful and binary exists\n if (!fs.existsSync(extractedBinaryPath)) {\n throw new InternalError(`Binary file ${binaryFileName} not found in the extracted archive`)\n }\n\n await smokeTestBinary(extractedBinaryPath)\n\n logger.debug(undefined, `Successfully downloaded and extracted Puya binary to ${extractedBinaryPath}`)\n return extractedBinaryPath\n}\n\nasync function smokeTestBinary(path: string) {\n logger.debug(undefined, `Smoke testing downloaded binary @ ${path}`)\n\n let output = ''\n await runPuya({\n command: path,\n args: ['--version'],\n onOutput: (line) => (output += line),\n })\n if (!/^puya ((\\d+)\\.(\\d+)\\.(\\d+)(.*)?)$/.test(output)) {\n throw new InternalError(`Unexpected output from puya --version : ${output}`)\n }\n}\n\n/**\n * Downloads a file from a URL to a specified path\n * @param url The URL to download from\n * @param destination The local path to save the file to\n * @returns Promise that resolves when the download is complete\n */\nasync function downloadFile(url: string, destination: string): Promise<void> {\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(`Failed to download file. Status Code: ${response.status}`)\n }\n const buffer = await response.arrayBuffer()\n return await new Promise<void>((resolve, reject) => {\n const fileStream = fs.createWriteStream(destination)\n const nodeBuffer = Buffer.from(buffer)\n\n fileStream.write(nodeBuffer)\n fileStream.end()\n\n fileStream.on('finish', () => {\n resolve()\n })\n\n fileStream.on('error', (err) => {\n fs.unlinkSync(destination)\n reject(err)\n })\n })\n}\n\n/**\n * Verifies the checksum of a downloaded file\n * @param filePath Path to the file to verify\n * @param checksumFilePath Path to the checksum file\n * @returns Promise that resolves to true if the checksum matches, false otherwise\n */\nasync function verifyChecksum(filePath: string, fileName: string, checksumFilePath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n // Read the checksum file\n const expectedChecksum = fs.readFileSync(checksumFilePath, 'utf8').trim().toLowerCase()\n\n // Calculate the SHA256 checksum of the downloaded file\n const hash = crypto.createHash('sha256')\n const stream = fs.createReadStream(filePath)\n\n stream.on('data', (data) => {\n hash.update(data)\n })\n\n stream.on('end', () => {\n const calculatedChecksum = hash.digest('hex').toLowerCase()\n\n if (`${calculatedChecksum} ${fileName}` === expectedChecksum) {\n resolve()\n }\n reject(new InternalError(`Checksum verification failed. Expected checksum: ${expectedChecksum} but got: ${calculatedChecksum}`))\n })\n })\n}\n","import { InternalError } from '../errors'\n\nexport type SemVer = {\n major: number\n minor: number\n rev: number\n suffix: string\n formatted: string\n}\n\nexport function parseSemVer(version: string): SemVer {\n const matched = /^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/.exec(version)\n if (!matched) {\n throw new InternalError(`Invalid version string: ${version}`)\n }\n\n return {\n major: Number(matched[1]),\n minor: Number(matched[2]),\n rev: Number(matched[3]),\n suffix: matched[4] ?? '',\n formatted: version,\n }\n}\n","import * as fs from 'fs'\nimport { Constants } from '../constants'\nimport { logger } from '../logger'\nimport { createLockFile } from '../util/lock-file'\nimport { checkPuyaVersion } from './check-puya-version'\nimport { downloadPuyaBinary, getCachedPuyaBinaryPath, getPuyaStorageDir } from './puya-binary'\nimport { parseSemVer } from './semver'\n\nexport async function resolvePuyaPath(options: { customPuyaPath?: string; skipVersionCheck?: boolean }): Promise<string> {\n if (options.customPuyaPath) {\n if (!options.skipVersionCheck) {\n await checkPuyaVersion(options.customPuyaPath)\n }\n return options.customPuyaPath\n }\n\n const version = parseSemVer(Constants.targetedPuyaVersion)\n\n const puyaStorageDir = getPuyaStorageDir()\n const cachedBinaryPath = getCachedPuyaBinaryPath(puyaStorageDir, version)\n\n if (isBinaryCached(cachedBinaryPath)) {\n return cachedBinaryPath\n }\n\n await using _ = await createLockFile(`${puyaStorageDir}.lock`, { maxRetries: 30, delayMs: 1000, staleMs: 60 * 1000 })\n\n // Between the first check and acquiring the lock, the binary may have been downloaded by another process.\n // In this case there is no need to download the binary again.\n if (isBinaryCached(cachedBinaryPath)) {\n return cachedBinaryPath\n }\n return await downloadPuyaBinary(puyaStorageDir, version)\n}\n\nfunction isBinaryCached(cachePath: string): boolean {\n if (fs.existsSync(cachePath)) {\n logger.debug(undefined, `Found cached Puya binary at ${cachePath}`)\n return true\n }\n return false\n}\n"],"names":["pathe","fs","os","crypto"],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { ABICompatiblePType } from '../awst_build/ptypes';
2
- import * as arc4Types from '../awst_build/ptypes/arc4-types';
3
- type ARC4MethodSignature = {
4
- name: string;
5
- parameters: ABICompatiblePType[];
6
- returnType: ABICompatiblePType;
7
- };
8
- export declare class Arc4ParseError extends Error {
9
- index: number;
10
- constructor(message: string, index: number);
11
- }
12
- export declare const parseArc4Type: (text: string) => arc4Types.ARC4EncodedType;
13
- export declare const parseArc4Method: (text: string) => ARC4MethodSignature;
14
- export {};