/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@sap/approuter@21.3.0/approuter.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const assert=require("assert"),commander=require("commander"),_=require("lodash"),EventEmitter=require("events"),util=require("util"),bootstrap=require("./lib/bootstrap"),loggerUtil=require("./lib/utils/logger"),validators=require("./lib/configuration/validators"),appConfig=require("./lib/configuration/app-config"),envConfig=require("./lib/configuration/env-config"),MiddlewareList=require("./lib/extensions/MiddlewareList"),serverLib=require("./lib/server"),optionalCallback=require("./lib/utils/callback"),uaaUtils=require("./lib/utils/uaa-utils"),dynamicRoutingUtils=require("./lib/utils/dynamic-routing-utils"),iasUtils=require("./lib/utils/ias-utils");function Approuter(){if(assert(0===arguments.length,"Constructor takes no arguments"),!(this instanceof Approuter))return new Approuter;EventEmitter.call(this),this.cmdParser=(new commander.Command).option("-w, --workingDir <s>","The working directory containting the resources folder and xs-app.json file").option("-p, --port <n>","The port of the approuter"),this.first=new MiddlewareList,this.beforeRequestHandler=new MiddlewareList,this.beforeErrorHandler=new MiddlewareList,this.firstWS=new MiddlewareList,this.beforeRequestHandlerWS=new MiddlewareList}async function enrichStartupData(e,t){const i=(e.get("mainRouterConfig").iasConfig||{}).options||{};if(!Object.keys(i).length)return;let r;if(i.app_tid?i["btp-tenant-api"]||(r="btp-tenant-api missing"):r="app_tid missing",r)t.error(`Skipping IAS identityzone population at startup: ${r}`);else try{i.identityzone=await iasUtils.getSubdomainByApptid(i.app_tid,i["btp-tenant-api"]),t.info("IAS identityzone populated at startup: %s",i.identityzone)}catch(e){t.error("Failed to populate IAS identityzone at startup: %s",e.message)}}function addImplicitExtension(e,t){let i={insertMiddleware:{first:e.first._middleware,beforeRequestHandler:e.beforeRequestHandler._middleware,beforeErrorHandler:e.beforeErrorHandler._middleware,firstWS:e.firstWS._middleware,beforeRequestHandlerWS:e.beforeRequestHandlerWS._middleware}};t.extensions=t.extensions||[],t.extensions.unshift(i)}if(module.exports=Approuter,util.inherits(Approuter,EventEmitter),Approuter.prototype.start=async function(e,t){let i=this;dynamicRoutingUtils.isDynamicRouting()&&(i.first.use(dynamicRoutingUtils.initialize(i)),e?(delete e.port,e.getRouterConfig=dynamicRoutingUtils.getRouterConfig):e={getRouterConfig:dynamicRoutingUtils.getRouterConfig}),e?(validators.validateApprouterStartOptions(e),e=_.cloneDeep(e)):e={},t=optionalCallback(t),this.cmdParser&&(this.cmdParser.parse(process.argv),e=_.defaults(e,this.cmdParser)),addImplicitExtension(this,e);let r=loggerUtil.getLogger("/approuter");r.info("Application router version %s",require("./package.json").version);let o=bootstrap(e);o.logger=r,await enrichStartupData(o,r),o.approuter=this,o.extensions=e.extensions,this._app=o,loggerUtil.getAuditLogger((function(e,r){if(e)throw e;o.auditLogger=r,serverLib.start(o,(function(e,r){i._server=r,t(e)}))}))},Approuter.prototype.close=function(e){this._server?(clearInterval(this._app._store.memoryStore.sessionChecker),this._server.close(e)):process.nextTick(e)},Approuter.prototype.resolveUaaConfig=uaaUtils.resolveUaaConfig,Approuter.prototype.getRemoteConfigurationOptions=dynamicRoutingUtils.getRemoteConfigurationOptions,Approuter.prototype.createRouterConfig=function(e,t){let i,r;e=_.cloneDeep(e);try{assert(this._app,"Call Approuter.start before Approuter.createRouterConfig"),r=this._app.get("mainRouterConfig");let t=e.xsappname||r.uaaConfig.options.xsappname,i=e.destinations?envConfig.loadDestinations(e.destinations):r.destinations,o=appConfig.loadConfiguration(r.workingDir,e.xsappConfig,i,t);o.logout=_.extend({},r.appConfig.logout,_.pick(o.logout,"logoutPage","logoutEndpoint","logoutMethod","csrfProtection")),r=_.defaults({appConfig:o,destinations:i},r)}catch(e){i=e}t(i,r)},Approuter.prototype.getSessionStore=function(){let e=this._app.get("memoryStore");return Object.create(e,{set:{value:function(t,i,r,o){let n=r-Date.now();e.set(t,JSON.parse(i),o),e.sessionTimers[t]=Math.floor(n/1e4)}}})},require.main===module){(new Approuter).start()}
//# sourceMappingURL=/sm/30251ecececf376ec415af2829b37ccfae37c84e2a7e4ea8be749a14c21d903e.map