@helios-lang/contract-utils 0.2.29 → 0.2.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/compiler/CompilerLib.js +1 -0
- package/src/compiler/CompilerLib_v0_16.js +4 -2
- package/src/compiler/CompilerLib_v0_17.js +2 -1
- package/src/context/DagCompiler.js +44 -54
- package/types/compiler/CompilerLib.d.ts +2 -0
- package/types/compiler/CompilerLib.d.ts.map +1 -1
- package/types/compiler/CompilerLib_v0_16.d.ts.map +1 -1
- package/types/compiler/CompilerLib_v0_17.d.ts.map +1 -1
- package/types/context/DagCompiler.d.ts +1 -1
- package/types/context/DagCompiler.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helios-lang/contract-utils",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.30",
|
|
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",
|
|
@@ -40,6 +40,6 @@
|
|
|
40
40
|
"@helios-lang/compiler-utils": "^0.1.25",
|
|
41
41
|
"@helios-lang/ledger": "^0.2.8",
|
|
42
42
|
"@helios-lang/type-utils": "^0.1.21",
|
|
43
|
-
"@helios-lang/uplc": "^0.1.
|
|
43
|
+
"@helios-lang/uplc": "^0.1.37"
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -224,10 +224,12 @@ export class CompilerLib_v0_16 {
|
|
|
224
224
|
)
|
|
225
225
|
: this.lib.IRProgram.new(ir, purpose, optimize)
|
|
226
226
|
|
|
227
|
-
const
|
|
227
|
+
const uplc = irProgram.toUplc()
|
|
228
|
+
const cborHex = bytesToHex(uplc.toCbor())
|
|
228
229
|
|
|
229
230
|
return {
|
|
230
|
-
cborHex
|
|
231
|
+
cborHex,
|
|
232
|
+
plutusVersion: "PlutusScriptV2"
|
|
231
233
|
}
|
|
232
234
|
}
|
|
233
235
|
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
ValidatorHash
|
|
7
7
|
} from "@helios-lang/ledger"
|
|
8
8
|
import { None, expectSome, isSome } from "@helios-lang/type-utils"
|
|
9
|
-
import {
|
|
9
|
+
import { restoreUplcProgram } from "@helios-lang/uplc"
|
|
10
10
|
import { configureCast } from "../cast/index.js"
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -105,29 +105,35 @@ export class DagCompiler {
|
|
|
105
105
|
const excludeUserFuncs = new Set(Object.keys(this.cachedUserFuncs))
|
|
106
106
|
|
|
107
107
|
// optimized compilation
|
|
108
|
-
const {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
108
|
+
const {
|
|
109
|
+
cborHex: optimizedCborHex,
|
|
110
|
+
plutusVersion: optimPlutusVersion
|
|
111
|
+
} = this.lib.compile(sourceCode, moduleDeps, {
|
|
112
|
+
optimize: true,
|
|
113
|
+
hashDependencies: hashDepHashes,
|
|
114
|
+
allValidatorHashTypes: hashTypes,
|
|
115
|
+
allValidatorIndices: validatorIndices ?? undefined,
|
|
116
|
+
dependsOnOwnHash: validator.$dependsOnOwnHash,
|
|
117
|
+
parameters: parameters,
|
|
118
|
+
isTestnet: isTestnet,
|
|
119
|
+
excludeUserFuncs: excludeUserFuncs,
|
|
120
|
+
onCompileUserFunc: (name, cborHex, plutusVersion) => {
|
|
121
|
+
// this compilation process is potentially very slow, so print messages indicating progress
|
|
122
|
+
console.log(`Compiled user function ${name}`)
|
|
123
|
+
this.cachedUserFuncs[name] = restoreUplcProgram(
|
|
124
|
+
plutusVersion,
|
|
125
|
+
cborHex
|
|
126
|
+
)
|
|
127
127
|
}
|
|
128
|
-
)
|
|
128
|
+
})
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
// this compilation process is potentially very slow, so print messages indicating progress
|
|
131
|
+
console.log(`Compiled validator ${validator.$name}`)
|
|
132
|
+
|
|
133
|
+
const optimizedProgram = restoreUplcProgram(
|
|
134
|
+
optimPlutusVersion,
|
|
135
|
+
optimizedCborHex
|
|
136
|
+
)
|
|
131
137
|
|
|
132
138
|
// calculate the hash
|
|
133
139
|
const ownHash = bytesToHex(optimizedProgram.hash())
|
|
@@ -142,7 +148,10 @@ export class DagCompiler {
|
|
|
142
148
|
}
|
|
143
149
|
|
|
144
150
|
// unoptimized compilation (so traces are untouched)
|
|
145
|
-
const {
|
|
151
|
+
const {
|
|
152
|
+
cborHex: unoptimizedCborHex,
|
|
153
|
+
plutusVersion: unoptimPlutusVersion
|
|
154
|
+
} = this.lib.compile(
|
|
146
155
|
validator.$sourceCode,
|
|
147
156
|
Array.from(moduleDeps.values()),
|
|
148
157
|
{
|
|
@@ -156,43 +165,24 @@ export class DagCompiler {
|
|
|
156
165
|
onCompileUserFunc: (name, cborHex, plutusVersion) => {
|
|
157
166
|
const prev = expectSome(this.cachedUserFuncs[name])
|
|
158
167
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
prev
|
|
164
|
-
)
|
|
165
|
-
} else {
|
|
166
|
-
throw new Error("previous not UplcProgramV1")
|
|
167
|
-
}
|
|
168
|
-
} else if (plutusVersion == "PlutusScriptV2") {
|
|
169
|
-
if (prev instanceof UplcProgramV2) {
|
|
170
|
-
this.cachedUserFuncs[name] =
|
|
171
|
-
UplcProgramV2.fromCbor(cborHex).withAlt(
|
|
172
|
-
prev
|
|
173
|
-
)
|
|
174
|
-
} else {
|
|
175
|
-
throw new Error("previous not UplcProgramV2")
|
|
176
|
-
}
|
|
177
|
-
} else {
|
|
178
|
-
throw new Error(
|
|
179
|
-
`unhandled PlutusVersion ${plutusVersion}`
|
|
180
|
-
)
|
|
181
|
-
}
|
|
168
|
+
this.cachedUserFuncs[name] = restoreUplcProgram(
|
|
169
|
+
plutusVersion,
|
|
170
|
+
cborHex
|
|
171
|
+
).withAlt(prev)
|
|
182
172
|
}
|
|
183
173
|
}
|
|
184
174
|
)
|
|
185
175
|
|
|
186
176
|
// TODO: with source mapping
|
|
187
|
-
const unoptimizedProgram =
|
|
188
|
-
|
|
177
|
+
const unoptimizedProgram = restoreUplcProgram(
|
|
178
|
+
unoptimPlutusVersion,
|
|
179
|
+
unoptimizedCborHex
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
const completeProgram = optimizedProgram.withAlt(unoptimizedProgram)
|
|
189
183
|
|
|
190
184
|
// add result to cache (unoptimizedProgram is attached to optimizedProgram)
|
|
191
|
-
this.addValidatorToCache(
|
|
192
|
-
validator,
|
|
193
|
-
optimizedProgram.withAlt(unoptimizedProgram),
|
|
194
|
-
ownHash
|
|
195
|
-
)
|
|
185
|
+
this.addValidatorToCache(validator, completeProgram, ownHash)
|
|
196
186
|
}
|
|
197
187
|
|
|
198
188
|
validators.forEach((v) => buildValidator(v))
|
|
@@ -206,7 +196,7 @@ export class DagCompiler {
|
|
|
206
196
|
/**
|
|
207
197
|
* @private
|
|
208
198
|
* @param {LoadedValidator} validator
|
|
209
|
-
* @param {
|
|
199
|
+
* @param {UplcProgram} program
|
|
210
200
|
* @param {string} hash - although this can be derived from `program`, reuse this to save some effort
|
|
211
201
|
*/
|
|
212
202
|
addValidatorToCache(validator, program, hash) {
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
/**
|
|
26
26
|
* @typedef {{
|
|
27
27
|
* cborHex: string
|
|
28
|
+
* plutusVersion: PlutusVersion
|
|
28
29
|
* }} CompileOutput
|
|
29
30
|
*/
|
|
30
31
|
/**
|
|
@@ -82,6 +83,7 @@ export type CompileOptions = {
|
|
|
82
83
|
};
|
|
83
84
|
export type CompileOutput = {
|
|
84
85
|
cborHex: string;
|
|
86
|
+
plutusVersion: PlutusVersion;
|
|
85
87
|
};
|
|
86
88
|
export type TypeCheckOutput = {
|
|
87
89
|
modules: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompilerLib.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH;;GAEG;AAEH;;;;;;;;;;;;;GAaG;AAEH
|
|
1
|
+
{"version":3,"file":"CompilerLib.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH;;GAEG;AAEH;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AAEH;;;;;GAKG;AAEH;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AAEH;;GAEG;AAEH;;;;GAIG;AACH,uCAJW,WAAW,cACX,MAAM,EAAE;;EAUlB;4BA5EY,OAAO,mBAAmB,EAAE,aAAa;uBACzC,OAAO,mBAAmB,EAAE,QAAQ;kCACpC,OAAO,qBAAqB,EAAE,UAAU;gCACxC,OAAO,qBAAqB,EAAE,iBAAiB;mCAC/C,OAAO,qBAAqB,EAAE,oBAAoB;6BAIlD,GAAG;;2BAKY,OAAO,MAAM,EAAE,cAAc,CAAC;;sBAEnC,OAAO,MAAM,EAAE,MAAM,CAAC;;;;eAI7B,OAAO;cACR,OAAO;;gCAEU,MAAM,WAAW,MAAM,iBAAiB,aAAa,KAAK,IAAI;;4BAKjF;IACZ,OAAW,EAAE,MAAM,CAAA;IACnB,aAAiB,EAAE,aAAa,CAAA;CAC7B;;;;;;;;;4BAWS;IACZ,MAAU,MAAM,CAAA;IAChB,OAAW,EAAE,MAAM,CAAA;IACnB,UAAc,EAAE,MAAM,CAAA;CACnB;;aAKU,MAAM;iCACc,MAAM,KAAK,cAAc;4BAC9B,MAAM,EAAE,WAAW,MAAM,EAAE;;;;;;;;oBAInC,MAAM,WAAW,MAAM,EAAE,WAAW,cAAc,KAAK,aAAa;;8BAK5E,OAAO,MAAM,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompilerLib_v0_16.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib_v0_16.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;;;GAKG;AAEH;;;;;;GAMG;AACH;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IACI;;OAEG;IACH,iBAFW,GAAG,EAMb;IAHG,SAAc;IAKlB;;OAEG;IACH,qBAQC;IAED;;OAEG;IACH,sBAEC;IAED;;;OAGG;IACH,2BAHW,MAAM,GACJ,cAAc,CAe1B;IAED;;;;;OAKG;IACH,cALW,MAAM,WACN,MAAM,EAAE,WACR,cAAc,GACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"CompilerLib_v0_16.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib_v0_16.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompilerLib_v0_17.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib_v0_17.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH;IAOI;;OAEG;IACH,iBAFW,GAAG,EAIb;IAXD;;;OAGG;IACH,YAAG;IASH;;OAEG;IACH,sBAEC;IAED;;;OAGG;IACH,2BAHW,MAAM,GACJ,cAAc,CAM1B;IAED;;;;;OAKG;IACH,oBALW,MAAM,iBACN,MAAM,EAAE,WACR,cAAc,GACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"CompilerLib_v0_17.d.ts","sourceRoot":"","sources":["../../src/compiler/CompilerLib_v0_17.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH;IAOI;;OAEG;IACH,iBAFW,GAAG,EAIb;IAXD;;;OAGG;IACH,YAAG;IASH;;OAEG;IACH,sBAEC;IAED;;;OAGG;IACH,2BAHW,MAAM,GACJ,cAAc,CAM1B;IAED;;;;;OAKG;IACH,oBALW,MAAM,iBACN,MAAM,EAAE,WACR,cAAc,GACZ,aAAa,CAwDzB;IAED;;;;OAIG;IACH,4BAJW,MAAM,EAAE,iBACR,MAAM,EAAE,GACN,eAAe,CAM3B;CACJ;uBAlIY,OAAO,mBAAmB,EAAE,QAAQ;0BACpC,OAAO,kBAAkB,EAAE,WAAW;6BACtC,OAAO,kBAAkB,EAAE,cAAc;4BACzC,OAAO,kBAAkB,EAAE,aAAa;6BACxC,OAAO,kBAAkB,EAAE,cAAc;8BACzC,OAAO,kBAAkB,EAAE,eAAe;;UAK5C,MAAM;wBACQ,OAAO,MAAM,CAAC;qBACjB,MAAM,SAAS,QAAQ,GAAG,IAAI;;;;;;;oCAOlB,MAAM,QAAQ,aAAa,KAAK,IAAI;QAC7D,aAAa;;8BAvBQ,mBAAmB"}
|
|
@@ -63,7 +63,7 @@ export class DagCompiler {
|
|
|
63
63
|
/**
|
|
64
64
|
* @private
|
|
65
65
|
* @param {LoadedValidator} validator
|
|
66
|
-
* @param {
|
|
66
|
+
* @param {UplcProgram} program
|
|
67
67
|
* @param {string} hash - although this can be derived from `program`, reuse this to save some effort
|
|
68
68
|
*/
|
|
69
69
|
private addValidatorToCache;
|
|
@@ -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":"AAuUA;;;GAGG;AACH,iDAHW,eAAe,GACb,MAAM,EAAE,CAsBpB;AApVD;;;;;;GAMG;AAEH;;;;;GAKG;AAEH;;GAEG;AACH;IA6BI;;;OAGG;IACH,iBAHW,WAAW,cACX,UAAU,EAOpB;IArCD;;;;OAIG;IACH,qBAAG;IAEH;;;;OAIG;IACH,wBAAM;IAEN;;;;OAIG;IACH,kCAAgB;IAEhB;;;;OAIG;IACH,iCAAe;IAQX,iDAA4B;IAKhC;;;;;;OAMG;IACH,kBANW,eAAe,EAAE,cACjB,OAAO,MAAM,EAAE,GAAG,CAAC,aACnB,OAAO;;SAEL,iBAAiB,CAuH7B;IAED;;;;;OAKG;IACH,4BAsCC;IAED;;;;;OAKG;IACH,yBA0BC;IAED;;;;;OAKG;IACH,qBAoBC;IAED;;;;;OAKG;IACH,4BAeC;CACJ;0BAzTY,OAAO,mBAAmB,EAAE,WAAW;yBACvC,OAAO,kBAAkB,EAAE,UAAU;8BACrC,OAAO,+BAA+B,EAAE,eAAe;0BACvD,OAAO,sBAAsB,EAAE,WAAW;0CAC1C,OAAO,sBAAsB,EAAE,2BAA2B"}
|