jsonbinpack
Version:
A space-efficient schema-driven binary JSON serialization format based on JSON Schema
80 lines (79 loc) • 4.6 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.decode = exports.encode = exports.EncodingType = exports.getDefaultEncodingContext = exports.ResizableBuffer = void 0;
var assert_1 = require("assert");
var encoding_type_1 = require("./encoding-type");
var ENCODE_INTEGER = __importStar(require("./integer/encode"));
var ENCODE_NUMBER = __importStar(require("./number/encode"));
var ENCODE_STRING = __importStar(require("./string/encode"));
var ENCODE_ANY = __importStar(require("./any/encode"));
var ENCODE_ARRAY = __importStar(require("./array/encode"));
var ENCODE_OBJECT = __importStar(require("./object/encode"));
var ENCODE_ENUM = __importStar(require("./enum/encode"));
var ENCODE_ONEOF = __importStar(require("./oneof/encode"));
var DECODE_INTEGER = __importStar(require("./integer/decode"));
var DECODE_NUMBER = __importStar(require("./number/decode"));
var DECODE_STRING = __importStar(require("./string/decode"));
var DECODE_ANY = __importStar(require("./any/decode"));
var DECODE_ARRAY = __importStar(require("./array/decode"));
var DECODE_OBJECT = __importStar(require("./object/decode"));
var DECODE_ENUM = __importStar(require("./enum/decode"));
var DECODE_ONEOF = __importStar(require("./oneof/decode"));
var resizable_buffer_1 = require("./resizable-buffer");
Object.defineProperty(exports, "ResizableBuffer", { enumerable: true, get: function () { return __importDefault(resizable_buffer_1).default; } });
var context_1 = require("./context");
Object.defineProperty(exports, "getDefaultEncodingContext", { enumerable: true, get: function () { return context_1.getDefaultEncodingContext; } });
var encoding_type_2 = require("./encoding-type");
Object.defineProperty(exports, "EncodingType", { enumerable: true, get: function () { return encoding_type_2.EncodingType; } });
var ENCODE_TYPE_INDEX = new Map();
var DECODE_TYPE_INDEX = new Map();
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Integer, ENCODE_INTEGER);
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Number, ENCODE_NUMBER);
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.String, ENCODE_STRING);
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Any, ENCODE_ANY);
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Array, ENCODE_ARRAY);
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Object, ENCODE_OBJECT);
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Enum, ENCODE_ENUM);
ENCODE_TYPE_INDEX.set(encoding_type_1.EncodingType.OneOf, ENCODE_ONEOF);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Integer, DECODE_INTEGER);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Number, DECODE_NUMBER);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.String, DECODE_STRING);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Any, DECODE_ANY);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Array, DECODE_ARRAY);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Object, DECODE_OBJECT);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.Enum, DECODE_ENUM);
DECODE_TYPE_INDEX.set(encoding_type_1.EncodingType.OneOf, DECODE_ONEOF);
var encode = function (buffer, offset, encoding, value, context) {
var fns = ENCODE_TYPE_INDEX.get(encoding.type);
assert_1.strict(typeof fns !== 'undefined');
return fns[encoding.encoding](buffer, offset, value, encoding.options, context);
};
exports.encode = encode;
var decode = function (buffer, offset, encoding) {
var fns = DECODE_TYPE_INDEX.get(encoding.type);
assert_1.strict(typeof fns !== 'undefined');
return fns[encoding.encoding](buffer, offset, encoding.options);
};
exports.decode = decode;