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.
- package/dist/server/aws/lambda/domain.d.ts +50 -1
- package/dist/server/aws/lambda/domain.d.ts.map +1 -1
- package/dist/server/aws/lambda/types.d.ts +10 -1
- package/dist/server/aws/lambda/types.d.ts.map +1 -1
- package/dist/server/aws/s3/domain.d.ts +24 -0
- package/dist/server/aws/s3/domain.d.ts.map +1 -1
- package/dist/server/aws/s3/fns.d.ts.map +1 -1
- package/dist/server/aws/s3/index.d.ts +0 -1
- package/dist/server/aws/s3/index.d.ts.map +1 -1
- package/dist/server/aws/s3/types.d.ts +9 -0
- package/dist/server/aws/s3/types.d.ts.map +1 -1
- package/dist/server/index.cjs +38 -4
- package/dist/server/index.js +38 -4
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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,
|
|
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":"
|
|
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 +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
|
|
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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"}
|
package/dist/server/index.cjs
CHANGED
|
@@ -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
|
|
732
|
-
|
|
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;
|
package/dist/server/index.js
CHANGED
|
@@ -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
|
|
730
|
-
|
|
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 };
|