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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/{analyser-service-B0DpIecU.js → analyser-service-Bk9GEtDA.js} +3 -3
  2. package/{analyser-service-B0DpIecU.js.map → analyser-service-Bk9GEtDA.js.map} +1 -1
  3. package/analyserService.mjs +3 -3
  4. package/{arc4-clientgen-Dd2qW-1d.js → arc4-clientgen-qBTlCOIm.js} +2 -2
  5. package/{arc4-clientgen-Dd2qW-1d.js.map → arc4-clientgen-qBTlCOIm.js.map} +1 -1
  6. package/awst_build/context/awst-build-context.d.ts +1 -1
  7. package/awst_build/ptypes/index.d.ts +64 -87
  8. package/bin/puyats-clientgen.mjs +5 -5
  9. package/bin/puyats-clientgen.mjs.map +1 -1
  10. package/bin/puyats-ls.mjs +13 -13
  11. package/bin/puyats-ls.mjs.map +1 -1
  12. package/bin/run-cli.mjs +12 -12
  13. package/{check-node-version-Df1hdewH.js → check-node-version-CLFFTDHN.js} +3 -3
  14. package/{check-node-version-Df1hdewH.js.map → check-node-version-CLFFTDHN.js.map} +1 -1
  15. package/cli-ls.d.ts +1 -1
  16. package/cli.d.ts +1 -1
  17. package/cli.mjs +15 -15
  18. package/cli.mjs.map +1 -1
  19. package/clientgen.d.ts +1 -1
  20. package/{compile-DGk1ftqu.js → compile-ycpMcgmJ.js} +6 -6
  21. package/{compile-DGk1ftqu.js.map → compile-ycpMcgmJ.js.map} +1 -1
  22. package/constants.d.ts +1 -1
  23. package/{contract-class-model-cK8F4WVM.js → contract-class-model-BZeEDGw0.js} +109 -243
  24. package/contract-class-model-BZeEDGw0.js.map +1 -0
  25. package/index.d.ts +0 -1
  26. package/index.mjs +8 -8
  27. package/index.mjs.map +1 -1
  28. package/language-server/analyser-service.d.ts +0 -1
  29. package/{options-sBHEIhey.js → options-DD9MApH4.js} +72 -78
  30. package/options-DD9MApH4.js.map +1 -0
  31. package/package.json +6 -3
  32. package/{resolve-puya-path-Bgh6DuRP.js → resolve-puya-path-Ba54kz9o.js} +4 -4
  33. package/{resolve-puya-path-Bgh6DuRP.js.map → resolve-puya-path-Ba54kz9o.js.map} +1 -1
  34. package/{semver-T4bO0VEo.js → semver-B0p_0XuH.js} +2 -2
  35. package/{semver-T4bO0VEo.js.map → semver-B0p_0XuH.js.map} +1 -1
  36. package/{util-CA3Q0W2C.js → util-Aa8RgOmt.js} +2 -2
  37. package/{util-CA3Q0W2C.js.map → util-Aa8RgOmt.js.map} +1 -1
  38. package/contract-class-model-cK8F4WVM.js.map +0 -1
  39. package/options-sBHEIhey.js.map +0 -1
  40. package/util/polyfills.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"puyats-ls.mjs","sources":["../../node_modules/vscode-languageserver-textdocument/lib/esm/main.js","../../node_modules/vscode-languageserver/node.js","../../src/logger/sinks/language-server-log-sink.ts","../../src/language-server/compile-trigger-queue.ts","../../src/language-server/compile-worker.ts","../../src/language-server/diagnostics-manager.ts","../../src/language-server/puya-language-server.ts","../../src/language-server/parse.ts","../../src/cli-ls.ts"],"sourcesContent":["/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nclass FullTextDocument {\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(changes, version) {\n for (const change of changes) {\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n const range = getWellformedRange(change.range);\n // update content\n const startOffset = this.offsetAt(range.start);\n const endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n const startLine = Math.max(range.start.line, 0);\n const endLine = Math.max(range.end.line, 0);\n let lineOffsets = this._lineOffsets;\n const addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (let i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets);\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n const diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n const line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line, character: offset - lineOffsets[line] };\n }\n offsetAt(position) {\n const lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n const lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n const nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n const offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n }\n ensureBeforeEOL(offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n static isIncremental(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n static isFull(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n}\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifying its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @param version the changes version for the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n const text = document.getText();\n const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => {\n const diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = 0;\n const spans = [];\n for (const e of sortedEdits) {\n const startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\nfunction computeLineOffsets(text, isAtLineStart, textOffset = 0) {\n const result = isAtLineStart ? [textOffset] : [];\n for (let i = 0; i < text.length; i++) {\n const ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction isEOL(char) {\n return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */;\n}\nfunction getWellformedRange(range) {\n const start = range.start;\n const end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n const range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range };\n }\n return textEdit;\n}\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","import type * as lsp from 'vscode-languageserver/node'\nimport type { LogEvent } from '../index'\nimport { LogLevel } from '../index'\nimport type { LogSink } from './index'\n\nexport class LanguageServerLogSink implements LogSink {\n constructor(private connection: lsp.Connection) {}\n\n minLogLevel = LogLevel.Debug\n\n add(e: LogEvent): void {\n if (e.sourceLocation) return // Ignore code specific logs\n\n switch (e.level) {\n case 'error':\n case 'info':\n case 'debug':\n this.connection.console[e.level](e.message)\n break\n case 'warning':\n this.connection.console.warn(e.message)\n break\n case 'critical':\n this.connection.console.error(e.message)\n break\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver/node'\nimport { distinct } from '../util'\n\ntype WorkspaceCompileTrigger = {\n type: 'workspace'\n uris: lsp.URI[]\n}\ntype FileCompileTrigger = {\n type: 'file'\n uris: lsp.URI[]\n}\n\nexport type CompileTrigger = WorkspaceCompileTrigger | FileCompileTrigger\n\ntype CompileTriggerQueueEvents = {\n itemEnqueued: [CompileTrigger]\n}\n\nexport class CompileTriggerQueue {\n private readonly queue: CompileTrigger[] = []\n private readonly events = new EventEmitter<CompileTriggerQueueEvents>()\n\n enqueue(trigger: CompileTrigger) {\n const lastInQueue = this.queue.at(-1)\n if (trigger.type === lastInQueue?.type) {\n this.queue.splice(-1, 1, {\n type: trigger.type,\n uris: lastInQueue.uris.concat(trigger.uris).filter(distinct()),\n })\n } else {\n this.queue.push(trigger)\n }\n this.events.emit('itemEnqueued', this.queue.at(-1)!)\n }\n\n tryDequeue(): CompileTrigger | undefined {\n return this.queue.shift()\n }\n\n onItemEnqueued(handler: (...args: CompileTriggerQueueEvents['itemEnqueued']) => void): lsp.Disposable {\n this.events.on('itemEnqueued', handler)\n return {\n dispose: () => {\n this.events.off('itemEnqueued', handler)\n },\n }\n }\n}\n","import type { TextDocument } from 'vscode-languageserver-textdocument'\nimport type { TextDocuments } from 'vscode-languageserver/node.js'\nimport { logger } from '../logger'\nimport type { AnalyserService, OpenDocuments } from './analyser-service'\nimport type { CompileTrigger, CompileTriggerQueue } from './compile-trigger-queue'\nimport type { DiagnosticsManager } from './diagnostics-manager'\nimport { logCaughtExpression, LogExceptions } from './util/log-exceptions'\n\ntype ActiveBuild = {\n trigger: CompileTrigger\n abort: AbortController\n}\n\nexport class CompileWorker {\n stopping: boolean = false\n private stopped = Promise.withResolvers<void>()\n private sleeping: PromiseWithResolvers<void> | undefined = undefined\n private activeBuild: ActiveBuild | undefined = undefined\n constructor(\n private readonly queue: CompileTriggerQueue,\n private readonly analyserService: AnalyserService,\n private readonly documents: TextDocuments<TextDocument>,\n private readonly diagnostics: DiagnosticsManager,\n ) {\n this.queue.onItemEnqueued(this.onCompileTriggerQueueItemQueued.bind(this))\n }\n\n start() {\n setTimeout(async () => {\n while (!this.stopping) {\n try {\n const trigger = this.queue.tryDequeue()\n if (trigger) {\n logger.debug(undefined, `[Compile Worker] Found ${trigger.type} compile ${trigger.uris.join(', ')}`)\n this.activeBuild = { abort: new AbortController(), trigger }\n await this.compileWithService(trigger, this.activeBuild.abort.signal)\n delete this.activeBuild\n } else {\n logger.debug(undefined, `[Compile Worker] No work, sleeping`)\n this.sleeping = Promise.withResolvers()\n await this.sleeping.promise\n delete this.sleeping\n }\n } catch (e) {\n logCaughtExpression(e)\n }\n }\n this.stopped.resolve()\n })\n }\n\n @LogExceptions\n async stop() {\n this.stopping = true\n this.sleeping?.resolve()\n this.activeBuild?.abort.abort()\n await this.stopped.promise\n }\n\n onCompileTriggerQueueItemQueued(trigger: CompileTrigger) {\n if (this.activeBuild) {\n if (this.activeBuild.trigger.type === trigger.type) {\n if (new Set(trigger.uris).isSubsetOf(new Set(this.activeBuild.trigger.uris))) {\n logger.debug(undefined, `[Compile Worker] Aborting build, newer version of file is available`)\n this.activeBuild.abort.abort('Build superseded')\n }\n }\n }\n if (this.sleeping) {\n logger.debug(undefined, `[Compile Worker] New work, waking worker`)\n this.sleeping.resolve()\n }\n }\n\n private async compileWithService(trigger: CompileTrigger, abort: AbortSignal) {\n const openDocuments = this.documents.all().reduce((acc: OpenDocuments, cur) => {\n acc[cur.uri] = {\n contents: cur.getText(),\n version: cur.version,\n }\n return acc\n }, {})\n try {\n const results = await this.analyserService.analyse(\n {\n uris: trigger.uris,\n openDocuments,\n },\n abort,\n )\n for (const file of results) {\n this.diagnostics.setDiagnostics(file)\n }\n } catch (e) {\n if (e === 'aborted') return\n throw e\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver'\nimport { logger } from '../logger'\nimport { zipStrict } from '../util'\nimport { DefaultMap } from '../util/default-map'\n\nfunction diagnosticsAreSame(a: lsp.Diagnostic, b: lsp.Diagnostic) {\n return (\n a.message === b.message &&\n a.range.start.line === b.range.start.line &&\n a.range.start.character === b.range.start.character &&\n a.range.end.line === b.range.end.line &&\n a.range.end.character === b.range.end.character &&\n a.severity === b.severity\n )\n}\n\nfunction isSameOrMoreRecentVersion(prev: number | undefined, next: number | undefined): boolean {\n if (prev === undefined || next === undefined) return true\n return prev <= next\n}\n\nexport class SourceFileDiagnostics {\n private diagnostics: lsp.Diagnostic[] | 'pending' = 'pending'\n private version: number | undefined\n /**\n * Update the diagnostics for this file and return a boolean indicating if they have changed\n * @param version The file version used to generate these diagnostics\n * @param diagnostics\n */\n setDiagnostics({ version, diagnostics }: { diagnostics: lsp.Diagnostic[] | 'pending'; version: number | undefined }): boolean {\n // Ignore older diagnostics (even though this shouldn't happen)\n if (!isSameOrMoreRecentVersion(this.version, version)) return false\n if (diagnostics !== 'pending' && this.diagnostics !== 'pending' && diagnostics.length === this.diagnostics.length) {\n if (zipStrict(this.diagnostics, diagnostics).every(([l, r]) => diagnosticsAreSame(l, r))) {\n this.version = version\n return false\n }\n }\n this.diagnostics = diagnostics\n this.version = version\n\n return true\n }\n}\nexport type FileWithDiagnostics = {\n uri: lsp.DocumentUri\n version: number | undefined\n diagnostics: lsp.Diagnostic[]\n}\n\ntype DiagnosticEvents = {\n fileDiagnosticsChanged: [event: FileWithDiagnostics]\n}\n\nexport class DiagnosticsManager {\n private readonly sourceFiles = new DefaultMap<lsp.DocumentUri, SourceFileDiagnostics>()\n private readonly events = new EventEmitter<DiagnosticEvents>()\n\n setDiagnostics({\n uri,\n diagnostics,\n version,\n }: {\n uri: lsp.DocumentUri\n diagnostics: lsp.Diagnostic[] | 'pending'\n version: number | undefined\n }) {\n logger.debug(\n undefined,\n `[DiagMgr] Setting diagnostics for ${uri} ${version ?? '<no version>'} (${diagnostics === 'pending' ? 'pending' : diagnostics.length})`,\n )\n const fileDiagnostics = this.sourceFiles.getOrDefault(uri, () => new SourceFileDiagnostics())\n if (fileDiagnostics.setDiagnostics({ diagnostics, version })) {\n if (diagnostics === 'pending') return\n this.events.emit('fileDiagnosticsChanged', { uri, diagnostics, version })\n }\n }\n\n onFileDiagnosticsChanged(handler: (...args: DiagnosticEvents['fileDiagnosticsChanged']) => void): lsp.Disposable {\n this.events.on('fileDiagnosticsChanged', handler)\n return {\n dispose: () => {\n this.events.off('fileDiagnosticsChanged', handler)\n },\n }\n }\n}\n","import { TextDocument } from 'vscode-languageserver-textdocument'\nimport * as lsp from 'vscode-languageserver/node'\nimport { appVersion, packageVersion } from '../cli/app-version'\nimport { Constants } from '../constants'\nimport { logger, LogLevel } from '../logger'\nimport { LanguageServerLogSink } from '../logger/sinks/language-server-log-sink'\nimport { resolvePuyaPath } from '../puya/resolve-puya-path'\nimport type { AnalyserService } from './analyser-service'\nimport { createAnalyserService } from './analyser-service'\nimport { CompileTriggerQueue } from './compile-trigger-queue'\nimport { CompileWorker } from './compile-worker'\nimport type { FileWithDiagnostics } from './diagnostics-manager'\nimport { DiagnosticsManager } from './diagnostics-manager'\nimport { isCodeFixData } from './mapping'\nimport { LogExceptions } from './util/log-exceptions'\nimport { createNormalisedTextDocumentConnection, normalisedUri } from './util/uris'\n\ninterface LanguageServerConfiguration {\n // use LogLevel member names to maintain consistency with other extension settings\n logLevel?: Omit<keyof typeof LogLevel, 'Critical'>\n debounce?: number\n}\n\nconst resolveConnection = async (lspPort: number | undefined) => {\n if (!lspPort) {\n return lsp.createConnection(lsp.ProposedFeatures.all)\n }\n\n // When the debug env variable PUYA_TS_DEBUG_LSP_PORT is set, we start the server with socket transport.\n // Note: this is actually the opposite to how vscode-languageserver is designed.\n // Normally, the extension is the web socker server and the language server is the client.\n // Here, we flip it. This allows an easier debugging experience.\n // If changes are made to the language server, you can just restart the debugger\n // and choose the option \"Restart language server\" in the VS Code extension host instance.\n const transport = await lsp.createClientSocketTransport(lspPort)\n const protocol = await transport.onConnected()\n\n return lsp.createConnection(lsp.ProposedFeatures.all, protocol[0], protocol[1])\n}\n\nexport type LanguageServerOptions = {\n port?: number\n customPuyaPath?: string\n}\n\nconst PACKAGE_VERSION = packageVersion()\n\nclass PuyaLanguageServer {\n readonly documents = new lsp.TextDocuments(TextDocument)\n readonly triggers = new CompileTriggerQueue()\n readonly workspaceFolders: lsp.URI[] = []\n readonly diagnosticsMgr: DiagnosticsManager\n readonly compileWorker: CompileWorker\n readonly analyserService: AnalyserService\n stopping = false\n\n constructor(\n public readonly connection: lsp.Connection,\n private readonly loggingSink: LanguageServerLogSink,\n puyaPath: string,\n ) {\n this.diagnosticsMgr = new DiagnosticsManager()\n this.analyserService = createAnalyserService({ puyaPath })\n this.compileWorker = new CompileWorker(this.triggers, this.analyserService, this.documents, this.diagnosticsMgr)\n\n connection.onInitialize(this.initialize.bind(this))\n connection.onInitialized(this.initialized.bind(this))\n connection.onCodeAction(this.codeAction.bind(this))\n connection.onDidChangeConfiguration(this.configurationChange.bind(this))\n this.documents.onDidChangeContent(this.documentDidChangeContent.bind(this))\n this.diagnosticsMgr.onFileDiagnosticsChanged(this.fileDiagnosticsChanged.bind(this))\n connection.onShutdown(this.shutdown.bind(this))\n }\n\n start() {\n this.documents.listen(createNormalisedTextDocumentConnection(this.connection))\n this.connection.listen()\n this.compileWorker.start()\n }\n\n async shutdown() {\n logger.debug(undefined, '[PuyaLanguageServer] Shutting down')\n this.stopping = true\n await this.compileWorker.stop()\n await this.analyserService.shutdown()\n logger.debug(undefined, '[PuyaLanguageServer] Shutdown')\n }\n\n initialize(params: lsp.InitializeParams): lsp.InitializeResult {\n this.workspaceFolders.push(...(params.workspaceFolders?.map((f) => normalisedUri({ uri: f.uri }).toString()) ?? []))\n this.triggers.enqueue({\n type: 'workspace',\n uris: this.workspaceFolders,\n })\n return {\n serverInfo: {\n name: 'Puya-TS Language Server',\n version: PACKAGE_VERSION,\n },\n capabilities: {\n textDocumentSync: lsp.TextDocumentSyncKind.Incremental,\n codeActionProvider: {\n resolveProvider: false,\n },\n },\n }\n }\n\n @LogExceptions\n initialized(params: lsp.InitializedParams) {\n logger.debug(undefined, `${Constants.languageServerSource}-ls initialized`)\n }\n\n @LogExceptions\n async fileDiagnosticsChanged(params: FileWithDiagnostics) {\n if (this.stopping) {\n logger.debug(undefined, `[Diagnostics Ignored (shutting down)]: ${params.uri}`)\n return\n }\n logger.debug(undefined, `[Diagnostics Changed]: ${params.uri}`)\n\n await this.connection.sendDiagnostics(params)\n logger.debug(undefined, `[Diagnostics Sent]: ${params.uri}`)\n }\n\n @LogExceptions\n documentDidChangeContent(params: lsp.TextDocumentChangeEvent<TextDocument>) {\n if (this.stopping) return\n const normalizedDocumentUri = normalisedUri({ uri: params.document.uri }).toString()\n logger.debug(undefined, `[Document Changed]: ${normalizedDocumentUri}`)\n this.diagnosticsMgr.setDiagnostics({ uri: normalizedDocumentUri, version: params.document.version, diagnostics: 'pending' })\n\n this.triggers.enqueue({\n type: 'file',\n uris: [normalizedDocumentUri],\n })\n }\n\n /**\n * Bound to connection.onCodeAction and called when a user hovers over a piece of code.\n *\n * Params includes the text range the user is hovering over and any diagnostics known to the\n * client at the time.\n *\n * Response should include actions the user can take and the command or text edits that should be\n * invoked/applied if selected\n * @param params\n */\n @LogExceptions\n codeAction(params: lsp.CodeActionParams): lsp.CodeAction[] {\n return params.context.diagnostics.flatMap((d): lsp.CodeAction | lsp.CodeAction[] => {\n if (isCodeFixData(d.data)) {\n return {\n title: d.data.message,\n kind: lsp.CodeActionKind.QuickFix,\n diagnostics: [d],\n edit: {\n changes: {\n [params.textDocument.uri]: [...d.data.edits],\n },\n },\n }\n }\n return []\n })\n }\n\n @LogExceptions\n configurationChange(params: lsp.DidChangeConfigurationParams) {\n const settings = params.settings as LanguageServerConfiguration\n const logLevel = LogLevel[settings.logLevel as keyof typeof LogLevel]\n if (logLevel !== undefined) {\n logger.debug(undefined, `setting log level to ${logLevel}`)\n this.loggingSink.minLogLevel = logLevel\n }\n }\n}\n\n// eslint-disable-next-line no-console\nconst cliLog = console.error\n\nexport async function startLanguageServer(options: LanguageServerOptions) {\n cliLog(`Puya-TS Language Server:\\n${appVersion({ withAVMVersion: false })}`)\n const connection = await resolveConnection(options.port)\n const languageServerSink = new LanguageServerLogSink(connection)\n logger.configure([languageServerSink])\n try {\n const puyaPath = await resolvePuyaPath(options)\n const server = new PuyaLanguageServer(connection, languageServerSink, puyaPath)\n server.start()\n } catch (e) {\n connection.console.error(`Unhandled exception ${e}`)\n }\n}\n","import { ArgumentParser, BooleanOptionalAction } from 'argparse'\nimport { appVersion } from '../cli/app-version'\nimport { checkNodeVersion } from '../cli/check-node-version'\nimport type { LanguageServerOptions } from './puya-language-server'\nimport { startLanguageServer } from './puya-language-server'\n\nexport async function parseCliArguments() {\n checkNodeVersion()\n const prog = 'puyats-ls'\n const parser = new ArgumentParser({\n prog,\n })\n\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.add_argument('--debug-mode', {\n help: 'Start the language server in debug mode. Server will listen on the debug port (default 4001) for connections.',\n default: false,\n dest: 'debugMode',\n action: BooleanOptionalAction,\n })\n const [result, _] = parser.parse_known_args() as [PuyaTsCommand, unknown]\n\n switch (result.command) {\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion({ name: prog }))\n break\n default: {\n const options: LanguageServerOptions = {\n port: result.debugMode ? (parsePort(process.env.PUYA_TS_DEBUG_LSP_PORT) ?? 4001) : undefined,\n }\n\n await startLanguageServer(options)\n break\n }\n }\n}\n\ntype PuyaTsCommand = NoCommandArgs | VersionCommand\ninterface NoCommandArgs {\n command: 'none'\n debugMode: boolean\n}\ninterface VersionCommand {\n command: 'version'\n}\n\nfunction parsePort(value: string | undefined) {\n if (value === undefined) return undefined\n const val = Number(value)\n if (val > 0 && val < 2 ** 16 && Math.floor(val) === val) {\n return val\n }\n throw new Error(`Invalid port number ${value}`)\n}\n","import './util/polyfills'\nimport { parseCliArguments } from './language-server/parse'\n\nvoid parseCliArguments()\n"],"names":["require$$0","lsp.createConnection","lsp.ProposedFeatures","lsp.createClientSocketTransport","lsp.TextDocuments","lsp.TextDocumentSyncKind","lsp.CodeActionKind"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"puyats-ls.mjs","sources":["../../node_modules/vscode-languageserver-textdocument/lib/esm/main.js","../../node_modules/vscode-languageserver/node.js","../../src/logger/sinks/language-server-log-sink.ts","../../src/language-server/compile-trigger-queue.ts","../../src/language-server/compile-worker.ts","../../src/language-server/diagnostics-manager.ts","../../src/language-server/puya-language-server.ts","../../src/language-server/parse.ts","../../src/cli-ls.ts"],"sourcesContent":["/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nclass FullTextDocument {\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(changes, version) {\n for (const change of changes) {\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n const range = getWellformedRange(change.range);\n // update content\n const startOffset = this.offsetAt(range.start);\n const endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n const startLine = Math.max(range.start.line, 0);\n const endLine = Math.max(range.end.line, 0);\n let lineOffsets = this._lineOffsets;\n const addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (let i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets);\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n const diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n const line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line, character: offset - lineOffsets[line] };\n }\n offsetAt(position) {\n const lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n const lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n const nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n const offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n }\n ensureBeforeEOL(offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n static isIncremental(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n static isFull(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n}\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifying its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @param version the changes version for the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n const text = document.getText();\n const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => {\n const diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = 0;\n const spans = [];\n for (const e of sortedEdits) {\n const startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\nfunction computeLineOffsets(text, isAtLineStart, textOffset = 0) {\n const result = isAtLineStart ? [textOffset] : [];\n for (let i = 0; i < text.length; i++) {\n const ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction isEOL(char) {\n return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */;\n}\nfunction getWellformedRange(range) {\n const start = range.start;\n const end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n const range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range };\n }\n return textEdit;\n}\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","import type * as lsp from 'vscode-languageserver/node'\nimport type { LogEvent } from '../index'\nimport { LogLevel } from '../index'\nimport type { LogSink } from './index'\n\nexport class LanguageServerLogSink implements LogSink {\n constructor(private connection: lsp.Connection) {}\n\n minLogLevel = LogLevel.Debug\n\n add(e: LogEvent): void {\n if (e.sourceLocation) return // Ignore code specific logs\n\n switch (e.level) {\n case 'error':\n case 'info':\n case 'debug':\n this.connection.console[e.level](e.message)\n break\n case 'warning':\n this.connection.console.warn(e.message)\n break\n case 'critical':\n this.connection.console.error(e.message)\n break\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver/node'\nimport { distinct } from '../util'\n\ntype WorkspaceCompileTrigger = {\n type: 'workspace'\n uris: lsp.URI[]\n}\ntype FileCompileTrigger = {\n type: 'file'\n uris: lsp.URI[]\n}\n\nexport type CompileTrigger = WorkspaceCompileTrigger | FileCompileTrigger\n\ntype CompileTriggerQueueEvents = {\n itemEnqueued: [CompileTrigger]\n}\n\nexport class CompileTriggerQueue {\n private readonly queue: CompileTrigger[] = []\n private readonly events = new EventEmitter<CompileTriggerQueueEvents>()\n\n enqueue(trigger: CompileTrigger) {\n const lastInQueue = this.queue.at(-1)\n if (trigger.type === lastInQueue?.type) {\n this.queue.splice(-1, 1, {\n type: trigger.type,\n uris: lastInQueue.uris.concat(trigger.uris).filter(distinct()),\n })\n } else {\n this.queue.push(trigger)\n }\n this.events.emit('itemEnqueued', this.queue.at(-1)!)\n }\n\n tryDequeue(): CompileTrigger | undefined {\n return this.queue.shift()\n }\n\n onItemEnqueued(handler: (...args: CompileTriggerQueueEvents['itemEnqueued']) => void): lsp.Disposable {\n this.events.on('itemEnqueued', handler)\n return {\n dispose: () => {\n this.events.off('itemEnqueued', handler)\n },\n }\n }\n}\n","import type { TextDocument } from 'vscode-languageserver-textdocument'\nimport type { TextDocuments } from 'vscode-languageserver/node.js'\nimport { logger } from '../logger'\nimport type { AnalyserService, OpenDocuments } from './analyser-service'\nimport type { CompileTrigger, CompileTriggerQueue } from './compile-trigger-queue'\nimport type { DiagnosticsManager } from './diagnostics-manager'\nimport { logCaughtExpression, LogExceptions } from './util/log-exceptions'\n\ntype ActiveBuild = {\n trigger: CompileTrigger\n abort: AbortController\n}\n\nexport class CompileWorker {\n stopping: boolean = false\n private stopped = Promise.withResolvers<void>()\n private sleeping: PromiseWithResolvers<void> | undefined = undefined\n private activeBuild: ActiveBuild | undefined = undefined\n constructor(\n private readonly queue: CompileTriggerQueue,\n private readonly analyserService: AnalyserService,\n private readonly documents: TextDocuments<TextDocument>,\n private readonly diagnostics: DiagnosticsManager,\n ) {\n this.queue.onItemEnqueued(this.onCompileTriggerQueueItemQueued.bind(this))\n }\n\n start() {\n setTimeout(async () => {\n while (!this.stopping) {\n try {\n const trigger = this.queue.tryDequeue()\n if (trigger) {\n logger.debug(undefined, `[Compile Worker] Found ${trigger.type} compile ${trigger.uris.join(', ')}`)\n this.activeBuild = { abort: new AbortController(), trigger }\n await this.compileWithService(trigger, this.activeBuild.abort.signal)\n delete this.activeBuild\n } else {\n logger.debug(undefined, `[Compile Worker] No work, sleeping`)\n this.sleeping = Promise.withResolvers()\n await this.sleeping.promise\n delete this.sleeping\n }\n } catch (e) {\n logCaughtExpression(e)\n }\n }\n this.stopped.resolve()\n })\n }\n\n @LogExceptions\n async stop() {\n this.stopping = true\n this.sleeping?.resolve()\n this.activeBuild?.abort.abort()\n await this.stopped.promise\n }\n\n onCompileTriggerQueueItemQueued(trigger: CompileTrigger) {\n if (this.activeBuild) {\n if (this.activeBuild.trigger.type === trigger.type) {\n if (new Set(trigger.uris).isSubsetOf(new Set(this.activeBuild.trigger.uris))) {\n logger.debug(undefined, `[Compile Worker] Aborting build, newer version of file is available`)\n this.activeBuild.abort.abort('Build superseded')\n }\n }\n }\n if (this.sleeping) {\n logger.debug(undefined, `[Compile Worker] New work, waking worker`)\n this.sleeping.resolve()\n }\n }\n\n private async compileWithService(trigger: CompileTrigger, abort: AbortSignal) {\n const openDocuments = this.documents.all().reduce((acc: OpenDocuments, cur) => {\n acc[cur.uri] = {\n contents: cur.getText(),\n version: cur.version,\n }\n return acc\n }, {})\n try {\n const results = await this.analyserService.analyse(\n {\n uris: trigger.uris,\n openDocuments,\n },\n abort,\n )\n for (const file of results) {\n this.diagnostics.setDiagnostics(file)\n }\n } catch (e) {\n if (e === 'aborted') return\n throw e\n }\n }\n}\n","import EventEmitter from 'node:events'\nimport type * as lsp from 'vscode-languageserver'\nimport { logger } from '../logger'\nimport { zipStrict } from '../util'\nimport { DefaultMap } from '../util/default-map'\n\nfunction diagnosticsAreSame(a: lsp.Diagnostic, b: lsp.Diagnostic) {\n return (\n a.message === b.message &&\n a.range.start.line === b.range.start.line &&\n a.range.start.character === b.range.start.character &&\n a.range.end.line === b.range.end.line &&\n a.range.end.character === b.range.end.character &&\n a.severity === b.severity\n )\n}\n\nfunction isSameOrMoreRecentVersion(prev: number | undefined, next: number | undefined): boolean {\n if (prev === undefined || next === undefined) return true\n return prev <= next\n}\n\nexport class SourceFileDiagnostics {\n private diagnostics: lsp.Diagnostic[] | 'pending' = 'pending'\n private version: number | undefined\n /**\n * Update the diagnostics for this file and return a boolean indicating if they have changed\n * @param version The file version used to generate these diagnostics\n * @param diagnostics\n */\n setDiagnostics({ version, diagnostics }: { diagnostics: lsp.Diagnostic[] | 'pending'; version: number | undefined }): boolean {\n // Ignore older diagnostics (even though this shouldn't happen)\n if (!isSameOrMoreRecentVersion(this.version, version)) return false\n if (diagnostics !== 'pending' && this.diagnostics !== 'pending' && diagnostics.length === this.diagnostics.length) {\n if (zipStrict(this.diagnostics, diagnostics).every(([l, r]) => diagnosticsAreSame(l, r))) {\n this.version = version\n return false\n }\n }\n this.diagnostics = diagnostics\n this.version = version\n\n return true\n }\n}\nexport type FileWithDiagnostics = {\n uri: lsp.DocumentUri\n version: number | undefined\n diagnostics: lsp.Diagnostic[]\n}\n\ntype DiagnosticEvents = {\n fileDiagnosticsChanged: [event: FileWithDiagnostics]\n}\n\nexport class DiagnosticsManager {\n private readonly sourceFiles = new DefaultMap<lsp.DocumentUri, SourceFileDiagnostics>()\n private readonly events = new EventEmitter<DiagnosticEvents>()\n\n setDiagnostics({\n uri,\n diagnostics,\n version,\n }: {\n uri: lsp.DocumentUri\n diagnostics: lsp.Diagnostic[] | 'pending'\n version: number | undefined\n }) {\n logger.debug(\n undefined,\n `[DiagMgr] Setting diagnostics for ${uri} ${version ?? '<no version>'} (${diagnostics === 'pending' ? 'pending' : diagnostics.length})`,\n )\n const fileDiagnostics = this.sourceFiles.getOrDefault(uri, () => new SourceFileDiagnostics())\n if (fileDiagnostics.setDiagnostics({ diagnostics, version })) {\n if (diagnostics === 'pending') return\n this.events.emit('fileDiagnosticsChanged', { uri, diagnostics, version })\n }\n }\n\n onFileDiagnosticsChanged(handler: (...args: DiagnosticEvents['fileDiagnosticsChanged']) => void): lsp.Disposable {\n this.events.on('fileDiagnosticsChanged', handler)\n return {\n dispose: () => {\n this.events.off('fileDiagnosticsChanged', handler)\n },\n }\n }\n}\n","import { TextDocument } from 'vscode-languageserver-textdocument'\nimport * as lsp from 'vscode-languageserver/node'\nimport { appVersion, packageVersion } from '../cli/app-version'\nimport { Constants } from '../constants'\nimport { logger, LogLevel } from '../logger'\nimport { LanguageServerLogSink } from '../logger/sinks/language-server-log-sink'\nimport { resolvePuyaPath } from '../puya/resolve-puya-path'\nimport type { AnalyserService } from './analyser-service'\nimport { createAnalyserService } from './analyser-service'\nimport { CompileTriggerQueue } from './compile-trigger-queue'\nimport { CompileWorker } from './compile-worker'\nimport type { FileWithDiagnostics } from './diagnostics-manager'\nimport { DiagnosticsManager } from './diagnostics-manager'\nimport { isCodeFixData } from './mapping'\nimport { LogExceptions } from './util/log-exceptions'\nimport { createNormalisedTextDocumentConnection, normalisedUri } from './util/uris'\n\ninterface LanguageServerConfiguration {\n // use LogLevel member names to maintain consistency with other extension settings\n logLevel?: Omit<keyof typeof LogLevel, 'Critical'>\n debounce?: number\n}\n\nconst resolveConnection = async (lspPort: number | undefined) => {\n if (!lspPort) {\n return lsp.createConnection(lsp.ProposedFeatures.all)\n }\n\n // When the debug env variable PUYA_TS_DEBUG_LSP_PORT is set, we start the server with socket transport.\n // Note: this is actually the opposite to how vscode-languageserver is designed.\n // Normally, the extension is the web socker server and the language server is the client.\n // Here, we flip it. This allows an easier debugging experience.\n // If changes are made to the language server, you can just restart the debugger\n // and choose the option \"Restart language server\" in the VS Code extension host instance.\n const transport = await lsp.createClientSocketTransport(lspPort)\n const protocol = await transport.onConnected()\n\n return lsp.createConnection(lsp.ProposedFeatures.all, protocol[0], protocol[1])\n}\n\nexport type LanguageServerOptions = {\n port?: number\n customPuyaPath?: string\n}\n\nconst PACKAGE_VERSION = packageVersion()\n\nclass PuyaLanguageServer {\n readonly documents = new lsp.TextDocuments(TextDocument)\n readonly triggers = new CompileTriggerQueue()\n readonly workspaceFolders: lsp.URI[] = []\n readonly diagnosticsMgr: DiagnosticsManager\n readonly compileWorker: CompileWorker\n readonly analyserService: AnalyserService\n stopping = false\n\n constructor(\n public readonly connection: lsp.Connection,\n private readonly loggingSink: LanguageServerLogSink,\n puyaPath: string,\n ) {\n this.diagnosticsMgr = new DiagnosticsManager()\n this.analyserService = createAnalyserService({ puyaPath })\n this.compileWorker = new CompileWorker(this.triggers, this.analyserService, this.documents, this.diagnosticsMgr)\n\n connection.onInitialize(this.initialize.bind(this))\n connection.onInitialized(this.initialized.bind(this))\n connection.onCodeAction(this.codeAction.bind(this))\n connection.onDidChangeConfiguration(this.configurationChange.bind(this))\n this.documents.onDidChangeContent(this.documentDidChangeContent.bind(this))\n this.diagnosticsMgr.onFileDiagnosticsChanged(this.fileDiagnosticsChanged.bind(this))\n connection.onShutdown(this.shutdown.bind(this))\n }\n\n start() {\n this.documents.listen(createNormalisedTextDocumentConnection(this.connection))\n this.connection.listen()\n this.compileWorker.start()\n }\n\n async shutdown() {\n logger.debug(undefined, '[PuyaLanguageServer] Shutting down')\n this.stopping = true\n await this.compileWorker.stop()\n await this.analyserService.shutdown()\n logger.debug(undefined, '[PuyaLanguageServer] Shutdown')\n }\n\n initialize(params: lsp.InitializeParams): lsp.InitializeResult {\n this.workspaceFolders.push(...(params.workspaceFolders?.map((f) => normalisedUri({ uri: f.uri }).toString()) ?? []))\n this.triggers.enqueue({\n type: 'workspace',\n uris: this.workspaceFolders,\n })\n return {\n serverInfo: {\n name: 'Puya-TS Language Server',\n version: PACKAGE_VERSION,\n },\n capabilities: {\n textDocumentSync: lsp.TextDocumentSyncKind.Incremental,\n codeActionProvider: {\n resolveProvider: false,\n },\n },\n }\n }\n\n @LogExceptions\n initialized(params: lsp.InitializedParams) {\n logger.debug(undefined, `${Constants.languageServerSource}-ls initialized`)\n }\n\n @LogExceptions\n async fileDiagnosticsChanged(params: FileWithDiagnostics) {\n if (this.stopping) {\n logger.debug(undefined, `[Diagnostics Ignored (shutting down)]: ${params.uri}`)\n return\n }\n logger.debug(undefined, `[Diagnostics Changed]: ${params.uri}`)\n\n await this.connection.sendDiagnostics(params)\n logger.debug(undefined, `[Diagnostics Sent]: ${params.uri}`)\n }\n\n @LogExceptions\n documentDidChangeContent(params: lsp.TextDocumentChangeEvent<TextDocument>) {\n if (this.stopping) return\n const normalizedDocumentUri = normalisedUri({ uri: params.document.uri }).toString()\n logger.debug(undefined, `[Document Changed]: ${normalizedDocumentUri}`)\n this.diagnosticsMgr.setDiagnostics({ uri: normalizedDocumentUri, version: params.document.version, diagnostics: 'pending' })\n\n this.triggers.enqueue({\n type: 'file',\n uris: [normalizedDocumentUri],\n })\n }\n\n /**\n * Bound to connection.onCodeAction and called when a user hovers over a piece of code.\n *\n * Params includes the text range the user is hovering over and any diagnostics known to the\n * client at the time.\n *\n * Response should include actions the user can take and the command or text edits that should be\n * invoked/applied if selected\n * @param params\n */\n @LogExceptions\n codeAction(params: lsp.CodeActionParams): lsp.CodeAction[] {\n return params.context.diagnostics.flatMap((d): lsp.CodeAction | lsp.CodeAction[] => {\n if (isCodeFixData(d.data)) {\n return {\n title: d.data.message,\n kind: lsp.CodeActionKind.QuickFix,\n diagnostics: [d],\n edit: {\n changes: {\n [params.textDocument.uri]: [...d.data.edits],\n },\n },\n }\n }\n return []\n })\n }\n\n @LogExceptions\n configurationChange(params: lsp.DidChangeConfigurationParams) {\n const settings = params.settings as LanguageServerConfiguration\n const logLevel = LogLevel[settings.logLevel as keyof typeof LogLevel]\n if (logLevel !== undefined) {\n logger.debug(undefined, `setting log level to ${logLevel}`)\n this.loggingSink.minLogLevel = logLevel\n }\n }\n}\n\n// eslint-disable-next-line no-console\nconst cliLog = console.error\n\nexport async function startLanguageServer(options: LanguageServerOptions) {\n cliLog(`Puya-TS Language Server:\\n${appVersion({ withAVMVersion: false })}`)\n const connection = await resolveConnection(options.port)\n const languageServerSink = new LanguageServerLogSink(connection)\n logger.configure([languageServerSink])\n try {\n const puyaPath = await resolvePuyaPath(options)\n const server = new PuyaLanguageServer(connection, languageServerSink, puyaPath)\n server.start()\n } catch (e) {\n connection.console.error(`Unhandled exception ${e}`)\n }\n}\n","import { ArgumentParser, BooleanOptionalAction } from 'argparse'\nimport { appVersion } from '../cli/app-version'\nimport { checkNodeVersion } from '../cli/check-node-version'\nimport type { LanguageServerOptions } from './puya-language-server'\nimport { startLanguageServer } from './puya-language-server'\n\nexport async function parseCliArguments() {\n checkNodeVersion()\n const prog = 'puyats-ls'\n const parser = new ArgumentParser({\n prog,\n })\n\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.add_argument('--debug-mode', {\n help: 'Start the language server in debug mode. Server will listen on the debug port (default 4001) for connections.',\n default: false,\n dest: 'debugMode',\n action: BooleanOptionalAction,\n })\n const [result, _] = parser.parse_known_args() as [PuyaTsCommand, unknown]\n\n switch (result.command) {\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion({ name: prog }))\n break\n default: {\n const options: LanguageServerOptions = {\n port: result.debugMode ? (parsePort(process.env.PUYA_TS_DEBUG_LSP_PORT) ?? 4001) : undefined,\n }\n\n await startLanguageServer(options)\n break\n }\n }\n}\n\ntype PuyaTsCommand = NoCommandArgs | VersionCommand\ninterface NoCommandArgs {\n command: 'none'\n debugMode: boolean\n}\ninterface VersionCommand {\n command: 'version'\n}\n\nfunction parsePort(value: string | undefined) {\n if (value === undefined) return undefined\n const val = Number(value)\n if (val > 0 && val < 2 ** 16 && Math.floor(val) === val) {\n return val\n }\n throw new Error(`Invalid port number ${value}`)\n}\n","import { parseCliArguments } from './language-server/parse'\n\nvoid parseCliArguments()\n"],"names":["require$$0","lsp.createConnection","lsp.ProposedFeatures","lsp.createClientSocketTransport","lsp.TextDocuments","lsp.TextDocumentSyncKind","lsp.CodeActionKind"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAEA,MAAM,gBAAgB,CAAC;AACvB,IAAI,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;AACnD,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG;AACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU;AACrC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,SAAS;AACrC,IAAI;AACJ,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI;AACxB,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AACpD,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAChD,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;AACtD,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B,IAAI;AACJ,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACtC,YAAY,IAAI,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACxD;AACA,gBAAgB,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9D;AACA,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9D,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1D,gBAAgB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChJ;AACA,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY;AACnD,gBAAgB,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC;AAC5F,gBAAgB,IAAI,OAAO,GAAG,SAAS,KAAK,gBAAgB,CAAC,MAAM,EAAE;AACrE,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACjF,wBAAwB,WAAW,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC5E,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,gBAAgB,CAAC,MAAM,GAAG,KAAK,EAAE;AACzD,wBAAwB,WAAW,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,gBAAgB,CAAC;AACnG,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACtJ,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,GAAG,WAAW,CAAC;AAC3E,gBAAgB,IAAI,IAAI,KAAK,CAAC,EAAE;AAChC,oBAAoB,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClH,wBAAwB,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;AAC9D,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,iBAAiB,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACtD,gBAAgB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI;AAC3C,gBAAgB,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAChE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AAC7C,YAAY,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AACvE,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,YAAY;AAChC,IAAI;AACJ,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpE,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACjD,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,MAAM;AAC9C,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACxB,YAAY,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;AACjD,QAAQ;AACR,QAAQ,OAAO,GAAG,GAAG,IAAI,EAAE;AAC3B,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC;AACpD,YAAY,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;AAC3C,gBAAgB,IAAI,GAAG,GAAG;AAC1B,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7B,YAAY;AACZ,QAAQ;AACR;AACA;AACA,QAAQ,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC;AAC5B,QAAQ,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAChE,QAAQ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE;AAC9D,IAAI;AACJ,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACjD,QAAQ,IAAI,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE;AACjD,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;AACvC,QAAQ;AACR,aAAa,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACpC,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrD,QAAQ,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,EAAE;AACrC,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,QAAQ,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AAC/H,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;AAChF,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC;AACvD,IAAI;AACJ,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE;AACxC,QAAQ,OAAO,MAAM,GAAG,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;AACnF,YAAY,MAAM,EAAE;AACpB,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM;AAC3C,IAAI;AACJ,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;AAChC,QAAQ,MAAM,SAAS,GAAG,KAAK;AAC/B,QAAQ,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI;AAC5D,YAAY,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS;AAC/E,aAAa,SAAS,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,QAAQ,CAAC;AAC9F,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,SAAS,GAAG,KAAK;AAC/B,QAAQ,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI;AAC5D,YAAY,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS;AACtH,IAAI;AACJ;AACO,IAAI,YAAY;AACvB,CAAC,UAAU,YAAY,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;AACvD,QAAQ,OAAO,IAAI,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC;AACtE,IAAI;AACJ,IAAI,YAAY,CAAC,MAAM,GAAG,MAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;AAChD,QAAQ,IAAI,QAAQ,YAAY,gBAAgB,EAAE;AAClD,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C,YAAY,OAAO,QAAQ;AAC3B,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;AACnG,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,CAAC,MAAM,GAAG,MAAM;AAChC,IAAI,SAAS,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE;AACzC,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE;AACvC,QAAQ,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;AAC9E,YAAY,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;AAChE,YAAY,IAAI,IAAI,KAAK,CAAC,EAAE;AAC5B,gBAAgB,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;AACxE,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,kBAAkB,GAAG,CAAC;AAClC,QAAQ,MAAM,KAAK,GAAG,EAAE;AACxB,QAAQ,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;AACrC,YAAY,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAChE,YAAY,IAAI,WAAW,GAAG,kBAAkB,EAAE;AAClD,gBAAgB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AACnD,YAAY;AACZ,iBAAiB,IAAI,WAAW,GAAG,kBAAkB,EAAE;AACvD,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAC3E,YAAY;AACZ,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;AAClC,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrC,YAAY;AACZ,YAAY,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/D,QAAQ;AACR,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACnD,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,IAAI;AACJ,IAAI,YAAY,CAAC,UAAU,GAAG,UAAU;AACxC,CAAC,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC;AACvC,SAAS,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AAC1B;AACA,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;AACnC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;AAC5B,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;AAC7B,IAAI,IAAI,OAAO,GAAG,CAAC;AACnB,IAAI,IAAI,QAAQ,GAAG,CAAC;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7D,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3D,QAAQ,IAAI,GAAG,IAAI,CAAC,EAAE;AACtB;AACA,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACvC,QAAQ;AACR,aAAa;AACb;AACA,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACnC,IAAI;AACJ,IAAI,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AACrC,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,EAAE;AACjE,IAAI,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;AACpD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;AACvB,YAAY,IAAI,EAAE,KAAK,EAAE,kCAAkC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,0BAA0B;AACzI,gBAAgB,CAAC,EAAE;AACnB,YAAY;AACZ,YAAY,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,IAAI,OAAO,IAAI,KAAK,EAAE,kCAAkC,IAAI,KAAK,EAAE;AACnE;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AAC7B,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACzB,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE;AAC/F,QAAQ,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;AACzC,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,iBAAiB,CAAC,QAAQ,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE;AAClC,QAAQ,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;AACnD,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;;;;;;;;;;;;;;ACjQA,CAAA,IAAc,GAAGA,WAAA,EAA0B;;;;;;MCD9B,qBAAqB,CAAA;AACZ,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAA0B,EAAA;QAA1B,IAAA,CAAA,UAAU,GAAV,UAAU;IAAmB;AAEjD,IAAA,WAAW,GAAG,QAAQ,CAAC,KAAK;AAE5B,IAAA,GAAG,CAAC,CAAW,EAAA;QACb,IAAI,CAAC,CAAC,cAAc;AAAE,YAAA,OAAM;AAE5B,QAAA,QAAQ,CAAC,CAAC,KAAK;AACb,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC3C;AACF,YAAA,KAAK,SAAS;gBACZ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACvC;AACF,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxC;;IAEN;AACD;;MCRY,mBAAmB,CAAA;IACb,KAAK,GAAqB,EAAE;AAC5B,IAAA,MAAM,GAAG,IAAI,YAAY,EAA6B;AAEvE,IAAA,OAAO,CAAC,OAAuB,EAAA;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,IAAI,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE;gBACvB,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,gBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC/D,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1B;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC;IACtD;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;IAC3B;AAEA,IAAA,cAAc,CAAC,OAAqE,EAAA;QAClF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC;QACvC,OAAO;YACL,OAAO,EAAE,MAAK;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC;YAC1C,CAAC;SACF;IACH;AACD;;ICnCY,aAAa,GAAA,CAAA,MAAA;;;iBAAb,aAAa,CAAA;;;gCAsCvB,aAAa,CAAA;AACd,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,MAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAM,IAAI,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;;;AAjCS,QAAA,KAAK,GANb,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAa;QAOL,eAAe;QACf,SAAS;QACT,WAAW;QAR9B,QAAQ,GAAY,KAAK;AACjB,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa,EAAQ;QACvC,QAAQ,GAA2C,SAAS;QAC5D,WAAW,GAA4B,SAAS;AACxD,QAAA,WAAA,CACmB,KAA0B,EAC1B,eAAgC,EAChC,SAAsC,EACtC,WAA+B,EAAA;YAH/B,IAAA,CAAA,KAAK,GAAL,KAAK;YACL,IAAA,CAAA,eAAe,GAAf,eAAe;YACf,IAAA,CAAA,SAAS,GAAT,SAAS;YACT,IAAA,CAAA,WAAW,GAAX,WAAW;AAE5B,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E;QAEA,KAAK,GAAA;YACH,UAAU,CAAC,YAAW;AACpB,gBAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrB,oBAAA,IAAI;wBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;wBACvC,IAAI,OAAO,EAAE;4BACX,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,uBAAA,EAA0B,OAAO,CAAC,IAAI,CAAA,SAAA,EAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACpG,4BAAA,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,EAAE,OAAO,EAAE;AAC5D,4BAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;4BACrE,OAAO,IAAI,CAAC,WAAW;wBACzB;6BAAO;AACL,4BAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,kCAAA,CAAoC,CAAC;AAC7D,4BAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE;AACvC,4BAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO;4BAC3B,OAAO,IAAI,CAAC,QAAQ;wBACtB;oBACF;oBAAE,OAAO,CAAC,EAAE;wBACV,mBAAmB,CAAC,CAAC,CAAC;oBACxB;gBACF;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACxB,YAAA,CAAC,CAAC;QACJ;AAGA,QAAA,MAAM,IAAI,GAAA;AACR,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/B,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;QAC5B;AAEA,QAAA,+BAA+B,CAAC,OAAuB,EAAA;AACrD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;oBAClD,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5E,wBAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,mEAAA,CAAqE,CAAC;wBAC9F,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC;oBAClD;gBACF;YACF;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,wCAAA,CAA0C,CAAC;AACnE,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACzB;QACF;AAEQ,QAAA,MAAM,kBAAkB,CAAC,OAAuB,EAAE,KAAkB,EAAA;AAC1E,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAkB,EAAE,GAAG,KAAI;AAC5E,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AACb,oBAAA,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE;oBACvB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB;AACD,gBAAA,OAAO,GAAG;YACZ,CAAC,EAAE,EAAE,CAAC;AACN,YAAA,IAAI;gBACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAChD;oBACE,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,aAAa;iBACd,EACD,KAAK,CACN;AACD,gBAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AAC1B,oBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC;gBACvC;YACF;YAAE,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,KAAK,SAAS;oBAAE;AACrB,gBAAA,MAAM,CAAC;YACT;QACF;;;;AC3FF,SAAS,kBAAkB,CAAC,CAAiB,EAAE,CAAiB,EAAA;AAC9D,IAAA,QACE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;AACvB,QAAA,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;AACzC,QAAA,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;AACnD,QAAA,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI;AACrC,QAAA,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;AAC/C,QAAA,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;AAE7B;AAEA,SAAS,yBAAyB,CAAC,IAAwB,EAAE,IAAwB,EAAA;AACnF,IAAA,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;AAAE,QAAA,OAAO,IAAI;IACzD,OAAO,IAAI,IAAI,IAAI;AACrB;MAEa,qBAAqB,CAAA;IACxB,WAAW,GAAiC,SAAS;AACrD,IAAA,OAAO;AACf;;;;AAIG;AACH,IAAA,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAA8E,EAAA;;QAEjH,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AAAE,YAAA,OAAO,KAAK;QACnE,IAAI,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACjH,YAAA,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxF,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,gBAAA,OAAO,KAAK;YACd;QACF;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AAEtB,QAAA,OAAO,IAAI;IACb;AACD;MAWY,kBAAkB,CAAA;AACZ,IAAA,WAAW,GAAG,IAAI,UAAU,EAA0C;AACtE,IAAA,MAAM,GAAG,IAAI,YAAY,EAAoB;AAE9D,IAAA,cAAc,CAAC,EACb,GAAG,EACH,WAAW,EACX,OAAO,GAKR,EAAA;QACC,MAAM,CAAC,KAAK,CACV,SAAS,EACT,CAAA,kCAAA,EAAqC,GAAG,CAAA,CAAA,EAAI,OAAO,IAAI,cAAc,CAAA,EAAA,EAAK,WAAW,KAAK,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAA,CAAA,CAAG,CACxI;AACD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC7F,IAAI,eAAe,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE;YAC5D,IAAI,WAAW,KAAK,SAAS;gBAAE;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAC3E;IACF;AAEA,IAAA,wBAAwB,CAAC,OAAsE,EAAA;QAC7F,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,OAAO,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,MAAK;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC;YACpD,CAAC;SACF;IACH;AACD;;AChED,MAAM,iBAAiB,GAAG,OAAO,OAA2B,KAAI;IAC9D,IAAI,CAAC,OAAO,EAAE;QACZ,OAAOC,4BAAoB,CAACC,4BAAoB,CAAC,GAAG,CAAC;IACvD;;;;;;;IAQA,MAAM,SAAS,GAAG,MAAMC,uCAA+B,CAAC,OAAO,CAAC;AAChE,IAAA,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE;IAE9C,OAAOF,4BAAoB,CAACC,4BAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAOD,MAAM,eAAe,GAAG,cAAc,EAAE;IAElC,kBAAkB,GAAA,CAAA,MAAA;;;;;;;iBAAlB,kBAAkB,CAAA;;;uCA6DrB,aAAa,CAAA;kDAKb,aAAa,CAAA;oDAYb,aAAa,CAAA;sCAuBb,aAAa,CAAA;+CAmBb,aAAa,CAAA;AA1Dd,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,aAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,WAAW,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAKX,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,kCAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,wBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAM,sBAAsB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAY5B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,oCAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,0BAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,wBAAwB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAuBxB,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,YAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,UAAU,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAmBV,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,+BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,qBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,mBAAmB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;;;AA/GD,QAAA,UAAU,GAVxB,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAkB;QAWH,WAAW;QAVrB,SAAS,GAAG,IAAIE,yBAAiB,CAAC,YAAY,CAAC;AAC/C,QAAA,QAAQ,GAAG,IAAI,mBAAmB,EAAE;QACpC,gBAAgB,GAAc,EAAE;AAChC,QAAA,cAAc;AACd,QAAA,aAAa;AACb,QAAA,eAAe;QACxB,QAAQ,GAAG,KAAK;AAEhB,QAAA,WAAA,CACkB,UAA0B,EACzB,WAAkC,EACnD,QAAgB,EAAA;YAFA,IAAA,CAAA,UAAU,GAAV,UAAU;YACT,IAAA,CAAA,WAAW,GAAX,WAAW;AAG5B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,EAAE;YAC9C,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;AAEhH,YAAA,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,YAAA,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpF,YAAA,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD;QAEA,KAAK,GAAA;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,sCAAsC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC5B;AAEA,QAAA,MAAM,QAAQ,GAAA;AACZ,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,oCAAoC,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC/B,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AACrC,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,+BAA+B,CAAC;QAC1D;AAEA,QAAA,UAAU,CAAC,MAA4B,EAAA;AACrC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACpH,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpB,gBAAA,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI,CAAC,gBAAgB;AAC5B,aAAA,CAAC;YACF,OAAO;AACL,gBAAA,UAAU,EAAE;AACV,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,OAAO,EAAE,eAAe;AACzB,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,gBAAgB,EAAEC,gCAAwB,CAAC,WAAW;AACtD,oBAAA,kBAAkB,EAAE;AAClB,wBAAA,eAAe,EAAE,KAAK;AACvB,qBAAA;AACF,iBAAA;aACF;QACH;AAGA,QAAA,WAAW,CAAC,MAA6B,EAAA;YACvC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,EAAG,SAAS,CAAC,oBAAoB,CAAA,eAAA,CAAiB,CAAC;QAC7E;QAGA,MAAM,sBAAsB,CAAC,MAA2B,EAAA;AACtD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,uCAAA,EAA0C,MAAM,CAAC,GAAG,CAAA,CAAE,CAAC;gBAC/E;YACF;YACA,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,uBAAA,EAA0B,MAAM,CAAC,GAAG,CAAA,CAAE,CAAC;YAE/D,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,oBAAA,EAAuB,MAAM,CAAC,GAAG,CAAA,CAAE,CAAC;QAC9D;AAGA,QAAA,wBAAwB,CAAC,MAAiD,EAAA;YACxE,IAAI,IAAI,CAAC,QAAQ;gBAAE;AACnB,YAAA,MAAM,qBAAqB,GAAG,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;YACpF,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,oBAAA,EAAuB,qBAAqB,CAAA,CAAE,CAAC;YACvE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAE5H,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpB,gBAAA,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,CAAC,qBAAqB,CAAC;AAC9B,aAAA,CAAC;QACJ;AAEA;;;;;;;;;AASG;AAEH,QAAA,UAAU,CAAC,MAA4B,EAAA;YACrC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAuC;AACjF,gBAAA,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBACzB,OAAO;AACL,wBAAA,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;AACrB,wBAAA,IAAI,EAAEC,0BAAkB,CAAC,QAAQ;wBACjC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChB,wBAAA,IAAI,EAAE;AACJ,4BAAA,OAAO,EAAE;AACP,gCAAA,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7C,6BAAA;AACF,yBAAA;qBACF;gBACH;AACA,gBAAA,OAAO,EAAE;AACX,YAAA,CAAC,CAAC;QACJ;AAGA,QAAA,mBAAmB,CAAC,MAAwC,EAAA;AAC1D,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAuC;YAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAiC,CAAC;AACrE,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA,qBAAA,EAAwB,QAAQ,CAAA,CAAE,CAAC;AAC3D,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,QAAQ;YACzC;QACF;;;AAGF;AACA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;AAErB,eAAe,mBAAmB,CAAC,OAA8B,EAAA;AACtE,IAAA,MAAM,CAAC,CAAA,0BAAA,EAA6B,UAAU,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA,CAAE,CAAC;IAC5E,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC;AACxD,IAAA,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAAC,UAAU,CAAC;AAChE,IAAA,MAAM,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACtC,IAAA,IAAI;AACF,QAAA,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC;QAC/E,MAAM,CAAC,KAAK,EAAE;IAChB;IAAE,OAAO,CAAC,EAAE;QACV,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,oBAAA,EAAuB,CAAC,CAAA,CAAE,CAAC;IACtD;AACF;;AC3LO,eAAe,iBAAiB,GAAA;AACrC,IAAA,gBAAgB,EAAE;IAClB,MAAM,IAAI,GAAG,WAAW;AACxB,IAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;QAChC,IAAI;AACL,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE;AAClC,QAAA,IAAI,EAAE,+GAA+G;AACrH,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,MAAM,EAAE,qBAAqB;AAC9B,KAAA,CAAC;IACF,MAAM,CAAC,MAAS,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAA8B;AAEzE,IAAA,QAAQ,MAAM,CAAC,OAAO;AACpB,QAAA,KAAK,SAAS;;AAEZ,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC;QACF,SAAS;AACP,YAAA,MAAM,OAAO,GAA0B;gBACrC,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,IAAI,IAAI,SAAS;aAC7F;AAED,YAAA,MAAM,mBAAmB,CAAC,OAAO,CAAC;YAClC;QACF;;AAEJ;AAWA,SAAS,SAAS,CAAC,KAAyB,EAAA;IAC1C,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;AACzC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,IAAA,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;AACvD,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAA,CAAE,CAAC;AACjD;;ACzDA,KAAK,iBAAiB,EAAE","x_google_ignoreList":[0,1]}
package/bin/run-cli.mjs CHANGED
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import '../cli.mjs';
3
- import '../contract-class-model-cK8F4WVM.js';
3
+ import 'argparse';
4
+ import '../semver-B0p_0XuH.js';
5
+ import 'fs';
6
+ import 'node:url';
7
+ import 'pathe';
8
+ import '../contract-class-model-BZeEDGw0.js';
4
9
  import 'typescript';
5
10
  import 'node:fs';
6
11
  import 'node:util';
7
- import 'pathe';
8
12
  import 'node:crypto';
9
13
  import 'polytype';
10
14
  import 'node:async_hooks';
11
- import 'argparse';
12
- import '../semver-T4bO0VEo.js';
13
- import 'fs';
14
- import 'node:url';
15
- import '../compile-DGk1ftqu.js';
16
- import '../arc4-clientgen-Dd2qW-1d.js';
15
+ import '../compile-ycpMcgmJ.js';
16
+ import '../arc4-clientgen-qBTlCOIm.js';
17
17
  import '@algorandfoundation/algokit-utils/abi';
18
18
  import 'fs/promises';
19
- import '../options-sBHEIhey.js';
19
+ import '../options-DD9MApH4.js';
20
20
  import 'arcsecond';
21
21
  import 'tslib';
22
22
  import 'node:buffer';
@@ -29,11 +29,11 @@ import 'net';
29
29
  import 'change-case';
30
30
  import 'glob';
31
31
  import 'minimatch';
32
- import '../resolve-puya-path-Bgh6DuRP.js';
32
+ import '../resolve-puya-path-Ba54kz9o.js';
33
33
  import 'signal-exit';
34
34
  import 'tar';
35
35
  import 'node:zlib';
36
- import '../util-CA3Q0W2C.js';
36
+ import '../util-Aa8RgOmt.js';
37
37
  import 'chalk';
38
- import '../check-node-version-Df1hdewH.js';
38
+ import '../check-node-version-CLFFTDHN.js';
39
39
  //# sourceMappingURL=run-cli.mjs.map
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
- import { d as Constants } from './contract-class-model-cK8F4WVM.js';
3
- import { p as parseSemVer } from './semver-T4bO0VEo.js';
2
+ import { d as Constants } from './contract-class-model-BZeEDGw0.js';
3
+ import { p as parseSemVer } from './semver-B0p_0XuH.js';
4
4
 
5
5
  function writeError(text) {
6
6
  // eslint-disable-next-line no-console
@@ -17,4 +17,4 @@ function checkNodeVersion() {
17
17
  }
18
18
 
19
19
  export { checkNodeVersion as c };
20
- //# sourceMappingURL=check-node-version-Df1hdewH.js.map
20
+ //# sourceMappingURL=check-node-version-CLFFTDHN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-node-version-Df1hdewH.js","sources":["../src/cli/check-node-version.ts"],"sourcesContent":["import chalk from 'chalk'\nimport { Constants } from '../constants'\nimport { parseSemVer } from '../puya/semver'\n\nfunction writeError(text: string) {\n // eslint-disable-next-line no-console\n console.error(chalk.red(text))\n}\n\nexport function checkNodeVersion() {\n const min = parseSemVer(Constants.minNodeVersion)\n const actual = parseSemVer(process.versions.node)\n\n if (\n actual.major < min.major ||\n (actual.major === min.major && actual.minor < min.minor) ||\n (actual.major === min.major && actual.minor === min.minor && actual.rev < min.rev)\n ) {\n writeError(\n `Installed node version ${process.versions.node} is older than the minimum required version ${Constants.minNodeVersion}. You may experience compatibility issues.`,\n )\n }\n}\n"],"names":[],"mappings":";;;;AAIA,SAAS,UAAU,CAAC,IAAY,EAAA;;IAE9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;SAEgB,gBAAgB,GAAA;IAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEjD,IAAA,IACE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AACxB,SAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;SACvD,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAClF;AACA,QAAA,UAAU,CACR,CAAA,uBAAA,EAA0B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA,4CAAA,EAA+C,SAAS,CAAC,cAAc,CAAA,0CAAA,CAA4C,CACnK;IACH;AACF;;;;"}
1
+ {"version":3,"file":"check-node-version-CLFFTDHN.js","sources":["../src/cli/check-node-version.ts"],"sourcesContent":["import chalk from 'chalk'\nimport { Constants } from '../constants'\nimport { parseSemVer } from '../puya/semver'\n\nfunction writeError(text: string) {\n // eslint-disable-next-line no-console\n console.error(chalk.red(text))\n}\n\nexport function checkNodeVersion() {\n const min = parseSemVer(Constants.minNodeVersion)\n const actual = parseSemVer(process.versions.node)\n\n if (\n actual.major < min.major ||\n (actual.major === min.major && actual.minor < min.minor) ||\n (actual.major === min.major && actual.minor === min.minor && actual.rev < min.rev)\n ) {\n writeError(\n `Installed node version ${process.versions.node} is older than the minimum required version ${Constants.minNodeVersion}. You may experience compatibility issues.`,\n )\n }\n}\n"],"names":[],"mappings":";;;;AAIA,SAAS,UAAU,CAAC,IAAY,EAAA;;IAE9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;SAEgB,gBAAgB,GAAA;IAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEjD,IAAA,IACE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AACxB,SAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;SACvD,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAClF;AACA,QAAA,UAAU,CACR,CAAA,uBAAA,EAA0B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA,4CAAA,EAA+C,SAAS,CAAC,cAAc,CAAA,0CAAA,CAA4C,CACnK;IACH;AACF;;;;"}
package/cli-ls.d.ts CHANGED
@@ -1 +1 @@
1
- import './util/polyfills';
1
+ export {};
package/cli.d.ts CHANGED
@@ -1 +1 @@
1
- import './util/polyfills';
1
+ export {};
package/cli.mjs CHANGED
@@ -1,23 +1,18 @@
1
- import { l as logger, A as AbsolutePath, a as LoggingContext, L as LogLevel } from './contract-class-model-cK8F4WVM.js';
2
1
  import { BooleanOptionalAction, ArgumentParser } from 'argparse';
3
- import { a as appVersion } from './semver-T4bO0VEo.js';
4
- import { c as compile } from './compile-DGk1ftqu.js';
5
- import { _ as defaultPuyaOptions, X as processInputPaths, V as CompileOptions, $ as parseCliTemplateVar, a0 as LocalsCoalescingStrategy } from './options-sBHEIhey.js';
6
- import { a as addEnumArg, C as ConsoleLogSink, c as convertInt } from './util-CA3Q0W2C.js';
7
- import { c as checkNodeVersion } from './check-node-version-Df1hdewH.js';
8
- import 'typescript';
9
- import 'node:fs';
10
- import 'node:util';
11
- import 'pathe';
12
- import 'node:crypto';
13
- import 'polytype';
14
- import 'node:async_hooks';
2
+ import { a as appVersion } from './semver-B0p_0XuH.js';
3
+ import { c as compile } from './compile-ycpMcgmJ.js';
4
+ import { _ as defaultPuyaOptions, X as processInputPaths, V as CompileOptions, $ as parseCliTemplateVar, a0 as LocalsCoalescingStrategy } from './options-DD9MApH4.js';
5
+ import { l as logger, A as AbsolutePath, a as LoggingContext, L as LogLevel } from './contract-class-model-BZeEDGw0.js';
6
+ import { a as addEnumArg, C as ConsoleLogSink, c as convertInt } from './util-Aa8RgOmt.js';
7
+ import { c as checkNodeVersion } from './check-node-version-CLFFTDHN.js';
15
8
  import 'fs';
16
9
  import 'node:url';
17
- import './arc4-clientgen-Dd2qW-1d.js';
10
+ import 'pathe';
11
+ import './arc4-clientgen-qBTlCOIm.js';
18
12
  import '@algorandfoundation/algokit-utils/abi';
19
13
  import 'fs/promises';
20
- import './resolve-puya-path-Bgh6DuRP.js';
14
+ import 'typescript';
15
+ import './resolve-puya-path-Ba54kz9o.js';
21
16
  import 'tslib';
22
17
  import 'signal-exit';
23
18
  import 'cross-spawn';
@@ -25,14 +20,19 @@ import 'crypto';
25
20
  import 'path';
26
21
  import 'tar';
27
22
  import 'glob';
23
+ import 'node:fs';
28
24
  import 'node:zlib';
29
25
  import 'os';
26
+ import 'node:util';
30
27
  import 'arcsecond';
31
28
  import 'node:buffer';
29
+ import 'node:async_hooks';
32
30
  import 'util';
33
31
  import 'net';
34
32
  import 'change-case';
35
33
  import 'minimatch';
34
+ import 'node:crypto';
35
+ import 'polytype';
36
36
  import 'chalk';
37
37
 
38
38
  function addBuildCommand(parser) {
package/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","sources":["../src/cli/build-command.ts","../src/cli/parse.ts","../src/cli.ts"],"sourcesContent":["import type { ArgumentParser } from 'argparse'\nimport { BooleanOptionalAction } from 'argparse'\nimport { compile } from '../compile'\nimport { processInputPaths } from '../input-paths/process-input-paths'\nimport { logger, LoggingContext, LogLevel } from '../logger'\nimport { ConsoleLogSink } from '../logger/sinks/console-log-sink'\nimport { CompileOptions, defaultPuyaOptions, LocalsCoalescingStrategy } from '../options'\n\nimport { AbsolutePath } from '../util/absolute-path'\nimport { parseCliTemplateVar } from '../util/template-var-cli-parser'\nimport { addEnumArg, convertInt } from './util'\n\nexport interface BuildCommandArgs {\n command: 'build'\n log_level: LogLevel\n output_awst: boolean\n output_awst_json: boolean\n dry_run: boolean\n skip_version_check: boolean\n output_teal: boolean\n output_source_map: boolean\n output_arc32: boolean\n output_arc56: boolean\n output_client: boolean\n output_ssa_ir: boolean\n output_optimization_ir: boolean\n output_destructured_ir: boolean\n output_memory_ir: boolean\n output_bytecode: boolean\n output_assembly_report: boolean\n out_dir: string\n debug_level: string\n optimization_level: string\n treat_warnings_as_errors: boolean\n target_avm_version: string\n cli_template_definitions: string[]\n validate_abi_args: boolean\n validate_abi_return: boolean\n template_vars_prefix: string\n locals_coalescing_strategy: LocalsCoalescingStrategy\n paths: string[]\n puya_path: string\n}\n\nexport function addBuildCommand(parser: ArgumentParser) {\n addEnumArg(parser, {\n name: '--log-level',\n default: LogLevel.Info,\n enumType: LogLevel,\n help: 'The minimum log level to output',\n })\n\n parser.add_argument('--output-awst', {\n help: 'Output debugging awst file per parsed file',\n default: false,\n action: BooleanOptionalAction,\n })\n\n parser.add_argument('--output-awst-json', {\n action: BooleanOptionalAction,\n default: false,\n help: 'Output debugging awst json file per parsed file',\n })\n\n parser.add_argument('--dry-run', {\n action: BooleanOptionalAction,\n default: false,\n help: \"Just parse typescript files, don't invoke puya compiler\",\n })\n parser.add_argument('--skip-version-check', {\n action: BooleanOptionalAction,\n default: false,\n help: \"Don't verify installed puya compiler version matches targeted version\",\n })\n parser.add_argument('--output-teal', {\n action: BooleanOptionalAction,\n help: 'Output TEAL code',\n default: defaultPuyaOptions.outputTeal,\n })\n parser.add_argument('--output-source-map', {\n action: BooleanOptionalAction,\n help: 'Output debug source maps ',\n default: defaultPuyaOptions.outputSourceMap,\n })\n parser.add_argument('--output-arc32', {\n action: BooleanOptionalAction,\n help: 'Output {contract}.arc32.json ARC-32 app spec file. Only applicable to ARC4 contracts ',\n default: defaultPuyaOptions.outputArc32,\n })\n parser.add_argument('--output-arc56', {\n action: BooleanOptionalAction,\n help: 'Output {contract}.arc56.json ARC-56 app spec file. Only applicable to ARC4 contracts ',\n default: defaultPuyaOptions.outputArc56,\n })\n parser.add_argument('--output-client', {\n action: BooleanOptionalAction,\n help: 'Output {contract}.client.ts Algorand TypeScript contract client for typed ARC-4 ABI calls. Only applicable to ARC4 contracts ',\n default: defaultPuyaOptions.outputClient,\n })\n parser.add_argument('--output-ssa-ir', {\n action: BooleanOptionalAction,\n help: 'Output IR (in SSA form) before optimisations',\n default: defaultPuyaOptions.outputSsaIr,\n })\n parser.add_argument('--output-optimization-ir', {\n action: BooleanOptionalAction,\n help: 'Output IR after each optimization',\n default: defaultPuyaOptions.outputOptimizationIr,\n })\n parser.add_argument('--output-destructured-ir', {\n action: BooleanOptionalAction,\n help: 'Output IR after SSA destructuring and before MIR',\n default: defaultPuyaOptions.outputDestructuredIr,\n })\n parser.add_argument('--output-memory-ir', {\n action: BooleanOptionalAction,\n help: 'Output MIR before lowering to TealOps',\n default: defaultPuyaOptions.outputMemoryIr,\n })\n parser.add_argument('--output-bytecode', {\n action: BooleanOptionalAction,\n help: 'Output AVM bytecode',\n default: defaultPuyaOptions.outputBytecode,\n })\n parser.add_argument('--output-assembly-report', {\n action: BooleanOptionalAction,\n help: 'Output \"human-readable\" source map for advanced debugging purposes.',\n default: defaultPuyaOptions.outputAssemblyReport,\n })\n\n parser.add_argument('--out-dir', {\n action: 'store',\n help: 'Where to output builder artifacts. Can use [name] placeholder to include contract name in path',\n default: 'out',\n })\n\n parser.add_argument('--debug-level', {\n default: defaultPuyaOptions.debugLevel.toString(),\n choices: ['0', '1', '2'],\n help: 'Output debug information level, 0 = none, 1 = debug, 2 = reserved for future use',\n })\n parser.add_argument('--optimization-level', {\n default: defaultPuyaOptions.optimizationLevel.toString(),\n choices: ['0', '1', '2'],\n help: 'Set optimization level of output TEAL / AVM bytecode, 0 = none, 1 = normal, 2 = intensive',\n })\n parser.add_argument('--treat-warnings-as-errors', {\n action: BooleanOptionalAction,\n default: defaultPuyaOptions.treatWarningsAsErrors,\n help: 'Report and treat all warnings emitted by the compiler as errors',\n })\n parser.add_argument('--target-avm-version', {\n default: defaultPuyaOptions.targetAvmVersion.toString(),\n choices: ['10', '11', '12', '13'],\n help: 'Select the targeted AVM version for compilation output',\n })\n\n parser.add_argument('--cli-template-definitions', {\n metavar: 'VAR=VALUE',\n nargs: '+',\n help: 'Define template vars for use when assembling via --output-bytecode, should be specified without the prefix (see --template-vars-prefix)',\n })\n\n parser.add_argument('--validate-abi-args', {\n action: BooleanOptionalAction,\n default: defaultPuyaOptions.validateAbiArgs,\n help: 'Validates ABI transaction arguments by ensuring they are encoded correctly',\n })\n\n parser.add_argument('--validate-abi-return', {\n action: BooleanOptionalAction,\n default: defaultPuyaOptions.validateAbiReturn,\n help: \"Validates encoding of ABI return values when using convertBytes with 'log' `prefix` option, arc4.abiCall, and strongly typed contract to contract calls\",\n })\n\n parser.add_argument('--template-vars-prefix', {\n help: 'Define the prefix to use with --template-var',\n default: defaultPuyaOptions.templateVarsPrefix,\n })\n\n addEnumArg(parser, {\n name: '--locals-coalescing-strategy',\n enumType: LocalsCoalescingStrategy,\n help: 'Strategy choice for out-of-ssa local variable coalescing. The best choice for your app is best determined through experimentation',\n default: defaultPuyaOptions.localsCoalescingStrategy,\n })\n\n parser.add_argument('paths', {\n metavar: 'PATHS',\n nargs: '*',\n help: 'The path, or paths to search for compatible .algo.ts files',\n default: ['.'],\n })\n\n parser.add_argument('--puya-path', {\n help: 'The path to Puya. If not provided, puya-ts will automatically download the appropriate binary for your system',\n })\n}\n\nexport async function buildCommand(args: BuildCommandArgs) {\n const logCtx = LoggingContext.create()\n return logCtx.run(async () => {\n logger.configure([new ConsoleLogSink(args.log_level, AbsolutePath.resolve({ path: '' }))])\n try {\n const filePaths = processInputPaths({ paths: args.paths, outDir: args.out_dir })\n\n await compile(\n new CompileOptions({\n filePaths,\n outputAwst: args.output_awst,\n outputAwstJson: args.output_awst_json,\n\n skipVersionCheck: args.skip_version_check,\n dryRun: args.dry_run,\n logLevel: args.log_level,\n\n outputTeal: args.output_teal,\n outputArc32: args.output_arc32,\n outputArc56: args.output_arc56,\n outputClient: args.output_client,\n outputSsaIr: args.output_ssa_ir,\n outputOptimizationIr: args.output_optimization_ir,\n outputDestructuredIr: args.output_destructured_ir,\n outputMemoryIr: args.output_memory_ir,\n outputBytecode: args.output_bytecode,\n outputSourceMap: args.output_source_map,\n outputAssemblyReport: args.output_assembly_report,\n debugLevel: convertInt(args.debug_level),\n optimizationLevel: convertInt(args.optimization_level),\n treatWarningsAsErrors: args.treat_warnings_as_errors,\n targetAvmVersion: convertInt(args.target_avm_version),\n cliTemplateDefinitions: Object.fromEntries(args.cli_template_definitions?.map(parseCliTemplateVar) ?? []),\n templateVarsPrefix: args.template_vars_prefix,\n localsCoalescingStrategy: args.locals_coalescing_strategy,\n customPuyaPath: args.puya_path,\n validateAbiArgs: args.validate_abi_args,\n validateAbiReturn: args.validate_abi_return,\n }),\n )\n logCtx.exitIfErrors()\n } catch (e) {\n if (e instanceof Error) {\n logger.error(e)\n } else {\n throw e\n }\n }\n })\n}\n","import { ArgumentParser } from 'argparse'\nimport { appVersion } from './app-version'\nimport type { BuildCommandArgs } from './build-command'\nimport { addBuildCommand, buildCommand } from './build-command'\nimport { checkNodeVersion } from './check-node-version'\n\nexport async function parseCliArguments() {\n checkNodeVersion()\n const parser = new ArgumentParser({\n prog: 'puya-ts',\n })\n\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.set_defaults({\n command: 'build',\n })\n addBuildCommand(parser)\n const result: PuyaTsCommand = parser.parse_args()\n switch (result.command) {\n case 'build':\n await buildCommand(result)\n break\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion())\n break\n default:\n parser.print_help()\n break\n }\n}\n\ntype PuyaTsCommand = NoCommandArgs | BuildCommandArgs | VersionCommand\ninterface NoCommandArgs {\n command: 'none'\n}\ninterface VersionCommand {\n command: 'version'\n}\n","import './util/polyfills'\nimport { parseCliArguments } from './cli/parse'\n\nvoid parseCliArguments()\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.mjs","sources":["../src/cli/build-command.ts","../src/cli/parse.ts","../src/cli.ts"],"sourcesContent":["import type { ArgumentParser } from 'argparse'\nimport { BooleanOptionalAction } from 'argparse'\nimport { compile } from '../compile'\nimport { processInputPaths } from '../input-paths/process-input-paths'\nimport { logger, LoggingContext, LogLevel } from '../logger'\nimport { ConsoleLogSink } from '../logger/sinks/console-log-sink'\nimport { CompileOptions, defaultPuyaOptions, LocalsCoalescingStrategy } from '../options'\n\nimport { AbsolutePath } from '../util/absolute-path'\nimport { parseCliTemplateVar } from '../util/template-var-cli-parser'\nimport { addEnumArg, convertInt } from './util'\n\nexport interface BuildCommandArgs {\n command: 'build'\n log_level: LogLevel\n output_awst: boolean\n output_awst_json: boolean\n dry_run: boolean\n skip_version_check: boolean\n output_teal: boolean\n output_source_map: boolean\n output_arc32: boolean\n output_arc56: boolean\n output_client: boolean\n output_ssa_ir: boolean\n output_optimization_ir: boolean\n output_destructured_ir: boolean\n output_memory_ir: boolean\n output_bytecode: boolean\n output_assembly_report: boolean\n out_dir: string\n debug_level: string\n optimization_level: string\n treat_warnings_as_errors: boolean\n target_avm_version: string\n cli_template_definitions: string[]\n validate_abi_args: boolean\n validate_abi_return: boolean\n template_vars_prefix: string\n locals_coalescing_strategy: LocalsCoalescingStrategy\n paths: string[]\n puya_path: string\n}\n\nexport function addBuildCommand(parser: ArgumentParser) {\n addEnumArg(parser, {\n name: '--log-level',\n default: LogLevel.Info,\n enumType: LogLevel,\n help: 'The minimum log level to output',\n })\n\n parser.add_argument('--output-awst', {\n help: 'Output debugging awst file per parsed file',\n default: false,\n action: BooleanOptionalAction,\n })\n\n parser.add_argument('--output-awst-json', {\n action: BooleanOptionalAction,\n default: false,\n help: 'Output debugging awst json file per parsed file',\n })\n\n parser.add_argument('--dry-run', {\n action: BooleanOptionalAction,\n default: false,\n help: \"Just parse typescript files, don't invoke puya compiler\",\n })\n parser.add_argument('--skip-version-check', {\n action: BooleanOptionalAction,\n default: false,\n help: \"Don't verify installed puya compiler version matches targeted version\",\n })\n parser.add_argument('--output-teal', {\n action: BooleanOptionalAction,\n help: 'Output TEAL code',\n default: defaultPuyaOptions.outputTeal,\n })\n parser.add_argument('--output-source-map', {\n action: BooleanOptionalAction,\n help: 'Output debug source maps ',\n default: defaultPuyaOptions.outputSourceMap,\n })\n parser.add_argument('--output-arc32', {\n action: BooleanOptionalAction,\n help: 'Output {contract}.arc32.json ARC-32 app spec file. Only applicable to ARC4 contracts ',\n default: defaultPuyaOptions.outputArc32,\n })\n parser.add_argument('--output-arc56', {\n action: BooleanOptionalAction,\n help: 'Output {contract}.arc56.json ARC-56 app spec file. Only applicable to ARC4 contracts ',\n default: defaultPuyaOptions.outputArc56,\n })\n parser.add_argument('--output-client', {\n action: BooleanOptionalAction,\n help: 'Output {contract}.client.ts Algorand TypeScript contract client for typed ARC-4 ABI calls. Only applicable to ARC4 contracts ',\n default: defaultPuyaOptions.outputClient,\n })\n parser.add_argument('--output-ssa-ir', {\n action: BooleanOptionalAction,\n help: 'Output IR (in SSA form) before optimisations',\n default: defaultPuyaOptions.outputSsaIr,\n })\n parser.add_argument('--output-optimization-ir', {\n action: BooleanOptionalAction,\n help: 'Output IR after each optimization',\n default: defaultPuyaOptions.outputOptimizationIr,\n })\n parser.add_argument('--output-destructured-ir', {\n action: BooleanOptionalAction,\n help: 'Output IR after SSA destructuring and before MIR',\n default: defaultPuyaOptions.outputDestructuredIr,\n })\n parser.add_argument('--output-memory-ir', {\n action: BooleanOptionalAction,\n help: 'Output MIR before lowering to TealOps',\n default: defaultPuyaOptions.outputMemoryIr,\n })\n parser.add_argument('--output-bytecode', {\n action: BooleanOptionalAction,\n help: 'Output AVM bytecode',\n default: defaultPuyaOptions.outputBytecode,\n })\n parser.add_argument('--output-assembly-report', {\n action: BooleanOptionalAction,\n help: 'Output \"human-readable\" source map for advanced debugging purposes.',\n default: defaultPuyaOptions.outputAssemblyReport,\n })\n\n parser.add_argument('--out-dir', {\n action: 'store',\n help: 'Where to output builder artifacts. Can use [name] placeholder to include contract name in path',\n default: 'out',\n })\n\n parser.add_argument('--debug-level', {\n default: defaultPuyaOptions.debugLevel.toString(),\n choices: ['0', '1', '2'],\n help: 'Output debug information level, 0 = none, 1 = debug, 2 = reserved for future use',\n })\n parser.add_argument('--optimization-level', {\n default: defaultPuyaOptions.optimizationLevel.toString(),\n choices: ['0', '1', '2'],\n help: 'Set optimization level of output TEAL / AVM bytecode, 0 = none, 1 = normal, 2 = intensive',\n })\n parser.add_argument('--treat-warnings-as-errors', {\n action: BooleanOptionalAction,\n default: defaultPuyaOptions.treatWarningsAsErrors,\n help: 'Report and treat all warnings emitted by the compiler as errors',\n })\n parser.add_argument('--target-avm-version', {\n default: defaultPuyaOptions.targetAvmVersion.toString(),\n choices: ['10', '11', '12', '13'],\n help: 'Select the targeted AVM version for compilation output',\n })\n\n parser.add_argument('--cli-template-definitions', {\n metavar: 'VAR=VALUE',\n nargs: '+',\n help: 'Define template vars for use when assembling via --output-bytecode, should be specified without the prefix (see --template-vars-prefix)',\n })\n\n parser.add_argument('--validate-abi-args', {\n action: BooleanOptionalAction,\n default: defaultPuyaOptions.validateAbiArgs,\n help: 'Validates ABI transaction arguments by ensuring they are encoded correctly',\n })\n\n parser.add_argument('--validate-abi-return', {\n action: BooleanOptionalAction,\n default: defaultPuyaOptions.validateAbiReturn,\n help: \"Validates encoding of ABI return values when using convertBytes with 'log' `prefix` option, arc4.abiCall, and strongly typed contract to contract calls\",\n })\n\n parser.add_argument('--template-vars-prefix', {\n help: 'Define the prefix to use with --template-var',\n default: defaultPuyaOptions.templateVarsPrefix,\n })\n\n addEnumArg(parser, {\n name: '--locals-coalescing-strategy',\n enumType: LocalsCoalescingStrategy,\n help: 'Strategy choice for out-of-ssa local variable coalescing. The best choice for your app is best determined through experimentation',\n default: defaultPuyaOptions.localsCoalescingStrategy,\n })\n\n parser.add_argument('paths', {\n metavar: 'PATHS',\n nargs: '*',\n help: 'The path, or paths to search for compatible .algo.ts files',\n default: ['.'],\n })\n\n parser.add_argument('--puya-path', {\n help: 'The path to Puya. If not provided, puya-ts will automatically download the appropriate binary for your system',\n })\n}\n\nexport async function buildCommand(args: BuildCommandArgs) {\n const logCtx = LoggingContext.create()\n return logCtx.run(async () => {\n logger.configure([new ConsoleLogSink(args.log_level, AbsolutePath.resolve({ path: '' }))])\n try {\n const filePaths = processInputPaths({ paths: args.paths, outDir: args.out_dir })\n\n await compile(\n new CompileOptions({\n filePaths,\n outputAwst: args.output_awst,\n outputAwstJson: args.output_awst_json,\n\n skipVersionCheck: args.skip_version_check,\n dryRun: args.dry_run,\n logLevel: args.log_level,\n\n outputTeal: args.output_teal,\n outputArc32: args.output_arc32,\n outputArc56: args.output_arc56,\n outputClient: args.output_client,\n outputSsaIr: args.output_ssa_ir,\n outputOptimizationIr: args.output_optimization_ir,\n outputDestructuredIr: args.output_destructured_ir,\n outputMemoryIr: args.output_memory_ir,\n outputBytecode: args.output_bytecode,\n outputSourceMap: args.output_source_map,\n outputAssemblyReport: args.output_assembly_report,\n debugLevel: convertInt(args.debug_level),\n optimizationLevel: convertInt(args.optimization_level),\n treatWarningsAsErrors: args.treat_warnings_as_errors,\n targetAvmVersion: convertInt(args.target_avm_version),\n cliTemplateDefinitions: Object.fromEntries(args.cli_template_definitions?.map(parseCliTemplateVar) ?? []),\n templateVarsPrefix: args.template_vars_prefix,\n localsCoalescingStrategy: args.locals_coalescing_strategy,\n customPuyaPath: args.puya_path,\n validateAbiArgs: args.validate_abi_args,\n validateAbiReturn: args.validate_abi_return,\n }),\n )\n logCtx.exitIfErrors()\n } catch (e) {\n if (e instanceof Error) {\n logger.error(e)\n } else {\n throw e\n }\n }\n })\n}\n","import { ArgumentParser } from 'argparse'\nimport { appVersion } from './app-version'\nimport type { BuildCommandArgs } from './build-command'\nimport { addBuildCommand, buildCommand } from './build-command'\nimport { checkNodeVersion } from './check-node-version'\n\nexport async function parseCliArguments() {\n checkNodeVersion()\n const parser = new ArgumentParser({\n prog: 'puya-ts',\n })\n\n parser.add_argument('--version', {\n action: 'store_const',\n help: 'Show application version',\n const: 'version',\n dest: 'command',\n })\n parser.set_defaults({\n command: 'build',\n })\n addBuildCommand(parser)\n const result: PuyaTsCommand = parser.parse_args()\n switch (result.command) {\n case 'build':\n await buildCommand(result)\n break\n case 'version':\n /* eslint-disable-next-line no-console */\n console.log(appVersion())\n break\n default:\n parser.print_help()\n break\n }\n}\n\ntype PuyaTsCommand = NoCommandArgs | BuildCommandArgs | VersionCommand\ninterface NoCommandArgs {\n command: 'none'\n}\ninterface VersionCommand {\n command: 'version'\n}\n","import { parseCliArguments } from './cli/parse'\n\nvoid parseCliArguments()\n"],"names":[],"mappings":"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"}
package/clientgen.d.ts CHANGED
@@ -1 +1 @@
1
- import './util/polyfills';
1
+ export {};
@@ -1,9 +1,9 @@
1
- import { a as writeARC4Clients } from './arc4-clientgen-Dd2qW-1d.js';
2
- import { a1 as PuyaService, a2 as deserializeAndLog, Y as registerPTypes, a3 as createTsProgram, a4 as buildAwst, a5 as validateAwst, Z as typeRegistry } from './options-sBHEIhey.js';
3
- import { a as appVersion } from './semver-T4bO0VEo.js';
4
- import { ck as mkDirIfNotExists, L as LogLevel, a as LoggingContext, l as logger } from './contract-class-model-cK8F4WVM.js';
1
+ import { a as writeARC4Clients } from './arc4-clientgen-qBTlCOIm.js';
2
+ import { a1 as PuyaService, a2 as deserializeAndLog, Y as registerPTypes, a3 as createTsProgram, a4 as buildAwst, a5 as validateAwst, Z as typeRegistry } from './options-DD9MApH4.js';
3
+ import { a as appVersion } from './semver-B0p_0XuH.js';
4
+ import { ck as mkDirIfNotExists, L as LogLevel, a as LoggingContext, l as logger } from './contract-class-model-BZeEDGw0.js';
5
5
  import ts from 'typescript';
6
- import { r as resolvePuyaPath } from './resolve-puya-path-Bgh6DuRP.js';
6
+ import { r as resolvePuyaPath } from './resolve-puya-path-Ba54kz9o.js';
7
7
 
8
8
  function buildCompilationSetMapping({ awst, inputPaths, compilationSet, }) {
9
9
  const setIds = new Set(compilationSet.compilationOutputSet.map((s) => s.id));
@@ -110,4 +110,4 @@ async function compile(options, puyaService) {
110
110
  }
111
111
 
112
112
  export { compile as c };
113
- //# sourceMappingURL=compile-DGk1ftqu.js.map
113
+ //# sourceMappingURL=compile-ycpMcgmJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile-DGk1ftqu.js","sources":["../src/puya/build-compilation-set-mapping.ts","../src/puya/index.ts","../src/compile.ts"],"sourcesContent":["import type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport type { AlgoFile, CompilationSetMapping } from '../options'\nimport { mkDirIfNotExists } from '../util'\n\nexport function buildCompilationSetMapping({\n awst,\n inputPaths,\n compilationSet,\n}: {\n awst: AWST[]\n inputPaths: AlgoFile[]\n compilationSet: CompilationSet\n}): CompilationSetMapping {\n const setIds = new Set(compilationSet.compilationOutputSet.map((s) => s.id))\n\n return awst.reduce((acc, cur) => {\n if (setIds.has(cur.id.toString())) {\n const matchedPath = inputPaths.find((p) => cur.sourceLocation.file && p.sourceFile.equals(cur.sourceLocation.file))\n if (matchedPath) {\n mkDirIfNotExists(matchedPath.outDir.toString())\n acc[cur.id.toString()] = matchedPath.outDir.toString()\n }\n }\n return acc\n }, {} as CompilationSetMapping)\n}\n","import ts from 'typescript'\nimport type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport { LogLevel } from '../logger'\nimport type { CompileOptions } from '../options'\nimport type { SourceFileMapping } from '../parser'\nimport type { AbsolutePath } from '../util/absolute-path'\nimport { buildCompilationSetMapping } from './build-compilation-set-mapping'\nimport { deserializeAndLog } from './log-deserializer'\nimport { PuyaService } from './puya-service'\nimport { resolvePuyaPath } from './resolve-puya-path'\n\nexport async function puyaCompile({\n moduleAwst,\n programDirectory,\n sourceFiles,\n options,\n compilationSet,\n puyaService,\n}: {\n moduleAwst: AWST[]\n programDirectory: AbsolutePath\n sourceFiles: SourceFileMapping\n options: CompileOptions\n compilationSet: CompilationSet\n puyaService?: PuyaService\n}) {\n const puyaPath = await resolvePuyaPath(options)\n const localPuyaService = puyaService ?? new PuyaService({ puyaPath })\n const puyaOptions = options.buildPuyaOptions(\n buildCompilationSetMapping({\n awst: moduleAwst,\n inputPaths: options.filePaths,\n compilationSet,\n }),\n )\n\n const response = await localPuyaService.compile({\n awst: moduleAwst,\n options: puyaOptions,\n base_path: programDirectory.toString(),\n log_level: getPuyaLogLevel(options.logLevel),\n source_annotations: getSourceFileContents(sourceFiles),\n })\n // Shutdown service if we created it locally\n if (puyaService === undefined) await localPuyaService.shutdown()\n for (const log of response.logs) {\n deserializeAndLog(log)\n }\n\n return response\n}\n\nfunction getPuyaLogLevel(logLevel: LogLevel): string {\n switch (logLevel) {\n case LogLevel.Debug:\n return 'debug'\n case LogLevel.Info:\n return 'info'\n case LogLevel.Warning:\n return 'warning'\n case LogLevel.Error:\n return 'error'\n case LogLevel.Critical:\n return 'critical'\n }\n}\nfunction getSourceFileContents(sourceFiles: SourceFileMapping) {\n return Object.fromEntries(\n Object.entries(sourceFiles).map(([key, value]) => {\n const source = ts.isSourceFile(value) ? value.getFullText().replace(/\\r\\n/g, '\\n').split(/\\n/g) : value\n return [key, source] as const\n }),\n )\n}\n","import type ts from 'typescript'\nimport { writeARC4Clients } from './arc4-clientgen'\nimport type { AWST } from './awst/nodes'\nimport { validateAwst } from './awst/validation'\nimport { buildAwst } from './awst_build'\nimport { type CompilationSet } from './awst_build/models/contract-class-model'\nimport { registerPTypes } from './awst_build/ptypes/register'\nimport { typeRegistry } from './awst_build/type-registry'\nimport { appVersion } from './cli/app-version'\nimport { logger, LoggingContext } from './logger'\nimport type { CompileOptions } from './options'\nimport { createTsProgram } from './parser'\nimport { puyaCompile } from './puya'\nimport type { PuyaService } from './puya/puya-service'\nimport type { AbsolutePath } from './util/absolute-path'\n\nexport type CompileResult = {\n programDirectory: AbsolutePath\n awst?: AWST[]\n ast?: Record<string, ts.SourceFile>\n compilationSet?: CompilationSet\n}\n\nexport async function compile(options: CompileOptions, puyaService?: PuyaService): Promise<CompileResult> {\n const loggerCtx = LoggingContext.current\n if (options.treatWarningsAsErrors) loggerCtx.treatWarningsAsErrors = true\n\n registerPTypes(typeRegistry)\n logger.info(undefined, appVersion({ withAVMVersion: false }))\n const programResult = createTsProgram(options)\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to parse errors')\n return {\n programDirectory: programResult.programDirectory,\n ast: programResult.sourceFiles,\n }\n }\n const { moduleAwst, compilationSet } = buildAwst(programResult, options)\n validateAwst(moduleAwst)\n\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to errors')\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n }\n if (!options.dryRun) {\n const compileResult = await puyaCompile({\n options,\n moduleAwst,\n programDirectory: programResult.programDirectory,\n compilationSet,\n sourceFiles: programResult.sourceFiles,\n puyaService,\n })\n\n if (options.outputClient) {\n await writeARC4Clients(compilationSet, options.filePaths, compileResult.arc56)\n }\n }\n\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile-ycpMcgmJ.js","sources":["../src/puya/build-compilation-set-mapping.ts","../src/puya/index.ts","../src/compile.ts"],"sourcesContent":["import type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport type { AlgoFile, CompilationSetMapping } from '../options'\nimport { mkDirIfNotExists } from '../util'\n\nexport function buildCompilationSetMapping({\n awst,\n inputPaths,\n compilationSet,\n}: {\n awst: AWST[]\n inputPaths: AlgoFile[]\n compilationSet: CompilationSet\n}): CompilationSetMapping {\n const setIds = new Set(compilationSet.compilationOutputSet.map((s) => s.id))\n\n return awst.reduce((acc, cur) => {\n if (setIds.has(cur.id.toString())) {\n const matchedPath = inputPaths.find((p) => cur.sourceLocation.file && p.sourceFile.equals(cur.sourceLocation.file))\n if (matchedPath) {\n mkDirIfNotExists(matchedPath.outDir.toString())\n acc[cur.id.toString()] = matchedPath.outDir.toString()\n }\n }\n return acc\n }, {} as CompilationSetMapping)\n}\n","import ts from 'typescript'\nimport type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport { LogLevel } from '../logger'\nimport type { CompileOptions } from '../options'\nimport type { SourceFileMapping } from '../parser'\nimport type { AbsolutePath } from '../util/absolute-path'\nimport { buildCompilationSetMapping } from './build-compilation-set-mapping'\nimport { deserializeAndLog } from './log-deserializer'\nimport { PuyaService } from './puya-service'\nimport { resolvePuyaPath } from './resolve-puya-path'\n\nexport async function puyaCompile({\n moduleAwst,\n programDirectory,\n sourceFiles,\n options,\n compilationSet,\n puyaService,\n}: {\n moduleAwst: AWST[]\n programDirectory: AbsolutePath\n sourceFiles: SourceFileMapping\n options: CompileOptions\n compilationSet: CompilationSet\n puyaService?: PuyaService\n}) {\n const puyaPath = await resolvePuyaPath(options)\n const localPuyaService = puyaService ?? new PuyaService({ puyaPath })\n const puyaOptions = options.buildPuyaOptions(\n buildCompilationSetMapping({\n awst: moduleAwst,\n inputPaths: options.filePaths,\n compilationSet,\n }),\n )\n\n const response = await localPuyaService.compile({\n awst: moduleAwst,\n options: puyaOptions,\n base_path: programDirectory.toString(),\n log_level: getPuyaLogLevel(options.logLevel),\n source_annotations: getSourceFileContents(sourceFiles),\n })\n // Shutdown service if we created it locally\n if (puyaService === undefined) await localPuyaService.shutdown()\n for (const log of response.logs) {\n deserializeAndLog(log)\n }\n\n return response\n}\n\nfunction getPuyaLogLevel(logLevel: LogLevel): string {\n switch (logLevel) {\n case LogLevel.Debug:\n return 'debug'\n case LogLevel.Info:\n return 'info'\n case LogLevel.Warning:\n return 'warning'\n case LogLevel.Error:\n return 'error'\n case LogLevel.Critical:\n return 'critical'\n }\n}\nfunction getSourceFileContents(sourceFiles: SourceFileMapping) {\n return Object.fromEntries(\n Object.entries(sourceFiles).map(([key, value]) => {\n const source = ts.isSourceFile(value) ? value.getFullText().replace(/\\r\\n/g, '\\n').split(/\\n/g) : value\n return [key, source] as const\n }),\n )\n}\n","import type ts from 'typescript'\nimport { writeARC4Clients } from './arc4-clientgen'\nimport type { AWST } from './awst/nodes'\nimport { validateAwst } from './awst/validation'\nimport { buildAwst } from './awst_build'\nimport { type CompilationSet } from './awst_build/models/contract-class-model'\nimport { registerPTypes } from './awst_build/ptypes/register'\nimport { typeRegistry } from './awst_build/type-registry'\nimport { appVersion } from './cli/app-version'\nimport { logger, LoggingContext } from './logger'\nimport type { CompileOptions } from './options'\nimport { createTsProgram } from './parser'\nimport { puyaCompile } from './puya'\nimport type { PuyaService } from './puya/puya-service'\nimport type { AbsolutePath } from './util/absolute-path'\n\nexport type CompileResult = {\n programDirectory: AbsolutePath\n awst?: AWST[]\n ast?: Record<string, ts.SourceFile>\n compilationSet?: CompilationSet\n}\n\nexport async function compile(options: CompileOptions, puyaService?: PuyaService): Promise<CompileResult> {\n const loggerCtx = LoggingContext.current\n if (options.treatWarningsAsErrors) loggerCtx.treatWarningsAsErrors = true\n\n registerPTypes(typeRegistry)\n logger.info(undefined, appVersion({ withAVMVersion: false }))\n const programResult = createTsProgram(options)\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to parse errors')\n return {\n programDirectory: programResult.programDirectory,\n ast: programResult.sourceFiles,\n }\n }\n const { moduleAwst, compilationSet } = buildAwst(programResult, options)\n validateAwst(moduleAwst)\n\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to errors')\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n }\n if (!options.dryRun) {\n const compileResult = await puyaCompile({\n options,\n moduleAwst,\n programDirectory: programResult.programDirectory,\n compilationSet,\n sourceFiles: programResult.sourceFiles,\n puyaService,\n })\n\n if (options.outputClient) {\n await writeARC4Clients(compilationSet, options.filePaths, compileResult.arc56)\n }\n }\n\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n}\n"],"names":[],"mappings":"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"}
package/constants.d.ts CHANGED
@@ -68,7 +68,7 @@ export declare const Constants: {
68
68
  readonly supportedAvmVersions: readonly [10n, 11n, 12n, 13n];
69
69
  readonly targetedPuyaVersion: "5.9.0-rc.1";
70
70
  readonly puyaGithubRepo: "algorandfoundation/puya";
71
- readonly minNodeVersion: "20.11.1";
71
+ readonly minNodeVersion: "22.11.0";
72
72
  readonly languageServerSource: "puyats";
73
73
  };
74
74
  export type SupportedAvmVersion = (typeof Constants.supportedAvmVersions)[number];