nest-scramble 1.2.0 → 1.3.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/README.md CHANGED
@@ -344,19 +344,107 @@ jobs:
344
344
  path: openapi.json
345
345
  ```
346
346
 
347
- ## 🎨 Documentation UI
347
+ ## 🎨 Documentation UI - World-Class Design
348
348
 
349
- ### Built-in Scalar UI
349
+ ### Futuristic Theme (NEW!)
350
350
 
351
- Nest-Scramble comes with **Scalar UI** built-in via CDN. No additional packages needed!
351
+ Nest-Scramble now features a **bespoke, futuristic dashboard** that rivals high-end SaaS products like Stripe, Vercel, and Linear!
352
352
 
353
- When you visit `http://localhost:3000/docs`, you'll see a beautiful, interactive API documentation interface with:
353
+ **🚀 Key Features:**
354
+ - **Deep Space Dark Mode** - Ultra-premium `#050505` background
355
+ - **Glassmorphism Design** - Backdrop blur effects on all cards
356
+ - **Cyber Gradients** - Cyan-to-purple button animations
357
+ - **Animated Grid Background** - Subtle pulsing effect
358
+ - **Night Owl Code Theme** - Beautiful syntax highlighting
359
+ - **Custom Scrollbar** - Gradient styling throughout
360
+ - **Spotlight Search** - Cmd+K style search experience
361
+ - **Easter Egg Console** - Hidden developer messages ✨
362
+
363
+ ### 🎨 Theme Customization
364
+
365
+ **Futuristic Theme (Default):**
366
+ ```typescript
367
+ NestScrambleModule.forRoot({
368
+ theme: 'futuristic', // Modern, dark, glassmorphic
369
+ primaryColor: '#00f2ff', // Cyber-Cyan (default)
370
+ customDomainIcon: '/logo.png', // Your brand favicon
371
+ apiTitle: 'My Awesome API',
372
+ })
373
+ ```
374
+
375
+ **Classic Theme:**
376
+ ```typescript
377
+ NestScrambleModule.forRoot({
378
+ theme: 'classic', // Clean, light, professional
379
+ primaryColor: '#0066cc', // Corporate blue
380
+ apiTitle: 'Enterprise API',
381
+ })
382
+ ```
383
+
384
+ **Custom Color Branding:**
385
+ ```typescript
386
+ // One line changes the entire UI color scheme!
387
+ NestScrambleModule.forRoot({
388
+ primaryColor: '#a855f7', // Electric Purple
389
+ // or '#10b981' for Emerald Green
390
+ // or '#f59e0b' for Amber Orange
391
+ // or any hex color you want!
392
+ })
393
+ ```
394
+
395
+ ### 🎭 UI Configuration Options
396
+
397
+ | Option | Type | Default | Description |
398
+ |--------|------|---------|-------------|
399
+ | `theme` | `'classic' \| 'futuristic'` | `'futuristic'` | UI theme selection |
400
+ | `primaryColor` | `string` | `'#00f2ff'` | Primary accent color (hex) |
401
+ | `customDomainIcon` | `string` | `''` | Custom favicon URL |
402
+ | `apiTitle` | `string` | Auto-detected | API documentation title |
403
+ | `apiVersion` | `string` | Auto-detected | API version number |
404
+
405
+ ### 🌟 Interactive Features
406
+
407
+ When you visit `http://localhost:3000/docs`, you'll experience:
354
408
 
355
409
  - 🎯 **Interactive API Explorer** - Test endpoints directly from the browser
356
410
  - 📝 **Auto-generated Examples** - Request/response samples for all endpoints
357
- - 🔍 **Search Functionality** - Quickly find endpoints
358
- - 🌙 **Dark Mode Support** - Easy on the eyes
359
- - 📱 **Mobile Responsive** - Works on all devices
411
+ - 🔍 **Spotlight Search** - Quickly find endpoints with glowing focus states
412
+ - 🌙 **Futuristic Dark Mode** - Deep space theme with glassmorphism
413
+ - 📱 **Mobile Responsive** - Works beautifully on all devices
414
+ - 🎨 **Theme Toggle** - Switch between Futuristic and Classic (top-right button)
415
+ - ✨ **Powered by Badge** - Glowing brand badge with pulse animation
416
+ - 🎭 **Easter Eggs** - Check your browser console for surprises!
417
+
418
+ ### 🖥️ Terminal Dashboard
419
+
420
+ The startup dashboard now features **gradient styling** with ANSI colors:
421
+
422
+ ```
423
+ ╔═══════════════════════════════════════════════════════════════╗
424
+ ║ ✨ NEST-SCRAMBLE by Mohamed Mustafa ║
425
+ ║ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ║
426
+ ║ ║
427
+ ║ ● Documentation ║
428
+ ║ → http://localhost:3000/docs ║
429
+ ║ ║
430
+ ║ ● OpenAPI Spec ║
431
+ ║ → http://localhost:3000/docs-json ║
432
+ ║ ║
433
+ ║ ● Mock Server ║
434
+ ║ → http://localhost:3000/scramble-mock ║
435
+ ║ ║
436
+ ║ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ║
437
+ ║ 📦 Source Path: src ║
438
+ ║ 🎯 Controllers: 5 ║
439
+ ║ 🎨 Theme: Futuristic ║
440
+ ╚═══════════════════════════════════════════════════════════════╝
441
+ ```
442
+
443
+ ### 📚 More UI Documentation
444
+
445
+ For complete UI customization guide, see:
446
+ - **[UI_FEATURES.md](./UI_FEATURES.md)** - Comprehensive feature documentation
447
+ - **[examples/futuristic-ui-example.ts](./examples/futuristic-ui-example.ts)** - Usage examples
360
448
 
361
449
  ### Available Endpoints
362
450
 
@@ -609,7 +697,6 @@ If you're still experiencing issues:
609
697
  1. **Check the logs** - Nest-Scramble provides detailed diagnostic output on startup
610
698
  2. **Verify your version** - Run `npm list nest-scramble` (should be 1.1.0+)
