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 +1 -1
- package/index.d.ts +1 -1
- package/index.js +373 -1
- package/package.json +33 -24
- package/readme.md +1 -1
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", "
|
|
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
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.
|
|
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": "^
|
|
61
|
-
"@babel/eslint-parser": "^
|
|
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": "^
|
|
69
|
+
"@types/node": "^26.1.1",
|
|
65
70
|
"@types/webpack-env": "^1.18.8",
|
|
66
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
67
|
-
"@typescript-eslint/parser": "^8.
|
|
68
|
-
"eslint": "^10.
|
|
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": "^
|
|
71
|
-
"jest": "^30.
|
|
75
|
+
"eslint-plugin-jsdoc": "^63.2.0",
|
|
76
|
+
"jest": "^30.4.2",
|
|
72
77
|
"jsdoc": "^4.0.5",
|
|
73
|
-
"typescript-eslint": "^8.
|
|
74
|
-
"web-documentation": "^1.0.
|
|
75
|
-
"weboptimizer": "^
|
|
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": "^
|
|
79
|
-
"clientnode": "^4.0.
|
|
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
|
-
"
|
|
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
|
|
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
|
-
"
|
|
148
|
-
"
|
|
149
|
-
|
|
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
|
|
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
|
|