@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.

Dependents (0)

Package Sidebar

Install

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

Weekly Downloads

5

Version

0.2.0

License

GPL-3.0

Unpacked Size

50.1 kB

Total Files

6

Last publish

Collaborators

  • lukozill
  • troelsfr
  • inamirandaz
  • zilliqateam
  • fluffypancake5436
  • zilliqaofficial