Socket
Socket
Sign inDemoInstall

rjweb-server

Package Overview
Dependencies
Maintainers
1
Versions
373
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rjweb-server - npm Package Compare versions

Comparing version 1.2.5 to 1.2.6

1

lib/classes/routeList.d.ts

@@ -43,2 +43,1 @@ import { types as typesInterface } from "../interfaces/types";

export {};
//# sourceMappingURL=routeList.d.ts.map

@@ -1,113 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const getAllFiles_1 = require("../misc/getAllFiles");
const types_1 = __importDefault(require("../misc/types"));
const path = __importStar(require("path"));
const fs = __importStar(require("fs"));
class routeList {
/** List of Routes */
constructor(
/**
* Routes to Import
* @default []
*/ routes) {
routes = routes ?? [];
this.urls = routes;
}
/** Set A Route Manually */
set(
/** The Request Type */ type,
/** The Path on which this will be available */ path,
/** The Async Code to run on a Request */ code) {
if (!types_1.default.includes(type))
throw TypeError(`No Valid Request Type: ${type}\nPossible Values: ${types_1.default.join(', ')}`);
this.urls[type + path] = {
array: path.split('/'),
addTypes: false,
path,
type,
code
};
}
/** Serve Static Files */
static(
/** The Path to serve the Files on */ path,
/** The Location of the Folder to load from */ folder,
/** Additional Options */ options) {
const preload = options?.preload ?? false;
const remHTML = options?.remHTML ?? false;
const addTypes = options?.addTypes ?? true;
for (const file of (0, getAllFiles_1.getAllFiles)(folder)) {
const fileName = file.replace(folder, '');
let urlName = '';
if (fileName.replace('/', '') === 'index.html' && remHTML)
urlName = path.replace('//', '/');
else if (fileName.replace('/', '').endsWith('.html') && remHTML)
urlName = (path + fileName).replace('//', '/').replace('.html', '');
else
urlName = (path + fileName).replace('//', '/');
this.urls['GET' + urlName] = {
file,
array: urlName.split('/'),
addTypes,
path: urlName,
type: 'STATIC'
};
if (preload)
this.urls['GET' + urlName].content = fs.readFileSync(file);
}
}
/** Load External Function Files */
load(
/** The Location of the Folder to load from */ folder) {
const files = (0, getAllFiles_1.getAllFilesFilter)(folder, '.js');
for (const file of files) {
const route = require(path.resolve(file));
if (!('path' in route) ||
!('type' in route) ||
!('code' in route))
continue;
if (!types_1.default.includes(route.type))
throw TypeError(`No Valid Request Type: ${route.type}\nPossible Values: ${types_1.default.toString()}`);
this.urls[route.type + route.path] = {
array: route.path.split('/'),
addTypes: false,
path: route.path,
type: route.type,
code: route.code
};
}
}
/** Internal Function to access all URLs as Array */
list() {
return this.urls;
}
}
exports.default = routeList;
//# sourceMappingURL=routeList.js.map
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var l=Object.getOwnPropertyDescriptor(t,r);l&&!("get"in l?!t.__esModule:l.writable||l.configurable)||(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,l)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const getAllFiles_1=require("../misc/getAllFiles"),types_1=__importDefault(require("../misc/types")),path=__importStar(require("path")),fs=__importStar(require("fs"));class routeList{constructor(e){e=e??[],this.urls=e}set(e,t,r){if(!types_1.default.includes(e))throw TypeError(`No Valid Request Type: ${e}\nPossible Values: ${types_1.default.join(", ")}`);this.urls[e+t]={array:t.split("/"),addTypes:!1,path:t,type:e,code:r}}static(e,t,r){const i=r?.preload??!1,l=r?.remHTML??!1,s=r?.addTypes??!0;for(const r of(0,getAllFiles_1.getAllFiles)(t)){const a=r.replace(t,"");let o="";o="index.html"===a.replace("/","")&&l?e.replace("//","/"):a.replace("/","").endsWith(".html")&&l?(e+a).replace("//","/").replace(".html",""):(e+a).replace("//","/"),this.urls["GET"+o]={file:r,array:o.split("/"),addTypes:s,path:o,type:"STATIC"},i&&(this.urls["GET"+o].content=fs.readFileSync(r))}}load(e){const t=(0,getAllFiles_1.getAllFilesFilter)(e,".js");for(const e of t){const t=require(path.resolve(e));if("path"in t&&"type"in t&&"code"in t){if(!types_1.default.includes(t.type))throw TypeError(`No Valid Request Type: ${t.type}\nPossible Values: ${types_1.default.toString()}`);this.urls[t.type+t.path]={array:t.path.split("/"),addTypes:!1,path:t.path,type:t.type,code:t.code}}}}list(){return this.urls}}exports.default=routeList;

