Skip to content

Commit

Permalink
0.8.0-dev0
Browse files Browse the repository at this point in the history
  • Loading branch information
michele-nuzzi committed May 18, 2024
1 parent 45e6ef7 commit 220beff
Show file tree
Hide file tree
Showing 13 changed files with 7,642 additions and 9,039 deletions.
13,045 changes: 5,711 additions & 7,334 deletions package-lock.json

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@harmoniclabs/plu-ts",
"version": "0.7.0",
"version": "0.8.0-dev0",
"description": "An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
Expand Down Expand Up @@ -76,11 +76,11 @@
"@harmoniclabs/cbor": "^1.3.0",
"@harmoniclabs/plutus-data": "^1.2.4",
"@harmoniclabs/cardano-costmodels-ts": "^1.1.0",
"@harmoniclabs/plutus-machine": "^1.1.0",
"@harmoniclabs/plutus-machine": "^2.0.0-dev2",
"@harmoniclabs/uplc": "^1.2.3",
"@harmoniclabs/cardano-ledger-ts": "^0.2.0-dev4",
"@harmoniclabs/plu-ts-offchain": "^0.1.13",
"@harmoniclabs/plu-ts-onchain": "^0.2.8"
"@harmoniclabs/cardano-ledger-ts": "^0.2.0-dev5",
"@harmoniclabs/plu-ts-offchain": "0.1.13-dev2",
"@harmoniclabs/plu-ts-onchain": "^0.3.0-dev2"
},
"devDependencies": {
"@babel/preset-env": "^7.18.6",
Expand Down
3,534 changes: 1,887 additions & 1,647 deletions packages/offchain/package-lock.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions packages/offchain/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@harmoniclabs/plu-ts-offchain",
"version": "0.1.13",
"version": "0.1.13-dev2",
"description": "An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
Expand Down Expand Up @@ -64,9 +64,9 @@
"@harmoniclabs/cbor": "^1.3.0",
"@harmoniclabs/plutus-data": "^1.2.4",
"@harmoniclabs/cardano-costmodels-ts": "^1.1.0",
"@harmoniclabs/plutus-machine": "^1.1.2",
"@harmoniclabs/plutus-machine": "^2.0.0-dev2",
"@harmoniclabs/uplc": "^1.2.3",
"@harmoniclabs/cardano-ledger-ts": "^0.2.0-dev5"
"@harmoniclabs/cardano-ledger-ts": "^0.2.0-dev6"
},
"devDependencies": {
"@babel/preset-env": "^7.18.6",
Expand Down
4 changes: 2 additions & 2 deletions packages/offchain/src/TxBuilder/IProvider/IProvider.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Address, AddressStr, Hash32, ProtocolParamters, UTxO } from "@harmoniclabs/cardano-ledger-ts";
import { Address, AddressStr, Hash32, ProtocolParameters, UTxO } from "@harmoniclabs/cardano-ledger-ts";
import { CanResolveToUTxO } from "../CanResolveToUTxO/CanResolveToUTxO";
import { GenesisInfos } from "../GenesisInfos";
import { CanBeData } from "../../utils/CanBeData";
Expand All @@ -8,7 +8,7 @@ export interface IGetGenesisInfos {
}

export interface IGetProtocolParameters {
getProtocolParameters: () => Promise<ProtocolParamters>
getProtocolParameters: () => Promise<ProtocolParameters>
}

