UNPKG

@berish/rfp

Version:

Binary secure transport organization protocol for peer communication using function fingerprints

47 lines 2.13 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.classInstanceToClassPrintPlugin = exports.SYMBOL_SERBER_REGISTRATOR = void 0; const linq_1 = __importDefault(require("@berish/linq")); const abstract_1 = require("../abstract"); exports.SYMBOL_SERBER_REGISTRATOR = Symbol('serberRegistrator'); exports.classInstanceToClassPrintPlugin = { isForSerialize: (obj, options) => { const registrator = options[exports.SYMBOL_SERBER_REGISTRATOR]; if (!registrator) return false; return typeof obj === 'object' && registrator.isRegisteredInstance(obj); }, isForDeserialize: (print, options) => { const registrator = options[exports.SYMBOL_SERBER_REGISTRATOR]; if (!registrator) return false; return abstract_1.getType(print) === 'printClass'; }, isAlreadySerialized: (obj, options) => exports.classInstanceToClassPrintPlugin.isForDeserialize(obj, options), isAlreadyDeserialized: (obj, options) => exports.classInstanceToClassPrintPlugin.isForSerialize(obj, options), serialize: (obj, options) => { const registrator = options[exports.SYMBOL_SERBER_REGISTRATOR]; const names = registrator.getNamesByInstance(obj); const data = {}; const print = Object.assign(Object.assign({}, abstract_1.createPrint(abstract_1.PrintTypeEnum.printClass)), { names, data }); return print; }, deserialize: (obj, options) => { const registrator = options[exports.SYMBOL_SERBER_REGISTRATOR]; const { names, data } = obj; const out = {}; const classes = linq_1.default.from(names) .select((m) => registrator.getClassesByClassName(m)) .selectMany((m) => m) .toArray(); const mainClass = classes[0]; if (!mainClass) return out; return registrator.getInstanceByClass(out, mainClass); }, }; //# sourceMappingURL=plugin.js.map