xypriss 1.3.8 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +232 -254
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +10 -0
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +10 -0
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/index.js +10 -74
- package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/cjs/mods/security/src/components/fortified-function/index.js +9 -0
- package/dist/cjs/mods/security/src/components/fortified-function/index.js.map +1 -1
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/cjs/mods/security/src/core/crypto.js +14 -0
- package/dist/cjs/mods/security/src/core/crypto.js.map +1 -1
- package/dist/cjs/mods/security/src/index.js +10 -4
- package/dist/cjs/mods/security/src/index.js.map +1 -1
- package/dist/cjs/shared/logger/Logger.js +374 -29
- package/dist/cjs/shared/logger/Logger.js.map +1 -1
- package/dist/cjs/src/cluster/bun-cluster-manager.js +91 -1
- package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -1
- package/dist/cjs/src/cluster/cluster-manager.js +15 -3
- package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
- package/dist/cjs/src/cluster/modules/AutoScaler.js +4 -4
- package/dist/cjs/src/cluster/modules/AutoScaler.js.map +1 -1
- package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +2 -2
- package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
- package/dist/cjs/src/cluster/modules/EventLoopMonitor.js +270 -0
- package/dist/cjs/src/cluster/modules/EventLoopMonitor.js.map +1 -0
- package/dist/cjs/src/cluster/modules/GCStatsTracker.js +200 -0
- package/dist/cjs/src/cluster/modules/GCStatsTracker.js.map +1 -0
- package/dist/cjs/src/cluster/modules/HeapStatsCollector.js +111 -0
- package/dist/cjs/src/cluster/modules/HeapStatsCollector.js.map +1 -0
- package/dist/cjs/src/cluster/modules/NetworkTracker.js +162 -0
- package/dist/cjs/src/cluster/modules/NetworkTracker.js.map +1 -0
- package/dist/cjs/src/cluster/modules/ThroughputCalculator.js +186 -0
- package/dist/cjs/src/cluster/modules/ThroughputCalculator.js.map +1 -0
- package/dist/cjs/src/cluster/modules/WorkerManager.js +14 -15
- package/dist/cjs/src/cluster/modules/WorkerManager.js.map +1 -1
- package/dist/cjs/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
- package/dist/cjs/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
- package/dist/cjs/src/index.js +55 -61
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +281 -0
- package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/index.js +325 -0
- package/dist/cjs/src/middleware/built-in/index.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/sqlInjection.js +335 -0
- package/dist/cjs/src/middleware/built-in/sqlInjection.js.map +1 -0
- package/dist/cjs/src/middleware/safe-json-middleware.js +1 -1
- package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +447 -332
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
- package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
- package/dist/cjs/src/plugins/modules/index.js +9 -3
- package/dist/cjs/src/plugins/modules/index.js.map +1 -1
- package/dist/cjs/src/quick-start.js +0 -4
- package/dist/cjs/src/quick-start.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +94 -412
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +69 -64
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +31 -5
- package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/PerformanceManager.js +1 -1
- package/dist/cjs/src/server/components/fastapi/PerformanceManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/RouteManager.js +0 -82
- package/dist/cjs/src/server/components/fastapi/RouteManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js +206 -0
- package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +3 -28
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +265 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +503 -0
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
- package/dist/cjs/src/server/const/default.js +23 -17
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +500 -0
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -0
- package/dist/cjs/src/server/core/XyprissApp.js +679 -0
- package/dist/cjs/src/server/core/XyprissApp.js.map +1 -0
- package/dist/cjs/src/server/handlers/NotFoundHandler.js +1 -1
- package/dist/cjs/src/server/handlers/NotFoundHandler.js.map +1 -1
- package/dist/cjs/src/server/middleware/MiddlewareManager.js +191 -0
- package/dist/cjs/src/server/middleware/MiddlewareManager.js.map +1 -0
- package/dist/cjs/src/server/routing/Router.js +341 -0
- package/dist/cjs/src/server/routing/Router.js.map +1 -0
- package/dist/cjs/src/server/utils/PortManager.js +1 -0
- package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
- package/dist/cjs/src/server/utils/forceClosePort.js +294 -88
- package/dist/cjs/src/server/utils/forceClosePort.js.map +1 -1
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +10 -0
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +10 -0
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/index.js +11 -72
- package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/esm/mods/security/src/components/fortified-function/index.js +9 -0
- package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -1
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/esm/mods/security/src/core/crypto.js +14 -0
- package/dist/esm/mods/security/src/core/crypto.js.map +1 -1
- package/dist/esm/mods/security/src/index.js +11 -2
- package/dist/esm/mods/security/src/index.js.map +1 -1
- package/dist/esm/shared/logger/Logger.js +374 -29
- package/dist/esm/shared/logger/Logger.js.map +1 -1
- package/dist/esm/src/cluster/bun-cluster-manager.js +91 -1
- package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -1
- package/dist/esm/src/cluster/cluster-manager.js +15 -3
- package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
- package/dist/esm/src/cluster/modules/AutoScaler.js +4 -4
- package/dist/esm/src/cluster/modules/AutoScaler.js.map +1 -1
- package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +2 -2
- package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
- package/dist/esm/src/cluster/modules/EventLoopMonitor.js +268 -0
- package/dist/esm/src/cluster/modules/EventLoopMonitor.js.map +1 -0
- package/dist/esm/src/cluster/modules/GCStatsTracker.js +198 -0
- package/dist/esm/src/cluster/modules/GCStatsTracker.js.map +1 -0
- package/dist/esm/src/cluster/modules/HeapStatsCollector.js +109 -0
- package/dist/esm/src/cluster/modules/HeapStatsCollector.js.map +1 -0
- package/dist/esm/src/cluster/modules/NetworkTracker.js +160 -0
- package/dist/esm/src/cluster/modules/NetworkTracker.js.map +1 -0
- package/dist/esm/src/cluster/modules/ThroughputCalculator.js +184 -0
- package/dist/esm/src/cluster/modules/ThroughputCalculator.js.map +1 -0
- package/dist/esm/src/cluster/modules/WorkerManager.js +14 -14
- package/dist/esm/src/cluster/modules/WorkerManager.js.map +1 -1
- package/dist/esm/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
- package/dist/esm/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
- package/dist/esm/src/index.js +41 -11
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +279 -0
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
- package/dist/esm/src/middleware/built-in/index.js +323 -0
- package/dist/esm/src/middleware/built-in/index.js.map +1 -0
- package/dist/esm/src/middleware/built-in/sqlInjection.js +333 -0
- package/dist/esm/src/middleware/built-in/sqlInjection.js.map +1 -0
- package/dist/esm/src/middleware/safe-json-middleware.js +1 -1
- package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +447 -332
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
- package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
- package/dist/esm/src/plugins/modules/index.js +9 -3
- package/dist/esm/src/plugins/modules/index.js.map +1 -1
- package/dist/esm/src/quick-start.js +0 -4
- package/dist/esm/src/quick-start.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +94 -412
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +70 -61
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +31 -5
- package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/PerformanceManager.js +1 -1
- package/dist/esm/src/server/components/fastapi/PerformanceManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/RouteManager.js +0 -82
- package/dist/esm/src/server/components/fastapi/RouteManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js +204 -0
- package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +2 -27
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +263 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +501 -0
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
- package/dist/esm/src/server/const/default.js +23 -17
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +498 -0
- package/dist/esm/src/server/core/HttpServer.js.map +1 -0
- package/dist/esm/src/server/core/XyprissApp.js +677 -0
- package/dist/esm/src/server/core/XyprissApp.js.map +1 -0
- package/dist/esm/src/server/handlers/NotFoundHandler.js +1 -1
- package/dist/esm/src/server/handlers/NotFoundHandler.js.map +1 -1
- package/dist/esm/src/server/middleware/MiddlewareManager.js +189 -0
- package/dist/esm/src/server/middleware/MiddlewareManager.js.map +1 -0
- package/dist/esm/src/server/routing/Router.js +339 -0
- package/dist/esm/src/server/routing/Router.js.map +1 -0
- package/dist/esm/src/server/utils/PortManager.js +1 -0
- package/dist/esm/src/server/utils/PortManager.js.map +1 -1
- package/dist/esm/src/server/utils/forceClosePort.js +294 -88
- package/dist/esm/src/server/utils/forceClosePort.js.map +1 -1
- package/dist/index.d.ts +3363 -5311
- package/package.json +39 -28
- package/dist/cjs/src/cluster/index.js +0 -361
- package/dist/cjs/src/cluster/index.js.map +0 -1
- package/dist/cjs/src/cluster/modules/ClusterFactory.js +0 -539
- package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +0 -1
- package/dist/cjs/src/cluster/modules/LoadBalancer.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -668
- package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -347
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -204
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js +0 -953
- package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -56
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
- package/dist/esm/src/cluster/index.js +0 -339
- package/dist/esm/src/cluster/index.js.map +0 -1
- package/dist/esm/src/cluster/modules/ClusterFactory.js +0 -511
- package/dist/esm/src/cluster/modules/ClusterFactory.js.map +0 -1
- package/dist/esm/src/cluster/modules/LoadBalancer.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -647
- package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -345
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -202
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js +0 -951
- package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -54
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<img src="https://sdk.nehonix.space/assets/xypriss/mode/transparent/logo.png" alt="XyPriss Logo" width="200" height="200">
|
|
3
3
|
|
|
4
|
-
# XyPriss
|
|
4
|
+
# XyPriss (Beta)
|
|
5
5
|
|
|
6
|
-
A Node.js framework
|
|
6
|
+
A powerful Node.js web framework with built-in security, clustering, and performance optimizations for modern web applications.
|
|
7
7
|
|
|
8
8
|
[](https://badge.fury.io/js/xypriss)
|
|
9
9
|
[](https://www.typescriptlang.org/)
|
|
@@ -14,311 +14,285 @@ A Node.js framework extending Express.js with performance, security, and scalabi
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Overview
|
|
18
18
|
|
|
19
|
-
XyPriss is a Node.js framework that
|
|
19
|
+
XyPriss is a powerful, TypeScript-first, open-source Node.js web framework that enhances your development experience with built-in security middleware, clustering, and performance optimizations. Whether you're building new applications or enhancing existing ones, XyPriss provides the tools you need for scalable, secure web development. Join our community and contribute on GitHub!
|
|
20
20
|
|
|
21
|
-
### Key
|
|
21
|
+
### Key Features
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
- Built-in security modules and
|
|
25
|
-
-
|
|
26
|
-
- Full
|
|
23
|
+
- **Familiar API**: Intuitive syntax for defining routes and middleware that feels natural to Node.js developers.
|
|
24
|
+
- **Built-in Security**: Includes 12+ security middleware modules for common protections like CSRF, XSS, and rate limiting.
|
|
25
|
+
- **Flexible Routing**: Supports parameters, wildcards, and modular routers.
|
|
26
|
+
- **TypeScript Support**: Full type definitions for a better developer experience.
|
|
27
|
+
- **Performance**: Advanced clustering, caching, and performance optimizations built-in.
|
|
27
28
|
|
|
28
|
-
> **
|
|
29
|
+
> **Note**: XyPriss is the successor to FortifyJS, which will be deprecated. Migrate to XyPriss for continued support and new features. [Migration Guide](https://github.com/nehonix/FortifyJS).
|
|
29
30
|
|
|
30
31
|
---
|
|
31
32
|
|
|
32
|
-
##
|
|
33
|
+
## Installation
|
|
34
|
+
|
|
35
|
+
Install XyPriss via npm or yarn:
|
|
33
36
|
|
|
34
37
|
```bash
|
|
35
|
-
# Install XyPriss
|
|
36
38
|
npm install xypriss
|
|
37
|
-
|
|
38
|
-
# Or with yarn
|
|
39
|
+
# or
|
|
39
40
|
yarn add xypriss
|
|
40
41
|
```
|
|
41
42
|
|
|
43
|
+
For additional security features, install the security module:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install xypriss-security
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
Create a basic server with XyPriss:
|
|
54
|
+
|
|
42
55
|
```typescript
|
|
43
56
|
import { createServer } from "xypriss";
|
|
44
57
|
|
|
45
|
-
// Create a server with enhanced features
|
|
46
58
|
const server = createServer({
|
|
47
59
|
server: { port: 3000 },
|
|
48
60
|
security: { enabled: true },
|
|
49
61
|
performance: { clustering: true },
|
|
50
62
|
});
|
|
51
63
|
|
|
52
|
-
// Use it like Express.js
|
|
53
64
|
server.get("/", (req, res) => {
|
|
54
|
-
res.json({
|
|
55
|
-
message: "Hello from XyPriss!",
|
|
56
|
-
powered: "Nehonix",
|
|
57
|
-
});
|
|
65
|
+
res.json({ message: "Hello from XyPriss!", powered: "Nehonix" });
|
|
58
66
|
});
|
|
59
67
|
|
|
60
|
-
|
|
61
|
-
server.
|
|
68
|
+
server.start(() => {
|
|
69
|
+
console.log(`Server running at http://localhost:${server.getPort()}`);
|
|
70
|
+
});
|
|
62
71
|
```
|
|
63
72
|
|
|
64
|
-
|
|
73
|
+
This sets up a server with security middleware and clustering enabled, listening on port 3000.
|
|
74
|
+
|
|
75
|
+
### Works Great With Express
|
|
76
|
+
|
|
77
|
+
XyPriss is designed to complement the Node.js ecosystem, not replace it. You can:
|
|
78
|
+
|
|
79
|
+
- **Use XyPriss standalone** for new projects that need built-in security and clustering
|
|
80
|
+
- **Enhance existing Express apps** by integrating XyPriss security modules
|
|
81
|
+
- **Run both frameworks** side by side for different services
|
|
82
|
+
- **Migrate gradually** by moving specific routes or services to XyPriss
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
// Example: Using XyPriss security with Express
|
|
86
|
+
import express from "express";
|
|
87
|
+
import { XyPrissSecurity } from "xypriss-security";
|
|
88
|
+
|
|
89
|
+
const app = express();
|
|
90
|
+
|
|
91
|
+
// Add XyPriss security to your Express app
|
|
92
|
+
app.use(
|
|
93
|
+
XyPrissSecurity.middleware({
|
|
94
|
+
csrf: true,
|
|
95
|
+
xss: true,
|
|
96
|
+
rateLimit: { windowMs: 15 * 60 * 1000, max: 100 },
|
|
97
|
+
})
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
app.listen(3000);
|
|
101
|
+
```
|
|
65
102
|
|
|
66
103
|
---
|
|
67
104
|
|
|
68
105
|
## Table of Contents
|
|
69
106
|
|
|
70
|
-
- [
|
|
71
|
-
- [Quick Start](#quick-start)
|
|
72
|
-
- [Key Features](#key-features)
|
|
73
|
-
- [Performance and Scalability](#performance-and-scalability)
|
|
74
|
-
- [Security and Reliability](#security-and-reliability)
|
|
75
|
-
- [Developer Experience](#developer-experience)
|
|
76
|
-
- [Network Plugins](#network-plugins)
|
|
107
|
+
- [Overview](#overview)
|
|
77
108
|
- [Installation](#installation)
|
|
78
|
-
- [
|
|
109
|
+
- [Quick Start](#quick-start)
|
|
110
|
+
- [Routing](#routing)
|
|
111
|
+
- [Security](#security)
|
|
112
|
+
- [Performance](#performance)
|
|
79
113
|
- [Configuration](#configuration)
|
|
80
|
-
- [
|
|
81
|
-
- [Documentation](#documentation)
|
|
114
|
+
- [Modules](#modules)
|
|
82
115
|
- [Contributing](#contributing)
|
|
83
116
|
- [License](#license)
|
|
84
117
|
- [Support](#support)
|
|
85
118
|
|
|
86
119
|
---
|
|
87
120
|
|
|
88
|
-
##
|
|
121
|
+
## Routing
|
|
89
122
|
|
|
90
|
-
|
|
123
|
+
XyPriss provides a flexible routing system with support for parameters, wildcards, and modular routers.
|
|
91
124
|
|
|
92
|
-
|
|
93
|
-
- Multi-tier caching system supporting memory, Redis, and hybrid strategies
|
|
94
|
-
- Automatic port detection and switching with configurable port ranges
|
|
95
|
-
- Built-in clustering with automatic scaling based on system load
|
|
96
|
-
- Advanced request management including timeouts and concurrency controls
|
|
125
|
+
### Basic Routes
|
|
97
126
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
- Integration with XyPriss Security module for cryptographic operations
|
|
101
|
-
- Built-in security middleware including Helmet, CORS, rate limiting, and CSRF protection
|
|
102
|
-
- Tamper-evident logging with cryptographic verification
|
|
103
|
-
- Input validation and sanitization utilities
|
|
127
|
+
```typescript
|
|
128
|
+
import { createServer } from "xypriss";
|
|
104
129
|
|
|
105
|
-
|
|
130
|
+
const app = createServer();
|
|
106
131
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- Comprehensive documentation and examples
|
|
132
|
+
app.get("/", (req, res) => {
|
|
133
|
+
res.json({ message: "Welcome to XyPriss" });
|
|
134
|
+
});
|
|
111
135
|
|
|
112
|
-
|
|
136
|
+
app.post("/users", (req, res) => {
|
|
137
|
+
res.json({ message: "User created", data: req.body });
|
|
138
|
+
});
|
|
113
139
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
140
|
+
app.put("/users/:id", (req, res) => {
|
|
141
|
+
res.json({ message: "User updated", id: req.params.id });
|
|
142
|
+
});
|
|
117
143
|
```
|
|
118
144
|
|
|
119
|
-
|
|
145
|
+
### Route Parameters
|
|
120
146
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
147
|
+
Extract dynamic segments from URLs:
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
app.get("/users/:id", (req, res) => {
|
|
151
|
+
res.json({ userId: req.params.id });
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
app.get("/users/:userId/posts/:postId", (req, res) => {
|
|
155
|
+
res.json({ userId: req.params.userId, postId: req.params.postId });
|
|
156
|
+
});
|
|
124
157
|
```
|
|
125
158
|
|
|
126
|
-
|
|
159
|
+
### Wildcard Routes
|
|
127
160
|
|
|
128
|
-
|
|
161
|
+
- **Single Wildcard (`*`)**: Matches one path segment.
|
|
162
|
+
- **Multi-segment Wildcard (`**`)\*\*: Matches multiple path segments.
|
|
129
163
|
|
|
130
164
|
```typescript
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
// Create a new XyPriss server
|
|
134
|
-
const app = createServer({
|
|
135
|
-
server: {
|
|
136
|
-
port: 3000,
|
|
137
|
-
host: "localhost",
|
|
138
|
-
autoPortSwitch: {
|
|
139
|
-
enabled: true,
|
|
140
|
-
portRange: [8086, 3010],
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
cache: {
|
|
144
|
-
strategy: "memory",
|
|
145
|
-
maxSize: 100 * 1024 * 1024, // 100MB
|
|
146
|
-
ttl: 3600, // 1 hour
|
|
147
|
-
},
|
|
165
|
+
app.get("/files/*", (req, res) => {
|
|
166
|
+
res.json({ filename: req.params["*"] }); // e.g., "document.pdf"
|
|
148
167
|
});
|
|
149
168
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
res.json({ message: "Hello from XyPriss!" });
|
|
169
|
+
app.get("/api/**", (req, res) => {
|
|
170
|
+
res.json({ path: req.params["**"] }); // e.g., "v1/users/123"
|
|
153
171
|
});
|
|
172
|
+
```
|
|
154
173
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
174
|
+
### Modular Routers
|
|
175
|
+
|
|
176
|
+
Organize routes with routers:
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
import { createServer, Router } from "xypriss";
|
|
180
|
+
|
|
181
|
+
const app = createServer();
|
|
182
|
+
const userRouter = Router();
|
|
183
|
+
|
|
184
|
+
userRouter.get("/", (req, res) => {
|
|
185
|
+
res.json({ message: "List users" });
|
|
158
186
|
});
|
|
159
187
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
console.log(
|
|
163
|
-
"Secure XyPriss server running at http://localhost:" + app.getPort()
|
|
164
|
-
);
|
|
188
|
+
userRouter.get("/:id", (req, res) => {
|
|
189
|
+
res.json({ message: "Get user", id: req.params.id });
|
|
165
190
|
});
|
|
191
|
+
|
|
192
|
+
app.use("/api/users", userRouter);
|
|
166
193
|
```
|
|
167
194
|
|
|
168
|
-
###
|
|
195
|
+
### Middleware
|
|
169
196
|
|
|
170
|
-
|
|
171
|
-
import { createServer } from "xypriss";
|
|
197
|
+
Apply middleware globally, per route, or per router:
|
|
172
198
|
|
|
173
|
-
|
|
174
|
-
|
|
199
|
+
```typescript
|
|
200
|
+
// Global middleware
|
|
201
|
+
app.use((req, res, next) => {
|
|
202
|
+
console.log(`${req.method} ${req.path}`);
|
|
203
|
+
next();
|
|
204
|
+
});
|
|
175
205
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
},
|
|
206
|
+
// Route-specific middleware
|
|
207
|
+
app.get(
|
|
208
|
+
"/protected",
|
|
209
|
+
(req, res, next) => {
|
|
210
|
+
if (!req.headers.authorization) {
|
|
211
|
+
return res.status(401).json({ error: "Unauthorized" });
|
|
212
|
+
}
|
|
213
|
+
next();
|
|
185
214
|
},
|
|
215
|
+
(req, res) => {
|
|
216
|
+
res.json({ message: "Protected resource" });
|
|
217
|
+
}
|
|
218
|
+
);
|
|
219
|
+
```
|
|
186
220
|
|
|
187
|
-
|
|
188
|
-
strategy: "hybrid", // Memory + Redis
|
|
189
|
-
maxSize: 500 * 1024 * 1024, // 500MB
|
|
190
|
-
ttl: 7200, // 2 hours
|
|
191
|
-
redis: {
|
|
192
|
-
host: "localhost",
|
|
193
|
-
port: 6379,
|
|
194
|
-
cluster: true,
|
|
195
|
-
nodes: [
|
|
196
|
-
{ host: "redis-1", port: 6379 },
|
|
197
|
-
{ host: "redis-2", port: 6379 },
|
|
198
|
-
],
|
|
199
|
-
},
|
|
200
|
-
},
|
|
221
|
+
---
|
|
201
222
|
|
|
202
|
-
|
|
203
|
-
timeout: {
|
|
204
|
-
enabled: true,
|
|
205
|
-
defaultTimeout: 30000, // 30 seconds
|
|
206
|
-
routes: {
|
|
207
|
-
"/api/upload": 300000, // 5 minutes for uploads
|
|
208
|
-
"/api/quick": 5000, // 5 seconds for quick endpoints
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
concurrency: {
|
|
212
|
-
maxConcurrentRequests: 1000,
|
|
213
|
-
maxPerIP: 50,
|
|
214
|
-
},
|
|
215
|
-
},
|
|
223
|
+
## Security
|
|
216
224
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
},
|
|
226
|
-
},
|
|
227
|
-
});
|
|
228
|
-
```
|
|
225
|
+
XyPriss includes 12 built-in security middleware modules to protect your application:
|
|
226
|
+
|
|
227
|
+
- **CSRF Protection**: Via the `csrf-csrf` library.
|
|
228
|
+
- **Security Headers**: Powered by Helmet for secure HTTP headers.
|
|
229
|
+
- **CORS**: Configurable cross-origin resource sharing.
|
|
230
|
+
- **Rate Limiting**: Prevents abuse by limiting requests per IP.
|
|
231
|
+
- **Input Validation**: Sanitizes inputs to prevent XSS and injection attacks.
|
|
232
|
+
- **Request Logging**: Monitors and logs incoming requests.
|
|
229
233
|
|
|
230
|
-
|
|
234
|
+
Enable security features:
|
|
231
235
|
|
|
232
236
|
```typescript
|
|
233
237
|
import { createServer } from "xypriss";
|
|
234
|
-
import { XyPrissSecurity as security, fString, fArray } from "xypriss-security";
|
|
235
238
|
|
|
236
239
|
const server = createServer({
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
+
security: {
|
|
241
|
+
enabled: true,
|
|
242
|
+
csrf: { enabled: true },
|
|
243
|
+
rateLimit: { max: 100, windowMs: 15 * 60 * 1000 }, // 100 requests per 15 minutes
|
|
240
244
|
},
|
|
241
245
|
});
|
|
246
|
+
```
|
|
242
247
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
const securePassword = fString(req.body.password, {
|
|
249
|
-
protectionLevel: "maximum",
|
|
250
|
-
enableEncryption: true,
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
// Generate secure token
|
|
254
|
-
const token = security.generateSecureToken({
|
|
255
|
-
length: 32,
|
|
256
|
-
entropy: "maximum",
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
res.json({
|
|
260
|
-
success: true,
|
|
261
|
-
token,
|
|
262
|
-
dataLength: secureData.length,
|
|
263
|
-
});
|
|
264
|
-
} catch (error) {
|
|
265
|
-
res.status(500).json({ error: "Security operation failed" });
|
|
266
|
-
}
|
|
267
|
-
});
|
|
248
|
+
For advanced security, use the `xypriss-security` module:
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
import { createServer } from "xypriss";
|
|
252
|
+
import { fString, generateSecureToken } from "xypriss-security";
|
|
268
253
|
|
|
269
|
-
server
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
);
|
|
254
|
+
const server = createServer();
|
|
255
|
+
|
|
256
|
+
server.post("/api/secure", async (req, res) => {
|
|
257
|
+
const secureData = fString(req.body.data, { enableEncryption: true });
|
|
258
|
+
const token = generateSecureToken({ length: 32 });
|
|
259
|
+
res.json({ token, data: secureData });
|
|
273
260
|
});
|
|
274
261
|
```
|
|
275
262
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
### Core Framework (`xypriss`)
|
|
263
|
+
---
|
|
279
264
|
|
|
280
|
-
|
|
281
|
-
- Cache Engine: Multi-tier caching system with intelligent invalidation
|
|
282
|
-
- Cluster Manager: Process management and auto-scaling
|
|
283
|
-
- Plugin System: Extensible plugin architecture
|
|
284
|
-
- Request Management: Advanced timeout and concurrency controls
|
|
265
|
+
## Performance
|
|
285
266
|
|
|
286
|
-
|
|
267
|
+
XyPriss is designed for efficiency and scalability:
|
|
287
268
|
|
|
288
|
-
|
|
269
|
+
- **Independent HTTP Server**: No Express dependency, reducing overhead.
|
|
270
|
+
- **Clustering**: Automatic scaling based on CPU cores.
|
|
271
|
+
- **Caching**: Supports memory, Redis, or hybrid caching strategies.
|
|
272
|
+
- **Auto Port Switching**: Detects and switches ports if conflicts arise.
|
|
289
273
|
|
|
290
|
-
|
|
291
|
-
- Cryptographic Functions: Token generation, hashing, key derivation
|
|
292
|
-
- Advanced Security: Post-quantum cryptography, tamper-evident logging
|
|
293
|
-
- Performance: Fortified functions with security monitoring
|
|
274
|
+
Example configuration:
|
|
294
275
|
|
|
295
276
|
```typescript
|
|
296
|
-
import { createServer } from "xypriss";
|
|
297
|
-
import {
|
|
298
|
-
XyPrissSecurity as security, // or just import XyPriss
|
|
299
|
-
fArray,
|
|
300
|
-
fString,
|
|
301
|
-
fObject,
|
|
302
|
-
generateSecureToken,
|
|
303
|
-
} from "xypriss-security";
|
|
304
|
-
|
|
305
|
-
// Use both together
|
|
306
277
|
const server = createServer({
|
|
307
|
-
|
|
278
|
+
server: {
|
|
279
|
+
port: 3000,
|
|
280
|
+
autoPortSwitch: { enabled: true, portRange: [3000, 3100] },
|
|
281
|
+
},
|
|
282
|
+
cache: {
|
|
283
|
+
strategy: "memory",
|
|
284
|
+
maxSize: 100 * 1024 * 1024, // 100MB
|
|
285
|
+
ttl: 3600, // 1 hour
|
|
286
|
+
},
|
|
287
|
+
cluster: { enabled: true, workers: "auto" },
|
|
308
288
|
});
|
|
309
289
|
```
|
|
310
290
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
- [Getting Started Guide](./docs/getting-started.md)
|
|
314
|
-
- [API Reference](./docs/api-reference.md)
|
|
315
|
-
- [Security Guide](./docs/security.md)
|
|
316
|
-
- [Configuration Options](./docs/configuration.md)
|
|
317
|
-
- [Plugin Development](./docs/plugins.md)
|
|
291
|
+
---
|
|
318
292
|
|
|
319
293
|
## Configuration
|
|
320
294
|
|
|
321
|
-
XyPriss
|
|
295
|
+
Customize XyPriss with the `ServerOptions` interface:
|
|
322
296
|
|
|
323
297
|
```typescript
|
|
324
298
|
interface ServerOptions {
|
|
@@ -327,90 +301,94 @@ interface ServerOptions {
|
|
|
327
301
|
port?: number;
|
|
328
302
|
host?: string;
|
|
329
303
|
autoPortSwitch?: {
|
|
330
|
-
enabled
|
|
304
|
+
enabled: boolean;
|
|
331
305
|
portRange?: [number, number];
|
|
332
|
-
strategy?: "increment" | "random"
|
|
306
|
+
strategy?: "increment" | "random";
|
|
333
307
|
};
|
|
334
308
|
};
|
|
335
309
|
cache?: {
|
|
336
|
-
strategy?: "
|
|
310
|
+
strategy?: "memory" | "redis" | "hybrid";
|
|
337
311
|
maxSize?: number;
|
|
338
312
|
ttl?: number;
|
|
339
|
-
redis?:
|
|
313
|
+
redis?: { host: string; port: number; cluster?: boolean };
|
|
314
|
+
};
|
|
315
|
+
security?: {
|
|
316
|
+
enabled?: boolean;
|
|
317
|
+
csrf?: { enabled: boolean };
|
|
318
|
+
rateLimit?: { max: number; windowMs: number };
|
|
319
|
+
};
|
|
320
|
+
cluster?: {
|
|
321
|
+
enabled: boolean;
|
|
322
|
+
workers?: number | "auto";
|
|
340
323
|
};
|
|
341
|
-
requestManagement?: RequestManagementConfig;
|
|
342
|
-
cluster?: ClusterConfig;
|
|
343
|
-
// ... and many more options
|
|
344
324
|
}
|
|
345
325
|
```
|
|
346
326
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
XyPriss is optimized for production use:
|
|
327
|
+
Example:
|
|
350
328
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
329
|
+
```typescript
|
|
330
|
+
const server = createServer({
|
|
331
|
+
env: "production",
|
|
332
|
+
server: { port: 8080, host: "0.0.0.0" },
|
|
333
|
+
cache: { strategy: "redis", redis: { host: "localhost", port: 6379 } },
|
|
334
|
+
});
|
|
335
|
+
```
|
|
356
336
|
|
|
357
|
-
|
|
337
|
+
---
|
|
358
338
|
|
|
359
|
-
|
|
339
|
+
## Modules
|
|
360
340
|
|
|
361
|
-
### ACPES
|
|
341
|
+
### ACPES (Advanced Cross-Platform Encrypted Storage)
|
|
362
342
|
|
|
363
343
|
**Location**: `mods/ACPES/`
|
|
364
344
|
|
|
365
|
-
A secure
|
|
345
|
+
A secure storage solution for web, mobile, and Node.js environments.
|
|
366
346
|
|
|
367
|
-
**Features
|
|
347
|
+
**Features**:
|
|
368
348
|
|
|
369
|
-
-
|
|
370
|
-
-
|
|
371
|
-
-
|
|
372
|
-
-
|
|
373
|
-
- Automatic lockout protection against brute force attacks
|
|
374
|
-
- TTL support for automatic data expiration
|
|
375
|
-
- LZ-string compression for large data
|
|
349
|
+
- AES-256 encryption with PBKDF2 key derivation.
|
|
350
|
+
- HMAC-SHA256 for integrity verification.
|
|
351
|
+
- TTL for automatic data expiration.
|
|
352
|
+
- LZ-string compression for large data.
|
|
376
353
|
|
|
377
|
-
**
|
|
354
|
+
**Usage**:
|
|
378
355
|
|
|
379
356
|
```typescript
|
|
380
357
|
import { Storage, STORAGE_KEYS } from "xypriss-acpes";
|
|
381
|
-
|
|
382
|
-
// Store sensitive data
|
|
383
|
-
await Storage.setItem(STORAGE_KEYS.SESSION_TOKEN, "your-token");
|
|
384
358
|
|
|
385
|
-
|
|
359
|
+
await Storage.setItem(STORAGE_KEYS.SESSION_TOKEN, "secure-token");
|
|
386
360
|
const token = await Storage.getItem(STORAGE_KEYS.SESSION_TOKEN);
|
|
387
361
|
```
|
|
388
362
|
|
|
389
|
-
**
|
|
363
|
+
**Docs**: [ACPES Documentation](./mods/ACPES/docs/)
|
|
390
364
|
|
|
391
365
|
### Security Module
|
|
392
366
|
|
|
393
367
|
**Location**: `mods/security/`
|
|
394
368
|
|
|
395
|
-
|
|
369
|
+
Provides utilities for secure data handling and request protection.
|
|
370
|
+
|
|
371
|
+
**Features**:
|
|
396
372
|
|
|
397
|
-
|
|
373
|
+
- Input sanitization and validation.
|
|
374
|
+
- Cryptographic functions (e.g., secure token generation).
|
|
375
|
+
- Rate limiting and DDoS protection.
|
|
398
376
|
|
|
399
|
-
|
|
400
|
-
- Rate limiting and DDoS protection
|
|
401
|
-
- Security headers management
|
|
402
|
-
- Authentication and authorization utilities
|
|
403
|
-
- Cryptographic functions and secure random generation
|
|
377
|
+
**Docs**: [Security Documentation](./mods/security/docs/)
|
|
404
378
|
|
|
405
|
-
|
|
379
|
+
---
|
|
406
380
|
|
|
407
381
|
## Contributing
|
|
408
382
|
|
|
409
|
-
|
|
383
|
+
We welcome contributions! See the [Contributing Guide](./CONTRIBUTING.md) for details on how to get started.
|
|
384
|
+
|
|
385
|
+
---
|
|
410
386
|
|
|
411
387
|
## License
|
|
412
388
|
|
|
413
|
-
|
|
389
|
+
XyPriss is licensed under the [MIT License](./LICENSE).
|
|
390
|
+
|
|
391
|
+
---
|
|
414
392
|
|
|
415
393
|
## Support
|
|
416
394
|
|
|
@@ -422,7 +400,7 @@ MIT License - see [LICENSE](./LICENSE) file for details.
|
|
|
422
400
|
|
|
423
401
|
### Powered by Nehonix
|
|
424
402
|
|
|
425
|
-
|
|
403
|
+
Developed and maintained by the Nehonix Team.
|
|
426
404
|
|
|
427
405
|
[](https://nehonix.space)
|
|
428
406
|
[](https://github.com/Nehonix-Team)
|
|
@@ -16,6 +16,16 @@ require('../core/random/random-types.js');
|
|
|
16
16
|
require('../core/random/random-sources.js');
|
|
17
17
|
require('nehonix-uri-processor');
|
|
18
18
|
require('../utils/memory/index.js');
|
|
19
|
+
require('helmet');
|
|
20
|
+
require('cors');
|
|
21
|
+
require('express-rate-limit');
|
|
22
|
+
require('csrf-csrf');
|
|
23
|
+
require('express-mongo-sanitize');
|
|
24
|
+
require('xss');
|
|
25
|
+
require('hpp');
|
|
26
|
+
require('compression');
|
|
27
|
+
require('xypriss-security');
|
|
28
|
+
require('../../../../shared/logger/Logger.js');
|
|
19
29
|
require('argon2');
|
|
20
30
|
require('child_process');
|
|
21
31
|
require('../types/secure-memory.js');
|