export interface IResolveUTxOs {
Expand Down
36 changes: 12 additions & 24 deletions packages/offchain/src/TxBuilder/TxBuilderRunner/TxBuilderRunner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { defineReadOnlyProperty, isObject } from "@harmoniclabs/obj-utils";
import type { ITxRunnerProvider } from "../IProvider";
import type { TxBuilder } from "../TxBuilder";
import { ITxBuildArgs, ITxBuildOutput, NormalizedITxBuildArgs, cloneITxBuildArgs, normalizeITxBuildArgs } from "../../txBuild";
import { Address, AddressStr, CertStakeDelegation, Certificate, Hash28, Hash32, ITxOut, ITxOutRef, IUTxO, IValuePolicyEntry, PlutusScriptType, PoolKeyHash, PoolParams, PubKeyHash, Script, ScriptType, StakeAddress, StakeAddressBech32, Credential, StakeValidatorHash, Tx, TxIn, TxMetadata, TxMetadatum, TxOutRefStr, UTxO, Value, forceTxOutRefStr, isITxOut, isIUTxO, CredentialType, CertStakeDeRegistration, CertStakeRegistration, CertPoolRegistration, IPoolParams, CanBeHash28, CertPoolRetirement, StakeCredentials, ITxWithdrawalsEntry, Vote, IAnchor, IVoter, ProtocolParameters, IProposalProcedure, ITxWithdrawals, TxWithdrawals, INewCommitteeEntry, IConstitution, VotingProcedure, VotingProcedures, forceTxOutRef, IVotingProceduresEntry, TxOutRef, VoterKind, GovActionType } from "@harmoniclabs/cardano-ledger-ts";
import { Address, AddressStr, CertStakeDelegation, Certificate, Hash28, Hash32, ITxOut, ITxOutRef, IUTxO, IValuePolicyEntry, PlutusScriptType, PoolKeyHash, PoolParams, PubKeyHash, Script, ScriptType, StakeAddress, StakeAddressBech32, Credential, StakeValidatorHash, Tx, TxIn, TxMetadata, TxMetadatum, TxOutRefStr, UTxO, Value, forceTxOutRefStr, isITxOut, isIUTxO, CredentialType, CertStakeDeRegistration, CertStakeRegistration, CertPoolRegistration, IPoolParams, CanBeHash28, CertPoolRetirement, StakeCredentials, ITxWithdrawalsEntry, Vote, IAnchor, IVoter, ProtocolParameters, IProposalProcedure, ITxWithdrawals, TxWithdrawals, INewCommitteeEntry, IConstitution, VotingProcedure, VotingProcedures, forceTxOutRef, IVotingProceduresEntry, TxOutRef, VoterKind, GovActionType, isIVotingProceduresEntry, isIProposalProcedure, eqITxOutRef } from "@harmoniclabs/cardano-ledger-ts";
import { CanBeUInteger, canBeUInteger, forceBigUInt } from "../../utils/ints";
import { CanResolveToUTxO, cloneCanResolveToUTxO, shouldResolveToUTxO } from "../CanResolveToUTxO/CanResolveToUTxO";
import { jsonToMetadata } from "./jsonToMetadata";
Expand Down Expand Up @@ -1490,7 +1490,10 @@ export class TxBuilderRunner
votes: [ govActionVote ]
};

const entry = buildArgs.votingProcedures.find(({ votingProcedure: { voter: entryVoter } }) => eqIVoter( entryVoter, voter ));
const entry = buildArgs.votingProcedures.find( elem => {
const votingProcedure = isIVotingProceduresEntry( elem ) ? elem : elem.votingProcedure;
return eqIVoter( voter, votingProcedure.voter );
});
if( !entry )
{
buildArgs.votingProcedures.push({
Expand All @@ -1509,15 +1512,16 @@ export class TxBuilderRunner
}
else
{
const govActionEntry = entry.votingProcedure.votes.find(({ govActionId: entryGovActionId }) =>
const votingProcedure = isIVotingProceduresEntry( entry ) ? entry : entry.votingProcedure;
const govActionEntry = votingProcedure.votes.find(({ govActionId: entryGovActionId }) =>
eqITxOutRef(
govActionId as ITxOutRef,
entryGovActionId
)
);
if( !govActionEntry )
{
entry.votingProcedure.votes.push( govActionVote )
votingProcedure.votes.push( govActionVote )
}
else
{
Expand Down Expand Up @@ -1688,9 +1692,10 @@ export class TxBuilderRunner
)
})

const govActionRef =
buildArgs.proposalProcedures[ buildArgs.proposalProcedures.length - 1 ]
.proposalProcedure.govAction;
const _proposalProcedure = buildArgs.proposalProcedures[ buildArgs.proposalProcedures.length - 1 ];
const govActionRef = isIProposalProcedure( _proposalProcedure ) ?
_proposalProcedure.govAction :
_proposalProcedure.proposalProcedure.govAction;

if(
(
Expand Down Expand Up @@ -2322,21 +2327,4 @@ export class TxBuilderRunner
}
);
}
}


