@dawans/promptshield
Version:
Secure your LLM stack with enterprise-grade RulePacks for AI safety scanning
103 lines (102 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.unwrapOr = exports.unwrap = exports.match = exports.err = exports.ok = exports.Err = exports.Ok = void 0;
/**
* Represents a successful result
*/
class Ok {
constructor(value) {
this.value = value;
this.kind = 'ok';
}
isOk() {
return true;
}
isErr() {
return false;
}
map(fn) {
return new Ok(fn(this.value));
}
flatMap(fn) {
return fn(this.value);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
mapErr(_fn) {
return this;
}
}
exports.Ok = Ok;
/**
* Represents a failed result
*/
class Err {
constructor(error) {
this.error = error;
this.kind = 'err';
}
isOk() {
return false;
}
isErr() {
return true;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
map(_fn) {
return this;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
flatMap(_fn) {
return this;
}
mapErr(fn) {
return new Err(fn(this.error));
}
}
exports.Err = Err;
/**
* Creates a successful result
*/
const ok = (value) => new Ok(value);
exports.ok = ok;
/**
* Creates a failed result
*/
const err = (error) => new Err(error);
exports.err = err;
/**
* Pattern matching for Result types
*/
const match = (result, handlers) => {
if (result.isOk()) {
return handlers.ok(result.value);
}
else {
return handlers.err(result.error);
}
};
exports.match = match;
/**
* Unwraps a Result, throwing an error if it's an Err
*/
const unwrap = (result) => {
if (result.isOk()) {
return result.value;
}
else {
throw result.error;
}
};
exports.unwrap = unwrap;
/**
* Unwraps a Result, returning a default value if it's an Err
*/
const unwrapOr = (result, defaultValue) => {
if (result.isOk()) {
return result.value;
}
else {
return defaultValue;
}
};
exports.unwrapOr = unwrapOr;