@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.
@@ -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
@@ -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;IAU1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;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;CA2blC"}
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"}
@@ -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
  }
@@ -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.10",
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.5"
17
+ "@fnd-platform/core": "^1.0.0-alpha.6"
18
18
  },
19
19
  "peerDependencies": {
20
20
  "projen": "^0.91.0"