Socket
Socket
Sign inDemoInstall

mem-sdk

Package Overview
Dependencies
216
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mem-sdk

JS SDK for MEM Serverless Functions


Version published
Maintainers
1
Created

Readme

Source

@decentldotland/mem-sdk

JS SDK for MEM Serverless Functions

Build Locally

git clone https://github.com/decentldotland/mem-sdk.git

cd mem-sdk

npm install && npm run build
Build size
  • dist/index.cjs.js 3.46 kB │ gzip: 1.07 kB
  • dist/index.umd.js 3.66 kB │ gzip: 1.17 kB
  • dist/index.es.js 4.74 kB │ gzip: 1.18 kB

Install

npm install mem-sdk

Usage Guide

Import MEM SDK

React, and other frameworks (also check out React Version):
import Mem from "mem-sdk";

const mem : Mem = new Mem({
  network: "mainnet" || "testnet"
});
Node (TS)
const { Mem } = require("mem-sdk");
const mem: Mem = new Mem({
  network: "mainnet" || "testnet"
});
Node (ES6)
import { Mem } from "mem-sdk"
const mem = new Mem({
  network: "mainnet" || "testnet"
});

Retrieve a function state

const FUNCTION_ID = "...";
const state = await mem.read(FUNCTION_ID);

Send an interaction (only works on server-side)

const FUNCTION_ID = "...";
const inputs = { function: "test", inputA: "valueA" };

const txid = await mem.write(FUNCTION_ID, inputs);

Deploy a function

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);

Fork a function to mainnet or testnet

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?);

Get a function's KV object (only mainnet)

const MAINNET_FUNCTION_ID = "...";
const kv = await mem.kvGet(MAINNET_FUNCTION_ID);

Named functions resolving DX (only mainnet)

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");

License

This repository is licensed under the MIT License

Keywords

FAQs

Last updated on 29 Jan 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc