@helios-lang/contract-utils 0.2.23 → 0.2.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/package.json +1 -1
- package/src/cast/UserFunc.js +16 -5
- package/src/codegen/LoadedScriptsWriter.js +5 -7
- package/src/codegen/TypeCheckedModule.js +1 -0
- package/src/context/DagCompiler.js +11 -1
- package/types/cast/UserFunc.d.ts +2 -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/DagCompiler.d.ts.map +1 -1
package/package.json
CHANGED
package/src/cast/UserFunc.js
CHANGED
|
@@ -14,6 +14,7 @@ import { ConstrData, UplcDataValue } from "@helios-lang/uplc"
|
|
|
14
14
|
* arguments: {
|
|
15
15
|
* name: string
|
|
16
16
|
* type: TypeSchema
|
|
17
|
+
* isOptional: boolean
|
|
17
18
|
* }[]
|
|
18
19
|
* returns: TypeSchema
|
|
19
20
|
* validatorIndices?: Record<string, number>
|
|
@@ -56,12 +57,22 @@ export class UserFunc {
|
|
|
56
57
|
/**
|
|
57
58
|
* @type {UplcData[]}
|
|
58
59
|
*/
|
|
59
|
-
const args = this.props.arguments.map(
|
|
60
|
-
|
|
60
|
+
const args = this.props.arguments.map(
|
|
61
|
+
({ name, type, isOptional }) => {
|
|
62
|
+
if (isOptional) {
|
|
63
|
+
if (name in namedArgs) {
|
|
64
|
+
return new ConstrData(0, [namedArgs[name]])
|
|
65
|
+
} else {
|
|
66
|
+
return new ConstrData(1, [])
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
const rawArg = expectSome(namedArgs[name])
|
|
61
70
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
71
|
+
// TODO: apply type conversion
|
|
72
|
+
return rawArg
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
)
|
|
65
76
|
|
|
66
77
|
if (this.props.requiresScriptContext) {
|
|
67
78
|
args.push(expectSome(namedArgs["$scriptContext"]))
|
|
@@ -312,7 +312,7 @@ export class LoadedScriptsWriter {
|
|
|
312
312
|
`export const ${v.name} = {
|
|
313
313
|
$name: /** @type {const} */ ("${v.name}"),
|
|
314
314
|
$purpose: /** @type {const} */ ("${v.purpose}"),
|
|
315
|
-
${isSome(currentScriptIndex) ? ` $currentScriptIndex: /** @type {const} */ (${currentScriptIndex})
|
|
315
|
+
${isSome(currentScriptIndex) ? ` $currentScriptIndex: /** @type {const} */ (${currentScriptIndex}),` : ""}
|
|
316
316
|
$sourceCode: ${JSON.stringify(v.sourceCode)},
|
|
317
317
|
$dependencies: /** @type {const} */ ([${v.moduleDepedencies.join(", ")}]),
|
|
318
318
|
$hashDependencies: [${v.hashDependencies.filter((d) => d != v.name).join(", ")}],
|
|
@@ -325,7 +325,7 @@ ${datumTypes ? ` $Datum: (config) => /** @type {Cast<${datumTypes[0]}, ${datu
|
|
|
325
325
|
`export const ${v.name}: {
|
|
326
326
|
$name: "${v.name}"
|
|
327
327
|
$purpose: "${v.purpose}"
|
|
328
|
-
${isSome(currentScriptIndex) ? ` $currentScriptIndex: ${currentScriptIndex}
|
|
328
|
+
${isSome(currentScriptIndex) ? ` $currentScriptIndex: ${currentScriptIndex}` : ""}
|
|
329
329
|
$sourceCode: string
|
|
330
330
|
$dependencies: [${v.moduleDepedencies.map((d) => `typeof ${d}`).join(", ")}]
|
|
331
331
|
$hashDependencies: [${v.hashDependencies
|
|
@@ -341,7 +341,7 @@ ${datumTypes ? ` $Datum: ConfigurableCast<${datumTypes[0]}, ${datumTypes[1]}>
|
|
|
341
341
|
`export const ${v.name} = {
|
|
342
342
|
$name: "${v.name}" as const,
|
|
343
343
|
$purpose: "${v.purpose}" as const,
|
|
344
|
-
${isSome(currentScriptIndex) ? ` $currentScriptIndex: ${currentScriptIndex} as const
|
|
344
|
+
${isSome(currentScriptIndex) ? ` $currentScriptIndex: ${currentScriptIndex} as const,` : ""}
|
|
345
345
|
$sourceCode: ${JSON.stringify(v.sourceCode)} as string,
|
|
346
346
|
$dependencies: [${v.moduleDepedencies.join(", ")}] as const,
|
|
347
347
|
$hashDependencies: [${v.hashDependencies.filter((d) => d != v.name).join(", ")}],
|
|
@@ -403,10 +403,8 @@ function genFuncType(fn) {
|
|
|
403
403
|
fields.push("$currentScript: string")
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
fn.arguments.forEach(({ name, type: _type }, i) => {
|
|
407
|
-
|
|
408
|
-
fields.push(`${name}: UplcData`)
|
|
409
|
-
}
|
|
406
|
+
fn.arguments.forEach(({ name, type: _type, isOptional }, i) => {
|
|
407
|
+
fields.push(`${name}${isOptional ? "?" : ""}: UplcData`)
|
|
410
408
|
})
|
|
411
409
|
|
|
412
410
|
return `(args: {${fields.join(", ")}}) => UplcData`
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { bytesToHex } from "@helios-lang/codec-utils"
|
|
2
2
|
import {
|
|
3
3
|
MintingPolicyHash,
|
|
4
|
+
ScriptHash,
|
|
4
5
|
StakingValidatorHash,
|
|
5
6
|
ValidatorHash
|
|
6
7
|
} from "@helios-lang/ledger"
|
|
@@ -219,6 +220,13 @@ export class DagCompiler {
|
|
|
219
220
|
datum: configureCast(validator.$Datum, this.castConfig)
|
|
220
221
|
})
|
|
221
222
|
break
|
|
223
|
+
case "mixed":
|
|
224
|
+
this.cachedValidators[name] = new ScriptHash(hash, {
|
|
225
|
+
program,
|
|
226
|
+
redeemer,
|
|
227
|
+
datum: configureCast(validator.$Datum, this.castConfig)
|
|
228
|
+
})
|
|
229
|
+
break
|
|
222
230
|
case "minting":
|
|
223
231
|
this.cachedValidators[name] = new MintingPolicyHash(hash, {
|
|
224
232
|
program,
|
|
@@ -234,7 +242,9 @@ export class DagCompiler {
|
|
|
234
242
|
})
|
|
235
243
|
break
|
|
236
244
|
default:
|
|
237
|
-
throw new Error(
|
|
245
|
+
throw new Error(
|
|
246
|
+
`unhandled purpose '${/** @type {any} */ (validator).$purpose}'`
|
|
247
|
+
)
|
|
238
248
|
}
|
|
239
249
|
}
|
|
240
250
|
|
package/types/cast/UserFunc.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* arguments: {
|
|
6
6
|
* name: string
|
|
7
7
|
* type: TypeSchema
|
|
8
|
+
* isOptional: boolean
|
|
8
9
|
* }[]
|
|
9
10
|
* returns: TypeSchema
|
|
10
11
|
* validatorIndices?: Record<string, number>
|
|
@@ -45,6 +46,7 @@ export type UserFuncProps = {
|
|
|
45
46
|
arguments: {
|
|
46
47
|
name: string;
|
|
47
48
|
type: TypeSchema;
|
|
49
|
+
isOptional: boolean;
|
|
48
50
|
}[];
|
|
49
51
|
returns: TypeSchema;
|
|
50
52
|
validatorIndices?: Record<string, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserFunc.d.ts","sourceRoot":"","sources":["../../src/cast/UserFunc.js"],"names":[],"mappings":"AASA
|
|
1
|
+
{"version":3,"file":"UserFunc.d.ts","sourceRoot":"","sources":["../../src/cast/UserFunc.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH;IAeI;;;OAGG;IACH,kBAHW,WAAW,SACX,aAAa,EAKvB;IArBD;;;;OAIG;IACH,sBAAI;IAEJ;;;;OAIG;IACH,uBAAK;IAWL;;OAEG;IACH,oBAuDC;CACJ;yBA5GY,OAAO,yBAAyB,EAAE,UAAU;uBAC5C,OAAO,mBAAmB,EAAE,QAAQ;0BACpC,OAAO,mBAAmB,EAAE,WAAW;4BAOvC;IACZ,qBAAyB,EAAE,OAAO,CAAA;IAClC,qBAAyB,EAAE,OAAO,CAAA;IAClC,SAAa,EAAE;QACf,MAAY,MAAM,CAAA;QAClB,IAAU,EAAE,UAAU,CAAA;QACtB,UAAgB,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;IACP,OAAW,EAAE,UAAU,CAAA;IACvB,gBAAoB,CAAC,EAAE,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeCheckedModule.d.ts","sourceRoot":"","sources":["../../src/codegen/TypeCheckedModule.js"],"names":[],"mappings":"yBAGa,OAAO,iBAAiB,EAAE,UAAU;kCAIpC;IACZ,qBAAyB,EAAE,OAAO,CAAA;IAClC,qBAAyB,EAAE,OAAO,CAAA;IAClC,SAAa,EAAE;QACf,MAAY,MAAM,CAAA;QAClB,IAAU,EAAE,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"TypeCheckedModule.d.ts","sourceRoot":"","sources":["../../src/codegen/TypeCheckedModule.js"],"names":[],"mappings":"yBAGa,OAAO,iBAAiB,EAAE,UAAU;kCAIpC;IACZ,qBAAyB,EAAE,OAAO,CAAA;IAClC,qBAAyB,EAAE,OAAO,CAAA;IAClC,SAAa,EAAE;QACf,MAAY,MAAM,CAAA;QAClB,IAAU,EAAE,UAAU,CAAA;QACtB,UAAgB,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;IACP,OAAW,EAAE,UAAU,CAAA;CACpB;gCAIS;IACZ,MAAU,MAAM,CAAA;IAChB,OAAW,EAAE,MAAM,CAAA;IACnB,UAAc,EAAE,MAAM,CAAA;IACtB,iBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,KAAS,EAAE,OAAO,MAAM,EAAE,UAAU,CAAC,CAAA;IACrC,SAAa,CAAC,EAAE,OAAO,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAChD"}
|
|
@@ -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":"AAgVA;;;GAGG;AACH,iDAHW,eAAe,GACb,MAAM,EAAE,CAsBpB;AA7VD;;;;;;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,CAgI7B;IAED;;;;;OAKG;IACH,4BAsCC;IAED;;;;;OAKG;IACH,yBA0BC;IAED;;;;;OAKG;IACH,qBAoBC;IAED;;;;;OAKG;IACH,4BAeC;CACJ;0BAlUY,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"}
|