nest-scramble 1.6.0 → 1.7.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.
@@ -2,22 +2,17 @@ export declare const IS_PUBLIC_KEY = "isPublic";
2
2
  export declare const Public: () => import("@nestjs/common").CustomDecorator<string>;
3
3
  export declare class DocsController {
4
4
  private openApiSpec;
5
- private endpoints;
6
- private groupedEndpoints;
7
5
  constructor(openApiSpec: any);
8
- private groupByTag;
9
- private formatJson;
10
6
  getDocs(res: any): void;
11
- getControllers(res: any): void;
12
- getController(name: string, res: any): void;
13
- getEndpoint(id: string, res: any): void;
7
+ getEndpointPage(res: any): void;
14
8
  private extractEndpoints;
15
- private renderPage;
16
- private renderOverview;
17
- private renderControllersList;
18
- private renderControllerPage;
19
- private renderEndpointPage;
9
+ private generateMainPage;
10
+ private groupByTag;
11
+ private renderGroupedEndpoints;
12
+ private renderEndpointModals;
13
+ private formatJson;
20
14
  getOpenApiJson(res: any): void;
15
+ getOpenApiJsonLegacy(res: any): void;
21
16
  getOpenApiSpec(): any;
22
17
  }
23
18
  //# sourceMappingURL=DocsController.d.ts.map
