@mini2/core 2.0.1-beta.2 → 2.0.1-beta.5

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
@@ -921,30 +921,53 @@ const swaggerOptions = {
921
921
 
922
922
  You can provide concrete request/response examples per route. If `examples` are present, Swagger generation prefers them to:
923
923
 
924
- - Build request body schemas and attach `example`
924
+ - Build request body schemas and attach `example` + `examples`
925
925
  - Generate path/query/header parameters (with examples when available)
926
- - Generate **all response status codes** with `example` and `examples.default` for compatibility
926
+ - Generate response examples by status code
927
+
928
+ `examples` is an array and each entry represents one scenario.
929
+ For each scenario, `response` must include exactly one status code key:
930
+
931
+ - ✅ `response: { 200: { ... } }`
932
+ - ✅ `response: { 400: { ... } }`
933
+ - ❌ `response: { 200: { ... }, 400: { ... } }`
927
934
 
928
935
  Example (simplified):
929
936
 
930
937
  ```typescript
931
938
  @post('/create', 'Create', {
932
- examples: [{
933
- request: {
934
- body: { title: 'Test Item', order: 1 },
935
- params: { id: '123' },
936
- query: { page: 1 },
937
- headers: { 'x-echo': 'hello' },
939
+ examples: [
940
+ {
941
+ request: {
942
+ body: { title: 'Test Item', order: 1 },
943
+ query: { page: 1 },
944
+ },
945
+ response: {
946
+ 201: { ok: true, id: '123' },
947
+ },
938
948
  },
939
- response: {
940
- 201: { description: 'Created', data: { ok: true } },
941
- 400: { description: 'Validation error', data: { error: 'Validation failed' } },
949
+ {
950
+ request: {
951
+ body: { order: 1 },
952
+ },
953
+ response: {
954
+ 400: { error: 'Validation failed' },
955
+ },
942
956
  },
943
- }],
957
+ ],
944
958
  })
945
959
  create() { /* ... */ }
946
960
  ```
947
961
 
962
+ #### **📮 Postman Collection Behavior with Examples**
963
+
964
+ When route `examples` are provided:
965
+
966
+ - One Postman request item is generated per route
967
+ - Request body examples are attached to `request.body.options.raw.examples`
968
+ - Route response examples are included in the same request item's `response[]` list
969
+ - Route-level scripts (`@preRequestScript` / `@testScript`) are attached once at item level
970
+
948
971
  #### **🧰 Postman Scripts via OpenAPI Vendor Extensions**
949
972
 
950
973
  Attach Postman-compatible scripts to a route:
@@ -1040,7 +1063,8 @@ This repo includes a runnable demo server and an example Postman collection to q
1040
1063
 
1041
1064
  - `local-test-server/index.ts`: starts the server with autoload enabled
1042
1065
  - `local-test-server/local-test-controller.ts`: demonstrates `examples`, `@preRequestScript`, and `@testScript`
1043
- - `local-test-server/Local Test Server.postman_collection.json`: ready-to-import collection
1066
+ - `GET /postman.json`: generated Postman collection endpoint
1067
+ - `local-test-server/Local Test Server.postman_collection.json`: sample exported collection snapshot
1044
1068
 
1045
1069
  ### 📝 TypeScript Support
1046
1070
 
@@ -0,0 +1,123 @@
1
+ import 'reflect-metadata';
2
+ import { Express } from 'express';
3
+ import { ISwaggerBasicAuth } from '../interfaces/config.interface';
4
+ type PostmanScript = {
5
+ type: 'text/javascript';
6
+ exec: string[];
7
+ };
8
+ type PostmanEvent = {
9
+ listen: 'prerequest' | 'test';
10
+ script: PostmanScript;
11
+ };
12
+ type PostmanHeader = {
13
+ key: string;
14
+ value: string;
15
+ };
16
+ type PostmanQuery = {
17
+ key: string;
18
+ value: string;
19
+ };
20
+ type PostmanVariable = {
21
+ key: string;
22
+ value: string;
23
+ };
24
+ type PostmanUrl = {
25
+ raw: string;
26
+ host: string[];
27
+ path: string[];
28
+ query?: PostmanQuery[];
29
+ variable?: PostmanVariable[];
30
+ };
31
+ type PostmanRequest = {
32
+ method: string;
33
+ header: PostmanHeader[];
34
+ url: PostmanUrl;
35
+ description?: string;
36
+ body?: {
37
+ mode: 'raw';
38
+ raw: string;
39
+ options: {
40
+ raw: {
41
+ language: 'json';
42
+ examples?: unknown[];
43
+ };
44
+ };
45
+ };
46
+ };
47
+ type PostmanResponse = {
48
+ name: string;
49
+ originalRequest: PostmanRequest;
50
+ status: string;
51
+ code: number;
52
+ _postman_previewlanguage: 'json' | 'text';
53
+ header: PostmanHeader[];
54
+ cookie: unknown[];
55
+ body: string;
56
+ };
57
+ type PostmanRequestItem = {
58
+ name: string;
59
+ event?: PostmanEvent[];
60
+ request: PostmanRequest;
61
+ response: PostmanResponse[];
62
+ };
63
+ type PostmanFolderItem = {
64
+ name: string;
65
+ item: PostmanRequestItem[];
66
+ };
67
+ type PostmanCollection = {
68
+ info: {
69
+ _postman_id: string;
70
+ name: string;
71
+ description: string;
72
+ schema: string;
73
+ };
74
+ item: PostmanFolderItem[];
75
+ variable: Array<{
76
+ key: string;
77
+ value: string;
78
+ }>;
79
+ };
80
+ export interface IPostmanIntegrationOptions {
81
+ title?: string;
82
+ description?: string;
83
+ version?: string;
84
+ servers?: Array<{
85
+ url: string;
86
+ description: string;
87
+ }>;
88
+ jsonPath?: string;
89
+ basicAuth?: ISwaggerBasicAuth;
90
+ baseUrlVariableName?: string;
91
+ }
92
+ export declare class PostmanIntegration {
93
+ private postmanCollection;
94
+ private options;
95
+ constructor(options?: IPostmanIntegrationOptions);
96
+ generatePostmanCollection(controllers: any[]): void;
97
+ setupPostman(app: Express): void;
98
+ getPostmanCollection(): PostmanCollection | null;
99
+ private buildRequestItem;
100
+ private buildRequest;
101
+ private extractBodyExamples;
102
+ private buildResponses;
103
+ private createDefaultResponse;
104
+ private buildEvents;
105
+ private toPostmanScript;
106
+ private buildQuery;
107
+ private buildPathVariables;
108
+ private extractPathVariables;
109
+ private extractPostmanPath;
110
+ private defaultStatusForMethod;
111
+ private stringifyScalar;
112
+ private isRecord;
113
+ private generateSummary;
114
+ private generateDescription;
115
+ private extractControllerFolderName;
116
+ private extractResourceName;
117
+ private getDefaultBaseUrl;
118
+ private buildCollectionDescription;
119
+ private generateCollectionId;
120
+ private basicAuthMiddleware;
121
+ }
122
+ export default PostmanIntegration;
123
+ //# sourceMappingURL=postman.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman.d.ts","sourceRoot":"","sources":["../../api-docs/postman.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,358 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostmanIntegration = void 0;
4
+ require("reflect-metadata");
5
+ const notations_1 = require("../notations");
6
+ class PostmanIntegration {
7
+ constructor(options = {}) {
8
+ this.postmanCollection = null;
9
+ this.options = {
10
+ title: 'Mini Framework API',
11
+ description: 'API documentation for Mini Framework',
12
+ version: '1.0.0',
13
+ servers: [
14
+ { url: 'http://localhost:3000', description: 'Development server' },
15
+ ],
16
+ jsonPath: '/postman.json',
17
+ baseUrlVariableName: 'baseUrl',
18
+ ...options,
19
+ };
20
+ }
21
+ generatePostmanCollection(controllers) {
22
+ const folders = new Map();
23
+ const defaultBaseUrl = this.getDefaultBaseUrl();
24
+ const baseUrlVariableName = this.options.baseUrlVariableName || 'baseUrl';
25
+ controllers.forEach((controller) => {
26
+ const controllerPrototype = Object.getPrototypeOf(controller);
27
+ const controllerPath = Reflect.getMetadata(notations_1.keyOfPath, controller.constructor);
28
+ if (!controllerPath)
29
+ return;
30
+ const folderName = this.extractControllerFolderName(controllerPath);
31
+ const allProperties = Object.getOwnPropertyNames(controllerPrototype);
32
+ allProperties.forEach((property) => {
33
+ const routeOptions = Reflect.getMetadata(notations_1.keyOfRouteOptions, controllerPrototype, property);
34
+ if (!routeOptions?.path || !routeOptions.method)
35
+ return;
36
+ const fullPath = controllerPath.replace(/\/$/, '') +
37
+ routeOptions.path.replace(/:([a-zA-Z0-9_]+)/g, '{{$1}}');
38
+ const method = routeOptions.method.toUpperCase();
39
+ const requestItem = this.buildRequestItem(method, fullPath, routeOptions, baseUrlVariableName);
40
+ if (!folders.has(folderName)) {
41
+ folders.set(folderName, []);
42
+ }
43
+ folders.get(folderName).push(requestItem);
44
+ });
45
+ });
46
+ this.postmanCollection = {
47
+ info: {
48
+ _postman_id: this.generateCollectionId(),
49
+ name: this.options.title || 'Mini Framework API',
50
+ description: this.buildCollectionDescription(),
51
+ schema: 'https://schema.getpostman.com/json/collection/v2.1.0/collection.json',
52
+ },
53
+ item: Array.from(folders.entries()).map(([name, item]) => ({ name, item })),
54
+ variable: [{ key: baseUrlVariableName, value: defaultBaseUrl }],
55
+ };
56
+ }
57
+ setupPostman(app) {
58
+ const authMiddleware = this.options.basicAuth
59
+ ? this.basicAuthMiddleware.bind(this)
60
+ : (_req, _res, next) => next();
61
+ app.get(this.options.jsonPath, authMiddleware, (_req, res) => {
62
+ if (!this.postmanCollection) {
63
+ res.status(500).json({
64
+ error: 'Postman collection has not been generated yet.',
65
+ });
66
+ return;
67
+ }
68
+ res.setHeader('Content-Type', 'application/json');
69
+ res.send(this.postmanCollection);
70
+ });
71
+ }
72
+ getPostmanCollection() {
73
+ return this.postmanCollection;
74
+ }
75
+ buildRequestItem(method, fullPath, routeOptions, baseUrlVariableName) {
76
+ const examples = routeOptions.examples ?? [];
77
+ const events = this.buildEvents(routeOptions);
78
+ const baseRequestName = routeOptions.name?.trim() ||
79
+ this.generateSummary(method.toLowerCase(), fullPath);
80
+ const primaryExample = examples[0];
81
+ const request = this.buildRequest(method, fullPath, baseUrlVariableName, routeOptions, primaryExample, examples);
82
+ return {
83
+ name: baseRequestName,
84
+ ...(events ? { event: events } : {}),
85
+ request,
86
+ response: this.buildResponses(method, request, routeOptions, examples),
87
+ };
88
+ }
89
+ buildRequest(method, fullPath, baseUrlVariableName, routeOptions, example, examples) {
90
+ const headers = [
91
+ { key: 'Content-Type', value: 'application/json' },
92
+ { key: 'Accept', value: 'application/json' },
93
+ ];
94
+ if (example?.request?.headers && this.isRecord(example.request.headers)) {
95
+ Object.entries(example.request.headers).forEach(([key, value]) => {
96
+ headers.push({ key, value: this.stringifyScalar(value) });
97
+ });
98
+ }
99
+ const query = this.buildQuery(example?.request?.query);
100
+ const variable = this.buildPathVariables(fullPath, example?.request?.params);
101
+ const path = this.extractPostmanPath(fullPath);
102
+ const rawUrl = `{{${baseUrlVariableName}}}${fullPath}`;
103
+ const request = {
104
+ method,
105
+ header: headers,
106
+ url: {
107
+ raw: rawUrl,
108
+ host: [`{{${baseUrlVariableName}}}`],
109
+ path,
110
+ ...(query.length ? { query } : {}),
111
+ ...(variable.length ? { variable } : {}),
112
+ },
113
+ description: this.generateDescription(method.toLowerCase(), fullPath),
114
+ };
115
+ const bodyPayload = example?.request?.body;
116
+ if (bodyPayload) {
117
+ const bodyExamples = this.extractBodyExamples(examples);
118
+ request.body = {
119
+ mode: 'raw',
120
+ raw: JSON.stringify(bodyPayload, null, 2),
121
+ options: {
122
+ raw: {
123
+ language: 'json',
124
+ ...(bodyExamples.length ? { examples: bodyExamples } : {}),
125
+ },
126
+ },
127
+ };
128
+ }
129
+ else if (['POST', 'PUT', 'PATCH'].includes(method) &&
130
+ (routeOptions.validations?.some((validation) => validation.body) ?? false)) {
131
+ // Swagger tarafindaki body-validation fallback'ina paralel olarak
132
+ // body bolumunu en azindan bos bir JSON payload ile gorunur kil.
133
+ request.body = {
134
+ mode: 'raw',
135
+ raw: JSON.stringify({}, null, 2),
136
+ options: {
137
+ raw: {
138
+ language: 'json',
139
+ },
140
+ },
141
+ };
142
+ }
143
+ return request;
144
+ }
145
+ extractBodyExamples(examples) {
146
+ return examples
147
+ .map((item) => item.request?.body)
148
+ .filter((body) => body !== undefined)
149
+ .map((body) => JSON.parse(JSON.stringify(body)));
150
+ }
151
+ buildResponses(method, request, routeOptions, examples) {
152
+ const responses = [];
153
+ if (examples.length > 0) {
154
+ examples.forEach((example, exampleIndex) => {
155
+ const response = example.response;
156
+ if (!response || typeof response !== 'object')
157
+ return;
158
+ Object.entries(response).forEach(([statusCode, responseData]) => {
159
+ const code = Number(statusCode);
160
+ const body = typeof responseData === 'string'
161
+ ? responseData
162
+ : JSON.stringify(responseData, null, 2);
163
+ responses.push({
164
+ name: examples.length > 1
165
+ ? `Status ${statusCode} (Example ${exampleIndex + 1})`
166
+ : `Status ${statusCode}`,
167
+ originalRequest: request,
168
+ status: `Status ${statusCode}`,
169
+ code: Number.isNaN(code) ? 200 : code,
170
+ _postman_previewlanguage: 'json',
171
+ header: [
172
+ {
173
+ key: 'Content-Type',
174
+ value: 'application/json',
175
+ },
176
+ ],
177
+ cookie: [],
178
+ body,
179
+ });
180
+ });
181
+ });
182
+ return responses;
183
+ }
184
+ const defaultCode = this.defaultStatusForMethod(method);
185
+ responses.push(this.createDefaultResponse(defaultCode, 'Success', { ok: true }, request));
186
+ responses.push(this.createDefaultResponse(400, 'Bad Request', { message: 'Bad Request' }, request));
187
+ if (routeOptions.permissions && routeOptions.permissions.length > 0) {
188
+ responses.push(this.createDefaultResponse(403, 'Forbidden', { message: 'Forbidden' }, request));
189
+ }
190
+ return responses;
191
+ }
192
+ createDefaultResponse(code, name, payload, request) {
193
+ return {
194
+ name,
195
+ originalRequest: request,
196
+ status: name,
197
+ code,
198
+ _postman_previewlanguage: 'json',
199
+ header: [{ key: 'Content-Type', value: 'application/json' }],
200
+ cookie: [],
201
+ body: JSON.stringify(payload, null, 2),
202
+ };
203
+ }
204
+ buildEvents(routeOptions) {
205
+ const events = [];
206
+ if (routeOptions.preRequestScript) {
207
+ events.push({
208
+ listen: 'prerequest',
209
+ script: this.toPostmanScript(routeOptions.preRequestScript),
210
+ });
211
+ }
212
+ if (routeOptions.testScript) {
213
+ events.push({
214
+ listen: 'test',
215
+ script: this.toPostmanScript(routeOptions.testScript),
216
+ });
217
+ }
218
+ return events.length ? events : undefined;
219
+ }
220
+ toPostmanScript(scriptContent) {
221
+ const exec = scriptContent
222
+ .split('\n')
223
+ .map((line) => line.trimEnd())
224
+ .filter((line) => line.trim().length > 0);
225
+ return { type: 'text/javascript', exec };
226
+ }
227
+ buildQuery(value) {
228
+ if (!this.isRecord(value))
229
+ return [];
230
+ return Object.entries(value).map(([key, item]) => ({
231
+ key,
232
+ value: this.stringifyScalar(item),
233
+ }));
234
+ }
235
+ buildPathVariables(path, params) {
236
+ const names = this.extractPathVariables(path);
237
+ if (!names.length)
238
+ return [];
239
+ const paramsRecord = this.isRecord(params) ? params : {};
240
+ return names.map((name) => ({
241
+ key: name,
242
+ value: this.stringifyScalar(paramsRecord[name]),
243
+ }));
244
+ }
245
+ extractPathVariables(path) {
246
+ const matches = path.match(/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g);
247
+ return matches ? matches.map((entry) => entry.replace(/\{\{|\}\}/g, '')) : [];
248
+ }
249
+ extractPostmanPath(fullPath) {
250
+ return fullPath
251
+ .split('/')
252
+ .filter((segment) => segment.length > 0)
253
+ .map((segment) => segment.replace(/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g, ':$1'));
254
+ }
255
+ defaultStatusForMethod(method) {
256
+ if (method.toUpperCase() === 'POST')
257
+ return 201;
258
+ return 200;
259
+ }
260
+ stringifyScalar(value) {
261
+ if (value === undefined || value === null)
262
+ return '';
263
+ if (typeof value === 'string')
264
+ return value;
265
+ if (typeof value === 'number' || typeof value === 'boolean') {
266
+ return String(value);
267
+ }
268
+ return JSON.stringify(value);
269
+ }
270
+ isRecord(value) {
271
+ return (value !== null &&
272
+ typeof value === 'object' &&
273
+ Object.getPrototypeOf(value) === Object.prototype);
274
+ }
275
+ generateSummary(method, path) {
276
+ const action = method.toUpperCase();
277
+ const resource = this.extractResourceName(path);
278
+ const hasPathParam = path.includes('{{');
279
+ const actionMap = {
280
+ GET: hasPathParam ? `Get ${resource} by ID` : `Get all ${resource}`,
281
+ POST: `Create ${resource}`,
282
+ PUT: `Update ${resource}`,
283
+ PATCH: `Partially update ${resource}`,
284
+ DELETE: `Delete ${resource}`,
285
+ };
286
+ return actionMap[action] || `${action} ${resource}`;
287
+ }
288
+ generateDescription(method, path) {
289
+ const action = method.toLowerCase();
290
+ const resource = this.extractResourceName(path);
291
+ const hasPathParam = path.includes('{{');
292
+ const descriptions = {
293
+ get: hasPathParam
294
+ ? `Retrieve a specific ${resource} by its ID`
295
+ : `Retrieve all ${resource} records`,
296
+ post: `Create a new ${resource} record`,
297
+ put: `Update an existing ${resource} record`,
298
+ patch: `Partially update an existing ${resource} record`,
299
+ delete: `Delete a ${resource} record`,
300
+ };
301
+ return descriptions[action] || `${action} operation on ${resource}`;
302
+ }
303
+ extractControllerFolderName(controllerPath) {
304
+ const cleaned = controllerPath.replace(/^\//, '').replace(/\/$/, '');
305
+ return cleaned || 'root';
306
+ }
307
+ extractResourceName(path) {
308
+ const segments = path.split('/').filter(Boolean);
309
+ let resource = segments[segments.length - 1] || 'Resource';
310
+ if (resource.startsWith('{{')) {
311
+ resource = segments[segments.length - 2] || 'Resource';
312
+ }
313
+ return resource.charAt(0).toUpperCase() + resource.slice(1);
314
+ }
315
+ getDefaultBaseUrl() {
316
+ const serverUrl = this.options.servers?.[0]?.url;
317
+ if (!serverUrl)
318
+ return 'http://localhost:3000';
319
+ return serverUrl.replace(/\/$/, '');
320
+ }
321
+ buildCollectionDescription() {
322
+ return [
323
+ this.options.description || 'API documentation for Mini Framework',
324
+ '',
325
+ 'Contact Support:',
326
+ ' Name: API Support',
327
+ ' Email: support@example.com',
328
+ ].join('\n');
329
+ }
330
+ generateCollectionId() {
331
+ if (typeof crypto !== 'undefined' &&
332
+ typeof crypto.randomUUID === 'function') {
333
+ return crypto.randomUUID();
334
+ }
335
+ return `mini-postman-${Date.now()}`;
336
+ }
337
+ basicAuthMiddleware(req, res, next) {
338
+ const auth = req.headers.authorization;
339
+ if (!auth || !auth.startsWith('Basic ')) {
340
+ res.setHeader('WWW-Authenticate', 'Basic realm="Postman Documentation"');
341
+ res.status(401).send('Authentication required');
342
+ return;
343
+ }
344
+ const credentials = Buffer.from(auth.substring(6), 'base64').toString();
345
+ const [username, password] = credentials.split(':');
346
+ if (username === this.options.basicAuth?.username &&
347
+ password === this.options.basicAuth?.password) {
348
+ next();
349
+ }
350
+ else {
351
+ res.setHeader('WWW-Authenticate', 'Basic realm="Postman Documentation"');
352
+ res.status(401).send('Invalid credentials');
353
+ }
354
+ }
355
+ }
356
+ exports.PostmanIntegration = PostmanIntegration;
357
+ exports.default = PostmanIntegration;
358
+ //# sourceMappingURL=postman.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman.js","sourceRoot":"","sources":["../../api-docs/postman.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import 'reflect-metadata';
2
2
  import { Express } from 'express';
3
3
  import { SwaggerOptions } from 'swagger-ui-express';
4
- import { ISwaggerBasicAuth } from './interfaces/config.interface';
4
+ import { ISwaggerBasicAuth } from '../interfaces/config.interface';
5
5
  export interface ISwaggerIntegrationOptions extends SwaggerOptions {
6
6
  basicAuth?: ISwaggerBasicAuth;
7
7
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../../api-docs/swagger.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IACjE,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,OAAO,CAA6B;gBAEhC,OAAO,GAAE,0BAA+B;IAc7C,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE;IA2S7C,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,mBAAmB;IAuBpB,YAAY,CAAC,GAAG,EAAE,OAAO;IAqCzB,cAAc;CAGrB;AAED,eAAe,kBAAkB,CAAC"}