barejs 0.1.45 → 0.1.47

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 CHANGED
@@ -1,60 +1,53 @@
1
-
2
1
  <div align="center">
3
- <br />
4
- <h1>Bare<span style="color: #F7DF1E;">JS</span></h1>
5
- <p><strong>The "Metal" of Web Frameworks</strong></p>
6
- <p><i>An ultra-high-performance web engine built for Bun, architected strictly for Mechanical Sympathy.</i></p>
7
-
8
- <p>
9
- <a href="https://www.npmjs.com/package/barejs">
10
- <img src="https://img.shields.io/npm/v/barejs?style=for-the-badge&logo=npm&color=CB3837" alt="NPM Version">
11
- </a>
12
- <a href="https://github.com/xarhang/barejs/actions/workflows/bench.yml">
13
- <img src="https://img.shields.io/github/actions/workflow/status/xarhang/barejs/bench.yml?branch=main&label=Performance&style=for-the-badge&logo=github" alt="Performance">
14
- </a>
15
- <a href="https://bun.sh">
16
- <img src="https://img.shields.io/badge/Bun-%3E%3D1.0.0-black?style=for-the-badge&logo=bun" alt="Bun Version">
17
- </a>
18
- <a href="https://github.com/xarhang/barejs/blob/main/LICENSE">
19
- <img src="https://img.shields.io/github/license/xarhang/barejs?style=for-the-badge&color=blue" alt="License">
20
- </a>
21
- </p>
22
-
23
- <p align="center">
24
- <a href="#-benchmarks">Benchmarks</a> •
25
- <a href="#-features">Features</a> •
26
- <a href="#-quick-start">Quick Start</a> •
27
- <a href="#-configuration">Configuration</a> •
28
- <a href="#-architecture">Architecture</a>
29
- </p>
30
-
31
- ---
2
+ <br />
3
+ <h1>Bare<span style="color: #F7DF1E;">JS</span></h1>
4
+ <p><strong>The "Metal" of Web Frameworks</strong></p>
5
+ <p><i>An ultra-high-performance web engine built for Bun, architected strictly for Mechanical Sympathy.</i></p>
6
+
7
+ <p>
8
+ <a href="https://www.npmjs.com/package/barejs">
9
+ <img src="https://img.shields.io/npm/v/barejs?style=for-the-badge&logo=npm&color=CB3837" alt="NPM Version">
10
+ </a>
11
+ <a href="https://github.com/xarhang/barejs/actions/workflows/bench.yml">
12
+ <img src="https://img.shields.io/github/actions/workflow/status/xarhang/barejs/bench.yml?branch=main&label=Performance&style=for-the-badge&logo=github" alt="Performance">
13
+ </a>
14
+ <a href="https://bun.sh">
15
+ <img src="https://img.shields.io/badge/Bun-%3E%3D1.0.0-black?style=for-the-badge&logo=bun" alt="Bun Version">
16
+ </a>
17
+ <a href="https://github.com/xarhang/barejs/blob/main/LICENSE">
18
+ <img src="https://img.shields.io/github/license/xarhang/barejs?style=for-the-badge&color=blue" alt="License">
19
+ </a>
20
+ </p>
21
+ </div>
22
+
23
+ ---
24
+
32
25
  </div>
33
26
 
34
27
  ## 📊 Benchmarks: Real-World Performance
35
28
 
36
29
  BareJS leads in complex, real-world scenarios. We measure engine efficiency using a **stress test** involving **10+ middlewares** and **deep radix tree routing** to ensure performance holds under high concurrency.
37
-
38
30
  <!-- MARKER: PERFORMANCE_TABLE_START -->
39
31
 
40
32
  | Framework | Latency | Speed |
41
33
  | :--- | :--- | :--- |
