@thisisagile/easy-service
Version:
Straightforward library for building domain-driven microservice architectures
39 lines (38 loc) • 1.05 kB
JavaScript
// src/resources/Route.ts
import { meta, tryTo } from "@thisisagile/easy";
var route = (uri) => (subject) => {
meta(subject).set("route", uri);
};
var toRoute = (endpoint, requires, verb, middleware) => tryTo(verb).is.defined().map((verb2) => ({ verb: verb2, endpoint, requires, middleware: middleware ?? [] })).orElse();
var Router = class {
constructor(resource) {
this.resource = resource;
}
get route() {
return meta(this.resource).get("route");
}
get middleware() {
return meta(this.resource).get("middleware") ?? [];
}
get endpoints() {
return meta(this.resource).properties("verb").mapDefined(
(v) => toRoute(
this.resource[v.property],
{
labCoat: v.get("labCoat") ?? false,
token: v.get("token") ?? false,
scope: v.get("scope"),
uc: v.get("uc")
},
v.get("verb"),
v.get("middleware")
)
);
}
};
var routes = (resource) => new Router(resource);
export {
route,
routes
};
//# sourceMappingURL=chunk-FYPLZQRO.mjs.map