@helios-lang/contract-utils 0.1.17 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -79,12 +79,21 @@ export class ContractContextBuilder {
|
|
|
79
79
|
*/
|
|
80
80
|
validators
|
|
81
81
|
|
|
82
|
+
/**
|
|
83
|
+
* @private
|
|
84
|
+
* @readonly
|
|
85
|
+
* @type {Option<Module[]>}
|
|
86
|
+
*/
|
|
87
|
+
forcedModules
|
|
88
|
+
|
|
82
89
|
/**
|
|
83
90
|
* @private
|
|
84
91
|
* @param {T} validators
|
|
92
|
+
* @param {Option<Module[]>} forcedModules
|
|
85
93
|
*/
|
|
86
|
-
constructor(validators) {
|
|
94
|
+
constructor(validators, forcedModules = None) {
|
|
87
95
|
this.validators = validators
|
|
96
|
+
this.forcedModules = forcedModules
|
|
88
97
|
}
|
|
89
98
|
|
|
90
99
|
/**
|
|
@@ -108,6 +117,14 @@ export class ContractContextBuilder {
|
|
|
108
117
|
})
|
|
109
118
|
}
|
|
110
119
|
|
|
120
|
+
/**
|
|
121
|
+
* @param {Module[]} modules
|
|
122
|
+
* @returns {ContractContextBuilder<T>}
|
|
123
|
+
*/
|
|
124
|
+
setModules(modules) {
|
|
125
|
+
return new ContractContextBuilder(this.validators, modules)
|
|
126
|
+
}
|
|
127
|
+
|
|
111
128
|
/**
|
|
112
129
|
* @private
|
|
113
130
|
* @param {Lib} lib
|
|
@@ -121,6 +138,38 @@ export class ContractContextBuilder {
|
|
|
121
138
|
)
|
|
122
139
|
}
|
|
123
140
|
|
|
141
|
+
/**
|
|
142
|
+
* @private
|
|
143
|
+
* @param {Validator} validator
|
|
144
|
+
* @returns {Map<string, string>}
|
|
145
|
+
*/
|
|
146
|
+
getModules(validator) {
|
|
147
|
+
if (this.forcedModules) {
|
|
148
|
+
return new Map(
|
|
149
|
+
this.forcedModules.map((m) => [m.$name, m.$sourceCode])
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @type {Map<string, string>}
|
|
155
|
+
*/
|
|
156
|
+
const result = new Map()
|
|
157
|
+
let stack = validator.$dependencies.slice()
|
|
158
|
+
let m = stack.pop()
|
|
159
|
+
|
|
160
|
+
while (m) {
|
|
161
|
+
if (!result.has(m.$name)) {
|
|
162
|
+
result.set(m.$name, m.$sourceCode)
|
|
163
|
+
|
|
164
|
+
stack = stack.concat(m.$dependencies)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
m = stack.pop()
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return result
|
|
171
|
+
}
|
|
172
|
+
|
|
124
173
|
/**
|
|
125
174
|
* @param {Option<{[name: string]: string}>} expectedHashes
|
|
126
175
|
* @param {LibOptions} options
|
|
@@ -162,33 +211,6 @@ export class ContractContextBuilder {
|
|
|
162
211
|
*/
|
|
163
212
|
const validators = {}
|
|
164
213
|
|
|
165
|
-
/**
|
|
166
|
-
* @param {Validator} validator
|
|
167
|
-
* @returns {Map<string, string>}
|
|
168
|
-
*/
|
|
169
|
-
function collectModules(validator) {
|
|
170
|
-
/**
|
|
171
|
-
* @type {Map<string, string>}
|
|
172
|
-
*/
|
|
173
|
-
const result = new Map()
|
|
174
|
-
|
|
175
|
-
let stack = validator.$dependencies.slice()
|
|
176
|
-
|
|
177
|
-
let m = stack.pop()
|
|
178
|
-
|
|
179
|
-
while (m) {
|
|
180
|
-
if (!result.has(m.$name)) {
|
|
181
|
-
result.set(m.$name, m.$sourceCode)
|
|
182
|
-
|
|
183
|
-
stack = stack.concat(m.$dependencies)
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
m = stack.pop()
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return result
|
|
190
|
-
}
|
|
191
|
-
|
|
192
214
|
/**
|
|
193
215
|
* @returns {{[name: string]: {purpose: string, hash: string}}}
|
|
194
216
|
*/
|
|
@@ -227,7 +249,7 @@ export class ContractContextBuilder {
|
|
|
227
249
|
/**
|
|
228
250
|
* @param {Validator} validator
|
|
229
251
|
*/
|
|
230
|
-
|
|
252
|
+
const buildValidator = (validator) => {
|
|
231
253
|
const name = validator.$name
|
|
232
254
|
|
|
233
255
|
if (name in validators) {
|
|
@@ -238,7 +260,7 @@ export class ContractContextBuilder {
|
|
|
238
260
|
buildValidator(v)
|
|
239
261
|
}
|
|
240
262
|
|
|
241
|
-
const modules =
|
|
263
|
+
const modules = this.getModules(validator)
|
|
242
264
|
|
|
243
265
|
const { cborHex: optimizedCborHex, prettyIR } = lib.compile(
|
|
244
266
|
validator.$sourceCode,
|
|
@@ -265,29 +287,8 @@ export class ContractContextBuilder {
|
|
|
265
287
|
}
|
|
266
288
|
}
|
|
267
289
|
|
|
268
|
-
/**
|
|
269
|
-
* @type {ScriptHash}
|
|
270
|
-
*/
|
|
271
|
-
let ownTypedHash
|
|
272
|
-
|
|
273
290
|
const purpose = validator.$purpose
|
|
274
291
|
|
|
275
|
-
switch (purpose) {
|
|
276
|
-
case "spending":
|
|
277
|
-
ownTypedHash = new ValidatorHash(ownHash)
|
|
278
|
-
break
|
|
279
|
-
case "minting":
|
|
280
|
-
ownTypedHash = new MintingPolicyHash(ownHash)
|
|
281
|
-
break
|
|
282
|
-
case "staking":
|
|
283
|
-
case "certifying":
|
|
284
|
-
case "rewarding":
|
|
285
|
-
ownTypedHash = new StakingValidatorHash(ownHash)
|
|
286
|
-
break
|
|
287
|
-
default:
|
|
288
|
-
throw new Error("unhandled purpose")
|
|
289
|
-
}
|
|
290
|
-
|
|
291
292
|
const { cborHex: unoptimizedCborHex } = lib.compile(
|
|
292
293
|
validator.$sourceCode,
|
|
293
294
|
Array.from(modules.values()),
|
|
@@ -60,6 +60,7 @@ export class ContractContextBuilder<T extends {
|
|
|
60
60
|
/**
|
|
61
61
|
* @private
|
|
62
62
|
* @param {T} validators
|
|
63
|
+
* @param {Option<Module[]>} forcedModules
|
|
63
64
|
*/
|
|
64
65
|
private constructor();
|
|
65
66
|
/**
|
|
@@ -68,6 +69,12 @@ export class ContractContextBuilder<T extends {
|
|
|
68
69
|
* @type {T}
|
|
69
70
|
*/
|
|
70
71
|
private readonly validators;
|
|
72
|
+
/**
|
|
73
|
+
* @private
|
|
74
|
+
* @readonly
|
|
75
|
+
* @type {Option<Module[]>}
|
|
76
|
+
*/
|
|
77
|
+
private readonly forcedModules;
|
|
71
78
|
/**
|
|
72
79
|
* @template {Validator} V
|
|
73
80
|
* @param {V} validator
|
|
@@ -76,12 +83,23 @@ export class ContractContextBuilder<T extends {
|
|
|
76
83
|
* }>}
|
|
77
84
|
*/
|
|
78
85
|
with<V extends Validator>(validator: V): ContractContextBuilder<T & { [K in V["$name"]]: V; }>;
|
|
86
|
+
/**
|
|
87
|
+
* @param {Module[]} modules
|
|
88
|
+
* @returns {ContractContextBuilder<T>}
|
|
89
|
+
*/
|
|
90
|
+
setModules(modules: Module[]): ContractContextBuilder<T>;
|
|
79
91
|
/**
|
|
80
92
|
* @private
|
|
81
93
|
* @param {Lib} lib
|
|
82
94
|
* @returns {{[name: string]: any}}
|
|
83
95
|
*/
|
|
84
96
|
private getValidatorTypes;
|
|
97
|
+
/**
|
|
98
|
+
* @private
|
|
99
|
+
* @param {Validator} validator
|
|
100
|
+
* @returns {Map<string, string>}
|
|
101
|
+
*/
|
|
102
|
+
private getModules;
|
|
85
103
|
/**
|
|
86
104
|
* @param {Option<{[name: string]: string}>} expectedHashes
|
|
87
105
|
* @param {LibOptions} options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractContextBuilder.d.ts","sourceRoot":"","sources":["../../src/runtime/ContractContextBuilder.js"],"names":[],"mappings":"AAaA;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH;;;
|
|
1
|
+
{"version":3,"file":"ContractContextBuilder.d.ts","sourceRoot":"","sources":["../../src/runtime/ContractContextBuilder.js"],"names":[],"mappings":"AAaA;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AAEH;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH;;;IAyBI;;OAEG;IACH,gBAFa,uBAAuB,EAAE,CAAC,CAItC;IAfD;;;;OAIG;IACH,sBAGC;IAtBD;;;;OAIG;IACH,4BAAU;IAEV;;;;OAIG;IACH,+BAAa;IAmBb;;;;;;OAMG;IACH,+FAKC;IAED;;;OAGG;IACH,oBAHW,MAAM,EAAE,GACN,uBAAuB,CAAC,CAAC,CAIrC;IAED;;;;OAIG;IACH,0BAMC;IAED;;;;OAIG;IACH,mBAyBC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH;;kBAzBW,UAAU,qwBAiKpB;CACJ;kBAlUY,OAAO,iBAAiB,EAAE,GAAG;yBAC7B,OAAO,iBAAiB,EAAE,UAAU;gCACpC,OAAO,sBAAsB,EAAE,SAAS;mEAMxC,OAAO,qBAAqB,EAAE,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC;oGAQlF,OAAO,qBAAqB,EAAE,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,CAAC;mEAMnH,OAAO,qBAAqB,EAAE,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC;6HAKlF,OAAO,qBAAqB,EAAE,cAAc,CAAC,CAAC,CAAC;yHAK/C,OAAO,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;qBAIvC;IACZ,KAAS,EAAE,MAAM,CAAA;IACjB,WAAe,EAAE,MAAM,CAAA;IACvB,aAAiB,EAAE,MAAM,EAAE,CAAA;CACxB;wBAIS;IACZ,KAAS,EAAE,MAAM,CAAA;IACjB,QAAY,EAAE,MAAM,CAAA;IACpB,WAAe,EAAE,MAAM,CAAA;IACvB,aAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,iBAAqB,EAAE,SAAS,EAAE,CAAA;IAClC,iBAAqB,EAAE,OAAO,CAAA;IAC9B,SAAa,EAAE,KAAK,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7B,MAAU,CAAC,EAAE,KAAK,GAAG,EAAE,GAAG,CAAC,CAAA;CACxB;8BA7DG,qBAAqB;kCAArB,qBAAqB;qCAArB,qBAAqB;qBAIP,WAAW"}
|