@helios-lang/contract-utils 0.2.52 → 0.2.54
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 +44 -43
- package/src/cast/Cast.js +1 -1
- package/src/cast/UserFunc.js +40 -9
- package/src/codegen/LoadedScriptsWriter.js +6 -2
- package/src/codegen/TypeCheckedModule.js +1 -0
- package/src/context/ContractContextBuilder.js +26 -9
- package/types/cast/Cast.d.ts +1 -1
- package/types/cast/UserFunc.d.ts +6 -0
- package/types/cast/UserFunc.d.ts.map +1 -1
- package/types/codegen/TypeCheckedModule.d.ts +1 -0
- package/types/codegen/TypeCheckedModule.d.ts.map +1 -1
- package/types/context/ContractContextBuilder.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,44 +1,45 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
2
|
+
"name": "@helios-lang/contract-utils",
|
|
3
|
+
"version": "0.2.54",
|
|
4
|
+
"description": "Convenience and type-safety utilities for using Helios validators from within Typescript",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"types": "types/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"hl2ts": "src/hl2ts.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "pnpm run prettify && pnpm run build:types && pnpm run test:suite",
|
|
13
|
+
"build:types": "tsc -p jsconfig.json --noEmit false --emitDeclarationOnly",
|
|
14
|
+
"prepack": "pnpm run build",
|
|
15
|
+
"prettify": "prettier . --write",
|
|
16
|
+
"test": "pnpm run test:pretty && pnpm run test:types && pnpm run test:suite",
|
|
17
|
+
"test:pretty": "prettier . --check",
|
|
18
|
+
"test:suite": "node --test",
|
|
19
|
+
"test:types": "pnpm run build:types"
|
|
20
|
+
},
|
|
21
|
+
"author": "Christian Schmitz",
|
|
22
|
+
"license": "BSD-3-Clause",
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/node": "^20.11.24",
|
|
25
|
+
"prettier": "^3.1.0",
|
|
26
|
+
"typescript": "^5.3.2"
|
|
27
|
+
},
|
|
28
|
+
"prettier": {
|
|
29
|
+
"trailingComma": "none",
|
|
30
|
+
"tabWidth": 4,
|
|
31
|
+
"semi": false,
|
|
32
|
+
"singleQuote": false
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@helios-lang/compiler": "*"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@helios-lang/cli-utils": "^0.1.6",
|
|
39
|
+
"@helios-lang/codec-utils": "^0.1.34",
|
|
40
|
+
"@helios-lang/compiler-utils": "^0.1.25",
|
|
41
|
+
"@helios-lang/ledger": "^0.4.10",
|
|
42
|
+
"@helios-lang/type-utils": "^0.1.21",
|
|
43
|
+
"@helios-lang/uplc": "^0.3.5"
|
|
44
|
+
}
|
|
45
|
+
}
|
package/src/cast/Cast.js
CHANGED
package/src/cast/UserFunc.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { bytesToHex } from "@helios-lang/codec-utils"
|
|
2
2
|
import { expectSome, isLeft, isString } from "@helios-lang/type-utils"
|
|
3
|
-
import { ConstrData, UplcDataValue } from "@helios-lang/uplc"
|
|
3
|
+
import { ConstrData, IntData, UplcDataValue } from "@helios-lang/uplc"
|
|
4
4
|
import { Cast } from "./Cast.js"
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -21,6 +21,7 @@ import { Cast } from "./Cast.js"
|
|
|
21
21
|
* name: string
|
|
22
22
|
* type: TypeSchema
|
|
23
23
|
* isOptional: boolean
|
|
24
|
+
* isIgnored?: boolean
|
|
24
25
|
* }[]
|
|
25
26
|
* returns: TypeSchema
|
|
26
27
|
* validatorIndices?: Record<string, number>
|
|
@@ -60,6 +61,13 @@ export class UserFunc {
|
|
|
60
61
|
this.props = props
|
|
61
62
|
}
|
|
62
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @type {string}
|
|
66
|
+
*/
|
|
67
|
+
get name() {
|
|
68
|
+
return this.props.name
|
|
69
|
+
}
|
|
70
|
+
|
|
63
71
|
/**
|
|
64
72
|
* @param {ArgsT} namedArgs
|
|
65
73
|
* @returns {RetT}
|
|
@@ -121,20 +129,43 @@ export class UserFunc {
|
|
|
121
129
|
* @returns {CekResult}
|
|
122
130
|
*/
|
|
123
131
|
profile(namedArgs) {
|
|
132
|
+
const isMain = this.name == "main"
|
|
133
|
+
|
|
124
134
|
/**
|
|
125
135
|
* @type {UplcData[]}
|
|
126
136
|
*/
|
|
127
|
-
const args =
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
137
|
+
const args = []
|
|
138
|
+
|
|
139
|
+
this.props.arguments.forEach(
|
|
140
|
+
({ name, type, isOptional, isIgnored }) => {
|
|
141
|
+
if (isMain) {
|
|
142
|
+
if (isOptional) {
|
|
143
|
+
// used for $datum in mixed script
|
|
144
|
+
if (name in namedArgs && namedArgs[name]) {
|
|
145
|
+
args.push(namedArgs[name])
|
|
146
|
+
}
|
|
147
|
+
} else if (isIgnored) {
|
|
148
|
+
if (name in namedArgs && namedArgs[name]) {
|
|
149
|
+
args.push(namedArgs[name])
|
|
150
|
+
} else {
|
|
151
|
+
args.push(new IntData(0))
|
|
152
|
+
}
|
|
153
|
+
} else {
|
|
154
|
+
args.push(expectSome(namedArgs[name]))
|
|
155
|
+
}
|
|
131
156
|
} else {
|
|
132
|
-
|
|
157
|
+
if (isOptional) {
|
|
158
|
+
if (name in namedArgs && namedArgs[name]) {
|
|
159
|
+
args.push(new ConstrData(0, [namedArgs[name]]))
|
|
160
|
+
} else {
|
|
161
|
+
args.push(new ConstrData(1, []))
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
args.push(expectSome(namedArgs[name]))
|
|
165
|
+
}
|
|
133
166
|
}
|
|
134
|
-
} else {
|
|
135
|
-
return expectSome(namedArgs[name])
|
|
136
167
|
}
|
|
137
|
-
|
|
168
|
+
)
|
|
138
169
|
|
|
139
170
|
if (this.props.requiresScriptContext) {
|
|
140
171
|
args.push(expectSome(namedArgs["$scriptContext"]))
|
|
@@ -403,8 +403,12 @@ function genFuncType(fn) {
|
|
|
403
403
|
fields.push("$currentScript: string")
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
fn.arguments.forEach(({ name, type, isOptional }, i) => {
|
|
407
|
-
|
|
406
|
+
fn.arguments.forEach(({ name, type, isOptional, isIgnored }, i) => {
|
|
407
|
+
if (isIgnored) {
|
|
408
|
+
fields.push(`${name}?: UplcData`)
|
|
409
|
+
} else {
|
|
410
|
+
fields.push(`${name}${isOptional ? "?" : ""}: ${genTypes(type)[1]}`)
|
|
411
|
+
}
|
|
408
412
|
})
|
|
409
413
|
|
|
410
414
|
const argsTypeStr = `{${fields.join(", ")}}`
|
|
@@ -187,15 +187,32 @@ export class ContractContextBuilder {
|
|
|
187
187
|
),
|
|
188
188
|
...Object.fromEntries(
|
|
189
189
|
Object.entries(validator.$functions).map(
|
|
190
|
-
([funcKey, userFunc]) =>
|
|
191
|
-
funcKey
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
190
|
+
([funcKey, userFunc]) => {
|
|
191
|
+
if (funcKey == "main") {
|
|
192
|
+
return [
|
|
193
|
+
funcKey,
|
|
194
|
+
userFunc(
|
|
195
|
+
expectSome(
|
|
196
|
+
compiled.validators[name].context
|
|
197
|
+
.program
|
|
198
|
+
),
|
|
199
|
+
castConfig
|
|
200
|
+
)
|
|
201
|
+
]
|
|
202
|
+
} else {
|
|
203
|
+
return [
|
|
204
|
+
funcKey,
|
|
205
|
+
userFunc(
|
|
206
|
+
expectSome(
|
|
207
|
+
compiled.userFuncs[
|
|
208
|
+
`${name}::${funcKey}`
|
|
209
|
+
]
|
|
210
|
+
),
|
|
211
|
+
castConfig
|
|
212
|
+
)
|
|
213
|
+
]
|
|
214
|
+
}
|
|
215
|
+
}
|
|
199
216
|
)
|
|
200
217
|
),
|
|
201
218
|
$hash: compiled.validators[name]
|
package/types/cast/Cast.d.ts
CHANGED
package/types/cast/UserFunc.d.ts
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* name: string
|
|
16
16
|
* type: TypeSchema
|
|
17
17
|
* isOptional: boolean
|
|
18
|
+
* isIgnored?: boolean
|
|
18
19
|
* }[]
|
|
19
20
|
* returns: TypeSchema
|
|
20
21
|
* validatorIndices?: Record<string, number>
|
|
@@ -48,6 +49,10 @@ export class UserFunc<ArgsT extends {
|
|
|
48
49
|
* @type {UserFuncProps}
|
|
49
50
|
*/
|
|
50
51
|
private readonly props;
|
|
52
|
+
/**
|
|
53
|
+
* @type {string}
|
|
54
|
+
*/
|
|
55
|
+
get name(): string;
|
|
51
56
|
/**
|
|
52
57
|
* @param {ArgsT} namedArgs
|
|
53
58
|
* @returns {RetT}
|
|
@@ -78,6 +83,7 @@ export type UserFuncProps = {
|
|
|
78
83
|
name: string;
|
|
79
84
|
type: TypeSchema;
|
|
80
85
|
isOptional: boolean;
|
|
86
|
+
isIgnored?: boolean;
|
|
81
87
|
}[];
|
|
82
88
|
returns: TypeSchema;
|
|
83
89
|
validatorIndices?: Record<string, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserFunc.d.ts","sourceRoot":"","sources":["../../src/cast/UserFunc.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AAEH
|
|
1
|
+
{"version":3,"file":"UserFunc.d.ts","sourceRoot":"","sources":["../../src/cast/UserFunc.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH;;;GAGG;AAEH;;;GAGG;AACH,sBAHwC,KAAK,SAAhC;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC1B,IAAI;IAgBb;;;OAGG;IACH,kBAHW,WAAW,SACX,aAAa,EAKvB;IApBD;;;OAGG;IACH,eAFU,WAAW,CAEjB;IAEJ;;;;OAIG;IACH,uBAAK;IAWL;;OAEG;IACH,mBAEC;IAED;;;OAGG;IACH,gBAHW,KAAK,GACH,IAAI,CAoChB;IAED;;;OAGG;IACH,sBAHW,WAAW,CAAC,KAAK,CAAC,GAChB,QAAQ,CAYpB;IAED;;;OAGG;IACH,mBAHW,WAAW,CAAC,KAAK,CAAC,GAChB,SAAS,CAyGrB;CACJ;yBApOY,OAAO,yBAAyB,EAAE,UAAU;wBAC5C,OAAO,mBAAmB,EAAE,SAAS;uBACrC,OAAO,mBAAmB,EAAE,QAAQ;0BACpC,OAAO,mBAAmB,EAAE,WAAW;wBACvC,OAAO,mBAAmB,EAAE,SAAS;yBACrC,OAAO,WAAW,EAAE,UAAU;4BAI9B;IACZ,IAAQ,EAAE,MAAM,CAAA;IAChB,qBAAyB,EAAE,OAAO,CAAA;IAClC,qBAAyB,EAAE,OAAO,CAAA;IAClC,SAAa,EAAE;QACf,IAAU,EAAE,MAAM,CAAA;QAClB,IAAU,EAAE,UAAU,CAAA;QACtB,UAAgB,EAAE,OAAO,CAAA;QACzB,SAAe,CAAC,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;IACP,OAAW,EAAE,UAAU,CAAA;IACvB,gBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C,UAAc,EAAE,UAAU,CAAA;CACvB;wBAIS,KAAK,IACL,GAAE,CAAgB,IAAX,MAAM,KAAK,GAAG,CAAC,SAAS,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeCheckedModule.d.ts","sourceRoot":"","sources":["../../src/codegen/TypeCheckedModule.js"],"names":[],"mappings":"yBAGa,OAAO,iBAAiB,EAAE,UAAU;kCAIpC;IACZ,IAAQ,EAAE,MAAM,CAAA;IAChB,qBAAyB,EAAE,OAAO,CAAA;IAClC,qBAAyB,EAAE,OAAO,CAAA;IAClC,SAAa,EAAE;QACf,IAAU,EAAE,MAAM,CAAA;QAClB,IAAU,EAAE,UAAU,CAAA;QACtB,UAAgB,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;IACP,OAAW,EAAE,UAAU,CAAA;CACpB;gCAIS;IACZ,IAAQ,EAAE,MAAM,CAAA;IAChB,OAAW,EAAE,MAAM,CAAA;IACnB,UAAc,EAAE,MAAM,CAAA;IACtB,iBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,KAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACrC,SAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAChD"}
|
|
1
|
+
{"version":3,"file":"TypeCheckedModule.d.ts","sourceRoot":"","sources":["../../src/codegen/TypeCheckedModule.js"],"names":[],"mappings":"yBAGa,OAAO,iBAAiB,EAAE,UAAU;kCAIpC;IACZ,IAAQ,EAAE,MAAM,CAAA;IAChB,qBAAyB,EAAE,OAAO,CAAA;IAClC,qBAAyB,EAAE,OAAO,CAAA;IAClC,SAAa,EAAE;QACf,IAAU,EAAE,MAAM,CAAA;QAClB,IAAU,EAAE,UAAU,CAAA;QACtB,UAAgB,EAAE,OAAO,CAAA;QACzB,SAAe,CAAC,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;IACP,OAAW,EAAE,UAAU,CAAA;CACpB;gCAIS;IACZ,IAAQ,EAAE,MAAM,CAAA;IAChB,OAAW,EAAE,MAAM,CAAA;IACnB,UAAc,EAAE,MAAM,CAAA;IACtB,iBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,KAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACrC,SAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractContextBuilder.d.ts","sourceRoot":"","sources":["../../src/context/ContractContextBuilder.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH;;;GAGG;AACH,oCAHiD,EAAE,SAAtC;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,EACF,EAAE,SAAnC;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE;IA0BzC;;OAEG;IACH,gBAFa,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAI1C;IAfD;;;;OAIG;IACH,sBAGC;IArBD;;;;OAIG;IACH,4BAAU;IAEV;;;OAGG;IACH,kBAFU,EAAE,CAEL;IAmBP;;;;;;;OAOG;IACH,KAP+B,CAAC,SAAlB,eAAgB,aACnB,CAAC,GACC,sBAAsB,CAC9B,EAAE,GAAG,GAAE,CAAe,IAAV,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAC,EAC3B,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAC5B,CAeH;IAED;;;;;;;OAOG;IACH,WAP4B,CAAC,SAAf,YAAa,KAChB,CAAC,GACC,sBAAsB,CAC9B,EAAE,EACF,EAAE,GAAG,GAAE,CAAe,IAAV,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAC,CAC5B,CAUH;IAED;;;OAGG;IACH,aAHW,yBAAyB,GACvB,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ContractContextBuilder.d.ts","sourceRoot":"","sources":["../../src/context/ContractContextBuilder.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH;;;GAGG;AACH,oCAHiD,EAAE,SAAtC;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,EACF,EAAE,SAAnC;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE;IA0BzC;;OAEG;IACH,gBAFa,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAI1C;IAfD;;;;OAIG;IACH,sBAGC;IArBD;;;;OAIG;IACH,4BAAU;IAEV;;;OAGG;IACH,kBAFU,EAAE,CAEL;IAmBP;;;;;;;OAOG;IACH,KAP+B,CAAC,SAAlB,eAAgB,aACnB,CAAC,GACC,sBAAsB,CAC9B,EAAE,GAAG,GAAE,CAAe,IAAV,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAC,EAC3B,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAC5B,CAeH;IAED;;;;;;;OAOG;IACH,WAP4B,CAAC,SAAf,YAAa,KAChB,CAAC,GACC,sBAAsB,CAC9B,EAAE,EACF,EAAE,GAAG,GAAE,CAAe,IAAV,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAC,CAC5B,CAUH;IAED;;;OAGG;IACH,aAHW,yBAAyB,GACvB,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CA8GnC;CACJ;yBAxNY,OAAO,kBAAkB,EAAE,UAAU;2BACrC,OAAO,4BAA4B,EAAE,YAAY;8BACjD,OAAO,+BAA+B,EAAE,eAAe;0BACvD,OAAO,sBAAsB,EAAE,WAAW;gCAIxB,CAAC,SAAlB,eAAgB,IACjB,OAAO,+BAA+B,EAAE,mBAAmB,CAAC,CAAC,CAAC;4BAI1B,EAAE,SAAtC;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,EACF,EAAE,SAAnC;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,IAChC,OAAO,sBAAsB,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC;wCAItD;IACZ,SAAa,EAAE,OAAO,CAAA;IACtB,cAAkB,CAAC,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAA;IAC7C,UAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,UAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAS,CAAC,EAAE,OAAO,CAAA;CAChB"}
|