@nucypher/taco
Version:
### [`nucypher/taco-web`](../../README.md)
54 lines • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Condition = exports.baseConditionSchema = void 0;
const shared_1 = require("@nucypher/shared");
const utils_1 = require("../utils");
const const_1 = require("./const");
var common_1 = require("./schemas/common");
Object.defineProperty(exports, "baseConditionSchema", { enumerable: true, get: function () { return common_1.baseConditionSchema; } });
const ERR_INVALID_CONDITION = (error) => `Invalid condition: ${JSON.stringify(error.issues)}`;
class Condition {
schema;
value;
constructor(schema, value) {
this.schema = schema;
this.value = value;
const { data, error } = Condition.validate(schema, value);
if (error) {
throw new Error(ERR_INVALID_CONDITION(error));
}
this.value = data;
}
static validate(schema, value) {
const result = schema.safeParse(value);
if (result.success) {
return { data: result.data };
}
return { error: result.error };
}
// TODO: Fix this method and add a test for it
findParamWithAuthentication() {
const serialized = (0, utils_1.toJSON)(this.value);
for (const param of const_1.USER_ADDRESS_PARAMS) {
if (serialized.includes(param)) {
return param;
}
}
return null;
}
requiresAuthentication() {
return Boolean(this.findParamWithAuthentication());
}
toObj() {
const { data, error } = Condition.validate(this.schema, this.value);
if (error) {
throw new Error(ERR_INVALID_CONDITION(error));
}
return data;
}
equals(other) {
return (0, shared_1.objectEquals)(this.toObj(), other.toObj());
}
}
exports.Condition = Condition;
//# sourceMappingURL=condition.js.map