UNPKG

jsonbinpack

Version:

A space-efficient schema-driven binary JSON serialization format based on JSON Schema

55 lines (54 loc) 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CONST_NONE = exports.LARGE_BOUNDED_CHOICE_INDEX = exports.BOUNDED_CHOICE_INDEX = exports.TOP_LEVEL_8BIT_CHOICE_INDEX = void 0; var assert_1 = require("assert"); var decode_1 = require("../integer/decode"); var TOP_LEVEL_8BIT_CHOICE_INDEX = function (buffer, offset, options) { assert_1.strict(offset === 0); if (buffer.getOriginalSize() === 0) { return { value: options.choices[0], bytes: 0 }; } var result = decode_1.BOUNDED_MULTIPLE_8BITS_ENUM_FIXED(buffer, offset, { minimum: 1, maximum: options.choices.length, multiplier: 1 }); return { value: options.choices[result.value], bytes: result.bytes }; }; exports.TOP_LEVEL_8BIT_CHOICE_INDEX = TOP_LEVEL_8BIT_CHOICE_INDEX; var BOUNDED_CHOICE_INDEX = function (buffer, offset, options) { var result = decode_1.BOUNDED_MULTIPLE_8BITS_ENUM_FIXED(buffer, offset, { minimum: 0, maximum: options.choices.length, multiplier: 1 }); return { value: options.choices[result.value], bytes: result.bytes }; }; exports.BOUNDED_CHOICE_INDEX = BOUNDED_CHOICE_INDEX; var LARGE_BOUNDED_CHOICE_INDEX = function (buffer, offset, options) { var result = decode_1.FLOOR_MULTIPLE_ENUM_VARINT(buffer, offset, { minimum: 0, multiplier: 1 }); return { value: options.choices[result.value], bytes: result.bytes }; }; exports.LARGE_BOUNDED_CHOICE_INDEX = LARGE_BOUNDED_CHOICE_INDEX; var CONST_NONE = function (_buffer, _offset, options) { return { value: options.value, bytes: 0 }; }; exports.CONST_NONE = CONST_NONE;