dolphin-server-modules 1.3.5 → 1.3.7

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.
@@ -20,6 +20,8 @@
20
20
  - [१२. टेस्टिङ र डेभप्स (Testing & DevOps)](#१२-टेस्टिङ-र-डेभप्स-testing--devops)
21
21
  - [१३. भविष्य र योगदान (Future Roadmap)](#१३-भविष्य-र-योगदान-future-roadmap)
22
22
  - [१४. रियलटाइम र IoT मास्टरक्लास (Realtime & IoT Masterclass) [NEW]](#१४-रियलटाइम-र-iot-मास्टरक्लास-realtime--iot-masterclass-new)
23
+ - [१५. इन्डिपेन्डेन्ट राउटिङ मास्टरक्लास (Independent Routing) [NEW]](#१५-इन्डिपेन्डेन्ट-राउटिङ-मास्टरक्लास-independent-routing-new)
24
+ - [१६. स्वतन्त्र अटो-स्वैगर जेनेरेसन (Independent Auto-Swagger) [NEW]](#१६-स्वतन्त्र-अटो-स्वैगर-जेनेरेसन-independent-auto-swagger-new)
23
25
 
24
26
  ---
25
27
 
@@ -589,6 +591,66 @@ app.use('/users', userRouter); // अब यो /users/profile मा चल्
589
591
 
590
592
  ---
591
593
 
594
+ ## १६. स्वतन्त्र अटो-स्वैगर जेनेरेसन (Independent Auto-Swagger) [NEW]
595
+
596
+ API बनाउँदा सबैभन्दा अल्छीलाग्दो काम भनेको त्यसको डकुमेन्टेसन (Swagger/OpenAPI docs) हातैले लेख्नु हो। Dolphin ले यसलाई १००% अटोमेटिक र **Framework Independent** बनाइदिएको छ।
597
+
598
+ ### १६.१ यो किन विशेष छ?
599
+ यसले तपाईँको `Zod` स्किमालाई सिधै पढेर OpenAPI को स्ट्यान्डर्ड JSON निकाल्छ। यसको लागि तपाईँले कुनै मिडलवेयर (`app.use`) सेटअप गरिरहनु पर्दैन। यो जुनसुकै फ्रेमवर्क (Next.js, Express, Fastify, Dolphin) मा काम गर्छ।
600
+
601
+ ### १६.२ कसरी प्रयोग गर्ने?
602
+ ```typescript
603
+ import { z } from 'zod';
604
+ import { generateSwagger, serveSwaggerUI } from 'dolphin-server-modules/swagger';
605
+ import { createDolphinServer } from 'dolphin-server-modules/server';
606
+
607
+ const app = createDolphinServer();
608
+
609
+ // १. Zod Schema बनाउने
610
+ const UserSchema = z.object({
611
+ name: z.string(),
612
+ email: z.string().email(),
613
+ age: z.number().optional()
614
+ });
615
+
616
+ // २. Swagger Config तयार गर्ने
617
+ const apiDocs = generateSwagger({
618
+ title: "DolphinStore API",
619
+ version: "1.0.0",
620
+ description: "E-Commerce Backend API Provider",
621
+ modules: [
622
+ {
623
+ path: "/users",
624
+ method: "post",
625
+ schema: UserSchema, // बडी रिक्वेस्टको लागि (Body)
626
+ summary: "Create User",
627
+ description: "Registers a new user in the system.",
628
+ tags: ["Users"]
629
+ }
630
+ ]
631
+ });
632
+
633
+ // ३. डकुमेन्टेसन सर्भ गर्ने (Swagger UI सँगै)
634
+ app.get('/docs', (ctx) => {
635
+ const html = serveSwaggerUI(apiDocs, "DolphinStore API Docs");
636
+ return ctx.html(html); // सिधै सुन्दर UI देखिन्छ!
637
+ });
638
+
639
+ // ४. JSON मात्र चाहियो भने (फिल्नेटर वा पोस्टम्यानको लागि)
640
+ app.get('/docs/json', (ctx) => ctx.json(apiDocs));
641
+
642
+ app.listen(3000, () => console.log('Swagger UI is live at http://localhost:3000/docs'));
643
+ ```
644
+
645
+ ### १६.३ यसले के-के सपोर्ट गर्छ?
646
+ - **Zod Types:** `string`, `number`, `boolean`, `array`, `object`, `enum`, `optional()`, र `nullable()` लाई राम्रोसँग बुझ्छ।
647
+ - **Path/Query Params:** `modules` भित्र `params: { id: "string" }` जस्ता कुराहरू सपोर्ट गर्छ।
648
+ - **Response Schema:** `responseSchema: UserSchema` दिएर सफल रेस्पोन्स कस्तो हुन्छ भन्ने देखाउन मिल्छ।
649
+
650
+ यति सेटअप गरेपछि, तपाईँको कोड परिवर्तन हुने बित्तिकै तपाईँको Swagger Docs आफैँ अपडेट हुन्छ!
651
+
652
+ ---
653
+
592
654
  ## निष्कर्ष (Conclusion)
593
655
 
594
656
  बधाई छ! तपाईँले Dolphin Framework को **Master Guide** को अन्त्य सम्म पढ्नुभयो। अब तपाईँ कुनै पनि जटिल ब्याकइन्ड सिस्टम Dolphin प्रयोग गरेर बनाउन पूर्ण सक्षम हुनुहुन्छ।
@@ -597,3 +659,5 @@ app.use('/users', userRouter); // अब यो /users/profile मा चल्
597
659
 
598
660
  **Happy Coding! 🐬🇳🇵**
599
661
  **नेपालबाट विश्वस्तरको सफ्टवेयर बनाऔँ!**
662
+
663
+
package/README.md CHANGED
@@ -72,6 +72,7 @@ rt.subscribe('factory/machine/+', (data) => {
72
72
  | **Auth** | `/auth` | Argon2/JWT based secure auth with 2FA support. |
73
73
  | **Realtime** | `/realtime` | Pub/Sub engine with `TopicTrie` & Binary Codecs. |
74
74
  | **Validation** | `/middleware/zod` | Type-safe validation for Express, Next.js, and Dolphin. |
75
+ | **Swagger Docs** | `/swagger` | Auto-generated OpenAPI docs from Zod schemas (UI included). |
75
76
  | **IoT Plugins** | `/realtime/plugins` | Native parsers for HL7, Modbus, and DICOM. |
76
77
  | **DB Adapters** | `/adapters` | Mongoose and SQL adapters for rapid CRUD. |
77
78
 
@@ -105,8 +106,8 @@ mainApp.use('/api/v1', apiV1); // Accessible at /api/v1/status
105
106
  ## 🗺️ Roadmap
106
107
  - [x] Universal Plugin System (HL7/Modbus/Binary)
107
108
  - [x] Recursive Sub-routing
109
+ - [x] **Auto-Doc**: Automatic Swagger/OpenAPI generation from Zod schemas.
108
110
  - [ ] **Dolphin CLI**: `npx dolphin init` for automated scaffolding.
109
- - [ ] **Auto-Doc**: Automatic Swagger/OpenAPI generation from Zod schemas.
110
111
 
111
112
  ---
112
113
 
package/dist/index.d.ts CHANGED
@@ -4,3 +4,4 @@ export { createCRUD, BaseDocument, QueryFilter, PaginationOptions, DatabaseAdapt
4
4
  export * from './server/server';
5
5
  export * from './router/router';
6
6
  export * from './realtime/index';
7
+ export * from './swagger/swagger';
package/dist/index.js CHANGED
@@ -27,4 +27,5 @@ __exportStar(require("./server/server"), exports);
27
27
  __exportStar(require("./router/router"), exports);
28
28
  // Re-export Realtime
29
29
  __exportStar(require("./realtime/index"), exports);
30
+ __exportStar(require("./swagger/swagger"), exports);
30
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,8CAA4B;AAC5B,uBAAuB;AACvB,0DAAwC;AACxC,8DAA8D;AAC9D,oCAMqB;AALnB,kGAAA,UAAU,OAAA;AAMZ,4BAA4B;AAC5B,kDAAgC;AAChC,kDAAgC;AAEhC,qBAAqB;AACrB,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,8CAA4B;AAC5B,uBAAuB;AACvB,0DAAwC;AACxC,8DAA8D;AAC9D,oCAMqB;AALnB,kGAAA,UAAU,OAAA;AAMZ,4BAA4B;AAC5B,kDAAgC;AAChC,kDAAgC;AAEhC,qBAAqB;AACrB,mDAAiC;AACjC,oDAAkC"}
@@ -78,26 +78,43 @@ function createDolphinServer(options = {}) {
78
78
  });
79
79
  }
80
80
  // Body parsing for POST/PUT/PATCH
81
+ const contentType = req.headers['content-type'] || '';
81
82
  if (['POST', 'PUT', 'PATCH'].includes(req.method)) {
82
- const chunks = [];
83
- for await (const chunk of req)
84
- chunks.push(chunk);
85
- const rawBody = Buffer.concat(chunks).toString();
86
- if (req.headers['content-type']?.includes('application/json')) {
87
- try {
88
- const parsed = JSON.parse(rawBody);
83
+ if (contentType.includes('multipart/form-data')) {
84
+ // Handled by third-party middlewares like multer. Just sync to ctx.
85
+ if (req.body)
86
+ ctx.body = req.body;
87
+ if (req.file)
88
+ ctx.file = req.file;
89
+ if (req.files)
90
+ ctx.files = req.files;
91
+ }
92
+ else {
93
+ const chunks = [];
94
+ for await (const chunk of req)
95
+ chunks.push(chunk);
96
+ const rawBody = Buffer.concat(chunks).toString();
97
+ if (contentType.includes('application/json')) {
98
+ try {
99
+ const parsed = JSON.parse(rawBody);
100
+ ctx.body = parsed;
101
+ req.body = parsed;
102
+ }
103
+ catch {
104
+ ctx.body = {};
105
+ req.body = {};
106
+ }
107
+ }
108
+ else if (contentType.includes('application/x-www-form-urlencoded')) {
109
+ const parsed = Object.fromEntries(new URLSearchParams(rawBody));
89
110
  ctx.body = parsed;
90
111
  req.body = parsed;
91
112
  }
92
- catch {
93
- ctx.body = {};
94
- req.body = {};
113
+ else {
114
+ ctx.body = rawBody;
115
+ req.body = rawBody;
95
116
  }
96
117
  }
97
- else {
98
- ctx.body = rawBody;
99
- req.body = rawBody;
100
- }
101
118
  }
102
119
  // Matching route
103
120
  const match = router.match(req.method, parsedUrl.pathname);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ export declare function zodToJsonSchema(schema: any): any;
3
+ export interface SwaggerConfig {
4
+ title: string;
5
+ version: string;
6
+ description?: string;
7
+ servers?: {
8
+ url: string;
9
+ description?: string;
10
+ }[];
11
+ modules: {
12
+ path: string;
13
+ method: "get" | "post" | "put" | "delete" | "patch";
14
+ summary?: string;
15
+ description?: string;
16
+ tags?: string[];
17
+ schema?: z.ZodTypeAny;
18
+ responseSchema?: z.ZodTypeAny;
19
+ params?: Record<string, "string" | "number" | "boolean">;
20
+ query?: Record<string, "string" | "number" | "boolean">;
21
+ }[];
22
+ }
23
+ export declare function generateSwagger(config: SwaggerConfig): {
24
+ openapi: string;
25
+ info: {
26
+ title: string;
27
+ version: string;
28
+ description: string;
29
+ };
30
+ servers: {
31
+ url: string;
32
+ description?: string;
33
+ }[];
34
+ paths: any;
35
+ };
36
+ export declare function serveSwaggerUI(swaggerJson: any, title?: string): string;
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zodToJsonSchema = zodToJsonSchema;
4
+ exports.generateSwagger = generateSwagger;
5
+ exports.serveSwaggerUI = serveSwaggerUI;
6
+ function zodToJsonSchema(schema) {
7
+ if (!schema || !schema._def)
8
+ return { type: "string" };
9
+ const typeName = schema._def.typeName || schema._def.type;
10
+ // Convert standard Zod names or Zod Lite names
11
+ const normalizedType = typeof typeName === 'string' ? typeName.replace('Zod', '').toLowerCase() : '';
12
+ if (normalizedType === "string") {
13
+ return { type: "string" };
14
+ }
15
+ else if (normalizedType === "number") {
16
+ return { type: "number" };
17
+ }
18
+ else if (normalizedType === "boolean") {
19
+ return { type: "boolean" };
20
+ }
21
+ else if (normalizedType === "array") {
22
+ return {
23
+ type: "array",
24
+ items: zodToJsonSchema(schema._def.type || schema._def.element)
25
+ };
26
+ }
27
+ else if (normalizedType === "object") {
28
+ const rawShape = schema._def.shape;
29
+ const shape = typeof rawShape === "function" ? rawShape() : rawShape;
30
+ const properties = {};
31
+ const required = [];
32
+ for (const [key, propSchema] of Object.entries(shape || {})) {
33
+ const propDef = propSchema._def;
34
+ let innerSchema = propSchema;
35
+ let isRequired = true;
36
+ const propType = propDef?.typeName || propDef?.type;
37
+ const normPropType = typeof propType === 'string' ? propType.replace('Zod', '').toLowerCase() : '';
38
+ if (normPropType === "optional" || normPropType === "nullable") {
39
+ isRequired = false;
40
+ innerSchema = propDef.innerType;
41
+ }
42
+ properties[key] = zodToJsonSchema(innerSchema);
43
+ if (isRequired)
44
+ required.push(key);
45
+ }
46
+ const schemaObj = { type: "object", properties };
47
+ if (required.length > 0)
48
+ schemaObj.required = required;
49
+ return schemaObj;
50
+ }
51
+ else if (normalizedType === "optional" || normalizedType === "nullable") {
52
+ return zodToJsonSchema(schema._def.innerType);
53
+ }
54
+ else if (normalizedType === "enum") {
55
+ return { type: "string", enum: schema._def.values || schema._def.entries };
56
+ }
57
+ return { type: "string" }; // default fallback
58
+ }
59
+ function generateSwagger(config) {
60
+ const paths = {};
61
+ for (const mod of config.modules) {
62
+ if (!paths[mod.path])
63
+ paths[mod.path] = {};
64
+ const operation = {
65
+ summary: mod.summary || `Endpoint for ${mod.path}`,
66
+ description: mod.description,
67
+ tags: mod.tags || ["API"],
68
+ responses: {
69
+ "200": {
70
+ description: "Successful response"
71
+ }
72
+ }
73
+ };
74
+ const parameters = [];
75
+ if (mod.params) {
76
+ for (const [k, v] of Object.entries(mod.params)) {
77
+ parameters.push({ name: k, in: "path", required: true, schema: { type: v } });
78
+ }
79
+ }
80
+ if (mod.query) {
81
+ for (const [k, v] of Object.entries(mod.query)) {
82
+ parameters.push({ name: k, in: "query", required: false, schema: { type: v } });
83
+ }
84
+ }
85
+ if (parameters.length > 0) {
86
+ operation.parameters = parameters;
87
+ }
88
+ if (mod.schema && ['post', 'put', 'patch'].includes(mod.method.toLowerCase())) {
89
+ operation.requestBody = {
90
+ required: true,
91
+ content: {
92
+ "application/json": {
93
+ schema: zodToJsonSchema(mod.schema)
94
+ }
95
+ }
96
+ };
97
+ }
98
+ if (mod.responseSchema) {
99
+ operation.responses["200"].content = {
100
+ "application/json": {
101
+ schema: zodToJsonSchema(mod.responseSchema)
102
+ }
103
+ };
104
+ }
105
+ paths[mod.path][mod.method.toLowerCase()] = operation;
106
+ }
107
+ return {
108
+ openapi: "3.0.0",
109
+ info: {
110
+ title: config.title,
111
+ version: config.version,
112
+ description: config.description || "Auto-generated API Docs",
113
+ },
114
+ servers: config.servers || [{ url: "/" }],
115
+ paths
116
+ };
117
+ }
118
+ function serveSwaggerUI(swaggerJson, title = 'API Documentation') {
119
+ return `
120
+ <!DOCTYPE html>
121
+ <html lang="en">
122
+ <head>
123
+ <meta charset="UTF-8">
124
+ <title>${title}</title>
125
+ <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@4/swagger-ui.css" />
126
+ <style>
127
+ body { margin: 0; padding: 0; }
128
+ .swagger-ui .topbar { display: none; }
129
+ </style>
130
+ </head>
131
+ <body>
132
+ <div id="swagger-ui"></div>
133
+ <script src="https://unpkg.com/swagger-ui-dist@4/swagger-ui-bundle.js"></script>
134
+ <script>
135
+ window.onload = () => {
136
+ window.ui = SwaggerUIBundle({
137
+ spec: ${JSON.stringify(swaggerJson)},
138
+ dom_id: '#swagger-ui',
139
+ deepLinking: true,
140
+ presets: [
141
+ SwaggerUIBundle.presets.apis,
142
+ SwaggerUIBundle.SwaggerUIStandalonePreset
143
+ ],
144
+ layout: "BaseLayout"
145
+ });
146
+ };
147
+ </script>
148
+ </body>
149
+ </html>
150
+ `.trim();
151
+ }
152
+ //# sourceMappingURL=swagger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger.js","sourceRoot":"","sources":["../../swagger/swagger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dolphin-server-modules",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "homepage": "https://github.com/Phuyalshankar/dolphin-server-modules#readme",
5
5
  "description": "Core utility modules for Auth, CRUD, and Controllers",
6
6
  "main": "dist/index.js",
@@ -26,7 +26,8 @@
26
26
  "./realtime/core": "./dist/realtime/core.js",
27
27
  "./realtime/trie": "./dist/realtime/trie.js",
28
28
  "./realtime/codec": "./dist/realtime/codec.js",
29
- "./realtime/plugins": "./dist/realtime/plugins.js"
29
+ "./realtime/plugins": "./dist/realtime/plugins.js",
30
+ "./swagger": "./dist/swagger/swagger.js"
30
31
  },
31
32
  "scripts": {
32
33
  "build": "tsc",