@helios-lang/contract-utils 0.3.23 → 0.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/package.json +2 -2
- package/src/artifacts/ChildArtifactWriter.js +28 -24
- package/src/cli/config.mjs +41 -13
- package/src/cli/import-key.mjs +56 -0
- package/src/compiler/CompilerLib_v0_16.js +7 -2
- package/src/compiler/CompilerLib_v0_17.js +6 -2
- package/src/context/CacheEntry.js +7 -0
- package/src/context/ContractContextCache.js +9 -2
- package/src/context/DagCompiler.js +34 -0
- package/src/context/compilation.js +16 -0
- package/src/helios.mjs +6 -1
- package/src/index.js +3 -1
- package/types/artifacts/ChildArtifactWriter.d.ts.map +1 -1
- package/types/cli/config.d.mts +5 -1
- package/types/cli/config.d.mts.map +1 -1
- package/types/compiler/CompilerLib_v0_17.d.ts +2 -2
- package/types/compiler/CompilerLib_v0_17.d.ts.map +1 -1
- package/types/context/CacheEntry.d.ts +4 -0
- package/types/context/CacheEntry.d.ts.map +1 -1
- package/types/context/ContractContextCache.d.ts.map +1 -1
- package/types/context/DagCompiler.d.ts.map +1 -1
- package/types/context/compilation.d.ts +7 -0
- package/types/context/compilation.d.ts.map +1 -0
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -26,7 +26,16 @@ Credentials are stored in a versioned `debugger.json` file:
|
|
|
26
26
|
|
|
27
27
|
Set `HELIOS_CONFIG_HOME` to override the directory. Unix directories/files use modes 700/600. Windows uses a current-user-only ACL. The JSON has `{version:1,selected,profiles}`, where `selected` is a project ID and `profiles` maps project IDs to `{id,name,created_at,apiKey,wallet,endpoint}`. Names need not be unique. Re-running login refreshes that wallet's snapshot and removes revoked projects while preserving other wallets. It keeps the selected project when available and otherwise selects the oldest returned project. No signatures, browser session cookies, or temporary login tokens are persisted.
|
|
28
28
|
|
|
29
|
-
API keys
|
|
29
|
+
Project API keys can be shared with collaborators. They authorize capture uploads and reads for their project. The project page in the Console always displays its key in a yellow box.
|
|
30
|
+
|
|
31
|
+
To import a key from another project owner without wallet login:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
helios import-key hdbg_<key-from-project-page>
|
|
35
|
+
helios compile --project "Shared project" --help
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Import validates the key, resolves the project name automatically, and merges it into the same configuration used by compilation and VS Code. Reimporting updates that project without duplicating it or removing other projects. Wallet login preserves imported projects belonging to other wallets.
|
|
30
39
|
|
|
31
40
|
For development, run `pnpm test`. `node scripts/check-global-cli.mjs` packs the package, installs it into an isolated npm global prefix, and checks executable discovery and equivalent compilation. The CLI portability workflow runs these checks on Windows, macOS, and Linux with Node 22 and 24. Publish the package only after the website and Worker with CLI-login support have been deployed.
|
|
32
41
|
|
|
@@ -52,3 +61,9 @@ The API key is intentionally embedded in generated bundles, including browser bu
|
|
|
52
61
|
`helios wallet create --network preprod` prints JSON containing a cryptographically random 24-word recovery phrase and its base address. It does not contact a service. Supported networks are `preprod` (default), `preview`, and `mainnet`.
|
|
53
62
|
|
|
54
63
|
Use `helios wallet create --network preprod --out wallet.json` to write a new private file instead of printing the phrase. Existing files are never overwritten. The output phrase can be pasted into a demo’s ignored `.env.local` file.
|
|
64
|
+
|
|
65
|
+
### Compilation context for captured failures
|
|
66
|
+
|
|
67
|
+
`makeContractContextBuilder().build({isMainnet, parameters})` attaches credential-free `$compilation` metadata to validator programs and alternatives, even without `--project`. It records applicable parameter overrides as UPLC Data CBOR hex, the compiler/network, validator types/indices and exact dependency-hash inputs for both compilation passes. Source defaults remain in source. Caches and generated artifacts preserve this information without changing script CBOR.
|
|
68
|
+
|
|
69
|
+
To enable parameter-aware capture for an existing deployment, regenerate its JavaScript artifacts with the updated contract-utils **and the original compiler version**, asserting all deployed hashes using `expectedHashes`. Upgrade tx-utils and inject `makeDebuggerService({apiKey})` into the transaction builder as usual. Merely upgrading tx-utils cannot recover build parameters from an older raw-CBOR bundle.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helios-lang/contract-utils",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.25",
|
|
4
4
|
"description": "Convenience and type-safety utilities for using Helios validators from within Typescript",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@helios-lang/compiler-utils": "^0.5.15",
|
|
43
43
|
"@helios-lang/crypto": "0.2.3",
|
|
44
44
|
"@helios-lang/ledger": "^0.7.8",
|
|
45
|
-
"@helios-lang/tx-utils": "^0.6.
|
|
45
|
+
"@helios-lang/tx-utils": "^0.6.42",
|
|
46
46
|
"@helios-lang/type-utils": "^0.3.0",
|
|
47
47
|
"@helios-lang/uplc": "^0.7.15",
|
|
48
48
|
"open": "^10.2.0"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getCompilation } from "../context/compilation.js"
|
|
1
2
|
import { bytesToHex } from "@helios-lang/codec-utils"
|
|
2
3
|
import { makeUplcSourceMap } from "@helios-lang/uplc"
|
|
3
4
|
import { ArtifactWriter } from "./ArtifactWriter.js"
|
|
@@ -99,6 +100,27 @@ export class ChildArtifactWriter extends ArtifactWriter {
|
|
|
99
100
|
throw new Error("unhandled Plutus version")
|
|
100
101
|
}
|
|
101
102
|
|
|
103
|
+
const compilation = getCompilation(program)
|
|
104
|
+
if (compilation) {
|
|
105
|
+
this.writeDeclLine(
|
|
106
|
+
`export declare const $compilation: import("@helios-lang/contract-utils").CompilationContext`
|
|
107
|
+
)
|
|
108
|
+
if (includeDef) {
|
|
109
|
+
this.writeDefLine(
|
|
110
|
+
`export const $compilation = ${JSON.stringify(compilation)}`
|
|
111
|
+
)
|
|
112
|
+
this.writeDefLine(
|
|
113
|
+
`Object.defineProperty(${name}, "$compilation", {value:$compilation})`
|
|
114
|
+
)
|
|
115
|
+
this.writeDefLine(
|
|
116
|
+
`if (${name}.alt) Object.defineProperty(${name}.alt, "$compilation", {value:$compilation})`
|
|
117
|
+
)
|
|
118
|
+
} else {
|
|
119
|
+
this.writeDefLine(
|
|
120
|
+
`export { $compilation } from "./main/index.js"`
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
}
|
|
102
124
|
const debuggerContext =
|
|
103
125
|
/** @type {UplcProgram & {$debugger?: import("../index.js").DebuggerContext}} */ (
|
|
104
126
|
program
|
|
@@ -130,31 +152,13 @@ export class ChildArtifactWriter extends ArtifactWriter {
|
|
|
130
152
|
function stringifyProgram(decoderName, program) {
|
|
131
153
|
const sourceMap = makeUplcSourceMap({ term: program.root })
|
|
132
154
|
|
|
133
|
-
|
|
134
|
-
$
|
|
135
|
-
{
|
|
155
|
+
const base = `/* @__PURE__ */ ${decoderName}(
|
|
156
|
+
"${bytesToHex(program.toCbor())}",
|
|
157
|
+
{
|
|
136
158
|
sourceMap: ${JSON.stringify(sourceMap.toJsonSafe(), undefined, 4).split("\n").join("\n ")}
|
|
137
159
|
}
|
|
138
160
|
)`
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
* @param {string} decoderName
|
|
143
|
-
* @param {UplcProgram | undefined} alt
|
|
144
|
-
* @returns {string}
|
|
145
|
-
*/
|
|
146
|
-
function stringifyAlt(decoderName, alt) {
|
|
147
|
-
if (!alt) {
|
|
148
|
-
return ""
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
const sourceMap = makeUplcSourceMap({ term: alt.root })
|
|
152
|
-
|
|
153
|
-
return `
|
|
154
|
-
alt: /* @__PURE__ */ ${decoderName}(
|
|
155
|
-
"${bytesToHex(alt.toCbor())}",
|
|
156
|
-
{
|
|
157
|
-
sourceMap: ${JSON.stringify(sourceMap.toJsonSafe(), undefined, 4).split("\n").join("\n ")}
|
|
158
|
-
}
|
|
159
|
-
),`
|
|
161
|
+
return program.alt
|
|
162
|
+
? `${base}.withAlt(${stringifyProgram(decoderName, program.alt)})`
|
|
163
|
+
: base
|
|
160
164
|
}
|
package/src/cli/config.mjs
CHANGED
|
@@ -102,11 +102,47 @@ export async function installProjects(
|
|
|
102
102
|
endpoint,
|
|
103
103
|
path = configPath()
|
|
104
104
|
) {
|
|
105
|
+
if (!/^[a-f0-9]{56}$/.test(wallet))
|
|
106
|
+
throw new Error("Invalid wallet response")
|
|
107
|
+
validateProjects(projects)
|
|
108
|
+
const data = await readConfig(path)
|
|
109
|
+
for (const [id, profile] of Object.entries(data.profiles))
|
|
110
|
+
if (profile.wallet === wallet && profile.endpoint === endpoint)
|
|
111
|
+
delete data.profiles[id]
|
|
112
|
+
for (const project of projects)
|
|
113
|
+
data.profiles[project.id] = { ...project, wallet, endpoint }
|
|
114
|
+
if (!data.profiles[data.selected])
|
|
115
|
+
data.selected = [...projects].sort(
|
|
116
|
+
(a, b) => a.created_at - b.created_at || a.id.localeCompare(b.id)
|
|
117
|
+
)[0].id
|
|
118
|
+
return writeConfig(data, path)
|
|
119
|
+
}
|
|
120
|
+
export async function installSharedProject(
|
|
121
|
+
project,
|
|
122
|
+
endpoint,
|
|
123
|
+
path = configPath()
|
|
124
|
+
) {
|
|
125
|
+
validateProjects([project])
|
|
126
|
+
const data = await readConfig(path)
|
|
127
|
+
const previous = data.profiles[project.id]
|
|
128
|
+
if (previous && previous.endpoint !== endpoint)
|
|
129
|
+
throw new Error(
|
|
130
|
+
"Project ID already exists for another debugger service"
|
|
131
|
+
)
|
|
105
132
|
if (
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
133
|
+
previous &&
|
|
134
|
+
previous.apiKey === project.apiKey &&
|
|
135
|
+
previous.name === project.name &&
|
|
136
|
+
previous.created_at === project.created_at
|
|
109
137
|
)
|
|
138
|
+
return { path, alreadyExists: true }
|
|
139
|
+
data.profiles[project.id] = { ...previous, ...project, endpoint }
|
|
140
|
+
if (!data.profiles[data.selected]) data.selected = project.id
|
|
141
|
+
await writeConfig(data, path)
|
|
142
|
+
return { path, alreadyExists: false }
|
|
143
|
+
}
|
|
144
|
+
function validateProjects(projects) {
|
|
145
|
+
if (!Array.isArray(projects) || !projects.length)
|
|
110
146
|
throw new Error("Invalid or empty project response")
|
|
111
147
|
const ids = new Set()
|
|
112
148
|
for (const p of projects) {
|
|
@@ -122,16 +158,8 @@ export async function installProjects(
|
|
|
122
158
|
throw new Error("Invalid project response")
|
|
123
159
|
ids.add(p.id)
|
|
124
160
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if (profile.wallet === wallet && profile.endpoint === endpoint)
|
|
128
|
-
delete data.profiles[id]
|
|
129
|
-
for (const project of projects)
|
|
130
|
-
data.profiles[project.id] = { ...project, wallet, endpoint }
|
|
131
|
-
if (!data.profiles[data.selected])
|
|
132
|
-
data.selected = [...projects].sort(
|
|
133
|
-
(a, b) => a.created_at - b.created_at || a.id.localeCompare(b.id)
|
|
134
|
-
)[0].id
|
|
161
|
+
}
|
|
162
|
+
async function writeConfig(data, path) {
|
|
135
163
|
const dir = dirname(path)
|
|
136
164
|
const existed = await inspect(dir, true)
|
|
137
165
|
await mkdir(dir, { recursive: true, mode: 0o700 })
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { installSharedProject } from "./config.mjs"
|
|
2
|
+
|
|
3
|
+
export async function importKey(
|
|
4
|
+
apiKey,
|
|
5
|
+
{
|
|
6
|
+
endpoint = "https://debugger.helios-lang.io",
|
|
7
|
+
fetchImpl = fetch,
|
|
8
|
+
save = installSharedProject,
|
|
9
|
+
log = console.log
|
|
10
|
+
} = {}
|
|
11
|
+
) {
|
|
12
|
+
if (typeof apiKey !== "string" || !/^hdbg_[a-f0-9]{64}$/.test(apiKey))
|
|
13
|
+
throw new Error(
|
|
14
|
+
"Invalid debugger API key. Copy the full key from the project's Console page."
|
|
15
|
+
)
|
|
16
|
+
const origin = new URL(endpoint)
|
|
17
|
+
if (
|
|
18
|
+
origin.protocol !== "https:" ||
|
|
19
|
+
origin.username ||
|
|
20
|
+
origin.password ||
|
|
21
|
+
origin.pathname !== "/" ||
|
|
22
|
+
origin.search ||
|
|
23
|
+
origin.hash
|
|
24
|
+
)
|
|
25
|
+
throw new Error("Debugger endpoint must be an HTTPS origin")
|
|
26
|
+
let response
|
|
27
|
+
try {
|
|
28
|
+
response = await fetchImpl(origin.origin + "/v1/project", {
|
|
29
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
30
|
+
redirect: "error",
|
|
31
|
+
signal: AbortSignal.timeout(10000)
|
|
32
|
+
})
|
|
33
|
+
} catch {
|
|
34
|
+
throw new Error(
|
|
35
|
+
"Could not reach the debugger service. Check your connection and try again."
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
if (response.status === 401)
|
|
39
|
+
throw new Error(
|
|
40
|
+
"This debugger API key is invalid or revoked. Ask the project owner for an active key."
|
|
41
|
+
)
|
|
42
|
+
if (!response.ok)
|
|
43
|
+
throw new Error(
|
|
44
|
+
`Debugger project lookup failed (HTTP ${response.status}). Try again later.`
|
|
45
|
+
)
|
|
46
|
+
const { id, name, created_at } = await response.json()
|
|
47
|
+
const { path, alreadyExists } = await save(
|
|
48
|
+
{ id, name, created_at, apiKey },
|
|
49
|
+
origin.origin
|
|
50
|
+
)
|
|
51
|
+
if (alreadyExists) log("Key already exists")
|
|
52
|
+
else
|
|
53
|
+
log(`Imported project ${JSON.stringify(name)} into ${path}.
|
|
54
|
+
Compile with helios compile --project ${JSON.stringify(name)} (or hl2ts --project ${JSON.stringify(name)}).`)
|
|
55
|
+
return { id, name, created_at }
|
|
56
|
+
}
|
|
@@ -202,7 +202,7 @@ class CompilerLib_v0_16 {
|
|
|
202
202
|
}
|
|
203
203
|
)
|
|
204
204
|
|
|
205
|
-
this.setParameters(program, options.parameters)
|
|
205
|
+
const parameters = this.setParameters(program, options.parameters)
|
|
206
206
|
|
|
207
207
|
const extra = this.genExtraIRDefs(
|
|
208
208
|
name,
|
|
@@ -228,6 +228,7 @@ class CompilerLib_v0_16 {
|
|
|
228
228
|
const cborHex = bytesToHex(uplc.toCbor())
|
|
229
229
|
|
|
230
230
|
return {
|
|
231
|
+
parameters,
|
|
231
232
|
cborHex,
|
|
232
233
|
plutusVersion: "PlutusScriptV2"
|
|
233
234
|
}
|
|
@@ -605,8 +606,10 @@ class CompilerLib_v0_16 {
|
|
|
605
606
|
* @param {Record<string, UplcData> | undefined} parameters
|
|
606
607
|
*/
|
|
607
608
|
setParameters(program, parameters) {
|
|
609
|
+
/** @type {Record<string,string>} */
|
|
610
|
+
const applied = {}
|
|
608
611
|
if (!parameters) {
|
|
609
|
-
return
|
|
612
|
+
return applied
|
|
610
613
|
}
|
|
611
614
|
|
|
612
615
|
const paramTypes = program.paramTypes
|
|
@@ -614,7 +617,9 @@ class CompilerLib_v0_16 {
|
|
|
614
617
|
Object.entries(parameters).forEach(([key, value]) => {
|
|
615
618
|
if (key in paramTypes) {
|
|
616
619
|
program.changeParamSafe(key, value)
|
|
620
|
+
applied[key] = bytesToHex(value.toCbor())
|
|
617
621
|
}
|
|
618
622
|
})
|
|
623
|
+
return applied
|
|
619
624
|
}
|
|
620
625
|
}
|
|
@@ -10,7 +10,7 @@ import { makeUplcSourceMap } from "@helios-lang/uplc"
|
|
|
10
10
|
* @typedef {{
|
|
11
11
|
* name: string
|
|
12
12
|
* currentScriptIndex: number | undefined
|
|
13
|
-
* changeParam(key: string, value: UplcData):
|
|
13
|
+
* changeParam(key: string, value: UplcData): boolean
|
|
14
14
|
* compile(options: {
|
|
15
15
|
* optimize?: boolean,
|
|
16
16
|
* dependsOnOwnHash?: boolean,
|
|
@@ -83,9 +83,12 @@ class CompilerLib_v0_17 {
|
|
|
83
83
|
throwCompilerErrors: true
|
|
84
84
|
})
|
|
85
85
|
|
|
86
|
+
/** @type {Record<string,string>} */
|
|
87
|
+
const parameters = {}
|
|
86
88
|
if (options.parameters) {
|
|
87
89
|
Object.entries(options.parameters).forEach(([key, value]) => {
|
|
88
|
-
program.changeParam(key, value)
|
|
90
|
+
if (program.changeParam(key, value))
|
|
91
|
+
parameters[key] = bytesToHex(value.toCbor())
|
|
89
92
|
})
|
|
90
93
|
}
|
|
91
94
|
|
|
@@ -158,6 +161,7 @@ class CompilerLib_v0_17 {
|
|
|
158
161
|
const sourceMap = makeUplcSourceMap({ term: uplc.root })
|
|
159
162
|
|
|
160
163
|
return {
|
|
164
|
+
parameters,
|
|
161
165
|
cborHex: bytesToHex(uplc.toCbor()),
|
|
162
166
|
plutusVersion: uplc.plutusVersion,
|
|
163
167
|
sourceMap: sourceMap.toJsonSafe(),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { attachCompilation, getCompilation } from "./compilation.js"
|
|
1
2
|
import { bytesToHex } from "@helios-lang/codec-utils"
|
|
2
3
|
import {
|
|
3
4
|
makeMintingPolicyHash,
|
|
@@ -33,6 +34,7 @@ import { makeCast } from "../cast/Cast.js"
|
|
|
33
34
|
* unoptimizedCborHex?: string
|
|
34
35
|
* unoptimizedIr?: string
|
|
35
36
|
* unoptimizedSourceMap?: UplcSourceMapJsonSafe
|
|
37
|
+
* compilation?: import("./compilation.js").CompilationContext
|
|
36
38
|
* optimizedCborHex: string
|
|
37
39
|
* optimizedIr?: string
|
|
38
40
|
* optimizedSourceMap?: UplcSourceMapJsonSafe
|
|
@@ -48,6 +50,7 @@ import { makeCast } from "../cast/Cast.js"
|
|
|
48
50
|
* unoptimizedCborHex?: string
|
|
49
51
|
* unoptimizedIr?: string
|
|
50
52
|
* unoptimizedSourceMap?: UplcSourceMapJsonSafe
|
|
53
|
+
* compilation?: import("./compilation.js").CompilationContext
|
|
51
54
|
* optimizedCborHex: string
|
|
52
55
|
* optimizedIr?: string
|
|
53
56
|
* optimizedSourceMap?: UplcSourceMapJsonSafe
|
|
@@ -145,6 +148,7 @@ export function cacheEntryToJsonSafe(entry) {
|
|
|
145
148
|
const program = /** @type {any} */ (context.program)
|
|
146
149
|
|
|
147
150
|
resValidators[name] = {
|
|
151
|
+
compilation: getCompilation(program),
|
|
148
152
|
purpose: purpose,
|
|
149
153
|
bytes: hash.bytes,
|
|
150
154
|
optimizedCborHex: bytesToHex(program.toCbor()),
|
|
@@ -171,6 +175,7 @@ export function cacheEntryToJsonSafe(entry) {
|
|
|
171
175
|
const userFunc = entry.userFuncs[name]
|
|
172
176
|
|
|
173
177
|
resUserFuncs[name] = {
|
|
178
|
+
compilation: getCompilation(userFunc),
|
|
174
179
|
optimizedCborHex: bytesToHex(userFunc.toCbor()),
|
|
175
180
|
unoptimizedCborHex: /** @type {UplcProgramV2} */ (userFunc).alt
|
|
176
181
|
? bytesToHex(
|
|
@@ -247,6 +252,7 @@ export function cacheEntryFromJson(entry) {
|
|
|
247
252
|
}
|
|
248
253
|
}
|
|
249
254
|
|
|
255
|
+
attachCompilation(program, props.compilation)
|
|
250
256
|
let redeemer = makeCast(props.redeemer, props.castConfig)
|
|
251
257
|
|
|
252
258
|
switch (props.purpose) {
|
|
@@ -317,6 +323,7 @@ export function cacheEntryFromJson(entry) {
|
|
|
317
323
|
throw new Error("unhandled Plutus version")
|
|
318
324
|
}
|
|
319
325
|
}
|
|
326
|
+
attachCompilation(program, props.compilation)
|
|
320
327
|
res.userFuncs[name] = program
|
|
321
328
|
}
|
|
322
329
|
|
|
@@ -74,6 +74,7 @@ class ContractContextCache {
|
|
|
74
74
|
genCacheKey(props) {
|
|
75
75
|
if (this.explicitCache) {
|
|
76
76
|
const obj = {
|
|
77
|
+
compilationMetadataVersion: 1,
|
|
77
78
|
version: props.version,
|
|
78
79
|
debug: props.debug,
|
|
79
80
|
isMainnet: props.isMainnet,
|
|
@@ -85,7 +86,7 @@ class ContractContextCache {
|
|
|
85
86
|
.map((k) => props.modules[k].$sourceCode),
|
|
86
87
|
parameters: Object.keys(props.parameters)
|
|
87
88
|
.sort()
|
|
88
|
-
.map((k) => props.parameters[k].toSchemaJson())
|
|
89
|
+
.map((k) => [k, props.parameters[k].toSchemaJson()])
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
// TODO: if this hashing method is slow fall back to system defined hashing
|
|
@@ -101,7 +102,13 @@ class ContractContextCache {
|
|
|
101
102
|
* @param {CacheEntryJson[]} json
|
|
102
103
|
*/
|
|
103
104
|
load(json) {
|
|
104
|
-
this.positionalCache = json.
|
|
105
|
+
this.positionalCache = json.every((entry) =>
|
|
106
|
+
Object.values(entry.validators).every(
|
|
107
|
+
(v) => v.compilation?.version === 1
|
|
108
|
+
)
|
|
109
|
+
)
|
|
110
|
+
? json.map(cacheEntryFromJson)
|
|
111
|
+
: []
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { attachCompilation, getCompilation } from "./compilation.js"
|
|
1
2
|
import { bytesToHex } from "@helios-lang/codec-utils"
|
|
2
3
|
import {
|
|
3
4
|
makeMintingPolicyHash,
|
|
@@ -115,6 +116,7 @@ export class DagCompiler {
|
|
|
115
116
|
cborHex: optimizedCborHex,
|
|
116
117
|
plutusVersion: optimPlutusVersion,
|
|
117
118
|
ir: optimIr,
|
|
119
|
+
parameters: appliedParameters,
|
|
118
120
|
sourceMap: optimSourceMap
|
|
119
121
|
} = this.lib.compile(sourceCode, moduleDeps, {
|
|
120
122
|
optimize: true,
|
|
@@ -149,6 +151,26 @@ export class DagCompiler {
|
|
|
149
151
|
}
|
|
150
152
|
}
|
|
151
153
|
|
|
154
|
+
attachCompilation(optimizedProgram, {
|
|
155
|
+
version: 1,
|
|
156
|
+
compilerVersion: this.lib.version,
|
|
157
|
+
validator: { name, purpose: validator.$purpose },
|
|
158
|
+
parameters: appliedParameters,
|
|
159
|
+
isTestnet,
|
|
160
|
+
validatorTypes: Object.fromEntries(
|
|
161
|
+
Object.entries(hashTypes).map(([k, v]) => [k, v.toString()])
|
|
162
|
+
),
|
|
163
|
+
optimized: {
|
|
164
|
+
hashDependencies: { ...hashDepHashes },
|
|
165
|
+
dependsOnOwnHash: validator.$dependsOnOwnHash ?? false,
|
|
166
|
+
validatorIndices
|
|
167
|
+
},
|
|
168
|
+
unoptimized: {
|
|
169
|
+
hashDependencies: { ...hashDepHashes },
|
|
170
|
+
dependsOnOwnHash: validator.$dependsOnOwnHash ?? false,
|
|
171
|
+
validatorIndices
|
|
172
|
+
}
|
|
173
|
+
})
|
|
152
174
|
this.addValidatorToCache(validator, optimizedProgram, ownHash)
|
|
153
175
|
}
|
|
154
176
|
|
|
@@ -174,6 +196,16 @@ export class DagCompiler {
|
|
|
174
196
|
const optimizedProgram = /** @type {any} */ (optimizedHash.context)
|
|
175
197
|
.program
|
|
176
198
|
|
|
199
|
+
const compilation = getCompilation(optimizedProgram)
|
|
200
|
+
if (compilation)
|
|
201
|
+
compilation.unoptimized = {
|
|
202
|
+
hashDependencies: { ...hashDepHashes },
|
|
203
|
+
dependsOnOwnHash: validator.$dependsOnOwnHash ?? false,
|
|
204
|
+
validatorIndices,
|
|
205
|
+
ownHash: validator.$dependsOnOwnHash
|
|
206
|
+
? optimizedHashHex
|
|
207
|
+
: undefined
|
|
208
|
+
}
|
|
177
209
|
// unoptimized compilation (so traces are untouched)
|
|
178
210
|
const {
|
|
179
211
|
cborHex: unoptimizedCborHex,
|
|
@@ -236,6 +268,7 @@ export class DagCompiler {
|
|
|
236
268
|
)
|
|
237
269
|
}
|
|
238
270
|
|
|
271
|
+
attachCompilation(uplc, compilation)
|
|
239
272
|
this.cachedUserFuncs[name] = uplc
|
|
240
273
|
}
|
|
241
274
|
}
|
|
@@ -254,6 +287,7 @@ export class DagCompiler {
|
|
|
254
287
|
/** @type {any} */ (unoptimizedProgram)
|
|
255
288
|
)
|
|
256
289
|
|
|
290
|
+
attachCompilation(completeProgram, compilation)
|
|
257
291
|
this.addValidatorToCache(
|
|
258
292
|
validator,
|
|
259
293
|
completeProgram,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** @typedef {import("@helios-lang/tx-utils").CompilationContext} CompilationContext */
|
|
2
|
+
/** @param {import("@helios-lang/uplc").UplcProgram} program @returns {CompilationContext | undefined} */
|
|
3
|
+
export function getCompilation(program) {
|
|
4
|
+
return /** @type {any} */ (program).$compilation
|
|
5
|
+
}
|
|
6
|
+
/** @param {import("@helios-lang/uplc").UplcProgram} program @param {CompilationContext | undefined} context */
|
|
7
|
+
export function attachCompilation(program, context) {
|
|
8
|
+
if (!context) return
|
|
9
|
+
context = JSON.parse(JSON.stringify(context))
|
|
10
|
+
Object.defineProperty(program, "$compilation", {
|
|
11
|
+
value: context,
|
|
12
|
+
enumerable: false,
|
|
13
|
+
configurable: true
|
|
14
|
+
})
|
|
15
|
+
if (program.alt) attachCompilation(program.alt, context)
|
|
16
|
+
}
|
package/src/helios.mjs
CHANGED
|
@@ -10,6 +10,11 @@ try {
|
|
|
10
10
|
} else if (command === "wallet") {
|
|
11
11
|
const { walletCommand } = await import("./cli/wallet.mjs")
|
|
12
12
|
await walletCommand(args)
|
|
13
|
+
} else if (command === "import-key") {
|
|
14
|
+
if (args.length !== 1)
|
|
15
|
+
throw new Error("Usage: helios import-key <api-key>")
|
|
16
|
+
const { importKey } = await import("./cli/import-key.mjs")
|
|
17
|
+
await importKey(args[0])
|
|
13
18
|
} else if (command === "login") {
|
|
14
19
|
if (args.some((arg) => arg !== "--no-browser"))
|
|
15
20
|
throw new Error("Usage: helios login [--no-browser]")
|
|
@@ -41,7 +46,7 @@ try {
|
|
|
41
46
|
)
|
|
42
47
|
} else if (!command || ["--help", "-h", "help"].includes(command)) {
|
|
43
48
|
console.log(
|
|
44
|
-
"Helios CLI\n\n helios compile [options] Compile contracts (same options as hl2ts)\n helios login [--no-browser] Install project API keys through the Console\n helios wallet create [--network preprod] [--out wallet.json] Generate a wallet offline\n helios --version"
|
|
49
|
+
"Helios CLI\n\n helios compile [options] Compile contracts (same options as hl2ts)\n helios login [--no-browser] Install project API keys through the Console\n helios import-key <api-key> Install a shared project API key\n helios wallet create [--network preprod] [--out wallet.json] Generate a wallet offline\n helios --version"
|
|
45
50
|
)
|
|
46
51
|
} else throw new Error(`Unknown command: ${command}. Run helios --help.`)
|
|
47
52
|
} catch (error) {
|
package/src/index.js
CHANGED
|
@@ -96,6 +96,7 @@ export { genTypes } from "./codegen/TypeSchema.js"
|
|
|
96
96
|
* plutusVersion: PlutusVersion
|
|
97
97
|
* ir?: string
|
|
98
98
|
* sourceMap?: import("@helios-lang/uplc").UplcSourceMapJsonSafe
|
|
99
|
+
* parameters: Record<string,string>
|
|
99
100
|
* }} CompileOutput
|
|
100
101
|
*/
|
|
101
102
|
|
|
@@ -394,4 +395,5 @@ export { genTypes } from "./codegen/TypeSchema.js"
|
|
|
394
395
|
* @typedef {{projectId: string, name: string, apiKey: string, endpoint: string, sources?: Record<string,string>}} DebuggerContext
|
|
395
396
|
*/
|
|
396
397
|
|
|
397
|
-
/** @typedef {
|
|
398
|
+
/** @typedef {import("@helios-lang/tx-utils").CompilationContext} CompilationContext */
|
|
399
|
+
/** @typedef {UplcProgram & {$debugger?: DebuggerContext, $compilation?: CompilationContext}} DebuggerUplcProgram */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildArtifactWriter.d.ts","sourceRoot":"","sources":["../../src/artifacts/ChildArtifactWriter.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChildArtifactWriter.d.ts","sourceRoot":"","sources":["../../src/artifacts/ChildArtifactWriter.js"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;IAaI;;;OAGG;IACH,oBAHW,QAAQ,QACR,MAAM,EAOhB;IArBD;;;OAGG;IACH,iBAFU,QAAQ,CAEZ;IAEN;;;OAGG;IACH,eAFU,MAAM,CAEZ;IAaJ;;OAEG;IACH,iBAFU,OAAO,CAIhB;IAED;;;;;OAKG;IACH,mBALW,MAAM,WACN,WAAW,cACX,OAAO,GACL,mBAAmB,CAiG/B;CACJ;+BA5I8B,qBAAqB;8BAIvB,eAAe;iCADZ,mBAAmB"}
|
package/types/cli/config.d.mts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export function windowsAcl(path: any, directory: any, set?: boolean): Promise<void>;
|
|
2
2
|
export function configPath(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv, home?: string): string;
|
|
3
3
|
export function readConfig(path?: string): Promise<any>;
|
|
4
|
-
export function installProjects(wallet: any, projects: any, endpoint: any, path?: string): Promise<
|
|
4
|
+
export function installProjects(wallet: any, projects: any, endpoint: any, path?: string): Promise<any>;
|
|
5
|
+
export function installSharedProject(project: any, endpoint: any, path?: string): Promise<{
|
|
6
|
+
path: string;
|
|
7
|
+
alreadyExists: boolean;
|
|
8
|
+
}>;
|
|
5
9
|
//# sourceMappingURL=config.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../../src/cli/config.mjs"],"names":[],"mappings":"AAeA,oFAiCC;AACD,uGAcC;AAqBD,wDAaC;AACD,
|
|
1
|
+
{"version":3,"file":"config.d.mts","sourceRoot":"","sources":["../../src/cli/config.mjs"],"names":[],"mappings":"AAeA,oFAiCC;AACD,uGAcC;AAqBD,wDAaC;AACD,wGAoBC;AACD;;;GAuBC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @typedef {{
|
|
7
7
|
* name: string
|
|
8
8
|
* currentScriptIndex: number | undefined
|
|
9
|
-
* changeParam(key: string, value: UplcData):
|
|
9
|
+
* changeParam(key: string, value: UplcData): boolean
|
|
10
10
|
* compile(options: {
|
|
11
11
|
* optimize?: boolean,
|
|
12
12
|
* dependsOnOwnHash?: boolean,
|
|
@@ -25,7 +25,7 @@ export function makeCompilerLib_v0_17(lib: any): CompilerLib;
|
|
|
25
25
|
export type Program = {
|
|
26
26
|
name: string;
|
|
27
27
|
currentScriptIndex: number | undefined;
|
|
28
|
-
changeParam(key: string, value: UplcData):
|
|
28
|
+
changeParam(key: string, value: UplcData): boolean;
|
|
29
29
|
compile(options: {
|
|
30
30
|
optimize?: boolean;
|
|
31
31
|
dependsOnOwnHash?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompilerLib_v0_17.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib_v0_17.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,2CAHW,GAAG,GACD,WAAW,CAIvB;sBArBY;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"CompilerLib_v0_17.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib_v0_17.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,2CAHW,GAAG,GACD,WAAW,CAIvB;sBArBY;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAA;IAClD,OAAO,CAAC,OAAO,EAAE;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACzC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC9B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;KAChE,GAAG,aAAa,CAAA;CAClB;iCAhB4F,aAAa;8BADjE,mBAAmB;mCAAnB,mBAAmB"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* unoptimizedCborHex?: string
|
|
18
18
|
* unoptimizedIr?: string
|
|
19
19
|
* unoptimizedSourceMap?: UplcSourceMapJsonSafe
|
|
20
|
+
* compilation?: import("./compilation.js").CompilationContext
|
|
20
21
|
* optimizedCborHex: string
|
|
21
22
|
* optimizedIr?: string
|
|
22
23
|
* optimizedSourceMap?: UplcSourceMapJsonSafe
|
|
@@ -31,6 +32,7 @@
|
|
|
31
32
|
* unoptimizedCborHex?: string
|
|
32
33
|
* unoptimizedIr?: string
|
|
33
34
|
* unoptimizedSourceMap?: UplcSourceMapJsonSafe
|
|
35
|
+
* compilation?: import("./compilation.js").CompilationContext
|
|
34
36
|
* optimizedCborHex: string
|
|
35
37
|
* optimizedIr?: string
|
|
36
38
|
* optimizedSourceMap?: UplcSourceMapJsonSafe
|
|
@@ -70,6 +72,7 @@ export type CacheEntryValidatorsJson = {
|
|
|
70
72
|
unoptimizedCborHex?: string;
|
|
71
73
|
unoptimizedIr?: string;
|
|
72
74
|
unoptimizedSourceMap?: UplcSourceMapJsonSafe;
|
|
75
|
+
compilation?: import("./compilation.js").CompilationContext;
|
|
73
76
|
optimizedCborHex: string;
|
|
74
77
|
optimizedIr?: string;
|
|
75
78
|
optimizedSourceMap?: UplcSourceMapJsonSafe;
|
|
@@ -84,6 +87,7 @@ export type CacheEntryUserFuncsJson = {
|
|
|
84
87
|
unoptimizedCborHex?: string;
|
|
85
88
|
unoptimizedIr?: string;
|
|
86
89
|
unoptimizedSourceMap?: UplcSourceMapJsonSafe;
|
|
90
|
+
compilation?: import("./compilation.js").CompilationContext;
|
|
87
91
|
optimizedCborHex: string;
|
|
88
92
|
optimizedIr?: string;
|
|
89
93
|
optimizedSourceMap?: UplcSourceMapJsonSafe;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheEntry.d.ts","sourceRoot":"","sources":["../../src/context/CacheEntry.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CacheEntry.d.ts","sourceRoot":"","sources":["../../src/context/CacheEntry.js"],"names":[],"mappings":"AAeA;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AACH,4CAHW,UAAU,GACR,cAAc,CAmI1B;AAED;;;GAGG;AACH,0CAHW,cAAc,GACZ,UAAU,CA6HtB;yBApTY;IACR,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,CAAA;KAAC,CAAA;IACzD,SAAS,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAA;CACzC;uCAIS;IAAC,CAAC,IAAI,EAAE,MAAM,GAAG;QACvB,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAA;QACrD,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,qBAAqB,CAAA;QAC5C,WAAW,CAAC,EAAE,OAAO,kBAAkB,EAAE,kBAAkB,CAAA;QAC3D,gBAAgB,EAAE,MAAM,CAAA;QACxB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,kBAAkB,CAAC,EAAE,qBAAqB,CAAA;QAC1C,aAAa,EAAE,aAAa,CAAA;QAC5B,UAAU,EAAE,UAAU,CAAA;QACtB,KAAK,CAAC,EAAE,UAAU,CAAA;QAClB,QAAQ,EAAE,UAAU,CAAA;KACrB,CAAA;CAAC;sCAIM;IAAC,CAAC,IAAI,EAAE,MAAM,GAAG;QACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,qBAAqB,CAAA;QAC5C,WAAW,CAAC,EAAE,OAAO,kBAAkB,EAAE,kBAAkB,CAAA;QAC3D,gBAAgB,EAAE,MAAM,CAAA;QACxB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,kBAAkB,CAAC,EAAE,qBAAqB,CAAA;QAC1C,aAAa,EAAE,aAAa,CAAA;KAC7B,CAAA;CAAC;6BAIQ;IACR,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,wBAAwB,CAAA;IACpC,SAAS,EAAE,uBAAuB,CAAA;CACnC;iDA/C6F,aAAa;iCADA,mBAAmB;2CAAnB,mBAAmB;mCAAnB,mBAAmB;gCAChC,aAAa;gCAF/E,yBAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractContextCache.d.ts","sourceRoot":"","sources":["../../src/context/ContractContextCache.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ContractContextCache.d.ts","sourceRoot":"","sources":["../../src/context/ContractContextCache.js"],"names":[],"mappings":"AAgKA,wDAA8D;yBAvJjD,OAAO,iBAAiB,EAAE,UAAU;6BACpC,OAAO,iBAAiB,EAAE,cAAc;sCACxC,OAAO,iBAAiB,EAAE,uBAAuB;uCACjD,OAAO,iBAAiB,EAAE,wBAAwB;4BAIlD;IACR,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CACxC;AAfJ;;;;;;;;GAQG;AAEH;;;;;;GAMG;AAEH;IACI;;;;OAIG;IACH,wBAAe;IAEf;;;;OAIG;IACH,eAFU,aAAa,GAAG,SAAS,CAEtB;IAEb;;;;OAIG;IACH,UAAC;IAED;;;OAGG;IACH,gBAAO;IAQP,eAEC;IAED;;;;;;;;;;;OAWG;IACH,mBAVW;QACN,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,OAAO,CAAA;QACd,SAAS,EAAE,OAAO,CAAA;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;QAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;KACrC,GACS,MAAM,CA2BlB;IAED;;OAEG;IACH,WAFW,cAAc,EAAE,QAU1B;IAED;;;OAGG;IACH,SAHW,MAAM,SACN,UAAU,QAQpB;IAED;;;OAGG;IACH,SAHW,MAAM,GACJ,UAAU,GAAG,SAAS,CAuBlC;IAED;;OAEG;IACH,UAFY,cAAc,EAAE,CAI3B;CACJ;8BAxJ4B,yBAAyB;qCAEJ,aAAa;kCAAb,aAAa;8BADrB,mBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DagCompiler.d.ts","sourceRoot":"","sources":["../../src/context/DagCompiler.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DagCompiler.d.ts","sourceRoot":"","sources":["../../src/context/DagCompiler.js"],"names":[],"mappings":"AAsbA;;;GAGG;AACH,iDAHW,eAAe,GACb,MAAM,EAAE,CAsBpB;AAhcD;;;GAGG;AAEH;;;;GAIG;AACH;;;;;;;GAOG;AAEH;;GAEG;AACH;IA6BI;;;OAGG;IACH,iBAHW,WAAW,UACX,iBAAiB,EAO3B;IArCD;;;;OAIG;IACH,qBAAG;IAEH;;;;OAIG;IACH,wBAAM;IAEN;;;;OAIG;IACH,kCAAgB;IAEhB;;;;OAIG;IACH,iCAAe;IAaf;;;;;;OAMG;IACH,kBANW,eAAe,EAAE,cACjB,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,aACxB,OAAO,mBACP;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,SAAS,GAClC,iBAAiB,CAiO7B;IAED;;;;;OAKG;IACH,4BAgCC;IAED;;;;;OAKG;IACH,yBA8BC;IAED;;;;;OAKG;IACH,qBAoBC;IAED;;;;;OAKG;IACH,4BAeC;CACJ;gCAhaY,UAAU,GAAG;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;;;;gCAIS;IACR,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,CAAA;KAAC,CAAA;IACzD,SAAS,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAA;CACzC;qCAdqF,aAAa;8BAD7C,mBAAmB;iCACa,aAAa;gCAAb,aAAa;iDAAb,aAAa;iCAD7C,mBAAmB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** @typedef {import("@helios-lang/tx-utils").CompilationContext} CompilationContext */
|
|
2
|
+
/** @param {import("@helios-lang/uplc").UplcProgram} program @returns {CompilationContext | undefined} */
|
|
3
|
+
export function getCompilation(program: import("@helios-lang/uplc").UplcProgram): CompilationContext | undefined;
|
|
4
|
+
/** @param {import("@helios-lang/uplc").UplcProgram} program @param {CompilationContext | undefined} context */
|
|
5
|
+
export function attachCompilation(program: import("@helios-lang/uplc").UplcProgram, context: CompilationContext | undefined): void;
|
|
6
|
+
export type CompilationContext = import("@helios-lang/tx-utils").CompilationContext;
|
|
7
|
+
//# sourceMappingURL=compilation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compilation.d.ts","sourceRoot":"","sources":["../../src/context/compilation.js"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,yGAAyG;AACzG,wCADY,OAAO,mBAAmB,EAAE,WAAW,GAAoB,kBAAkB,GAAG,SAAS,CAGpG;AACD,+GAA+G;AAC/G,2CADY,OAAO,mBAAmB,EAAE,WAAW,WAAkB,kBAAkB,GAAG,SAAS,QAUlG;iCAfa,OAAO,uBAAuB,EAAE,kBAAkB"}
|
package/types/index.d.ts
CHANGED
|
@@ -62,6 +62,7 @@ export type CompileOutput = {
|
|
|
62
62
|
plutusVersion: PlutusVersion;
|
|
63
63
|
ir?: string;
|
|
64
64
|
sourceMap?: import("@helios-lang/uplc").UplcSourceMapJsonSafe;
|
|
65
|
+
parameters: Record<string, string>;
|
|
65
66
|
};
|
|
66
67
|
export type TypeCheckOutput = {
|
|
67
68
|
modules: {
|
|
@@ -289,8 +290,10 @@ export type DebuggerContext = {
|
|
|
289
290
|
endpoint: string;
|
|
290
291
|
sources?: Record<string, string>;
|
|
291
292
|
};
|
|
293
|
+
export type CompilationContext = import("@helios-lang/tx-utils").CompilationContext;
|
|
292
294
|
export type DebuggerUplcProgram = UplcProgram & {
|
|
293
295
|
$debugger?: DebuggerContext;
|
|
296
|
+
$compilation?: CompilationContext;
|
|
294
297
|
};
|
|
295
298
|
import type { TypeSchema } from "@helios-lang/type-utils";
|
|
296
299
|
import type { UplcData } from "@helios-lang/uplc";
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;;;;kCA2Ba;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,qBAAqB,EAAE,OAAO,CAAA;IAC9B,qBAAqB,EAAE,OAAO,CAAA;IAC9B,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,UAAU,CAAA;QAChB,UAAU,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;IACH,OAAO,CAAC,EAAE,UAAU,CAAA;CACrB;gCAIS;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAChD;mCAIS,iBAAiB,GAAG;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,EAAE,UAAU,CAAA;IACpB,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;6BAIS,GAAG;;;;6BAKH;IACR,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACrC,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,aAAa,CAAA;QAC5B,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,SAAS,CAAC,EAAE,qBAAqB,CAAA;QACjC,GAAG,CAAC,EAAE;YACJ,OAAO,EAAE,MAAM,CAAA;YACf,EAAE,CAAC,EAAE,MAAM,CAAA;YACX,SAAS,CAAC,EAAE,qBAAqB,CAAA;SAClC,CAAA;KACF,KAAK,IAAI,CAAA;CACX;4BAIS;IACR,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,aAAa,CAAA;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,OAAO,mBAAmB,EAAE,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
|