@@ -70,2 +70,1 @@ /// <reference types="node" />

export = _default;
//# sourceMappingURL=index.d.ts.map

@@ -1,390 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
const routeList_1 = __importDefault(require("./classes/routeList"));
const types_1 = __importDefault(require("./interfaces/types"));
const types_2 = __importDefault(require("./misc/types"));
const path = __importStar(require("path"));
const http = __importStar(require("http"));
const url = __importStar(require("url"));
const fs = __importStar(require("fs"));
module.exports = {
// Misc
routeList: routeList_1.default,
types: types_1.default,
// Start
async start(
/** Required Options */ options) {
const pages = options?.pages ?? {};
const events = options?.events ?? {};
const urls = options?.urls.list() ?? [];
const proxy = options?.proxy ?? false;
const rateLimits = options?.rateLimits ?? { enabled: false, list: [] };
const bind = options?.bind ?? '0.0.0.0';
const cors = options?.cors ?? false;
const port = options?.port ?? 5002;
const body = options?.body ?? 20;
const server = http.createServer(async (req, res) => {
let reqBody = '';
if (!!req.headers['content-length']) {
const bodySize = parseInt(req.headers['content-length']);
if (bodySize >= (body * 1e6)) {
res.statusCode = 413;
res.write('Payload Too Large');
return res.end();
}
}
req.on('data', (data) => {
reqBody += data;
}).on('end', async () => {
let reqUrl = { ...url.parse(req.url), method: req.method };
if (reqUrl.path.endsWith('/'))
reqUrl.path = reqUrl.path.slice(0, -1);
let executeUrl = '';
// Parse Request Body
try {
reqBody = JSON.parse(reqBody);
}
catch (e) { }
// Cors Stuff
if (cors) {
res.setHeader('Access-Control-Allow-Headers', '*');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', types_2.default.join(','));
if (req.method === 'OPTIONS')
return res.end('');
}
// Check if URL exists
let params = new Map();
let exists, isStatic = false;
const actualUrl = reqUrl.pathname.split('/');
if (actualUrl[actualUrl.length - 1] === '')
actualUrl.pop();
for (const elementName in urls) {
if (elementName in urls && elementName.replace(req.method, '') === reqUrl.pathname && urls[elementName].type === req.method) {
executeUrl = req.method + reqUrl.pathname;
isStatic = false;
exists = true;
break;
}
;
if (elementName in urls && elementName.replace(req.method, '') === reqUrl.pathname && urls[elementName].type === 'STATIC') {
executeUrl = req.method + reqUrl.pathname;
isStatic = true;
exists = true;
break;
}
const element = urls[elementName];
if (element.type !== req.method)
continue;
if (element.array.length !== actualUrl.length)
continue;
if (exists && element.array.join('/') !== executeUrl)
break;
let urlCount = 0;
for (const urlPart of element.array) {
const urlParam = element.array[urlCount];
const reqParam = actualUrl[urlCount];
urlCount++;
if (!urlParam.startsWith(':') && reqParam !== urlParam)
break;
if (urlParam === reqParam) {
continue;
}
else if (urlParam.startsWith(':')) {
params.set(urlParam.replace(':', ''), decodeURIComponent(reqParam));
executeUrl = req.method + element.array.join('/');
exists = true;
continue;
}
continue;
}
continue;
}
// Get Correct Host IP
let hostIp;
if (proxy && req.headers['x-forwarded-for'])
hostIp = req.headers['x-forwarded-for'];
else
hostIp = req.socket.remoteAddress;
// Create Answer Object
const headers = new Map();
Object.keys(req.headers).forEach((header) => {
headers.set(header, req.headers[header]);
});
headers.delete('cookie');
const queries = new Map();
for (const [query, value] of new URLSearchParams(reqUrl.search)) {
queries.set(query, value);
}
;
const cookies = new Map();
if (req.headers.cookie) {
req.headers.cookie.split(';').forEach((cookie) => {
let [name, ...rest] = cookie.split('=');
name = name?.trim();
if (!name)
return;
const value = rest.join('=').trim();
if (!value)
return;
cookies.set(name, decodeURIComponent(value));
});
}
res.setHeader('X-Powered-By', 'rjweb-server');
let ctr = {
// Properties
header: headers,
cookie: cookies,
param: params,
query: queries,
// Variables
hostPort: req.socket.remotePort,
hostIp,
reqBody,
reqUrl,
// Raw Values
rawServer: server,
rawReq: req,
rawRes: res,
// Custom Variables
'@': {},
// Functions
setHeader(name, value) {
res.setHeader(name, value);
return ctr;
}, setCustom(name, value) {
ctr['@'][name] = value;
return ctr;
}, print(msg, options) {
const niceJSON = options?.niceJSON ?? false;
switch (typeof msg) {
case 'object':
res.setHeader('Content-Type', 'application/json');
if (niceJSON)
res.write(JSON.stringify(msg, undefined, 1));
else
res.write(JSON.stringify(msg));
break;
case 'bigint':
case 'number':
case 'boolean':
res.write(msg.toString());
break;
case 'function':
res.write(msg());
break;
case 'undefined':
res.write('');
break;
default:
try {
res.write(msg);
}
catch (e) {
if ('reqError' in pages) {
ctr.error = e;
Promise.resolve(pages.reqError(ctr)).catch((e) => {
console.log(e);
res.statusCode = 500;
res.write(e);
res.end();
}).then(() => res.end());
errorStop = true;
}
else {
errorStop = true;
console.log(e);
res.statusCode = 500;
res.end();
}
}
}
;
return ctr;
}, status(code) {
res.statusCode = code;
return ctr;
}, printFile(file) {
const content = fs.readFileSync(file);
res.write(content, 'binary');
return ctr;
}
};
// Execute Custom Run Function
let errorStop = false;
if ('request' in events) {
await events.request(ctr).catch((e) => {
if ('reqError' in pages) {
ctr.error = e;
Promise.resolve(pages.reqError(ctr)).catch((e) => {
console.log(e);
res.statusCode = 500;
res.write(e);
res.end();
}).then(() => res.end());
errorStop = true;
}
else {
errorStop = true;
console.log(e);
res.statusCode = 500;
return res.end();
}
});
}
;
if (errorStop)
return;
// Rate Limiting
if (rateLimits.enabled) {
for (const rule of rateLimits.list) {
if (reqUrl.path.startsWith(rule.path)) {
res.setHeader('X-RateLimit-Limit', rule.times);
res.setHeader('X-RateLimit-Remaining', rule.times - (await rateLimits.functions.get(hostIp + rule.path) ?? 0));
res.setHeader('X-RateLimit-Reset-Every', rule.timeout);
await rateLimits.functions.set(hostIp + rule.path, (await rateLimits.functions.get(hostIp + rule.path) ?? 0) + 1);
setTimeout(async () => { await rateLimits.functions.set(hostIp + rule.path, (await rateLimits.functions.get(hostIp + rule.path) ?? 0) - 1); }, rule.timeout);
if (await rateLimits.functions.get(hostIp + rule.path) > rule.times) {
res.statusCode = 429;
ctr.print(rateLimits.message ?? 'Rate Limited');
return res.end();
}
}
}
}
// Execute Page
if (exists) {
if (!isStatic) {
Promise.resolve(urls[executeUrl].code(ctr)).catch((e) => {
if ('reqError' in pages) {
ctr.error = e;
Promise.resolve(pages.reqError(ctr)).catch((e) => {
console.log(e);
res.statusCode = 500;
res.write(e);
res.end();
}).then(() => res.end());
}
else {
console.log(e);
res.statusCode = 500;
res.write(e);
res.end();
}
}).then(() => res.end());
}
else {
// Add Content Types
if (urls[executeUrl].addTypes) {
if (urls[executeUrl].path.endsWith('.pdf'))
ctr.setHeader('Content-Type', 'application/pdf');
if (urls[executeUrl].path.endsWith('.js'))
ctr.setHeader('Content-Type', 'text/javascript');
if (urls[executeUrl].path.endsWith('.html'))
ctr.setHeader('Content-Type', 'text/html');
if (urls[executeUrl].path.endsWith('.css'))
ctr.setHeader('Content-Type', 'text/css');
if (urls[executeUrl].path.endsWith('.csv'))
ctr.setHeader('Content-Type', 'text/csv');
if (urls[executeUrl].path.endsWith('.mpeg'))
ctr.setHeader('Content-Type', 'video/mpeg');
if (urls[executeUrl].path.endsWith('.mp4'))
ctr.setHeader('Content-Type', 'video/mp4');
if (urls[executeUrl].path.endsWith('.webm'))
ctr.setHeader('Content-Type', 'video/webm');
if (urls[executeUrl].path.endsWith('.bmp'))
ctr.setHeader('Content-Type', 'image/bmp');
}
// Read Content
if (!('content' in urls[executeUrl])) {
let content;
const filePath = path.resolve(urls[executeUrl].file);
try {
content = fs.readFileSync(filePath);
}
catch (e) {
console.log(e);
return res.end();
}
res.write(content, 'binary');
return res.end();
}
res.write(urls[executeUrl].content, 'binary');
return res.end();
}
}
else {
if ('notFound' in pages) {
Promise.resolve(pages.notFound(ctr)).catch((e) => {
if ('reqError' in pages) {
ctr.error = e;
pages.reqError(ctr).catch((e) => {
console.log(e);
res.statusCode = 500;
res.write(e);
res.end();
}).then(() => res.end());
}
else {
console.log(e);
res.statusCode = 500;
res.write(e);
res.end();
}
}).then(() => res.end());
}
else {
let pageDisplay = '';
for (const rawUrl in urls) {
const url = urls[rawUrl];
const type = (url.type === 'STATIC' ? 'GET' : url.type);
pageDisplay += `[-] [${type}] ${url.path}\n`;
}
res.statusCode = 404;
res.write(`[!] COULDNT FIND ${reqUrl.pathname.toUpperCase()}\n[i] AVAILABLE PAGES:\n\n${pageDisplay}`);
res.end();
}
}
});
});
server.on('upgrade', (req, socket, head) => {
socket.write('HTTP/1.1 101 Web Socket Protocol Handshake\r\n' +
'Upgrade: WebSocket\r\n' +
'Connection: Upgrade\r\n' +
'\r\n');
socket.pipe(socket);
});
server.listen(port, bind);
return new Promise((resolve, reject) => {
server.once('listening', () => resolve({ success: true, port, message: 'WEBSERVER STARTED', rawServer: server }));
server.once('error', (error) => reject({ success: false, error, message: 'WEBSERVER ERRORED' }));
});
}
};
//# sourceMappingURL=index.js.map
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const routeList_1=__importDefault(require("./classes/routeList")),types_1=__importDefault(require("./interfaces/types")),types_2=__importDefault(require("./misc/types")),path=__importStar(require("path")),http=__importStar(require("http")),url=__importStar(require("url")),fs=__importStar(require("fs"));module.exports={routeList:routeList_1.default,types:types_1.default,async start(e){const t=e?.pages??{},r=e?.events??{},o=e?.urls.list()??[],n=e?.proxy??!1,s=e?.rateLimits??{enabled:!1,list:[]},a=e?.bind??"0.0.0.0",i=e?.cors??!1,d=e?.port??5002,c=e?.body??20,p=http.createServer((async(e,a)=>{let d="";if(e.headers["content-length"]){if(parseInt(e.headers["content-length"])>=1e6*c)return a.statusCode=413,a.write("Payload Too Large"),a.end()}e.on("data",(e=>{d+=e})).on("end",(async()=>{let c={...url.parse(e.url),method:e.method};c.path.endsWith("/")&&(c.path=c.path.slice(0,-1));let l="";try{d=JSON.parse(d)}catch(e){}if(i&&(a.setHeader("Access-Control-Allow-Headers","*"),a.setHeader("Access-Control-Allow-Origin","*"),a.setHeader("Access-Control-Request-Method","*"),a.setHeader("Access-Control-Allow-Methods",types_2.default.join(",")),"OPTIONS"===e.method))return a.end("");let h,u=new Map,f=!1;const m=c.pathname.split("/");""===m[m.length-1]&&m.pop();for(const t in o){if(t in o&&t.replace(e.method,"")===c.pathname&&o[t].type===e.method){l=e.method+c.pathname,f=!1,h=!0;break}if(t in o&&t.replace(e.method,"")===c.pathname&&"STATIC"===o[t].type){l=e.method+c.pathname,f=!0,h=!0;break}const r=o[t];if(r.type!==e.method)continue;if(r.array.length!==m.length)continue;if(h&&r.array.join("/")!==l)break;let n=0;for(const t of r.array){const t=r.array[n],o=m[n];if(n++,!t.startsWith(":")&&o!==t)break;t!==o&&(t.startsWith(":")&&(u.set(t.replace(":",""),decodeURIComponent(o)),l=e.method+r.array.join("/"),h=!0))}}let y;y=n&&e.headers["x-forwarded-for"]?e.headers["x-forwarded-for"]:e.socket.remoteAddress;const w=new Map;Object.keys(e.headers).forEach((t=>{w.set(t,e.headers[t])})),w.delete("cookie");const _=new Map;for(const[e,t]of new URLSearchParams(c.search))_.set(e,t);const g=new Map;e.headers.cookie&&e.headers.cookie.split(";").forEach((e=>{let[t,...r]=e.split("=");if(t=t?.trim(),!t)return;const o=r.join("=").trim();o&&g.set(t,decodeURIComponent(o))})),a.setHeader("X-Powered-By","rjweb-server");let b={header:w,cookie:g,param:u,query:_,hostPort:e.socket.remotePort,hostIp:y,reqBody:d,reqUrl:c,rawServer:p,rawReq:e,rawRes:a,"@":{},setHeader:(e,t)=>(a.setHeader(e,t),b),setCustom:(e,t)=>(b["@"][e]=t,b),print(e,r){const o=r?.niceJSON??!1;switch(typeof e){case"object":a.setHeader("Content-Type","application/json"),o?a.write(JSON.stringify(e,void 0,1)):a.write(JSON.stringify(e));break;case"bigint":case"number":case"boolean":a.write(e.toString());break;case"function":a.write(e());break;case"undefined":a.write("");break;default:try{a.write(e)}catch(e){"reqError"in t?(b.error=e,Promise.resolve(t.reqError(b)).catch((e=>{console.log(e),a.statusCode=500,a.write(e),a.end()})).then((()=>a.end())),C=!0):(C=!0,console.log(e),a.statusCode=500,a.end())}}return b},status:e=>(a.statusCode=e,b),printFile(e){const t=fs.readFileSync(e);return a.write(t,"binary"),b}},C=!1;if("request"in r&&await r.request(b).catch((e=>{if(!("reqError"in t))return C=!0,console.log(e),a.statusCode=500,a.end();b.error=e,Promise.resolve(t.reqError(b)).catch((e=>{console.log(e),a.statusCode=500,a.write(e),a.end()})).then((()=>a.end())),C=!0})),!C){if(s.enabled)for(const e of s.list)if(c.path.startsWith(e.path)&&(a.setHeader("X-RateLimit-Limit",e.times),a.setHeader("X-RateLimit-Remaining",e.times-(await s.functions.get(y+e.path)??0)),a.setHeader("X-RateLimit-Reset-Every",e.timeout),await s.functions.set(y+e.path,(await s.functions.get(y+e.path)??0)+1),setTimeout((async()=>{await s.functions.set(y+e.path,(await s.functions.get(y+e.path)??0)-1)}),e.timeout),await s.functions.get(y+e.path)>e.times))return a.statusCode=429,b.print(s.message??"Rate Limited"),a.end();if(h){if(f){if(o[l].addTypes&&(o[l].path.endsWith(".pdf")&&b.setHeader("Content-Type","application/pdf"),o[l].path.endsWith(".js")&&b.setHeader("Content-Type","text/javascript"),o[l].path.endsWith(".html")&&b.setHeader("Content-Type","text/html"),o[l].path.endsWith(".css")&&b.setHeader("Content-Type","text/css"),o[l].path.endsWith(".csv")&&b.setHeader("Content-Type","text/csv"),o[l].path.endsWith(".mpeg")&&b.setHeader("Content-Type","video/mpeg"),o[l].path.endsWith(".mp4")&&b.setHeader("Content-Type","video/mp4"),o[l].path.endsWith(".webm")&&b.setHeader("Content-Type","video/webm"),o[l].path.endsWith(".bmp")&&b.setHeader("Content-Type","image/bmp")),!("content"in o[l])){let e;const t=path.resolve(o[l].file);try{e=fs.readFileSync(t)}catch(e){return console.log(e),a.end()}return a.write(e,"binary"),a.end()}return a.write(o[l].content,"binary"),a.end()}Promise.resolve(o[l].code(b)).catch((e=>{"reqError"in t?(b.error=e,Promise.resolve(t.reqError(b)).catch((e=>{console.log(e),a.statusCode=500,a.write(e),a.end()})).then((()=>a.end()))):(console.log(e),a.statusCode=500,a.write(e),a.end())})).then((()=>a.end()))}else if("notFound"in t)Promise.resolve(t.notFound(b)).catch((e=>{"reqError"in t?(b.error=e,t.reqError(b).catch((e=>{console.log(e),a.statusCode=500,a.write(e),a.end()})).then((()=>a.end()))):(console.log(e),a.statusCode=500,a.write(e),a.end())})).then((()=>a.end()));else{let e="";for(const t in o){const r=o[t];e+=`[-] [${"STATIC"===r.type?"GET":r.type}] ${r.path}\n`}a.statusCode=404,a.write(`[!] COULDNT FIND ${c.pathname.toUpperCase()}\n[i] AVAILABLE PAGES:\n\n${e}`),a.end()}}}))}));return p.on("upgrade",((e,t,r)=>{t.write("HTTP/1.1 101 Web Socket Protocol Handshake\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\n\r\n"),t.pipe(t)})),p.listen(d,a),new Promise(((e,t)=>{p.once("listening",(()=>e({success:!0,port:d,message:"WEBSERVER STARTED",rawServer:p}))),p.once("error",(e=>t({success:!1,error:e,message:"WEBSERVER ERRORED"})))}))}};

