Skip to Content
Supra Layer 1MoveVMTypeScript SDKGuidesPublish a Package

Publish a Package

How to publish a package using the TypeScript SDK.

publishPackage function

await supraClient.publishPackage(senderAccount, packageMetadata, modulesCode)

Parameters

NameType
senderAccountSupraAccount
packageMetadataUint8Array
modulesCodeUint8Array[]
optionalTransactionArgsOptionalTransactionArgs

Returns

NameType
Promise<TransactionResponse>TransactionResponse 
{ "txHash": "", "result": "" }

Example

The publishPackage function requires the package metadata and module bytecode as the second and third parameter. These are obtained through the build-publish-payload command of the Supra CLI. Once obtained, parse the JSON file for the data and pass it to the publishPackage function.

Build the publish payload with the Supra CLI

supra move tool build-publish-payload --package-dir /supra/configs/move_workspace/{YOUR_PROJECT_NAME} --json-output-file ./configs/move_workspace/{YOUR_PROJECT_NAME}/publish-payload.json

Initialize a new project

npm init && npm add -D typescript @types/node ts-node && npx tsc --init

Install Supra’s TypeScript SDK

npm install supra-l1-sdk

Create publish_example.ts and import dependencies

import fs from 'fs'; import { HexString, SupraAccount, SupraClient } from 'supra-l1-sdk';

Parse the JSON file and extract data

function getPackageData(filePath: string) { const jsonData = JSON.parse(fs.readFileSync(filePath, "utf8")); const packageMetadata = new HexString(jsonData.args[0].value).toUint8Array(); const modulesCode = []; for(let e of jsonData.args[1].value){ modulesCode.push(new HexString(e).toUint8Array()) } return { packageMetadata, modulesCode }; }

Call the publishPackage function

async function main(){ const { packageMetadata, modulesCode } = getPackageData("YOUR_PATH_TO_JSON_FILE"); let supraClient = await SupraClient.init( "https://rpc-testnet.supra.com/" ); let senderAccount = new SupraAccount( new HexString("YOUR_PRIVATE_KEY").toUint8Array() ); const publishTxn = await supraClient.publishPackage(senderAccount, packageMetadata, modulesCode) console.log(publishTxn); }

Complete code

import fs from "fs"; import { HexString, SupraAccount, SupraClient } from "supra-l1-sdk"; function getPackageData(filePath: string) { const jsonData = JSON.parse(fs.readFileSync(filePath, "utf8")); const packageMetadata = new HexString(jsonData.args[0].value).toUint8Array(); const modulesCode = []; for(let e of jsonData.args[1].value){ modulesCode.push(new HexString(e).toUint8Array()) } return { packageMetadata, modulesCode }; } async function main(){ const { packageMetadata, modulesCode } = getPackageData("YOUR_PATH_TO_JSON_FILE"); let supraClient = await SupraClient.init( "https://rpc-testnet.supra.com/" ); let senderAccount = new SupraAccount( new HexString("YOUR_PRIVATE_KEY").toUint8Array() ); const publishTxn = await supraClient.publishPackage(senderAccount, packageMetadata, modulesCode) console.log(publishTxn); } main()

Execute code npx ts-node publish_example.ts

Last updated on