1.0.6 • Published 1 year ago

@discord-nucleus/server v1.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Status GitHub Issues GitHub Pull Requests License


📝 Table of Contents

📦️ Installing

NPM

npm install @discord-nucleus/server

Yarn

yarn add @discord-nucleus/server

🔍️ Usage

🚀 Example Server

In index.ts:

import { Server, ServerOptions } from "@discord-nucleus/server";
import { join } from "path";

// You can customize server by extending him
class MyServer extends Server {
  // Error handler
  protected override errorHandler(error: Error, request: Request, response: Response, next: NextFunction): void {
    response.status(500).send("Oops... Something went wrong!");
  }
  // Not found handler
  protected override notFoundHandler(request: Request, response: Response, next: NextFunction): void {
    response.status(404).send("The requested URL was not found on this server!");
  }
  // Called after server instance initialization
  protected override initialize(): void {
    // Actually this function adds core-middlewares, so you need to call super
    super.initialize();
    // Anything else...
  }
}

// Define server configuration
const config: ServerOptions = {
  port: 3000,
  host: "127.0.0.1",
};

// Create new server
const server = new MyServer(config);

// Load routes from `./routes` directory
server.registerRoutes(join(__dirname, "routes"));

// Log when server gets ready
server.on("ready", () => console.log("Ready!"));

// Finally start server
server.start();

🌌 Example Route

In routes/index.ts:

import { Route, middleware } from "@discord-nucleus/server";
import type { Request, Response, NextFucnction } from "express";

// Dummy showcase-only middleware
const dummyMiddleware = (text: string) => (request: Request, response: Response, next: NextFunction) => {
  console.log(text);
  next();
};

// Create a class that extends Route
export default class extends Route {
  // Adding middlewares
  @middleware(dummyMiddleware("hello"))
  @middleware(dummyMiddleware("world"))
  // Method handler
  protected override get(request: Request, response: Response, next: NextFunction): void {
    response.send("Hello World!");
  }

  // Another way to add middlewares
  @middleware(dummyMiddleware("hello"), dummyMiddleware("world"))
  // Method handler
  protected override async post(request: Request, response: Response, next: NextFunction): Promise<void> {
    response.send("Hello World!");
  }
}

🌌 Example Routes Folder

In routes/**/*.(js|ts):

.
├── channels/
│   ├── [channel_id]/
│   │   ├── followers.ts
│   │   ├── index.ts
│   │   └── messages/
│   │       ├── [message_id]/
│   │       │   └── ack.ts
│   │       ├── bulk-delete.ts
│   │       └── index.ts
│   ├── permissions.ts
│   ├── pins.ts
│   ├── purge.ts
│   └── typing.ts
└── guilds/
    ├── index.ts
    └── templates/
        ├── index.ts
        └── [guild_id]/
            ├── audit-logs.ts
            ├── bans.ts
            └── index.ts

Note

You can add brackets to route path to create a dynamic route

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago