@helios-lang/contract-utils 0.1.17 → 0.1.19
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
|
/**
|
|
@@ -94,6 +103,14 @@ export class ContractContextBuilder {
|
|
|
94
103
|
return new ContractContextBuilder({})
|
|
95
104
|
}
|
|
96
105
|
|
|
106
|
+
/**
|
|
107
|
+
* @param {Module[]} modules
|
|
108
|
+
* @returns {ContractContextBuilder<T>}
|
|
109
|
+
*/
|
|
110
|
+
setModules(modules) {
|
|
111
|
+
return new ContractContextBuilder(this.validators, modules)
|
|
112
|
+
}
|
|
113
|
+
|
|
97
114
|
/**
|
|
98
115
|
* @template {Validator} V
|
|
99
116
|
* @param {V} validator
|
|
@@ -102,10 +119,45 @@ export class ContractContextBuilder {
|
|
|
102
119
|
* }>}
|
|
103
120
|
*/
|
|
104
121
|
with(validator) {
|
|
105
|
-
return new ContractContextBuilder(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
122
|
+
return new ContractContextBuilder(
|
|
123
|
+
{
|
|
124
|
+
...this.validators,
|
|
125
|
+
[validator.$name]: validator
|
|
126
|
+
},
|
|
127
|
+
this.forcedModules
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @private
|
|
133
|
+
* @param {Validator} validator
|
|
134
|
+
* @returns {Map<string, string>}
|
|
135
|
+
*/
|
|
136
|
+
getModules(validator) {
|
|
137
|
+
if (this.forcedModules) {
|
|
138
|
+
return new Map(
|
|
139
|
+
this.forcedModules.map((m) => [m.$name, m.$sourceCode])
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @type {Map<string, string>}
|
|
145
|
+
*/
|
|
146
|
+
const result = new Map()
|
|
147
|
+
let stack = validator.$dependencies.slice()
|
|
148
|
+
let m = stack.pop()
|
|
149
|
+
|
|
150
|
+
while (m) {
|
|
151
|
+
if (!result.has(m.$name)) {
|
|
152
|
+
result.set(m.$name, m.$sourceCode)
|
|
153
|
+
|
|
154
|
+
stack = stack.concat(m.$dependencies)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
m = stack.pop()
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return result
|
|
109
161
|
}
|
|
110
162
|
|
|
111
163
|
/**
|
|
@@ -162,33 +214,6 @@ export class ContractContextBuilder {
|
|
|
162
214
|
*/
|
|
163
215
|
const validators = {}
|
|
164
216
|
|
|
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
217
|
/**
|
|
193
218
|
* @returns {{[name: string]: {purpose: string, hash: string}}}
|
|
194
219
|
*/
|
|
@@ -227,7 +252,7 @@ export class ContractContextBuilder {
|
|
|
227
252
|
/**
|
|
228
253
|
* @param {Validator} validator
|
|
229
254
|
*/
|
|
230
|
-
|
|
255
|
+
const buildValidator = (validator) => {
|
|
231
256
|
const name = validator.$name
|
|
232
257
|
|
|
233
258
|
if (name in validators) {
|
|
@@ -238,7 +263,7 @@ export class ContractContextBuilder {
|
|
|
238
263
|
buildValidator(v)
|
|
239
264
|
}
|
|
240
265
|
|
|
241
|
-
const modules =
|
|
266
|
+
const modules = this.getModules(validator)
|
|
242
267
|
|
|
243
268
|
const { cborHex: optimizedCborHex, prettyIR } = lib.compile(
|
|
244
269
|
validator.$sourceCode,
|
|
@@ -265,29 +290,8 @@ export class ContractContextBuilder {
|
|
|
265
290
|
}
|
|
266
291
|
}
|
|
267
292
|
|
|
268
|
-
/**
|
|
269
|
-
* @type {ScriptHash}
|
|
270
|
-
*/
|
|
271
|
-
let ownTypedHash
|
|
272
|
-
|
|
273
293
|
const purpose = validator.$purpose
|
|
274
294
|
|
|
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
295
|
const { cborHex: unoptimizedCborHex } = lib.compile(
|
|
292
296
|
validator.$sourceCode,
|
|
293
297
|
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,17 @@ 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;
|
|
78
|
+
/**
|
|
79
|
+
* @param {Module[]} modules
|
|
80
|
+
* @returns {ContractContextBuilder<T>}
|
|
81
|
+
*/
|
|
82
|
+
setModules(modules: Module[]): ContractContextBuilder<T>;
|
|
71
83
|
/**
|
|
72
84
|
* @template {Validator} V
|
|
73
85
|
* @param {V} validator
|
|
@@ -76,6 +88,12 @@ export class ContractContextBuilder<T extends {
|
|
|
76
88
|
* }>}
|
|
77
89
|
*/
|
|
78
90
|
with<V extends Validator>(validator: V): ContractContextBuilder<T & { [K in V["$name"]]: V; }>;
|
|
91
|
+
/**
|
|
92
|
+
* @private
|
|
93
|
+
* @param {Validator} validator
|
|
94
|
+
* @returns {Map<string, string>}
|
|
95
|
+
*/
|
|
96
|
+
private getModules;
|
|
79
97
|
/**
|
|
80
98
|
* @private
|
|
81
99
|
* @param {Lib} lib
|
|
@@ -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;;;OAGG;IACH,oBAHW,MAAM,EAAE,GACN,uBAAuB,CAAC,CAAC,CAIrC;IAED;;;;;;OAMG;IACH,+FAQC;IAED;;;;OAIG;IACH,mBAyBC;IAED;;;;OAIG;IACH,0BAMC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH;;kBAzBW,UAAU,qwBAiKpB;CACJ;kBArUY,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"}
|