@pikku/lambda 0.9.2 → 0.9.4-next.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  ## 0.8.0
2
2
 
3
+ ## 0.9.4-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @pikku/core@0.9.12-next.0
9
+
10
+ ## 0.9.3
11
+
12
+ ### Patch Changes
13
+
14
+ - c18800d: feat: adding queue and scheduledTask to interactions
15
+ - Updated dependencies [c18800d]
16
+ - @pikku/core@0.9.4
17
+
3
18
  ## 0.9.2
4
19
 
5
20
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import { runQueueJob } from '@pikku/core/queue';
1
+ import { runQueueJob, QueueJobFailedError, QueueJobDiscardedError, } from '@pikku/core/queue';
2
2
  export function mapSQSRecordToQueueJob(record, maxAttempts) {
3
3
  let data;
4
4
  try {
@@ -36,11 +36,25 @@ export function mapSQSRecordToQueueJob(record, maxAttempts) {
36
36
  export const runSQSQueueWorker = async (singletonServices, createSessionServices, event) => {
37
37
  console.log(JSON.stringify(event, null, 2));
38
38
  const jobs = event.Records.map(mapSQSRecordToQueueJob);
39
- const results = await Promise.allSettled(jobs.map((job) => runQueueJob({
40
- singletonServices,
41
- createSessionServices,
42
- job,
43
- })));
39
+ const results = await Promise.allSettled(jobs.map(async (job) => {
40
+ try {
41
+ return await runQueueJob({
42
+ singletonServices,
43
+ createSessionServices,
44
+ job,
45
+ });
46
+ }
47
+ catch (error) {
48
+ if (error instanceof QueueJobFailedError) {
49
+ throw error;
50
+ }
51
+ else if (error instanceof QueueJobDiscardedError) {
52
+ singletonServices.logger.info(`SQS job ${job.id} discarded: ${error.message}`);
53
+ return;
54
+ }
55
+ throw error;
56
+ }
57
+ }));
44
58
  results.forEach((result, index) => {
45
59
  if (result.status === 'rejected') {
46
60
  singletonServices.logger.error(`Failed to process SQS message ${jobs[index].id}:`, result.reason);
@@ -1 +1 @@
1
- {"version":3,"file":"sqs-worker.js","sourceRoot":"","sources":["../../src/queue/sqs-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqs-worker.js","sourceRoot":"","sources":["../../src/queue/sqs-worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pikku/lambda",
3
- "version": "0.9.2",
3
+ "version": "0.9.4-next.0",
4
4
  "license": "MIT",
5
5
  "author": "yasser.fadl@gmail.com",
6
6
  "module": "dist/index.js",
@@ -9,8 +9,7 @@
9
9
  "scripts": {
10
10
  "tsc": "tsc",
11
11
  "ncu": "npx npm-check-updates",
12
- "build:esm": "tsc -b",
13
- "build": "yarn build:esm",
12
+ "build": "tsc -b",
14
13
  "release": "npm run build && npm test",
15
14
  "test": "bash run-tests.sh",
16
15
  "test:watch": "bash run-tests.sh --watch",
@@ -24,7 +23,7 @@
24
23
  },
25
24
  "peerDependencies": {
26
25
  "@aws-sdk/client-apigatewaymanagementapi": "^3.713.0",
27
- "@pikku/core": "^0.9.2",
26
+ "@pikku/core": "^0.9.12-next.0",
28
27
  "@types/aws-lambda": "^8.10.146"
29
28
  },
30
29
  "devDependencies": {
package/run-tests.sh CHANGED
@@ -46,7 +46,7 @@ if [ "$watch_mode" = true ]; then
46
46
  fi
47
47
 
48
48
  if [ "$coverage_mode" = true ]; then
49
- node_cmd="$node_cmd --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info"
49
+ node_cmd="$node_cmd --test-coverage-include=\"src/**/*.{ts,js}\" --test-coverage-exclude=\"**/dist/**\" --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info"
50
50
  fi
51
51
 
52
52
  # Execute the node command with the expanded list of files
@@ -1,5 +1,9 @@
1
1
  import { SQSBatchResponse, SQSEvent, SQSRecord } from 'aws-lambda'
2
- import { runQueueJob } from '@pikku/core/queue'
2
+ import {
3
+ runQueueJob,
4
+ QueueJobFailedError,
5
+ QueueJobDiscardedError,
6
+ } from '@pikku/core/queue'
3
7
  import type {
4
8
  CoreSingletonServices,
5
9
  CreateSessionServices,
@@ -66,13 +70,27 @@ export const runSQSQueueWorker = async (
66
70
 
67
71
  // Process all jobs in parallel
68
72
  const results = await Promise.allSettled(
69
- jobs.map((job) =>
70
- runQueueJob({
71
- singletonServices,
72
- createSessionServices,
73
- job,
74
- })
75
- )
73
+ jobs.map(async (job) => {
74
+ try {
75
+ return await runQueueJob({
76
+ singletonServices,
77
+ createSessionServices,
78
+ job,
79
+ })
80
+ } catch (error: unknown) {
81
+ if (error instanceof QueueJobFailedError) {
82
+ // Let SQS handle this as a failed job (will go to retry or DLQ)
83
+ throw error
84
+ } else if (error instanceof QueueJobDiscardedError) {
85
+ // For SQS, discarding means completing successfully (no retry)
86
+ singletonServices.logger.info(
87
+ `SQS job ${job.id} discarded: ${error.message}`
88
+ )
89
+ return // Successfully "completed" by discarding
90
+ }
91
+ throw error
92
+ }
93
+ })
76
94
  )
77
95
 
78
96
  // Log any failures but don't throw (SQS will handle retries)