diffusion
Version:
Diffusion JavaScript client
86 lines (85 loc) • 3.96 kB
JavaScript
;
/**
* @module TopicUpdate
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateConstraintFactory = exports.UpdateConstraintFactoryImpl = void 0;
var errors_1 = require("./../../errors/errors");
var abstract_datatype_1 = require("./../data/abstract-datatype");
var bytes_impl_1 = require("./../data/bytes-impl");
var datatypes_1 = require("./../data/datatypes");
var topic_constraints_1 = require("./../topic-update/topic-constraints");
var update_constraint_1 = require("./../topic-update/update-constraint");
var require_non_null_1 = require("./../util/require-non-null");
var update_constraint_2 = require("../../topic-update/update-constraint");
var topic_constraints_2 = require("./topic-constraints");
/**
* Implementation of {@link UpdateConstraintFactory}
*/
var UpdateConstraintFactoryImpl = /** @class */ (function () {
function UpdateConstraintFactoryImpl() {
}
/**
* @inheritdoc
*/
UpdateConstraintFactoryImpl.prototype.locked = function (lock) {
return new update_constraint_1.Locked(lock);
};
/**
* @inheritdoc
*/ // eslint-disable-next-line complexity
UpdateConstraintFactoryImpl.prototype.value = function (valueOrOperator, dataTypeOrValue, dataTypeNewApi) {
var oldApi = arguments.length === 1 ||
(arguments.length === 2 && arguments[1] instanceof abstract_datatype_1.AbstractDataType);
var operator = oldApi ? update_constraint_2.UpdateConstraintOperator.IS : valueOrOperator;
var value = oldApi ? valueOrOperator : dataTypeOrValue;
var dataType = oldApi ? dataTypeOrValue : dataTypeNewApi;
require_non_null_1.requireNonNull(value, 'value');
require_non_null_1.requireNonNull(operator, 'operator');
var valueType = ((dataType !== undefined)
? dataType
: datatypes_1.DataTypes.getByValue(value));
if (valueType === undefined) {
throw new errors_1.IllegalArgumentError('Datatype invalid or could not be inferred');
}
if (operator === update_constraint_2.UpdateConstraintOperator.IS) {
var bytes = (value instanceof bytes_impl_1.BytesImpl) ? value : valueType.toBytes(value);
return new topic_constraints_2.TopicValueConstraint(update_constraint_2.UpdateConstraintOperator.IS, update_constraint_1.ConstraintValueType.BINARY, bytes);
}
if (valueType === datatypes_1.DataTypes.string()) {
if (!topic_constraints_1.isEqualityOperator(operator)) {
throw new errors_1.IllegalArgumentError('Invalid operator for String value');
}
}
else if (valueType !== datatypes_1.DataTypes.double() && valueType !== datatypes_1.DataTypes.int64()) {
throw new errors_1.IllegalArgumentError("value type " + valueType.name() + " is not supported with "
+ ("the " + update_constraint_2.UpdateConstraintOperator[operator] + " operator"));
}
return new topic_constraints_2.TopicValueConstraint(operator, update_constraint_1.ConstraintValueType[valueType.name().toUpperCase()], valueType.toBytes(value));
};
/**
* @inheritdoc
*/
UpdateConstraintFactoryImpl.prototype.noValue = function () {
return new topic_constraints_1.NoValue();
};
/**
* @inheritdoc
*/
UpdateConstraintFactoryImpl.prototype.noTopic = function () {
return new topic_constraints_1.NoTopic();
};
/**
* @inheritdoc
*/
UpdateConstraintFactoryImpl.prototype.jsonValue = function () {
return new topic_constraints_1.PartialJSONImpl();
};
return UpdateConstraintFactoryImpl;
}());
exports.UpdateConstraintFactoryImpl = UpdateConstraintFactoryImpl;
/**
* The UpdateConstraintFactory singleton instance
*/
var updateConstraintFactory = Object.freeze(new UpdateConstraintFactoryImpl());
exports.updateConstraintFactory = updateConstraintFactory;