bxo 0.0.5-dev.11 โ†’ 0.0.5-dev.12

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.
Files changed (2) hide show
  1. package/example.ts +43 -22
  2. package/package.json +1 -1
package/example.ts CHANGED
@@ -1,13 +1,39 @@
1
1
  import BXO, { z } from './index';
2
2
  import { cors, logger, auth, rateLimit, createJWT } from './plugins';
3
3
 
4
+ // Create a simple API plugin that defines its own routes
5
+ function createApiPlugin(): BXO {
6
+ const apiPlugin = new BXO();
7
+
8
+ apiPlugin
9
+ .get('/api/info', async (ctx) => {
10
+ return {
11
+ name: 'BXO API Plugin',
12
+ version: '1.0.0',
13
+ endpoints: ['/api/info', '/api/ping', '/api/time']
14
+ };
15
+ })
16
+ .get('/api/ping', async (ctx) => {
17
+ return { ping: 'pong', timestamp: Date.now() };
18
+ })
19
+ .get('/api/time', async (ctx) => {
20
+ return { time: new Date().toISOString() };
21
+ })
22
+ .post('/api/echo', async (ctx) => {
23
+ return { echo: ctx.body };
24
+ }, {
25
+ body: z.object({
26
+ message: z.string()
27
+ })
28
+ });
29
+
30
+ return apiPlugin;
31
+ }
32
+
4
33
  // Create the app instance
5
34
  const app = new BXO();
6
35
 
7
- // Enable hot reload
8
- app.enableHotReload([process.cwd(), './']); // Watch current directory
9
-
10
- // Add plugins
36
+ // Add plugins (including our new API plugin)
11
37
  app
12
38
  .use(logger({ format: 'simple' }))
13
39
  .use(cors({
@@ -22,8 +48,9 @@ app
22
48
  .use(auth({
23
49
  type: 'jwt',
24
50
  secret: 'your-secret-key',
25
- exclude: ['/', '/login', '/health']
26
- }));
51
+ exclude: ['/', '/login', '/health', '/api/*']
52
+ }))
53
+ .use(createApiPlugin()); // Add our plugin with actual routes
27
54
 
28
55
  // Add simplified lifecycle hooks
29
56
  app
@@ -39,12 +66,6 @@ app
39
66
  .onAfterStop(() => {
40
67
  console.log('โœ… Server fully stopped!');
41
68
  })
42
- .onBeforeRestart(() => {
43
- console.log('๐Ÿ”ง Preparing to restart server...');
44
- })
45
- .onAfterRestart(() => {
46
- console.log('โœ… Server restart completed!');
47
- })
48
69
  .onRequest((ctx) => {
49
70
  console.log(`๐Ÿ“จ Processing ${ctx.request.method} ${ctx.request.url}`);
50
71
  })
@@ -116,13 +137,6 @@ app
116
137
  return { message: 'This is protected', user: ctx.user };
117
138
  })
118
139
 
119
- // Server control endpoints
120
- .post('/restart', async (ctx) => {
121
- // Restart the server
122
- setTimeout(() => app.restart(3000), 100);
123
- return { message: 'Server restart initiated' };
124
- })
125
-
126
140
  .get('/status', async (ctx) => {
127
141
  return {
128
142
  ...app.getServerInfo(),
@@ -162,12 +176,12 @@ console.log(`
162
176
  ๐ŸฆŠ BXO Framework with Hot Reload
163
177
 
164
178
  โœจ Features Enabled:
165
- - ๐Ÿ”„ Hot reload (edit any .ts/.js file to restart)
166
179
  - ๐ŸŽฃ Full lifecycle hooks (before/after pattern)
167
180
  - ๐Ÿ”’ JWT authentication
168
181
  - ๐Ÿ“Š Rate limiting
169
182
  - ๐ŸŒ CORS support
170
183
  - ๐Ÿ“ Request logging
184
+ - ๐Ÿ”Œ API Plugin with routes
171
185
 
172
186
  ๐Ÿงช Try these endpoints:
173
187
  - GET /simple
@@ -177,7 +191,14 @@ console.log(`
177
191
  - POST /login (with JSON body: {"username": "admin", "password": "password"})
178
192
  - GET /protected (requires Bearer token from /login)
179
193
  - GET /status (server statistics)
180
- - POST /restart (restart server programmatically)
194
+
195
+ ๐Ÿ”Œ API Plugin endpoints:
196
+ - GET /api/info (plugin information)
197
+ - GET /api/ping (ping pong)
198
+ - GET /api/time (current time)
199
+ - POST /api/echo (echo message: {"message": "hello"})
181
200
 
182
201
  ๐Ÿ’ก Edit this file and save to see hot reload in action!
183
- `);
202
+ `);
203
+
204
+ console.log(app.routes)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bxo",
3
3
  "module": "index.ts",
4
- "version": "0.0.5-dev.11",
4
+ "version": "0.0.5-dev.12",
5
5
  "description": "A simple and lightweight web framework for Bun",
6
6
  "type": "module",
7
7
  "devDependencies": {