UNPKG

rjweb-server

Version:

Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS

215 lines (214 loc) 5.64 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var middlewareBuilder_exports = {}; __export(middlewareBuilder_exports, { MiddlewareLoader: () => MiddlewareLoader, currentVersion: () => currentVersion, default: () => MiddlewareBuilder }); module.exports = __toCommonJS(middlewareBuilder_exports); var import_external = require("../types/external"); const currentVersion = 3; class Dummy { } class MiddlewareLoader { constructor(data, context) { this.data = data; this.context = context; } /** * Configure the Middleware * @since 7.0.0 * @from rjweb-server */ config(config) { return { data: this.data, config, version: currentVersion, localContext: this.context }; } } class MiddlewareBuilder { constructor() { this.data = { classModifications: { httpRequest: class extends import_external.HttpRequest { }, wsConnect: class extends import_external.WsConnect { }, wsMessage: class extends import_external.WsMessage { }, wsClose: class extends import_external.WsClose { } } }; this.dataContext = {}; this.version = currentVersion; } /** * Set the default Context State * @since 7.0.0 */ context(context) { this.dataContext = context; return this; } /** * Set the extended Class for the HTTP Context * @example * ``` * const middleware = new MiddlewareBuilder() * .httpClass((Expand) => class extends Expand { * printHi() { * this.print('Hi') * } * }) * .build() * ``` * @since 7.0.0 */ httpClass(callback) { this.data.classModifications.http = callback(import_external.HttpRequest, this.dataContext); const builder = new MiddlewareBuilder(); builder.data = this.data; builder.dataContext = this.dataContext; builder.version = this.version; return builder; } /** * Set the extended Class for the WebSocket Connect Context * @example * ``` * const middleware = new MiddlewareBuilder() * .wsConnectClass((Expand) => class extends Expand { * printHi() { * this.print('Hi') * } * }) * .build() * ``` * @since 7.0.0 */ wsConnectClass(callback) { this.data.classModifications.wsConnect = callback(import_external.WsConnect, this.dataContext); const builder = new MiddlewareBuilder(); builder.data = this.data; builder.dataContext = this.dataContext; builder.version = this.version; return builder; } /** * Set the extended Class for the WebSocket Message Context * @example * ``` * const middleware = new MiddlewareBuilder() * .wsMessageClass((Expand) => class extends Expand { * printHi() { * this.print('Hi') * } * }) * .build() * ``` * @since 7.0.0 */ wsMessageClass(callback) { this.data.classModifications.wsMessage = callback(import_external.WsMessage, this.dataContext); const builder = new MiddlewareBuilder(); builder.data = this.data; builder.dataContext = this.dataContext; builder.version = this.version; return builder; } /** * Set the extended Class for the WebSocket Close Context * @example * ``` * const middleware = new MiddlewareBuilder() * .wsCloseClass((Expand) => class extends Expand { * logBye() { * console.log('Bye,', this.client.ip) * } * }) * .build() * ``` * @since 7.0.0 */ wsCloseClass(callback) { this.data.classModifications.wsClose = callback(import_external.WsClose, this.dataContext); const builder = new MiddlewareBuilder(); builder.data = this.data; builder.dataContext = this.dataContext; builder.version = this.version; return builder; } /** * Add a Callback for when the Middleware gets loaded * @since 5.7.0 */ init(callback) { this.data.initEvent = callback; return this; } /** * Add a Callback for HTTP Requests * @since 5.7.0 */ http(callback) { this.data.httpEvent = callback; return this; } /** * Add a Callback for WebSocket Connections * @since 5.7.0 */ wsConnect(callback) { this.data.wsConnectEvent = callback; return this; } /** * Add a Callback for WebSocket Messages * @since 5.7.0 */ wsMessage(callback) { this.data.wsMessageEvent = callback; return this; } /** * Add a Callback for Closing WebSockets * @since 5.7.0 */ wsClose(callback) { this.data.wsCloseEvent = callback; return this; } /** * Get the Production Version of this Class (required to load) * @since 5.7.0 */ build() { return new MiddlewareLoader(this.data, this.dataContext); } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { MiddlewareLoader, currentVersion });