UNPKG

@selfage/message

Version:

Runtime lib for generated messages to parse, copy, serialize and deserialize messages.

58 lines 6.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.copyField = copyField; exports.copyMessageType = copyMessageType; exports.copyMessage = copyMessage; function copyField(from, field, output) { if (field.primitiveType) { return from; } else if (field.enumType) { return from; } else { // message type return copyMessageType(from, field.messageType, output); } } function copyMessageType(from, descriptor, output) { if (!from) { return undefined; } let ret = output; if (!ret) { ret = {}; } for (let field of descriptor.fields) { if (from[field.name] === undefined) { ret[field.name] = undefined; continue; } if (!field.isArray) { ret[field.name] = copyField(from[field.name], field, ret[field.name]); } else { if (!ret[field.name]) { ret[field.name] = []; } let fromArrayField = from[field.name]; let retArrayField = ret[field.name]; for (let i = 0; i < fromArrayField.length; i++) { if (i < retArrayField.length) { retArrayField[i] = copyField(fromArrayField[i], field, retArrayField[i]); } else { retArrayField.push(copyField(fromArrayField[i], field)); } } while (retArrayField.length > fromArrayField.length) { retArrayField.pop(); } } } return ret; } function copyMessage(from, descriptor, to) { return copyMessageType(from, descriptor, to); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29waWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsOEJBU0M7QUFFRCwwQ0E0Q0M7QUFFRCxrQ0FNQztBQS9ERCxTQUFnQixTQUFTLENBQUMsSUFBUyxFQUFFLEtBQW1CLEVBQUUsTUFBWTtJQUNwRSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04sZUFBZTtRQUNmLE9BQU8sZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsZUFBZSxDQUM3QixJQUFTLEVBQ1QsVUFBZ0MsRUFDaEMsTUFBVTtJQUVWLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLEdBQUcsR0FBUSxNQUFNLENBQUM7SUFDdEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNYLENBQUM7SUFDRCxLQUFLLElBQUksS0FBSyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDNUIsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM3QixhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUMxQixjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLEtBQUssRUFDTCxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7Z0JBQ0osQ0FBQztxQkFBTSxDQUFDO29CQUNOLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sYUFBYSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BELGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFnQixXQUFXLENBQ3pCLElBQU8sRUFDUCxVQUFnQyxFQUNoQyxFQUFNO0lBRU4sT0FBTyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZURlc2NyaXB0b3IsIE1lc3NhZ2VGaWVsZCB9IGZyb20gXCIuL2Rlc2NyaXB0b3JcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlGaWVsZChmcm9tOiBhbnksIGZpZWxkOiBNZXNzYWdlRmllbGQsIG91dHB1dD86IGFueSk6IGFueSB7XG4gIGlmIChmaWVsZC5wcmltaXRpdmVUeXBlKSB7XG4gICAgcmV0dXJuIGZyb207XG4gIH0gZWxzZSBpZiAoZmllbGQuZW51bVR5cGUpIHtcbiAgICByZXR1cm4gZnJvbTtcbiAgfSBlbHNlIHtcbiAgICAvLyBtZXNzYWdlIHR5cGVcbiAgICByZXR1cm4gY29weU1lc3NhZ2VUeXBlKGZyb20sIGZpZWxkLm1lc3NhZ2VUeXBlLCBvdXRwdXQpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5TWVzc2FnZVR5cGU8VD4oXG4gIGZyb206IGFueSxcbiAgZGVzY3JpcHRvcjogTWVzc2FnZURlc2NyaXB0b3I8VD4sXG4gIG91dHB1dD86IFQsXG4pOiBUIHtcbiAgaWYgKCFmcm9tKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCByZXQ6IGFueSA9IG91dHB1dDtcbiAgaWYgKCFyZXQpIHtcbiAgICByZXQgPSB7fTtcbiAgfVxuICBmb3IgKGxldCBmaWVsZCBvZiBkZXNjcmlwdG9yLmZpZWxkcykge1xuICAgIGlmIChmcm9tW2ZpZWxkLm5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtmaWVsZC5uYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghZmllbGQuaXNBcnJheSkge1xuICAgICAgcmV0W2ZpZWxkLm5hbWVdID0gY29weUZpZWxkKGZyb21bZmllbGQubmFtZV0sIGZpZWxkLCByZXRbZmllbGQubmFtZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXJldFtmaWVsZC5uYW1lXSkge1xuICAgICAgICByZXRbZmllbGQubmFtZV0gPSBbXTtcbiAgICAgIH1cbiAgICAgIGxldCBmcm9tQXJyYXlGaWVsZCA9IGZyb21bZmllbGQubmFtZV07XG4gICAgICBsZXQgcmV0QXJyYXlGaWVsZCA9IHJldFtmaWVsZC5uYW1lXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbUFycmF5RmllbGQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPCByZXRBcnJheUZpZWxkLmxlbmd0aCkge1xuICAgICAgICAgIHJldEFycmF5RmllbGRbaV0gPSBjb3B5RmllbGQoXG4gICAgICAgICAgICBmcm9tQXJyYXlGaWVsZFtpXSxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmV0QXJyYXlGaWVsZFtpXSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldEFycmF5RmllbGQucHVzaChjb3B5RmllbGQoZnJvbUFycmF5RmllbGRbaV0sIGZpZWxkKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlIChyZXRBcnJheUZpZWxkLmxlbmd0aCA+IGZyb21BcnJheUZpZWxkLmxlbmd0aCkge1xuICAgICAgICByZXRBcnJheUZpZWxkLnBvcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weU1lc3NhZ2U8VD4oXG4gIGZyb206IFQsXG4gIGRlc2NyaXB0b3I6IE1lc3NhZ2VEZXNjcmlwdG9yPFQ+LFxuICB0bz86IFQsXG4pOiBUIHtcbiAgcmV0dXJuIGNvcHlNZXNzYWdlVHlwZShmcm9tLCBkZXNjcmlwdG9yLCB0byk7XG59XG4iXX0=