Releases: marlowe-lang/marlowe-ts-sdk
0.4.0-beta
The Marlowe team is happy to announce the 0.4.0 release :
General
-
Marlowe Template (PR-184) : Created a new experimental package
@marlowe.io/marlowe-templatethat helps to share the parameters used in the creation of a Marlowe contract. -
Initial Account Deposits Feature Integration (Runtime v1.0.0): (PR-188)
- Purpose: This update introduces the capability for users to make initial deposits into their accounts upon creation. This feature aims to streamline the account setup process and enhance user experience.
- Benefits: This feature squashes the Contract Creation and Initial Input Deposits into 1 transaction instead of multiple ones.
-
Introduction of a New Contract API in the Runtime Lifecycle API: (PR-188) :
- Purpose: The addition of a new Contract API is designed to provide developers with more flexibility and control (contract instance concept) over smart contract management within the runtime environment.
- Benefits: Developers can now leverage enhanced functionalities for deploying, updating, and interacting with smart contracts. This API simplifies complex contract operations and supports more robust smart contract development.
-
Experimental CIP-45 support (PR-179) : An example shows how to use the
@marlowe.io/wallet/peer-connectmodule together with the https://github.com/fabianbormann/cardano-peer-connect library.
@marlowe.io/wallet
- Feat: Added a
@marlowe.io/wallet/peer-connectmodule to enable mobile support by adapting to the cardano-peer-connect library. (PR-179)
@marlowe.io/language-examples
- Feat:
Atomic swap v2: Simplified version using the new runtimev1.0.0feature (initial account deposits)- see end-to-end tests for examples (e.g :
swap.ada.token.e2e.spec.ts)
- see end-to-end tests for examples (e.g :
@marlowe.io/runtime-rest-client
-
mkRestClientprovides optionalstrictparameter for performing dynamic type checking inRestClientmethods. (PR-180) -
BREAKING CHANGE The following
RestClientmethods uses keyword argument object instead of positional arguments. (PR-180)createContractSourcesgetContractByIdsubmitContractgetTransactionsForContractsubmitContractTransactiongetContractTransactionByIdgetWithdrawalByIdsubmitWithdrawal
-
Feat:
initial account deposits(runtime v1.0.0) for Contract Creation (BuildCreateContractTxRequestviabuildCreateContractTx):(PR-188)
@marlowe.io/runtime-core
-
Feat: Added AddressBech32 validation using the lucid library (PR-184)
-
Fix: Added proper type guards to Metadata (PR-184)
-
Fix: Branding of ContractId and TxId (PR-185)
-
Feat:
initial account deposits(runtime v1.0.0) for Contract Creation (PR-188):- Added
export type AccountDeposits = { [key in AddressOrRole]: AssetsMap };and associated utility functions.
- Added
@marlowe.io/runtime-lifecycle
-
Feat (PLT-9089): Added support for contract bundles in the
lifecycle.contracts.createContractfunction. (PR-167) -
mkRuntimeLifecycleprovides optionalstrictparameter for performing dynamic type checking inRestClientmethods. (PR-180) -
Fix: Temporal fix for converting the cardano time interval to the Marlowe time interval in getInputHistory (PR-181)
-
Feat: Added a new experimental API for computing, simulating and applying the next applicable Actions/Inputs. (PR-187)
-
Doc: Improved package main documentation (PR-187)
-
Feat: New Contract API
packages/runtime/lifecycle/src/generic/new-contract-api.ts(PR-188):- Generic
waitConfirmation(): same for contract creation and apply inputs - Seamless Integration of Applicable Actions API
- simplfied interface (
createandloadwith a concept ofContractInstanceobject) - see end-to-end tests for examples (e.g :
swap.ada.token.e2e.spec.ts)
- Generic
-
Feat:
initial account depositsfeature (runtime v1.0.0) for Contract Creation (PR-188):- new parameter field
accountDepositsin - e.g.
- new parameter field
const sellerContractInstance = await sellerLifecycle.newContractAPI.create({
contract: swapContract,
roles: { [scheme.ask.buyer.role_token]: mintRole("OpenRole") },
accountDeposits: mkaccountDeposits([[scheme.offer.seller, seller.assetsProvisioned]]),
});@marlowe.io/marlowe-object
- BREAKING CHANGE Feat: Added Annotations to the contract type. (PR-181)
- Experimental Feat: Added a sourceMap API to match the annotated marlowe-object source with the ContractClosure. (PR-181)
Full Changelog: 0.3.0-beta...0.4.0-beta
0.3.0-beta
The Marlowe team is happy to announce the 0.3.0 release with the following Milestones completed:
- Add Node.js/Deno support
- Completed 1-1 feature parity between the TS-SDK and Runtime 0.0.6
- Added an open role example
- Added a marlowe-object (merkleized contracts) example
A more detailed description of the changes can be found next
General
-
Feat (PLT-8693): Added Node.js support (PR-114)
-
Feat (PLT-8836): Changed documentation theme. (PR-122)
-
Feat: Added debugging configuration for VSCode. Now if you are developing with VSCode you can open the folder as a workspace and the Javascript Debug Terminal will have the appropiate source maps. (PR-136).
-
Feat: Started an experimental getApplicableActions that should replace the current getApplicableInputs. (PR-136)
-
Fix (PLT-8889): Solved issues with the github actions that run the tests (PR-121)
-
CI (PLT-8890): Stop automatic docs deployment from main and update release instructions (#2f266ff)
-
Fix (PLT-9008): Fix documentation warnings and add a CI check to avoid them in the future. (PR-139)
Examples
- Feat: Added a new interactive NodeJs example to make delayed payments with staking and merkleization. (PR-136)
@marlowe.io/wallet
- Feat (PLT-8693): Added a Lucid implementation that works on the Browser/NodeJs/Deno (PR-114)
@marlowe.io/adapter
- Feat: Added a bigint utilities adapter. (PR-136)
- Feat: Added iso8601ToPosixTime to the time adapter. (PR-136)
@marlowe.io/language-core-v1
- Feat: Added SingleInputTx to capture a single step transaction (either a single input or an empty tx). (PR-136).
- Feat: Added getNextTimeout to see what is the next timeout of a contract. (PR-136).
- Fix: Fix how merkleized inputs are serialized (PR-136).
- Fix: Solved a semantic issue with assoc list where delete was duplicating entries. (PR-159)
@marlowe.io/language-examples
- Feat: New swap contract version added, A simple Swap was initially implemented to test the runtime-lifecycle APIs. We have replaced this version with a more elaborated one that will be used in the Order Book Swap Prototype. For more details see @marlowe.io/language-examples (PR)
@marlowe.io/runtime-rest-client
-
BREAKING CHANGE Refactor:
createContractEndpoint has been renamed tobuildCreateContractTx(PR-54) -
BREAKING CHANGE Refactor: Extracted Pagination logic for the 4 collection queries (added total count of the query and current Page information ) (PR-142)
- The 4 queries response structure have changed :
- from :
json {headers : {..}, previousRange : ".." , next:".." } - to :
json {contracts: {..}, page : {..} }- or
json {transactions: {..}, page : {..} } - or
json {payouts: {..}, page : {..} } - or
json {withdrawals: {..}, page : {..} }
- from :
- The 4 queries response structure have changed :
-
BREAKING CHANGE Refactor: Create contract sources now uses a single parameter ContractBundle, instead of two separate bundle and main entrypoint parameters. (PR-136)
-
BREAKING CHANGE Feat: Modified the endpoint
healthcheckto returnRuntimeStatus(version deployed, Network Id of the Node and tips) instead of aboolean. (PR-158) -
BREAKING CHANGE Fix: Pagination responses not always return a current header. (PR-136)
-
Feat (PLT-7704): Extend the rest client with procedure
getPayouts. (PR-124) -
Feat (PLT-7705): Extend the rest client with procedure
getPayoutById. (PR-124) -
Feat (PLT-7701): Extend the rest client with procedure
getContractSourceById. (PR-128) -
Feat (PLT-7702): Extend the rest client with procedure
getContractSourceAdjacency. (PR-128) -
Feat (PLT-7703): Extend the rest client with procedure
getContractSourceClosure. (PR-128) -
Feat (PLT-8427): Extend the rest client with procedure
getNextStepsForContract. (PR-128) -
Feat: Added
@marlowe.io/runtime-rest-client/guardsin a similar way as@marlowe.io/labguage-core-v1/guards(PR-142) -
Fix: Revived integration tests (PR-142)
@marlowe.io/runtime-core
-
BREAKING CHANGE Refactor:
AddressBech32is a branded type instead of newtype (unAddressBech32has been removed and is not necessary anymore) : PR-127 -
BREAKING CHANGE Refactor:
PolicyIdis a Branded Type instead of a Newtype (PR-142) -
BREAKING CHANGE Refactor:
ContractIdis a Branded Type instead of a Newtype (PR-142) -
Feat: added
TokensMapandAssetsMap(PR-142)
@marlowe.io/runtime-lifecycle
-
Feat (PLT-8693): Added a top-level
mkRuntimeLifecyclethat receives a wallet implementation instead of automatically creating one (PR-114) -
Feat:
createContractis complete request-wise for creating non-merkleized contracts (PR-54) -
Feat: Added restClient to the lifecycle object for easier querying. (PR-136)
-
Feat: Added getInputHistory to get a list of SingleInputTx applied to a contract. (PR-136)
@marlowe.io/marlowe-object
- Feat: Added ContractBundle to represent a bundle with a main entrypoint. (PR-136)
0.3.0-beta RC2
The Marlowe team is happy to announce the 0.3.0 release with the following Milestones completed:
- Added Node.js/Deno support
- Added Open Role support
- Completed 1-1 feature parity between the TS-SDK and Runtime 0.0.6
- Added a Atomic Swap Contract (Open Role example)
- Added a marlowe-object (merkleized contracts) example
A more detailed description of the changes can be found next
General
-
Feat (PLT-8693): Added Node.js support (PR-114)
-
Feat (PLT-8836): Changed documentation theme. (PR-122)
-
Feat: Added debugging configuration for VSCode. Now if you are developing with VSCode you can open the folder as a workspace and the Javascript Debug Terminal will have the appropiate source maps. (PR-136).
-
Feat: Started an experimental getApplicableActions that should replace the current getApplicableInputs. (PR-136)
-
Fix (PLT-8889): Solved issues with the github actions that run the tests (PR-121)
-
CI (PLT-8890): Stop automatic docs deployment from main and update release instructions (#2f266ff)
-
Fix (PLT-9008): Fix documentation warnings and add a CI check to avoid them in the future. (PR-139)
Examples
- Feat: Added a new interactive NodeJs example to make delayed payments with staking and merkleization. (PR-136)
@marlowe.io/wallet
- Feat (PLT-8693): Added a Lucid implementation that works on the Browser/NodeJs/Deno (PR-114)
@marlowe.io/adapter
- Feat: Added a bigint utilities adapter. (PR-136)
- Feat: Added iso8601ToPosixTime to the time adapter. (PR-136)
@marlowe.io/language-core-v1
- Feat: Added SingleInputTx to capture a single step transaction (either a single input or an empty tx). (PR-136).
- Feat: Added getNextTimeout to see what is the next timeout of a contract. (PR-136).
- Fix: Fix how merkleized inputs are serialized (PR-136).
- Fix: Solved a semantic issue with assoc list where delete was duplicating entries. (PR-159)
@marlowe.io/language-examples
- Feat: New swap contract version added, A simple Swap was initially implemented to test the runtime-lifecycle APIs. We have replaced this version with a more elaborated one that will be used in the Order Book Swap Prototype. For more details see @marlowe.io/language-examples (PR)
@marlowe.io/runtime-rest-client
-
BREAKING CHANGE Refactor:
createContractEndpoint has been renamed tobuildCreateContractTx(PR-54) -
BREAKING CHANGE Refactor: Extracted Pagination logic for the 4 collection queries (added total count of the query and current Page information ) (PR-142)
- The 4 queries response structure have changed :
- from :
json {headers : {..}, previousRange : ".." , next:".." } - to :
json {contracts: {..}, page : {..} }- or
json {transactions: {..}, page : {..} } - or
json {payouts: {..}, page : {..} } - or
json {withdrawals: {..}, page : {..} }
- from :
- The 4 queries response structure have changed :
-
BREAKING CHANGE Refactor: Create contract sources now uses a single parameter ContractBundle, instead of two separate bundle and main entrypoint parameters. (PR-136)
-
BREAKING CHANGE Feat: Modified the endpoint
healthcheckto returnRuntimeStatus(version deployed, Network Id of the Node and tips) instead of aboolean. (PR-158) -
BREAKING CHANGE Fix: Pagination responses not always return a current header. (PR-136)
-
Feat (PLT-7704): Extend the rest client with procedure
getPayouts. (PR-124) -
Feat (PLT-7705): Extend the rest client with procedure
getPayoutById. (PR-124) -
Feat (PLT-7701): Extend the rest client with procedure
getContractSourceById. (PR-128) -
Feat (PLT-7702): Extend the rest client with procedure
getContractSourceAdjacency. (PR-128) -
Feat (PLT-7703): Extend the rest client with procedure
getContractSourceClosure. (PR-128) -
Feat (PLT-8427): Extend the rest client with procedure
getNextStepsForContract. (PR-128) -
Feat: Added
@marlowe.io/runtime-rest-client/guardsin a similar way as@marlowe.io/labguage-core-v1/guards(PR-142) -
Fix: Revived integration tests (PR-142)
@marlowe.io/runtime-core
-
BREAKING CHANGE Refactor:
AddressBech32is a branded type instead of newtype (unAddressBech32has been removed and is not necessary anymore) : PR-127 -
BREAKING CHANGE Refactor:
PolicyIdis a Branded Type instead of a Newtype (PR-142) -
BREAKING CHANGE Refactor:
ContractIdis a Branded Type instead of a Newtype (PR-142) -
Feat: added
TokensMapandAssetsMap(PR-142)
@marlowe.io/runtime-lifecycle
-
Feat (PLT-8693): Added a top-level
mkRuntimeLifecyclethat receives a wallet implementation instead of automatically creating one (PR-114) -
Feat:
createContractis complete request-wise for creating non-merkleized contracts (PR-54) -
Feat: Added restClient to the lifecycle object for easier querying. (PR-136)
-
Feat: Added getInputHistory to get a list of SingleInputTx applied to a contract. (PR-136)
@marlowe.io/marlowe-object
- Feat: Added ContractBundle to represent a bundle with a main entrypoint. (PR-136)
0.2.0-beta
General
-
Reformat code with prettier and alejandra using the treefmt tool
-
Improved the way the SDK gets imported in the browser by the use of importmaps. Included import documentation in each package.
-
Renamed the global
pocsfolder toexamples -
Fix url generation on the import maps.
-
Introduced the @marlowe.io/marlowe-object package to facilitate the creation of large contracts using Merkleization.
-
Added typedoc documentation.
@marlowe.io/wallet
-
Renamed the
pocs/runtimeCIP30Flow.htmltopocs/wallet-flow.htmland modified it to highlight the wallet capabilities. -
BREAKING CHANGE: Removed
fp-tsfrom the user facing API. -
BREAKING CHANGE: In the browser module
getExtensionInstancewas renamed tomkBrowserWallet -
BREAKING CHANGE: Renamed signTxTheCIP30Way to signTx
-
BREAKING CHANGE: Refactored getNetworkCIP30 to isMainnet
-
Added lace to supported wallets
-
Added
getInstalledWalletExtensionsinstead ofgetAvalaibleWallets
@marlowe.io/language-core-v1
-
Moved the examples to the
@marlowe.io/language-examplespackage. -
BREAKING CHANGE: Modify the exported modules to have the JSON types in the main export and the runtime validations under a
/guardsmodule. -
Added a compatibility mode for the Playground's
marlowe-jsinternal library. This is exported under the@marlowe.io/language-core-v1/playground-v1module. -
Add
computeTransactionandplayTracesemantics
@marlowe.io/language-examples
-
Add Survey example
-
Added Vesting Contract
@marlowe.io/runtime-rest-client
-
BREAKING CHANGE: Replaced mkRestClient interface for a flat API that resembles the backend documentation structure.
-
modified the
nextendpoint to be compliant withruntime-web v0.0.5.1 -
Added the endpoint
createContractSources -
Removed filter from return on
getContractsendpoint
@marlowe.io/runtime-lifecycle
-
BREAKING CHANGE: Removed
fp-tsfrom the user facing API -
Fixed
this undefinedissues when callingmkRuntimeLifecycle -
Lower the abstraction level of
ContractLifecyleAPI -
An API consumer may retrieve all contract ids for contracts that mentions their users wallet addresses with method
getContractIds.
testing
Merge pull request #10 from input-output-hk/workspaces Initial version of workspaces