Skip to content

IntegerAlex/hasty-server

Repository files navigation

Hasty

OpenSSF Scorecard NPM Version NPM Downloads NPM License

Help needed: I am looking for contributors to help me with this project. If you are interested, please let me know.

Hasty server is a simple web framework to build webserver in a simple way. It is inspired by Express.js. Bascially, It is my implementation of HTTP using raw TCP Socket in Javascript.

table of contents

Note

This is a work in progress and not ready for production. It is just a fun project to learn how HTTP works under the hood.

Installation

npm install hasty-server

Module Support

Hasty Server supports multiple module systems for maximum compatibility:

✅ CommonJS (Default)

const Hasty = require('hasty-server');
const server = new Hasty();

✅ ES Modules (ESM)

import Hasty from 'hasty-server';
const server = new Hasty();

✅ TypeScript

import Hasty, { Request, Response } from 'hasty-server';

const server = new Hasty();

server.get('/', (req: Request, res: Response) => {
    res.json({ message: 'Hello from TypeScript!' });
});

✅ Dual Package Support

The framework automatically detects your module system and provides the appropriate format:

  • CommonJS projects: Uses .js files
  • ESM projects: Uses .mjs files
  • TypeScript projects: Uses .d.ts type definitions

Usage

Common JS

const Hasty = require('hasty-server');
const  server = new  Hasty();

server.get('/', (req, res) => {
    res.send('Hello World');
});

server.listen(8080, () => {
    console.log('Server is running on port 8080');
});

ES6

import Hasty from 'hasty-server';
const  server = new  Hasty();

server.get('/', (req, res) => {
    res.send('Hello World');
});

server.listen(8080, () => {
    console.log('Server is running on port 8080');
});

TypeScript

import Hasty, { Request, Response } from 'hasty-server';

const server = new Hasty();

server.get('/', (req: Request, res: Response) => {
    res.json({ message: 'Hello from TypeScript!' });
});

server.post('/api/users', (req: Request, res: Response) => {
    const userData = req.body;
    res.status(201).json({ id: 1, ...userData });
});

server.listen(8080, () => {
    console.log('TypeScript server running on port 8080');
});

Request Object

Some of the features in response object are:

  • send : Send a response to the client.

    • Usage: res.send('Hello World')
  • json : Send a JSON response to the client.

    • Usage: res.json({message: 'Hello World'})
  • status : Set the status code of the response.

    • Usage: res.status(200)
    • Default status code is 200.

Contributing

If you would like to contribute to Hasty Server, you're welcome to:

  • Fork the repository.
  • Create a branch for your feature or bugfix.
  • Submit a pull request.
  • Please make sure to read the contribution guidelines for more details.

Note: Do not use third-party code or dependencies. You can take help from language models, but avoid directly copying any of their code.

CHANGELOG

  • v0.9.6
    • Added comprehensive module support (CommonJS, ESM, TypeScript)
    • Added dual package support with automatic module detection

For more information, see . CHANGELOG

LICENSE

This project is licensed under LGPL-2.1 - see the LICENSE file for details.

All rights reserved to the author.

Sponsor this project

 

Contributors 15