Nutmeg Pumpkin Macchiato

    @zilliqa-js/scilla-json-utils
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.0 • Public • Published

    Scilla JSON Utils

    Simplifies the way you construct the Scilla JSON data

    Installation

    npm i @zilliqa-js/scilla-json-utils
    # or
    yarn add @zilliqa-js/scilla-json-utils

    Usage

    I. scillaJSONVal(type: string, value: any)

    Integers (UintX / IntX)

    import { scillaJSONVal } from "@zilliqa-js/scilla-json-utils";
    
    scillaJSONVal("Uint256", "1");
    // Output: "1"
    scillaJSONVal("Int256", "-1");
    // Output: "-1"
    scillaJSONVal("Uint256", 1);
    // Output: "1"
    scillaJSONVal("Int256", -1);
    // Output: "-1"

    Strings (String)

    scillaJSONVal("String", "Foo");
    // Output: "Foo"

    Byte Strings (ByStrX)

    scillaJSONVal("ByStr20", "0x85E0bef5F9a11821f9B2BA778a05963436B5e720");
    // Output: "0x85e0bef5f9a11821f9b2ba778a05963436b5e720"
    // Note that the output is lowercased.

    Block Numbers (BNum)

    scillaJSONVal("BNum", "1");
    // Output: "1"
    scillaJSONVal("BNum", 1);
    // Output: "1"

    Boolean (Bool)

    scillaJSONVal("Bool", false);

    Output:

    {
      "argtypes": [],
      "arguments": [],
      "constructor": "False"
    }

    Option (Option)

    None
    scillaJSONVal("Option (ByStr20)", undefined);

    Output:

    {
      "argtypes": ["ByStr20"],
      "arguments": [],
      "constructor": "None"
    }
    Some
    scillaJSONVal("Option (ByStr20)", "0x0000000000000000000000000000000000000000");

    Output:

    {
      "argtypes": ["ByStr20"],
      "arguments": ["0x0000000000000000000000000000000000000000"],
      "constructor": "Some"
    }

    Pair (Pair)

    scillaJSONVal("Pair (ByStr20) (Uint256)", [
      "0x0000000000000000000000000000000000000000",
      1,
    ]);

    Output:

    {
      "argtypes": ["ByStr20", "Uint256"],
      "arguments": ["0x0000000000000000000000000000000000000000", "1"],
      "constructor": "Pair"
    }

    List (List)

    scillaJSONVal("List (Pair (ByStr20) (Uint256))", [
      ["0x85E0bef5F9a11821f9B2BA778a05963436B5e720", 1],
      ["0x85E0bef5F9a11821f9B2BA778a05963436B5e720", 2],
    ]);

    Output:

    [
      {
        "argtypes": ["ByStr20", "Uint256"],
        "arguments": ["0x85e0bef5f9a11821f9b2ba778a05963436b5e720", "1"],
        "constructor": "Pair"
      },
      {
        "argtypes": ["ByStr20", "Uint256"],
        "arguments": ["0x85e0bef5f9a11821f9b2ba778a05963436b5e720", "2"],
        "constructor": "Pair"
      }
    ]

    User-defined ADTs

    type Foo =
    | Bar of ByStr20 BNum
    | Baz of ByStr20
    scillaJSONVal(
      "0x85E0bef5F9a11821f9B2BA778a05963436B5e720.Foo.Bar.of.ByStr20.BNum",
      ["0x0000000000000000000000000000000000000000", 1]
    );

    Output:

    {
      "argtypes": [],
      "arguments": ["0x0000000000000000000000000000000000000000", "1"],
      "constructor": "0x85e0bef5f9a11821f9b2ba778a05963436b5e720.Bar"
    }

    II. scillaJSONParams({[vname: string]: [type: string, value: any]})

    type Foo =
    | Bar of ByStr20 BNum
    | Baz of ByStr20
    import { scillaJSONParams } from "@zilliqa-js/scilla-json-utils";
    
    scillaJSONParams({
      x: [
        "0x85E0bef5F9a11821f9B2BA778a05963436B5e720.Foo.Bar.of.ByStr20.BNum",
        ["0x0000000000000000000000000000000000000000", 1],
      ],
      y: [
        "List (Pair (ByStr20) (String))",
        [
          ["0x85E0bef5F9a11821f9B2BA778a05963436B5e720", "Foo"],
          ["0x85E0bef5F9a11821f9B2BA778a05963436B5e720", "Bar"],
        ],
      ],
      z: ["Uint256", 1],
    });

    Output:

    [
      {
        "type": "0x85e0bef5f9a11821f9b2ba778a05963436b5e720.Foo",
        "value": {
          "argtypes": [],
          "arguments": ["0x0000000000000000000000000000000000000000", "1"],
          "constructor": "0x85e0bef5f9a11821f9b2ba778a05963436b5e720.Bar"
        },
        "vname": "x"
      },
      {
        "type": "List (Pair (ByStr20) (String))",
        "value": [
          {
            "argtypes": ["ByStr20", "String"],
            "arguments": ["0x85e0bef5f9a11821f9b2ba778a05963436b5e720", "Foo"],
            "constructor": "Pair"
          },
          {
            "argtypes": ["ByStr20", "String"],
            "arguments": ["0x85e0bef5f9a11821f9b2ba778a05963436b5e720", "Bar"],
            "constructor": "Pair"
          }
        ],
        "vname": "y"
      },
      {
        "type": "Uint256",
        "value": "1",
        "vname": "z"
      }
    ]

    More cases

    License

    This project is open source software licensed as GPL-3.0.

    Keywords

    none

    Install

    npm i @zilliqa-js/scilla-json-utils

    DownloadsWeekly Downloads

    198

    Version

    0.2.0

    License

    GPL-3.0

    Unpacked Size

    50.1 kB

    Total Files

    6

    Last publish

    Collaborators

    • inamirandaz
    • zilliqateam
    • fluffypancake5436
    • zilliqaofficial