reverse-proxy-middleware 0.0.130 → 0.0.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/helper.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { BufferedHTTPServerRequest, EvaluationParameters, EvaluationScopeStateAPIs, Forwarders, HTTPServerResponse, ResolvedHeaderTransformation, ResolvedForwarder, ResolvedForwarders } from './type';
2
- export declare const EVALUATION_SCOPE_NAMES: readonly ["array", "datetime", "filesystem", "functions", "indicators", "logger", "number", "object", "require", "string", "utility", "data", "error", "request", "response", "stateAPI", "stateAPIs"];
2
+ export declare const EVALUATION_SCOPE_NAMES: readonly ["array", "datetime", "filesystem", "functions", "indicators", "logger", "module", "number", "object", "string", "utility", "data", "error", "request", "response", "stateAPI", "stateAPIs"];
3
3
  export declare const logging: {
4
4
  log: (...parameters: Array<unknown>) => Promise<void>;
5
5
  debug: (...parameters: Array<unknown>) => Promise<void>;
package/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { Server } from './type';
1
+ import type { Server } from './type';
2
2
  declare const server: Server;
3
3
  export default server;
package/index.js CHANGED
@@ -1,2 +1,374 @@
1
1
  #!/usr/bin/env node
2
- "use strict";if("undefined"!=typeof module&&null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&"undefined"!=typeof __dirname&&null!==__dirname&&(module.paths=eval("require.main.paths").concat(module.paths.filter(function(path){return eval("require.main.paths").includes(path)})))}module===eval("require.main")&&module.paths.unshift("/application/node_modules"),(()=>{var __webpack_modules__=[(e,r,t)=>{t.d(r,{addParsedContentToRequest:()=>P,applyStateAPIs:()=>O,default:()=>g,determineForwarder:()=>h,logging:()=>b,resolveForwarders:()=>v});var n=t(1),_=t.n(n),o=t(2),a=t.n(o),s=t(3),i=t.n(s),u=t(4);const c=require("net"),p=require("tls");function l(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return f(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?f(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var d=[].concat(u.UTILITY_SCOPE_NAMES,["data","error","request","response","stateAPI","stateAPIs"]),E=function(){var e=a()(i().mark(function e(){var r,t,n,_=arguments;return i().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:for(r=_.length,t=Array(r),n=0;n<r;n++)t[n]=_[n];return e.abrupt("return",new Promise(function(e,r){process.stdout.write(t.join(" ")+"\n",function(t){t?r(t):e()})}));case 1:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),b={log:E,debug:E,info:E,error:E,warn:E},O=function(){var e=a()(i().mark(function e(r,t,n){var _,o,a,s,c,p,f,d,E,O,h,v,P,m,g,M,I,A;return i().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:_={},a=l(n.stateAPIs);case 1:if((s=a()).done){e.next=21;break}c=s.value,o=_[c.name]={configuration:c,error:null,response:null},p=!1,f=1,d=l(c.expressions.pre);case 2:if((E=d()).done){e.next=7;break}O=E.value,h=void 0;try{h=O.apply(void 0,u.UTILITY_SCOPE_VALUES.concat([c.data,null,r,t,o,_]))}catch(e){b.warn("Failed running pre "+f+". expression of state api:",e)}if("number"!=typeof h){e.next=3;break}return b.info("Break request caused by state api",'"'+c.name+'" with status code '+h+"."),t.statusCode=h,t.end(),e.abrupt("return",{result:!1,scope:_});case 3:if("break"!==h){e.next=4;break}return e.abrupt("continue",7);case 4:if(f+=1,"boolean"!=typeof h){e.next=6;break}if(!h){e.next=5;break}p=!0,e.next=6;break;case 5:return e.abrupt("continue",7);case 6:e.next=2;break;case 7:if(!p){e.next=20;break}if(b.info('Use state api: "'+c.name+'"'),v=null,c.urlExpression)try{c.url=c.urlExpression.apply(c,u.UTILITY_SCOPE_VALUES.concat([c.data,null,r,t,o,_]))}catch(e){b.warn("Failed running url expression:",e)}return b.debug("\nState api configuration is: "+(0,u.represent)(c)),e.prev=8,e.next=9,fetch(c.url,c.options);case 9:o.response=e.sent,e.next=11;break;case 10:e.prev=10,I=e.catch(8),v=I,b.warn('Running state api request for "'+c.name+'" throws',"error:",v);case 11:if(!(o.response&&o.response.headers.has("content-type")&&/application\/json(;.*)?$/.test(o.response.headers.get("content-type")))){e.next=15;break}return e.prev=12,e.next=13,o.response.json();case 13:o.response.data=e.sent,e.next=15;break;case 14:e.prev=14,A=e.catch(12),v=A,b.warn("Parsing state api json response for",'"'+c.name+'" throws error:',v);case 15:b.debug("\nState api response is:",(0,u.represent)(o.response)),f=1,P=l(c.expressions.post);case 16:if((m=P()).done){e.next=20;break}g=m.value,M=null;try{M=g.apply(void 0,u.UTILITY_SCOPE_VALUES.concat([c.data,v,r,t,o,_]))}catch(e){b.warn("Failed running "+f+". post expression of state api:",e)}if("number"!=typeof M){e.next=17;break}return b.info("Break request caused by state api",'"'+c.name+'" with status code '+M+"."),t.statusCode=M,t.end(),e.abrupt("return",{result:!1,scope:_});case 17:if("break"!==M){e.next=18;break}return e.abrupt("continue",20);case 18:f+=1;case 19:e.next=16;break;case 20:e.next=1;break;case 21:return e.abrupt("return",{result:!0,scope:_});case 22:case"end":return e.stop()}},e,null,[[8,10],[12,14]])}));return function(){return e.apply(this,arguments)}}(),h=function(e,r,t){for(var n,_=l(Object.entries(t).sort(function(e,r){var t=e[0],n=r[0];return t.localeCompare(n)}));!(n=_()).done;){var o,a=n.value,s=a[0],i=a[1],c={configuration:i,error:null,response:null};if(i.useExpression.apply(i,u.UTILITY_SCOPE_VALUES.concat([i,null,e,r,c,(o={},o[s]=c,o)])))return b.info('Determined forwarder is: "'+s+'".'),i}return null},v=function(e){for(var r={},t=0,n=Object.entries(e);t<n.length;t++){var o=n[t],a=o[0],s=o[1];if("base"!==a){for(var i,c=(0,u.extend)(!0,{name:a},(0,u.modifyObject)((0,u.copy)(e.base),s),s),p={retrieve:[],send:[]},f=l(["retrieve","send"]);!(i=f()).done;)for(var E,b=i.value,O=function(){var e=E.value,r=_()({},e,{sourceRun:function(){return""},targetRun:function(){return""}});if(Object.prototype.hasOwnProperty.call(r,"source"))if(r.source instanceof RegExp)r.sourceRun=function(){return r.source};else if("string"==typeof r.source){var t=(0,u.compile)(r.source,d);if(t.error)throw new Error(t.error);r.sourceRun=t.templateFunction}else r.source&&(r.sourceRun=r.source);if(Object.prototype.hasOwnProperty.call(r,"target"))if("string"==typeof r.target){var n=(0,u.compile)(r.target,d);if(n.error)throw new Error(n.error);r.targetRun=n.templateFunction}else r.target&&(r.targetRun=r.target);p[b].push(r)},h=l([].concat(c.headerTransformations[b]));!(E=h()).done;)O();c.headerTransformations=p;for(var v,P,m=[],g=[].concat(c.stateAPIs||[]),M=g.filter(function(e){return"base"===e.name})[0],I=[],A=l(g);!(v=A()).done;)"base"!==(P=v.value).name&&I.push((0,u.extend)(!0,{},(0,u.modifyObject)((0,u.copy)(M),P),P));for(var D,T=0,y=I;T<y.length;T++){if("string"==typeof(D=y[T]).urlExpression){var w=(0,u.compile)(D.urlExpression,d);if(w.error)throw new Error(w.error);D.urlExpression=w.templateFunction}for(var k,R={pre:[],post:[]},U=l([].concat((null==(C=D.expressions)?void 0:C.pre)||[]));!(k=U()).done;){var C,x=k.value;if("string"==typeof x){var L=(0,u.compile)(x,d);if(L.error)throw new Error(L.error);R.pre.push(L.templateFunction)}else R.pre.push(x)}for(var q,B=l([].concat((null==(S=D.expressions)?void 0:S.post)||[]));!(q=B()).done;){var S,K=q.value;if("string"==typeof K){var W=(0,u.compile)(K,d);if(W.error)throw new Error(W.error);R.post.push(W.templateFunction)}else R.post.push(K)}D.expressions=R,m.push(D)}if(c.stateAPIs=m,"string"==typeof c.useExpression){var F=(0,u.compile)(c.useExpression,d);if(F.error)throw new Error(F.error);c.useExpression=F.templateFunction}r[a]=c}}return r},P=function(e){if(e.headers["content-type"]&&/application\/json(;.*)?$/.test(e.headers["content-type"]))try{var r=Buffer.concat(e.socket.buffer.data).toString();e.socket.buffer.body=r.replace(/^[\s\S]+\s*\n\s*\n\s*([\s\S]+)$/m,"$1"),e.socket.buffer.content=JSON.parse(e.socket.buffer.body)}catch(r){b.warn("Error parsing given request.",e)}},m=function(e,r,t){for(var n,_=!1,o=function(){var r=n.value;try{var o=r.sourceRun.apply(r,t),a=r.targetRun.apply(r,t);if([null,void 0].includes(o)||"string"==typeof o&&""===o.trim()){if([null,void 0].includes(a)||"string"==typeof a&&""===a.trim())return 1;e=e.replace(/(\s*\n)\s*\n\s*/,function(e,r){for(var t=arguments.length,n=Array(2<t?t-2:0),_=2;_<t;_++)n[_-2]=arguments[_];var o="string"==typeof a?a:a?a.apply(void 0,[e,r].concat(n)):"";return""+r+o+e})}else _||(b.debug(),_=!0),b.debug('Search for "'+o+'" and replace with',(0,u.represent)(a)+"."),o&&(e=e.replace(o,a))}catch(e){b.warn("\nCould not apply header transformation with source "+(r.source?(0,u.represent)(r.source):'"add"')+" and replacement "+(r.target?(0,u.represent)(r.target):'"remove"')+":",e)}},a=l(r);!(n=a()).done;)o();return e};const g=function(){var e=a()(i().mark(function e(r,t,n,o){return i().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(e,a){var s=t.socket,i=n.tls?p.connect:c.createConnection,f=n.tls&&443!==n.port||!n.tls&&80!==n.port?":"+n.port:"",d=i(_()({host:n.host,port:n.port},n.tls?{servername:n.host,rejectUnauthorized:!1}:{}),function(){b.info("\nConnection to: http"+(n.tls?"s":"")+"://"+n.host+f+" established.")});d.on("error",function(e){b.error("Proxy to server error",e),a(e)});var E=[].concat(u.UTILITY_SCOPE_VALUES,[{clientSocket:s,serverSocket:d},null,r,t,null,o]);if(n.headerTransformations.retrieve.length){var O=!1;d.on("data",function(r){if(O)s.write(r);else{var t=r.toString();b.info("\n <=== Got response header from backend:\n\n"+t),t=m(t,n.headerTransformations.retrieve,E),b.info("\n <<<< Send response header to client:\n\n"+t),s.write(t),O=!0,e()}})}else d.pipe(s);d.on("connect",function(){for(var e,t,_=!1,o=l(r.socket.buffer.data);!(e=o()).done;)if(t=e.value,_)d.write(t);else{var a=t.toString();b.debug("\n ===> Got request header from client:\n\n"+a),n.tls&&(a=a.replace(/HTTP\/1\.0/i,"HTTP/1.1")),a=a.replace(/(($|\n)host: )[^\n]+/i,"$1"+n.host+f),a=m(a,n.headerTransformations.send,E),b.debug("\n >>>> Send request header to backend:\n\n"+a),d.write(a),_=!0}})}));case 1:case"end":return e.stop()}},e)}));return function(r,t,n,_){return e.apply(this,arguments)}}()},e=>{e.exports=require("@babel/runtime/helpers/extends")},e=>{e.exports=require("@babel/runtime/helpers/asyncToGenerator")},e=>{e.exports=require("@babel/runtime/regenerator")},e=>{e.exports=require("clientnode")},(module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{default:()=>__WEBPACK_DEFAULT_EXPORT__});var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1),_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__),_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2),_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__),_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(3),_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__),clientnode__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(4),clientnode__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(clientnode__WEBPACK_IMPORTED_MODULE_3__),http__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(6),http__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(http__WEBPACK_IMPORTED_MODULE_4__),http2__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(7),http2__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(http2__WEBPACK_IMPORTED_MODULE_5__),path__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(8),path__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_6__),_helper__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(0),_package_json__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(9);function _createForOfIteratorHelperLoose(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=_unsupportedIterableToArray(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,r){if(e){if("string"==typeof e)return _arrayLikeToArray(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,r):void 0}}function _arrayLikeToArray(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}module=__webpack_require__.hmd(module);for(var _step,onIncomingMessage=function(e,r){var t=e;_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark(function e(){var n,_,o,a,s,i;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:_helper__WEBPACK_IMPORTED_MODULE_7__.logging.info("|"+"-".repeat(78)+"|\nStart processing",t.method+" request: "+t.url+"\n"+t),n=0;case 1:if(!(n<1e3*clientnode__WEBPACK_IMPORTED_MODULE_3__.MAXIMAL_NUMBER_OF_ITERATIONS.value)){e.next=4;break}return e.next=2,(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.timeout)();case 2:if(!t.socket.buffer.finished){e.next=3;break}return e.abrupt("continue",4);case 3:n++,e.next=1;break;case 4:if(CONFIGURATION.parseBody&&(0,_helper__WEBPACK_IMPORTED_MODULE_7__.addParsedContentToRequest)(t),null!==(_=(0,_helper__WEBPACK_IMPORTED_MODULE_7__.determineForwarder)(t,r,FORWARDERS))){e.next=5;break}return _helper__WEBPACK_IMPORTED_MODULE_7__.logging.error("No forwarder found for given request:",t),r.statusCode=502,r.end(),e.abrupt("return");case 5:return e.prev=5,e.next=6,(0,_helper__WEBPACK_IMPORTED_MODULE_7__.applyStateAPIs)(t,r,_);case 6:if(o=e.sent,a=o.result,s=o.scope,!a){e.next=7;break}return e.next=7,(0,_helper__WEBPACK_IMPORTED_MODULE_7__.default)(t,r,_,s);case 7:e.next=9;break;case 8:e.prev=8,i=e.catch(5),_helper__WEBPACK_IMPORTED_MODULE_7__.logging.error(i);case 9:_helper__WEBPACK_IMPORTED_MODULE_7__.logging.info("\nEnd processing",t.method+" request: "+t.url+"\n"+t+"|"+"-".repeat(78)+"|");case 10:case"end":return e.stop()}},e,null,[[5,8]])}))()},onIncomingStream=function(e,r){_helper__WEBPACK_IMPORTED_MODULE_7__.logging.info("Got stream",e,r)},BASE_CONFIGURATION=_package_json__WEBPACK_IMPORTED_MODULE_8__.HF,_iterator=_createForOfIteratorHelperLoose(["configuration.json","secure-configuration.json"]);!(_step=_iterator()).done;){var path=_step.value,configurationPath=(0,path__WEBPACK_IMPORTED_MODULE_6__.resolve)(process.cwd(),path);if((0,clientnode__WEBPACK_IMPORTED_MODULE_3__.isFileSync)(configurationPath)){var configuration=eval("require('"+configurationPath+"')");(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.extend)(!0,(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.modifyObject)(BASE_CONFIGURATION,configuration),configuration)}}var CONFIGURATION=(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.evaluateDynamicData)(BASE_CONFIGURATION,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({},clientnode__WEBPACK_IMPORTED_MODULE_3__.UTILITY_SCOPE,{configuration:BASE_CONFIGURATION,environment:process.env})),FORWARDERS=(0,_helper__WEBPACK_IMPORTED_MODULE_7__.resolveForwarders)(CONFIGURATION.forwarders),server={instance:CONFIGURATION.publicKeyPath&&CONFIGURATION.privateKeyPath?(0,http2__WEBPACK_IMPORTED_MODULE_5__.createSecureServer)(CONFIGURATION.nodeServerOptions,onIncomingMessage):(0,http__WEBPACK_IMPORTED_MODULE_4__.createServer)(onIncomingMessage),streams:[],sockets:[],start:function(){server.instance.listen(CONFIGURATION.port,function(){_helper__WEBPACK_IMPORTED_MODULE_7__.logging.info("Listen on port "+CONFIGURATION.port+" for incoming requests.")})},stop:function(){server.instance.close(function(){_helper__WEBPACK_IMPORTED_MODULE_7__.logging.info("Shut server down.")});for(var e,r=0,t=[server.sockets,server.streams];r<t.length;r++)if(e=t[r],Array.isArray(e))for(var n,_=_createForOfIteratorHelperLoose(e);!(n=_()).done;)n.value.destroy()}};if(server.instance.on("connection",function(e){server.sockets.push(e),e.buffer={data:[],finished:!1},e.on("data",function(r){e.buffer.data.push(r)});for(var r,t=0,n=["done","finish","writableEnded","writableFinished"];t<n.length;t++)r=n[t],e.on(r,function(){e.buffer.finished=!0});(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.timeout)(function(){e.buffer.finished=!0}),e.on("close",function(){e.buffer.finished=!0,server.sockets.splice(server.sockets.indexOf(e),1)})}),server.instance.on("stream",function(e,r){server.streams.push(e),onIncomingStream(e,r),e.on("close",function(){server.streams.splice(server.streams.indexOf(e),1)})}),__webpack_require__.c[__webpack_require__.s]===module||eval("require.main")!==__webpack_require__.c[__webpack_require__.s]&&void 0!==ORIGINAL_MAIN_MODULE&&ORIGINAL_MAIN_MODULE===eval("require.main")){_helper__WEBPACK_IMPORTED_MODULE_7__.logging.info("Start server with configuration:",(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.represent)(CONFIGURATION)),_helper__WEBPACK_IMPORTED_MODULE_7__.logging.debug("Apply resolved forwarder:",(0,clientnode__WEBPACK_IMPORTED_MODULE_3__.represent)(FORWARDERS)),server.start();for(var _step3,_loop=function(){var e=_step3.value;process.on(e,function(){_helper__WEBPACK_IMPORTED_MODULE_7__.logging.info('\nGot "'+e+'" signal: stopping server.'),server.stop()})},_iterator3=_createForOfIteratorHelperLoose(clientnode__WEBPACK_IMPORTED_MODULE_3__.CLOSE_EVENT_NAMES);!(_step3=_iterator3()).done;)_loop()}const __WEBPACK_DEFAULT_EXPORT__=server},e=>{e.exports=require("http")},e=>{e.exports=require("http2")},e=>{e.exports=require("path")},e=>{e.exports=JSON.parse('{"HF":{"publicKeyPath":"","privateKeyPath":"","nodeServerOptions":{"allowHTTP1":true},"host":"localhost","port":8080,"parseBody":false,"forwarders":{"base":{"headerTransformations":{"retrieve":[],"send":[]},"host":"localhost","port":443,"stateAPIs":[{"data":{},"expressions":{"pre":"false","post":"true"},"name":"base","options":{},"url":""}],"tls":true,"useExpression":"true"}}}}')}],__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];if(void 0!==r)return r.exports;var t=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e](t,t.exports,__webpack_require__),t.loaded=!0,t.exports}__webpack_require__.c=__webpack_module_cache__,__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=(e,r)=>{for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(__webpack_require__.s=5);module.exports=__webpack_exports__})();
2
+ // -*- coding: utf-8 -*-
3
+ import { createConnection as __WEBPACK_EXTERNAL_MODULE_net_createConnection__ } from "net";
4
+ import { connect as __WEBPACK_EXTERNAL_MODULE_tls_connect__ } from "tls";
5
+ import * as __WEBPACK_EXTERNAL_MODULE_clientnode__ from "clientnode";
6
+ import * as __WEBPACK_EXTERNAL_MODULE_http__ from "http";
7
+ import * as __WEBPACK_EXTERNAL_MODULE_http2__ from "http2";
8
+ import * as __WEBPACK_EXTERNAL_MODULE_path__ from "path";
9
+ /******/ var __webpack_modules__ = ([
10
+ /* 0 */
11
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
12
+
13
+ const x = (y) => {
14
+ const x = {}; __webpack_require__.d(x, y); return x
15
+ }
16
+ const y = (x) => (() => (x))
17
+ module.exports = x({ ["CLOSE_EVENT_NAMES"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.CLOSE_EVENT_NAMES), ["MAXIMAL_NUMBER_OF_ITERATIONS"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.MAXIMAL_NUMBER_OF_ITERATIONS), ["UTILITY_SCOPE"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.UTILITY_SCOPE), ["UTILITY_SCOPE_NAMES"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.UTILITY_SCOPE_NAMES), ["UTILITY_SCOPE_VALUES"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.UTILITY_SCOPE_VALUES), ["compile"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.compile), ["copy"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.copy), ["evaluateAsyncDynamicData"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.evaluateAsyncDynamicData), ["evaluateDynamicData"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.evaluateDynamicData), ["extend"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.extend), ["importsPromise"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.importsPromise), ["isFile"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.isFile), ["modifyObject"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.modifyObject), ["represent"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.represent), ["timeout"]: () => (__WEBPACK_EXTERNAL_MODULE_clientnode__.timeout) });
18
+
19
+ /***/ }),
20
+ /* 1 */
21
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22
+
23
+ const x = (y) => {
24
+ const x = {}; __webpack_require__.d(x, y); return x
25
+ }
26
+ const y = (x) => (() => (x))
27
+ module.exports = x({ ["createSecureServer"]: () => (__WEBPACK_EXTERNAL_MODULE_http2__.createSecureServer) });
28
+
29
+ /***/ }),
30
+ /* 2 */
31
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
32
+
33
+
34
+ // EXPORTS
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ Ko: () => (/* binding */ addParsedContentToRequest),
37
+ BE: () => (/* binding */ applyStateAPIs),
38
+ Ay: () => (/* binding */ helper),
39
+ cP: () => (/* binding */ determineForwarder),
40
+ m9: () => (/* binding */ logging),
41
+ cx: () => (/* binding */ resolveForwarders)
42
+ });
43
+
44
+ // UNUSED EXPORTS: EVALUATION_SCOPE_NAMES, reverseProxyBufferedRequest, transformHeaders
45
+
46
+ // EXTERNAL MODULE: external "clientnode"
47
+ var external_clientnode_ = __webpack_require__(0);
48
+ ;// external "net"
49
+
50
+ ;// external "tls"
51
+
52
+ // EXTERNAL MODULE: external "http2"
53
+ var external_http2_ = __webpack_require__(1);
54
+ ;// ./type.ts
55
+ // #!/usr/bin/env babel-node
56
+ // -*- coding: utf-8 -*-
57
+ /** @module web-node *//* !
58
+ region header
59
+ [Project page](https://torben.website/webNode)
60
+
61
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
62
+
63
+ License
64
+ -------
65
+
66
+ This library written by Torben Sickert stands under a creative commons
67
+ naming 3.0 unported license.
68
+ See https://creativecommons.org/licenses/by/3.0/deed.de
69
+ endregion
70
+ */// region imports
71
+ // endregion
72
+ /*
73
+ * break (string) -> Do not evaluate subsequent pre evaluations.
74
+ * null or undefined -> Just jump to the next evaluation to run.
75
+ * true (boolean) -> Use this state api configuration. Run the configured
76
+ * request.
77
+ * false (boolean) -> Do not use this state api and to not run subsequent pre
78
+ * evaluations.
79
+ * code (number) -> Answer client request with provided http status code
80
+ * and do not run any subsequent pre-evaluations,
81
+ * state-api request or request forwarding to the
82
+ * underlying backend.
83
+ *//*
84
+ * break (string) -> Do not evaluate subsequent post evaluations.
85
+ * null or undefined -> Just jump to the next evaluation to run.
86
+ * code (number) -> Answer client request with provided http status code
87
+ * and do not run any subsequent post-evaluations,
88
+ * state-api request or request forwarding to the
89
+ * underlying backend.
90
+ */
91
+ ;// ./helper.ts
92
+ // #!/usr/bin/env babel-node
93
+ // -*- coding: utf-8 -*-
94
+ /** @module web-node *//* !
95
+ region header
96
+ [Project page](https://torben.website/webNode)
97
+
98
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
99
+
100
+ License
101
+ -------
102
+
103
+ This library written by Torben Sickert stands under a creative commons
104
+ naming 3.0 unported license.
105
+ See https://creativecommons.org/licenses/by/3.0/deed.de
106
+ endregion
107
+ */// region imports
108
+ // NOTE: http2 compatibility mode does work for unencrypted connections yet.
109
+ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof Generator?n:Generator,u=Object.create(c.prototype);return _regeneratorDefine2(u,"_invoke",function(r,n,o){var i,c,u,f=0,p=o||[],y=!1,G={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function d(t,r){return i=t,c=0,u=e,G.n=r,a}};function d(r,n){for(c=r,u=n,t=0;!y&&f&&!o&&t<p.length;t++){var o,i=p[t],d=G.p,l=i[2];r>3?(o=l===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,G.v=n,G.n=i[1]):d<l&&(o=r<3||i[0]>n||n>l)&&(i[4]=r,i[5]=n,G.n=l,c=0))}if(o||r>1)return a;throw y=!0,n}return function(o,p,l){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&d(p,l),c=p,u=l;(t=c<2?e:u)||!y;){i||(c?c<3?(c>1&&(G.n=-1),d(c,u)):G.n=u:G.v=u);try{if(f=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(y=G.n<0)?u:r.call(n,G))!==a)break}catch(t){i=e,c=1,u=t}finally{f=1}}return{value:t,done:y}}}(r,o,i),!0),u}var a={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}t=Object.getPrototypeOf;var c=[][n]?t(t([][n]())):(_regeneratorDefine2(t={},n,function(){return this}),t),u=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(c);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,GeneratorFunctionPrototype):(e.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(e,o,"GeneratorFunction")),e.prototype=Object.create(u),e}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(u,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,o,"GeneratorFunction"),_regeneratorDefine2(u),_regeneratorDefine2(u,o,"Generator"),_regeneratorDefine2(u,n,function(){return this}),_regeneratorDefine2(u,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:f}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}// endregion
110
+ var EVALUATION_SCOPE_NAMES=[].concat(_toConsumableArray(external_clientnode_.UTILITY_SCOPE_NAMES),["data","error","request","response","stateAPI","stateAPIs"]);var log=/*#__PURE__*/function(){var _log=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(){var _len,parameters,_key,_args=arguments;return _regenerator().w(function(_context){while(1)switch(_context.n){case 0:for(_len=_args.length,parameters=new Array(_len),_key=0;_key<_len;_key++){parameters[_key]=_args[_key]}return _context.a(2,new Promise(function(resolve,reject){process.stdout.write("".concat(parameters.join(" "),"\n"),function(error){if(error)// eslint-disable-next-line prefer-promise-reject-errors
111
+ reject(error);else resolve()})}))}},_callee)}));function log(){return _log.apply(this,arguments)}return log}();var logging={log:log,debug:log,info:log,error:log,warn:log};// region forwarder
112
+ var applyStateAPIs=/*#__PURE__*/function(){var _applyStateAPIs=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(request,response,forwarder){var stateAPIScope,state,_iterator,_step,stateAPI,useStateAPI,index,_iterator2,_step2,_expression,_result,error,_iterator3,_step3,expression,result,_t,_t2,_t3,_t4,_t5;return _regenerator().w(function(_context2){while(1)switch(_context2.p=_context2.n){case 0:stateAPIScope={};_iterator=_createForOfIteratorHelper(forwarder.stateAPIs);_context2.p=1;_iterator.s();case 2:if((_step=_iterator.n()).done){_context2.n=30;break}stateAPI=_step.value;state=stateAPIScope[stateAPI.name]={configuration:stateAPI,error:null,response:null};useStateAPI=false;index=1;_iterator2=_createForOfIteratorHelper(stateAPI.expressions.pre);_context2.p=3;_iterator2.s();case 4:if((_step2=_iterator2.n()).done){_context2.n=9;break}_expression=_step2.value;_result=void 0;try{_result=_expression.apply(void 0,_toConsumableArray(external_clientnode_.UTILITY_SCOPE_VALUES).concat([stateAPI.data,null,request,response,state,stateAPIScope]))}catch(error){void logging.warn("Failed running pre ".concat(String(index),". expression of ")+"state api:",error)}if(!(typeof _result==="number")){_context2.n=5;break}void logging.info("Break request caused by state api","\"".concat(stateAPI.name,"\" with status code ").concat(String(_result),"."));response.statusCode=_result;response.end();return _context2.a(2,{result:false,scope:stateAPIScope});case 5:if(!(_result==="break")){_context2.n=6;break}return _context2.a(3,9);case 6:index+=1;if(!(typeof _result==="boolean")){_context2.n=8;break}if(!_result){_context2.n=7;break}useStateAPI=true;_context2.n=8;break;case 7:return _context2.a(3,9);case 8:_context2.n=4;break;case 9:_context2.n=11;break;case 10:_context2.p=10;_t=_context2.v;_iterator2.e(_t);case 11:_context2.p=11;_iterator2.f();return _context2.f(11);case 12:if(!useStateAPI){_context2.n=29;break}void logging.info("Use state api: \"".concat(stateAPI.name,"\""));error=null;if(stateAPI.urlExpression)try{stateAPI.url=stateAPI.urlExpression.apply(stateAPI,_toConsumableArray(external_clientnode_.UTILITY_SCOPE_VALUES).concat([stateAPI.data,null,request,response,state,stateAPIScope]))}catch(error){void logging.warn("Failed running url expression:",error)}void logging.debug("\nState api configuration is: ".concat((0,external_clientnode_.represent)(stateAPI)));_context2.p=13;_context2.n=14;return fetch(stateAPI.url,stateAPI.options);case 14:state.response=_context2.v;_context2.n=16;break;case 15:_context2.p=15;_t2=_context2.v;error=_t2;void logging.warn("Running state api request for \"".concat(stateAPI.name,"\" throws"),"error:",error);case 16:if(!(state.response&&state.response.headers.has("content-type")&&/application\/json(;.*)?$/.test(state.response.headers.get("content-type")))){_context2.n=20;break}_context2.p=17;_context2.n=18;return state.response.json();case 18:state.response.data=_context2.v;_context2.n=20;break;case 19:_context2.p=19;_t3=_context2.v;error=_t3;void logging.warn("Parsing state api json response for","\"".concat(stateAPI.name,"\" throws error:"),error);case 20:void logging.debug("\nState api response is:",(0,external_clientnode_.represent)(state.response));index=1;_iterator3=_createForOfIteratorHelper(stateAPI.expressions.post);_context2.p=21;_iterator3.s();case 22:if((_step3=_iterator3.n()).done){_context2.n=26;break}expression=_step3.value;result=null;try{result=expression.apply(void 0,_toConsumableArray(external_clientnode_.UTILITY_SCOPE_VALUES).concat([stateAPI.data,error,request,response,state,stateAPIScope]))}catch(error){void logging.warn("Failed running ".concat(String(index),". post ")+"expression of state api:",error)}if(!(typeof result==="number")){_context2.n=23;break}void logging.info("Break request caused by state api","\"".concat(stateAPI.name,"\" with status code ")+"".concat(String(result),"."));response.statusCode=result;response.end();return _context2.a(2,{result:false,scope:stateAPIScope});case 23:if(!(result==="break")){_context2.n=24;break}return _context2.a(3,26);case 24:index+=1;case 25:_context2.n=22;break;case 26:_context2.n=28;break;case 27:_context2.p=27;_t4=_context2.v;_iterator3.e(_t4);case 28:_context2.p=28;_iterator3.f();return _context2.f(28);case 29:_context2.n=2;break;case 30:_context2.n=32;break;case 31:_context2.p=31;_t5=_context2.v;_iterator.e(_t5);case 32:_context2.p=32;_iterator.f();return _context2.f(32);case 33:return _context2.a(2,{result:true,scope:stateAPIScope})}},_callee2,null,[[21,27,28,29],[17,19],[13,15],[3,10,11,12],[1,31,32,33]])}));function applyStateAPIs(_x,_x2,_x3){return _applyStateAPIs.apply(this,arguments)}return applyStateAPIs}();var determineForwarder=function determineForwarder(request,response,forwarders){var _iterator4=_createForOfIteratorHelper(Object.entries(forwarders).sort(function(_ref,_ref2){var _ref3=_slicedToArray(_ref,1),firstName=_ref3[0];var _ref4=_slicedToArray(_ref2,1),secondName=_ref4[0];return firstName.localeCompare(secondName)})),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var _step4$value=_slicedToArray(_step4.value,2),name=_step4$value[0],forwarder=_step4$value[1];var state={configuration:forwarder,error:null,response:null};if(forwarder.useExpression.apply(forwarder,_toConsumableArray(external_clientnode_.UTILITY_SCOPE_VALUES).concat([forwarder,null,request,response,state,_defineProperty({},name,state)]))){void logging.info("Determined forwarder is: \"".concat(name,"\"."));return forwarder}}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}return null};var resolveForwarders=function resolveForwarders(forwarders){var resolvedForwarders={};for(var _i=0,_Object$entries=Object.entries(forwarders);_i<_Object$entries.length;_i++){var _Object$entries$_i=_slicedToArray(_Object$entries[_i],2),name=_Object$entries$_i[0],givenForwarder=_Object$entries$_i[1];if(name!=="base"){var forwarder=(0,external_clientnode_.extend)(true,{name:name},(0,external_clientnode_.modifyObject)((0,external_clientnode_.copy)(forwarders.base),givenForwarder),givenForwarder);// region normalize header transformations
113
+ var headerTransformations={retrieve:[],send:[]};var _iterator5=_createForOfIteratorHelper(["retrieve","send"]),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var type=_step5.value;var _iterator9=_createForOfIteratorHelper([].concat(forwarder.headerTransformations[type])),_step9;try{var _loop=function _loop(){var givenTransformation=_step9.value;var transformation=_objectSpread(_objectSpread({},givenTransformation),{},{sourceRun:function sourceRun(){return""},targetRun:function targetRun(){return""}});if(Object.prototype.hasOwnProperty.call(transformation,"source"))if(transformation.source instanceof RegExp)transformation.sourceRun=function(){return transformation.source};else if(typeof transformation.source==="string"){var _result5=(0,external_clientnode_.compile)(transformation.source,EVALUATION_SCOPE_NAMES);if(_result5.error)throw new Error(_result5.error);transformation.sourceRun=_result5.templateFunction}else if(transformation.source)transformation.sourceRun=transformation.source;if(Object.prototype.hasOwnProperty.call(transformation,"target"))if(typeof transformation.target==="string"){var _result6=(0,external_clientnode_.compile)(transformation.target,EVALUATION_SCOPE_NAMES);if(_result6.error)throw new Error(_result6.error);transformation.targetRun=_result6.templateFunction}else if(transformation.target)transformation.targetRun=transformation.target;headerTransformations[type].push(transformation)};for(_iterator9.s();!(_step9=_iterator9.n()).done;){_loop()}}catch(err){_iterator9.e(err)}finally{_iterator9.f()}}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}forwarder.headerTransformations=headerTransformations;// endregion
114
+ // region state apis
115
+ var stateAPIs=[];var givenStateAPIs=[].concat(forwarder.stateAPIs||[]);var baseAPI=givenStateAPIs.filter(function(api){return api.name==="base"})[0];var extendedGivenStateAPIs=[];var _iterator6=_createForOfIteratorHelper(givenStateAPIs),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var _api=_step6.value;if(_api.name!=="base")extendedGivenStateAPIs.push((0,external_clientnode_.extend)(true,{},(0,external_clientnode_.modifyObject)((0,external_clientnode_.copy)(baseAPI),_api),_api))}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}for(var _i2=0,_extendedGivenStateAP=extendedGivenStateAPIs;_i2<_extendedGivenStateAP.length;_i2++){var _api$expressions,_api$expressions2;var api=_extendedGivenStateAP[_i2];// region normalize url expression
116
+ if(typeof api.urlExpression==="string"){var result=(0,external_clientnode_.compile)(api.urlExpression,EVALUATION_SCOPE_NAMES);if(result.error)throw new Error(result.error);api.urlExpression=result.templateFunction}// endregion
117
+ // region normalize pre / post expressions
118
+ var expressions={pre:[],post:[]};var _iterator7=_createForOfIteratorHelper([].concat(((_api$expressions=api.expressions)===null||_api$expressions===void 0?void 0:_api$expressions.pre)||[])),_step7;try{for(_iterator7.s();!(_step7=_iterator7.n()).done;){var expression=_step7.value;if(typeof expression==="string"){var _result2=(0,external_clientnode_.compile)(expression,EVALUATION_SCOPE_NAMES);if(_result2.error)throw new Error(_result2.error);expressions.pre.push(_result2.templateFunction)}else expressions.pre.push(expression)}}catch(err){_iterator7.e(err)}finally{_iterator7.f()}var _iterator8=_createForOfIteratorHelper([].concat(((_api$expressions2=api.expressions)===null||_api$expressions2===void 0?void 0:_api$expressions2.post)||[])),_step8;try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var _expression2=_step8.value;if(typeof _expression2==="string"){var _result3=(0,external_clientnode_.compile)(_expression2,EVALUATION_SCOPE_NAMES);if(_result3.error)throw new Error(_result3.error);expressions.post.push(_result3.templateFunction)}else expressions.post.push(_expression2)}}catch(err){_iterator8.e(err)}finally{_iterator8.f()}api.expressions=expressions;// endregion
119
+ stateAPIs.push(api)}forwarder.stateAPIs=stateAPIs;// endregion
120
+ // region normalize use expression
121
+ if(typeof forwarder.useExpression==="string"){var _result4=(0,external_clientnode_.compile)(forwarder.useExpression,EVALUATION_SCOPE_NAMES);if(_result4.error)throw new Error(_result4.error);forwarder.useExpression=_result4.templateFunction}// endregion
122
+ resolvedForwarders[name]=forwarder}}return resolvedForwarders};// endregion
123
+ var addParsedContentToRequest=function addParsedContentToRequest(bufferedRequest){if(bufferedRequest.headers["content-type"]&&/application\/json(;.*)?$/.test(bufferedRequest.headers["content-type"]))try{var data=Buffer.concat(bufferedRequest.socket.buffer.data).toString();bufferedRequest.socket.buffer.body=data.replace(/^[\s\S]+\s*\n\s*\n\s*([\s\S]+)$/m,"$1");bufferedRequest.socket.buffer.content=JSON.parse(bufferedRequest.socket.buffer.body)}catch(_unused){void logging.warn("Error parsing given request.",bufferedRequest)}};var transformHeaders=function transformHeaders(content,headerTransformations,parameters){var newLinePrinted=false;var _iterator0=_createForOfIteratorHelper(headerTransformations),_step0;try{var _loop2=function _loop2(){var transformation=_step0.value;try{var source=transformation.sourceRun.apply(transformation,_toConsumableArray(parameters));var target=transformation.targetRun.apply(transformation,_toConsumableArray(parameters));if([null,undefined].includes(source)||typeof source==="string"&&source.trim()===""){if([null,undefined].includes(target)||typeof target==="string"&&target.trim()==="")return 1;// continue
124
+ // Add new header.
125
+ content=content.replace(/(\s*\n)\s*\n\s*/,function(substring,delimiter){for(var _len2=arguments.length,parameters=new Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++){parameters[_key2-2]=arguments[_key2]}var result=typeof target==="string"?target:target?target.apply(void 0,[substring,delimiter].concat(parameters)):"";return"".concat(delimiter).concat(result).concat(substring)})}else{if(!newLinePrinted){void logging.debug();newLinePrinted=true}// Search and replace (or remove) header.
126
+ void logging.debug("Search for \"".concat(source,"\" and replace with"),"".concat((0,external_clientnode_.represent)(target),"."));if(source)content=content.replace(source,target)}}catch(error){void logging.warn("\nCould not apply header transformation with source "+(transformation.source?(0,external_clientnode_.represent)(transformation.source):"\"add\"")+" and replacement "+(transformation.target?(0,external_clientnode_.represent)(transformation.target):"\"remove\"")+":",error)}};for(_iterator0.s();!(_step0=_iterator0.n()).done;){if(_loop2())continue}}catch(err){_iterator0.e(err)}finally{_iterator0.f()}return content};var reverseProxyBufferedRequest=/*#__PURE__*/function(){var _reverseProxyBufferedRequest=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(request,response,forwarder,stateAPIScope){return _regenerator().w(function(_context3){while(1)switch(_context3.n){case 0:return _context3.a(2,new Promise(function(resolve,reject){var clientSocket=response.socket;var createConnection=forwarder.tls?__WEBPACK_EXTERNAL_MODULE_tls_connect__:__WEBPACK_EXTERNAL_MODULE_net_createConnection__;var portSuffix=forwarder.tls&&forwarder.port!==443||!forwarder.tls&&forwarder.port!==80?":".concat(String(forwarder.port)):"";var serverSocket=createConnection(_objectSpread({host:forwarder.host,port:forwarder.port},forwarder.tls?{servername:forwarder.host,rejectUnauthorized:false}:{}),function(){void logging.info("\nConnection to: http".concat(forwarder.tls?"s":"","://")+"".concat(forwarder.host).concat(portSuffix," established."))});serverSocket.on("error",function(error){void logging.error("Proxy to server error",error);reject(error)});var parameters=[].concat(_toConsumableArray(external_clientnode_.UTILITY_SCOPE_VALUES),[{clientSocket:clientSocket,serverSocket:serverSocket},null,request,response,null,stateAPIScope]);// Send data from server back to client.
127
+ if(forwarder.headerTransformations.retrieve.length){var headerProcessed=false;serverSocket.on("data",function(buffer){if(headerProcessed){clientSocket.write(buffer);return}var content=buffer.toString();void logging.info("\n <=== Got response header from backend:\n\n".concat(content));content=transformHeaders(content,forwarder.headerTransformations.retrieve,parameters);void logging.info("\n <<<< Send response header to client:\n\n".concat(content));clientSocket.write(content);headerProcessed=true;resolve()})}else serverSocket.pipe(clientSocket);serverSocket.on("connect",function(){var headerProcessed=false;var _iterator1=_createForOfIteratorHelper(request.socket.buffer.data),_step1;try{for(_iterator1.s();!(_step1=_iterator1.n()).done;){var buffer=_step1.value;if(!headerProcessed){var content=buffer.toString();void logging.debug("\n ===> Got request header from client:\n\n".concat(content));if(forwarder.tls)// NOTE: TLS support was introduced in version 1.1.
128
+ content=content.replace(/HTTP\/1\.0/i,"HTTP/1.1");// Overwrite proxy host with destination one.
129
+ content=content.replace(/(($|\n)host: )[^\n]+/i,"$1".concat(forwarder.host).concat(portSuffix));content=transformHeaders(content,forwarder.headerTransformations.send,parameters);void logging.debug("\n >>>> Send request header to backend:\n\n".concat(content));serverSocket.write(content);headerProcessed=true;continue}serverSocket.write(buffer)}}catch(err){_iterator1.e(err)}finally{_iterator1.f()}})}))}},_callee3)}));function reverseProxyBufferedRequest(_x4,_x5,_x6,_x7){return _reverseProxyBufferedRequest.apply(this,arguments)}return reverseProxyBufferedRequest}();/* harmony default export */ const helper = (reverseProxyBufferedRequest);
130
+
131
+ /***/ }),
132
+ /* 3 */
133
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
134
+
135
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
136
+ /* harmony import */ var clientnode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
137
+ /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
138
+ /* harmony import */ var http2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
139
+ /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);
140
+ /* harmony import */ var _helper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2);
141
+ /* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
142
+ // #!/usr/bin/env babel-node
143
+ // -*- coding: utf-8 -*-
144
+ /** @module web-node *//* !
145
+ region header
146
+ [Project page](https://torben.website/webNode)
147
+
148
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
149
+
150
+ License
151
+ -------
152
+
153
+ This library written by Torben Sickert stands under a creative commons
154
+ naming 3.0 unported license.
155
+ See https://creativecommons.org/licenses/by/3.0/deed.de
156
+ endregion
157
+ */// region imports
158
+ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof Generator?n:Generator,u=Object.create(c.prototype);return _regeneratorDefine2(u,"_invoke",function(r,n,o){var i,c,u,f=0,p=o||[],y=!1,G={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function d(t,r){return i=t,c=0,u=e,G.n=r,a}};function d(r,n){for(c=r,u=n,t=0;!y&&f&&!o&&t<p.length;t++){var o,i=p[t],d=G.p,l=i[2];r>3?(o=l===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,G.v=n,G.n=i[1]):d<l&&(o=r<3||i[0]>n||n>l)&&(i[4]=r,i[5]=n,G.n=l,c=0))}if(o||r>1)return a;throw y=!0,n}return function(o,p,l){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&d(p,l),c=p,u=l;(t=c<2?e:u)||!y;){i||(c?c<3?(c>1&&(G.n=-1),d(c,u)):G.n=u:G.v=u);try{if(f=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(y=G.n<0)?u:r.call(n,G))!==a)break}catch(t){i=e,c=1,u=t}finally{f=1}}return{value:t,done:y}}}(r,o,i),!0),u}var a={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}t=Object.getPrototypeOf;var c=[][n]?t(t([][n]())):(_regeneratorDefine2(t={},n,function(){return this}),t),u=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(c);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,GeneratorFunctionPrototype):(e.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(e,o,"GeneratorFunction")),e.prototype=Object.create(u),e}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(u,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,o,"GeneratorFunction"),_regeneratorDefine2(u),_regeneratorDefine2(u,o,"Generator"),_regeneratorDefine2(u,n,function(){return this}),_regeneratorDefine2(u,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:f}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}// NOTE: http2 compatibility mode does work for unencrypted connections yet.
159
+ // endregion
160
+ await clientnode__WEBPACK_IMPORTED_MODULE_0__.importsPromise;// region live cycle methods
161
+ var onIncomingMessage=function onIncomingMessage(request,response){var bufferedRequest=request;void _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(){var iteration,forwarder,_yield$applyStateAPIs,result,scope,_t;return _regenerator().w(function(_context){while(1)switch(_context.p=_context.n){case 0:// TODO integrate into clientnode's logging lib
162
+ void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.info("|".concat("-".repeat(80-2),"|\nStart processing"),"".concat(bufferedRequest.method," request: ").concat(bufferedRequest.url,"\n")+bufferedRequest);// NOTE: We have to wait until client request is fully buffered.
163
+ iteration=0;case 1:if(!(iteration<clientnode__WEBPACK_IMPORTED_MODULE_0__.MAXIMAL_NUMBER_OF_ITERATIONS.value*1000)){_context.n=4;break}_context.n=2;return (0,clientnode__WEBPACK_IMPORTED_MODULE_0__.timeout)();case 2:if(!bufferedRequest.socket.buffer.finished){_context.n=3;break}return _context.a(3,4);case 3:iteration++;_context.n=1;break;case 4:if(CONFIGURATION.parseBody)(0,_helper_js__WEBPACK_IMPORTED_MODULE_4__/* .addParsedContentToRequest */ .Ko)(bufferedRequest);forwarder=(0,_helper_js__WEBPACK_IMPORTED_MODULE_4__/* .determineForwarder */ .cP)(bufferedRequest,response,FORWARDERS);if(!(forwarder===null)){_context.n=5;break}void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.error("No forwarder found for given request:",bufferedRequest);response.statusCode=502;response.end();return _context.a(2);case 5:_context.p=5;_context.n=6;return (0,_helper_js__WEBPACK_IMPORTED_MODULE_4__/* .applyStateAPIs */ .BE)(bufferedRequest,response,forwarder);case 6:_yield$applyStateAPIs=_context.v;result=_yield$applyStateAPIs.result;scope=_yield$applyStateAPIs.scope;if(!result){_context.n=7;break}_context.n=7;return (0,_helper_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Ay)(bufferedRequest,response,forwarder,scope);case 7:_context.n=9;break;case 8:_context.p=8;_t=_context.v;void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.error(_t);case 9:void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.info("\nEnd processing","".concat(bufferedRequest.method," request: ").concat(bufferedRequest.url,"\n")+"".concat(bufferedRequest,"|").concat("-".repeat(80-2),"|"));case 10:return _context.a(2)}},_callee,null,[[5,8]])}))()};var onIncomingStream=function onIncomingStream(stream,headers){void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.info("Got stream",stream,headers)};// endregion
164
+ // region configuration
165
+ var BASE_CONFIGURATION=_package_json__WEBPACK_IMPORTED_MODULE_5__/* .configuration */ .HF;var _iterator=_createForOfIteratorHelper(["configuration.json","secure-configuration.json"]),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var path=_step.value;var configurationPath=(0,path__WEBPACK_IMPORTED_MODULE_3__.resolve)(process.cwd(),path);if(await (0,clientnode__WEBPACK_IMPORTED_MODULE_0__.isFile)(configurationPath)){var configuration=await __webpack_require__(6)(configurationPath);(0,clientnode__WEBPACK_IMPORTED_MODULE_0__.extend)(true,(0,clientnode__WEBPACK_IMPORTED_MODULE_0__.modifyObject)(BASE_CONFIGURATION,configuration),configuration)}}}catch(err){_iterator.e(err)}finally{_iterator.f()}var evaluationOptions={scope:_objectSpread(_objectSpread({},clientnode__WEBPACK_IMPORTED_MODULE_0__.UTILITY_SCOPE),{},{configuration:BASE_CONFIGURATION,environment:process.env})};var CONFIGURATION=await (0,clientnode__WEBPACK_IMPORTED_MODULE_0__.evaluateAsyncDynamicData)((0,clientnode__WEBPACK_IMPORTED_MODULE_0__.evaluateDynamicData)(BASE_CONFIGURATION,evaluationOptions),evaluationOptions);var FORWARDERS=(0,_helper_js__WEBPACK_IMPORTED_MODULE_4__/* .resolveForwarders */ .cx)(CONFIGURATION.forwarders);// endregion
166
+ // region initialize server
167
+ var server={instance:CONFIGURATION.publicKeyPath&&CONFIGURATION.privateKeyPath?(0,http2__WEBPACK_IMPORTED_MODULE_2__.createSecureServer)(CONFIGURATION.nodeServerOptions,onIncomingMessage):// NOTE: See import notice.
168
+ (0,http__WEBPACK_IMPORTED_MODULE_1__.createServer)(onIncomingMessage),streams:[],sockets:[],start:function start(){server.instance.listen(CONFIGURATION.port,function(){void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.info("Listen on port ".concat(String(CONFIGURATION.port)," for ")+"incoming requests.")})},stop:function stop(){server.instance.close(function(){void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.info("Shut server down.")});for(var _i=0,_arr=[server.sockets,server.streams];_i<_arr.length;_i++){var connections=_arr[_i];if(Array.isArray(connections)){var _iterator2=_createForOfIteratorHelper(connections),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var connection=_step2.value;connection.destroy()}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}}}}};server.instance.on("connection",function(socket){server.sockets.push(socket);socket.buffer={data:[],finished:false};socket.on("data",function(data){socket.buffer.data.push(data)});for(var _i2=0,_arr2=["done","finish","writableEnded","writableFinished"];_i2<_arr2.length;_i2++){var name=_arr2[_i2];socket.on(name,function(){socket.buffer.finished=true})}/*
169
+ NOTE: Workaround since none of the events above trigger before
170
+ responding to client occurred.
171
+ */void (0,clientnode__WEBPACK_IMPORTED_MODULE_0__.timeout)(function(){socket.buffer.finished=true});socket.on("close",function(){socket.buffer.finished=true;server.sockets.splice(server.sockets.indexOf(socket),1)})});server.instance.on("stream",function(stream,headers){server.streams.push(stream);onIncomingStream(stream,headers);stream.on("close",function(){server.streams.splice(server.streams.indexOf(stream),1)})});// endregion
172
+ // region start / stop
173
+ if(__webpack_require__.c[__webpack_require__.s] === module){void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.info("Start server with configuration:",(0,clientnode__WEBPACK_IMPORTED_MODULE_0__.represent)(CONFIGURATION));void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.debug("Apply resolved forwarder:",(0,clientnode__WEBPACK_IMPORTED_MODULE_0__.represent)(FORWARDERS));server.start();var _iterator3=_createForOfIteratorHelper(clientnode__WEBPACK_IMPORTED_MODULE_0__.CLOSE_EVENT_NAMES),_step3;try{var _loop=function _loop(){var name=_step3.value;process.on(name,function(){void _helper_js__WEBPACK_IMPORTED_MODULE_4__/* .logging */ .m9.info("\nGot \"".concat(name,"\" signal: stopping server."));server.stop()})};for(_iterator3.s();!(_step3=_iterator3.n()).done;){_loop()}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}}// endregion
174
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (server);
175
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, [
176
+ /* harmony export */ "A", 0, /* export default binding */ __WEBPACK_DEFAULT_EXPORT__
177
+ /* harmony export */ ]);
178
+
179
+ __webpack_async_result__();
180
+ } catch(e) { __webpack_async_result__(e); } }, 1);
181
+
182
+ /***/ }),
183
+ /* 4 */
184
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
185
+
186
+ const x = (y) => {
187
+ const x = {}; __webpack_require__.d(x, y); return x
188
+ }
189
+ const y = (x) => (() => (x))
190
+ module.exports = x({ ["createServer"]: () => (__WEBPACK_EXTERNAL_MODULE_http__.createServer) });
191
+
192
+ /***/ }),
193
+ /* 5 */
194
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
195
+
196
+ const x = (y) => {
197
+ const x = {}; __webpack_require__.d(x, y); return x
198
+ }
199
+ const y = (x) => (() => (x))
200
+ module.exports = x({ ["resolve"]: () => (__WEBPACK_EXTERNAL_MODULE_path__.resolve) });
201
+
202
+ /***/ }),
203
+ /* 6 */
204
+ /***/ ((module) => {
205
+
206
+ function webpackEmptyAsyncContext(req) {
207
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
208
+ // uncaught exception popping up in devtools
209
+ return Promise.resolve().then(() => {
210
+ const e = new Error("Cannot find module '" + req + "'");
211
+ e.code = 'MODULE_NOT_FOUND';
212
+ throw e;
213
+ });
214
+ }
215
+ webpackEmptyAsyncContext.keys = () => ([]);
216
+ webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
217
+ webpackEmptyAsyncContext.id = 6;
218
+ module.exports = webpackEmptyAsyncContext;
219
+
220
+ /***/ }),
221
+ /* 7 */
222
+ /***/ ((module) => {
223
+
224
+ module.exports = /*#__PURE__*/JSON.parse('{"HF":{"publicKeyPath":"","privateKeyPath":"","nodeServerOptions":{"allowHTTP1":true},"host":"localhost","port":8080,"parseBody":false,"forwarders":{"base":{"headerTransformations":{"retrieve":[],"send":[]},"host":"localhost","port":443,"stateAPIs":[{"data":{},"expressions":{"pre":"false","post":"true"},"name":"base","options":{},"url":""}],"tls":true,"useExpression":"true"}}}}');
225
+
226
+ /***/ })
227
+ /******/ ]);
228
+ /************************************************************************/
229
+ /******/ // The module cache
230
+ /******/ const __webpack_module_cache__ = {};
231
+ /******/
232
+ /******/ // The require function
233
+ /******/ function __webpack_require__(moduleId) {
234
+ /******/ // Check if module is in cache
235
+ /******/ const cachedModule = __webpack_module_cache__[moduleId];
236
+ /******/ if (cachedModule !== undefined) {
237
+ /******/ return cachedModule.exports;
238
+ /******/ }
239
+ /******/ // Create a new module (and put it into the cache)
240
+ /******/ const module = __webpack_module_cache__[moduleId] = {
241
+ /******/ // no module.id needed
242
+ /******/ // no module.loaded needed
243
+ /******/ exports: {}
244
+ /******/ };
245
+ /******/
246
+ /******/ // Execute the module function
247
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
248
+ /******/
249
+ /******/ // Return the exports of the module
250
+ /******/ return module.exports;
251
+ /******/ }
252
+ /******/
253
+ /******/ // expose the module cache
254
+ /******/ __webpack_require__.c = __webpack_module_cache__;
255
+ /******/
256
+ /************************************************************************/
257
+ /******/ /* webpack/runtime/async module */
258
+ /******/ (() => {
259
+ /******/ const hasSymbol = typeof Symbol === "function";
260
+ /******/ const webpackQueues = hasSymbol ? Symbol("webpack queues") : "__webpack_queues__";
261
+ /******/ const webpackExports = hasSymbol ? Symbol("webpack exports") : "__webpack_exports__";
262
+ /******/ const webpackError = hasSymbol ? Symbol("webpack error") : "__webpack_error__";
263
+ /******/
264
+ /******/ const resolveQueue = (queue) => {
265
+ /******/ if(queue?.d < 1) {
266
+ /******/ queue.d = 1;
267
+ /******/ queue.forEach((fn) => (fn.r--));
268
+ /******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));
269
+ /******/ }
270
+ /******/ }
271
+ /******/ const wrapDeps = (deps) => (deps.map((dep) => {
272
+ /******/ if(dep !== null && typeof dep === "object") {
273
+ /******/
274
+ /******/ if(dep[webpackQueues]) return dep;
275
+ /******/ if(dep.then) {
276
+ /******/ const queue = [];
277
+ /******/ queue.d = 0;
278
+ /******/ dep.then((r) => {
279
+ /******/ obj[webpackExports] = r;
280
+ /******/ resolveQueue(queue);
281
+ /******/ }, (e) => {
282
+ /******/ obj[webpackError] = e;
283
+ /******/ resolveQueue(queue);
284
+ /******/ });
285
+ /******/ const obj = {};
286
+ /******/
287
+ /******/ obj[webpackQueues] = (fn) => (fn(queue));
288
+ /******/ return obj;
289
+ /******/ }
290
+ /******/ }
291
+ /******/ const ret = {};
292
+ /******/ ret[webpackQueues] = x => {};
293
+ /******/ ret[webpackExports] = dep;
294
+ /******/ return ret;
295
+ /******/ }));
296
+ /******/ __webpack_require__.a = (module, body, hasAwait) => {
297
+ /******/ let queue;
298
+ /******/ hasAwait && ((queue = []).d = -1);
299
+ /******/ const depQueues = new Set();
300
+ /******/ const exports = module.exports;
301
+ /******/ let currentDeps;
302
+ /******/ let outerResolve;
303
+ /******/ let reject;
304
+ /******/ const promise = new Promise((resolve, rej) => {
305
+ /******/ reject = rej;
306
+ /******/ outerResolve = resolve;
307
+ /******/ });
308
+ /******/ promise[webpackExports] = exports;
309
+ /******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {}));
310
+ /******/ module.exports = promise;
311
+ /******/ const handle = (deps) => {
312
+ /******/ currentDeps = wrapDeps(deps);
313
+ /******/ let fn;
314
+ /******/ const getResult = () => (currentDeps.map((d) => {
315
+ /******/
316
+ /******/ if(d[webpackError]) throw d[webpackError];
317
+ /******/ return d[webpackExports];
318
+ /******/ }))
319
+ /******/ const promise = new Promise((resolve) => {
320
+ /******/ fn = () => (resolve(getResult));
321
+ /******/ fn.r = 0;
322
+ /******/ const fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));
323
+ /******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue)));
324
+ /******/ });
325
+ /******/ return fn.r ? promise : getResult();
326
+ /******/ }
327
+ /******/ const done = (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue))
328
+ /******/ body(handle, done);
329
+ /******/ queue?.d < 0 && (queue.d = 0);
330
+ /******/ };
331
+ /******/ })();
332
+ /******/
333
+ /******/ /* webpack/runtime/define property getters */
334
+ /******/ (() => {
335
+ /******/ // define getter/value functions for harmony exports
336
+ /******/ __webpack_require__.d = (exports, definition) => {
337
+ /******/ if(Array.isArray(definition)) {
338
+ /******/ var i = 0;
339
+ /******/ while(i < definition.length) {
340
+ /******/ var key = definition[i++];
341
+ /******/ var binding = definition[i++];
342
+ /******/ if(!__webpack_require__.o(exports, key)) {
343
+ /******/ if(binding === 0) {
344
+ /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
345
+ /******/ } else {
346
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
347
+ /******/ }
348
+ /******/ } else if(binding === 0) { i++; }
349
+ /******/ }
350
+ /******/ } else {
351
+ /******/ for(var key in definition) {
352
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
353
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
354
+ /******/ }
355
+ /******/ }
356
+ /******/ }
357
+ /******/ };
358
+ /******/ })();
359
+ /******/
360
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
361
+ /******/ (() => {
362
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
363
+ /******/ })();
364
+ /******/
365
+ /************************************************************************/
366
+ /******/
367
+ /******/ // module cache are used so entry inlining is disabled
368
+ /******/ // startup
369
+ /******/ // Load entry module and return exports
370
+ /******/ let __webpack_exports__ = __webpack_require__(__webpack_require__.s = 3);
371
+ /******/ __webpack_exports__ = await __webpack_exports__;
372
+ /******/ const __webpack_exports__default = __webpack_exports__.A;
373
+ /******/ export { __webpack_exports__default as default };
374
+ /******/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reverse-proxy-middleware",
3
- "version": "0.0.130",
3
+ "version": "0.0.132",
4
4
  "description": "A reverse proxy blocking bot requests.",
