@selfage/observable
Version:
Runtime lib for generated observables.
34 lines • 4.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseObservable = exports.OBSERVABLE_PARSER = exports.popArrayUntilTargetLength = exports.nullifyArray = exports.checkArrayType = exports.nullifyOutput = exports.checkSourceNonNull = void 0;
const observable_array_1 = require("@selfage/observable_array");
const parser_1 = require("@selfage/message/parser");
const assembler_1 = require("./assembler");
function checkSourceNonNull(source) {
return Boolean(source) && typeof source === "object";
}
exports.checkSourceNonNull = checkSourceNonNull;
function nullifyOutput() {
return undefined;
}
exports.nullifyOutput = nullifyOutput;
function checkArrayType(sourceField) {
return Array.isArray(sourceField) || sourceField instanceof observable_array_1.ObservableArray;
}
exports.checkArrayType = checkArrayType;
function nullifyArray(ret, fieldName) {
ret[fieldName] = undefined;
}
exports.nullifyArray = nullifyArray;
function popArrayUntilTargetLength(retArrayField, targetLength) {
for (let i = retArrayField.length; i > targetLength; i--) {
retArrayField.pop();
}
}
exports.popArrayUntilTargetLength = popArrayUntilTargetLength;
exports.OBSERVABLE_PARSER = new assembler_1.ObservableAssembler(checkSourceNonNull, nullifyOutput, checkArrayType, nullifyArray, popArrayUntilTargetLength, parser_1.parsePrimitive, parser_1.parseEnum, parser_1.parseMessage);
function parseObservable(raw, descriptor, output) {
return exports.OBSERVABLE_PARSER.processObservableType(raw, descriptor, output);
}
exports.parseObservable = parseObservable;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUE0RDtBQUM1RCxvREFJaUM7QUFFakMsMkNBQWtEO0FBRWxELFNBQWdCLGtCQUFrQixDQUFDLE1BQVc7SUFDNUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ3ZELENBQUM7QUFGRCxnREFFQztBQUVELFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLFdBQWdCO0lBQzdDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLFlBQVksa0NBQWUsQ0FBQztBQUM5RSxDQUFDO0FBRkQsd0NBRUM7QUFFRCxTQUFnQixZQUFZLENBQUMsR0FBUSxFQUFFLFNBQWlCO0lBQ3RELEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDN0IsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IseUJBQXlCLENBQ3ZDLGFBQWtCLEVBQ2xCLFlBQW9CO0lBRXBCLEtBQUssSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3hELGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNyQjtBQUNILENBQUM7QUFQRCw4REFPQztBQUVVLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSwrQkFBbUIsQ0FDcEQsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2QsWUFBWSxFQUNaLHlCQUF5QixFQUN6Qix1QkFBYyxFQUNkLGtCQUFTLEVBQ1QscUJBQVksQ0FDYixDQUFDO0FBRUYsU0FBZ0IsZUFBZSxDQUM3QixHQUFRLEVBQ1IsVUFBbUMsRUFDbkMsTUFBVTtJQUVWLE9BQU8seUJBQWlCLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBTkQsMENBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlQXJyYXkgfSBmcm9tIFwiQHNlbGZhZ2Uvb2JzZXJ2YWJsZV9hcnJheVwiO1xuaW1wb3J0IHtcbiAgcGFyc2VQcmltaXRpdmUsXG4gIHBhcnNlRW51bSxcbiAgcGFyc2VNZXNzYWdlLFxufSBmcm9tIFwiQHNlbGZhZ2UvbWVzc2FnZS9wYXJzZXJcIjtcbmltcG9ydCB7IE9ic2VydmFibGVEZXNjcmlwdG9yIH0gZnJvbSBcIi4vZGVzY3JpcHRvclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZUFzc2VtYmxlciB9IGZyb20gXCIuL2Fzc2VtYmxlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tTb3VyY2VOb25OdWxsKHNvdXJjZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHNvdXJjZSkgJiYgdHlwZW9mIHNvdXJjZSA9PT0gXCJvYmplY3RcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bGxpZnlPdXRwdXQoKTogYW55IHtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXJyYXlUeXBlKHNvdXJjZUZpZWxkOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc291cmNlRmllbGQpIHx8IHNvdXJjZUZpZWxkIGluc3RhbmNlb2YgT2JzZXJ2YWJsZUFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlmeUFycmF5KHJldDogYW55LCBmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICByZXRbZmllbGROYW1lXSA9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcEFycmF5VW50aWxUYXJnZXRMZW5ndGgoXG4gIHJldEFycmF5RmllbGQ6IGFueSxcbiAgdGFyZ2V0TGVuZ3RoOiBudW1iZXJcbik6IHZvaWQge1xuICBmb3IgKGxldCBpID0gcmV0QXJyYXlGaWVsZC5sZW5ndGg7IGkgPiB0YXJnZXRMZW5ndGg7IGktLSkge1xuICAgIHJldEFycmF5RmllbGQucG9wKCk7XG4gIH1cbn1cblxuZXhwb3J0IGxldCBPQlNFUlZBQkxFX1BBUlNFUiA9IG5ldyBPYnNlcnZhYmxlQXNzZW1ibGVyKFxuICBjaGVja1NvdXJjZU5vbk51bGwsXG4gIG51bGxpZnlPdXRwdXQsXG4gIGNoZWNrQXJyYXlUeXBlLFxuICBudWxsaWZ5QXJyYXksXG4gIHBvcEFycmF5VW50aWxUYXJnZXRMZW5ndGgsXG4gIHBhcnNlUHJpbWl0aXZlLFxuICBwYXJzZUVudW0sXG4gIHBhcnNlTWVzc2FnZVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlT2JzZXJ2YWJsZTxUPihcbiAgcmF3OiBhbnksXG4gIGRlc2NyaXB0b3I6IE9ic2VydmFibGVEZXNjcmlwdG9yPFQ+LFxuICBvdXRwdXQ/OiBUXG4pOiBUIHtcbiAgcmV0dXJuIE9CU0VSVkFCTEVfUEFSU0VSLnByb2Nlc3NPYnNlcnZhYmxlVHlwZShyYXcsIGRlc2NyaXB0b3IsIG91dHB1dCk7XG59XG4iXX0=