export function eqITxOutRef( a: ITxOutRef, b: ITxOutRef ): boolean
{
if( !isObject( a ) ) return false;
if( !isObject( b ) ) return false;

try {
return (
new Hash32( a.id ).toString() === new Hash32( b.id ).toString() &&
typeof a.index === "number" &&
a.index === b.index
);
} catch {
return false;
}
}
14 changes: 7 additions & 7 deletions packages/offchain/src/TxBuilder/keepRelevant.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ValueUnits, Value } from "@harmoniclabs/cardano-ledger-ts";
import { ValueUnits, Value, UTxO } from "@harmoniclabs/cardano-ledger-ts";
import { ITxBuildInput, cloneITxBuildInput } from "../txBuild";
import { CanBeUInteger, forceBigUInt } from "../utils/ints";

Expand All @@ -21,7 +21,7 @@ export function keepRelevant(
: forceBigUInt( minimumLovelaceRequired );

const multiAssetIns = initialUTxOSet.filter((input) =>
input.utxo.resolved.value.toUnits()
new UTxO( input.utxo ).resolved.value.toUnits()
.filter(( asset ) => asset.unit !== "lovelace")
.some(( asset ) => reqOutputKeys.includes( asset.unit ))
);
Expand Down Expand Up @@ -51,7 +51,7 @@ export function keepRelevant(
function getTotLovelaces(multiAsset: ITxBuildInput[])
{
return multiAsset.reduce(
(sum, input) => sum + input.utxo.resolved.value.lovelaces,
(sum, input) => sum + new UTxO(input.utxo).resolved.value.lovelaces,
BigInt(0)
);
};
Expand All @@ -61,7 +61,7 @@ function remainingLovelace(quantity: bigint, initialUTxOSet: ITxBuildInput[]): I
const sortedUTxOs = initialUTxOSet.sort(
(a, b) => parseInt(
BigInt(
a.utxo.resolved.value.lovelaces - b.utxo.resolved.value.lovelaces
new UTxO(a.utxo).resolved.value.lovelaces - new UTxO(b.utxo).resolved.value.lovelaces
).toString()
)
);
Expand All @@ -85,12 +85,12 @@ function enoughValueHasBeenSelected(

return selection
.filter(( input ) => {
return input.utxo.resolved.value.toUnits()
return new UTxO(input.utxo).resolved.value.toUnits()
.some((a) => a.unit === unit );
})
.reduce(
(selectedQuantity, input) => {
const utxoQuantity = input.utxo.resolved.value.toUnits()
const utxoQuantity = new UTxO(input.utxo).resolved.value.toUnits()
.reduce(
(quantity, a) => quantity + unit === a.unit ? BigInt( a.quantity ) : BigInt(0),
BigInt(0),
Expand Down Expand Up @@ -136,7 +136,7 @@ function canValueBeSelected(
): boolean
{
return Object.keys( assets ).some(( unit ) => {
return input.utxo.resolved.value.toUnits()
return new UTxO(input.utxo).resolved.value.toUnits()
.some(( asset ) => asset.unit === unit );
});
}
3 changes: 1 addition & 2 deletions packages/offchain/src/txBuild/ScriptWithRedeemer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { IUTxO, Script, UTxO, isIUTxO } from "@harmoniclabs/cardano-ledger-ts";
import { Data } from "@harmoniclabs/plutus-data";
import { CanBeData } from "../utils/CanBeData";
import { forceData } from "@harmoniclabs/plu-ts-offchain";
import { CanBeData, forceData } from "../utils/CanBeData";

export type ScriptWithRedeemer = {
inline: Script
Expand Down
8 changes: 4 additions & 4 deletions packages/offchain/src/utils/CanBeData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { ByteString } from "@harmoniclabs/bytestring";
import { CborObj, CborString, isCborObj } from "@harmoniclabs/cbor";
import { hasOwn } from "@harmoniclabs/obj-utils";
import { Data, isData, dataFromCbor, dataFromCborObj } from "@harmoniclabs/plutus-data";
import { Machine } from "@harmoniclabs/plutus-machine";
import { ToUPLC, UPLCConst } from "@harmoniclabs/uplc";
import { CEKConst, Machine } from "@harmoniclabs/plutus-machine";
import { ToUPLC } from "@harmoniclabs/uplc";

export type CanBeData = Data | ToUPLC | CborObj | CborString | string;

Expand All @@ -18,7 +18,7 @@ export function cloneCanBeData( stuff: CanBeData ): CanBeData
) return stuff.clone() as any;

const result = Machine.evalSimple( stuff.toUPLC() );
if(!( result instanceof UPLCConst ))
if(!( result instanceof CEKConst ))
{
throw new Error(
"`CanBeData` object that implements `ToUPLC` did not evaluated to a constant"
Expand Down Expand Up @@ -70,7 +70,7 @@ export function forceData( data: CanBeData ): Data
)
{
const uplcData = Machine.evalSimple( data.toUPLC() );
if( !( uplcData instanceof UPLCConst ) )
if( !( uplcData instanceof CEKConst ) )
{
throw new Error(
"term passed as 'datum' field evaluated to an error"
Expand Down
12 changes: 6 additions & 6 deletions packages/onchain/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions packages/onchain/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@harmoniclabs/plu-ts-onchain",
"version": "0.3.0-dev1",
"version": "0.3.0-dev2",
"description": "An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
Expand Down Expand Up @@ -66,7 +66,7 @@
"@harmoniclabs/cbor": "^1.3.0",
"@harmoniclabs/plutus-data": "^1.2.4",
"@harmoniclabs/cardano-costmodels-ts": "^1.1.0",
"@harmoniclabs/plutus-machine": "^2.0.0-dev1",
"@harmoniclabs/plutus-machine": "^2.0.0-dev2",
"@harmoniclabs/uplc": "^1.2.3",
"@harmoniclabs/cardano-ledger-ts": "^0.2.0-dev6"
},
Expand Down
3 changes: 1 addition & 2 deletions packages/onchain/src/pluts/Script/blueprint/toDataSchema.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { DataSchema, DataSchemaConstr, DataSchemaList, DataSchemaMap } from "./types";
import { PrimType, TermType, bs, data, int, isTaggedAsAlias, list, map, termTypeToString, typeExtends, unwrapAlias } from "../../type_system";
import { PrimType, TermType, bs, data, int, isTaggedAsAlias, list, map, termTypeToString, tyVar, typeExtends, unwrapAlias } from "../../type_system";
import { getElemsT, getFstT, unwrapAsData } from "../../type_system/tyArgs";
import { tyVar } from "@harmoniclabs/plu-ts-onchain";

export function toDataSchema( t: TermType, title?: string ): DataSchema
{
Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export * from "@harmoniclabs/cardano-costmodels-ts";

export * from "@harmoniclabs/plutus-machine";

export * from "@harmoniclabs/plu-ts-offchain";
export * from "@harmoniclabs/cardano-ledger-ts";
export * from "@harmoniclabs/plu-ts-offchain";

export * from "@harmoniclabs/plu-ts-onchain";

0 comments on commit 220beff

Please sign in to comment.