5
5
  "keywords": [
6
6
  "api",
@@ -29,6 +29,11 @@
29
29
  "type.d.ts"
30
30
  ],
31
31
  "bin": "index.js",
32
+ "main": "index.js",
33
+ "type": "module",
34
+ "imports": {
35
+ "*": "/application/node_modules/*"
36
+ },
32
37
  "repository": {
33
38
  "type": "git",
34
39
  "url": "https://github.com/thaibault/reverse-proxy-middleware.git"
@@ -57,26 +62,26 @@
57
62
  "watch": "weboptimizer build --watch"
58
63
  },
59
64
  "devDependencies": {
60
- "@babel/cli": "^7.28.6",
61
- "@babel/eslint-parser": "^7.28.6",
65
+ "@babel/cli": "^8.0.4",
66
+ "@babel/eslint-parser": "^8.0.1",
62
67
  "@eslint/js": "^10.0.1",
63
68
  "@stylistic/eslint-plugin": "^5.10.0",
64
- "@types/node": "^25.8.0",
69
+ "@types/node": "^26.1.1",
65
70
  "@types/webpack-env": "^1.18.8",
66
- "@typescript-eslint/eslint-plugin": "^8.59.3",
67
- "@typescript-eslint/parser": "^8.59.3",
68
- "eslint": "^10.4.0",
71
+ "@typescript-eslint/eslint-plugin": "^8.64.0",
72
+ "@typescript-eslint/parser": "^8.64.0",
73
+ "eslint": "^10.7.0",
69
74
  "eslint-config-google": "^0.14.0",
70
- "eslint-plugin-jsdoc": "^62.9.0",
71
- "jest": "^30.3.0",
75
+ "eslint-plugin-jsdoc": "^63.2.0",
76
+ "jest": "^30.4.2",
72
77
  "jsdoc": "^4.0.5",
73
- "typescript-eslint": "^8.59.3",
74
- "web-documentation": "^1.0.12",
75
- "weboptimizer": "^3.0.22"
78
+ "typescript-eslint": "^8.64.0",
79
+ "web-documentation": "^1.0.42",
80
+ "weboptimizer": "^4.0.25"
76
81
  },
