@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
55 lines (53 loc) • 1.97 kB
JavaScript
import {
isResponse
} from "./chunk-UYDZZAEK.mjs";
import {
HttpStatus,
isHttpStatus
} from "./chunk-UGUAZFM4.mjs";
import {
choose
} from "./chunk-XAIHCZT4.mjs";
import {
isResults
} from "./chunk-NCEWAKOZ.mjs";
import {
isResult,
toResult
} from "./chunk-Q3WMGUO2.mjs";
import {
toList
} from "./chunk-A7C3XND3.mjs";
import {
isDefined,
isError
} from "./chunk-DEJ7A5PY.mjs";
// src/http/RestResult.ts
var hasErrors = (a) => isDefined(a?.error?.errors);
var hasItems = (a) => isDefined(a?.data.items);
var rest = {
toData: (status, items = [], totalItems, meta) => ({
data: {
code: status.status,
items: toList(items),
itemCount: items.length,
totalItems,
meta
}
}),
toError: (status, errors = [toResult(status.name)]) => ({
error: {
code: status.status,
message: status.name ?? errors[0].message ?? "Unknown",
errors: toList(errors),
errorCount: errors.length
}
}),
to: (payload, status) => choose(payload).is.not.defined((p) => p, void 0).type(isHttpStatus, (h) => rest.toError(h ?? status ?? HttpStatus.InternalServerError, [toResult(h.name)])).type(isResult, (r) => rest.toError(status ?? HttpStatus.BadRequest, [r])).type(isError, (e) => rest.toError(status ?? HttpStatus.BadRequest, [e])).type(isResults, (r) => rest.toError(status ?? HttpStatus.BadRequest, r.results)).type(isResponse, (r) => rest.toError(status ?? HttpStatus.byId(r.body.error?.code), r.body.error?.errors)).type(hasErrors, (e) => rest.toError(status ?? HttpStatus.byId(e.error.code, HttpStatus.BadRequest), e.error.errors)).type(hasItems, (d) => rest.toData(status ?? HttpStatus.byId(d.data.code, HttpStatus.Ok), d.data.items, d.data.totalItems, d.data.meta)).else((p) => rest.toData(status ?? HttpStatus.Ok, toList(p)))
};
var isRestResult = (r) => isDefined(r) && (isDefined(r.data) || isDefined(r.error));
export {
rest,
isRestResult
};
//# sourceMappingURL=chunk-MJALPDQ3.mjs.map