@sigiljs/sigil
Version:
TypeScript-first Node.js HTTP framework offering schema-driven routing, modifier-based middleware, plugin extensibility, and flexible response templating
2 lines (1 loc) • 1.6 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("./modifier/attach-modifier-context.js"),r=require("../utils/make-log.js");class a{constructor(t,i,s){this.$pathfinder=i,this.__$options=s,this.logger=r.default.bind({},s?.debug),t&&(this.$modifierConstructors=t,this.initializeModifiers())}__$schemas={};logger;__$options;__$sigil;__initialParent;$registeredRequests=new Map;$modifierInstances=[];$modifierConstructors=[];$updateCallback;$mounted=new Map;get routeOptions(){return this.__$options}get __$pathfinder(){return this.$pathfinder}get exportRequests(){const t=Array.from(this.$mounted.entries()).flatMap(([i,s])=>s.exportRequests.map(e=>({...e,path:i+e.path})));return[...this.$registeredRequests.values(),...t]}mount(t,i){this.$mounted.set(t,i),this.__$pathfinder.mount(t,i.__$pathfinder),this.$updateCallback&&i.__$connectToSigil(this.__$sigil,()=>this.$updateCallback?.(),this.__$options),this.$updateCallback?.()}__$connectToSigil(t,i,s){if(this.$updateCallback=i,this.__$sigil=t,this.initializeModifiers(),!!s){this.__$options||(this.__$options={});for(const[e,n]of Object.entries(s))e!=="middleware"&&this.__$options[e]===void 0&&(this.__$options[e]=n)}}async $injectModifier(t){let i=Object.assign({},t);for(const s of this.$modifierInstances){const e=s.onRequest(t),n=e instanceof Promise?await e:e;i={...i,...n}}return i}initializeModifiers(){this.$modifierInstances=this.$modifierConstructors.map(t=>(o.default(t,{sigilApi:this.__$sigil,debugOpts:this.routeOptions?.debug||{}}),new t))}}exports.default=a;