@@ -35,2 +35,1 @@ /// <reference types="node" />

export {};
//# sourceMappingURL=ctr.d.ts.map

4

lib/interfaces/ctr.js

@@ -1,3 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=ctr.js.map
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});

@@ -12,2 +12,1 @@ /// <reference types="node" />

}
//# sourceMappingURL=page.d.ts.map

@@ -1,3 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=page.js.map
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});

@@ -6,2 +6,1 @@ export default interface rateLimitRule {

}
//# sourceMappingURL=ratelimitRule.d.ts.map

@@ -1,3 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=ratelimitRule.js.map
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});

@@ -12,2 +12,1 @@ declare enum HTTPtypes {

export type types = 'OPTIONS' | 'DELETE' | 'PATCH' | 'POST' | 'PUT' | 'GET' | 'STATIC';
//# sourceMappingURL=types.d.ts.map

@@ -1,14 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var HTTPtypes;
(function (HTTPtypes) {
/** HTTP Request Type */ HTTPtypes["options"] = "OPTIONS";
/** HTTP Request Type */ HTTPtypes["delete"] = "DELETE";
/** HTTP Request Type */ HTTPtypes["patch"] = "PATCH";
/** HTTP Request Type */ HTTPtypes["post"] = "POST";
/** HTTP Request Type */ HTTPtypes["put"] = "PUT";
/** HTTP Request Type */ HTTPtypes["get"] = "GET";
/** Internal Request Type */ HTTPtypes["static"] = "STATIC";
})(HTTPtypes || (HTTPtypes = {}));
exports.default = HTTPtypes;
//# sourceMappingURL=types.js.map
"use strict";var HTTPtypes;Object.defineProperty(exports,"__esModule",{value:!0}),function(t){t.options="OPTIONS",t.delete="DELETE",t.patch="PATCH",t.post="POST",t.put="PUT",t.get="GET",t.static="STATIC"}(HTTPtypes||(HTTPtypes={})),exports.default=HTTPtypes;
export declare const getAllFiles: (dirPath: string, arrayOfFiles?: string[]) => string[];
export declare const getAllFilesFilter: (dirPath: string, suffix: string, arrayOfFiles?: string[]) => string[];
//# sourceMappingURL=getAllFiles.d.ts.map

@@ -1,49 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAllFilesFilter = exports.getAllFiles = void 0;
const fs = __importStar(require("fs"));
const getAllFiles = (dirPath, arrayOfFiles) => {
arrayOfFiles = arrayOfFiles || [];
const files = fs.readdirSync(dirPath);
files.forEach((file) => {
if (fs.statSync(dirPath + '/' + file).isDirectory()) {
arrayOfFiles = (0, exports.getAllFiles)(dirPath + '/' + file, arrayOfFiles);
}
else {
let filePath = dirPath + '/' + file;
arrayOfFiles.push(filePath);
}
});
return arrayOfFiles;
};
exports.getAllFiles = getAllFiles;
const getAllFilesFilter = (dirPath, suffix, arrayOfFiles) => {
arrayOfFiles = arrayOfFiles || [];
arrayOfFiles = (0, exports.getAllFiles)(dirPath, arrayOfFiles).filter((file) => file.endsWith(suffix));
return arrayOfFiles;
};
exports.getAllFilesFilter = getAllFilesFilter;
//# sourceMappingURL=getAllFiles.js.map
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,l){void 0===l&&(l=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,l,i)}:function(e,t,r,l){void 0===l&&(l=r),e[l]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAllFilesFilter=exports.getAllFiles=void 0;const fs=__importStar(require("fs")),getAllFiles=(e,t)=>{t=t||[];return fs.readdirSync(e).forEach((r=>{if(fs.statSync(e+"/"+r).isDirectory())t=(0,exports.getAllFiles)(e+"/"+r,t);else{let l=e+"/"+r;t.push(l)}})),t};exports.getAllFiles=getAllFiles;const getAllFilesFilter=(e,t,r)=>(r=r||[],r=(0,exports.getAllFiles)(e,r).filter((e=>e.endsWith(t))));exports.getAllFilesFilter=getAllFilesFilter;
declare const _default: string[];
export = _default;
//# sourceMappingURL=types.d.ts.map

@@ -1,11 +0,1 @@

"use strict";
module.exports = [
'OPTIONS',
'DELETE',
'PATCH',
'STATIC',
'POST',
'PUT',
'GET'
];
//# sourceMappingURL=types.js.map
"use strict";module.exports=["OPTIONS","DELETE","PATCH","STATIC","POST","PUT","GET"];
{
"name": "rjweb-server",
"version": "1.2.5",
"version": "1.2.6",
"description": "Easy and Lightweight Way to create a Web Server in Node.js",
"main": "lib/index.js",
"scripts": {
"build": "rm -r lib && tsc --pretty false"
"build": "rm -r lib && tsc --pretty false && uglifyjs-folder ./lib -e -x .js -o lib > /dev/null"
}, "repository": {

@@ -30,4 +30,5 @@ "type": "git",

"@types/node": "^18.11.18",
"typescript": "^4.9.4"
"typescript": "^4.9.4",
"uglifyjs-folder": "^3.2.0"
}
}

@@ -77,3 +77,3 @@ <h1 align="center">Welcome to rjweb-server 👋</h1>

events: {
request: {
request: async(ctr: ctr) {
ctr.setCustom('count', ++count)

@@ -225,4 +225,3 @@

set: async(key, value) => (await db.query('update ratelimits set value = ? where key = ?;', [value, key])),
get: async(key) => ((await db.query('select value from ratelimits where key = ?;', [key])).data.rows[0].value),
del: async(key, value) => (await db.query('delete from ratelimits where key = ?;', [key]))
get: async(key) => ((await db.query('select value from ratelimits where key = ?;', [key])).data.rows[0].value)
}

@@ -330,3 +329,3 @@ }

Copyright © 2022 [0x4096](https://github.com/rotvproHD).<br />
This project is ISC licensed.
Copyright © 2023 [0x4096](https://github.com/rotvproHD).<br />
This project is MIT licensed.

@@ -6,12 +6,10 @@ {

"declaration": true,
"declarationMap": true,
"declarationMap": false,
"target": "ES2020",
"moduleResolution": "node",
"esModuleInterop": true,
"sourceMap": true,
"sourceMap": false,
"outDir": "lib",
"downlevelIteration": true,
"baseUrl": "src",
},
"include": ["src/**/*"]
}, "include": ["src/**/*"]
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc