/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/stubby@5.1.0/src/main.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const Admin=require("./portals/admin").Admin,Stubs=require("./portals/stubs").Stubs,Endpoints=require("./models/endpoints").Endpoints,Watcher=require("./console/watch"),CLI=require("./console/cli"),out=require("./console/out"),http=require("http"),https=require("https"),contract=require("./models/contract"),couldNotSave="The supplied endpoint data couldn't be saved";function noop(){}function onListening(t,n,o,e){null==o&&(o="http"),out.status(t+" portal running at "+o+"://"+e+":"+n)}function onError(t,n,o){let e;switch(t.code){case"EACCES":e="Permission denied for use of port "+n+". Exiting...";break;case"EADDRINUSE":e="Port "+n+" is already in use! Exiting...";break;case"EADDRNOTAVAIL":e='Host "'+o+'" is not available! Exiting...';break;default:e=t.message+". Exiting..."}out.error(e),console.dir(t),process.exit()}function onEndpointLoaded(t,n){out.notice("Loaded: "+n.request.method+" "+n.request.url)}function setupStartOptions(t,n){let o;n=null==n?noop:n,"function"==typeof(t=null==t?{}:t)&&(n=t,t={}),null==t.quiet&&(t.quiet=!0);const e=CLI.getArgs([]);for(o in e)null==t[o]&&(t[o]=e[o]);return out.quiet=t.quiet,[t,n]}function createHttpsOptions(t){const n=t._httpsOptions||{};return t.key&&t.cert?(n.key=t.key,n.cert=t.cert):t.pfx&&(n.pfx=t.pfx),n}function Stubby(){this.endpoints=new Endpoints,this.stubsPortal=null,this.tlsPortal=null,this.adminPortal=null}Stubby.prototype.start=function(t,n){const o=setupStartOptions(t,n),e=o[0],s=o[1],i=this;this.stop((function(){const t=contract(e.data);if(t)return s(t);null!=e.datadir&&(i.endpoints.datadir=e.datadir),null!=e["case-sensitive-headers"]&&(i.endpoints.caseSensitiveHeaders=e["case-sensitive-headers"]),i.endpoints.create(e.data,onEndpointLoaded),i.tlsPortal=https.createServer(createHttpsOptions(e),new Stubs(i.endpoints).server),i.tlsPortal.on("listening",(function(){onListening("Stubs",e.tls,"https",e.location)})),i.tlsPortal.on("error",(function(t){onError(t,e.tls,e.location)})),i.tlsPortal.listen(e.tls,e.location),i.stubsPortal=http.createServer(new Stubs(i.endpoints).server),i.stubsPortal.on("listening",(function(){onListening("Stubs",e.stubs,"http",e.location)})),i.stubsPortal.on("error",(function(t){onError(t,e.stubs,e.location)})),i.stubsPortal.listen(e.stubs,e.location),i.adminPortal=http.createServer(new Admin(i.endpoints).server),i.adminPortal.on("listening",(function(){onListening("Admin",e.admin,"http",e.location)})),i.adminPortal.on("error",(function(t){onError(t,e.admin,e.location)})),i.adminPortal.listen(e.admin,e.location),e.watch&&(i.watcher=new Watcher(i.endpoints,e.watch)),out.info("\nQuit: ctrl-c\n"),s()}))},Stubby.prototype.stop=function(t){const n=this;null==t&&(t=noop),setTimeout((function(){null!=n.watcher&&n.watcher.deactivate(),Promise.all([new Promise((t=>{n.adminPortal&&n.adminPortal.address()?n.adminPortal.close(t):t()})),new Promise((t=>{n.stubsPortal&&n.stubsPortal.address()?n.stubsPortal.close(t):t()})),new Promise((t=>{if(!n.tlsPortal||!n.tlsPortal.address())return t();n.tlsPortal.close(t)}))]).then((n=>t()))}),1)},Stubby.prototype.post=function(t,n){const o=this;null==n&&(n=noop),setTimeout((function(){contract(t)?n(couldNotSave):o.endpoints.create(t,n)}),1)},Stubby.prototype.get=function(t,n){const o=this;null==t&&(t=noop),null==n&&(n=t),setTimeout((function(){"function"==typeof t?o.endpoints.gather(n):o.endpoints.retrieve(t,n)}),1)},Stubby.prototype.put=function(t,n,o){const e=this;null==o&&(o=noop),setTimeout((function(){contract(n)?o(couldNotSave):e.endpoints.update(t,n,o)}),1)},Stubby.prototype.delete=function(t,n){const o=this;null==t&&(t=noop),null==n&&(n=t),setTimeout((function(){"function"==typeof t?o.endpoints.deleteAll(n):o.endpoints.delete(t,n)}),1)},module.exports.Stubby=Stubby;
//# sourceMappingURL=/sm/a0a18eaff1419e3c671ea529ba04a9096813bce804d768a0d78b74326c89a9b7.map