@ogre-tools/injectable-extension-for-auto-registration
Version:
Auto-registration of injectables for Injectable in Ogre Tools
1 lines • 1.6 kB
JavaScript
(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var o in r)e.o(r,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{autoRegister:()=>p});const r=require("fs");var o=e.n(r);const n=require("path");var a=e.n(n);const i=require("lodash/fp"),s=require("@ogre-tools/fp"),l=require("@ogre-tools/injectable"),u=e=>(0,s.pipeline)(e,i.values,(0,i.filter)((0,i.overSome)([l.isInjectable,l.isInjectableBunch])),l.toFlatInjectables,i.uniq),c=e=>e.keys().map((t=>[t,e(t)])),d=e=>{if(0===e.length)throw new Error("Tried to auto-register injectables, but no matching files were found")},f=([[e,t]])=>{if(0===u(t).length)throw new Error(`Tried to register injectables from "${e}", but there were none"`)},p=(({fs:e,path:t})=>({di:r,targetModule:o,getRequireContexts:n})=>{o.require&&!o.require.context&&(o.require.context=(({targetModule:e,fs:t,path:r})=>(o=".",n=!1,a=/\.js$/)=>{const i=new Set;function s(t){return e.require(t)}return function e(o){t.readdirSync(o).forEach((s=>{const l=r.resolve(o,s);t.statSync(l).isDirectory()?n&&e(l):a.test(l)&&i.add(l)}))}(r.resolve(e.path,o)),s.keys=()=>[...i.values()],s})({targetModule:o,fs:e,path:t})),(0,s.pipeline)(n(),(0,i.flatMap)(c),(0,i.tap)(d),(0,i.tap)(f),(0,i.forEach)((e=>([,t])=>{e.register(...u(t))})(r)))})({fs:o(),path:a()});module.exports=t})();