qstd 0.3.18 → 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.
@@ -13,5 +13,54 @@ export declare const createRestHandler: (fn: (event: import("aws-lambda").APIGat
13
13
  * @returns
14
14
  */
15
15
  export declare const createWebsocketHandler: (fn: (event: import("aws-lambda").APIGatewayProxyEvent) => Promise<_t.ApigwResult> | _t.ApigwResult) => (event: import("aws-lambda").APIGatewayProxyEvent) => Promise<_t.Response | _t.ApigwResult>;
16
- export declare const createSqsHandler: (fn: _t.SQSHandler) => (event: _t.SqsEvent, context: _t.SqsContext, callback: _t.SqsCallback) => void | Promise<void | import("aws-lambda").SQSBatchResponse>;
16
+ /**
17
+ * Creates a batch failures tracker for SQS handlers.
18
+ * Provides a simple `add(id)` method instead of pushing objects.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const failures = Lambda.withBatchFailures();
23
+ *
24
+ * for (const record of event.Records) {
25
+ * try {
26
+ * // process record
27
+ * } catch (err) {
28
+ * failures.add(record.messageId);
29
+ * }
30
+ * }
31
+ *
32
+ * return { batchItemFailures: failures.items };
33
+ * ```
34
+ */
35
+ export declare const withBatchFailures: () => {
36
+ /** Add a failed message by its ID */
37
+ add: (itemIdentifier: string) => void;
38
+ /** The failures array for the response */
39
+ items: import("aws-lambda").SQSBatchItemFailure[];
40
+ };
41
+ /**
42
+ * Creates a type-safe SQS handler that enforces returning `{ batchItemFailures }`.
43
+ *
44
+ * Provides:
45
+ * - **Compile-time safety**: TypeScript enforces the return type
46
+ * - **Runtime safety**: Validates response shape before returning
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * export const handler = Lambda.createSqsHandler(async (event) => {
51
+ * const failures = Lambda.withBatchFailures();
52
+ *
53
+ * for (const record of event.Records) {
54
+ * try {
55
+ * // process record
56
+ * } catch (err) {
57
+ * failures.add(record.messageId);
58
+ * }
59
+ * }
60
+ *
61
+ * return { batchItemFailures: failures.items };
62
+ * });
63
+ * ```
64
+ */
65
+ export declare const createSqsHandler: (fn: _t.SqsHandlerFn) => _t.SqsHandlerFn;
17
66
  //# sourceMappingURL=domain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,6GAeujD,kDAAQ,0CAfphD,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2GAQkjD,gDAAQ,0CAP/iD,CAAC;AAE/C,eAAO,MAAM,gBAAgB,GAC1B,IAAI,EAAE,CAAC,UAAU,MACjB,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,WAAW,iEAEpE,CAAC"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,6GA+E5B,kDACA,0CAhFuE,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2GAwEjC,gDACA,0CAxE4C,CAAC;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB;IAG1B,qCAAqC;0BACf,MAAM;IAG5B,0CAA0C;;CAG7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,gBAAgB,GAC1B,IAAI,EAAE,CAAC,YAAY,KAAG,EAAE,CAAC,YAazB,CAAC"}
@@ -1,4 +1,13 @@
1
- import type { APIGatewayProxyEvent, APIGatewayProxyEventV2, APIGatewayProxyResultV2, SQSHandler as AwsSqsHandler, SQSBatchResponse, Callback, Context, SQSEvent } from "aws-lambda";
1
+ import type { APIGatewayProxyEvent, APIGatewayProxyEventV2, APIGatewayProxyResultV2, SQSHandler as AwsSqsHandler, SQSBatchItemFailure, SQSBatchResponse, Callback, Context, SQSEvent } from "aws-lambda";
2
+ /** SQS batch response - return this from SQS handlers */
3
+ export type SqsBatchResponse = SQSBatchResponse;
4
+ /** Individual failure item - add to batchItemFailures array */
5
+ export type SqsBatchItemFailure = SQSBatchItemFailure;
6
+ /**
7
+ * Type-safe SQS handler that enforces returning { batchItemFailures }.
8
+ * Use with Lambda.createSqsHandler for compile + runtime safety.
9
+ */
10
+ export type SqsHandlerFn = (event: SQSEvent) => Promise<SQSBatchResponse>;
2
11
  export type Response = {
3
12
  statusCode: number;
4
13
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,IAAI,aAAa,EAC3B,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,6BAA6B,EAAE,MAAM,CAAC;QACtC,8BAA8B,EAAE,MAAM,CAAC;QACvC,8BAA8B,EAAE,MAAM,CAAC;QACvC,kCAAkC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtD,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAChC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzE,iBAAiB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAE9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAE/B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;SAGK;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,IAAI,aAAa,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE1E,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,6BAA6B,EAAE,MAAM,CAAC;QACtC,8BAA8B,EAAE,MAAM,CAAC;QACvC,8BAA8B,EAAE,MAAM,CAAC;QACvC,kCAAkC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtD,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAChC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzE,iBAAiB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAE9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAE/B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;SAGK;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC"}
@@ -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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"}
@@ -659,7 +659,8 @@ __export(lambda_exports, {
659
659
  createRestHandler: () => createRestHandler,
660
660
  createSqsHandler: () => createSqsHandler,
661
661
  createWebsocketHandler: () => createWebsocketHandler,
662
- response: () => response
662
+ response: () => response,
663
+ withBatchFailures: () => withBatchFailures
663
664
  });
664
665
 
665
666
  // src/server/aws/lambda/literals.ts
@@ -728,8 +729,25 @@ var createHandlerFactory = () => (fn) => async (event) => {
728
729
  // src/server/aws/lambda/domain.ts
729
730
  var createRestHandler = createHandlerFactory();
730
731
  var createWebsocketHandler = createHandlerFactory();
731
- var createSqsHandler = (fn) => (event, context, callback) => {
732
- return fn(event, context, callback);
732
+ var withBatchFailures = () => {
733
+ const items = [];
734
+ return {
735
+ /** Add a failed message by its ID */
736
+ add: (itemIdentifier) => {
737
+ items.push({ itemIdentifier });
738
+ },
739
+ /** The failures array for the response */
740
+ items
741
+ };
742
+ };
743
+ var createSqsHandler = (fn) => async (event) => {
744
+ const result = await fn(event);
745
+ if (!result || !Array.isArray(result.batchItemFailures)) {
746
+ throw new Error(
747
+ "SQS handler must return { batchItemFailures: [] }. Return an empty array for success, or include failed messageIds for partial failures."
748
+ );
749
+ }
750
+ return result;
733
751
  };
734
752
 
735
753
  // src/server/aws/ddb/index.ts
@@ -1384,10 +1402,10 @@ __export(s3_exports, {
1384
1402
  create: () => create4,
1385
1403
  createSignedUrl: () => createSignedUrl,
1386
1404
  deleteFile: () => deleteFile,
1387
- getBucketNameOrThrow: () => getBucketNameOrThrow,
1388
1405
  getFile: () => getFile,
1389
1406
  getFileMetadata: () => getFileMetadata,
1390
1407
  migrateBucketContents: () => migrateBucketContents,
1408
+ recordsFromSqs: () => recordsFromSqs,
1391
1409
  uploadFile: () => uploadFile
1392
1410
  });
1393
1411
 
@@ -1533,6 +1551,22 @@ var migrateBucketContents = async (s3, buckets) => {
1533
1551
  });
1534
1552
  return Promise.all(s3Promises);
1535
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
+ };
1536
1570
 
1537
1571
  exports.DDB = ddb_exports;
1538
1572
  exports.Dict = dict_exports;
@@ -657,7 +657,8 @@ __export(lambda_exports, {
657
657
  createRestHandler: () => createRestHandler,
658
658
  createSqsHandler: () => createSqsHandler,
659
659
  createWebsocketHandler: () => createWebsocketHandler,
660
- response: () => response
660
+ response: () => response,
661
+ withBatchFailures: () => withBatchFailures
661
662
  });
662
663
 
663
664
  // src/server/aws/lambda/literals.ts
@@ -726,8 +727,25 @@ var createHandlerFactory = () => (fn) => async (event) => {
726
727
  // src/server/aws/lambda/domain.ts
727
728
  var createRestHandler = createHandlerFactory();
728
729
  var createWebsocketHandler = createHandlerFactory();
729
- var createSqsHandler = (fn) => (event, context, callback) => {
730
- return fn(event, context, callback);
730
+ var withBatchFailures = () => {
731
+ const items = [];
732
+ return {
733
+ /** Add a failed message by its ID */
734
+ add: (itemIdentifier) => {
735
+ items.push({ itemIdentifier });
736
+ },
737
+ /** The failures array for the response */
738
+ items
739
+ };
740
+ };
741
+ var createSqsHandler = (fn) => async (event) => {
742
+ const result = await fn(event);
743
+ if (!result || !Array.isArray(result.batchItemFailures)) {
744
+ throw new Error(
745
+ "SQS handler must return { batchItemFailures: [] }. Return an empty array for success, or include failed messageIds for partial failures."
746
+ );
747
+ }
748
+ return result;
731
749
  };
732
750
 
733
751
  // src/server/aws/ddb/index.ts
@@ -1382,10 +1400,10 @@ __export(s3_exports, {
1382
1400
  create: () => create4,
1383
1401
  createSignedUrl: () => createSignedUrl,
1384
1402
  deleteFile: () => deleteFile,
1385
- getBucketNameOrThrow: () => getBucketNameOrThrow,
1386
1403
  getFile: () => getFile,
1387
1404
  getFileMetadata: () => getFileMetadata,
1388
1405
  migrateBucketContents: () => migrateBucketContents,
1406
+ recordsFromSqs: () => recordsFromSqs,
1389
1407
  uploadFile: () => uploadFile
1390
1408
  });
1391
1409
 
@@ -1531,5 +1549,21 @@ var migrateBucketContents = async (s3, buckets) => {
1531
1549
  });
1532
1550
  return Promise.all(s3Promises);
1533
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
+ };
1534
1568
 
1535
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.18",
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",