@@ -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;IAKU,OAAO,CAAC,WAAW;IAJtD,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,gBAAgB,CAA2B;gBAGR,WAAW,EAAE,GAAG;IAM3D,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAQ,GAAG,EAAE,GAAG;IAWvB,cAAc,CAAQ,GAAG,EAAE,GAAG;IAc9B,aAAa,CAAgB,IAAI,EAAE,MAAM,EAAS,GAAG,EAAE,GAAG;IAsB1D,WAAW,CAAc,EAAE,EAAE,MAAM,EAAS,GAAG,EAAE,GAAG;IAwBpD,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,UAAU;IA4PlB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,kBAAkB;IA0C1B,cAAc,CAAQ,GAAG,EAAE,GAAG;IAa9B,cAAc;CAGf"}
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;IAQvB,eAAe,CAAQ,GAAG,EAAE,GAAG;IAO/B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,gBAAgB;IA8YxB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,oBAAoB;IAmE5B,OAAO,CAAC,UAAU;IAOlB,cAAc,CAAQ,GAAG,EAAE,GAAG;IAa9B,oBAAoB,CAAQ,GAAG,EAAE,GAAG;IAKpC,cAAc;CAGf"}
@@ -21,90 +21,16 @@ exports.Public = Public;
21
21
  let DocsController = class DocsController {
22
22
  constructor(openApiSpec) {
23
23
  this.openApiSpec = openApiSpec;
24
- this.endpoints = this.extractEndpoints();
25
- this.groupedEndpoints = this.groupByTag(this.endpoints);
26
- }
27
- groupByTag(endpoints) {
28
- const grouped = {};
29
- endpoints.forEach(endpoint => {
30
- const tag = endpoint.tags?.[0] || 'Other';
31
- if (!grouped[tag]) {
32
- grouped[tag] = [];
33
- }
34
- grouped[tag].push(endpoint);
35
- });
36
- return grouped;
37
- }
38
- formatJson(obj) {
39
- if (!obj)
40
- return '';
41
- try {
42
- return JSON.stringify(obj, null, 2)
43
- .replace(/</g, '&lt;')
44
- .replace(/>/g, '&gt;');
45
- }
46
- catch (e) {
47
- return String(obj);
48
- }
49
24
  }
50
25
  getDocs(res) {
51
- const html = this.renderPage({
52
- title: 'API Documentation',
53
- content: this.renderOverview(),
54
- breadcrumbs: [{ title: 'Documentation' }]
55
- });
56
- res.setHeader('Content-Type', 'text/html; charset=utf-8');
57
- res.send(html);
58
- }
59
- getControllers(res) {
60
- const html = this.renderPage({
61
- title: 'Controllers - API Documentation',
62
- content: this.renderControllersList(),
63
- breadcrumbs: [
64
- { title: 'Documentation', url: '/docs' },
65
- { title: 'Controllers' }
66
- ]
67
- });
26
+ const endpoints = this.extractEndpoints();
27
+ const html = this.generateMainPage(endpoints);
68
28
  res.setHeader('Content-Type', 'text/html; charset=utf-8');
69
29
  res.send(html);
70
30
  }
71
- getController(name, res) {
72
- const decodedName = decodeURIComponent(name);
73
- const endpoints = this.groupedEndpoints[decodedName] || [];
74
- if (endpoints.length === 0) {
75
- throw new common_1.NotFoundException('Controller not found');
76
- }
77
- const html = this.renderPage({
78
- title: `${decodedName} - API Documentation`,
79
- content: this.renderControllerPage(decodedName, endpoints),
80
- breadcrumbs: [
81
- { title: 'Documentation', url: '/docs' },
82
- { title: 'Controllers', url: '/docs/controllers' },
83
- { title: decodedName }
84
- ]
85
- });
86
- res.setHeader('Content-Type', 'text/html; charset=utf-8');
87
- res.send(html);
88
- }
89
- getEndpoint(id, res) {
90
- const endpoint = this.endpoints.find(e => e.id === id);
91
- if (!endpoint) {
92
- throw new common_1.NotFoundException('Endpoint not found');
93
- }
94
- const controllerName = endpoint.tags?.[0] || 'API';
95
- const html = this.renderPage({
96
- title: `${endpoint.summary || endpoint.path} - API Documentation`,
97
- content: this.renderEndpointPage(endpoint),
98
- breadcrumbs: [
99
- { title: 'Documentation', url: '/docs' },
100
- { title: 'Controllers', url: '/docs/controllers' },
101
- {
102
- title: controllerName,
103
- url: `/docs/controller/${encodeURIComponent(controllerName)}`
104
- },
105
- { title: endpoint.summary || 'Endpoint' }
106
- ]
107
- });
31
+ getEndpointPage(res) {
32
+ const endpoints = this.extractEndpoints();
33
+ const html = this.generateMainPage(endpoints);
108
34
  res.setHeader('Content-Type', 'text/html; charset=utf-8');
109
35
  res.send(html);
110
36
  }
@@ -116,7 +42,7 @@ let DocsController = class DocsController {
116
42
  const details = detailsRaw;
117
43
  if (['get', 'post', 'put', 'patch', 'delete'].includes(method.toLowerCase())) {
118
44
  endpoints.push({
119
- id: `${method}-${path}`.replace(/[^a-zA-Z0-9-]/g, '-'),
45
+ id: `${method}-${path}`.replace(/[^a-zA-Z0-9]/g, '-'),
120
46
  method: method.toUpperCase(),
121
47
  path,
122
48
  summary: details.summary || '',
@@ -132,364 +58,504 @@ let DocsController = class DocsController {
132
58
  }
133
59
  return endpoints;
134
60
  }
135
- renderPage(options) {
61
+ generateMainPage(endpoints) {
62
+ const groupedEndpoints = this.groupByTag(endpoints);
136
63
  return `<!DOCTYPE html>
137
64
  <html lang="en">
138
65
  <head>
139
66
  <meta charset="UTF-8">
140
67
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
141
- <title>${options.title}</title>
68
+ <title>${this.openApiSpec?.info?.title || 'API Documentation'}</title>
142
69
  <style>
143
- :root {
144
- /* Light theme colors */
145
- --bg-color: #f7fafc;
146
- --text-color: #1a202c;
147
- --card-bg: #ffffff;
148
- --card-border: #e2e8f0;
149
- --card-shadow: rgba(0, 0, 0, 0.1);
150
- --method-get: #48bb78;
151
- --method-post: #4299e1;
152
- --method-put: #ed8936;
153
- --method-patch: #9f7aea;
154
- --method-delete: #f56565;
155
- --code-bg: #f0f4f8;
156
- --link-color: #4299e1;
157
- --hover-bg: #edf2f7;
158
- }
159
-
160
- [data-theme="dark"] {
161
- --bg-color: #1a202c;
162
- --text-color: #e2e8f0;
163
- --card-bg: #2d3748;
164
- --card-border: #4a5568;
165
- --card-shadow: rgba(0, 0, 0, 0.3);
166
- --method-get: #68d391;
167
- --method-post: #63b3ed;
168
- --method-put: #f6ad55;
169
- --method-patch: #b794f4;
170
- --method-delete: #fc8181;
171
- --code-bg: #2d3748;
172
- --link-color: #63b3ed;
173
- --hover-bg: #4a5568;
174
- }
175
-
176
70
  * {
177
71
  margin: 0;
178
72
  padding: 0;
179
73
  box-sizing: border-box;
180
- transition: background-color 0.3s ease, color 0.3s ease;
181
74
  }
182
-
75
+
183
76
  body {
184
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
185
- line-height: 1.6;
186
- color: var(--text-color);
187
- background-color: var(--bg-color);
188
- max-width: 1200px;
189
- margin: 0 auto;
190
- padding: 20px;
77
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
78
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
191
79
  min-height: 100vh;
80
+ color: #1a202c;
192
81
  }
193
-
194
- .theme-toggle {
195
- position: fixed;
196
- top: 20px;
197
- right: 20px;
198
- background: var(--card-bg);
199
- border: 1px solid var(--card-border);
200
- color: var(--text-color);
201
- padding: 8px 16px;
202
- border-radius: 20px;
203
- cursor: pointer;
82
+
83
+ .container {
84
+ max-width: 1400px;
85
+ margin: 0 auto;
86
+ padding: 2rem;
87
+ }
88
+
89
+ .header {
90
+ text-align: center;
91
+ color: white;
92
+ margin-bottom: 3rem;
93
+ animation: fadeInDown 0.6s ease-out;
94
+ }
95
+
96
+ .header h1 {
97
+ font-size: 2.5rem;
98
+ font-weight: 700;
99
+ margin-bottom: 0.5rem;
100
+ text-shadow: 0 2px 10px rgba(0,0,0,0.2);
101
+ }
102
+
103
+ .header p {
104
+ font-size: 1.1rem;
105
+ opacity: 0.95;
106
+ }
107
+
108
+ .search-box {
109
+ max-width: 600px;
110
+ margin: 0 auto 3rem;
111
+ animation: fadeIn 0.8s ease-out;
112
+ }
113
+
114
+ .search-input {
115
+ width: 100%;
116
+ padding: 1rem 1.5rem;
117
+ font-size: 1rem;
118
+ border: none;
119
+ border-radius: 12px;
120
+ background: white;
121
+ box-shadow: 0 10px 30px rgba(0,0,0,0.2);
122
+ transition: all 0.3s ease;
123
+ }
124
+
125
+ .search-input:focus {
126
+ outline: none;
127
+ box-shadow: 0 15px 40px rgba(0,0,0,0.3);
128
+ transform: translateY(-2px);
129
+ }
130
+
131
+ .endpoints-grid {
132
+ display: grid;
133
+ gap: 1.5rem;
134
+ animation: fadeInUp 0.8s ease-out;
135
+ }
136
+
137
+ .tag-section {
138
+ background: white;
139
+ border-radius: 16px;
140
+ padding: 2rem;
141
+ box-shadow: 0 10px 30px rgba(0,0,0,0.15);
142
+ transition: all 0.3s ease;
143
+ }
144
+
145
+ .tag-section:hover {
146
+ box-shadow: 0 15px 40px rgba(0,0,0,0.2);
147
+ transform: translateY(-4px);
148
+ }
149
+
150
+ .tag-title {
151
+ font-size: 1.5rem;
152
+ font-weight: 600;
153
+ margin-bottom: 1.5rem;
154
+ color: #2d3748;
204
155
  display: flex;
205
156
  align-items: center;
206
- gap: 8px;
207
- z-index: 1000;
208
- box-shadow: 0 2px 4px var(--card-shadow);
209
- }
210
-
211
- .theme-toggle:hover {
212
- background: var(--hover-bg);
213
- }
214
-
215
- .theme-toggle svg {
216
- width: 16px;
217
- height: 16px;
218
- }
219
-
220
- .breadcrumb {
221
- margin: 40px 0 20px;
222
- padding: 10px 0;
223
- border-bottom: 1px solid var(--card-border);
224
- }
225
-
226
- .breadcrumb a {
227
- color: var(--link-color);
228
- text-decoration: none;
229
- }
230
-
231
- .breadcrumb a:hover {
232
- text-decoration: underline;
157
+ gap: 0.5rem;
233
158
  }
234
-
235
- .method {
236
- display: inline-block;
237
- padding: 2px 8px;
238
- border-radius: 3px;
159
+
160
+ .tag-badge {
161
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
239
162
  color: white;
240
- font-weight: bold;
241
- margin-right: 10px;
242
- font-size: 0.8em;
243
- }
244
-
245
- .get { background: var(--method-get); }
246
- .post { background: var(--method-post); }
247
- .put { background: var(--method-put); }
248
- .patch { background: var(--method-patch); }
249
- .delete { background: var(--method-delete); }
250
-
163
+ padding: 0.25rem 0.75rem;
164
+ border-radius: 20px;
165
+ font-size: 0.875rem;
166
+ font-weight: 500;
167
+ }
168
+
169
+ .endpoint-list {
170
+ display: grid;
171
+ gap: 1rem;
172
+ }
173
+
251
174
  .endpoint-card {
252
- background: var(--card-bg);
253
- margin: 15px 0;
254
- padding: 15px;
255
- border: 1px solid var(--card-border);
256
- border-radius: 8px;
257
- box-shadow: 0 1px 3px var(--card-shadow);
258
- transition: all 0.2s ease;
175
+ background: #f7fafc;
176
+ border-radius: 12px;
177
+ padding: 1.25rem;
178
+ cursor: pointer;
179
+ transition: all 0.3s ease;
180
+ border: 2px solid transparent;
181
+ text-decoration: none;
182
+ display: block;
259
183
  }
260
-
184
+
261
185
  .endpoint-card:hover {
262
- transform: translateY(-2px);
263
- box-shadow: 0 4px 6px rgba(0,0,0,0.1);
186
+ background: white;
187
+ border-color: #667eea;
188
+ transform: translateX(8px);
189
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);
264
190
  }
265
-
191
+
266
192
  .endpoint-header {
267
193
  display: flex;
268
194
  align-items: center;
269
- margin-bottom: 10px;
195
+ gap: 1rem;
196
+ margin-bottom: 0.75rem;
270
197
  }
271
-
198
+
199
+ .method-badge {
200
+ padding: 0.375rem 0.875rem;
201
+ border-radius: 6px;
202
+ font-weight: 600;
203
+ font-size: 0.875rem;
204
+ text-transform: uppercase;
205
+ letter-spacing: 0.5px;
206
+ min-width: 70px;
207
+ text-align: center;
208
+ }
209
+
210
+ .method-get { background: #c6f6d5; color: #22543d; }
211
+ .method-post { background: #bee3f8; color: #2c5282; }
212
+ .method-put { background: #feebc8; color: #7c2d12; }
213
+ .method-patch { background: #e9d8fd; color: #44337a; }
214
+ .method-delete { background: #fed7d7; color: #742a2a; }
215
+
272
216
  .endpoint-path {
273
217
  font-family: 'Courier New', monospace;
274
- font-size: 1.1em;
275
- color: var(--text-color);
218
+ font-size: 1rem;
219
+ color: #2d3748;
220
+ font-weight: 500;
221
+ flex: 1;
276
222
  }
277
-
223
+
278
224
  .endpoint-summary {
279
- color: var(--text-color);
280
- opacity: 0.9;
281
- margin-top: 8px;
225
+ color: #718096;
226
+ font-size: 0.95rem;
227
+ line-height: 1.5;
282
228
  }
283
-
284
- .section {
285
- margin-bottom: 2rem;
229
+
230
+ .endpoint-detail {
231
+ display: none;
232
+ position: fixed;
233
+ top: 0;
234
+ left: 0;
235
+ right: 0;
236
+ bottom: 0;
237
+ background: rgba(0,0,0,0.5);
238
+ z-index: 1000;
239
+ overflow-y: auto;
240
+ animation: fadeIn 0.3s ease-out;
286
241
  }
287
-
288
- h1 {
289
- color: var(--text-color);
290
- margin-bottom: 1rem;
242
+
243
+ .endpoint-detail.active {
244
+ display: flex;
245
+ align-items: center;
246
+ justify-content: center;
247
+ padding: 2rem;
291
248
  }
292
-
293
- h2 {
294
- color: var(--text-color);
295
- margin: 1.5rem 0 1rem;
249
+
250
+ .detail-content {
251
+ background: white;
252
+ border-radius: 16px;
253
+ max-width: 900px;
254
+ width: 100%;
255
+ max-height: 90vh;
256
+ overflow-y: auto;
257
+ box-shadow: 0 20px 60px rgba(0,0,0,0.3);
258
+ animation: slideUp 0.4s ease-out;
259
+ }
260
+
261
+ .detail-header {
262
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
263
+ color: white;
264
+ padding: 2rem;
265
+ border-radius: 16px 16px 0 0;
266
+ position: sticky;
267
+ top: 0;
268
+ z-index: 10;
269
+ }
270
+
271
+ .detail-close {
272
+ float: right;
273
+ background: rgba(255,255,255,0.2);
274
+ border: none;
275
+ color: white;
296
276
  font-size: 1.5rem;
277
+ width: 40px;
278
+ height: 40px;
279
+ border-radius: 50%;
280
+ cursor: pointer;
281
+ transition: all 0.3s ease;
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
+ }
286
+
287
+ .detail-close:hover {
288
+ background: rgba(255,255,255,0.3);
289
+ transform: rotate(90deg);
290
+ }
291
+
292
+ .detail-body {
293
+ padding: 2rem;
294
+ }
295
+
296
+ .section {
297
+ margin-bottom: 2rem;
297
298
  }
298
-
299
- h3 {
300
- color: var(--text-color);
301
- margin: 1.25rem 0 0.75rem;
299
+
300
+ .section-title {
302
301
  font-size: 1.25rem;
302
+ font-weight: 600;
303
+ color: #2d3748;
304
+ margin-bottom: 1rem;
305
+ padding-bottom: 0.5rem;
306
+ border-bottom: 2px solid #e2e8f0;
303
307
  }
304
-
305
- pre {
306
- background: var(--code-bg);
308
+
309
+ .param-item, .response-item {
310
+ background: #f7fafc;
307
311
  padding: 1rem;
308
- border-radius: 4px;
309
- overflow-x: auto;
312
+ border-radius: 8px;
313
+ margin-bottom: 0.75rem;
314
+ border-left: 3px solid #667eea;
315
+ }
316
+
317
+ .param-name, .response-code {
318
+ font-weight: 600;
319
+ color: #2d3748;
310
320
  font-family: 'Courier New', monospace;
311
- font-size: 0.9em;
312
- border: 1px solid var(--card-border);
313
- }
314
-
315
- code {
316
- background: var(--code-bg);
317
- padding: 2px 4px;
318
- border-radius: 3px;
321
+ }
322
+
323
+ .param-type {
324
+ color: #667eea;
325
+ font-size: 0.875rem;
326
+ font-weight: 500;
327
+ margin-left: 0.5rem;
328
+ }
329
+
330
+ .param-desc {
331
+ color: #718096;
332
+ margin-top: 0.5rem;
333
+ font-size: 0.95rem;
334
+ }
335
+
336
+ .code-block {
337
+ background: #1a202c;
338
+ color: #e2e8f0;
339
+ padding: 1.5rem;
340
+ border-radius: 8px;
341
+ overflow-x: auto;
319
342
  font-family: 'Courier New', monospace;
320
- font-size: 0.9em;
321
- border: 1px solid var(--card-border);
343
+ font-size: 0.9rem;
344
+ line-height: 1.6;
345
+ }
346
+
347
+ .no-results {
348
+ text-align: center;
349
+ padding: 3rem;
350
+ color: white;
351
+ font-size: 1.1rem;
352
+ }
353
+
354
+ @keyframes fadeIn {
355
+ from { opacity: 0; }
356
+ to { opacity: 1; }
357
+ }
358
+
359
+ @keyframes fadeInDown {
360
+ from { opacity: 0; transform: translateY(-20px); }
361
+ to { opacity: 1; transform: translateY(0); }
362
+ }
363
+
364
+ @keyframes fadeInUp {
365
+ from { opacity: 0; transform: translateY(20px); }
366
+ to { opacity: 1; transform: translateY(0); }
367
+ }
368
+
369
+ @keyframes slideUp {
370
+ from { opacity: 0; transform: translateY(40px); }
371
+ to { opacity: 1; transform: translateY(0); }
372
+ }
373
+
374
+ @media (max-width: 768px) {
375
+ .container { padding: 1rem; }
376
+ .header h1 { font-size: 2rem; }
377
+ .detail-content { margin: 1rem; }
322
378
  }
323
379
  </style>
324
380
  </head>
325
381
  <body>
326
- <button class="theme-toggle" id="themeToggle">
327
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
328
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
329
- </svg>
330
- <span>Dark Mode</span>
331
- </button>
332
- <div class="breadcrumb">
333
- ${options.breadcrumbs
334
- .map((crumb, index) => crumb.url
335
- ? `<a href="${crumb.url}">${crumb.title}</a>`
336
- : `<span>${crumb.title}</span>`)
337
- .join(' &raquo; ')}
382
+ <div class="container">
383
+ <div class="header">
384
+ <h1>${this.openApiSpec?.info?.title || 'API Documentation'}</h1>
385
+ <p>${this.openApiSpec?.info?.description || ''} ${this.openApiSpec?.info?.version ? `v${this.openApiSpec.info.version}` : ''}</p>
386
+ </div>
387
+
388
+ <div class="search-box">
389
+ <input type="text" class="search-input" id="searchInput" placeholder="🔍 Search endpoints...">
390
+ </div>
391
+
392
+ <div class="endpoints-grid" id="endpointsGrid">
393
+ ${this.renderGroupedEndpoints(groupedEndpoints)}
394
+ </div>
395
+
396
+ <div class="no-results" id="noResults" style="display: none;">
397
+ No endpoints found matching your search.
398
+ </div>
338
399
  </div>
339
400
 
340
- <main>
341
- ${options.content}
342
- </main>
401
+ ${this.renderEndpointModals(endpoints)}
402
+
343
403
  <script>
344
- // Theme toggle functionality
345
- const themeToggle = document.getElementById('themeToggle');
346
- const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
347
-
348
- // Check for saved user preference or use system preference
349
- const currentTheme = localStorage.getItem('theme') || (prefersDarkScheme.matches ? 'dark' : 'light');
350
- document.documentElement.setAttribute('data-theme', currentTheme);
351
- updateButtonText(currentTheme);
352
-
353
- // Toggle theme on button click
354
- themeToggle.addEventListener('click', () => {
355
- const currentTheme = document.documentElement.getAttribute('data-theme');
356
- const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
404
+ const searchInput = document.getElementById('searchInput');
405
+ const endpointsGrid = document.getElementById('endpointsGrid');
406
+ const noResults = document.getElementById('noResults');
407
+
408
+ searchInput.addEventListener('input', (e) => {
409
+ const query = e.target.value.toLowerCase();
410
+ const sections = endpointsGrid.querySelectorAll('.tag-section');
411
+ let hasResults = false;
357
412
 
358
- document.documentElement.setAttribute('data-theme', newTheme);
359
- localStorage.setItem('theme', newTheme);
360
- updateButtonText(newTheme);
413
+ sections.forEach(section => {
414
+ const cards = section.querySelectorAll('.endpoint-card');
415
+ let sectionHasResults = false;
416
+
417
+ cards.forEach(card => {
418
+ const text = card.textContent.toLowerCase();
419
+ if (text.includes(query)) {
420
+ card.style.display = 'block';
421
+ sectionHasResults = true;
422
+ hasResults = true;
423
+ } else {
424
+ card.style.display = 'none';
425
+ }
426
+ });
427
+
428
+ section.style.display = sectionHasResults ? 'block' : 'none';
429
+ });
430
+
431
+ noResults.style.display = hasResults ? 'none' : 'block';
432
+ endpointsGrid.style.display = hasResults ? 'grid' : 'none';
361
433
  });
362
434
 
363
- // Update button text based on current theme
364
- function updateButtonText(theme) {
365
- const icon = themeToggle.querySelector('svg');
366
- const text = themeToggle.querySelector('span');
367
-
368
- if (theme === 'dark') {
369
- icon.innerHTML = '<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />';
370
- text.textContent = 'Light Mode';
371
- } else {
372
- icon.innerHTML = '<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />';
373
- text.textContent = 'Dark Mode';
374
- }
435
+ function openEndpoint(id) {
436
+ document.getElementById('detail-' + id).classList.add('active');
437
+ document.body.style.overflow = 'hidden';
375
438
  }
439
+
440
+ function closeEndpoint(id) {
441
+ document.getElementById('detail-' + id).classList.remove('active');
442
+ document.body.style.overflow = 'auto';
443
+ }
444
+
445
+ document.querySelectorAll('.endpoint-detail').forEach(modal => {
446
+ modal.addEventListener('click', (e) => {
447
+ if (e.target === modal) {
448
+ modal.classList.remove('active');
449
+ document.body.style.overflow = 'auto';
450
+ }
451
+ });
452
+ });
376
453
  </script>
377
454
  </body>
378
455
  </html>`;
379
456
  }
380
- renderOverview() {
381
- return `
382
- <h1>API Documentation</h1>
383
- <p>Welcome to the API documentation. Browse through the available controllers and endpoints.</p>
384
-
385
- <h2>Controllers</h2>
386
- <div>
387
- ${Object.entries(this.groupedEndpoints)
388
- .map(([name, endpoints]) => `
389
- <div class="endpoint-card">
390
- <h3>
391
- <a href="/docs/controller/${encodeURIComponent(name)}">${name}</a>
392
- <small>(${endpoints.length} endpoints)</small>
393
- </h3>
394
- ${endpoints.slice(0, 3).map(ep => `
395
- <div class="endpoint-summary">
396
- <span class="method ${ep.method.toLowerCase()}">${ep.method}</span>
397
- <a href="/docs/endpoint/${ep.id}">${ep.path}</a>
398
- ${ep.summary ? `<span> - ${ep.summary}</span>` : ''}
399
- </div>
400
- `).join('')}
401
- ${endpoints.length > 3 ?
402
- `<div style="margin-top: 8px;">
403
- <a href="/docs/controller/${encodeURIComponent(name)}">+ ${endpoints.length - 3} more endpoints</a>
404
- </div>`
405
- : ''}
406
- </div>
407
- `).join('')}
408
- </div>
409
- `;
457
+ groupByTag(endpoints) {
458
+ const grouped = {};
459
+ endpoints.forEach(endpoint => {
460
+ const tag = endpoint.tags[0] || 'Other';
461
+ if (!grouped[tag]) {
462
+ grouped[tag] = [];
463
+ }
464
+ grouped[tag].push(endpoint);
465
+ });
466
+ return grouped;
410
467
  }
411
- renderControllersList() {
412
- return `
413
- <h1>Controllers</h1>
414
- <p>Select a controller to view its endpoints.</p>
415
-
416
- <div>
417
- ${Object.entries(this.groupedEndpoints)
418
- .map(([name, endpoints]) => `
419
- <div class="endpoint-card">
420
- <h3>
421
- <a href="/docs/controller/${encodeURIComponent(name)}">${name}</a>
422
- <small>(${endpoints.length} endpoints)</small>
423
- </h3>
424
- ${endpoints.map(ep => `
425
- <div class="endpoint-summary">
426
- <span class="method ${ep.method.toLowerCase()}">${ep.method}</span>
427
- <a href="/docs/endpoint/${ep.id}">${ep.path}</a>
428
- ${ep.summary ? `<span> - ${ep.summary}</span>` : ''}
429
- </div>
430
- `).join('')}
468
+ renderGroupedEndpoints(grouped) {
469
+ return Object.entries(grouped).map(([tag, endpoints]) => `
470
+ <div class="tag-section">
471
+ <div class="tag-title">
472
+ ${tag}
473
+ <span class="tag-badge">${endpoints.length}</span>
474
+ </div>
475
+ <div class="endpoint-list">
476
+ ${endpoints.map(ep => `
477
+ <div class="endpoint-card" onclick="openEndpoint('${ep.id}')">
478
+ <div class="endpoint-header">
479
+ <span class="method-badge method-${ep.method.toLowerCase()}">${ep.method}</span>
480
+ <span class="endpoint-path">${ep.path}</span>
481
+ </div>
482
+ ${ep.summary ? `<div class="endpoint-summary">${ep.summary}</div>` : ''}
431
483
  </div>
432
484
  `).join('')}
485
+ </div>
433
486
  </div>
434
- `;
487
+ `).join('');
435
488
  }
436
- renderControllerPage(name, endpoints) {
437
- return `
438
- <h1>${name}</h1>
439
- <p>Endpoints in this controller:</p>
440
-
441
- <div>
442
- ${endpoints.map(ep => `
443
- <div class="endpoint-card">
444
- <div class="endpoint-header">
445
- <span class="method ${ep.method.toLowerCase()}">${ep.method}</span>
446
- <a href="/docs/endpoint/${ep.id}" class="endpoint-path">${ep.path}</a>
489
+ renderEndpointModals(endpoints) {
490
+ return endpoints.map(ep => `
491
+ <div class="endpoint-detail" id="detail-${ep.id}">
492
+ <div class="detail-content">
493
+ <div class="detail-header">
494
+ <button class="detail-close" onclick="closeEndpoint('${ep.id}')">&times;</button>
495
+ <div style="clear: both;">
496
+ <div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;">
497
+ <span class="method-badge method-${ep.method.toLowerCase()}">${ep.method}</span>
498
+ <span style="font-family: 'Courier New', monospace; font-size: 1.25rem;">${ep.path}</span>
499
+ </div>
500
+ ${ep.summary ? `<p style="opacity: 0.95; font-size: 1.1rem;">${ep.summary}</p>` : ''}
447
501
  </div>
448
- ${ep.summary ? `<div class="endpoint-summary">${ep.summary}</div>` : ''}
449
- </div>
450
- `).join('')}
451
- </div>
452
- `;
453
- }
454
- renderEndpointPage(endpoint) {
455
- return `
456
- <div class="endpoint-card">
457
- <div class="endpoint-header">
458
- <span class="method ${endpoint.method.toLowerCase()}">${endpoint.method}</span>
459
- <span class="endpoint-path">${endpoint.path}</span>
460
- </div>
461
-
462
- ${endpoint.summary ? `<h2>${endpoint.summary}</h2>` : ''}
463
-
464
- ${endpoint.description ? `
465
- <div class="section">
466
- <h3>Description</h3>
467
- <p>${endpoint.description}</p>
468
- </div>
469
- ` : ''}
470
-
471
- ${endpoint.parameters?.length ? `
472
- <div class="section">
473
- <h3>Parameters</h3>
474
- <pre>${this.formatJson(endpoint.parameters)}</pre>
475
502
  </div>
476
- ` : ''}
477
-
478
- ${endpoint.requestBody ? `
479
- <div class="section">
480
- <h3>Request Body</h3>
481
- <pre>${this.formatJson(endpoint.requestBody)}</pre>
482
- </div>
483
- ` : ''}
484
-
485
- ${endpoint.responses ? `
486
- <div class="section">
487
- <h3>Responses</h3>
488
- <pre>${this.formatJson(endpoint.responses)}</pre>
503
+
504
+ <div class="detail-body">
505
+ ${ep.description ? `
506
+ <div class="section">
507
+ <div class="section-title">Description</div>
508
+ <p style="color: #4a5568; line-height: 1.6;">${ep.description}</p>
509
+ </div>
510
+ ` : ''}
511
+
512
+ ${ep.parameters && ep.parameters.length > 0 ? `
513
+ <div class="section">
514
+ <div class="section-title">Parameters</div>
515
+ ${ep.parameters.map((param) => `
516
+ <div class="param-item">
517
+ <div>
518
+ <span class="param-name">${param.name}</span>
519
+ <span class="param-type">${param.schema?.type || param.type || 'string'}</span>
520
+ ${param.required ? '<span style="color: #e53e3e; font-size: 0.875rem; margin-left: 0.5rem;">*required</span>' : ''}
521
+ </div>
522
+ <div style="color: #a0aec0; font-size: 0.875rem; margin-top: 0.25rem;">in: ${param.in}</div>
523
+ ${param.description ? `<div class="param-desc">${param.description}</div>` : ''}
524
+ </div>
525
+ `).join('')}
526
+ </div>
527
+ ` : ''}
528
+
529
+ ${ep.requestBody ? `
530
+ <div class="section">
531
+ <div class="section-title">Request Body</div>
532
+ <div class="code-block">${this.formatJson(ep.requestBody.content?.['application/json']?.schema || ep.requestBody)}</div>
533
+ </div>
534
+ ` : ''}
535
+
536
+ ${ep.responses && Object.keys(ep.responses).length > 0 ? `
537
+ <div class="section">
538
+ <div class="section-title">Responses</div>
539
+ ${Object.entries(ep.responses).map(([code, response]) => `
540
+ <div class="response-item">
541
+ <div class="response-code">Status ${code}</div>
542
+ ${response.description ? `<div class="param-desc">${response.description}</div>` : ''}
543
+ ${response.content?.['application/json']?.schema ? `
544
+ <div class="code-block" style="margin-top: 0.75rem;">${this.formatJson(response.content['application/json'].schema)}</div>
545
+ ` : ''}
546
+ </div>
547
+ `).join('')}
548
+ </div>
549
+ ` : ''}
489
550
  </div>
490
- ` : ''}
551
+ </div>
491
552
  </div>
492
- `;
553
+ `).join('');
554
+ }
555
+ formatJson(obj) {
556
+ return JSON.stringify(obj, null, 2)
557
+ .replace(/</g, '&lt;')
558
+ .replace(/>/g, '&gt;');
493
559
  }
494
560
  getOpenApiJson(res) {
495
561
  try {
@@ -503,6 +569,9 @@ let DocsController = class DocsController {
503
569
  res.status(500).json({ error: 'Failed to generate OpenAPI specification' });
504
570
  }
505
571
  }
572
+ getOpenApiJsonLegacy(res) {
573
+ return this.getOpenApiJson(res);
574
+ }
506
575
  getOpenApiSpec() {
507
576
  return this.openApiSpec;
508
577
  }
@@ -516,35 +585,26 @@ __decorate([
516
585
  __metadata("design:returntype", void 0)
517
586
  ], DocsController.prototype, "getDocs", null);
518
587
  __decorate([
519
- (0, common_1.Get)('docs/controllers'),
588
+ (0, common_1.Get)('docs/endpoint/:tag/:operationId'),
520
589
  __param(0, (0, common_1.Res)()),
521
590
  __metadata("design:type", Function),
522
591
  __metadata("design:paramtypes", [Object]),
523
592
  __metadata("design:returntype", void 0)
524
- ], DocsController.prototype, "getControllers", null);
593
+ ], DocsController.prototype, "getEndpointPage", null);
525
594
  __decorate([
526
- (0, common_1.Get)('docs/controller/:name'),
527
- __param(0, (0, common_1.Param)('name')),
528
- __param(1, (0, common_1.Res)()),
529
- __metadata("design:type", Function),
530
- __metadata("design:paramtypes", [String, Object]),
531
- __metadata("design:returntype", void 0)
532
- ], DocsController.prototype, "getController", null);
533
- __decorate([
534
- (0, common_1.Get)('docs/endpoint/:id'),
535
- __param(0, (0, common_1.Param)('id')),
536
- __param(1, (0, common_1.Res)()),
595
+ (0, common_1.Get)('docs-json'),
596
+ __param(0, (0, common_1.Res)()),
537
597
  __metadata("design:type", Function),
538
- __metadata("design:paramtypes", [String, Object]),
598
+ __metadata("design:paramtypes", [Object]),
539
599
  __metadata("design:returntype", void 0)
540
- ], DocsController.prototype, "getEndpoint", null);
600
+ ], DocsController.prototype, "getOpenApiJson", null);
541
601
  __decorate([
542
602
  (0, common_1.Get)('docs/json'),
543
603
  __param(0, (0, common_1.Res)()),
544
604
  __metadata("design:type", Function),
545
605
  __metadata("design:paramtypes", [Object]),
546
606
  __metadata("design:returntype", void 0)
547
- ], DocsController.prototype, "getOpenApiJson", null);
607
+ ], DocsController.prototype, "getOpenApiJsonLegacy", null);
548
608
  __decorate([
549
609
  (0, common_1.Get)('docs/spec'),
550
610
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"DocsController.js","sourceRoot":"","sources":["../../src/controllers/DocsController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocsController.js","sourceRoot":"","sources":["../../src/controllers/DocsController.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nest-scramble",
3
- "version": "1.6.0",
3
+ "version": "1.7.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",