qstd 0.3.19 → 0.3.20

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.
@@ -45,4 +45,28 @@ export declare function bucketHandle(s3: _t.Client, props: {
45
45
  * @returns
46
46
  */
47
47
  export declare const migrateBucketContents: (s3: _t.Client, buckets: _t.BucketTransferOpts) => Promise<DeleteObjectCommandOutput[] | undefined>;
48
+ /**
49
+ * Parse and decode S3 records from an SQS message body.
50
+ *
51
+ * S3 event notifications delivered via SQS contain URL-encoded object keys.
52
+ * This function parses the JSON and decodes keys in one step, so consumers
53
+ * don't need to handle the encoding quirks.
54
+ *
55
+ * @returns Decoded records array, or null if parsing fails or no records exist
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * const records = S3.recordsFromSqs(sqsRecord.body);
60
+ * if (!records) {
61
+ * logger.warn("Invalid S3 event");
62
+ * continue;
63
+ * }
64
+ *
65
+ * for (const { bucket, key } of records) {
66
+ * // key is already decoded
67
+ * await processFile(bucket, key);
68
+ * }
69
+ * ```
70
+ */
71
+ export declare const recordsFromSqs: (body: string) => _t.SqsRecord[] | null;
48
72
  //# sourceMappingURL=domain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,eAAO,MAAM,MAAM,GAAI,QAAO,EAAE,CAAC,WAAgB,KAAG,EAAE,CAAC,MAKtD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,kBAAkB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;AA4C1B;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,iEAU9D,CAAC;AAMF,MAAM,MAAM,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,eAAO,MAAM,OAAO,GAClB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,sBAAsB,CAWhC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,yBAAyB,CAWnC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,uBAAuB,CAWjC,CAAC;AAMF,0BAA0B;AAC1B,wBAAgB,YAAY,CAC1B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACtC,wBAAgB,YAAY,CAC1B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACtC,wBAAgB,YAAY,CAC1B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,OAAO,CAAC,CAAC;AAmCpB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,IAAI,EAAE,CAAC,MAAM,EACb,SAAS,EAAE,CAAC,kBAAkB,qDAkB/B,CAAC"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,eAAO,MAAM,MAAM,GAAI,QAAO,EAAE,CAAC,WAAgB,KAAG,EAAE,CAAC,MAKtD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB,wBAAgB,eAAe,CAC7B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE,EAAE,CAAC,kBAAkB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;AA4C1B;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,iEAU9D,CAAC;AAMF,MAAM,MAAM,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,eAAO,MAAM,OAAO,GAClB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,sBAAsB,CAWhC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,yBAAyB,CAWnC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,IAAI,EAAE,CAAC,MAAM,EACb,OAAO,SAAS,KACf,OAAO,CAAC,uBAAuB,CAWjC,CAAC;AAMF,0BAA0B;AAC1B,wBAAgB,YAAY,CAC1B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACtC,wBAAgB,YAAY,CAC1B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACtC,wBAAgB,YAAY,CAC1B,EAAE,EAAE,EAAE,CAAC,MAAM,EACb,KAAK,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,OAAO,CAAC,CAAC;AAmCpB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,IAAI,EAAE,CAAC,MAAM,EACb,SAAS,EAAE,CAAC,kBAAkB,qDAkB/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,EAAE,CAAC,SAAS,EAAE,GAAG,IAgB9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/fns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KACpC,MAOF,CAAC"}
1
+ {"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/fns.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KACpC,MAOF,CAAC"}
@@ -1,4 +1,3 @@
1
1
  export * from "./domain";
2
2
  export * from "./types";
3
- export * from "./fns";
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -3,6 +3,15 @@ import type { CompletedPart, PutObjectCommandInput, UploadPartRequest } from "@a
3
3
  import type { PresignedPostOptions } from "@aws-sdk/s3-presigned-post";
4
4
  import type { S3Event } from "aws-lambda";
5
5
  export type NotificationEvent = S3Event;
6
+ /** Decoded S3 record from an SQS-delivered notification */
7
+ export type SqsRecord = {
8
+ bucket: string;
9
+ /** Decoded S3 object key (URL-decoded, spaces restored) */
10
+ key: string;
11
+ size?: number;
12
+ eventName: string;
13
+ eventTime: string;
14
+ };
6
15
  export type Client = {
7
16
  client: S3Client;
8
17
  bucketName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/s3/types.ts"],"names":[],"mappings":"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"}
@@ -1402,10 +1402,10 @@ __export(s3_exports, {
1402
1402
  create: () => create4,
1403
1403
  createSignedUrl: () => createSignedUrl,
1404
1404
  deleteFile: () => deleteFile,
1405
- getBucketNameOrThrow: () => getBucketNameOrThrow,
1406
1405
  getFile: () => getFile,
1407
1406
  getFileMetadata: () => getFileMetadata,
1408
1407
  migrateBucketContents: () => migrateBucketContents,
1408
+ recordsFromSqs: () => recordsFromSqs,
1409
1409
  uploadFile: () => uploadFile
1410
1410
  });
1411
1411
 
@@ -1551,6 +1551,22 @@ var migrateBucketContents = async (s3, buckets) => {
1551
1551
  });
1552
1552
  return Promise.all(s3Promises);
1553
1553
  };
1554
+ var recordsFromSqs = (body) => {
1555
+ try {
1556
+ const event = JSON.parse(body);
1557
+ if (!event?.Records?.length) return null;
1558
+ return event.Records.map((r) => ({
1559
+ bucket: r.s3.bucket.name,
1560
+ // S3 URL-encodes keys and replaces spaces with '+'
1561
+ key: decodeURIComponent(r.s3.object.key.replace(/\+/g, " ")),
1562
+ size: r.s3.object.size,
1563
+ eventName: r.eventName,
1564
+ eventTime: r.eventTime
1565
+ }));
1566
+ } catch {
1567
+ return null;
1568
+ }
1569
+ };
1554
1570
 
1555
1571
  exports.DDB = ddb_exports;
1556
1572
  exports.Dict = dict_exports;
@@ -1400,10 +1400,10 @@ __export(s3_exports, {
1400
1400
  create: () => create4,
1401
1401
  createSignedUrl: () => createSignedUrl,
1402
1402
  deleteFile: () => deleteFile,
1403
- getBucketNameOrThrow: () => getBucketNameOrThrow,
1404
1403
  getFile: () => getFile,
1405
1404
  getFileMetadata: () => getFileMetadata,
1406
1405
  migrateBucketContents: () => migrateBucketContents,
1406
+ recordsFromSqs: () => recordsFromSqs,
1407
1407
  uploadFile: () => uploadFile
1408
1408
  });
1409
1409
 
@@ -1549,5 +1549,21 @@ var migrateBucketContents = async (s3, buckets) => {
1549
1549
  });
