JS SDK for MEM Serverless Functions
git clone https://github.com/decentldotland/mem-sdk.git
cd mem-sdk
npm install && npm run build
dist/index.cjs.js
3.46 kB │ gzip: 1.07 kBdist/index.umd.js
3.66 kB │ gzip: 1.17 kBdist/index.es.js
4.74 kB │ gzip: 1.18 kB
npm install mem-sdk
React, and other frameworks (also check out React Version):
import Mem from "mem-sdk";
const mem : Mem = new Mem({
network: "mainnet" || "testnet"
});
const { Mem } = require("mem-sdk");
const mem: Mem = new Mem({
network: "mainnet" || "testnet"
});
import { Mem } from "mem-sdk"
const mem = new Mem({
network: "mainnet" || "testnet"
});
const FUNCTION_ID = "...";
const state = await mem.read(FUNCTION_ID);
const FUNCTION_ID = "...";
const inputs = { function: "test", inputA: "valueA" };
const txid = await mem.write(FUNCTION_ID, inputs);
const SRC = `export async function handle(state, action) {
const input = action.input;
if (input.function === "save") {
const { username, bio } = input;
ContractAssert(username.trim().length, "ERROR_INVALID_INPUT");
ContractAssert(typeof username === "string" && typeof bio === "string");
state.logs.push ({ username, bio });
return { state }
}
}`;
const INIT_STATE = '{"logs": []}';
const id = await mem.deploy(SRC, INIT_STATE);
While the SDK should be initialized for mainnet
using this method, the fork
functionality allows forking mainnet deployed function to either mainnet or carbon testnet:
const MAINNET_FUNCTION_ID = "...";
const FORK_IT_TO = "mainnet" || "testnet";
const OVERWRITE_INIT_STATE = btoa('{"new": "state"}'); // optional
const id = await mem.fork(MAINNET_FUNCTION_ID, FORK_IT_TO, OVERWRITE_INIT_STATE?);
const MAINNET_FUNCTION_ID = "...";
const kv = await mem.kvGet(MAINNET_FUNCTION_ID);
It is possible to assign a memorable name to a function ID using the function registry tool (e.g., ans.mem
instead of Tih...I5M
). These .mem
names are resolvable with the MEM SDK the same way you would pass a function ID:
await mem.read("ans.mem");
This repository is licensed under the MIT License