UNPKG

@deepkit/bson

Version:

Deepkit BSON parser

55 lines 3.4 kB
"use strict"; 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