UNPKG

@native-to-anchor/buffer-layout

Version:
224 lines 9.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.utf8Str = exports.bytes = exports.vec = exports.coption = exports.option = exports.i128 = exports.u128 = exports.i64 = exports.u64 = exports.publicKey = exports.decimal = exports.bool = exports.union = exports.u8 = exports.u32 = exports.u16 = exports.struct = exports.seq = exports.i8 = exports.i32 = exports.i16 = exports.Layout = exports.f64 = exports.f32 = exports.blob = void 0; const bn_js_1 = __importDefault(require("bn.js")); const buffer_layout_1 = require("@solana/buffer-layout"); var buffer_layout_2 = require("@solana/buffer-layout"); Object.defineProperty(exports, "blob", { enumerable: true, get: function () { return buffer_layout_2.blob; } }); Object.defineProperty(exports, "f32", { enumerable: true, get: function () { return buffer_layout_2.f32; } }); Object.defineProperty(exports, "f64", { enumerable: true, get: function () { return buffer_layout_2.f64; } }); Object.defineProperty(exports, "Layout", { enumerable: true, get: function () { return buffer_layout_2.Layout; } }); Object.defineProperty(exports, "i16", { enumerable: true, get: function () { return buffer_layout_2.s16; } }); Object.defineProperty(exports, "i32", { enumerable: true, get: function () { return buffer_layout_2.s32; } }); Object.defineProperty(exports, "i8", { enumerable: true, get: function () { return buffer_layout_2.s8; } }); Object.defineProperty(exports, "seq", { enumerable: true, get: function () { return buffer_layout_2.seq; } }); Object.defineProperty(exports, "struct", { enumerable: true, get: function () { return buffer_layout_2.struct; } }); Object.defineProperty(exports, "u16", { enumerable: true, get: function () { return buffer_layout_2.u16; } }); Object.defineProperty(exports, "u32", { enumerable: true, get: function () { return buffer_layout_2.u32; } }); Object.defineProperty(exports, "u8", { enumerable: true, get: function () { return buffer_layout_2.u8; } }); Object.defineProperty(exports, "union", { enumerable: true, get: function () { return buffer_layout_2.union; } }); var buffer_layout_utils_1 = require("@solana/buffer-layout-utils"); Object.defineProperty(exports, "bool", { enumerable: true, get: function () { return buffer_layout_utils_1.bool; } }); Object.defineProperty(exports, "decimal", { enumerable: true, get: function () { return buffer_layout_utils_1.decimal; } }); Object.defineProperty(exports, "publicKey", { enumerable: true, get: function () { return buffer_layout_utils_1.publicKey; } }); function u64(property) { return new BNLayout(8, false, property); } exports.u64 = u64; function i64(property) { return new BNLayout(8, true, property); } exports.i64 = i64; function u128(property) { return new BNLayout(16, false, property); } exports.u128 = u128; function i128(property) { return new BNLayout(16, true, property); } exports.i128 = i128; class BNLayout extends buffer_layout_1.Layout { constructor(span, signed, property) { super(span, property); this.blob = (0, buffer_layout_1.blob)(span); this.signed = signed; } encode(src, b, offset = 0) { if (this.signed) { src = src.toTwos(this.span * 8); } return this.blob.encode(src.toArrayLike(Buffer, "le", this.span), b, offset); } decode(b, offset = 0) { const num = new bn_js_1.default(this.blob.decode(b, offset), 10, "le"); if (this.signed) { return num.fromTwos(this.span * 8).clone(); } return num; } } function option(layout, property) { return new OptionLayout(layout, property); } exports.option = option; class OptionLayout extends buffer_layout_1.Layout { constructor(layout, property) { super(-1, property); this.layout = layout; this.discriminator = (0, buffer_layout_1.u8)(); } encode(src, b, offset = 0) { if (src === null || src === undefined) { return this.discriminator.encode(0, b, offset); } this.discriminator.encode(1, b, offset); return (this.discriminator.span + this.layout.encode(src, b, offset + this.discriminator.span)); } decode(b, offset = 0) { const discriminator = this.discriminator.decode(b, offset); if (discriminator === 0) { return null; } else if (discriminator === 1) { return this.layout.decode(b, offset + this.discriminator.span); } throw new Error("Invalid option " + this.layout.property); } getSpan(b, offset = 0) { const discriminator = this.discriminator.decode(b, offset); if (discriminator === 0) { return 1; } else if (discriminator === 1) { return this.layout.getSpan(b, offset + 1) + 1; } throw new Error("Invalid option " + this.property); } } function coption(layout, property) { return new COptionLayout(layout, property); } exports.coption = coption; class COptionLayout extends buffer_layout_1.Layout { constructor(layout, property) { super(-1, property); this.layout = layout; this.discriminator = (0, buffer_layout_1.u32)(); } encode(src, b, offset = 0) { if (src === null || src === undefined) { return this.layout.span + this.discriminator.encode(0, b, offset); } this.discriminator.encode(1, b, offset); return (this.discriminator.span + this.layout.encode(src, b, offset + this.discriminator.span)); } decode(b, offset = 0) { const discriminator = this.discriminator.decode(b, offset); if (discriminator === 0) { return null; } else if (discriminator === 1) { return this.layout.decode(b, offset + this.discriminator.span); } throw new Error("Invalid coption " + this.layout.property); } getSpan(b, offset = 0) { return (this.discriminator.span + this.layout.getSpan(b, offset + this.discriminator.span)); } } function vec(layout, property) { return new VecLayout(layout, property); } exports.vec = vec; class VecLayout extends buffer_layout_1.Layout { constructor(layout, property) { super(-1, property); this.layout = (0, buffer_layout_1.struct)([ (0, buffer_layout_1.u32)("length"), // @ts-ignore (0, buffer_layout_1.seq)(layout, (0, buffer_layout_1.offset)((0, buffer_layout_1.u32)(), -4), "src"), ], property); } encode(src, b, offset = 0) { const data = { src, }; return this.layout.encode(data, b, offset); } decode(b, offset = 0) { const data = this.layout.decode(b, offset); return data.src; } getSpan(b, offset = 0) { return this.layout.getSpan(b, offset); } } function bytes(property) { return new BytesLayout(property); } exports.bytes = bytes; class BytesLayout extends buffer_layout_1.Layout { constructor(property) { super(-1, property); this.layout = (0, buffer_layout_1.struct)([ (0, buffer_layout_1.u32)("length"), // @ts-ignore (0, buffer_layout_1.blob)((0, buffer_layout_1.offset)((0, buffer_layout_1.u32)(), -4), "src"), ], this.property); } encode(src, b, offset = 0) { if (src === null || src === undefined) { return this.layout.span; } const data = { src, }; return this.layout.encode(data, b, offset); } decode(b, offset = 0) { const data = this.layout.decode(b, offset); return data.src; } getSpan(b, offset = 0) { return ((0, buffer_layout_1.u32)().span + new bn_js_1.default(new Uint8Array(b).slice(offset, offset + 4), 10, "le").toNumber()); } } function utf8Str(property) { return new Utf8StringLayout(property); } exports.utf8Str = utf8Str; class Utf8StringLayout extends buffer_layout_1.Layout { constructor(property) { super(-1, property); this.layout = (0, buffer_layout_1.struct)([ (0, buffer_layout_1.u32)("length"), // @ts-ignore (0, buffer_layout_1.blob)((0, buffer_layout_1.offset)((0, buffer_layout_1.u32)(), -4), "src"), ], this.property); } encode(src, b, offset = 0) { if (src === null || src === undefined) { return this.layout.span; } const data = { src: Buffer.from(src, "utf8"), }; return this.layout.encode(data, b, offset); } decode(b, offset = 0) { const data = this.layout.decode(b, offset); return data.src.toString(); } getSpan(b, offset = 0) { return ((0, buffer_layout_1.u32)().span + new bn_js_1.default(new Uint8Array(b).slice(offset, offset + 4), 10, "le").toNumber()); } } //# sourceMappingURL=index.js.map