611
699
  3. **Open an issue** - [GitHub Issues](https://github.com/Eng-MMustafa/nest-scramble/issues)
612
- 4. **Join discussions** - [GitHub Discussions](https://github.com/Eng-MMustafa/nest-scramble/discussions)
613
700
 
614
701
  When reporting issues, please include:
615
702
  - Nest-Scramble version
package/UI_FEATURES.md ADDED
@@ -0,0 +1,289 @@
1
+ # 🚀 Nest-Scramble UI - World-Class Design Features
2
+
3
+ **Engineered by Mohamed Mustafa (@Eng-MMustafa)**
4
+
5
+ ## ✨ Overview
6
+
7
+ The Nest-Scramble documentation UI has been elevated to a **bespoke, futuristic dashboard** that rivals high-end SaaS products. This document outlines all the advanced UI features and customization options.
8
+
9
+ ---
10
+
11
+ ## 🎨 Futuristic Theme Features
12
+
13
+ ### **Deep Space Dark Mode**
14
+ - **Background**: `#050505` - Ultra-deep space black
15
+ - **Animated Grid**: Pulsing background grid with subtle opacity animation
16
+ - **Color Palette**:
17
+ - **Cyber-Cyan**: `#00f2ff` (Primary accent)
18
+ - **Electric Purple**: `#a855f7` (Secondary accent)
19
+ - **Gradient Buttons**: Smooth cyan-to-purple gradients
20
+
21
+ ### **Glassmorphism Design**
22
+ - Backdrop blur effects on all cards and panels
23
+ - Semi-transparent borders with subtle glow
24
+ - Layered depth with shadow insets
25
+ - Modern, frosted-glass aesthetic
26
+
27
+ ### **Typography**
28
+ - **Fonts**: 'Inter' and 'Plus Jakarta Sans' via Google Fonts
29
+ - **Headers**: Gradient text with cyan-to-purple color fill
30
+ - **Code Blocks**: 'JetBrains Mono' and 'Fira Code' for optimal readability
31
+
32
+ ### **Interactive Elements**
33
+ - **Buttons**:
34
+ - Gradient backgrounds with hover animations
35
+ - Shimmer effect on hover
36
+ - Glow shadows with primary color
37
+ - Smooth lift animation (translateY)
38
+
39
+ - **Search Bar**:
40
+ - Spotlight-style UI (Cmd+K feel)
41
+ - Focus state with glowing border
42
+ - Dark glassmorphic background
43
+
44
+ - **Code Snippets**:
45
+ - Night Owl syntax theme
46
+ - Rounded corners with subtle borders
47
+ - Enhanced readability with proper spacing
48
+
49
+ ### **Custom Branding**
50
+ - **Powered by Badge**: Fixed position badge with:
51
+ - Gradient background
52
+ - Pulsing glow animation
53
+ - "✨ Powered by Nest-Scramble" text
54
+ - Bottom-right placement
55
+
56
+ ### **Scrollbar Styling**
57
+ - Custom gradient scrollbar thumb
58
+ - Smooth hover effects
59
+ - Matches the overall theme aesthetic
60
+
61
+ ---
62
+
63
+ ## 🎯 Configuration Options
64
+
65
+ ### **Basic Setup**
66
+
67
+ ```typescript
68
+ import { NestScrambleModule } from 'nest-scramble';
69
+
70
+ @Module({
71
+ imports: [
72
+ NestScrambleModule.forRoot({
73
+ // Theme selection
74
+ theme: 'futuristic', // or 'classic'
75
+
76
+ // Primary brand color
77
+ primaryColor: '#00f2ff',
78
+
79
+ // Custom favicon
80
+ customDomainIcon: 'https://your-domain.com/favicon.ico',
81
+
82
+ // API metadata
83
+ apiTitle: 'My Awesome API',
84
+ apiVersion: '2.0.0',
85
+ }),
86
+ ],
87
+ })
88
+ export class AppModule {}
89
+ ```
90
+
91
+ ### **Available Options**
92
+
93
+ | Option | Type | Default | Description |
94
+ |--------|------|---------|-------------|
95
+ | `theme` | `'classic' \| 'futuristic'` | `'futuristic'` | UI theme selection |
96
+ | `primaryColor` | `string` | `'#00f2ff'` | Primary accent color (hex) |
97
+ | `customDomainIcon` | `string` | `''` | Custom favicon URL |
98
+ | `apiTitle` | `string` | Auto-detected | API documentation title |
99
+ | `apiVersion` | `string` | Auto-detected | API version number |
100
+ | `path` | `string` | `'/docs'` | Documentation route path |
101
+ | `enableMock` | `boolean` | `true` | Enable mock server |
102
+
103
+ ---
104
+
105
+ ## 🎭 Easter Egg Features
106
+
107
+ ### **Console Messages**
108
+ When users access the documentation, they'll see beautiful console messages:
109
+
110
+ ```
111
+ ✨ Engineered with passion by Mohamed Mustafa
112
+ Nest-Scramble is active.
113
+ 🚀 GitHub: https://github.com/Eng-MMustafa/nest-scramble
114
+ ```
115
+
116
+ ### **Theme Toggle**
117
+ - Live theme switcher button (top-right)
118
+ - Persists preference in localStorage
119
+ - Smooth transitions between themes
120
+
121
+ ---
122
+
123
+ ## 🖥️ Terminal UI Enhancement
124
+
125
+ ### **Gradient Dashboard**
126
+ The startup dashboard now features:
127
+ - **Cyan & Purple** gradient borders
128
+ - **Bold emojis** for visual hierarchy
129
+ - **Color-coded sections**:
130
+ - 🟢 Green bullets for endpoints
131
+ - 🔵 Cyan arrows for URLs
132
+ - 🟡 Yellow icons for metadata
133
+ - 🟣 Purple for theme indicator
134
+
135
+ ### **Example Output**
136
+
137
+ ```
138
+ ╔═══════════════════════════════════════════════════════════════╗
139
+ ║ ✨ NEST-SCRAMBLE by Mohamed Mustafa ║
140
+ ║ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ║
141
+ ║ ║
142
+ ║ ● Documentation ║
143
+ ║ → http://localhost:3000/docs ║
144
+ ║ ║
145
+ ║ ● OpenAPI Spec ║
146
+ ║ → http://localhost:3000/docs-json ║
147
+ ║ ║
148
+ ║ ● Mock Server ║
149
+ ║ → http://localhost:3000/scramble-mock ║
150
+ ║ ║
151
+ ║ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ║
152
+ ║ 📦 Source Path: src ║
153
+ ║ 🎯 Controllers: 5 ║
154
+ ║ 🎨 Theme: Futuristic ║
155
+ ╚═══════════════════════════════════════════════════════════════╝
156
+ ```
157
+
158
+ ---
159
+
160
+ ## 🎨 CSS Architecture
161
+
162
+ ### **Futuristic Theme**
163
+ - **Root Variables**: CSS custom properties for easy theming
164
+ - **Animations**:
165
+ - `gridPulse`: Background grid animation (10s)
166
+ - `badgePulse`: Branding badge glow (3s)
167
+ - **Transitions**: Smooth 0.3s cubic-bezier for all interactions
168
+ - **Responsive**: Mobile-optimized with proper viewport settings
169
+
170
+ ### **Classic Theme**
171
+ - Clean, minimal design
172
+ - Light background with dark text
173
+ - Simplified color scheme
174
+ - Professional appearance for conservative environments
175
+
176
+ ---
177
+
178
+ ## 🚀 Advanced Features
179
+
180
+ ### **1. Dynamic Color Branding**
181
+ Set your brand color once, and it propagates throughout:
182
+ - Button gradients
183
+ - Focus states
184
+ - Glow effects
185
+ - Scrollbar styling
186
+ - Link colors
187
+
188
+ ### **2. Glassmorphism Effects**
189
+ - `backdrop-filter: blur(20px)` on cards
190
+ - Semi-transparent backgrounds
191
+ - Layered shadows for depth
192
+ - Modern, premium feel
193
+
194
+ ### **3. Code Block Theming**
195
+ - Night Owl color scheme
196
+ - Syntax highlighting support
197
+ - Monospace font optimization
198
+ - Enhanced readability
199
+
200
+ ### **4. Responsive Design**
201
+ - Mobile-first approach
202
+ - Flexible layouts
203
+ - Touch-optimized interactions
204
+ - Adaptive spacing
205
+
206
+ ---
207
+
208
+ ## 📊 Performance Optimizations
209
+
210
+ - **Font Preloading**: Google Fonts with `preconnect`
211
+ - **CSS-only Animations**: No JavaScript overhead
212
+ - **Minimal DOM Manipulation**: Efficient rendering
213
+ - **Optimized Selectors**: Fast CSS matching
214
+
215
+ ---
216
+
217
+ ## 🎯 Use Cases
218
+
219
+ ### **Startup/SaaS Products**
220
+ ```typescript
221
+ NestScrambleModule.forRoot({
222
+ theme: 'futuristic',
223
+ primaryColor: '#00f2ff',
224
+ apiTitle: 'StartupX API',
225
+ })
226
+ ```
227
+
228
+ ### **Enterprise/Corporate**
229
+ ```typescript
230
+ NestScrambleModule.forRoot({
231
+ theme: 'classic',
232
+ primaryColor: '#0066cc',
233
+ apiTitle: 'Enterprise API Gateway',
234
+ })
235
+ ```
236
+
237
+ ### **Personal Projects**
238
+ ```typescript
239
+ NestScrambleModule.forRoot({
240
+ theme: 'futuristic',
241
+ primaryColor: '#a855f7',
242
+ customDomainIcon: '/my-logo.png',
243
+ })
244
+ ```
245
+
246
+ ---
247
+
248
+ ## 🔥 What Makes This "Dala3" (High-End)?
249
+
250
+ 1. **✨ Attention to Detail**: Every pixel is crafted with care
251
+ 2. **🎨 Modern Design Language**: Glassmorphism, gradients, animations
252
+ 3. **⚡ Smooth Interactions**: Buttery 60fps animations
253
+ 4. **🎯 User Experience**: Intuitive, delightful, professional
254
+ 5. **🚀 Performance**: Optimized for speed and efficiency
255
+ 6. **💎 Premium Feel**: Rivals products like Stripe, Vercel, Linear
256
+
257
+ ---
258
+
259
+ ## 🛠️ Technical Implementation
260
+
261
+ ### **DocsController.ts**
262
+ - Dynamic CSS injection based on theme
263
+ - Separate methods for futuristic and classic themes
264
+ - Easter egg console script injection
265
+ - Theme toggle functionality
266
+
267
+ ### **NestScrambleModule.ts**
268
+ - Enhanced options interface
269
+ - Smart defaults with auto-detection
270
+ - Gradient terminal dashboard
271
+ - Configuration validation
272
+
273
+ ---
274
+
275
+ ## 📝 License
276
+
277
+ MIT License - Developed by **Mohamed Mustafa** (@Eng-MMustafa)
278
+
279
+ ---
280
+
281
+ ## 🌟 Credits
282
+
283
+ **Lead Architect**: Mohamed Mustafa
284
+ **GitHub**: [@Eng-MMustafa](https://github.com/Eng-MMustafa)
285
+ **Project**: [nest-scramble](https://github.com/Eng-MMustafa/nest-scramble)
286
+
287
+ ---
288
+
289
+ **Made with ✨ and passion for beautiful developer experiences.**
@@ -9,6 +9,9 @@ export interface NestScrambleOptions {
9
9
  sourcePath?: string;
10
10
  apiTitle?: string;
11
11
  apiVersion?: string;
12
+ customDomainIcon?: string;
13
+ primaryColor?: string;
14
+ theme?: 'classic' | 'futuristic';
12
15
  }
13
16
  export declare class NestScrambleModule implements OnModuleInit {
14
17
  private static moduleOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"NestScrambleModule.d.ts","sourceRoot":"","sources":["../src/NestScrambleModule.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAU,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AASxG,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBACa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,MAAM,CAAC,aAAa,CAA2B;IACvD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAgB;IAE3C,YAAY;IAIZ,OAAO,CAAC,gBAAgB;IAkBxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,mBAAwB,GAAG,aAAa;IA4EhE,MAAM,CAAC,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,aAAa;IAKrE,SAAS,CAAC,QAAQ,EAAE,kBAAkB;CAMvC"}
1
+ {"version":3,"file":"NestScrambleModule.d.ts","sourceRoot":"","sources":["../src/NestScrambleModule.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAU,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AASxG,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CAClC;AAED,qBACa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,MAAM,CAAC,aAAa,CAA2B;IACvD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAgB;IAE3C,YAAY;IAIZ,OAAO,CAAC,gBAAgB;IAsCxB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,mBAAwB,GAAG,aAAa;IA+EhE,MAAM,CAAC,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,aAAa;IAKrE,SAAS,CAAC,QAAQ,EAAE,kBAAkB;CAMvC"}
@@ -25,17 +25,36 @@ let NestScrambleModule = NestScrambleModule_1 = class NestScrambleModule {
25
25
  const port = NestScrambleModule_1.detectedPort;
26
26
  const options = NestScrambleModule_1.moduleOptions;
27
27
  const projectStructure = AutoDetector_1.AutoDetector.detectProjectStructure();
28
- console.log('\n┌──────────────────────────────────────────────────────────┐');
29
- console.log('│ 🚀 Nest-Scramble by Mohamed Mustafa is Active! │');
30
- console.log('├──────────────────────────────────────────────────────────┤');
31
- console.log(`│ 📖 Docs: http://localhost:${port}/docs${' '.repeat(Math.max(0, 26 - port.toString().length))}│`);
32
- console.log(`│ 📄 JSON: http://localhost:${port}/docs-json${' '.repeat(Math.max(0, 21 - port.toString().length))}│`);
28
+ const cyan = '\x1b[36m';
29
+ const purple = '\x1b[35m';
30
+ const green = '\x1b[32m';
31
+ const yellow = '\x1b[33m';
32
+ const bold = '\x1b[1m';
33
+ const reset = '\x1b[0m';
34
+ const dim = '\x1b[2m';
35
+ const gradient = `${cyan}${bold}`;
36
+ console.log('\n');
37
+ console.log(`${gradient}╔═══════════════════════════════════════════════════════════════╗${reset}`);
38
+ console.log(`${gradient}║${reset} ${cyan}${bold}✨ NEST-SCRAMBLE${reset} ${dim}by Mohamed Mustafa${reset} ${gradient}║${reset}`);
39
+ console.log(`${gradient}║${reset} ${purple}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${reset} ${gradient}║${reset}`);
40
+ console.log(`${gradient}║${reset} ${gradient}║${reset}`);
41
+ console.log(`${gradient}║${reset} ${green}●${reset} ${bold}Documentation${reset} ${gradient}║${reset}`);
42
+ console.log(`${gradient}║${reset} ${cyan}→${reset} http://localhost:${port}/docs ${gradient}║${reset}`);
43
+ console.log(`${gradient}║${reset} ${gradient}║${reset}`);
44
+ console.log(`${gradient}║${reset} ${green}●${reset} ${bold}OpenAPI Spec${reset} ${gradient}║${reset}`);
45
+ console.log(`${gradient}║${reset} ${cyan}→${reset} http://localhost:${port}/docs-json ${gradient}║${reset}`);
33
46
  if (options.enableMock !== false) {
34
- console.log(`│ 🎭 Mock: http://localhost:${port}/scramble-mock${' '.repeat(Math.max(0, 16 - port.toString().length))}│`);
47
+ console.log(`${gradient}║${reset} ${gradient}║${reset}`);
48
+ console.log(`${gradient}║${reset} ${green}●${reset} ${bold}Mock Server${reset} ${gradient}║${reset}`);
49
+ console.log(`${gradient}║${reset} ${cyan}→${reset} http://localhost:${port}/scramble-mock ${gradient}║${reset}`);
35
50
  }
36
- console.log(`│ ✨ Scanning: ${projectStructure.sourcePath}${' '.repeat(Math.max(0, 43 - projectStructure.sourcePath.length))}│`);
37
- console.log(`│ 🎯 Controllers: ${projectStructure.controllerPaths.length}${' '.repeat(Math.max(0, 40 - projectStructure.controllerPaths.length.toString().length))}│`);
38
- console.log('└──────────────────────────────────────────────────────────┘\n');
51
+ console.log(`${gradient}║${reset} ${gradient}║${reset}`);
52
+ console.log(`${gradient}║${reset} ${purple}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${reset} ${gradient}║${reset}`);
53
+ console.log(`${gradient}║${reset} ${yellow}📦${reset} Source Path: ${dim}${projectStructure.sourcePath}${reset} ${gradient}║${reset}`);
54
+ console.log(`${gradient}║${reset} ${yellow}🎯${reset} Controllers: ${green}${bold}${projectStructure.controllerPaths.length}${reset} ${gradient}║${reset}`);
55
+ console.log(`${gradient}║${reset} ${yellow}🎨${reset} Theme: ${options.theme === 'futuristic' ? `${purple}${bold}Futuristic${reset}` : `${dim}Classic${reset}`} ${gradient}║${reset}`);
56
+ console.log(`${gradient}╚═══════════════════════════════════════════════════════════════╝${reset}`);
57
+ console.log(`\n ${dim}Press Ctrl+C to stop the server${reset}\n`);
39
58
  }
40
59
  static forRoot(options = {}) {
41
60
  // Auto-detect project structure
@@ -50,6 +69,9 @@ let NestScrambleModule = NestScrambleModule_1 = class NestScrambleModule {
50
69
  sourcePath: options.sourcePath || projectStructure.sourcePath,
51
70
  apiTitle: options.apiTitle || AutoDetector_1.AutoDetector.getAppName(),
52
71
  apiVersion: options.apiVersion || AutoDetector_1.AutoDetector.getAppVersion(),
72
+ customDomainIcon: options.customDomainIcon || '',
73
+ primaryColor: options.primaryColor || '#00f2ff',
74
+ theme: options.theme || 'futuristic',
53
75
  };
54
76
  // Store for dashboard display
55
77
  NestScrambleModule_1.moduleOptions = config;
@@ -1 +1 @@
1
- {"version":3,"file":"NestScrambleModule.js","sourceRoot":"","sources":["../src/NestScrambleModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NestScrambleModule.js","sourceRoot":"","sources":["../src/NestScrambleModule.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
+ import { NestScrambleOptions } from '../NestScrambleModule';
1
2
  export declare const IS_PUBLIC_KEY = "isPublic";
2
3
  export declare const Public: () => import("@nestjs/common").CustomDecorator<string>;
3
4
  export declare class DocsController {
4
5
  private openApiSpec;
5
- constructor(openApiSpec: any);
6
+ private options;
7
+ constructor(openApiSpec: any, options: NestScrambleOptions);
6
8
  getDocs(res: any): void;
9
+ private getFuturisticCSS;
10
+ private getClassicCSS;
11
+ private getEasterEggScript;
7
12
  getOpenApiJson(res: any): void;
8
13
  getOpenApiJsonLegacy(res: any): void;
9
14
  getOpenApiSpec(): any;
@@ -1 +1 @@
1
- {"version":3,"file":"DocsController.d.ts","sourceRoot":"","sources":["../../src/controllers/DocsController.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,MAAM,wDAAyC,CAAC;AAE7D,qBAEa,cAAc;IAEU,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,GAAG;IAI3D,OAAO,CAAQ,GAAG,EAAE,GAAG;IA0BvB,cAAc,CAAQ,GAAG,EAAE,GAAG;IAa9B,oBAAoB,CAAQ,GAAG,EAAE,GAAG;IAKpC,cAAc;CAGf"}
1
+ {"version":3,"file":"DocsController.d.ts","sourceRoot":"","sources":["../../src/controllers/DocsController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,MAAM,wDAAyC,CAAC;AAE7D,qBAEa,cAAc;IAEU,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,OAAO;gBADP,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,mBAAmB;IAIvE,OAAO,CAAQ,GAAG,EAAE,GAAG;IAgCvB,OAAO,CAAC,gBAAgB;IAkRxB,OAAO,CAAC,aAAa;IA8CrB,OAAO,CAAC,kBAAkB;IAsB1B,cAAc,CAAQ,GAAG,EAAE,GAAG;IAa9B,oBAAoB,CAAQ,GAAG,EAAE,GAAG;IAKpC,cAAc;CAGf"}
@@ -19,32 +19,377 @@ exports.IS_PUBLIC_KEY = 'isPublic';
19
19
  const Public = () => (0, common_1.SetMetadata)(exports.IS_PUBLIC_KEY, true);
20
20
  exports.Public = Public;
21
21
  let DocsController = class DocsController {
22
- constructor(openApiSpec) {
22
+ constructor(openApiSpec, options) {
23
23
  this.openApiSpec = openApiSpec;
24
+ this.options = options;
24
25
  }
25
26
  getDocs(res) {
27
+ const isFuturistic = this.options.theme === 'futuristic';
28
+ const primaryColor = this.options.primaryColor || '#00f2ff';
29
+ const customIcon = this.options.customDomainIcon || '';
26
30
  const html = `<!DOCTYPE html>
27
31
  <html lang="en">
28
32
  <head>
29
- <title>API Documentation - Nest-Scramble</title>
33
+ <title>${this.options.apiTitle || 'API Documentation'} - Nest-Scramble</title>
30
34
  <meta charset="utf-8" />
31
35
  <meta name="viewport" content="width=device-width, initial-scale=1" />
36
+ <link rel="preconnect" href="https://fonts.googleapis.com">
37
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
38
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
39
+ ${customIcon ? `<link rel="icon" href="${customIcon}" type="image/x-icon">` : ''}
32
40
  <style>
33
- body {
34
- margin: 0;
35
- padding: 0;
36
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
37
- }
41
+ ${isFuturistic ? this.getFuturisticCSS(primaryColor) : this.getClassicCSS(primaryColor)}
38
42
  </style>
39
43
  </head>
40
44
  <body>
41
45
  <script id="api-reference" data-url="/docs-json"></script>
42
46
  <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script>
47
+ <script>
48
+ ${this.getEasterEggScript()}
49
+ </script>
43
50
  </body>
44
51
  </html>`;
45
52
  res.setHeader('Content-Type', 'text/html; charset=utf-8');
46
53
  res.send(html);
47
54
  }
55
+ getFuturisticCSS(primaryColor) {
56
+ return `
57
+ /* 🚀 Futuristic Theme by Mohamed Mustafa - Deep Space Edition */
58
+ :root {
59
+ --primary-cyber: ${primaryColor};
60
+ --primary-glow: ${primaryColor}80;
61
+ --purple-electric: #a855f7;
62
+ --deep-space: #050505;
63
+ --space-dark: #0a0a0a;
64
+ --space-card: #111111;
65
+ --space-border: #1a1a1a;
66
+ --text-primary: #ffffff;
67
+ --text-secondary: #a0a0a0;
68
+ --glow-shadow: 0 0 20px ${primaryColor}40, 0 0 40px ${primaryColor}20;
69
+ }
70
+
71
+ * {
72
+ font-family: 'Inter', 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif !important;
73
+ }
74
+
75
+ body {
76
+ margin: 0;
77
+ padding: 0;
78
+ background: var(--deep-space) !important;
79
+ color: var(--text-primary) !important;
80
+ overflow-x: hidden;
81
+ }
82
+
83
+ /* Animated Background Grid */
84
+ body::before {
85
+ content: '';
86
+ position: fixed;
87
+ top: 0;
88
+ left: 0;
89
+ width: 100%;
90
+ height: 100%;
91
+ background-image:
92
+ linear-gradient(var(--space-border) 1px, transparent 1px),
93
+ linear-gradient(90deg, var(--space-border) 1px, transparent 1px);
94
+ background-size: 50px 50px;
95
+ opacity: 0.3;
96
+ z-index: 0;
97
+ pointer-events: none;
98
+ animation: gridPulse 10s ease-in-out infinite;
99
+ }
100
+
101
+ @keyframes gridPulse {
102
+ 0%, 100% { opacity: 0.2; }
103
+ 50% { opacity: 0.4; }
104
+ }
105
+
106
+ /* Glassmorphism Cards */
107
+ .scalar-card,
108
+ [class*="card"],
109
+ [class*="panel"],
110
+ [class*="sidebar"] {
111
+ background: rgba(17, 17, 17, 0.6) !important;
112
+ backdrop-filter: blur(20px) !important;
113
+ -webkit-backdrop-filter: blur(20px) !important;
114
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
115
+ border-radius: 16px !important;
116
+ box-shadow:
117
+ 0 8px 32px rgba(0, 0, 0, 0.4),
118
+ inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
119
+ }
120
+
121
+ /* Cyber Buttons & Active States */
122
+ button,
123
+ [role="button"],
124
+ .button,
125
+ a[class*="button"] {
126
+ background: linear-gradient(135deg, var(--primary-cyber), var(--purple-electric)) !important;
127
+ border: none !important;
128
+ border-radius: 12px !important;
129
+ padding: 10px 20px !important;
130
+ color: white !important;
131
+ font-weight: 600 !important;
132
+ letter-spacing: 0.5px !important;
133
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
134
+ position: relative !important;
135
+ overflow: hidden !important;
136
+ }
137
+
138
+ button:hover,
139
+ [role="button"]:hover,
140
+ .button:hover {
141
+ transform: translateY(-2px) !important;
142
+ box-shadow: var(--glow-shadow) !important;
143
+ }
144
+
145
+ button::before {
146
+ content: '';
147
+ position: absolute;
148
+ top: 0;
149
+ left: -100%;
150
+ width: 100%;
151
+ height: 100%;
152
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
153
+ transition: left 0.5s;
154
+ }
155
+
156
+ button:hover::before {
157
+ left: 100%;
158
+ }
159
+
160
+ /* Search Bar - Spotlight Style */
161
+ input[type="search"],
162
+ input[type="text"],
163
+ [class*="search"] input {
164
+ background: rgba(17, 17, 17, 0.8) !important;
165
+ border: 2px solid rgba(255, 255, 255, 0.1) !important;
166
+ border-radius: 12px !important;
167
+ padding: 12px 20px !important;
168
+ color: var(--text-primary) !important;
169
+ font-size: 14px !important;
170
+ transition: all 0.3s ease !important;
171
+ }
172
+
173
+ input[type="search"]:focus,
174
+ input[type="text"]:focus,
175
+ [class*="search"] input:focus {
176
+ border-color: var(--primary-cyber) !important;
177
+ box-shadow: 0 0 0 3px var(--primary-glow) !important;
178
+ outline: none !important;
179
+ }
180
+
181
+ /* Code Blocks - Night Owl Theme */
182
+ pre,
183
+ code,
184
+ [class*="code"],
185
+ .hljs {
186
+ background: #011627 !important;
187
+ border: 1px solid rgba(0, 242, 255, 0.2) !important;
188
+ border-radius: 12px !important;
189
+ padding: 16px !important;
190
+ font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace !important;
191
+ font-size: 13px !important;
192
+ line-height: 1.6 !important;
193
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3) !important;
194
+ }
195
+
196
+ code {
197
+ color: #82AAFF !important;
198
+ }
199
+
200
+ /* Sidebar Glassmorphism */
201
+ [class*="sidebar"],
202
+ nav,
203
+ aside {
204
+ background: rgba(10, 10, 10, 0.7) !important;
205
+ backdrop-filter: blur(30px) !important;
206
+ border-right: 1px solid rgba(255, 255, 255, 0.08) !important;
207
+ }
208
+
209
+ /* Custom Branding Badge */
210
+ body::after {
211
+ content: '✨ Powered by Nest-Scramble';
212
+ position: fixed;
213
+ bottom: 20px;
214
+ right: 20px;
215
+ background: linear-gradient(135deg, var(--primary-cyber), var(--purple-electric));
216
+ padding: 8px 16px;
217
+ border-radius: 20px;
218
+ font-size: 11px;
219
+ font-weight: 600;
220
+ letter-spacing: 0.5px;
221
+ box-shadow: var(--glow-shadow);
222
+ z-index: 9999;
223
+ animation: badgePulse 3s ease-in-out infinite;
224
+ cursor: pointer;
225
+ }
226
+
227
+ @keyframes badgePulse {
228
+ 0%, 100% {
229
+ box-shadow: 0 0 20px ${primaryColor}40, 0 0 40px ${primaryColor}20;
230
+ }
231
+ 50% {
232
+ box-shadow: 0 0 30px ${primaryColor}60, 0 0 60px ${primaryColor}30;
233
+ }
234
+ }
235
+
236
+ /* Scrollbar Styling */
237
+ ::-webkit-scrollbar {
238
+ width: 10px;
239
+ height: 10px;
240
+ }
241
+
242
+ ::-webkit-scrollbar-track {
243
+ background: var(--space-dark);
244
+ }
245
+
246
+ ::-webkit-scrollbar-thumb {
247
+ background: linear-gradient(180deg, var(--primary-cyber), var(--purple-electric));
248
+ border-radius: 10px;
249
+ }
250
+
251
+ ::-webkit-scrollbar-thumb:hover {
252
+ background: var(--primary-cyber);
253
+ }
254
+
255
+ /* Headers with Gradient */
256
+ h1, h2, h3, h4, h5, h6 {
257
+ background: linear-gradient(135deg, var(--primary-cyber), var(--purple-electric));
258
+ -webkit-background-clip: text;
259
+ -webkit-text-fill-color: transparent;
260
+ background-clip: text;
261
+ font-weight: 700 !important;
262
+ }
263
+
264
+ /* Links */
265
+ a {
266
+ color: var(--primary-cyber) !important;
267
+ text-decoration: none !important;
268
+ transition: all 0.3s ease !important;
269
+ }
270
+
271
+ a:hover {
272
+ color: var(--purple-electric) !important;
273
+ text-shadow: 0 0 10px var(--primary-glow) !important;
274
+ }
275
+
276
+ /* Method Badges */
277
+ [class*="method"],
278
+ [class*="badge"] {
279
+ border-radius: 8px !important;
280
+ padding: 4px 12px !important;
281
+ font-weight: 600 !important;
282
+ font-size: 11px !important;
283
+ letter-spacing: 0.5px !important;
284
+ }
285
+
286
+ /* Response Status Colors */
287
+ [class*="status-200"],
288
+ [class*="success"] {
289
+ background: linear-gradient(135deg, #10b981, #059669) !important;
290
+ color: white !important;
291
+ }
292
+
293
+ [class*="status-400"],
294
+ [class*="error"] {
295
+ background: linear-gradient(135deg, #ef4444, #dc2626) !important;
296
+ color: white !important;
297
+ }
298
+
299
+ /* Smooth Transitions */
300
+ * {
301
+ transition: background 0.3s ease, border 0.3s ease, box-shadow 0.3s ease !important;
302
+ }
303
+
304
+ /* Theme Toggle Button */
305
+ .theme-toggle {
306
+ position: fixed;
307
+ top: 20px;
308
+ right: 20px;
309
+ background: rgba(17, 17, 17, 0.8) !important;
310
+ backdrop-filter: blur(10px);
311
+ border: 1px solid rgba(255, 255, 255, 0.1);
312
+ border-radius: 12px;
313
+ padding: 8px 16px;
314
+ color: var(--text-primary);
315
+ font-size: 12px;
316
+ font-weight: 600;
317
+ cursor: pointer;
318
+ z-index: 9998;
319
+ transition: all 0.3s ease;
320
+ }
321
+
322
+ .theme-toggle:hover {
323
+ border-color: var(--primary-cyber);
324
+ box-shadow: 0 0 15px var(--primary-glow);
325
+ }
326
+ `;
327
+ }
328
+ getClassicCSS(primaryColor) {
329
+ return `
330
+ /* Classic Theme */
331
+ body {
332
+ margin: 0;
333
+ padding: 0;
334
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
335
+ background: #ffffff;
336
+ color: #1a1a1a;
337
+ }
338
+
339
+ button,
340
+ [role="button"] {
341
+ background: ${primaryColor} !important;
342
+ color: white !important;
343
+ border: none !important;
344
+ border-radius: 8px !important;
345
+ padding: 10px 20px !important;
346
+ font-weight: 600 !important;
347
+ transition: all 0.3s ease !important;
348
+ }
349
+
350
+ button:hover {
351
+ opacity: 0.9 !important;
352
+ transform: translateY(-1px) !important;
353
+ }
354
+
355
+ input[type="search"],
356
+ input[type="text"] {
357
+ border: 2px solid #e5e5e5 !important;
358
+ border-radius: 8px !important;
359
+ padding: 10px 16px !important;
360
+ transition: all 0.3s ease !important;
361
+ }
362
+
363
+ input:focus {
364
+ border-color: ${primaryColor} !important;
365
+ outline: none !important;
366
+ }
367
+
368
+ a {
369
+ color: ${primaryColor} !important;
370
+ }
371
+ `;
372
+ }
373
+ getEasterEggScript() {
374
+ return `
375
+ // Easter Egg Console Message
376
+ console.log('%c✨ Engineered with passion by Mohamed Mustafa', 'color: #00f2ff; font-size: 16px; font-weight: bold; text-shadow: 0 0 10px #00f2ff;');
377
+ console.log('%cNest-Scramble is active.', 'color: #a855f7; font-size: 14px; font-weight: 600;');
378
+ console.log('%c🚀 GitHub: https://github.com/Eng-MMustafa/nest-scramble', 'color: #ffffff; font-size: 12px;');
379
+
380
+ // Theme Toggle Functionality
381
+ const themeToggle = document.createElement('div');
382
+ themeToggle.className = 'theme-toggle';
383
+ themeToggle.textContent = '🎨 Theme';
384
+ themeToggle.onclick = () => {
385
+ const currentTheme = localStorage.getItem('nest-scramble-theme') || 'futuristic';
386
+ const newTheme = currentTheme === 'futuristic' ? 'classic' : 'futuristic';
387
+ localStorage.setItem('nest-scramble-theme', newTheme);
388
+ window.location.reload();
389
+ };
390
+ document.body.appendChild(themeToggle);
391
+ `;
392
+ }
48
393
  getOpenApiJson(res) {
49
394
  try {
50
395
  const jsonString = JSON.stringify(this.openApiSpec, null, 2);
@@ -96,6 +441,7 @@ exports.DocsController = DocsController = __decorate([
96
441
  (0, common_1.Controller)(),
97
442
  (0, exports.Public)(),
98
443
  __param(0, (0, common_1.Inject)('NEST_SCRAMBLE_OPENAPI')),
99
- __metadata("design:paramtypes", [Object])
444
+ __param(1, (0, common_1.Inject)('NEST_SCRAMBLE_OPTIONS')),
445
+ __metadata("design:paramtypes", [Object, Object])
100
446
  ], DocsController);
101
447
  //# sourceMappingURL=DocsController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocsController.js","sourceRoot":"","sources":["../../src/controllers/DocsController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAAkE;AAClE,2CAA2E;AAE9D,QAAA,aAAa,GAAG,UAAU,CAAC;AACjC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,qBAAa,EAAE,IAAI,CAAC,CAAC;AAAhD,QAAA,MAAM,UAA0C;AAItD,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAC2C,WAAgB;QAAhB,gBAAW,GAAX,WAAW,CAAK;IACxD,CAAC;IAGJ,OAAO,CAAQ,GAAQ;QACrB,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;QAkBT,CAAC;QAEL,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAGD,cAAc,CAAQ,GAAQ;QAC5B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7D,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;YACjE,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAGD,oBAAoB,CAAQ,GAAQ;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAGD,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF,CAAA;AArDY,wCAAc;AAMzB;IADC,IAAA,YAAG,EAAC,MAAM,CAAC;IACH,WAAA,IAAA,YAAG,GAAE,CAAA;;;;6CAuBb;AAGD;IADC,IAAA,YAAG,EAAC,WAAW,CAAC;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;;;;oDAUpB;AAGD;IADC,IAAA,YAAG,EAAC,WAAW,CAAC;IACK,WAAA,IAAA,YAAG,GAAE,CAAA;;;;0DAE1B;AAGD;IADC,IAAA,YAAG,EAAC,WAAW,CAAC;;;;oDAGhB;yBApDU,cAAc;IAF1B,IAAA,mBAAU,GAAE;IACZ,IAAA,cAAM,GAAE;IAGJ,WAAA,IAAA,eAAM,EAAC,uBAAuB,CAAC,CAAA;;GAFvB,cAAc,CAqD1B"}
1
+ {"version":3,"file":"DocsController.js","sourceRoot":"","sources":["../../src/controllers/DocsController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Nest-Scramble Futuristic UI - Usage Example
3
+ * Developed by Mohamed Mustafa (@Eng-MMustafa)
4
+ */
5
+
6
+ import { Module } from '@nestjs/common';
7
+ import { NestScrambleModule } from 'nest-scramble';
8
+
9
+ // ============================================
10
+ // Example 1: Full Futuristic Setup
11
+ // ============================================
12
+ @Module({
13
+ imports: [
14
+ NestScrambleModule.forRoot({
15
+ // 🎨 Futuristic theme with cyber aesthetics
16
+ theme: 'futuristic',
17
+
18
+ // 🌈 Custom brand color (Cyber-Cyan by default)
19
+ primaryColor: '#00f2ff',
20
+
21
+ // 🖼️ Custom favicon for your brand
22
+ customDomainIcon: 'https://your-domain.com/favicon.ico',
23
+
24
+ // 📝 API metadata
25
+ apiTitle: 'My Futuristic API',
26
+ apiVersion: '2.0.0',
27
+
28
+ // 🚀 Additional options
29
+ enableMock: true,
30
+ autoExportPostman: true,
31
+ postmanOutputPath: './postman-collection.json',
32
+ }),
33
+ ],
34
+ })
35
+ export class FuturisticAppModule {}
36
+
37
+ // ============================================
38
+ // Example 2: Custom Purple Theme
39
+ // ============================================
40
+ @Module({
41
+ imports: [
42
+ NestScrambleModule.forRoot({
43
+ theme: 'futuristic',
44
+ primaryColor: '#a855f7', // Electric Purple
45
+ apiTitle: 'Purple Dream API',
46
+ }),
47
+ ],
48
+ })
49
+ export class PurpleThemeModule {}
50
+
51
+ // ============================================
52
+ // Example 3: Classic Professional Theme
53
+ // ============================================
54
+ @Module({
55
+ imports: [
56
+ NestScrambleModule.forRoot({
57
+ theme: 'classic',
58
+ primaryColor: '#0066cc', // Corporate Blue
59
+ apiTitle: 'Enterprise API Gateway',
60
+ apiVersion: '1.0.0',
61
+ }),
62
+ ],
63
+ })
64
+ export class ClassicThemeModule {}
65
+
66
+ // ============================================
67
+ // Example 4: Minimal Setup (Uses Defaults)
68
+ // ============================================
69
+ @Module({
70
+ imports: [
71
+ NestScrambleModule.forRoot({
72
+ // Defaults to futuristic theme with #00f2ff
73
+ apiTitle: 'Quick Start API',
74
+ }),
75
+ ],
76
+ })
77
+ export class MinimalSetupModule {}
78
+
79
+ // ============================================
80
+ // Example 5: Startup/SaaS Branding
81
+ // ============================================
82
+ @Module({
83
+ imports: [
84
+ NestScrambleModule.forRoot({
85
+ theme: 'futuristic',
86
+ primaryColor: '#00f2ff',
87
+ customDomainIcon: 'https://startup.com/logo.png',
88
+ apiTitle: 'StartupX Platform API',
89
+ apiVersion: '3.0.0',
90
+ baseUrl: 'https://api.startup.com',
91
+ }),
92
+ ],
93
+ })
94
+ export class StartupModule {}
95
+
96
+ // ============================================
97
+ // Example 6: Green Eco Theme
98
+ // ============================================
99
+ @Module({
100
+ imports: [
101
+ NestScrambleModule.forRoot({
102
+ theme: 'futuristic',
103
+ primaryColor: '#10b981', // Emerald Green
104
+ apiTitle: 'EcoTech API',
105
+ apiVersion: '1.5.0',
106
+ }),
107
+ ],
108
+ })
109
+ export class EcoThemeModule {}
110
+
111
+ // ============================================
112
+ // Example 7: Orange Energy Theme
113
+ // ============================================
114
+ @Module({
115
+ imports: [
116
+ NestScrambleModule.forRoot({
117
+ theme: 'futuristic',
118
+ primaryColor: '#f59e0b', // Amber Orange
119
+ apiTitle: 'Energy Platform API',
120
+ }),
121
+ ],
122
+ })
123
+ export class EnergyThemeModule {}
124
+
125
+ // ============================================
126
+ // Example 8: Full Configuration
127
+ // ============================================
128
+ @Module({
129
+ imports: [
130
+ NestScrambleModule.forRoot({
131
+ // UI Customization
132
+ theme: 'futuristic',
133
+ primaryColor: '#00f2ff',
134
+ customDomainIcon: '/favicon.ico',
135
+
136
+ // API Documentation
137
+ apiTitle: 'Complete API Documentation',
138
+ apiVersion: '2.5.0',
139
+
140
+ // Routing
141
+ path: '/api-docs',
142
+
143
+ // Features
144
+ enableMock: true,
145
+ autoExportPostman: true,
146
+ postmanOutputPath: './collections/api.postman.json',
147
+
148
+ // Server Configuration
149
+ baseUrl: 'https://api.example.com',
150
+ sourcePath: 'src',
151
+ }),
152
+ ],
153
+ })
154
+ export class FullConfigModule {}
155
+
156
+ /**
157
+ * 🎨 Available Primary Colors (Examples):
158
+ *
159
+ * Cyber-Cyan: #00f2ff (Default)
160
+ * Electric Purple: #a855f7
161
+ * Neon Pink: #ec4899
162
+ * Emerald Green: #10b981
163
+ * Amber Orange: #f59e0b
164
+ * Sky Blue: #0ea5e9
165
+ * Rose Red: #f43f5e
166
+ * Violet: #8b5cf6
167
+ * Lime Green: #84cc16
168
+ * Fuchsia: #d946ef
169
+ */
170
+
171
+ /**
172
+ * 🚀 Features You Get:
173
+ *
174
+ * ✨ Futuristic Theme:
175
+ * - Deep space dark mode (#050505)
176
+ * - Animated background grid
177
+ * - Glassmorphism cards with backdrop blur
178
+ * - Gradient buttons (cyan → purple)
179
+ * - Spotlight-style search bar
180
+ * - Night Owl code syntax theme
181
+ * - Custom scrollbar styling
182
+ * - Glowing "Powered by Nest-Scramble" badge
183
+ *
184
+ * 🎭 Easter Eggs:
185
+ * - Beautiful console messages
186
+ * - Theme toggle button (top-right)
187
+ * - localStorage theme persistence
188
+ *
189
+ * 🖥️ Terminal UI:
190
+ * - Gradient dashboard with ANSI colors
191
+ * - Bold emojis for visual hierarchy
192
+ * - Color-coded sections
193
+ * - Professional startup display
194
+ *
195
+ * 🎯 Dynamic Branding:
196
+ * - One-line color customization
197
+ * - Custom favicon support
198
+ * - Branded API title
199
+ * - Version display
200
+ */
201
+
202
+ /**
203
+ * 📖 Usage Instructions:
204
+ *
205
+ * 1. Import NestScrambleModule in your app.module.ts
206
+ * 2. Configure with forRoot() method
207
+ * 3. Start your NestJS application
208
+ * 4. Navigate to http://localhost:3000/docs
209
+ * 5. Enjoy the futuristic UI! ✨
210
+ *
211
+ * 🎨 Theme Toggle:
212
+ * - Click the "🎨 Theme" button (top-right)
213
+ * - Switch between Futuristic and Classic
214
+ * - Preference saved in localStorage
215
+ *
216
+ * 🔍 Console Easter Egg:
217
+ * - Open browser DevTools (F12)
218
+ * - Check the Console tab
219
+ * - See the beautiful messages! 🚀
220
+ */
221
+
222
+ export default FuturisticAppModule;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nest-scramble",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "A next-generation, decorator-free API documentation engine and intelligent mock server for NestJS, engineered by Mohamed Mustafa",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",