npm.io
1.0.6 • Published 2d ago

aevoraokok

Licence
ISC
Version
1.0.6
Deps
0
Size
64 kB
Vulns
0
Weekly
0

Nyvora Framework

Nyvora is a lightweight, secure, and developer-friendly Node.js framework designed for building fast APIs and web applications. It brings PHP-like simplicity (like global sessions, direct request/response access) to the modern, non-blocking Node.js ecosystem.

Features at a Glance

  • PHP-Style Global Access: Access Request, Response, and Session globally without passing req or res everywhere!
  • Built-in Session Management: Secure, file-based sessions with easy PHP-style helpers.
  • Robust Security: Built-in TokenVault (AES-256-GCM), IpTracker, and basic protection Guard.
  • Data Validation: Laravel-style data validator (required|email|min:3).
  • Database Ready: Quick setup for MySQL connection.

1. Getting Started

Initialize Framework

Before starting the server, initialize the framework. This sets up required folders like .Nyvora.

import Nyvora from "./Nexor.js";

// Optional: Enable basic security protections
Nyvora.protect();
Database Connection

Nyvora can connect to a MySQL database using the connection URL stored in .Nyvora/config.

const connectionUrl = Nyvora.config.get("MYSQL_DB_URL");
const db = await Nyvora.connect(connectionUrl);
Starting the Server

Nyvora uses a very simple routing mechanism built directly on top of the native HTTP module.

Nyvora.Server(async (req, res) => {
    
    if (req.method === "GET" && req.path === "/") {
        return Nyvora.Response.success({ message: "Welcome to Nyvora!" });
    }

}).listen(3000, () => {
    console.log("🚀 Server is running at http://localhost:3000");
});

2. Global Request Helper (Nyvora.Request)

Nyvora parses JSON and Form Data automatically. You can access the incoming request data from anywhere in your code using Nyvora.Request.

// Get all input data (Body + Query parameters combined)
const allData = Nyvora.Request.all();

// Get a specific input value (Fallback to default if not found)
const name = Nyvora.Request.input('name', 'Anonymous');

// Check if a key exists
const hasEmail = Nyvora.Request.has('email');

// Get the user's real IP address (Supports Cloudflare)
const userIp = Nyvora.Request.ip();

// Get request path
const path = Nyvora.Request.path();

3. Global Response Helper (Nyvora.Response)

Standardize your API responses effortlessly.

// Success Response (HTTP 200)
return Nyvora.Response.success(
    { user_id: 1, name: "Satyam" }, 
    "User logged in successfully"
);

// Error Response
return Nyvora.Response.error("Invalid API Key", 401);

4. Session Management (Nyvora.ss)

Nyvora handles sessions beautifully without you needing to manually pass cookies around. The session lifetime is managed in .Nyvora/config via SESSION_LIFETIME (default: 3600s).

// 1. Set Session Data
Nyvora.ss.set('username', 'Satyam');

// 2. Get Session Data
const username = Nyvora.ss.get('username');

// 3. Regenerate Session ID (Very important for login security!)
Nyvora.ss.regenerate();

// 4. Get Session Info (Remaining time, creation date, etc.)
const info = Nyvora.ss.info();
console.log(`Session expires in ${info.expiresInSeconds} seconds`);

// 5. Delete specific key
Nyvora.ss.unset('username');

// 6. Clear entire session
Nyvora.ss.reset();

5. Input Validation (Nyvora.Validator)

Validate incoming data using a clean, Laravel-style syntax.

const input = Nyvora.Request.all();

const rules = {
    name: 'required|string|min:3',
    age: 'required|integer|min:18',
    email: 'required|email'
};

const validator = Nyvora.Validator.make(input, rules);

if (validator.fails()) {
    // Return all validation errors
    return Nyvora.Response.error('Validation Failed', 422, validator.getErrors());
}

6. Secure Tokens (Nyvora.TokenVault)

Need to issue secure tokens (e.g., Email Verification, Password Reset, Custom JWTs)? TokenVault uses military-grade AES-256-GCM encryption and strictly validates expiration and audience.

// 1. Configure the Vault (Run this once globally)
Nyvora.TokenVault.configure({
    'v1': 'YourVeryStrongMasterKey123456789'
}, 'MyIssuer', 'MyAudience');

// 2. Create (Seal) a Secure Token
const payload = { user_id: 1001, role: 'admin' };
const uKey = 'user-secret-key';

const seal = Nyvora.TokenVault.seal(
    payload, 
    uKey, 
    '24H',              // Expiry (e.g., '1H', '30D', 'MO')
    'verify_email',     // Purpose
    0,                  // Not-before offset
    true,               // Bind to current Session ID!
    true,               // Bind to current IP Address!
    true                // Bind to current Device (User-Agent)!
);

const tokenString = seal.token;

// 3. Decrypt & Verify (Unseal) a Token
const verify = Nyvora.TokenVault.unseal(
    tokenString, 
    uKey, 
    'verify_email' // Must match the original purpose
);

if (verify.status) {
    console.log("Verified Data:", verify.data);
} else {
    console.log("Error:", verify.error);
}

7. IP Tracking (Nyvora.IpTracker)

Track unique visitors and hits efficiently. This is safe to use even with heavy concurrent traffic.

// Record a visit (Pass `true` to ignore localhost/127.0.0.1)
await Nyvora.IpTracker.recordVisit(true);

// Get total unique IP addresses today
const unique = Nyvora.IpTracker.getUniqueVisitors();

// Get total number of visits/clicks today
const totalVisits = Nyvora.IpTracker.getTotalVisits();

// Get raw JSON tracking data
const rawData = Nyvora.IpTracker.getData();

Thank you for using Nyvora! Happy Coding!