42
- | **BareJS** | **1.57 µs** | **Baseline** |
43
- | Elysia | 2.43 µs | 1.55x slower |
44
- | Hono | 10.63 µs | 6.76x slower |
34
+ | **BareJS** | **1.79 µs** | **Baseline** |
35
+ | Elysia | 2.44 µs | 1.36x slower |
36
+ | Hono | 9.86 µs | 5.52x slower |
45
37
 
46
- > Last Updated: 2026-01-12
38
+ > Last Updated: 2026-01-14 (github action)
47
39
 
48
40
  <!-- MARKER: PERFORMANCE_TABLE_END -->
49
- > [!TIP]
50
- > **View our [Continuous Benchmark Dashboard](https://xarhang.github.io/bareJS/dev/benchmarks/)** for historical data and detailed performance trends across different hardware.
51
41
 
42
+ > [!TIP]
43
+ > **View our [Continuous Benchmark Dashboard**](https://xarhang.github.io/bareJS/dev/benchmarks/) for historical data and detailed performance trends.
52
44
 
53
45
  ## 🚀 Key Features
54
46
 
55
47
  * **JIT Pipeline Compilation**: Routes and middleware chains are flattened into a single function at runtime.
56
48
  * **Object Pooling**: Recycles `Context` objects via a circular buffer, drastically reducing GC pressure.
57
- * **Secure by Default**: Built-in **Argon2id (64MB)** hashing for maximum production security.
49
+ * **Internal High-Performance Logger**: Zero-overhead logging integrated directly into the JIT engine.
50
+ * **Precise Radix Router**: v0.1.46 introduces optimized segment matching for deep-nested paths.
58
51
  * **Mechanical Sympathy**: Intentionally designed to align with V8's optimization and Bun's I/O.
59
52
 
60
53
  ## 🛠️ Installation
@@ -70,7 +63,12 @@ bun add barejs
70
63
  import { BareJS, type Context } from 'barejs';
71
64
 
72
65
  const app = new BareJS();
66
+
67
+ // Enable Internal Logger
68
+ app.useLog(true);
69
+
73
70
  app.get('/', (ctx: Context) => ctx.json({ hello: "world" }));
71
+
74
72
  app.listen(3000);
75
73
 
76
74
  ```
@@ -79,9 +77,23 @@ app.listen(3000);
79
77
 
80
78
  ## 📘 Comprehensive Guide
81
79
 
82
- ### 1. 🛡️ Security & Authentication (Dual-API)
80
+ ### 1. Standardized Response & Chaining
83
81
 
84
- BareJS provides high-level security utilities. You can use `Hash` or `Password` interchangeably for semantic clarity.
82
+ BareJS v0.1.46 provides a fluent API for building responses.
83
+
84
+ ```typescript
85
+ app.get('/api/v1/health', (ctx: Context) => {
86
+ // Chainable status and standardized send helper
87
+ return ctx.status(200).send("System is healthy", {
88
+ uptime: process.uptime()
89
+ });
90
+ });
91
+
92
+ // Output: { "status": "success", "msg": "System is healthy", "uptime": ... }
93
+
94
+ ```
95
+
96
+ ### 2. 🛡️ Security & Authentication (Dual-API)
85
97
 
86
98
  ```typescript
87
99
  import { bareAuth, createToken, Password, Hash, type Context } from 'barejs';
@@ -103,37 +115,23 @@ app.post('/register', async (ctx: Context) => {
103
115
  }
104
116
  });
105
117
 
106
- // Protect routes
118
+ // Protect routes with built-in JWT middleware
107
119
  app.get('/me', bareAuth(SECRET), (ctx: Context) => {
108
- return { user: ctx.get('user') };
120
+ return ctx.send("Authenticated", { user: ctx.get('user') });
109
121
  });
110
122
 
111
123
  ```
112
124
 
113
- ### 2. ⚙️ Configuration
114
-
115
- Customize your engine by creating a `bare.config.ts` in your root directory.
116
-
117
- ```typescript
118
- // bare.config.ts
119
- export default {
120
- port: 3000,
121
- hash: {
122
- algorithm: "argon2id",
123
- memoryCost: 65536, // 64MB
124
- timeCost: 2
125
- }
126
- };
127
-
128
- ```
129
-
130
125
  ### 3. ✅ Data Validation (3 Styles)
131
126
 
127
+ BareJS is the only engine that offers JIT-optimized validation paths.
128
+
132
129
  ```typescript
133
130
  import { typebox, zod, native, t, type Context } from 'barejs';
134
131
  import { z } from 'zod';
135
132
 
136
133
  // Style A: TypeBox (JIT Optimized - Recommended)
134
+ // Pre-compiled validation to outperform competitors by 55%
137
135
  const Schema = t.Object({ name: t.String() });
138
136
  app.post('/user', typebox(Schema), (ctx) => ctx.json(ctx.body));
139
137
 
@@ -141,14 +139,16 @@ app.post('/user', typebox(Schema), (ctx) => ctx.json(ctx.body));
141
139
  const ZodSchema = z.object({ age: z.number() });
142
140
  app.post('/age', zod(ZodSchema), (ctx) => ctx.json(ctx.body));
143
141
 
142
+ // Style C: Native (Zero Dependency - Simple Checks)
143
+ app.post('/native', native({ properties: { id: { type: 'number' } } }), (ctx) => ctx.json(ctx.body));
144
+
144
145
  ```
145
146
 
146
- ### 4. 🔌 Essential Plugins
147
+ ### 4. 🔌 Essential Middleware
147
148
 
148
149
  ```typescript
149
- import { logger, cors, staticFile } from 'barejs';
150
+ import { cors, staticFile } from 'barejs';
150
151
 
151
- app.use(logger);
152
152
  app.use(cors());
153
153
  app.use(staticFile("public"));
154
154
 
@@ -162,9 +162,12 @@ app.use(staticFile("public"));
162
162
  | --- | --- |
163
163
  | `ctx.req` | Raw incoming Bun `Request` object. |
164
164
  | `ctx.params` | Route parameters (e.g., `:id`). |
165
- | `ctx.jsonBody()` | **[Async]** Parses and caches JSON body. |
166
- | `ctx.status(code)` | Sets the HTTP status code. |
167
- | `ctx.json(data)` | Returns an optimized JSON response. |
165
+ | `ctx.jsonBody()` | **[Async]** Parses and caches JSON body for performance. |
166
+ | `ctx.status(code)` | Sets the HTTP status code (**Chainable**). |
167
+ | `ctx.send(msg, ext)` | Returns a standardized JSON response. |
168
+ | `ctx.json(data)` | Returns an optimized raw JSON response. |
169
+ | `ctx.setHeader(k, v)` | Sets a response header. |
170
+ | `ctx.set / ctx.get` | Manual storage within the request lifecycle. |
168
171
 
169
172
  ---
170
173
 
@@ -172,8 +175,10 @@ app.use(staticFile("public"));
172
175
 
173
176
  | OS Variable / File | Default | Description |
174
177
  | --- | --- | --- |
175
- | `bare.config.ts` | - | Centralized config for Port and Hash. |
176
- | `BARE_POOL_SIZE` | `1024` | Context pool size (Must be Power of 2). |
177
- | `NODE_ENV` | `development` | Set to `production` for peak JIT speed. |
178
+ | `bare.config.ts` | - | Centralized config for Port and Hash algorithms. |
179
+ | `BARE_POOL_SIZE` | `1024` | Context pool size (**Must be Power of 2**). |
180
+ | `NODE_ENV` | `development` | Set to `production` to enable peak JIT optimizations. |
181
+
182
+ ---
178
183
 
179
- **Maintained by [xarhang](https://github.com/xarhang) | License: MIT**
184
+ **Maintained by [xarhang](https://github.com/xarhang) | License: MIT**