dolphin-server-modules 1.0.6 → 1.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/DOLPHIN_MASTER_GUIDE_NEPALI.md +502 -0
- package/TUTORIAL_NEPALI.md +191 -0
- package/dist/curd/crud.d.ts +7 -0
- package/dist/curd/crud.js +50 -0
- package/dist/curd/crud.js.map +1 -1
- package/package.json +9 -1
- package/TUTORIAL.md +0 -121
- package/adapters/mongoose/index.ts +0 -142
- package/auth/auth.ts +0 -685
- package/controller/controller.ts +0 -248
- package/curd/crud.ts +0 -267
- package/index.ts +0 -15
- package/middleware/zod.ts +0 -73
- package/router/router.ts +0 -59
- package/scripts/benchmark.js +0 -12
- package/scripts/benchmark.ts +0 -12
- package/scripts/test-dolphin.js +0 -36
- package/server/server.ts +0 -82
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Dolphin Framework: 0 to 100% Full Tutorial (Nepali) 🐬
|
|
2
|
+
|
|
3
|
+
Dolphin Framework मा तपाईँलाई स्वागत छ! यो गाइडमा हामी Dolphin प्रयोग गरेर एउटा शक्तिशाली, छिटो र आधुनिक API कसरी बनाउने भनेर सुरुदेखि अन्त्यसम्म सिक्नेछौँ।
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## १. Dolphin के हो? (Introduction)
|
|
8
|
+
|
|
9
|
+
**Dolphin** एउटा "Zero-Dependency" ब्याकइन्ड फ्रेमवर्क हो। यो Node.js को नेटिभ `http` मोड्युलमा बनेको छ, जसले गर्दा यसको स्पिड एकदमै धेरै छ।
|
|
10
|
+
|
|
11
|
+
**मुख्य विशेषताहरू:**
|
|
12
|
+
- **Zero-Dependency Core**: बाहिरी भारी लाइब्रेरीहरू प्रयोग नगरी नेटिभ Node.js मा आधारित।
|
|
13
|
+
- **Ultra-Fast**: एक्सप्रेस (Express) भन्दा धेरै गुणा छिटो।
|
|
14
|
+
- **100% Modular**: तपाईँलाई जे चाहिन्छ, त्यही मात्र प्रयोग गर्न सकिन्छ (Auth, CRUD, Routing सबै छुट्टाछुट्टै छन्)।
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## २. सुरुवाती सेटअप (Project Setup)
|
|
19
|
+
|
|
20
|
+
सबैभन्दा पहिले एउटा नयाँ फोल्डर बनाउनुहोस् र प्रोजेक्ट सुरु गर्नुहोस्:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# १. फोल्डर बनाउनुहोस् र भित्र जानुहोस्
|
|
24
|
+
mkdir my-dolphin-app && cd my-dolphin-app
|
|
25
|
+
|
|
26
|
+
# २. npm प्रोजेक्ट सुरु गर्नुहोस्
|
|
27
|
+
npm init -y
|
|
28
|
+
|
|
29
|
+
# ३. आवश्यक प्याकेजहरू इन्स्टल गर्नुहोस्
|
|
30
|
+
npm install dolphin-server-modules mongoose zod
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## ३. पहिलो सर्भर (Hello World)
|
|
36
|
+
|
|
37
|
+
अब `index.ts` (वा `index.js`) फाइल बनाउनुहोस् र यो कोड राख्नुहोस्:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { createDolphinServer } from 'dolphin-server-modules/server';
|
|
41
|
+
|
|
42
|
+
const app = createDolphinServer();
|
|
43
|
+
|
|
44
|
+
// एउटा सामान्य गेट (GET) रूट
|
|
45
|
+
app.get('/', (ctx) => {
|
|
46
|
+
ctx.json({ message: "Dolphin को संसारमा स्वागत छ! 🐬" });
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// सर्भर सुन्न (Listen) सुरु गर्नुहोस्
|
|
50
|
+
app.listen(3000, () => {
|
|
51
|
+
console.log("सर्भर http://localhost:3000 मा चलिरहेको छ!");
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
तपाईँको सर्भर अब तयार भयो! `npx ts-node index.ts` चलाएर चेक गर्न सक्नुहुन्छ।
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## ४. Context (ctx) बुझ्ने
|
|
60
|
+
|
|
61
|
+
Dolphin मा हामी `req` र `res` को सट्टा `ctx` (Context) प्रयोग गर्छौँ। यसले कोडलाई सफा बनाउँछ।
|
|
62
|
+
|
|
63
|
+
- `ctx.req`: नेटिभ रिक्वेस्ट अब्जेक्ट।
|
|
64
|
+
- `ctx.json(data)`: JSON रेस्पोन्स पठाउन।
|
|
65
|
+
- `ctx.body`: पोस्ट (POST) फाइल वा डाटाहरु।
|
|
66
|
+
- `ctx.params`: URL बाट आउने प्यारामिटरहरू (जस्तै: `/users/:id`)।
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## ५. राउटिङ र डाइनामिक प्यारामिटर (Routing)
|
|
71
|
+
|
|
72
|
+
Dolphin को राउटिङ एकदमै शक्तिशाली छ।
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// १. डाइनामिक आईडी लिने
|
|
76
|
+
app.get('/users/:id', (ctx) => {
|
|
77
|
+
const userId = ctx.params.id;
|
|
78
|
+
ctx.json({ id: userId, name: "Nepal User" });
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// २. पोस्ट रिक्वेस्ट (Data पठाउन)
|
|
82
|
+
app.post('/create', (ctx) => {
|
|
83
|
+
const data = ctx.body;
|
|
84
|
+
ctx.json({ status: "Received", payload: data });
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## ६. मिडलवेयर (Middleware)
|
|
91
|
+
|
|
92
|
+
मिडलवेयरले रिक्वेस्टलाई चेक वा मोडिफाइ गर्छ। Dolphin ले "Native Style" र "Express Style" दुवै सपोर्ट गर्छ।
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
// Dolphin Style Middleware
|
|
96
|
+
app.use((ctx, next) => {
|
|
97
|
+
console.log(`${ctx.req.method} अनुरोध आयो: ${ctx.req.url}`);
|
|
98
|
+
next(); // अर्को स्टेपमा जानको लागि अनिवार्य छ
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Express Style (जस्तै: CORS)
|
|
102
|
+
import cors from 'cors';
|
|
103
|
+
app.use(cors()); // सिधै काम गर्छ!
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## ७. डेटाबेस सेटअप (Mongoose Adapter)
|
|
109
|
+
|
|
110
|
+
Dolphin ले Mongoose सँग सजिलै काम गर्छ।
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import mongoose from 'mongoose';
|
|
114
|
+
import { createMongooseAdapter } from 'dolphin-server-modules/adapters/mongoose';
|
|
115
|
+
|
|
116
|
+
// १. स्किमा (Schema) बनाउनुहोस्
|
|
117
|
+
const UserSchema = new mongoose.Schema({
|
|
118
|
+
email: { type: String, required: true, unique: true },
|
|
119
|
+
password: { type: String, required: true }
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
const User = mongoose.model('User', UserSchema);
|
|
123
|
+
|
|
124
|
+
// २. अड्याप्टर (Adapter) सेटअप गर्नुहोस्
|
|
125
|
+
const db = createMongooseAdapter({ User });
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## ८. अथेन्टिकेसन (Auth Module)
|
|
131
|
+
|
|
132
|
+
सुरक्षित API को लागि Dolphin भित्रै `auth` मोड्युल छ।
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import { createAuth } from 'dolphin-server-modules/auth';
|
|
136
|
+
|
|
137
|
+
const auth = createAuth({ secret: 'MY_SECRET_KEY' });
|
|
138
|
+
|
|
139
|
+
// कुनै रूटलाई सुरक्षित बनाउन
|
|
140
|
+
app.get('/profile', auth.middleware(), (ctx) => {
|
|
141
|
+
// यहाँ पुगेको युजर भेरिफाई भइसकेको हुन्छ
|
|
142
|
+
ctx.json({ user: ctx.req.user });
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## ९. अटोमेटेड CRUD (Automated API)
|
|
149
|
+
|
|
150
|
+
Dolphin को सबैभन्दा राम्रो कुरा भनेको अटोमेटिक CRUD हो। तपाईँलाई कोड लेखिरहनु पर्दैन।
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
// सबै युजरको CRUD अपरेसन अटोमेटिक बनाउनुहोस्
|
|
154
|
+
app.get('/api/users', async (ctx) => {
|
|
155
|
+
const users = await db.User.find();
|
|
156
|
+
ctx.json(users);
|
|
157
|
+
});
|
|
158
|
+
// वा Dolphin को CRUD कन्ट्रोलर प्रयोग गर्नुहोस्
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## १०. भ्यालिडेसन (Zod Validation)
|
|
164
|
+
|
|
165
|
+
युजरले पठाएको डाटाहरू चेक गर्न Zod प्रयोग गर्नुहोस्।
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
import { z } from 'zod';
|
|
169
|
+
import { validate } from 'dolphin-server-modules/middleware/zod';
|
|
170
|
+
|
|
171
|
+
const registerSchema = z.object({
|
|
172
|
+
email: z.string().email(),
|
|
173
|
+
password: z.string().min(6)
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
app.post('/register', validate(registerSchema), (ctx) => {
|
|
177
|
+
ctx.json({ message: "Valid Data!" });
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## ११. अन्तिममा (Conclusion)
|
|
184
|
+
|
|
185
|
+
Dolphin Framework निकै छिटो र सजिलो छ। यसले तपाईँको ब्याकइन्ड डेभलपमेन्टको अनुभवलाई नयाँ उचाइमा पुर्याउँछ।
|
|
186
|
+
|
|
187
|
+
**थप जानकारीको लागि:**
|
|
188
|
+
- [Official Documentation](https://github.com/Phuyalshankar/dolphin-server-modules)
|
|
189
|
+
- माथिका सबै स्टेपहरू मिलाएर एउटा `app.ts` फाइल बनाउनुहोस् र रन गर्नुहोस्!
|
|
190
|
+
|
|
191
|
+
**Happy Coding in Nepali! 🇳🇵🐬**
|
package/dist/curd/crud.d.ts
CHANGED
|
@@ -69,3 +69,10 @@ export declare function createCRUD<T extends BaseDocument = BaseDocument>(db: Da
|
|
|
69
69
|
hasPrev: boolean;
|
|
70
70
|
}>;
|
|
71
71
|
};
|
|
72
|
+
export declare function createCrudController<T extends BaseDocument = BaseDocument>(modelInfoOrAdapter: any, collectionName?: string): {
|
|
73
|
+
getAll: (ctx: any) => Promise<void>;
|
|
74
|
+
getOne: (ctx: any) => Promise<any>;
|
|
75
|
+
create: (ctx: any) => Promise<void>;
|
|
76
|
+
update: (ctx: any) => Promise<any>;
|
|
77
|
+
delete: (ctx: any) => Promise<any>;
|
|
78
|
+
};
|
package/dist/curd/crud.js
CHANGED
|
@@ -6,6 +6,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
};
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.createCRUD = createCRUD;
|
|
9
|
+
exports.createCrudController = createCrudController;
|
|
9
10
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
10
11
|
// ===== CRUD Factory =====
|
|
11
12
|
function createCRUD(db, options = {}) {
|
|
@@ -214,4 +215,53 @@ function createCRUD(db, options = {}) {
|
|
|
214
215
|
}
|
|
215
216
|
};
|
|
216
217
|
}
|
|
218
|
+
// ===== CRUD Controller (Handler Wrapper) =====
|
|
219
|
+
function createCrudController(modelInfoOrAdapter, collectionName) {
|
|
220
|
+
let adapter;
|
|
221
|
+
let collection;
|
|
222
|
+
if (collectionName) {
|
|
223
|
+
adapter = modelInfoOrAdapter;
|
|
224
|
+
collection = collectionName;
|
|
225
|
+
}
|
|
226
|
+
else if (modelInfoOrAdapter && modelInfoOrAdapter.adapter && modelInfoOrAdapter.collection) {
|
|
227
|
+
adapter = modelInfoOrAdapter.adapter;
|
|
228
|
+
collection = modelInfoOrAdapter.collection;
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
throw new Error('Invalid arguments to createCrudController. Expected (adapter, collection) or ({ adapter, collection })');
|
|
232
|
+
}
|
|
233
|
+
const service = createCRUD(adapter);
|
|
234
|
+
return {
|
|
235
|
+
getAll: async (ctx) => {
|
|
236
|
+
const { limit, offset, ...filters } = ctx.query;
|
|
237
|
+
const results = await service.read(collection, filters, {
|
|
238
|
+
limit: limit ? parseInt(limit) : undefined,
|
|
239
|
+
offset: offset ? parseInt(offset) : undefined
|
|
240
|
+
}, ctx.req.user?.id);
|
|
241
|
+
ctx.json(results);
|
|
242
|
+
},
|
|
243
|
+
getOne: async (ctx) => {
|
|
244
|
+
const result = await service.readOne(collection, ctx.params.id, ctx.req.user?.id);
|
|
245
|
+
if (!result)
|
|
246
|
+
return ctx.status(404).json({ error: 'Not Found' });
|
|
247
|
+
ctx.json(result);
|
|
248
|
+
},
|
|
249
|
+
create: async (ctx) => {
|
|
250
|
+
const result = await service.create(collection, ctx.body, ctx.req.user?.id);
|
|
251
|
+
ctx.status(201).json(result);
|
|
252
|
+
},
|
|
253
|
+
update: async (ctx) => {
|
|
254
|
+
const result = await service.updateOne(collection, ctx.params.id, ctx.body, ctx.req.user?.id);
|
|
255
|
+
if (!result)
|
|
256
|
+
return ctx.status(404).json({ error: 'Not Found' });
|
|
257
|
+
ctx.json(result);
|
|
258
|
+
},
|
|
259
|
+
delete: async (ctx) => {
|
|
260
|
+
const result = await service.deleteOne(collection, ctx.params.id, ctx.req.user?.id);
|
|
261
|
+
if (!result)
|
|
262
|
+
return ctx.status(404).json({ error: 'Not Found' });
|
|
263
|
+
ctx.json({ success: true, deleted: result });
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
}
|
|
217
267
|
//# sourceMappingURL=crud.js.map
|
package/dist/curd/crud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../curd/crud.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../curd/crud.ts"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,4CAA4C;;;;;AA8C5C,gCA2NC;AAGD,oDAoDC;AA9TD,8DAAiC;AA2CjC,2BAA2B;AAC3B,SAAgB,UAAU,CACxB,EAAmB,EACnB,UAAuF,EAAE;IAEzF,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,YAAY,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAEpF,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,qBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,cAAc,GAAG,CAAyB,KAAqB,EAAE,MAAe,EAAkB,EAAE;QACxG,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC/C,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;IAC/C,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAyB,IAAS,EAAE,MAAsB,EAAW,EAAE;QACzF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,GAAQ,EAAE,IAAS,EAAW,EAAE;YAC1D,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,GAAG,KAAK,SAAS,CAAC;YACjD,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,GAAG,KAAK,IAAI,CAAC;YAClD,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;YAC3C,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;YAC3C,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACzC,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;YAC5C,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACzC,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;YAC5C,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5E,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChF,IAAI,OAAO,IAAI,IAAI;gBAAE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAS,MAAc,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC1F,CAAC;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAG,IAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;YACxD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAU,EAAO,EAAE;QAC1C,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,IAAwC,EAAE,EAAE;QACzE,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAI,CAAS,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAI,CAAS,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,IAAI,KAAK,IAAI;oBAAE,SAAS;gBAC5B,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,IAAgB,EAAE,MAAe;YAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG;gBACV,EAAE,EAAE,UAAU,EAAE;gBAChB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzB,GAAG,IAAI;aACH,CAAC;YACP,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,KAAwB,EAAE,MAAe;YAC5E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9B,EAAE,EAAE,UAAU,EAAE;gBAChB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzB,GAAG,IAAI;aACR,CAAC,CAAQ,CAAC;YAEX,MAAM,OAAO,GAAQ,EAAE,CAAC;YACxB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,EAAU,EAAE,MAAe;YAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,IAAI,CACR,UAAkB,EAClB,SAAyB,EAAE,EAC3B,UAA6B,EAAE,EAC/B,MAAe;YAEf,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,KAAK,GAAQ,EAAE,CAAC;YAEpB,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;gBACpB,KAAK,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC1C,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,OAAO,CAAC,IAAI;gBAAE,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;gBAClC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,EAAU,EAAE,IAAgB,EAAE,MAAe;YAC/E,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEtC,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACpE,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAChD,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAO,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,MAAsB,EAAE,IAAgB,EAAE,MAAe;YAC5F,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,EAAU,EAAE,MAAe;YAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEtC,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAC7E,OAAO,OAAO,CAAC,CAAC,CAAM,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACpC,OAAO,OAAO,CAAC,CAAC,CAAM,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,MAAsB,EAAE,MAAe;YAC1E,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAElE,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,EAAU,EAAE,MAAe;YAC3D,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEtC,qDAAqD;YACrD,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3F,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,UAAkB,EAAE,SAAyB,EAAE,EAAE,MAAe;YAC1E,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7E,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,MAAsB,EAAE,MAAe;YACtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3D,OAAO,KAAK,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,QAAQ,CACZ,UAAkB,EAClB,SAAyB,EAAE,EAC3B,OAAe,CAAC,EAChB,QAAgB,YAAY,EAC5B,MAAe;YAEf,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAE3D,OAAO;gBACL,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACpC,OAAO,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK;gBAC7B,OAAO,EAAE,IAAI,GAAG,CAAC;aAClB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,SAAgB,oBAAoB,CAClC,kBAAuB,EACvB,cAAuB;IAEvB,IAAI,OAAwB,CAAC;IAC7B,IAAI,UAAkB,CAAC;IAEvB,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,GAAG,kBAAkB,CAAC;QAC7B,UAAU,GAAG,cAAc,CAAC;IAC9B,CAAC;SAAM,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC;QAC7F,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;QACrC,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC,CAAC;IAC5H,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAI,OAAO,CAAC,CAAC;IAEvC,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACzB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;gBACtD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;aAC9C,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClF,IAAI,CAAC,MAAM;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,MAAM;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,MAAM;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dolphin-server-modules",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Core utility modules for Auth, CRUD, and Controllers",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"README.md",
|
|
10
|
+
"LICENSE",
|
|
11
|
+
"TUTORIAL_NEPALI.md",
|
|
12
|
+
"DOLPHIN_MASTER_GUIDE_NEPALI.md"
|
|
13
|
+
],
|
|
7
14
|
"exports": {
|
|
8
15
|
".": "./dist/index.js",
|
|
9
16
|
"./auth": "./dist/auth/auth.js",
|
|
10
17
|
"./controller": "./dist/controller/controller.js",
|
|
11
18
|
"./crud": "./dist/curd/crud.js",
|
|
19
|
+
"./curd": "./dist/curd/crud.js",
|
|
12
20
|
"./middleware/zod": "./dist/middleware/zod.js",
|
|
13
21
|
"./adapters/mongoose": "./dist/adapters/mongoose/index.js",
|
|
14
22
|
"./server": "./dist/server/server.js",
|
package/TUTORIAL.md
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# Dolphin Framework Tutorial 🐬
|
|
2
|
-
|
|
3
|
-
Welcome to the official tutorial for the **Dolphin Framework**. This guide will take you from zero to a production-ready API using our native, high-performance modules.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 1. Project Setup
|
|
8
|
-
Create a new directory and initialize your project:
|
|
9
|
-
```bash
|
|
10
|
-
mkdir my-dolphin-app && cd my-dolphin-app
|
|
11
|
-
npm init -y
|
|
12
|
-
npm install dolphin-server-modules mongoose zod
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 2. Database Setup (Mongoose)
|
|
18
|
-
Define your models using Mongoose:
|
|
19
|
-
```typescript
|
|
20
|
-
// models.ts
|
|
21
|
-
import mongoose from 'mongoose';
|
|
22
|
-
|
|
23
|
-
const UserSchema = new mongoose.Schema({
|
|
24
|
-
email: { type: String, required: true, unique: true },
|
|
25
|
-
password: { type: String, required: true }
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
export const User = mongoose.model('User', UserSchema);
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## 3. Initialize Dolphin
|
|
34
|
-
Create your main entry point and connect the components:
|
|
35
|
-
```typescript
|
|
36
|
-
// index.ts
|
|
37
|
-
import { createDolphinServer } from 'dolphin-server-modules/server';
|
|
38
|
-
import { createMongooseAdapter } from 'dolphin-server-modules/adapters/mongoose';
|
|
39
|
-
import { createAuth } from 'dolphin-server-modules/auth';
|
|
40
|
-
import { User } from './models';
|
|
41
|
-
|
|
42
|
-
// 1. Setup Adapter
|
|
43
|
-
const db = createMongooseAdapter({ User });
|
|
44
|
-
|
|
45
|
-
// 2. Setup Auth
|
|
46
|
-
const auth = createAuth({ secret: 'SUPER_SECRET' });
|
|
47
|
-
|
|
48
|
-
// 3. Setup Server
|
|
49
|
-
const app = createDolphinServer();
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## 4. Routing with Context (ctx)
|
|
55
|
-
Dolphin uses a unified `ctx` object for ultra-clean handlers.
|
|
56
|
-
|
|
57
|
-
```typescript
|
|
58
|
-
// Simple Route
|
|
59
|
-
app.get('/', (ctx) => {
|
|
60
|
-
ctx.json({ message: "Welcome to Dolphin!" });
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
// Dynamic Route with Params
|
|
64
|
-
app.get('/users/:id', (ctx) => {
|
|
65
|
-
const { id } = ctx.params;
|
|
66
|
-
ctx.json({ userId: id });
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// Post Request with Body
|
|
70
|
-
app.post('/echo', (ctx) => {
|
|
71
|
-
ctx.json({ youSent: ctx.body });
|
|
72
|
-
});
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## 5. Adding Authentication Middleware
|
|
78
|
-
Secure your routes with the `auth` module:
|
|
79
|
-
|
|
80
|
-
```typescript
|
|
81
|
-
// Protecting a route
|
|
82
|
-
app.get('/profile', auth.middleware(), (ctx) => {
|
|
83
|
-
// ctx.req.user is automatically populated
|
|
84
|
-
ctx.json({ user: ctx.req.user });
|
|
85
|
-
});
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## 6. Global Middleware (Universal Support)
|
|
91
|
-
Dolphin is unique because it supports both native Context-based and standard Express-based middlewares.
|
|
92
|
-
|
|
93
|
-
```typescript
|
|
94
|
-
// 1. Dolphin Context Style
|
|
95
|
-
app.use((ctx, next) => {
|
|
96
|
-
console.log(`${ctx.req.method} ${ctx.req.url}`);
|
|
97
|
-
next();
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
// 2. Standard Express Style (CORS, Helmet, etc.)
|
|
101
|
-
import cors from 'cors';
|
|
102
|
-
app.use(cors()); // No wrapper needed!
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## 7. Starting the Server
|
|
108
|
-
```typescript
|
|
109
|
-
app.listen(3000, () => {
|
|
110
|
-
console.log("Dolphin is swimming on http://localhost:3000 🐬");
|
|
111
|
-
});
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## 🚀 Performance Tips
|
|
117
|
-
- Use **Context (ctx)** directly for JSON responses.
|
|
118
|
-
- Keep your routes organized using prefixing (coming in v1.1.0).
|
|
119
|
-
- Use the **Zod Middleware** for automatic type-safe validation.
|
|
120
|
-
|
|
121
|
-
Happy Coding!
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import type { Model } from 'mongoose';
|
|
2
|
-
|
|
3
|
-
export interface MongooseAdapterConfig {
|
|
4
|
-
User: Model<any>;
|
|
5
|
-
RefreshToken: Model<any>;
|
|
6
|
-
models?: Record<string, Model<any>>;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function createMongooseAdapter(config: MongooseAdapterConfig) {
|
|
10
|
-
// Map MongoDB document to the standard BaseDocument shape
|
|
11
|
-
const mapDoc = (doc: any) => {
|
|
12
|
-
if (!doc) return null;
|
|
13
|
-
const obj = doc.toObject && typeof doc.toObject === 'function' ? doc.toObject() : { ...doc };
|
|
14
|
-
if (obj._id) {
|
|
15
|
-
obj.id = obj._id.toString();
|
|
16
|
-
delete obj._id;
|
|
17
|
-
}
|
|
18
|
-
delete obj.__v;
|
|
19
|
-
return obj;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// Convert standard QueryFilter to Mongoose Query format
|
|
23
|
-
const mapQuery = (query: any) => {
|
|
24
|
-
if (!query) return {};
|
|
25
|
-
const parsed: any = {};
|
|
26
|
-
for (const [key, val] of Object.entries(query)) {
|
|
27
|
-
if (key === 'id') {
|
|
28
|
-
parsed['_id'] = val;
|
|
29
|
-
} else if (key === '$and' || key === '$or') {
|
|
30
|
-
parsed[key] = (val as any[]).map(mapQuery);
|
|
31
|
-
} else if (typeof val === 'object' && val !== null && !Array.isArray(val)) {
|
|
32
|
-
const ops: any = {};
|
|
33
|
-
for (const [op, opVal] of Object.entries(val)) {
|
|
34
|
-
if (op === '$like') {
|
|
35
|
-
ops['$regex'] = opVal;
|
|
36
|
-
ops['$options'] = 'i';
|
|
37
|
-
} else {
|
|
38
|
-
ops[op] = opVal;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
parsed[key] = ops;
|
|
42
|
-
} else {
|
|
43
|
-
parsed[key] = val;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return parsed;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
// Convert standard sorting to Mongoose sort format
|
|
50
|
-
const mapSort = (sort?: Record<string, 'asc' | 'desc'>) => {
|
|
51
|
-
if (!sort) return undefined;
|
|
52
|
-
const result: Record<string, 1 | -1> = {};
|
|
53
|
-
for (const [k, v] of Object.entries(sort)) {
|
|
54
|
-
result[k] = v === 'asc' ? 1 : -1;
|
|
55
|
-
}
|
|
56
|
-
return result;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// Helper to fetch generic CRUD models
|
|
60
|
-
const getModel = (collection: string): Model<any> => {
|
|
61
|
-
if (!config.models || !config.models[collection]) {
|
|
62
|
-
throw new Error(`Model for collection '${collection}' not found in MongooseAdapterConfig`);
|
|
63
|
-
}
|
|
64
|
-
return config.models[collection];
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
return {
|
|
68
|
-
// ==========================================
|
|
69
|
-
// AUTHENTICATION ADAPTER METHODS
|
|
70
|
-
// ==========================================
|
|
71
|
-
async createUser(data: any) {
|
|
72
|
-
const user = await config.User.create(data);
|
|
73
|
-
return mapDoc(user);
|
|
74
|
-
},
|
|
75
|
-
async findUserByEmail(email: string) {
|
|
76
|
-
const user = await config.User.findOne({ email });
|
|
77
|
-
return mapDoc(user);
|
|
78
|
-
},
|
|
79
|
-
async findUserById(id: string) {
|
|
80
|
-
const user = await config.User.findById(id);
|
|
81
|
-
return mapDoc(user);
|
|
82
|
-
},
|
|
83
|
-
async updateUser(id: string, data: any) {
|
|
84
|
-
const user = await config.User.findByIdAndUpdate(id, data, { new: true });
|
|
85
|
-
return mapDoc(user);
|
|
86
|
-
},
|
|
87
|
-
async saveRefreshToken(data: any) {
|
|
88
|
-
await config.RefreshToken.create(data);
|
|
89
|
-
},
|
|
90
|
-
async findRefreshToken(token: string) {
|
|
91
|
-
const rt = await config.RefreshToken.findOne({ token });
|
|
92
|
-
return mapDoc(rt);
|
|
93
|
-
},
|
|
94
|
-
async deleteRefreshToken(token: string) {
|
|
95
|
-
await config.RefreshToken.deleteOne({ token });
|
|
96
|
-
},
|
|
97
|
-
|
|
98
|
-
// ==========================================
|
|
99
|
-
// CRUD ADAPTER METHODS
|
|
100
|
-
// ==========================================
|
|
101
|
-
async create(collection: string, data: any) {
|
|
102
|
-
const Model = getModel(collection);
|
|
103
|
-
const doc = await Model.create(data);
|
|
104
|
-
return mapDoc(doc);
|
|
105
|
-
},
|
|
106
|
-
async read(collection: string, query: any) {
|
|
107
|
-
const Model = getModel(collection);
|
|
108
|
-
const docs = await Model.find(mapQuery(query));
|
|
109
|
-
return docs.map(mapDoc);
|
|
110
|
-
},
|
|
111
|
-
async update(collection: string, query: any, data: any) {
|
|
112
|
-
const Model = getModel(collection);
|
|
113
|
-
await Model.updateMany(mapQuery(query), data);
|
|
114
|
-
|
|
115
|
-
// Return updated documents if we can map them back, otherwise minimal info
|
|
116
|
-
// Since updateMany doesn't return the updated docs in mongoose, we can just return a generic success object
|
|
117
|
-
// or fetch them. The interface expects Promise<any>. We will fetch them to match typical behavior.
|
|
118
|
-
const docs = await Model.find(mapQuery({ ...query, ...data }));
|
|
119
|
-
return docs.map(mapDoc);
|
|
120
|
-
},
|
|
121
|
-
async delete(collection: string, query: any) {
|
|
122
|
-
const Model = getModel(collection);
|
|
123
|
-
await Model.deleteMany(mapQuery(query));
|
|
124
|
-
return { deleted: true };
|
|
125
|
-
},
|
|
126
|
-
async advancedRead(collection: string, query: any, options: any) {
|
|
127
|
-
const Model = getModel(collection);
|
|
128
|
-
let mQuery = Model.find(mapQuery(query));
|
|
129
|
-
if (options.sort) {
|
|
130
|
-
mQuery = mQuery.sort(mapSort(options.sort));
|
|
131
|
-
}
|
|
132
|
-
if (options.offset !== undefined) {
|
|
133
|
-
mQuery = mQuery.skip(options.offset);
|
|
134
|
-
}
|
|
135
|
-
if (options.limit !== undefined) {
|
|
136
|
-
mQuery = mQuery.limit(options.limit);
|
|
137
|
-
}
|
|
138
|
-
const docs = await mQuery;
|
|
139
|
-
return docs.map(mapDoc);
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
}
|