dolphin-server-modules 1.2.0 → 1.3.1
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/DOLPHIN_MASTER_GUIDE_NEPALI.md +27 -0
- package/README.md +28 -8
- package/TUTORIAL_NEPALI.md +17 -1
- package/dist/router/router.d.ts +15 -2
- package/dist/router/router.js +27 -4
- package/dist/router/router.js.map +1 -1
- package/dist/server/server.d.ts +9 -7
- package/dist/server/server.js +8 -1
- package/dist/server/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -562,6 +562,33 @@ const rt = new RealtimeCore({
|
|
|
562
562
|
|
|
563
563
|
---
|
|
564
564
|
|
|
565
|
+
## १५. इन्डिपेन्डेन्ट राउटिङ मास्टरक्लास (Independent Routing) [NEW]
|
|
566
|
+
|
|
567
|
+
तपाईँको प्रोजेक्ट ठूलो हुँदै जाँदा एउटै फाइलमा सबै राउट्हरू राख्नु झन्झटिलो हुन्छ। त्यसैले Dolphin ले एक्सप्रेस जस्तै `Router` सपोर्ट गर्छ।
|
|
568
|
+
|
|
569
|
+
### १५.१ किन प्रयोग गर्ने?
|
|
570
|
+
- **Modular Code**: राउट्हरूलाई काम अनुसार (जस्तै: Users, Products, Auth) अलग फाइलमा राख्न।
|
|
571
|
+
- **Prefixing**: एउटा पूरा राउट सेटलाई एउटा 'Prefix' (जस्तै: `/api/v1`) भित्र राख्न।
|
|
572
|
+
- **Clean index.ts**: मुख्य फाइललाई सफा र छोटो राख्न।
|
|
573
|
+
|
|
574
|
+
### १५.२ कोड उदाहरण
|
|
575
|
+
```typescript
|
|
576
|
+
// userRouters.ts
|
|
577
|
+
import { createDolphinRouter } from 'dolphin-server-modules/router';
|
|
578
|
+
export const userRouter = createDolphinRouter();
|
|
579
|
+
|
|
580
|
+
userRouter.get('/profile', (ctx) => ctx.json({ name: "Ram" }));
|
|
581
|
+
|
|
582
|
+
// main.ts
|
|
583
|
+
import { createDolphinServer } from 'dolphin-server-modules/server';
|
|
584
|
+
import { userRouter } from './userRouters';
|
|
585
|
+
|
|
586
|
+
const app = createDolphinServer();
|
|
587
|
+
app.use('/users', userRouter); // अब यो /users/profile मा चल्छ
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
---
|
|
591
|
+
|
|
565
592
|
## निष्कर्ष (Conclusion)
|
|
566
593
|
|
|
567
594
|
बधाई छ! तपाईँले Dolphin Framework को **Master Guide** को अन्त्य सम्म पढ्नुभयो। अब तपाईँ कुनै पनि जटिल ब्याकइन्ड सिस्टम Dolphin प्रयोग गरेर बनाउन पूर्ण सक्षम हुनुहुन्छ।
|
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
### 📘 Official Master Guide (Nepal)
|
|
10
10
|
Dolphin Framework को विस्तृत र आधिकारिक गाइड अब उपलब्ध छ। यसमा **Auth, CRUD, Models, र Controllers** को १००% ट्युटोरियल समावेश छ।
|
|
11
11
|
|
|
12
|
+
👉 **[Dolphin Master Guide (Markdown)](https://github.com/Phuyalshankar/dolphin-server-modules/blob/main/DOLPHIN_MASTER_GUIDE_NEPALI.md)** *(Most Up-to-Date)*
|
|
12
13
|
👉 **[Dolphin Master Guide (PDF)](https://github.com/Phuyalshankar/dolphin-server-modules/blob/main/DOLPHIN_MASTER_GUIDE_NEPALI.pdf)**
|
|
13
14
|
|
|
14
15
|
---
|
|
@@ -115,19 +116,38 @@ Seamlessly switch between databases with the Adapter pattern.
|
|
|
115
116
|
### ✅ 5. Zod-Powered Validation (`/middleware/zod`)
|
|
116
117
|
Validate payloads and params with 100% type inference.
|
|
117
118
|
|
|
118
|
-
### 🌐 6. Realtime & IoT Core (`/realtime`)
|
|
119
|
-
High-performance pub/sub with MQTT-style matching.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
### 🌐 6. Realtime & IoT Core (`/realtime`)
|
|
120
|
+
High-performance pub/sub with MQTT-style matching and binary codecs.
|
|
121
|
+
```typescript
|
|
122
|
+
import { RealtimeCore } from 'dolphin-server-modules/realtime';
|
|
123
|
+
const rt = new RealtimeCore();
|
|
124
|
+
|
|
125
|
+
rt.subscribe('sensors/+', (ctx) => {
|
|
126
|
+
console.log(`Topic: ${ctx.topic}, Data:`, ctx.payload);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
rt.publish('sensors/temp', { value: 24.5 });
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 🛣️ 7. Independent Routing (`/router`) [NEW]
|
|
133
|
+
Express-style standalone routers for clean organization.
|
|
134
|
+
```typescript
|
|
135
|
+
// authRoutes.ts
|
|
136
|
+
import { createDolphinRouter } from 'dolphin-server-modules/router';
|
|
137
|
+
export const authRouter = createDolphinRouter();
|
|
138
|
+
authRouter.get('/login', (ctx) => ctx.json({ status: 'ok' }));
|
|
139
|
+
|
|
140
|
+
// main.ts
|
|
141
|
+
app.use('/auth', authRouter); // Accessible at /auth/login
|
|
142
|
+
```
|
|
123
143
|
|
|
124
144
|
---
|
|
125
145
|
|
|
126
146
|
## 🗺️ Roadmap & Future Vision
|
|
127
147
|
1. **`defineModel` Engine**: Define a schema once, auto-generate CRUD, validation, and types.
|
|
128
|
-
2. **Plugin System**: A robust "hook" based system
|
|
129
|
-
3. **
|
|
130
|
-
4. **
|
|
148
|
+
2. **Plugin System**: A robust "hook" based system. [DONE]
|
|
149
|
+
3. **Independent Routing**: Standalone sub-routers for large apps. [DONE]
|
|
150
|
+
4. **CLI Presets**: `npx dolphin init` for instant project scaffolding.
|
|
131
151
|
|
|
132
152
|
---
|
|
133
153
|
|
package/TUTORIAL_NEPALI.md
CHANGED
|
@@ -200,7 +200,23 @@ rt.publish('sensors/temp', { value: 24.5 });
|
|
|
200
200
|
|
|
201
201
|
---
|
|
202
202
|
|
|
203
|
-
## १२.
|
|
203
|
+
## १२. इन्डिपेन्डेन्ट राउटिङ (Independent Routing) [NEW]
|
|
204
|
+
ठूला एप्लिकेसनहरूलाई व्यवस्थित गर्न अलग-अलग फाइलमा राउट्हरू राख्न सकिन्छ:
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
// routes.ts
|
|
208
|
+
import { createDolphinRouter } from 'dolphin-server-modules/router';
|
|
209
|
+
export const apiRouter = createDolphinRouter();
|
|
210
|
+
apiRouter.get('/ping', (ctx) => ctx.json({ msg: 'pong' }));
|
|
211
|
+
|
|
212
|
+
// index.ts
|
|
213
|
+
import { apiRouter } from './routes';
|
|
214
|
+
app.use('/api', apiRouter); // Route अब /api/ping मा उपलब्ध छ
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## १३. अन्तिममा (Conclusion)
|
|
204
220
|
|
|
205
221
|
Dolphin Framework निकै छिटो र सजिलो छ। यसले तपाईँको ब्याकइन्ड डेभलपमेन्टको अनुभवलाई नयाँ उचाइमा पुर्याउँछ।
|
|
206
222
|
|
package/dist/router/router.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
type Handler = (ctx: any) => Promise<void> | void;
|
|
1
|
+
export type Handler = (ctx: any) => Promise<void> | void;
|
|
2
|
+
export interface Route {
|
|
3
|
+
method: string;
|
|
4
|
+
path: string;
|
|
5
|
+
handler: Handler;
|
|
6
|
+
regex: RegExp;
|
|
7
|
+
keys: string[];
|
|
8
|
+
}
|
|
2
9
|
export declare function createDolphinRouter(): {
|
|
3
10
|
get: (path: string, handler: Handler) => void;
|
|
4
11
|
post: (path: string, handler: Handler) => void;
|
|
5
12
|
put: (path: string, handler: Handler) => void;
|
|
6
13
|
delete: (path: string, handler: Handler) => void;
|
|
7
14
|
patch: (path: string, handler: Handler) => void;
|
|
15
|
+
all: (path: string, handler: Handler) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Mount a sub-router or middleware.
|
|
18
|
+
* app.use('/auth', authRouter)
|
|
19
|
+
*/
|
|
20
|
+
use: (prefix: string, subRouter: any) => void;
|
|
21
|
+
_routes: Route[];
|
|
8
22
|
match(method: string, url: string): {
|
|
9
23
|
handler: Handler;
|
|
10
24
|
params: Record<string, string>;
|
|
11
25
|
} | null;
|
|
12
26
|
};
|
|
13
|
-
export {};
|
package/dist/router/router.js
CHANGED
|
@@ -4,9 +4,10 @@ exports.createDolphinRouter = createDolphinRouter;
|
|
|
4
4
|
function createDolphinRouter() {
|
|
5
5
|
const routes = [];
|
|
6
6
|
const addRoute = (method, path, handler) => {
|
|
7
|
-
//
|
|
7
|
+
// Normalize path to remove trailing slashes unless it's just /
|
|
8
|
+
const normalizedPath = path === '/' ? '/' : path.replace(/\/$/, '');
|
|
8
9
|
const keys = [];
|
|
9
|
-
const pattern =
|
|
10
|
+
const pattern = normalizedPath
|
|
10
11
|
.replace(/:([^\/]+)/g, (_, key) => {
|
|
11
12
|
keys.push(key);
|
|
12
13
|
return '([^\\/]+)';
|
|
@@ -14,18 +15,39 @@ function createDolphinRouter() {
|
|
|
14
15
|
.replace(/\//g, '\\/');
|
|
15
16
|
routes.push({
|
|
16
17
|
method: method.toUpperCase(),
|
|
17
|
-
path,
|
|
18
|
+
path: normalizedPath,
|
|
18
19
|
handler,
|
|
19
20
|
regex: new RegExp(`^${pattern}$`),
|
|
20
21
|
keys
|
|
21
22
|
});
|
|
22
23
|
};
|
|
23
|
-
|
|
24
|
+
const router = {
|
|
24
25
|
get: (path, handler) => addRoute('GET', path, handler),
|
|
25
26
|
post: (path, handler) => addRoute('POST', path, handler),
|
|
26
27
|
put: (path, handler) => addRoute('PUT', path, handler),
|
|
27
28
|
delete: (path, handler) => addRoute('DELETE', path, handler),
|
|
28
29
|
patch: (path, handler) => addRoute('PATCH', path, handler),
|
|
30
|
+
all: (path, handler) => addRoute('ALL', path, handler),
|
|
31
|
+
/**
|
|
32
|
+
* Mount a sub-router or middleware.
|
|
33
|
+
* app.use('/auth', authRouter)
|
|
34
|
+
*/
|
|
35
|
+
use: (prefix, subRouter) => {
|
|
36
|
+
if (typeof prefix !== 'string') {
|
|
37
|
+
// Fallback for global middleware handling if needed
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const normalizedPrefix = prefix === '/' ? '' : prefix.replace(/\/$/, '');
|
|
41
|
+
// If subRouter is another Dolphin router, merge its routes
|
|
42
|
+
if (subRouter && typeof subRouter.match === 'function' && subRouter._routes) {
|
|
43
|
+
for (const sr of subRouter._routes) {
|
|
44
|
+
const fullPath = normalizedPrefix + (sr.path === '/' ? '' : sr.path);
|
|
45
|
+
addRoute(sr.method, fullPath || '/', sr.handler);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
// Internal getter for route merging
|
|
50
|
+
_routes: routes,
|
|
29
51
|
match(method, url) {
|
|
30
52
|
const path = url.split('?')[0];
|
|
31
53
|
const m = method.toUpperCase();
|
|
@@ -44,5 +66,6 @@ function createDolphinRouter() {
|
|
|
44
66
|
return null;
|
|
45
67
|
}
|
|
46
68
|
};
|
|
69
|
+
return router;
|
|
47
70
|
}
|
|
48
71
|
//# sourceMappingURL=router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../router/router.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../router/router.ts"],"names":[],"mappings":"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"}
|
package/dist/server/server.d.ts
CHANGED
|
@@ -3,16 +3,18 @@ export declare function createDolphinServer(options?: {
|
|
|
3
3
|
port?: number;
|
|
4
4
|
host?: string;
|
|
5
5
|
}): {
|
|
6
|
-
use: (
|
|
6
|
+
use: (prefixOrMw: string | any, mw?: any) => void;
|
|
7
7
|
listen: (port?: number, callback?: () => void) => void;
|
|
8
8
|
close: () => http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
|
|
9
|
-
get: (path: string, handler: (
|
|
10
|
-
post: (path: string, handler: (
|
|
11
|
-
put: (path: string, handler: (
|
|
12
|
-
delete: (path: string, handler: (
|
|
13
|
-
patch: (path: string, handler: (
|
|
9
|
+
get: (path: string, handler: import("../router/router").Handler) => void;
|
|
10
|
+
post: (path: string, handler: import("../router/router").Handler) => void;
|
|
11
|
+
put: (path: string, handler: import("../router/router").Handler) => void;
|
|
12
|
+
delete: (path: string, handler: import("../router/router").Handler) => void;
|
|
13
|
+
patch: (path: string, handler: import("../router/router").Handler) => void;
|
|
14
|
+
all: (path: string, handler: import("../router/router").Handler) => void;
|
|
15
|
+
_routes: import("../router/router").Route[];
|
|
14
16
|
match(method: string, url: string): {
|
|
15
|
-
handler: (
|
|
17
|
+
handler: import("../router/router").Handler;
|
|
16
18
|
params: Record<string, string>;
|
|
17
19
|
} | null;
|
|
18
20
|
};
|
package/dist/server/server.js
CHANGED
|
@@ -77,7 +77,14 @@ function createDolphinServer(options = {}) {
|
|
|
77
77
|
});
|
|
78
78
|
return {
|
|
79
79
|
...router, // Mixin router methods (get, post, etc.)
|
|
80
|
-
use: (mw) =>
|
|
80
|
+
use: (prefixOrMw, mw) => {
|
|
81
|
+
if (typeof prefixOrMw === 'string' && mw && typeof mw.match === 'function') {
|
|
82
|
+
router.use(prefixOrMw, mw);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
middlewares.push(prefixOrMw);
|
|
86
|
+
}
|
|
87
|
+
},
|
|
81
88
|
listen: (port = options.port || 3000, callback) => {
|
|
82
89
|
server.listen(port, options.host || '0.0.0.0', callback);
|
|
83
90
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":";;;;;AAGA,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED