{"version":3,"sources":["jsdelivr-header.js","/npm/@pubcore/node-server-docker@2.1.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,MAAM,QAAU,QAAQ,WACvB,OAAS,QAAQ,UACjB,OAAS,QAAQ,UACjB,YAAc,QAAQ,eACtB,UAAY,QAAQ,sBAErB,IAAI,IAAC,KAAO,SACX,SAAC,SAAQ,SAAE,SAAQ,SAAE,SAAQ,gBAAE,gBAAe,gBAAE,gBAAe,kBAC9D,kBAAiB,mBAAE,oBAAsB,IAE3C,IAAI,SAAU,MAAM,IAAI,UAAU,+EAClC,QAAQ,IAAI,uBAAyB,UAGrC,MAAM,YAAc,UAAU,CAC5B,SAAU,UAAY,IACtB,IAAK,UAAY,MAGb,IAAM,UACZ,GAAuB,SAApB,gBAA2B,CAC7B,MAAM,EAAU,QAAQ,cACxB,EAAQ,OAAO,iBAAmB,KAClC,EAAQ,SAAS,mBAAqB,KACtC,IAAI,KAAI,CAAC,EAAK,EAAK,KACd,IACH,EAAI,KAAK,IAAK,iCAEd,GACD,GAEF,CAC0B,UAAvB,qBACF,IAAI,IAAI,OAAO,SAAU,CACxB,KAAM,CAAC,EAAK,IAAQ,EAAI,WAAa,IAAK,OAAQ,QAAQ,UAE3D,IAAI,IAAI,OAAO,SAAU,CACxB,KAAM,CAAC,EAAK,IAAQ,EAAI,YAAc,IAAK,OAAQ,QAAQ,WAG7D,IAAI,OAAO,eACX,IAAI,IAAI,aACR,IAAI,IAAI,OAAO,CAAC,uBAAuB,KACvC,IAAI,IAAI,eACR,IAAI,KAAK,gBAAgB,CAAC,EAAK,IAAQ,EAAI,KAAK,MAChD,IAAI,OAAS,QAAQ,WAAR,CAAoB,IAAK,KACtC,OAAO,QAAU,CAAC,gBAAS,QAAK","file":"/npm/@pubcore/node-server-docker@2.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@pubcore/node-server-docker@2.1.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict'\nconst express = require('express'), //dev: http server\n\thelmet = require('helmet'), //security: HTTP headers\n\tmorgan = require('morgan'), //ops: accesss logs\n\tcompression = require('compression'), //performance: response compression,\n\trateLimit = require('express-rate-limit') //security: DOS and brute force protection\n\nvar {env} = process,\n\t{NODE_ENV, RATE_WIN, RATE_MAX, TOOBUSY_ENABLED, TOOBUSY_MAX_LAT,\n\t\tTOOBUSY_INTERVALL, ACCESS_LOG_ENABLED} = env\n\nif(!NODE_ENV) throw new TypeError('undefined NODE_ENV, required to be set either \"development\" or \"production\"')\nconsole.log('node environment is ' + NODE_ENV)\n\n//leverage injections of secrets by bind-mounts or docker-secrets\nconst rateLimiter = rateLimit({\n\t\twindowMs: RATE_WIN || 5*60*1000, // 5 minutes\n\t\tmax: RATE_MAX || 300 // limit each IP to # requests per windowMs\n\t})\n\nconst app = express()\nif(TOOBUSY_ENABLED === 'true'){\n\tconst toobusy = require('toobusy-js') //availability\n\ttoobusy.maxLag(TOOBUSY_MAX_LAT || 200)\n\ttoobusy.interval(TOOBUSY_INTERVALL || 1000)\n\tapp.use((req, res, next) => {\n\t\tif (toobusy()) {\n\t\t\tres.send(503, 'Service currently unavailable');\n\t\t} else {\n\t\t\tnext()\n\t\t}\n\t})\n}\nif(ACCESS_LOG_ENABLED !== 'false'){\n\tapp.use(morgan('common', {\n\t\tskip: (req, res) => res.statusCode < 400, stream: process.stderr\n\t}))\n\tapp.use(morgan('common', {\n\t\tskip: (req, res) => res.statusCode >= 400, stream: process.stdout\n\t}))\n}\napp.enable('trust proxy')\napp.use(rateLimiter)\napp.use(helmet({contentSecurityPolicy: false}))//CSP to be done by application\napp.use(compression())\napp.head('/healthcheck', (req, res) => res.send(''))\nvar server = require('./server')(env, app)\nmodule.exports = {express, app, server}\n"]}