JSPM

@ever-guild/debot-browser

0.6.0-rc.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q25844F
  • License Apache-2.0

Standalone debot browser

Package Exports

  • @ever-guild/debot-browser
  • @ever-guild/debot-browser/debot_browser.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@ever-guild/debot-browser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Debot browser

Standalone Debot browser written in Rust and compiled as WebAssembly

Purpose

Run any Debot in your website using Debot browser as service.

Getting Started

To get started, install @ever-guild/debot-browser:

npm install @ever-guild/debot-browser

Run Debot:

import * as browser from "@ever-guild/debot-browser";

let defaultWallet = null; // or string with TON address
let defaultPubkey = null; // or string with public key
let keypair = {}; // Important: for test purposees only! Keypair is used to sign messages if needed.

// AppSigningBox impl
let userSigningBox = {};
userSigningBox.get_public_key = async () => {
    return keypair.public
}

userSigningBox.sign = async (unsigned) => {
    const res = browser.sign(keypair, unsigned)
    return res.signature
}

// predeployed DeBot to net.ton.dev
let debotAddress = "0:d2966f32136723cd8c64cab54cb9517fdb9d762196138487ec4629ec2e7f4c2b"; 

let manifest = `{
    "version": 0,
    "debotAddress": "${debotAddress}",
    "initMethod": "invokeTest",
    "initArgs": {
      "arg1": "1500000000",
      "arg2": "68656c6c6f20776f726c6421",
      "arg3": true,
      "arg4": 3,
      "arg5": "0:e859a5858fc99c8f6044aa179af68140c2fb9b07b3f52b70bef51e0c799fd2df",
      "arg6": "${defaultPubkey}",
      "arg7": {
        "1": {
          "data": "10"
        },
        "2": {
          "data": "2020"
        }
      }
    },
    "abi": {
      "ABI version": 2,
      "header": [],
      "functions": [
        {
          "name": "OnInvokeCompleted",
          "inputs": [
            {
              "name": "status",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "ret1",
              "type": "map(uint32,tuple)"
            }
          ],
          "outputs": []
        }
      ],
      "data": [],
      "events": []
    },
    "quiet": true,
    "chain": [
      {
        "type": "Input",
        "interface": "a1d347099e29c1624c8890619daf207bde18e92df5220a54bcc6d858309ece84",
        "method": "get",
        "params": {
          "value": "1500000000"
        }
      },
      {
        "type": "Input",
        "interface": "8796536366ee21852db56dccb60bc564598b618c865fc50c8b1ab740bba128e3",
        "method": "input",
        "params": {
          "value": "68656c6c6f20776f726c6421"
        }
      },
      {
        "type": "Input",
        "interface": "16653eaf34c921467120f2685d425ff963db5cbb5aa676a62a2e33bfc3f6828a",
        "method": "get",
        "params": {
          "value": true
        }
      },
      {
        "type": "Input",
        "interface": "ac1a4d3ecea232e49783df4a23a81823cdca3205dc58cd20c4db259c25605b48",
        "method": "select",
        "params": {
          "index": 3
        }
      },
      {
        "type": "Input",
        "interface": "d7ed1bd8e6230871116f4522e58df0a93c5520c56f4ade23ef3d8919a984653b",
        "method": "get",
        "params": {
          "value": "0:e859a5858fc99c8f6044aa179af68140c2fb9b07b3f52b70bef51e0c799fd2df"
        }
      }
    ]
}`;

(async () => {
    const browserHandle = await browser.create_browser("net.ton.dev", debotAddress, defaultWallet, defaultPubkey);
    const manifestObj = JSON.parse(manifest);
    
    // OPTIONAL
    let sboxHandle = await browser.register_signing_box(browserHandle, userSigningBox)
    await browser.update_user_settings(browserHandle, { 
        wallet: defaultWallet,
        pubkey: defaultPubkey,
        signing_box: sboxHandle
    });

    const result = await browser.run_browser(browserHandle, manifestObj);

    await browser.close_signing_box(browserHandle, sboxHandle)

    await browser.destroy_browser(browserHandle);

});