serverless-event-orchestrator 1.0.1 → 1.2.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,4BAA4B,CAAC;AACrE,OAAO,EACL,cAAc,EASd,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAO3B;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS,CAMrD;AAyOD;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,cAAc,EACtB,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,GAAG,CAAC,CAuId;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,kBAAuB;sBAE5C,GAAG,UAAU,cAAc;;EAGhD"}
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,4BAA4B,CAAC;AACrE,OAAO,EACL,cAAc,EASd,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAO3B;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS,CAMrD;AA4OD;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,cAAc,EACtB,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,GAAG,CAAC,CAwJd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,kBAAuB;sBAE5C,GAAG,UAAU,cAAc;;EAGhD"}
@@ -114,14 +114,16 @@ function findRouteInSegmentsWithActualPath(router, method, routePattern, actualP
114
114
  /**
115
115
  * Normalizes an API Gateway event into a standard format
116
116
  */
117
- function normalizeApiGatewayEvent(event, segment, params) {
117
+ function normalizeApiGatewayEvent(event, segment, extractedParams) {
118
118
  const identity = (0, extractor_js_1.extractIdentity)(event);
119
+ // Merge: pathParameters from original event + extracted params (extractedParams takes priority)
120
+ const params = { ...event.pathParameters, ...extractedParams };
119
121
  return {
120
122
  eventRaw: event,
121
123
  eventType: event_type_enum_js_1.EventType.ApiGateway,
122
124
  payload: {
123
125
  body: (0, body_parser_js_1.parseJsonBody)(event.body, event.isBase64Encoded),
124
- pathParameters: { ...event.pathParameters, ...params },
126
+ pathParameters: params,
125
127
  queryStringParameters: (0, body_parser_js_1.parseQueryParams)(event.queryStringParameters),
126
128
  headers: (0, headers_js_1.normalizeHeaders)(event.headers),
127
129
  },
@@ -235,6 +237,22 @@ async function dispatchEvent(event, routes, config = {}) {
235
237
  const method = event.httpMethod?.toLowerCase();
236
238
  const routePattern = event.resource || event.path;
237
239
  const actualPath = event.path || event.resource;
240
+ // Handle CORS preflight requests automatically
241
+ if (method === 'options') {
242
+ if (debug) {
243
+ console.log('[SEO] Handling OPTIONS preflight request');
244
+ }
245
+ return {
246
+ statusCode: 204,
247
+ headers: {
248
+ 'Access-Control-Allow-Origin': '*',
249
+ 'Access-Control-Allow-Headers': 'Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token,X-App-Version,X-Platform',
250
+ 'Access-Control-Allow-Methods': 'GET,POST,PUT,PATCH,DELETE,OPTIONS',
251
+ 'Access-Control-Max-Age': '86400',
252
+ },
253
+ body: '',
254
+ };
255
+ }
238
256
  if (debug) {
239
257
  console.log('[SEO] Method:', method, 'Path:', routePattern, 'Actual:', actualPath);
240
258
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -50,50 +50,52 @@ export declare const DefaultResponseCode: {
50
50
  readonly INTERNAL_ERROR: "INTERNAL_ERROR";
51
51
  };
52
52
  /**
53
- * Creates a standardized HTTP response
53
+ * Creates a standardized HTTP response.
54
+ * Automatically handles data/message normalization to ensure consistent structure.
55
+ *
54
56
  * @param statusCode - HTTP status code
55
- * @param data - Response payload
56
- * @param code - Custom response code
57
- * @param message - Optional message
57
+ * @param data - Response payload (will be placed in 'data' field)
58
+ * @param code - Custom response code (Domain-specific)
59
+ * @param message - Optional message (if provided and data is null, message content will be put into 'data' for backward compatibility if needed, but the library now prefers explicit data)
58
60
  * @param headers - Optional headers
59
61
  */
60
62
  export declare function createStandardResponse<T, C = string>(statusCode: number, data?: T, code?: C, message?: string, headers?: Record<string, string>): HttpResponse;
61
63
  /**
62
64
  * Success response (200 OK)
63
65
  */
64
- export declare function successResponse<T>(data?: T, code?: string, headers?: Record<string, string>): HttpResponse;
66
+ export declare function successResponse<T, C = string>(data?: T, code?: C, headers?: Record<string, string>): HttpResponse;
65
67
  /**
66
68
  * Created response (201 Created)
67
69
  */
68
- export declare function createdResponse<T>(data?: T, code?: string, headers?: Record<string, string>): HttpResponse;
70
+ export declare function createdResponse<T, C = string>(data?: T, code?: C, headers?: Record<string, string>): HttpResponse;
69
71
  /**
70
72
  * Bad request response (400)
71
73
  */
72
- export declare function badRequestResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse;
74
+ export declare function badRequestResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse;
73
75
  /**
74
76
  * Unauthorized response (401)
75
77
  */
76
- export declare function unauthorizedResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse;
78
+ export declare function unauthorizedResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse;
77
79
  /**
78
80
  * Forbidden response (403)
79
81
  */
80
- export declare function forbiddenResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse;
82
+ export declare function forbiddenResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse;
81
83
  /**
82
84
  * Not found response (404)
83
85
  */
84
- export declare function notFoundResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse;
86
+ export declare function notFoundResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse;
85
87
  /**
86
88
  * Conflict response (409)
87
89
  */
88
- export declare function conflictResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse;
90
+ export declare function conflictResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse;
89
91
  /**
90
92
  * Validation error response (422)
91
93
  */
92
- export declare function validationErrorResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse;
94
+ export declare function validationErrorResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse;
93
95
  /**
94
96
  * Internal server error response (500)
95
97
  */
96
- export declare function internalErrorResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse;
98
+ export declare function internalErrorResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse;
97
99
  /**
98
100
  * Custom error response with automatic status resolution
99
101
  * @param customCode - Your domain-specific error code
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/http/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/http/response.ts"],"names":[],"mappings":"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"}
@@ -48,15 +48,21 @@ exports.DefaultResponseCode = {
48
48
  INTERNAL_ERROR: 'INTERNAL_ERROR',
49
49
  };
50
50
  /**
51
- * Creates a standardized HTTP response
51
+ * Creates a standardized HTTP response.
52
+ * Automatically handles data/message normalization to ensure consistent structure.
53
+ *
52
54
  * @param statusCode - HTTP status code
53
- * @param data - Response payload
54
- * @param code - Custom response code
55
- * @param message - Optional message
55
+ * @param data - Response payload (will be placed in 'data' field)
56
+ * @param code - Custom response code (Domain-specific)
57
+ * @param message - Optional message (if provided and data is null, message content will be put into 'data' for backward compatibility if needed, but the library now prefers explicit data)
56
58
  * @param headers - Optional headers
57
59
  */
58
60
  function createStandardResponse(statusCode, data, code, message, headers) {
59
61
  const responseCode = code ?? getDefaultCodeForStatus(statusCode);
62
+ // Normalización automática:
63
+ // Si tenemos un mensaje pero no data, y el status es error,
64
+ // podríamos querer que el mensaje sea la descripción en data.
65
+ // Pero lo más limpio es seguir la estructura: { status, code, data, message }
60
66
  const body = {
61
67
  status: statusCode,
62
68
  code: responseCode,
@@ -68,6 +74,9 @@ function createStandardResponse(statusCode, data, code, message, headers) {
68
74
  body: JSON.stringify(body, null, 2),
69
75
  headers: {
70
76
  'Content-Type': 'application/json',
77
+ 'Access-Control-Allow-Origin': '*',
78
+ 'Access-Control-Allow-Headers': 'Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token,X-App-Version,X-Platform',
79
+ 'Access-Control-Allow-Methods': 'GET,POST,PUT,PATCH,DELETE,OPTIONS',
71
80
  ...headers,
72
81
  },
73
82
  };
@@ -101,55 +110,55 @@ function getDefaultCodeForStatus(status) {
101
110
  * Success response (200 OK)
102
111
  */
103
112
  function successResponse(data, code, headers) {
104
- return createStandardResponse(HttpStatus.OK, data, code ?? exports.DefaultResponseCode.SUCCESS, undefined, headers);
113
+ return createStandardResponse(HttpStatus.OK, data, code, undefined, headers);
105
114
  }
106
115
  /**
107
116
  * Created response (201 Created)
108
117
  */
109
118
  function createdResponse(data, code, headers) {
110
- return createStandardResponse(HttpStatus.CREATED, data, code ?? exports.DefaultResponseCode.CREATED, undefined, headers);
119
+ return createStandardResponse(HttpStatus.CREATED, data, code, undefined, headers);
111
120
  }
112
121
  /**
113
122
  * Bad request response (400)
114
123
  */
115
124
  function badRequestResponse(message, code, headers) {
116
- return createStandardResponse(HttpStatus.BAD_REQUEST, undefined, code ?? exports.DefaultResponseCode.BAD_REQUEST, message, headers);
125
+ return createStandardResponse(HttpStatus.BAD_REQUEST, undefined, code, message, headers);
117
126
  }
118
127
  /**
119
128
  * Unauthorized response (401)
120
129
  */
121
130
  function unauthorizedResponse(message, code, headers) {
122
- return createStandardResponse(HttpStatus.UNAUTHORIZED, undefined, code ?? exports.DefaultResponseCode.UNAUTHORIZED, message, headers);
131
+ return createStandardResponse(HttpStatus.UNAUTHORIZED, undefined, code, message, headers);
123
132
  }
124
133
  /**
125
134
  * Forbidden response (403)
126
135
  */
127
136
  function forbiddenResponse(message, code, headers) {
128
- return createStandardResponse(HttpStatus.FORBIDDEN, undefined, code ?? exports.DefaultResponseCode.FORBIDDEN, message, headers);
137
+ return createStandardResponse(HttpStatus.FORBIDDEN, undefined, code, message, headers);
129
138
  }
130
139
  /**
131
140
  * Not found response (404)
132
141
  */
133
142
  function notFoundResponse(message, code, headers) {
134
- return createStandardResponse(HttpStatus.NOT_FOUND, undefined, code ?? exports.DefaultResponseCode.NOT_FOUND, message, headers);
143
+ return createStandardResponse(HttpStatus.NOT_FOUND, undefined, code, message, headers);
135
144
  }
136
145
  /**
137
146
  * Conflict response (409)
138
147
  */
139
148
  function conflictResponse(message, code, headers) {
140
- return createStandardResponse(HttpStatus.CONFLICT, undefined, code ?? exports.DefaultResponseCode.CONFLICT, message, headers);
149
+ return createStandardResponse(HttpStatus.CONFLICT, undefined, code, message, headers);
141
150
  }
142
151
  /**
143
152
  * Validation error response (422)
144
153
  */
145
154
  function validationErrorResponse(message, code, headers) {
146
- return createStandardResponse(HttpStatus.UNPROCESSABLE_ENTITY, undefined, code ?? exports.DefaultResponseCode.VALIDATION_ERROR, message, headers);
155
+ return createStandardResponse(HttpStatus.UNPROCESSABLE_ENTITY, undefined, code, message, headers);
147
156
  }
148
157
  /**
149
158
  * Internal server error response (500)
150
159
  */
151
160
  function internalErrorResponse(message, code, headers) {
152
- return createStandardResponse(HttpStatus.INTERNAL_SERVER_ERROR, undefined, code ?? exports.DefaultResponseCode.INTERNAL_ERROR, message, headers);
161
+ return createStandardResponse(HttpStatus.INTERNAL_SERVER_ERROR, undefined, code, message, headers);
153
162
  }
154
163
  /**
155
164
  * Custom error response with automatic status resolution
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/http/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/http/response.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "serverless-event-orchestrator",
3
- "version": "1.0.1",
3
+ "version": "1.2.1",
4
4
  "description": "A lightweight, type-safe event dispatcher and middleware orchestrator for AWS Lambda. Designed for hexagonal architectures with support for segmented routing (public, private, backoffice), Cognito User Pool validation, and built-in infrastructure middlewares.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/dispatcher.ts CHANGED
@@ -139,15 +139,18 @@ function findRouteInSegmentsWithActualPath(
139
139
  /**
140
140
  * Normalizes an API Gateway event into a standard format
141
141
  */
142
- function normalizeApiGatewayEvent(event: any, segment: RouteSegment, params: Record<string, string>): NormalizedEvent {
142
+ function normalizeApiGatewayEvent(event: any, segment: RouteSegment, extractedParams: Record<string, string>): NormalizedEvent {
143
143
  const identity = extractIdentity(event);
144
144
 
145
+ // Merge: pathParameters from original event + extracted params (extractedParams takes priority)
146
+ const params = { ...event.pathParameters, ...extractedParams };
147
+
145
148
  return {
146
149
  eventRaw: event,
147
150
  eventType: EventType.ApiGateway,
148
151
  payload: {
149
152
  body: parseJsonBody(event.body, event.isBase64Encoded),
150
- pathParameters: { ...event.pathParameters, ...params },
153
+ pathParameters: params,
151
154
  queryStringParameters: parseQueryParams(event.queryStringParameters),
152
155
  headers: normalizeHeaders(event.headers),
153
156
  },
@@ -286,6 +289,23 @@ export async function dispatchEvent(
286
289
  const routePattern = event.resource || event.path;
287
290
  const actualPath = event.path || event.resource;
288
291
 
292
+ // Handle CORS preflight requests automatically
293
+ if (method === 'options') {
294
+ if (debug) {
295
+ console.log('[SEO] Handling OPTIONS preflight request');
296
+ }
297
+ return {
298
+ statusCode: 204,
299
+ headers: {
300
+ 'Access-Control-Allow-Origin': '*',
301
+ 'Access-Control-Allow-Headers': 'Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token,X-App-Version,X-Platform',
302
+ 'Access-Control-Allow-Methods': 'GET,POST,PUT,PATCH,DELETE,OPTIONS',
303
+ 'Access-Control-Max-Age': '86400',
304
+ },
305
+ body: '',
306
+ };
307
+ }
308
+
289
309
  if (debug) {
290
310
  console.log('[SEO] Method:', method, 'Path:', routePattern, 'Actual:', actualPath);
291
311
  }
@@ -55,11 +55,13 @@ export const DefaultResponseCode = {
55
55
  } as const;
56
56
 
57
57
  /**
58
- * Creates a standardized HTTP response
58
+ * Creates a standardized HTTP response.
59
+ * Automatically handles data/message normalization to ensure consistent structure.
60
+ *
59
61
  * @param statusCode - HTTP status code
60
- * @param data - Response payload
61
- * @param code - Custom response code
62
- * @param message - Optional message
62
+ * @param data - Response payload (will be placed in 'data' field)
63
+ * @param code - Custom response code (Domain-specific)
64
+ * @param message - Optional message (if provided and data is null, message content will be put into 'data' for backward compatibility if needed, but the library now prefers explicit data)
63
65
  * @param headers - Optional headers
64
66
  */
65
67
  export function createStandardResponse<T, C = string>(
@@ -69,9 +71,14 @@ export function createStandardResponse<T, C = string>(
69
71
  message?: string,
70
72
  headers?: Record<string, string>
71
73
  ): HttpResponse {
72
- const responseCode = code ?? getDefaultCodeForStatus(statusCode);
74
+ const responseCode = code ?? (getDefaultCodeForStatus(statusCode) as unknown as C);
73
75
 
74
- const body: StandardResponse<T, C | string> = {
76
+ // Normalización automática:
77
+ // Si tenemos un mensaje pero no data, y el status es error,
78
+ // podríamos querer que el mensaje sea la descripción en data.
79
+ // Pero lo más limpio es seguir la estructura: { status, code, data, message }
80
+
81
+ const body: StandardResponse<T, C> = {
75
82
  status: statusCode,
76
83
  code: responseCode,
77
84
  ...(data !== undefined && { data }),
@@ -83,6 +90,9 @@ export function createStandardResponse<T, C = string>(
83
90
  body: JSON.stringify(body, null, 2),
84
91
  headers: {
85
92
  'Content-Type': 'application/json',
93
+ 'Access-Control-Allow-Origin': '*',
94
+ 'Access-Control-Allow-Headers': 'Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token,X-App-Version,X-Platform',
95
+ 'Access-Control-Allow-Methods': 'GET,POST,PUT,PATCH,DELETE,OPTIONS',
86
96
  ...headers,
87
97
  },
88
98
  };
@@ -117,64 +127,64 @@ function getDefaultCodeForStatus(status: number): string {
117
127
  /**
118
128
  * Success response (200 OK)
119
129
  */
120
- export function successResponse<T>(data?: T, code?: string, headers?: Record<string, string>): HttpResponse {
121
- return createStandardResponse(HttpStatus.OK, data, code ?? DefaultResponseCode.SUCCESS, undefined, headers);
130
+ export function successResponse<T, C = string>(data?: T, code?: C, headers?: Record<string, string>): HttpResponse {
131
+ return createStandardResponse(HttpStatus.OK, data, code, undefined, headers);
122
132
  }
123
133
 
124
134
  /**
125
135
  * Created response (201 Created)
126
136
  */
127
- export function createdResponse<T>(data?: T, code?: string, headers?: Record<string, string>): HttpResponse {
128
- return createStandardResponse(HttpStatus.CREATED, data, code ?? DefaultResponseCode.CREATED, undefined, headers);
137
+ export function createdResponse<T, C = string>(data?: T, code?: C, headers?: Record<string, string>): HttpResponse {
138
+ return createStandardResponse(HttpStatus.CREATED, data, code, undefined, headers);
129
139
  }
130
140
 
131
141
  /**
132
142
  * Bad request response (400)
133
143
  */
134
- export function badRequestResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse {
135
- return createStandardResponse(HttpStatus.BAD_REQUEST, undefined, code ?? DefaultResponseCode.BAD_REQUEST, message, headers);
144
+ export function badRequestResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse {
145
+ return createStandardResponse(HttpStatus.BAD_REQUEST, undefined, code, message, headers);
136
146
  }
137
147
 
138
148
  /**
139
149
  * Unauthorized response (401)
140
150
  */
141
- export function unauthorizedResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse {
142
- return createStandardResponse(HttpStatus.UNAUTHORIZED, undefined, code ?? DefaultResponseCode.UNAUTHORIZED, message, headers);
151
+ export function unauthorizedResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse {
152
+ return createStandardResponse(HttpStatus.UNAUTHORIZED, undefined, code, message, headers);
143
153
  }
144
154
 
145
155
  /**
146
156
  * Forbidden response (403)
147
157
  */
148
- export function forbiddenResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse {
149
- return createStandardResponse(HttpStatus.FORBIDDEN, undefined, code ?? DefaultResponseCode.FORBIDDEN, message, headers);
158
+ export function forbiddenResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse {
159
+ return createStandardResponse(HttpStatus.FORBIDDEN, undefined, code, message, headers);
150
160
  }
151
161
 
152
162
  /**
153
163
  * Not found response (404)
154
164
  */
155
- export function notFoundResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse {
156
- return createStandardResponse(HttpStatus.NOT_FOUND, undefined, code ?? DefaultResponseCode.NOT_FOUND, message, headers);
165
+ export function notFoundResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse {
166
+ return createStandardResponse(HttpStatus.NOT_FOUND, undefined, code, message, headers);
157
167
  }
158
168
 
159
169
  /**
160
170
  * Conflict response (409)
161
171
  */
162
- export function conflictResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse {
163
- return createStandardResponse(HttpStatus.CONFLICT, undefined, code ?? DefaultResponseCode.CONFLICT, message, headers);
172
+ export function conflictResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse {
173
+ return createStandardResponse(HttpStatus.CONFLICT, undefined, code, message, headers);
164
174
  }
165
175
 
166
176
  /**
167
177
  * Validation error response (422)
168
178
  */
169
- export function validationErrorResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse {
170
- return createStandardResponse(HttpStatus.UNPROCESSABLE_ENTITY, undefined, code ?? DefaultResponseCode.VALIDATION_ERROR, message, headers);
179
+ export function validationErrorResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse {
180
+ return createStandardResponse(HttpStatus.UNPROCESSABLE_ENTITY, undefined, code, message, headers);
171
181
  }
172
182
 
173
183
  /**
174
184
  * Internal server error response (500)
175
185
  */
176
- export function internalErrorResponse(message?: string, code?: string, headers?: Record<string, string>): HttpResponse {
177
- return createStandardResponse(HttpStatus.INTERNAL_SERVER_ERROR, undefined, code ?? DefaultResponseCode.INTERNAL_ERROR, message, headers);
186
+ export function internalErrorResponse<C = string>(message?: string, code?: C, headers?: Record<string, string>): HttpResponse {
187
+ return createStandardResponse(HttpStatus.INTERNAL_SERVER_ERROR, undefined, code, message, headers);
178
188
  }
179
189
 
180
190
  /**
@@ -318,6 +318,181 @@ describe('dispatchEvent - Lambda', () => {
318
318
  });
319
319
  });
320
320
 
321
+ describe('dispatchEvent - Path Parameters Fallback', () => {
322
+ const mockHandler = jest.fn().mockResolvedValue({ statusCode: 200, body: '{}' });
323
+
324
+ beforeEach(() => {
325
+ mockHandler.mockClear();
326
+ });
327
+
328
+ it('should include event.pathParameters in params when route matching extracts params', async () => {
329
+ const routes: DispatchRoutes = {
330
+ apigateway: {
331
+ get: {
332
+ '/users/{id}': { handler: mockHandler }
333
+ }
334
+ }
335
+ };
336
+
337
+ const event = {
338
+ requestContext: { requestId: '123' },
339
+ httpMethod: 'GET',
340
+ resource: '/users/{id}',
341
+ path: '/users/456',
342
+ pathParameters: { id: '456' },
343
+ headers: {},
344
+ body: null
345
+ };
346
+
347
+ await dispatchEvent(event, routes);
348
+
349
+ expect(mockHandler).toHaveBeenCalledWith(
350
+ expect.objectContaining({
351
+ params: { id: '456' },
352
+ payload: expect.objectContaining({
353
+ pathParameters: { id: '456' }
354
+ })
355
+ })
356
+ );
357
+ });
358
+
359
+ it('should use event.pathParameters as fallback when route matching fails to extract params', async () => {
360
+ const routes: DispatchRoutes = {
361
+ apigateway: {
362
+ public: {
363
+ get: {
364
+ '/property-types/{id}': { handler: mockHandler }
365
+ }
366
+ }
367
+ } as SegmentedHttpRouter
368
+ };
369
+
370
+ // Simulate API Gateway sending full path with basePath, but router uses relative path
371
+ // In this case, route matches by pattern but actualPath differs
372
+ const event = {
373
+ requestContext: { requestId: '123' },
374
+ httpMethod: 'GET',
375
+ resource: '/property-types/{id}',
376
+ path: '/property-types/abc123',
377
+ pathParameters: { id: 'abc123' }, // API Gateway already extracted this
378
+ headers: {},
379
+ body: null
380
+ };
381
+
382
+ await dispatchEvent(event, routes);
383
+
384
+ expect(mockHandler).toHaveBeenCalledWith(
385
+ expect.objectContaining({
386
+ params: expect.objectContaining({ id: 'abc123' }),
387
+ payload: expect.objectContaining({
388
+ pathParameters: expect.objectContaining({ id: 'abc123' })
389
+ })
390
+ })
391
+ );
392
+ });
393
+
394
+ it('should give priority to extracted params over event.pathParameters', async () => {
395
+ const routes: DispatchRoutes = {
396
+ apigateway: {
397
+ get: {
398
+ '/items/{itemId}': { handler: mockHandler }
399
+ }
400
+ }
401
+ };
402
+
403
+ const event = {
404
+ requestContext: { requestId: '123' },
405
+ httpMethod: 'GET',
406
+ resource: '/items/{itemId}',
407
+ path: '/items/extracted-value',
408
+ pathParameters: { itemId: 'original-value', extra: 'should-persist' },
409
+ headers: {},
410
+ body: null
411
+ };
412
+
413
+ await dispatchEvent(event, routes);
414
+
415
+ expect(mockHandler).toHaveBeenCalledWith(
416
+ expect.objectContaining({
417
+ params: {
418
+ itemId: 'extracted-value', // Extracted takes priority
419
+ extra: 'should-persist' // Original persists
420
+ },
421
+ payload: expect.objectContaining({
422
+ pathParameters: {
423
+ itemId: 'extracted-value',
424
+ extra: 'should-persist'
425
+ }
426
+ })
427
+ })
428
+ );
429
+ });
430
+
431
+ it('should work with basePath mismatch between router and API Gateway', async () => {
432
+ const routes: DispatchRoutes = {
433
+ apigateway: {
434
+ private: {
435
+ get: {
436
+ '/categories/{categoryId}/items/{itemId}': { handler: mockHandler }
437
+ }
438
+ }
439
+ } as SegmentedHttpRouter
440
+ };
441
+
442
+ const event = {
443
+ requestContext: { requestId: '123' },
444
+ httpMethod: 'GET',
445
+ resource: '/categories/{categoryId}/items/{itemId}',
446
+ path: '/categories/cat-1/items/item-2',
447
+ pathParameters: { categoryId: 'cat-1', itemId: 'item-2' },
448
+ headers: {},
449
+ body: null
450
+ };
451
+
452
+ await dispatchEvent(event, routes);
453
+
454
+ expect(mockHandler).toHaveBeenCalledWith(
455
+ expect.objectContaining({
456
+ params: { categoryId: 'cat-1', itemId: 'item-2' },
457
+ payload: expect.objectContaining({
458
+ pathParameters: { categoryId: 'cat-1', itemId: 'item-2' }
459
+ })
460
+ })
461
+ );
462
+ });
463
+
464
+ it('should handle null pathParameters from event gracefully', async () => {
465
+ const routes: DispatchRoutes = {
466
+ apigateway: {
467
+ get: {
468
+ '/static-route': { handler: mockHandler }
469
+ }
470
+ }
471
+ };
472
+
473
+ const event = {
474
+ requestContext: { requestId: '123' },
475
+ httpMethod: 'GET',
476
+ resource: '/static-route',
477
+ path: '/static-route',
478
+ pathParameters: null, // API Gateway sends null for routes without params
479
+ headers: {},
480
+ body: null
481
+ };
482
+
483
+ await dispatchEvent(event, routes);
484
+
485
+ expect(mockHandler).toHaveBeenCalledWith(
486
+ expect.objectContaining({
487
+ params: {},
488
+ payload: expect.objectContaining({
489
+ pathParameters: {}
490
+ })
491
+ })
492
+ );
493
+ });
494
+ });
495
+
321
496
  describe('dispatchEvent - User Pool Validation', () => {
322
497
  const mockHandler = jest.fn().mockResolvedValue({ statusCode: 200 });
323
498