77
82
  "dependencies": {
78
- "@babel/runtime": "^7.29.2",
79
- "clientnode": "^4.0.1396"
83
+ "@babel/runtime": "^8.0.0",
84
+ "clientnode": "^4.0.1455"
80
85
  },
81
86
  "engines": {
82
87
  "node": ">=24",
@@ -90,8 +95,7 @@
90
95
  "globals@npm:^11.1.0": "patch:globals@npm%3A11.12.0#~/.yarn/patches/globals-npm-11.12.0-1fa7f41a6c.patch"
91
96
  },
92
97
  "sideEffects": true,
93
- "documentationWebsite": {
94
- "name": "reverse-proxy-middleware",
98
+ "webDocumentation": {
95
99
  "trackingCode": ""
96
100
  },
97
101
  "configuration": {
@@ -134,19 +138,24 @@
134
138
  "includeFilePathRegularExpression": "^(.+/)?index\\.js$",
135
139
  "pattern": {
136
140
  "#": "This is how we can make our main exported artefact executable.",
137
- "__evaluate__": "`#!/usr/bin/env node\n// -*- coding: utf-8 -*-\n${self.generic.assetPattern.javaScript.pattern}if(module===eval('require.main'))module.paths.unshift('/application/node_modules');{1}`"
141
+ "__evaluate__": "`#!/usr/bin/env node\n// -*- coding: utf-8 -*-\n{1}`"
138
142
  }
139
143
  }
140
144
  },
141
- "exportFormat": {
142
- "external": "commonjs2",
143
- "self": "commonjs2"
144
- },
145
145
  "module": {
146
146
  "optimizer": {
147
- "babelMinify": {
148
- "#": "To provide a logging output we need to exclude this feature.",
149
- "__evaluate__": "self.debug ? {bundle: null, module: null} : {bundle: {transform: {removeConsole: false}}, module: {removeConsole: false}}"
147
+ "terser": {
148
+ "terserOptions": {
149
+ "compress": {
150
+ "#": "To provide a logging output we need to exclude this feature.",
151
+ "drop_console": {
152
+ "__evaluate__": "false"
153
+ },
154
+ "drop_debugger": {
155
+ "__evaluate__": "false"
156
+ }
157
+ }
158
+ }
150
159
  }
151
160
  }
152
161
  },
package/readme.md CHANGED
@@ -6,7 +6,7 @@ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
6
6
  License
7
7
  -------
8
8
 
9
- This library written by Torben Sickert stand under a creative commons naming
9
+ This library written by Torben Sickert stands under a creative commons naming
10
10
  3.0 unported license. See https://creativecommons.org/licenses/by/3.0/deed.de
11
11
  endregion -->
12
12