@fnd-platform/api 1.0.0-alpha.10 → 1.0.0-alpha.12
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/lib/api-project.d.ts +4 -0
- package/lib/api-project.d.ts.map +1 -1
- package/lib/api-project.js +308 -0
- package/lib/api-project.js.map +1 -1
- package/package.json +2 -2
package/lib/api-project.d.ts
CHANGED
|
@@ -107,5 +107,9 @@ export declare class FndApiProject extends typescript.TypeScriptProject {
|
|
|
107
107
|
* Returns the content handler template content.
|
|
108
108
|
*/
|
|
109
109
|
private getContentHandlerTemplate;
|
|
110
|
+
/**
|
|
111
|
+
* Returns the media handler template content.
|
|
112
|
+
*/
|
|
113
|
+
private getMediaHandlerTemplate;
|
|
110
114
|
}
|
|
111
115
|
//# sourceMappingURL=api-project.d.ts.map
|
package/lib/api-project.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-project.d.ts","sourceRoot":"","sources":["../src/api-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAItD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC,iBAAiB;IAC7D;;OAEG;IACH,SAAgB,aAAa,EAAE,kBAAkB,CAAC;IAElD;;OAEG;IACH,SAAgB,eAAe,EAAE,OAAO,CAAC;IAEzC;;OAEG;IACH,SAAgB,cAAc,EAAE,OAAO,CAAC;IAExC;;OAEG;IACH,SAAgB,WAAW,EAAE,OAAO,CAAC;IAErC;;;;;OAKG;gBACS,OAAO,EAAE,oBAAoB;IA4DzC;;OAEG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"api-project.d.ts","sourceRoot":"","sources":["../src/api-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAItD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC,iBAAiB;IAC7D;;OAEG;IACH,SAAgB,aAAa,EAAE,kBAAkB,CAAC;IAElD;;OAEG;IACH,SAAgB,eAAe,EAAE,OAAO,CAAC;IAEzC;;OAEG;IACH,SAAgB,cAAc,EAAE,OAAO,CAAC;IAExC;;OAEG;IACH,SAAgB,WAAW,EAAE,OAAO,CAAC;IAErC;;;;;OAKG;gBACS,OAAO,EAAE,oBAAoB;IA4DzC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0I3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkGzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8E7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsE3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4F9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuF1B;;OAEG;IACH,OAAO,CAAC,eAAe;IA+GvB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA4bjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2ShC"}
|
package/lib/api-project.js
CHANGED
|
@@ -115,6 +115,8 @@ class FndApiProject extends projen_1.typescript.TypeScriptProject {
|
|
|
115
115
|
if (this.dynamodbEnabled) {
|
|
116
116
|
this.addDeps('@aws-sdk/client-dynamodb', '@aws-sdk/lib-dynamodb');
|
|
117
117
|
}
|
|
118
|
+
// S3 dependencies for media uploads
|
|
119
|
+
this.addDeps('@aws-sdk/client-s3', '@aws-sdk/s3-request-presigner');
|
|
118
120
|
// Dev dependencies
|
|
119
121
|
this.addDevDeps('@types/aws-lambda', 'esbuild', 'vitest', '@vitest/coverage-v8');
|
|
120
122
|
}
|
|
@@ -132,6 +134,10 @@ class FndApiProject extends projen_1.typescript.TypeScriptProject {
|
|
|
132
134
|
contents: this.getContentHandlerTemplate(),
|
|
133
135
|
});
|
|
134
136
|
}
|
|
137
|
+
// Media upload handler - always included for S3 uploads
|
|
138
|
+
new projen_1.SampleFile(this, 'src/handlers/media.ts', {
|
|
139
|
+
contents: this.getMediaHandlerTemplate(),
|
|
140
|
+
});
|
|
135
141
|
}
|
|
136
142
|
/**
|
|
137
143
|
* Generates the lib directory with utility files.
|
|
@@ -1326,6 +1332,308 @@ export const handler: APIGatewayProxyHandler = async (event, context, callback)
|
|
|
1326
1332
|
};
|
|
1327
1333
|
}
|
|
1328
1334
|
};
|
|
1335
|
+
`;
|
|
1336
|
+
}
|
|
1337
|
+
/**
|
|
1338
|
+
* Returns the media handler template content.
|
|
1339
|
+
*/
|
|
1340
|
+
getMediaHandlerTemplate() {
|
|
1341
|
+
return `/**
|
|
1342
|
+
* Media upload and management handler.
|
|
1343
|
+
*
|
|
1344
|
+
* Provides endpoints for uploading files to S3 using presigned URLs
|
|
1345
|
+
* and managing media records.
|
|
1346
|
+
*/
|
|
1347
|
+
|
|
1348
|
+
import type { APIGatewayProxyHandler } from 'aws-lambda';
|
|
1349
|
+
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
|
|
1350
|
+
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
1351
|
+
import { success, notFound, created, badRequest } from '../lib/response';
|
|
1352
|
+
import { parseBody, requirePathParam, getQueryParam } from '../lib/request';
|
|
1353
|
+
|
|
1354
|
+
/**
|
|
1355
|
+
* Allowed media MIME types.
|
|
1356
|
+
*/
|
|
1357
|
+
const ALLOWED_MIME_TYPES = [
|
|
1358
|
+
'image/jpeg',
|
|
1359
|
+
'image/png',
|
|
1360
|
+
'image/gif',
|
|
1361
|
+
'image/webp',
|
|
1362
|
+
'image/svg+xml',
|
|
1363
|
+
'application/pdf',
|
|
1364
|
+
'video/mp4',
|
|
1365
|
+
'video/webm',
|
|
1366
|
+
'audio/mpeg',
|
|
1367
|
+
'audio/wav',
|
|
1368
|
+
'audio/ogg',
|
|
1369
|
+
];
|
|
1370
|
+
|
|
1371
|
+
/**
|
|
1372
|
+
* Maximum file size in bytes (50MB default).
|
|
1373
|
+
*/
|
|
1374
|
+
const MAX_FILE_SIZE = parseInt(process.env.MAX_FILE_SIZE || '52428800', 10);
|
|
1375
|
+
|
|
1376
|
+
/**
|
|
1377
|
+
* S3 bucket name for media storage.
|
|
1378
|
+
*/
|
|
1379
|
+
const BUCKET_NAME = process.env.MEDIA_BUCKET_NAME || '';
|
|
1380
|
+
|
|
1381
|
+
/**
|
|
1382
|
+
* Base URL for media access (CloudFront or S3).
|
|
1383
|
+
*/
|
|
1384
|
+
const MEDIA_BASE_URL = process.env.MEDIA_BASE_URL || '';
|
|
1385
|
+
|
|
1386
|
+
/**
|
|
1387
|
+
* Presigned URL expiration time in seconds.
|
|
1388
|
+
*/
|
|
1389
|
+
const PRESIGNED_URL_EXPIRES_IN = 300;
|
|
1390
|
+
|
|
1391
|
+
/**
|
|
1392
|
+
* S3 client instance.
|
|
1393
|
+
*/
|
|
1394
|
+
const s3Client = new S3Client({});
|
|
1395
|
+
|
|
1396
|
+
/**
|
|
1397
|
+
* Media item interface.
|
|
1398
|
+
*/
|
|
1399
|
+
interface MediaItem {
|
|
1400
|
+
id: string;
|
|
1401
|
+
key: string;
|
|
1402
|
+
filename: string;
|
|
1403
|
+
mimeType: string;
|
|
1404
|
+
size: number;
|
|
1405
|
+
url: string;
|
|
1406
|
+
uploadedAt: string;
|
|
1407
|
+
uploadedBy?: string;
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
/**
|
|
1411
|
+
* Paginated response structure.
|
|
1412
|
+
*/
|
|
1413
|
+
interface PaginatedResponse<T> {
|
|
1414
|
+
items: T[];
|
|
1415
|
+
nextCursor?: string;
|
|
1416
|
+
total?: number;
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
/**
|
|
1420
|
+
* Generates a unique ID for media items.
|
|
1421
|
+
*/
|
|
1422
|
+
function generateId(): string {
|
|
1423
|
+
const timestamp = Date.now().toString(36);
|
|
1424
|
+
const randomPart = Math.random().toString(36).substring(2, 10);
|
|
1425
|
+
return \`\${timestamp}\${randomPart}\`;
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
/**
|
|
1429
|
+
* Extracts file extension from MIME type.
|
|
1430
|
+
*/
|
|
1431
|
+
function getExtensionFromMimeType(mimeType: string): string {
|
|
1432
|
+
const mimeToExt: Record<string, string> = {
|
|
1433
|
+
'image/jpeg': 'jpg',
|
|
1434
|
+
'image/png': 'png',
|
|
1435
|
+
'image/gif': 'gif',
|
|
1436
|
+
'image/webp': 'webp',
|
|
1437
|
+
'image/svg+xml': 'svg',
|
|
1438
|
+
'application/pdf': 'pdf',
|
|
1439
|
+
'video/mp4': 'mp4',
|
|
1440
|
+
'video/webm': 'webm',
|
|
1441
|
+
'audio/mpeg': 'mp3',
|
|
1442
|
+
'audio/wav': 'wav',
|
|
1443
|
+
'audio/ogg': 'ogg',
|
|
1444
|
+
};
|
|
1445
|
+
return mimeToExt[mimeType] || 'bin';
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
/**
|
|
1449
|
+
* Validates the content type is allowed.
|
|
1450
|
+
*/
|
|
1451
|
+
function isValidContentType(contentType: string): boolean {
|
|
1452
|
+
return ALLOWED_MIME_TYPES.includes(contentType);
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
/**
|
|
1456
|
+
* POST /media/upload-url - Get a presigned URL for direct S3 upload.
|
|
1457
|
+
*/
|
|
1458
|
+
export const getUploadUrl: APIGatewayProxyHandler = async (event) => {
|
|
1459
|
+
const body = parseBody<{
|
|
1460
|
+
filename: string;
|
|
1461
|
+
contentType: string;
|
|
1462
|
+
size: number;
|
|
1463
|
+
}>(event);
|
|
1464
|
+
|
|
1465
|
+
if (!body.filename || !body.contentType || !body.size) {
|
|
1466
|
+
return badRequest('Missing required fields: filename, contentType, size');
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
if (!isValidContentType(body.contentType)) {
|
|
1470
|
+
return badRequest(
|
|
1471
|
+
\`Invalid content type: \${body.contentType}. Allowed types: \${ALLOWED_MIME_TYPES.join(', ')}\`
|
|
1472
|
+
);
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1475
|
+
if (body.size > MAX_FILE_SIZE) {
|
|
1476
|
+
return badRequest(
|
|
1477
|
+
\`File size \${body.size} exceeds maximum allowed size of \${MAX_FILE_SIZE} bytes\`
|
|
1478
|
+
);
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
const id = generateId();
|
|
1482
|
+
const ext = getExtensionFromMimeType(body.contentType);
|
|
1483
|
+
const datePath = new Date().toISOString().slice(0, 7);
|
|
1484
|
+
const key = \`uploads/\${datePath}/\${id}.\${ext}\`;
|
|
1485
|
+
|
|
1486
|
+
const command = new PutObjectCommand({
|
|
1487
|
+
Bucket: BUCKET_NAME,
|
|
1488
|
+
Key: key,
|
|
1489
|
+
ContentType: body.contentType,
|
|
1490
|
+
ContentLength: body.size,
|
|
1491
|
+
Metadata: {
|
|
1492
|
+
'original-filename': encodeURIComponent(body.filename),
|
|
1493
|
+
},
|
|
1494
|
+
});
|
|
1495
|
+
|
|
1496
|
+
const uploadUrl = await getSignedUrl(s3Client, command, {
|
|
1497
|
+
expiresIn: PRESIGNED_URL_EXPIRES_IN,
|
|
1498
|
+
});
|
|
1499
|
+
|
|
1500
|
+
return success({
|
|
1501
|
+
uploadUrl,
|
|
1502
|
+
key,
|
|
1503
|
+
id,
|
|
1504
|
+
expiresIn: PRESIGNED_URL_EXPIRES_IN,
|
|
1505
|
+
});
|
|
1506
|
+
};
|
|
1507
|
+
|
|
1508
|
+
/**
|
|
1509
|
+
* POST /media - Create a media record after successful S3 upload.
|
|
1510
|
+
*/
|
|
1511
|
+
export const create: APIGatewayProxyHandler = async (event) => {
|
|
1512
|
+
const body = parseBody<{
|
|
1513
|
+
id: string;
|
|
1514
|
+
key: string;
|
|
1515
|
+
filename: string;
|
|
1516
|
+
mimeType: string;
|
|
1517
|
+
size: number;
|
|
1518
|
+
}>(event);
|
|
1519
|
+
|
|
1520
|
+
if (!body.id || !body.key || !body.filename || !body.mimeType || !body.size) {
|
|
1521
|
+
return badRequest('Missing required fields: id, key, filename, mimeType, size');
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
const url = MEDIA_BASE_URL
|
|
1525
|
+
? \`\${MEDIA_BASE_URL}/\${body.key}\`
|
|
1526
|
+
: \`https://\${BUCKET_NAME}.s3.amazonaws.com/\${body.key}\`;
|
|
1527
|
+
|
|
1528
|
+
const media: MediaItem = {
|
|
1529
|
+
id: body.id,
|
|
1530
|
+
key: body.key,
|
|
1531
|
+
filename: body.filename,
|
|
1532
|
+
mimeType: body.mimeType,
|
|
1533
|
+
size: body.size,
|
|
1534
|
+
url,
|
|
1535
|
+
uploadedAt: new Date().toISOString(),
|
|
1536
|
+
};
|
|
1537
|
+
|
|
1538
|
+
return created(media);
|
|
1539
|
+
};
|
|
1540
|
+
|
|
1541
|
+
/**
|
|
1542
|
+
* GET /media - List media items with pagination.
|
|
1543
|
+
*/
|
|
1544
|
+
export const list: APIGatewayProxyHandler = async (event) => {
|
|
1545
|
+
const limit = parseInt(getQueryParam(event, 'limit', '20') ?? '20', 10);
|
|
1546
|
+
const cursor = getQueryParam(event, 'cursor');
|
|
1547
|
+
const type = getQueryParam(event, 'type');
|
|
1548
|
+
|
|
1549
|
+
// TODO: Implement with DynamoDB
|
|
1550
|
+
// These will be used for querying: limit, cursor, type
|
|
1551
|
+
console.log('List media:', { limit, cursor, type });
|
|
1552
|
+
|
|
1553
|
+
const items: MediaItem[] = [];
|
|
1554
|
+
const response: PaginatedResponse<MediaItem> = {
|
|
1555
|
+
items,
|
|
1556
|
+
nextCursor: undefined,
|
|
1557
|
+
total: 0,
|
|
1558
|
+
};
|
|
1559
|
+
|
|
1560
|
+
return success(response);
|
|
1561
|
+
};
|
|
1562
|
+
|
|
1563
|
+
/**
|
|
1564
|
+
* GET /media/:id - Get a single media item.
|
|
1565
|
+
*/
|
|
1566
|
+
export const get: APIGatewayProxyHandler = async (event) => {
|
|
1567
|
+
const id = requirePathParam(event, 'id');
|
|
1568
|
+
|
|
1569
|
+
// TODO: Implement with DynamoDB
|
|
1570
|
+
return notFound(\`Media with id '\${id}' not found\`);
|
|
1571
|
+
};
|
|
1572
|
+
|
|
1573
|
+
/**
|
|
1574
|
+
* DELETE /media/:id - Delete a media item.
|
|
1575
|
+
*/
|
|
1576
|
+
export const remove: APIGatewayProxyHandler = async (event) => {
|
|
1577
|
+
const id = requirePathParam(event, 'id');
|
|
1578
|
+
|
|
1579
|
+
// TODO: Implement with DynamoDB and S3 deletion
|
|
1580
|
+
return success({ deleted: true, id });
|
|
1581
|
+
};
|
|
1582
|
+
|
|
1583
|
+
/**
|
|
1584
|
+
* Main router handler for media operations.
|
|
1585
|
+
*/
|
|
1586
|
+
export const handler: APIGatewayProxyHandler = async (event, context, callback) => {
|
|
1587
|
+
const method = event.httpMethod;
|
|
1588
|
+
const resource = event.resource;
|
|
1589
|
+
|
|
1590
|
+
try {
|
|
1591
|
+
let result: Awaited<ReturnType<typeof list>> | undefined;
|
|
1592
|
+
|
|
1593
|
+
switch (resource) {
|
|
1594
|
+
case '/media':
|
|
1595
|
+
if (method === 'GET') result = await list(event, context, callback);
|
|
1596
|
+
else if (method === 'POST') result = await create(event, context, callback);
|
|
1597
|
+
break;
|
|
1598
|
+
case '/media/upload-url':
|
|
1599
|
+
if (method === 'POST') result = await getUploadUrl(event, context, callback);
|
|
1600
|
+
break;
|
|
1601
|
+
case '/media/{id}':
|
|
1602
|
+
if (method === 'GET') result = await get(event, context, callback);
|
|
1603
|
+
else if (method === 'DELETE') result = await remove(event, context, callback);
|
|
1604
|
+
break;
|
|
1605
|
+
}
|
|
1606
|
+
|
|
1607
|
+
if (result) {
|
|
1608
|
+
return result;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
return {
|
|
1612
|
+
statusCode: 405,
|
|
1613
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1614
|
+
body: JSON.stringify({
|
|
1615
|
+
success: false,
|
|
1616
|
+
error: {
|
|
1617
|
+
code: 'METHOD_NOT_ALLOWED',
|
|
1618
|
+
message: \`Method \${method} not allowed for \${resource}\`,
|
|
1619
|
+
},
|
|
1620
|
+
}),
|
|
1621
|
+
};
|
|
1622
|
+
} catch (error) {
|
|
1623
|
+
console.error('Media handler error:', error);
|
|
1624
|
+
return {
|
|
1625
|
+
statusCode: 500,
|
|
1626
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1627
|
+
body: JSON.stringify({
|
|
1628
|
+
success: false,
|
|
1629
|
+
error: {
|
|
1630
|
+
code: 'INTERNAL_ERROR',
|
|
1631
|
+
message: 'Internal server error',
|
|
1632
|
+
},
|
|
1633
|
+
}),
|
|
1634
|
+
};
|
|
1635
|
+
}
|
|
1636
|
+
};
|
|
1329
1637
|
`;
|
|
1330
1638
|
}
|
|
1331
1639
|
}
|
package/lib/api-project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-project.js","sourceRoot":"","sources":["../src/api-project.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-project.js","sourceRoot":"","sources":["../src/api-project.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fnd-platform/api",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.12",
|
|
4
4
|
"description": "Projen project class for generating Lambda API packages in fnd-platform",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@aws-sdk/s3-request-presigner": "^3.500.0",
|
|
15
15
|
"projen": "^0.91.0",
|
|
16
16
|
"zod": "^3.22.0",
|
|
17
|
-
"@fnd-platform/core": "^1.0.0-alpha.
|
|
17
|
+
"@fnd-platform/core": "^1.0.0-alpha.6"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"projen": "^0.91.0"
|