nest-scramble 1.6.0 → 1.8.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;IAmbxB,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
- });
26
+ const endpoints = this.extractEndpoints();
27
+ const html = this.generateMainPage(endpoints);
56
28
  res.setHeader('Content-Type', 'text/html; charset=utf-8');
57
29
  res.send(html);
58
30
  }
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
- });
68
- res.setHeader('Content-Type', 'text/html; charset=utf-8');
69
- res.send(html);
70
- }
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,541 @@ 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
 
76
+ :root {
77
+ --page-bg: linear-gradient(135deg, #e8f1ff 0%, #f7f8fc 45%, #fff1e6 100%);
78
+ --page-text: #1b2333;
79
+ --surface: #ffffff;
80
+ --surface-muted: #f2f5fa;
81
+ --border: #d7dfea;
82
+ --accent: #1b9aaa;
83
+ --accent-strong: #137f80;
84
+ --shadow: 0 10px 30px rgba(16, 24, 40, 0.12);
85
+ --header-text: #0f172a;
86
+ --header-subtle: #4b5563;
87
+ --badge-grad: linear-gradient(135deg, #1b9aaa 0%, #6cc4a1 100%);
88
+ --overlay: rgba(15, 23, 42, 0.35);
89
+ --code-bg: #1f2a37;
90
+ --code-text: #e6edf6;
91
+ }
92
+
93
+ @media (prefers-color-scheme: dark) {
94
+ :root {
95
+ --page-bg: radial-gradient(circle at top, #243245 0%, #1b2331 45%, #121824 100%);
96
+ --page-text: #e5edf7;
97
+ --surface: #202b38;
98
+ --surface-muted: #1b2431;
99
+ --border: #2f3b4b;
100
+ --accent: #67d7c4;
101
+ --accent-strong: #3db7a6;
102
+ --shadow: 0 12px 40px rgba(8, 12, 20, 0.55);
103
+ --header-text: #eaf2fb;
104
+ --header-subtle: #b4c1d6;
105
+ --badge-grad: linear-gradient(135deg, #4cc9f0 0%, #67d7c4 100%);
106
+ --overlay: rgba(6, 10, 18, 0.6);
107
+ --code-bg: #0f1824;
108
+ --code-text: #d6e3f3;
109
+ }
110
+ }
111
+
183
112
  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;
113
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
114
+ background: var(--page-bg);
191
115
  min-height: 100vh;
116
+ color: var(--page-text);
192
117
  }
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;
204
- display: flex;
205
- align-items: center;
206
- gap: 8px;
207
- z-index: 1000;
208
- box-shadow: 0 2px 4px var(--card-shadow);
118
+
119
+ .container {
120
+ max-width: 1400px;
121
+ margin: 0 auto;
122
+ padding: 2rem;
209
123
  }
210
-
211
- .theme-toggle:hover {
212
- background: var(--hover-bg);
124
+
125
+ .header {
126
+ text-align: center;
127
+ color: var(--header-text);
128
+ margin-bottom: 3rem;
129
+ animation: fadeInDown 0.6s ease-out;
213
130
  }
214
-
215
- .theme-toggle svg {
216
- width: 16px;
217
- height: 16px;
131
+
132
+ .header h1 {
133
+ font-size: 2.5rem;
134
+ font-weight: 700;
135
+ margin-bottom: 0.5rem;
136
+ text-shadow: 0 2px 10px rgba(0,0,0,0.2);
218
137
  }
219
-
220
- .breadcrumb {
221
- margin: 40px 0 20px;
222
- padding: 10px 0;
223
- border-bottom: 1px solid var(--card-border);
138
+
139
+ .header p {
140
+ font-size: 1.1rem;
141
+ color: var(--header-subtle);
224
142
  }
225
-
226
- .breadcrumb a {
227
- color: var(--link-color);
228
- text-decoration: none;
143
+
144
+ .search-box {
145
+ max-width: 600px;
146
+ margin: 0 auto 3rem;
147
+ animation: fadeIn 0.8s ease-out;
229
148
  }
230
-
231
- .breadcrumb a:hover {
232
- text-decoration: underline;
149
+
150
+ .search-input {
151
+ width: 100%;
152
+ padding: 1rem 1.5rem;
153
+ font-size: 1rem;
154
+ border: none;
155
+ border-radius: 12px;
156
+ background: var(--surface);
157
+ color: var(--page-text);
158
+ box-shadow: var(--shadow);
159
+ transition: all 0.3s ease;
233
160
  }
234
-
235
- .method {
236
- display: inline-block;
237
- padding: 2px 8px;
238
- border-radius: 3px;
161
+
162
+ .search-input:focus {
163
+ outline: none;
164
+ box-shadow: 0 15px 40px rgba(16, 24, 40, 0.2);
165
+ transform: translateY(-2px);
166
+ }
167
+
168
+ .endpoints-grid {
169
+ display: grid;
170
+ gap: 1.5rem;
171
+ animation: fadeInUp 0.8s ease-out;
172
+ }
173
+
174
+ .tag-section {
175
+ background: var(--surface);
176
+ border-radius: 16px;
177
+ padding: 2rem;
178
+ box-shadow: var(--shadow);
179
+ transition: all 0.3s ease;
180
+ }
181
+
182
+ .tag-section:hover {
183
+ box-shadow: 0 15px 40px rgba(0,0,0,0.2);
184
+ transform: translateY(-4px);
185
+ }
186
+
187
+ .tag-title {
188
+ font-size: 1.5rem;
189
+ font-weight: 600;
190
+ margin-bottom: 1.5rem;
191
+ color: var(--page-text);
192
+ display: flex;
193
+ align-items: center;
194
+ gap: 0.5rem;
195
+ }
196
+
197
+ .tag-badge {
198
+ background: var(--badge-grad);
239
199
  color: white;
240
- font-weight: bold;
241
- margin-right: 10px;
242
- font-size: 0.8em;
200
+ padding: 0.25rem 0.75rem;
201
+ border-radius: 20px;
202
+ font-size: 0.875rem;
203
+ font-weight: 500;
243
204
  }
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
-
205
+
206
+ .endpoint-list {
207
+ display: grid;
208
+ gap: 1rem;
209
+ }
210
+
251
211
  .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;
212
+ background: var(--surface-muted);
213
+ border-radius: 12px;
214
+ padding: 1.25rem;
215
+ cursor: pointer;
216
+ transition: all 0.3s ease;
217
+ border: 2px solid transparent;
218
+ text-decoration: none;
219
+ display: block;
259
220
  }
260
-
221
+
261
222
  .endpoint-card:hover {
262
- transform: translateY(-2px);
263
- box-shadow: 0 4px 6px rgba(0,0,0,0.1);
223
+ background: var(--surface);
224
+ border-color: var(--accent);
225
+ transform: translateX(8px);
226
+ box-shadow: 0 4px 12px rgba(27, 154, 170, 0.18);
264
227
  }
265
-
228
+
266
229
  .endpoint-header {
267
230
  display: flex;
268
231
  align-items: center;
269
- margin-bottom: 10px;
232
+ gap: 1rem;
233
+ margin-bottom: 0.75rem;
270
234
  }
271
-
235
+
236
+ .method-badge {
237
+ padding: 0.375rem 0.875rem;
238
+ border-radius: 6px;
239
+ font-weight: 600;
240
+ font-size: 0.875rem;
241
+ text-transform: uppercase;
242
+ letter-spacing: 0.5px;
243
+ min-width: 70px;
244
+ text-align: center;
245
+ }
246
+
247
+ .method-get { background: #c6f6d5; color: #22543d; }
248
+ .method-post { background: #bee3f8; color: #2c5282; }
249
+ .method-put { background: #feebc8; color: #7c2d12; }
250
+ .method-patch { background: #e9d8fd; color: #44337a; }
251
+ .method-delete { background: #fed7d7; color: #742a2a; }
252
+
272
253
  .endpoint-path {
273
254
  font-family: 'Courier New', monospace;
274
- font-size: 1.1em;
275
- color: var(--text-color);
255
+ font-size: 1rem;
256
+ color: var(--page-text);
257
+ font-weight: 500;
258
+ flex: 1;
276
259
  }
277
-
260
+
278
261
  .endpoint-summary {
279
- color: var(--text-color);
280
- opacity: 0.9;
281
- margin-top: 8px;
262
+ color: var(--header-subtle);
263
+ font-size: 0.95rem;
264
+ line-height: 1.5;
282
265
  }
283
-
284
- .section {
285
- margin-bottom: 2rem;
266
+
267
+ .endpoint-detail {
268
+ display: none;
269
+ position: fixed;
270
+ top: 0;
271
+ left: 0;
272
+ right: 0;
273
+ bottom: 0;
274
+ background: var(--overlay);
275
+ z-index: 1000;
276
+ overflow-y: auto;
277
+ animation: fadeIn 0.3s ease-out;
286
278
  }
287
-
288
- h1 {
289
- color: var(--text-color);
290
- margin-bottom: 1rem;
279
+
280
+ .endpoint-detail.active {
281
+ display: flex;
282
+ align-items: center;
283
+ justify-content: center;
284
+ padding: 2rem;
291
285
  }
292
-
293
- h2 {
294
- color: var(--text-color);
295
- margin: 1.5rem 0 1rem;
286
+
287
+ .detail-content {
288
+ background: var(--surface);
289
+ border-radius: 16px;
290
+ max-width: 900px;
291
+ width: 100%;
292
+ max-height: 90vh;
293
+ overflow-y: auto;
294
+ box-shadow: 0 20px 60px rgba(10, 18, 30, 0.35);
295
+ animation: slideUp 0.4s ease-out;
296
+ }
297
+
298
+ .detail-header {
299
+ background: var(--badge-grad);
300
+ color: white;
301
+ padding: 2rem;
302
+ border-radius: 16px 16px 0 0;
303
+ position: sticky;
304
+ top: 0;
305
+ z-index: 10;
306
+ }
307
+
308
+ .detail-close {
309
+ float: right;
310
+ background: rgba(255,255,255,0.2);
311
+ border: none;
312
+ color: white;
296
313
  font-size: 1.5rem;
314
+ width: 40px;
315
+ height: 40px;
316
+ border-radius: 50%;
317
+ cursor: pointer;
318
+ transition: all 0.3s ease;
319
+ display: flex;
320
+ align-items: center;
321
+ justify-content: center;
297
322
  }
298
-
299
- h3 {
300
- color: var(--text-color);
301
- margin: 1.25rem 0 0.75rem;
323
+
324
+ .detail-close:hover {
325
+ background: rgba(255,255,255,0.3);
326
+ transform: rotate(90deg);
327
+ }
328
+
329
+ .detail-body {
330
+ padding: 2rem;
331
+ }
332
+
333
+ .section {
334
+ margin-bottom: 2rem;
335
+ }
336
+
337
+ .section-title {
302
338
  font-size: 1.25rem;
339
+ font-weight: 600;
340
+ color: var(--page-text);
341
+ margin-bottom: 1rem;
342
+ padding-bottom: 0.5rem;
343
+ border-bottom: 2px solid var(--border);
303
344
  }
304
-
305
- pre {
306
- background: var(--code-bg);
345
+
346
+ .param-item, .response-item {
347
+ background: var(--surface-muted);
307
348
  padding: 1rem;
308
- border-radius: 4px;
309
- overflow-x: auto;
349
+ border-radius: 8px;
350
+ margin-bottom: 0.75rem;
351
+ border-left: 3px solid var(--accent);
352
+ }
353
+
354
+ .param-name, .response-code {
355
+ font-weight: 600;
356
+ color: var(--page-text);
310
357
  font-family: 'Courier New', monospace;
311
- font-size: 0.9em;
312
- border: 1px solid var(--card-border);
313
358
  }
314
-
315
- code {
359
+
360
+ .param-type {
361
+ color: var(--accent-strong);
362
+ font-size: 0.875rem;
363
+ font-weight: 500;
364
+ margin-left: 0.5rem;
365
+ }
366
+
367
+ .param-desc {
368
+ color: var(--header-subtle);
369
+ margin-top: 0.5rem;
370
+ font-size: 0.95rem;
371
+ }
372
+
373
+ .code-block {
316
374
  background: var(--code-bg);
317
- padding: 2px 4px;
318
- border-radius: 3px;
375
+ color: var(--code-text);
376
+ padding: 1.5rem;
377
+ border-radius: 8px;
378
+ overflow-x: auto;
319
379
  font-family: 'Courier New', monospace;
320
- font-size: 0.9em;
321
- border: 1px solid var(--card-border);
380
+ font-size: 0.9rem;
381
+ line-height: 1.6;
382
+ }
383
+
384
+ .no-results {
385
+ text-align: center;
386
+ padding: 3rem;
387
+ color: var(--header-text);
388
+ font-size: 1.1rem;
389
+ }
390
+
391
+ @keyframes fadeIn {
392
+ from { opacity: 0; }
393
+ to { opacity: 1; }
394
+ }
395
+
396
+ @keyframes fadeInDown {
397
+ from { opacity: 0; transform: translateY(-20px); }
398
+ to { opacity: 1; transform: translateY(0); }
399
+ }
400
+
401
+ @keyframes fadeInUp {
402
+ from { opacity: 0; transform: translateY(20px); }
403
+ to { opacity: 1; transform: translateY(0); }
404
+ }
405
+
406
+ @keyframes slideUp {
407
+ from { opacity: 0; transform: translateY(40px); }
408
+ to { opacity: 1; transform: translateY(0); }
409
+ }
410
+
411
+ @media (max-width: 768px) {
412
+ .container { padding: 1rem; }
413
+ .header h1 { font-size: 2rem; }
414
+ .detail-content { margin: 1rem; }
322
415
  }
323
416
  </style>
324
417
  </head>
325
418
  <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; ')}
419
+ <div class="container">
420
+ <div class="header">
421
+ <h1>${this.openApiSpec?.info?.title || 'API Documentation'}</h1>
422
+ <p>${this.openApiSpec?.info?.description || ''} ${this.openApiSpec?.info?.version ? `v${this.openApiSpec.info.version}` : ''}</p>
423
+ </div>
424
+
425
+ <div class="search-box">
426
+ <input type="text" class="search-input" id="searchInput" placeholder="🔍 Search endpoints...">
427
+ </div>
428
+
429
+ <div class="endpoints-grid" id="endpointsGrid">
430
+ ${this.renderGroupedEndpoints(groupedEndpoints)}
431
+ </div>
432
+
433
+ <div class="no-results" id="noResults" style="display: none;">
434
+ No endpoints found matching your search.
435
+ </div>
338
436
  </div>
339
437
 
340
- <main>
341
- ${options.content}
342
- </main>
438
+ ${this.renderEndpointModals(endpoints)}
439
+
343
440
  <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';
441
+ const searchInput = document.getElementById('searchInput');
442
+ const endpointsGrid = document.getElementById('endpointsGrid');
443
+ const noResults = document.getElementById('noResults');
444
+
445
+ searchInput.addEventListener('input', (e) => {
446
+ const query = e.target.value.toLowerCase();
447
+ const sections = endpointsGrid.querySelectorAll('.tag-section');
448
+ let hasResults = false;
449
+
450
+ sections.forEach(section => {
451
+ const cards = section.querySelectorAll('.endpoint-card');
452
+ let sectionHasResults = false;
453
+
454
+ cards.forEach(card => {
455
+ const text = card.textContent.toLowerCase();
456
+ if (text.includes(query)) {
457
+ card.style.display = 'block';
458
+ sectionHasResults = true;
459
+ hasResults = true;
460
+ } else {
461
+ card.style.display = 'none';
462
+ }
463
+ });
464
+
465
+ section.style.display = sectionHasResults ? 'block' : 'none';
466
+ });
357
467
 
358
- document.documentElement.setAttribute('data-theme', newTheme);
359
- localStorage.setItem('theme', newTheme);
360
- updateButtonText(newTheme);
468
+ noResults.style.display = hasResults ? 'none' : 'block';
469
+ endpointsGrid.style.display = hasResults ? 'grid' : 'none';
361
470
  });
362
471
 
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
- }
472
+ function openEndpoint(id) {
473
+ document.getElementById('detail-' + id).classList.add('active');
474
+ document.body.style.overflow = 'hidden';
475
+ }
476
+
477
+ function closeEndpoint(id) {
478
+ document.getElementById('detail-' + id).classList.remove('active');
479
+ document.body.style.overflow = 'auto';
375
480
  }
481
+
482
+ document.querySelectorAll('.endpoint-detail').forEach(modal => {
483
+ modal.addEventListener('click', (e) => {
484
+ if (e.target === modal) {
485
+ modal.classList.remove('active');
486
+ document.body.style.overflow = 'auto';
487
+ }
488
+ });
489
+ });
376
490
  </script>
377
491
  </body>
378
492
  </html>`;
379
493
  }
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
- `;
494
+ groupByTag(endpoints) {
495
+ const grouped = {};
496
+ endpoints.forEach(endpoint => {
497
+ const tag = endpoint.tags[0] || 'Other';
498
+ if (!grouped[tag]) {
499
+ grouped[tag] = [];
500
+ }
501
+ grouped[tag].push(endpoint);
502
+ });
503
+ return grouped;
410
504
  }
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('')}
505
+ renderGroupedEndpoints(grouped) {
506
+ return Object.entries(grouped).map(([tag, endpoints]) => `
507
+ <div class="tag-section">
508
+ <div class="tag-title">
509
+ ${tag}
510
+ <span class="tag-badge">${endpoints.length}</span>
511
+ </div>
512
+ <div class="endpoint-list">
513
+ ${endpoints.map(ep => `
514
+ <div class="endpoint-card" onclick="openEndpoint('${ep.id}')">
515
+ <div class="endpoint-header">
516
+ <span class="method-badge method-${ep.method.toLowerCase()}">${ep.method}</span>
517
+ <span class="endpoint-path">${ep.path}</span>
518
+ </div>
519
+ ${ep.summary ? `<div class="endpoint-summary">${ep.summary}</div>` : ''}
431
520
  </div>
432
521
  `).join('')}
522
+ </div>
433
523
  </div>
434
- `;
524
+ `).join('');
435
525
  }
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>
526
+ renderEndpointModals(endpoints) {
527
+ return endpoints.map(ep => `
528
+ <div class="endpoint-detail" id="detail-${ep.id}">
529
+ <div class="detail-content">
530
+ <div class="detail-header">
531
+ <button class="detail-close" onclick="closeEndpoint('${ep.id}')">&times;</button>
532
+ <div style="clear: both;">
533
+ <div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;">
534
+ <span class="method-badge method-${ep.method.toLowerCase()}">${ep.method}</span>
535
+ <span style="font-family: 'Courier New', monospace; font-size: 1.25rem;">${ep.path}</span>
536
+ </div>
537
+ ${ep.summary ? `<p style="opacity: 0.95; font-size: 1.1rem;">${ep.summary}</p>` : ''}
447
538
  </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
- </div>
476
- ` : ''}
477
-
478
- ${endpoint.requestBody ? `
479
- <div class="section">
480
- <h3>Request Body</h3>
481
- <pre>${this.formatJson(endpoint.requestBody)}</pre>
482
539
  </div>
483
- ` : ''}
484
-
485
- ${endpoint.responses ? `
486
- <div class="section">
487
- <h3>Responses</h3>
488
- <pre>${this.formatJson(endpoint.responses)}</pre>
540
+
541
+ <div class="detail-body">
542
+ ${ep.description ? `
543
+ <div class="section">
544
+ <div class="section-title">Description</div>
545
+ <p style="color: #4a5568; line-height: 1.6;">${ep.description}</p>
546
+ </div>
547
+ ` : ''}
548
+
549
+ ${ep.parameters && ep.parameters.length > 0 ? `
550
+ <div class="section">
551
+ <div class="section-title">Parameters</div>
552
+ ${ep.parameters.map((param) => `
553
+ <div class="param-item">
554
+ <div>
555
+ <span class="param-name">${param.name}</span>
556
+ <span class="param-type">${param.schema?.type || param.type || 'string'}</span>
557
+ ${param.required ? '<span style="color: #e53e3e; font-size: 0.875rem; margin-left: 0.5rem;">*required</span>' : ''}
558
+ </div>
559
+ <div style="color: #a0aec0; font-size: 0.875rem; margin-top: 0.25rem;">in: ${param.in}</div>
560
+ ${param.description ? `<div class="param-desc">${param.description}</div>` : ''}
561
+ </div>
562
+ `).join('')}
563
+ </div>
564
+ ` : ''}
565
+
566
+ ${ep.requestBody ? `
567
+ <div class="section">
568
+ <div class="section-title">Request Body</div>
569
+ <div class="code-block">${this.formatJson(ep.requestBody.content?.['application/json']?.schema || ep.requestBody)}</div>
570
+ </div>
571
+ ` : ''}
572
+
573
+ ${ep.responses && Object.keys(ep.responses).length > 0 ? `
574
+ <div class="section">
575
+ <div class="section-title">Responses</div>
576
+ ${Object.entries(ep.responses).map(([code, response]) => `
577
+ <div class="response-item">
578
+ <div class="response-code">Status ${code}</div>
579
+ ${response.description ? `<div class="param-desc">${response.description}</div>` : ''}
580
+ ${response.content?.['application/json']?.schema ? `
581
+ <div class="code-block" style="margin-top: 0.75rem;">${this.formatJson(response.content['application/json'].schema)}</div>
582
+ ` : ''}
583
+ </div>
584
+ `).join('')}
585
+ </div>
586
+ ` : ''}
489
587
  </div>
490
- ` : ''}
588
+ </div>
491
589
  </div>
492
- `;
590
+ `).join('');
591
+ }
592
+ formatJson(obj) {
593
+ return JSON.stringify(obj, null, 2)
594
+ .replace(/</g, '&lt;')
595
+ .replace(/>/g, '&gt;');
493
596
  }
494
597
  getOpenApiJson(res) {
495
598
  try {
@@ -503,6 +606,9 @@ let DocsController = class DocsController {
503
606
  res.status(500).json({ error: 'Failed to generate OpenAPI specification' });
504
607
  }
505
608
  }
609
+ getOpenApiJsonLegacy(res) {
610
+ return this.getOpenApiJson(res);
611
+ }
506
612
  getOpenApiSpec() {
507
613
  return this.openApiSpec;
508
614
  }
@@ -516,35 +622,26 @@ __decorate([
516
622
  __metadata("design:returntype", void 0)
517
623
  ], DocsController.prototype, "getDocs", null);
518
624
  __decorate([
519
- (0, common_1.Get)('docs/controllers'),
625
+ (0, common_1.Get)('docs/endpoint/:tag/:operationId'),
520
626
  __param(0, (0, common_1.Res)()),
521
627
  __metadata("design:type", Function),
522
628
  __metadata("design:paramtypes", [Object]),
523
629
  __metadata("design:returntype", void 0)
524
- ], DocsController.prototype, "getControllers", null);
630
+ ], DocsController.prototype, "getEndpointPage", null);
525
631
  __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)()),
632
+ (0, common_1.Get)('docs-json'),
633
+ __param(0, (0, common_1.Res)()),
537
634
  __metadata("design:type", Function),
538
- __metadata("design:paramtypes", [String, Object]),
635
+ __metadata("design:paramtypes", [Object]),
539
636
  __metadata("design:returntype", void 0)
540
- ], DocsController.prototype, "getEndpoint", null);
637
+ ], DocsController.prototype, "getOpenApiJson", null);
541
638
  __decorate([
542
639
  (0, common_1.Get)('docs/json'),
543
640
  __param(0, (0, common_1.Res)()),
544
641
  __metadata("design:type", Function),
545
642
  __metadata("design:paramtypes", [Object]),
546
643
  __metadata("design:returntype", void 0)
547
- ], DocsController.prototype, "getOpenApiJson", null);
644
+ ], DocsController.prototype, "getOpenApiJsonLegacy", null);
548
645
  __decorate([
549
646
  (0, common_1.Get)('docs/spec'),
550
647
  __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.8.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",