UNPKG

@thisisagile/easy-service

Version:

Straightforward library for building domain-driven microservice architectures

40 lines (39 loc) 1.1 kB
// 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, name = "") => tryTo(verb).is.defined().map((verb2) => ({ verb: verb2, name, 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"), v.property.toString() ) ); } }; var routes = (resource) => new Router(resource); export { route, routes }; //# sourceMappingURL=chunk-B37TXK4C.mjs.map