ts: Add bytes to utils namespace (#330)
This commit is contained in:
parent
2f780e0d27
commit
617d10aef2
|
@ -13,7 +13,7 @@
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "yarn build:node",
|
"build": "rm -rf dist/ && yarn build:node",
|
||||||
"build:node": "tsc && tsc -p tsconfig.cjs.json",
|
"build:node": "tsc && tsc -p tsconfig.cjs.json",
|
||||||
"lint:fix": "prettier src/** -w",
|
"lint:fix": "prettier src/** -w",
|
||||||
"watch": "tsc -p tsconfig.cjs.json --watch",
|
"watch": "tsc -p tsconfig.cjs.json --watch",
|
||||||
|
|
|
@ -9,7 +9,7 @@ import Coder, {
|
||||||
} from "./coder";
|
} from "./coder";
|
||||||
import { Idl } from "./idl";
|
import { Idl } from "./idl";
|
||||||
import workspace from "./workspace";
|
import workspace from "./workspace";
|
||||||
import utils from "./utils";
|
import * as utils from "./utils";
|
||||||
import { Program } from "./program";
|
import { Program } from "./program";
|
||||||
import { Address } from "./program/common";
|
import { Address } from "./program/common";
|
||||||
import { Event } from "./program/event";
|
import { Event } from "./program/event";
|
||||||
|
|
|
@ -12,7 +12,7 @@ import NamespaceFactory, {
|
||||||
SimulateNamespace,
|
SimulateNamespace,
|
||||||
} from "./namespace";
|
} from "./namespace";
|
||||||
import { getProvider } from "../";
|
import { getProvider } from "../";
|
||||||
import { decodeUtf8 } from "../utils";
|
import { utf8 } from "../utils/bytes";
|
||||||
import { EventParser } from "./event";
|
import { EventParser } from "./event";
|
||||||
import { Address, translateAddress } from "./common";
|
import { Address, translateAddress } from "./common";
|
||||||
|
|
||||||
|
@ -300,7 +300,7 @@ export class Program {
|
||||||
// Chop off account discriminator.
|
// Chop off account discriminator.
|
||||||
let idlAccount = decodeIdlAccount(accountInfo.data.slice(8));
|
let idlAccount = decodeIdlAccount(accountInfo.data.slice(8));
|
||||||
const inflatedIdl = inflate(idlAccount.data);
|
const inflatedIdl = inflate(idlAccount.data);
|
||||||
return JSON.parse(decodeUtf8(inflatedIdl));
|
return JSON.parse(utf8.decode(inflatedIdl));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import * as base64 from "base64-js";
|
||||||
|
|
||||||
|
export function encode(data: Buffer): string {
|
||||||
|
return base64.fromByteArray(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decode(data: string): Buffer {
|
||||||
|
return Buffer.from(base64.toByteArray(data));
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import * as bs58 from "bs58";
|
||||||
|
|
||||||
|
export function encode(data: Buffer | number[] | Uint8Array) {
|
||||||
|
return bs58.encode(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decode(data: string) {
|
||||||
|
return bs58.decode(data);
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
export function encode(data: Buffer): string {
|
||||||
|
return data.reduce(
|
||||||
|
(str, byte) => str + byte.toString(16).padStart(2, "0"),
|
||||||
|
"0x"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decode(data: string): Buffer {
|
||||||
|
if (data.indexOf("0x") === 0) {
|
||||||
|
data = data.substr(2);
|
||||||
|
}
|
||||||
|
if (data.length % 2 === 1) {
|
||||||
|
data = "0" + data;
|
||||||
|
}
|
||||||
|
|
||||||
|
let key = data.match(/.{2}/g);
|
||||||
|
|
||||||
|
if (key === null) {
|
||||||
|
return Buffer.from([]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Buffer.from(key.map((byte) => parseInt(byte, 16)));
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
export * as hex from "./hex";
|
||||||
|
export * as utf8 from "./utf8";
|
||||||
|
export * as bs58 from "./bs58";
|
||||||
|
export * as base64 from "./base64";
|
|
@ -0,0 +1,15 @@
|
||||||
|
export function decode(array: Uint8Array): string {
|
||||||
|
const decoder =
|
||||||
|
typeof TextDecoder === "undefined"
|
||||||
|
? new (require("util").TextDecoder)("utf-8") // Node.
|
||||||
|
: new TextDecoder("utf-8"); // Browser.
|
||||||
|
return decoder.decode(array);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function encode(input: string): Uint8Array {
|
||||||
|
const encoder =
|
||||||
|
typeof TextEncoder === "undefined"
|
||||||
|
? new (require("util").TextEncoder)("utf-8") // Node.
|
||||||
|
: new TextEncoder(); // Browser.
|
||||||
|
return encoder.encode(input);
|
||||||
|
}
|
|
@ -1,14 +1,4 @@
|
||||||
import { sha256 } from "crypto-hash";
|
export * as sha256 from "./sha256";
|
||||||
import * as bs58 from "bs58";
|
export * as rpc from "./rpc";
|
||||||
import * as rpc from "./rpc";
|
export * as publicKey from "./pubkey";
|
||||||
import * as publicKey from "./pubkey";
|
export * as bytes from "./bytes";
|
||||||
|
|
||||||
export function decodeUtf8(array: Uint8Array): string {
|
|
||||||
const decoder =
|
|
||||||
typeof TextDecoder === "undefined"
|
|
||||||
? new (require("util").TextDecoder)("utf-8") // Node.
|
|
||||||
: new TextDecoder("utf-8"); // Browser.
|
|
||||||
return decoder.decode(array);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default { sha256, bs58, rpc, publicKey };
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { sha256 } from "js-sha256";
|
||||||
|
|
||||||
|
export function hash(data: string): string {
|
||||||
|
return sha256(data);
|
||||||
|
}
|
Loading…
Reference in New Issue