@deepkit/bson
Version:
Deepkit BSON parser
55 lines • 3.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.__ΩBSONDeserializer = void 0;
exports.getBSONDeserializer = getBSONDeserializer;
exports.deserializeBSON = deserializeBSON;
function __assignType(fn, args) {
fn.__type = args;
return fn;
}
/*@ts-ignore*/
var { __ΩReceiveType } = require('@deepkit/type');
const type_1 = require("@deepkit/type");
const core_1 = require("@deepkit/core");
const continuation_js_1 = require("./continuation.js");
const bson_serializer_js_1 = require("./bson-serializer.js");
const bson_parser_js_1 = require("./bson-parser.js");
function createBSONDeserializer(type, serializer, namingStrategy = new type_1.NamingStrategy(), path = '', jitStack = new type_1.JitStack()) {
const compiler = new core_1.CompilerContext();
compiler.context.set('seekElementSize', continuation_js_1.seekElementSize);
const state = new type_1.TemplateState('result', '', compiler, serializer.bsonDeserializeRegistry, namingStrategy, jitStack, [path]);
state.target = 'deserialize';
const code = `
let result;
state = state || {};
state.parser = data;
${(0, type_1.executeTemplates)(state, type)}
return result;
`;
return compiler.build(code, 'data', 'state');
}
createBSONDeserializer.__type = ['Type', 'type', () => bson_serializer_js_1.BSONBinarySerializer, 'serializer', () => type_1.NamingStrategy, 'namingStrategy', () => new type_1.NamingStrategy(), 'path', () => "", () => type_1.JitStack, 'jitStack', () => new type_1.JitStack(), 'createBSONDeserializer', 'P"w!2"P7#2$P7%2&>\'&2(>)P7*2+>,"/-'];
const __ΩBSONDeserializer = ['T', 'bson', 'offset', '', 'BSONDeserializer', 'b!PW2"\'2#8e"!/$w%y'];
exports.__ΩBSONDeserializer = __ΩBSONDeserializer;
function getBSONDeserializer(serializer = bson_serializer_js_1.bsonBinarySerializer, receiveType = getBSONDeserializer.Ω?.[0]) {
getBSONDeserializer.Ω = undefined;
const type = (0, type_1.resolveReceiveType)(receiveType);
const jit = (0, type_1.getTypeJitContainer)(type);
if (jit[serializer.deserializeId])
return jit[serializer.deserializeId];
const deserializer = createBSONDeserializer(type, bson_serializer_js_1.bsonBinarySerializer);
jit[serializer.deserializeId] = __assignType(function (bson, offset = 0) {
const parser = new bson_parser_js_1.BaseParser(bson, offset);
return deserializer(parser);
}, ['bson', 'offset', () => 0, '', 'PW2!\'2">#"/$']);
(0, core_1.toFastProperties)(jit);
return jit[serializer.deserializeId];
}
getBSONDeserializer.__type = [() => bson_serializer_js_1.BSONBinarySerializer, 'serializer', () => bson_serializer_js_1.bsonBinarySerializer, () => __ΩReceiveType, 'receiveType', () => __ΩBSONDeserializer, 'getBSONDeserializer', 'PP7!2">#"o$"2%8"o&"/\''];
function deserializeBSON(data, offset, serializer = bson_serializer_js_1.bsonBinarySerializer, receiveType = deserializeBSON.Ω?.[0]) {
deserializeBSON.Ω = undefined;
const deserialize = getBSONDeserializer(serializer, receiveType);
return deserialize(data, offset);
}
deserializeBSON.__type = ['data', 'offset', () => bson_serializer_js_1.BSONBinarySerializer, 'serializer', () => bson_serializer_js_1.bsonBinarySerializer, () => __ΩReceiveType, 'receiveType', 'deserializeBSON', 'PW2!\'2"8P7#2$>%"o&"2\'8"/('];
//# sourceMappingURL=bson-deserializer.js.map