Comparing version 0.11.0 to 0.12.0
@@ -131,2 +131,3 @@ /// <reference types="node" /> | ||
* @param writer writer or builder to store | ||
* @returns this builder | ||
*/ | ||
@@ -137,5 +138,30 @@ storeWritable(writer: ((builder: Builder) => void) | Writable): this; | ||
* @param writer writer or builder to store | ||
* @returns this builder | ||
*/ | ||
storeMaybeWritable(writer: ((builder: Builder) => void) | Writable | null): this; | ||
/** | ||
* Store string tail | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeStringTail(src: string): this; | ||
/** | ||
* Store string tail | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeMaybeStringTail(src: string | null): this; | ||
/** | ||
* Store string tail in ref | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeStringRefTail(src: string): this; | ||
/** | ||
* Store maybe string tail in ref | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeMaybeStringRefTail(src: string | null): this; | ||
/** | ||
* Complete cell | ||
@@ -142,0 +168,0 @@ * @returns cell |
@@ -6,2 +6,3 @@ "use strict"; | ||
const Cell_1 = require("./Cell"); | ||
const strings_1 = require("./utils/strings"); | ||
/** | ||
@@ -39,3 +40,3 @@ * Start building a cell | ||
get availableBits() { | ||
return 1024 - this.bits; | ||
return 1023 - this.bits; | ||
} | ||
@@ -224,2 +225,3 @@ /** | ||
* @param writer writer or builder to store | ||
* @returns this builder | ||
*/ | ||
@@ -238,2 +240,3 @@ storeWritable(writer) { | ||
* @param writer writer or builder to store | ||
* @returns this builder | ||
*/ | ||
@@ -251,2 +254,51 @@ storeMaybeWritable(writer) { | ||
/** | ||
* Store string tail | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeStringTail(src) { | ||
(0, strings_1.writeString)(src, this); | ||
return this; | ||
} | ||
/** | ||
* Store string tail | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeMaybeStringTail(src) { | ||
if (src !== null) { | ||
this.storeBit(1); | ||
(0, strings_1.writeString)(src, this); | ||
} | ||
else { | ||
this.storeBit(0); | ||
} | ||
return this; | ||
} | ||
/** | ||
* Store string tail in ref | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeStringRefTail(src) { | ||
this.storeRef(beginCell() | ||
.storeStringTail(src)); | ||
return this; | ||
} | ||
/** | ||
* Store maybe string tail in ref | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeMaybeStringRefTail(src) { | ||
if (src !== null) { | ||
this.storeBit(1); | ||
this.storeStringRefTail(src); | ||
} | ||
else { | ||
this.storeBit(0); | ||
} | ||
return this; | ||
} | ||
/** | ||
* Complete cell | ||
@@ -253,0 +305,0 @@ * @returns cell |
@@ -112,2 +112,15 @@ "use strict"; | ||
}); | ||
it('should read string tails from builder', () => { | ||
let prando = new prando_1.default('test-6'); | ||
for (let i = 0; i < 1000; i++) { | ||
let a = prando.nextString(prando.nextInt(0, 1024)); | ||
let b = prando.nextString(prando.nextInt(0, 1024)); | ||
let builder = (0, Builder_1.beginCell)(); | ||
builder.storeStringRefTail(a); | ||
builder.storeStringTail(b); | ||
let sc = builder.endCell().beginParse(); | ||
expect(sc.loadStringRefTail()).toEqual(a); | ||
expect(sc.loadStringTail()).toEqual(b); | ||
} | ||
}); | ||
}); |
@@ -104,3 +104,3 @@ "use strict"; | ||
if (bits.length > 1023) { | ||
throw new Error("Invalid number of bits"); | ||
throw new Error(`Bits overflow: ${bits.length} > 1023`); | ||
} | ||
@@ -107,0 +107,0 @@ // Perform wonders |
@@ -23,3 +23,3 @@ /// <reference types="node" /> | ||
*/ | ||
skip(bits: number): void; | ||
skip(bits: number): this; | ||
/** | ||
@@ -211,2 +211,21 @@ * Load a single bit | ||
/** | ||
* Load string tail | ||
*/ | ||
loadStringTail(): string; | ||
/** | ||
* Load maybe string tail | ||
* @returns string or null | ||
*/ | ||
loadMaybeStringTail(): string | null; | ||
/** | ||
* Load string tail from ref | ||
* @returns string | ||
*/ | ||
loadStringRefTail(): string; | ||
/** | ||
* Load maybe string tail from ref | ||
* @returns string or null | ||
*/ | ||
loadMaybeStringRefTail(): string | null; | ||
/** | ||
* Convert slice to cell | ||
@@ -213,0 +232,0 @@ */ |
@@ -5,2 +5,3 @@ "use strict"; | ||
const Builder_1 = require("./Builder"); | ||
const strings_1 = require("./utils/strings"); | ||
/** | ||
@@ -32,2 +33,3 @@ * Slice is a class that allows to read cell data | ||
this._reader.skip(bits); | ||
return this; | ||
} | ||
@@ -302,2 +304,40 @@ /** | ||
/** | ||
* Load string tail | ||
*/ | ||
loadStringTail() { | ||
return (0, strings_1.readString)(this); | ||
} | ||
/** | ||
* Load maybe string tail | ||
* @returns string or null | ||
*/ | ||
loadMaybeStringTail() { | ||
if (this.loadBit()) { | ||
return (0, strings_1.readString)(this); | ||
} | ||
else { | ||
return null; | ||
} | ||
} | ||
/** | ||
* Load string tail from ref | ||
* @returns string | ||
*/ | ||
loadStringRefTail() { | ||
return (0, strings_1.readString)(this.loadRef().beginParse()); | ||
} | ||
/** | ||
* Load maybe string tail from ref | ||
* @returns string or null | ||
*/ | ||
loadMaybeStringRefTail() { | ||
const ref = this.loadMaybeRef(); | ||
if (ref) { | ||
return (0, strings_1.readString)(ref.beginParse()); | ||
} | ||
else { | ||
return null; | ||
} | ||
} | ||
/** | ||
* Convert slice to cell | ||
@@ -304,0 +344,0 @@ */ |
export { Address } from './address/Address'; | ||
export { ExternalAddress } from './address/ExternalAddress'; | ||
export { ADNLAddress } from './address/ADNLAddress'; | ||
export { contractAddress } from './address/contractAddress'; | ||
export { BitString } from './boc/BitString'; | ||
@@ -18,1 +19,14 @@ export { BitReader } from './boc/BitReader'; | ||
export { TupleReader } from './tuple/reader'; | ||
export { Message } from './messages/Message'; | ||
export { StateInit } from './messages/StateInit'; | ||
export { InternalMessage } from './messages/InternalMessage'; | ||
export { ExternalMessage } from './messages/ExternalMessage'; | ||
export { CommonMessageInfo } from './messages/CommonMessageInfo'; | ||
export { CommentMessage } from './messages/CommentMessage'; | ||
export { EmptyMessage } from './messages/EmptyMessage'; | ||
export { CellMessage } from './messages/CellMessage'; | ||
export { BufferMessage } from './messages/BufferMessage'; | ||
export { toNano, fromNano } from './utils/convert'; | ||
export { crc16 } from './utils/crc16'; | ||
export { crc32c } from './utils/crc32c'; | ||
export { base32Decode, base32Encode } from './utils/base32'; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.TupleReader = exports.serializeTuple = exports.parseTuple = exports.exoticPruned = exports.exoticMerkleUpdate = exports.exoticMerkleProof = exports.Cell = exports.CellType = exports.Slice = exports.beginCell = exports.Builder = exports.BitBuilder = exports.BitReader = exports.BitString = exports.ADNLAddress = exports.ExternalAddress = exports.Address = void 0; | ||
exports.base32Encode = exports.base32Decode = exports.crc32c = exports.crc16 = exports.fromNano = exports.toNano = exports.BufferMessage = exports.CellMessage = exports.EmptyMessage = exports.CommentMessage = exports.CommonMessageInfo = exports.ExternalMessage = exports.InternalMessage = exports.StateInit = exports.TupleReader = exports.serializeTuple = exports.parseTuple = exports.exoticPruned = exports.exoticMerkleUpdate = exports.exoticMerkleProof = exports.Cell = exports.CellType = exports.Slice = exports.beginCell = exports.Builder = exports.BitBuilder = exports.BitReader = exports.BitString = exports.contractAddress = exports.ADNLAddress = exports.ExternalAddress = exports.Address = void 0; | ||
// Address | ||
@@ -11,2 +11,4 @@ var Address_1 = require("./address/Address"); | ||
Object.defineProperty(exports, "ADNLAddress", { enumerable: true, get: function () { return ADNLAddress_1.ADNLAddress; } }); | ||
var contractAddress_1 = require("./address/contractAddress"); | ||
Object.defineProperty(exports, "contractAddress", { enumerable: true, get: function () { return contractAddress_1.contractAddress; } }); | ||
// BitString | ||
@@ -41,1 +43,28 @@ var BitString_1 = require("./boc/BitString"); | ||
Object.defineProperty(exports, "TupleReader", { enumerable: true, get: function () { return reader_1.TupleReader; } }); | ||
var StateInit_1 = require("./messages/StateInit"); | ||
Object.defineProperty(exports, "StateInit", { enumerable: true, get: function () { return StateInit_1.StateInit; } }); | ||
var InternalMessage_1 = require("./messages/InternalMessage"); | ||
Object.defineProperty(exports, "InternalMessage", { enumerable: true, get: function () { return InternalMessage_1.InternalMessage; } }); | ||
var ExternalMessage_1 = require("./messages/ExternalMessage"); | ||
Object.defineProperty(exports, "ExternalMessage", { enumerable: true, get: function () { return ExternalMessage_1.ExternalMessage; } }); | ||
var CommonMessageInfo_1 = require("./messages/CommonMessageInfo"); | ||
Object.defineProperty(exports, "CommonMessageInfo", { enumerable: true, get: function () { return CommonMessageInfo_1.CommonMessageInfo; } }); | ||
var CommentMessage_1 = require("./messages/CommentMessage"); | ||
Object.defineProperty(exports, "CommentMessage", { enumerable: true, get: function () { return CommentMessage_1.CommentMessage; } }); | ||
var EmptyMessage_1 = require("./messages/EmptyMessage"); | ||
Object.defineProperty(exports, "EmptyMessage", { enumerable: true, get: function () { return EmptyMessage_1.EmptyMessage; } }); | ||
var CellMessage_1 = require("./messages/CellMessage"); | ||
Object.defineProperty(exports, "CellMessage", { enumerable: true, get: function () { return CellMessage_1.CellMessage; } }); | ||
var BufferMessage_1 = require("./messages/BufferMessage"); | ||
Object.defineProperty(exports, "BufferMessage", { enumerable: true, get: function () { return BufferMessage_1.BufferMessage; } }); | ||
// Utility | ||
var convert_1 = require("./utils/convert"); | ||
Object.defineProperty(exports, "toNano", { enumerable: true, get: function () { return convert_1.toNano; } }); | ||
Object.defineProperty(exports, "fromNano", { enumerable: true, get: function () { return convert_1.fromNano; } }); | ||
var crc16_1 = require("./utils/crc16"); | ||
Object.defineProperty(exports, "crc16", { enumerable: true, get: function () { return crc16_1.crc16; } }); | ||
var crc32c_1 = require("./utils/crc32c"); | ||
Object.defineProperty(exports, "crc32c", { enumerable: true, get: function () { return crc32c_1.crc32c; } }); | ||
var base32_1 = require("./utils/base32"); | ||
Object.defineProperty(exports, "base32Decode", { enumerable: true, get: function () { return base32_1.base32Decode; } }); | ||
Object.defineProperty(exports, "base32Encode", { enumerable: true, get: function () { return base32_1.base32Encode; } }); |
{ | ||
"name": "ton-core", | ||
"version": "0.11.0", | ||
"version": "0.12.0", | ||
"main": "dist/index.js", | ||
@@ -5,0 +5,0 @@ "repository": "https://github.com/ton-community/ton-core.git", |
@@ -109,2 +109,16 @@ import { randomInt } from 'crypto'; | ||
}); | ||
it('should read string tails from builder', () => { | ||
let prando = new Prando('test-6'); | ||
for (let i = 0; i < 1000; i++) { | ||
let a = prando.nextString(prando.nextInt(0, 1024)); | ||
let b = prando.nextString(prando.nextInt(0, 1024)); | ||
let builder = beginCell(); | ||
builder.storeStringRefTail(a); | ||
builder.storeStringTail(b); | ||
let sc = builder.endCell().beginParse(); | ||
expect(sc.loadStringRefTail()).toEqual(a); | ||
expect(sc.loadStringTail()).toEqual(b); | ||
} | ||
}); | ||
}); |
@@ -8,2 +8,3 @@ import { Address } from "../address/Address"; | ||
import { Slice } from "./Slice"; | ||
import { writeString } from "./utils/strings"; | ||
@@ -48,3 +49,3 @@ /** | ||
get availableBits() { | ||
return 1024 - this.bits; | ||
return 1023 - this.bits; | ||
} | ||
@@ -249,2 +250,3 @@ | ||
* @param writer writer or builder to store | ||
* @returns this builder | ||
*/ | ||
@@ -263,2 +265,3 @@ storeWritable(writer: ((builder: Builder) => void) | Writable) { | ||
* @param writer writer or builder to store | ||
* @returns this builder | ||
*/ | ||
@@ -276,2 +279,53 @@ storeMaybeWritable(writer: ((builder: Builder) => void) | Writable | null) { | ||
/** | ||
* Store string tail | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeStringTail(src: string) { | ||
writeString(src, this); | ||
return this; | ||
} | ||
/** | ||
* Store string tail | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeMaybeStringTail(src: string | null) { | ||
if (src !== null) { | ||
this.storeBit(1); | ||
writeString(src, this); | ||
} else { | ||
this.storeBit(0); | ||
} | ||
return this; | ||
} | ||
/** | ||
* Store string tail in ref | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeStringRefTail(src: string) { | ||
this.storeRef(beginCell() | ||
.storeStringTail(src)); | ||
return this; | ||
} | ||
/** | ||
* Store maybe string tail in ref | ||
* @param src source string | ||
* @returns this builder | ||
*/ | ||
storeMaybeStringRefTail(src: string | null) { | ||
if (src !== null) { | ||
this.storeBit(1); | ||
this.storeStringRefTail(src); | ||
} else { | ||
this.storeBit(0); | ||
} | ||
return this; | ||
} | ||
/** | ||
* Complete cell | ||
@@ -278,0 +332,0 @@ * @returns cell |
@@ -76,3 +76,3 @@ import inspectSymbol from 'symbol.inspect'; | ||
if (bits.length > 1023) { | ||
throw new Error("Invalid number of bits"); | ||
throw new Error(`Bits overflow: ${bits.length} > 1023`); | ||
} | ||
@@ -79,0 +79,0 @@ |
import { BitReader } from "./BitReader"; | ||
import { beginCell } from "./Builder"; | ||
import { Cell } from "./Cell"; | ||
import { readString } from "./utils/strings"; | ||
@@ -37,2 +38,3 @@ /** | ||
this._reader.skip(bits); | ||
return this; | ||
} | ||
@@ -340,2 +342,42 @@ | ||
/** | ||
* Load string tail | ||
*/ | ||
loadStringTail() { | ||
return readString(this); | ||
} | ||
/** | ||
* Load maybe string tail | ||
* @returns string or null | ||
*/ | ||
loadMaybeStringTail() { | ||
if (this.loadBit()) { | ||
return readString(this); | ||
} else { | ||
return null; | ||
} | ||
} | ||
/** | ||
* Load string tail from ref | ||
* @returns string | ||
*/ | ||
loadStringRefTail() { | ||
return readString(this.loadRef().beginParse()); | ||
} | ||
/** | ||
* Load maybe string tail from ref | ||
* @returns string or null | ||
*/ | ||
loadMaybeStringRefTail() { | ||
const ref = this.loadMaybeRef(); | ||
if (ref) { | ||
return readString(ref.beginParse()); | ||
} else { | ||
return null; | ||
} | ||
} | ||
/** | ||
* Convert slice to cell | ||
@@ -342,0 +384,0 @@ */ |
@@ -5,2 +5,3 @@ // Address | ||
export { ADNLAddress } from './address/ADNLAddress'; | ||
export { contractAddress } from './address/contractAddress'; | ||
@@ -27,2 +28,20 @@ // BitString | ||
export { parseTuple, serializeTuple } from './tuple/tuple'; | ||
export { TupleReader } from './tuple/reader'; | ||
export { TupleReader } from './tuple/reader'; | ||
// Messages | ||
export { Message } from './messages/Message'; | ||
export { StateInit } from './messages/StateInit'; | ||
export { InternalMessage } from './messages/InternalMessage'; | ||
export { ExternalMessage } from './messages/ExternalMessage'; | ||
export { CommonMessageInfo } from './messages/CommonMessageInfo'; | ||
export { CommentMessage } from './messages/CommentMessage'; | ||
export { EmptyMessage } from './messages/EmptyMessage'; | ||
export { CellMessage } from './messages/CellMessage'; | ||
export { BufferMessage } from './messages/BufferMessage'; | ||
// Utility | ||
export { toNano, fromNano } from './utils/convert'; | ||
export { crc16 } from './utils/crc16'; | ||
export { crc32c } from './utils/crc32c'; | ||
export { base32Decode, base32Encode } from './utils/base32'; |
572441
183
10533