1550
1550
  return Promise.all(s3Promises);
1551
1551
  };
1552
+ var recordsFromSqs = (body) => {
1553
+ try {
1554
+ const event = JSON.parse(body);
1555
+ if (!event?.Records?.length) return null;
1556
+ return event.Records.map((r) => ({
1557
+ bucket: r.s3.bucket.name,
1558
+ // S3 URL-encodes keys and replaces spaces with '+'
1559
+ key: decodeURIComponent(r.s3.object.key.replace(/\+/g, " ")),
1560
+ size: r.s3.object.size,
1561
+ eventName: r.eventName,
1562
+ eventTime: r.eventTime
1563
+ }));
1564
+ } catch {
1565
+ return null;
1566
+ }
1567
+ };
1552
1568
 
1553
1569
  export { ddb_exports as DDB, dict_exports as Dict, file_exports as File, flow_exports as Flow, int_exports as Int, lambda_exports as Lambda, list_exports as List, log_exports as Log, money_exports as Money, random_exports as Random, s3_exports as S3, sns_exports as SNS, str_exports as Str, time_exports as Time };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qstd",
3
- "version": "0.3.19",
3
+ "version": "0.3.20",
4
4
  "description": "Standard Block component and utilities library with Panda CSS",
5
5
  "author": "malin1",
6
6
  "license": "MIT",