reverse-proxy-middleware 0.0.131 → 0.0.133

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,353 @@
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
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12
+
13
+
14
+ // EXPORTS
15
+ __webpack_require__.d(__webpack_exports__, {
16
+ Ko: () => (/* binding */ addParsedContentToRequest),
17
+ BE: () => (/* binding */ applyStateAPIs),
18
+ Ay: () => (/* binding */ helper),
19
+ cP: () => (/* binding */ determineForwarder),
20
+ m9: () => (/* binding */ logging),
21
+ cx: () => (/* binding */ resolveForwarders)
22
+ });
23
+
24
+ // UNUSED EXPORTS: EVALUATION_SCOPE_NAMES, reverseProxyBufferedRequest, transformHeaders
25
+
26
+ // EXTERNAL MODULE: external "clientnode"
27
+ var external_clientnode_ = __webpack_require__(1);
28
+ ;// external "net"
29
+
30
+ ;// external "tls"
31
+
32
+ ;// ./type.ts
33
+ // #!/usr/bin/env babel-node
34
+ // -*- coding: utf-8 -*-
35
+ /** @module web-node *//* !
36
+ region header
37
+ [Project page](https://torben.website/webNode)
38
+
39
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
40
+
41
+ License
42
+ -------
43
+
44
+ This library written by Torben Sickert stands under a creative commons
45
+ naming 3.0 unported license.
46
+ See https://creativecommons.org/licenses/by/3.0/deed.de
47
+ endregion
48
+ */// region imports
49
+
50
+ ;// ./helper.ts
51
+ // #!/usr/bin/env babel-node
52
+ // -*- coding: utf-8 -*-
53
+ /** @module web-node *//* !
54
+ region header
55
+ [Project page](https://torben.website/webNode)
56
+
57
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
58
+
59
+ License
60
+ -------
61
+
62
+ This library written by Torben Sickert stands under a creative commons
63
+ naming 3.0 unported license.
64
+ See https://creativecommons.org/licenses/by/3.0/deed.de
65
+ endregion
66
+ */// region imports
67
+ // NOTE: http2 compatibility mode does work for unencrypted connections yet.
68
+ 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
69
+ 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
70
+ 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
71
+ 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
72
+ 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
73
+ // region state apis
74
+ 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
75
+ 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
76
+ // region normalize pre / post expressions
77
+ 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
78
+ stateAPIs.push(api)}forwarder.stateAPIs=stateAPIs;// endregion
79
+ // region normalize use expression
80
+ 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
81
+ resolvedForwarders[name]=forwarder}}return resolvedForwarders};// endregion
82
+ 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
83
+ // Add new header.
84
+ 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.
85
+ 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.
86
+ 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.
87
+ content=content.replace(/HTTP\/1\.0/i,"HTTP/1.1");// Overwrite proxy host with destination one.
88
+ 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);
89
+
90
+ /***/ }),
91
+ /* 1 */
92
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
93
+
94
+ const x = (y) => {
95
+ const x = {}; __webpack_require__.d(x, y); return x
96
+ }
97
+ const y = (x) => (() => (x))
98
+ 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) });
99
+
100
+ /***/ }),
101
+ /* 2 */
102
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
103
+
104
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
105
+ /* harmony import */ var clientnode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
106
+ /* harmony import */ var http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
107
+ /* harmony import */ var http2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
108
+ /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);
109
+ /* harmony import */ var _helper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
110
+ /* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
111
+ // #!/usr/bin/env babel-node
112
+ // -*- coding: utf-8 -*-
113
+ /** @module web-node *//* !
114
+ region header
115
+ [Project page](https://torben.website/webNode)
116
+
117
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
118
+
119
+ License
120
+ -------
121
+
122
+ This library written by Torben Sickert stands under a creative commons
123
+ naming 3.0 unported license.
124
+ See https://creativecommons.org/licenses/by/3.0/deed.de
125
+ endregion
126
+ */// region imports
127
+ 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.
128
+ // endregion
129
+ await clientnode__WEBPACK_IMPORTED_MODULE_0__.importsPromise;// region live cycle methods
130
+ 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
131
+ 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.
132
+ 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
133
+ // region configuration
134
+ 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
135
+ // region initialize server
136
+ var server={instance:CONFIGURATION.publicKeyPath&&CONFIGURATION.privateKeyPath?(0,http2__WEBPACK_IMPORTED_MODULE_2__.createSecureServer)(CONFIGURATION.nodeServerOptions,onIncomingMessage):// NOTE: See import notice.
137
+ (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})}/*
138
+ NOTE: Workaround since none of the events above trigger before
139
+ responding to client occurred.
140
+ */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
141
+ // region start / stop
142
+ 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
143
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (server);
144
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, [
145
+ /* harmony export */ "A", 0, /* export default binding */ __WEBPACK_DEFAULT_EXPORT__
146
+ /* harmony export */ ]);
147
+
148
+ __webpack_async_result__();
149
+ } catch(e) { __webpack_async_result__(e); } }, 1);
150
+
151
+ /***/ }),
152
+ /* 3 */
153
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
154
+
155
+ const x = (y) => {
156
+ const x = {}; __webpack_require__.d(x, y); return x
157
+ }
158
+ const y = (x) => (() => (x))
159
+ module.exports = x({ ["createServer"]: () => (__WEBPACK_EXTERNAL_MODULE_http__.createServer) });
160
+
161
+ /***/ }),
162
+ /* 4 */
163
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
164
+
165
+ const x = (y) => {
166
+ const x = {}; __webpack_require__.d(x, y); return x
167
+ }
168
+ const y = (x) => (() => (x))
169
+ module.exports = x({ ["createSecureServer"]: () => (__WEBPACK_EXTERNAL_MODULE_http2__.createSecureServer) });
170
+
171
+ /***/ }),
172
+ /* 5 */
173
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
174
+
175
+ const x = (y) => {
176
+ const x = {}; __webpack_require__.d(x, y); return x
177
+ }
178
+ const y = (x) => (() => (x))
179
+ module.exports = x({ ["resolve"]: () => (__WEBPACK_EXTERNAL_MODULE_path__.resolve) });
180
+
181
+ /***/ }),
182
+ /* 6 */
183
+ /***/ ((module) => {
184
+
185
+ function webpackEmptyAsyncContext(req) {
186
+ // Here Promise.resolve().then() is used instead of new Promise() to prevent
187
+ // uncaught exception popping up in devtools
188
+ return Promise.resolve().then(() => {
189
+ const e = new Error("Cannot find module '" + req + "'");
190
+ e.code = 'MODULE_NOT_FOUND';
191
+ throw e;
192
+ });
193
+ }
194
+ webpackEmptyAsyncContext.keys = () => ([]);
195
+ webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
196
+ webpackEmptyAsyncContext.id = 6;
197
+ module.exports = webpackEmptyAsyncContext;
198
+
199
+ /***/ }),
200
+ /* 7 */
201
+ /***/ ((module) => {
202
+
203
+ 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"}}}}');
204
+
205
+ /***/ })
206
+ /******/ ]);
207
+ /************************************************************************/
208
+ /******/ // The module cache
209
+ /******/ const __webpack_module_cache__ = {};
210
+ /******/
211
+ /******/ // The require function
212
+ /******/ function __webpack_require__(moduleId) {
213
+ /******/ // Check if module is in cache
214
+ /******/ const cachedModule = __webpack_module_cache__[moduleId];
215
+ /******/ if (cachedModule !== undefined) {
216
+ /******/ return cachedModule.exports;
217
+ /******/ }
218
+ /******/ // Create a new module (and put it into the cache)
219
+ /******/ const module = __webpack_module_cache__[moduleId] = {
220
+ /******/ // no module.id needed
221
+ /******/ // no module.loaded needed
222
+ /******/ exports: {}
223
+ /******/ };
224
+ /******/
225
+ /******/ // Execute the module function
226
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
227
+ /******/
228
+ /******/ // Return the exports of the module
229
+ /******/ return module.exports;
230
+ /******/ }
231
+ /******/
232
+ /******/ // expose the module cache
233
+ /******/ __webpack_require__.c = __webpack_module_cache__;
234
+ /******/
235
+ /************************************************************************/
236
+ /******/ /* webpack/runtime/async module */
237
+ /******/ (() => {
238
+ /******/ const hasSymbol = typeof Symbol === "function";
239
+ /******/ const webpackQueues = hasSymbol ? Symbol("webpack queues") : "__webpack_queues__";
240
+ /******/ const webpackExports = hasSymbol ? Symbol("webpack exports") : "__webpack_exports__";
241
+ /******/ const webpackError = hasSymbol ? Symbol("webpack error") : "__webpack_error__";
242
+ /******/
243
+ /******/ const resolveQueue = (queue) => {
244
+ /******/ if(queue?.d < 1) {
245
+ /******/ queue.d = 1;
246
+ /******/ queue.forEach((fn) => (fn.r--));
247
+ /******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));
248
+ /******/ }
249
+ /******/ }
250
+ /******/ const wrapDeps = (deps) => (deps.map((dep) => {
251
+ /******/ if(dep !== null && typeof dep === "object") {
252
+ /******/
253
+ /******/ if(dep[webpackQueues]) return dep;
254
+ /******/ if(dep.then) {
255
+ /******/ const queue = [];
256
+ /******/ queue.d = 0;
257
+ /******/ dep.then((r) => {
258
+ /******/ obj[webpackExports] = r;
259
+ /******/ resolveQueue(queue);
260
+ /******/ }, (e) => {
261
+ /******/ obj[webpackError] = e;
262
+ /******/ resolveQueue(queue);
263
+ /******/ });
264
+ /******/ const obj = {};
265
+ /******/
266
+ /******/ obj[webpackQueues] = (fn) => (fn(queue));
267
+ /******/ return obj;
268
+ /******/ }
269
+ /******/ }
270
+ /******/ const ret = {};
271
+ /******/ ret[webpackQueues] = x => {};
272
+ /******/ ret[webpackExports] = dep;
273
+ /******/ return ret;
274
+ /******/ }));
275
+ /******/ __webpack_require__.a = (module, body, hasAwait) => {
276
+ /******/ let queue;
277
+ /******/ hasAwait && ((queue = []).d = -1);
278
+ /******/ const depQueues = new Set();
279
+ /******/ const exports = module.exports;
280
+ /******/ let currentDeps;
281
+ /******/ let outerResolve;
282
+ /******/ let reject;
283
+ /******/ const promise = new Promise((resolve, rej) => {
284
+ /******/ reject = rej;
285
+ /******/ outerResolve = resolve;
286
+ /******/ });
287
+ /******/ promise[webpackExports] = exports;
288
+ /******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {}));
289
+ /******/ module.exports = promise;
290
+ /******/ const handle = (deps) => {
291
+ /******/ currentDeps = wrapDeps(deps);
292
+ /******/ let fn;
293
+ /******/ const getResult = () => (currentDeps.map((d) => {
294
+ /******/
295
+ /******/ if(d[webpackError]) throw d[webpackError];
296
+ /******/ return d[webpackExports];
297
+ /******/ }))
298
+ /******/ const promise = new Promise((resolve) => {
299
+ /******/ fn = () => (resolve(getResult));
300
+ /******/ fn.r = 0;
301
+ /******/ const fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));
302
+ /******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue)));
303
+ /******/ });
304
+ /******/ return fn.r ? promise : getResult();
305
+ /******/ }
306
+ /******/ const done = (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue))
307
+ /******/ body(handle, done);
308
+ /******/ queue?.d < 0 && (queue.d = 0);
309
+ /******/ };
310
+ /******/ })();
311
+ /******/
312
+ /******/ /* webpack/runtime/define property getters */
313
+ /******/ (() => {
314
+ /******/ // define getter/value functions for harmony exports
315
+ /******/ __webpack_require__.d = (exports, definition) => {
316
+ /******/ if(Array.isArray(definition)) {
317
+ /******/ var i = 0;
318
+ /******/ while(i < definition.length) {
319
+ /******/ var key = definition[i++];
320
+ /******/ var binding = definition[i++];
321
+ /******/ if(!__webpack_require__.o(exports, key)) {
322
+ /******/ if(binding === 0) {
323
+ /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
324
+ /******/ } else {
325
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
326
+ /******/ }
327
+ /******/ } else if(binding === 0) { i++; }
328
+ /******/ }
329
+ /******/ } else {
330
+ /******/ for(var key in definition) {
331
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
332
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
333
+ /******/ }
334
+ /******/ }
335
+ /******/ }
336
+ /******/ };
337
+ /******/ })();
338
+ /******/
339
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
340
+ /******/ (() => {
341
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
342
+ /******/ })();
343
+ /******/
344
+ /************************************************************************/
345
+ /******/
346
+ /******/ // module cache are used so entry inlining is disabled
347
+ /******/ // startup
348
+ /******/ // Load entry module and return exports
349
+ /******/ let __webpack_exports__ = __webpack_require__(__webpack_require__.s = 2);
350
+ /******/ __webpack_exports__ = await __webpack_exports__;
351
+ /******/ const __webpack_exports__default = __webpack_exports__.A;
352
+ /******/ export { __webpack_exports__default as default };
353
+ /******/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reverse-proxy-middleware",
3
- "version": "0.0.131",
3
+ "version": "0.0.133",
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.65.0",
72
+ "@typescript-eslint/parser": "^8.65.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.65.0",
79
+ "web-documentation": "^1.0.42",
80
+ "weboptimizer": "^4.0.26"
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.1456"
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
 
package/type.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { Mapping, PlainObject, Primitive, UTILITY_SCOPE, UTILITY_SCOPE_VALUES } from 'clientnode';
2
- import { Http2SecureServer as HTTPSecureServer, Http2Server as HttpServer, Http2ServerRequest, Http2ServerResponse, Http2Stream, OutgoingHttpHeaders, SecureServerOptions } from 'http2';
3
- import { Socket as PlainSocket } from 'net';
4
- import { TLSSocket } from 'tls';
1
+ import type { Mapping, PlainObject, Primitive, UTILITY_SCOPE, UTILITY_SCOPE_VALUES } from 'clientnode';
2
+ import type { Http2SecureServer as HTTPSecureServer, Http2Server as HttpServer, Http2ServerRequest, Http2ServerResponse, Http2Stream, OutgoingHttpHeaders, SecureServerOptions } from 'http2';
3
+ import type { Socket as PlainSocket } from 'net';
4
+ import type { TLSSocket } from 'tls';
5
5
  export type HTTPServer = HttpServer | HTTPSecureServer;
6
6
  export type HTTPServerRequest = Http2ServerRequest;
7
7
  export type HTTPServerResponse = Http2ServerResponse;