@jsonjoy.com/json-pack
Version:
High-performance JSON serialization library
132 lines • 3.77 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.JsonDecoderDag = exports.fromBase64Bin = void 0;
const JsonDecoder_1 = require("./JsonDecoder");
const util_1 = require("./util");
const createFromBase64Bin_1 = require("@jsonjoy.com/base64/lib/createFromBase64Bin");
exports.fromBase64Bin = (0, createFromBase64Bin_1.createFromBase64Bin)(undefined, '');
class JsonDecoderDag extends JsonDecoder_1.JsonDecoder {
readObj() {
const bytes = this.tryReadBytes();
if (bytes)
return bytes;
const cid = this.tryReadCid();
if (cid)
return cid;
return super.readObj();
}
tryReadBytes() {
const reader = this.reader;
const x = reader.x;
if (reader.u8() !== 0x7b) {
// {
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x22 || reader.u8() !== 0x2f || reader.u8() !== 0x22) {
// "/"
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x3a) {
// :
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x7b) {
// {
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x22 ||
reader.u8() !== 0x62 ||
reader.u8() !== 0x79 ||
reader.u8() !== 0x74 ||
reader.u8() !== 0x65 ||
reader.u8() !== 0x73 ||
reader.u8() !== 0x22) {
// "bytes"
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x3a) {
// :
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x22) {
// "
reader.x = x;
return;
}
const bufStart = reader.x;
const bufEnd = (0, util_1.findEndingQuote)(reader.uint8, bufStart);
reader.x = 1 + bufEnd;
this.skipWhitespace();
if (reader.u8() !== 0x7d) {
// }
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x7d) {
// }
reader.x = x;
return;
}
const bin = (0, exports.fromBase64Bin)(reader.view, bufStart, bufEnd - bufStart);
return bin;
}
tryReadCid() {
const reader = this.reader;
const x = reader.x;
if (reader.u8() !== 0x7b) {
// {
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x22 || reader.u8() !== 0x2f || reader.u8() !== 0x22) {
// "/"
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x3a) {
// :
reader.x = x;
return;
}
this.skipWhitespace();
if (reader.u8() !== 0x22) {
// "
reader.x = x;
return;
}
const bufStart = reader.x;
const bufEnd = (0, util_1.findEndingQuote)(reader.uint8, bufStart);
reader.x = 1 + bufEnd;
this.skipWhitespace();
if (reader.u8() !== 0x7d) {
// }
reader.x = x;
return;
}
const finalX = reader.x;
reader.x = bufStart;
const cid = reader.ascii(bufEnd - bufStart);
reader.x = finalX;
return this.readCid(cid);
}
readCid(cid) {
return cid;
}
}
exports.JsonDecoderDag = JsonDecoderDag;
//# sourceMappingURL=JsonDecoderDag.js.map