@comicrelief/lambda-wrapper 1.10.2 → 2.0.0-beta.10

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.
Files changed (89) hide show
  1. package/README.md +196 -50
  2. package/dist/core/DependencyAwareClass.d.ts +16 -0
  3. package/dist/core/DependencyAwareClass.d.ts.map +1 -0
  4. package/dist/core/DependencyAwareClass.js +20 -0
  5. package/dist/core/DependencyAwareClass.js.map +1 -0
  6. package/dist/core/DependencyInjection.d.ts +62 -0
  7. package/dist/core/DependencyInjection.d.ts.map +1 -0
  8. package/dist/core/DependencyInjection.js +105 -0
  9. package/dist/core/DependencyInjection.js.map +1 -0
  10. package/dist/core/LambdaWrapper.d.ts +73 -0
  11. package/dist/core/LambdaWrapper.d.ts.map +1 -0
  12. package/dist/core/LambdaWrapper.js +170 -0
  13. package/dist/core/LambdaWrapper.js.map +1 -0
  14. package/dist/core/config.d.ts +20 -0
  15. package/dist/core/config.d.ts.map +1 -0
  16. package/dist/core/config.js +21 -0
  17. package/dist/core/config.js.map +1 -0
  18. package/dist/index.d.ts +28 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +57 -143
  21. package/dist/index.js.map +1 -0
  22. package/dist/models/ResponseModel.d.ts +73 -0
  23. package/dist/models/ResponseModel.d.ts.map +1 -0
  24. package/dist/models/ResponseModel.js +100 -0
  25. package/dist/models/ResponseModel.js.map +1 -0
  26. package/dist/models/SQSMessageModel.d.ts +46 -0
  27. package/dist/models/SQSMessageModel.d.ts.map +1 -0
  28. package/dist/models/SQSMessageModel.js +65 -0
  29. package/dist/models/SQSMessageModel.js.map +1 -0
  30. package/dist/services/BaseConfigService.d.ts +101 -0
  31. package/dist/services/BaseConfigService.d.ts.map +1 -0
  32. package/dist/services/BaseConfigService.js +180 -0
  33. package/dist/services/BaseConfigService.js.map +1 -0
  34. package/dist/services/HTTPService.d.ts +29 -0
  35. package/dist/services/HTTPService.d.ts.map +1 -0
  36. package/dist/services/HTTPService.js +55 -0
  37. package/dist/services/HTTPService.js.map +1 -0
  38. package/dist/services/LoggerService.d.ts +102 -0
  39. package/dist/services/LoggerService.d.ts.map +1 -0
  40. package/dist/services/LoggerService.js +249 -0
  41. package/dist/services/LoggerService.js.map +1 -0
  42. package/dist/services/RequestService.d.ts +119 -0
  43. package/dist/services/RequestService.d.ts.map +1 -0
  44. package/dist/services/RequestService.js +293 -0
  45. package/dist/services/RequestService.js.map +1 -0
  46. package/dist/services/SQSService.d.ts +263 -0
  47. package/dist/services/SQSService.d.ts.map +1 -0
  48. package/dist/services/SQSService.js +411 -0
  49. package/dist/services/SQSService.js.map +1 -0
  50. package/dist/services/TimerService.d.ts +22 -0
  51. package/dist/services/TimerService.d.ts.map +1 -0
  52. package/dist/services/TimerService.js +40 -0
  53. package/dist/services/TimerService.js.map +1 -0
  54. package/dist/types/Status.d.ts +6 -0
  55. package/dist/types/Status.d.ts.map +1 -0
  56. package/dist/types/Status.js +3 -0
  57. package/dist/types/Status.js.map +1 -0
  58. package/dist/utils/LambdaTermination.d.ts +14 -0
  59. package/dist/utils/LambdaTermination.d.ts.map +1 -0
  60. package/dist/utils/LambdaTermination.js +23 -0
  61. package/dist/utils/LambdaTermination.js.map +1 -0
  62. package/dist/utils/PromisifiedDelay.d.ts +17 -0
  63. package/dist/utils/PromisifiedDelay.d.ts.map +1 -0
  64. package/dist/utils/PromisifiedDelay.js +48 -0
  65. package/dist/utils/PromisifiedDelay.js.map +1 -0
  66. package/package.json +36 -26
  67. package/.eslintrc.yml +0 -16
  68. package/.github/dependabot.yml +0 -11
  69. package/.github/workflows/main.yml +0 -74
  70. package/babel.config.js +0 -13
  71. package/dist/Config/Dependencies.js +0 -33
  72. package/dist/DependencyInjection/DependencyAware.class.js +0 -40
  73. package/dist/DependencyInjection/DependencyInjection.class.js +0 -115
  74. package/dist/Model/CloudEvent.model.js +0 -138
  75. package/dist/Model/Model.model.js +0 -39
  76. package/dist/Model/Response.model.js +0 -135
  77. package/dist/Model/SQS/MarketingPreference.constraints.json +0 -28
  78. package/dist/Model/SQS/MarketingPreference.model.js +0 -583
  79. package/dist/Model/SQS/Message.model.js +0 -92
  80. package/dist/Model/Status.model.js +0 -71
  81. package/dist/Service/BaseConfig.service.js +0 -204
  82. package/dist/Service/HTTP.service.js +0 -57
  83. package/dist/Service/Logger.service.js +0 -256
  84. package/dist/Service/Request.service.js +0 -294
  85. package/dist/Service/SQS.service.js +0 -367
  86. package/dist/Service/Timer.service.js +0 -46
  87. package/dist/Wrapper/LambdaTermination.js +0 -34
  88. package/dist/Wrapper/LambdaWrapper.js +0 -143
  89. package/dist/Wrapper/PromisifiedDelay.js +0 -55
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestService.js","sourceRoot":"","sources":["../../src/services/RequestService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,263 @@
1
+ import AWS from 'aws-sdk';
2
+ import DependencyAwareClass from '../core/DependencyAwareClass';
3
+ import DependencyInjection from '../core/DependencyInjection';
4
+ import { LambdaWrapperConfig } from '../core/config';
5
+ import SQSMessageModel from '../models/SQSMessageModel';
6
+ import { ServiceStatus } from '../types/Status';
7
+ export interface SQSServiceConfig {
8
+ /**
9
+ * Maps short friendly queue names to the full SQS queue name.
10
+ *
11
+ * Usually we define queue names in our `serverless.yml` and provide them to
12
+ * the application via environment variables. If you haven't defined types
13
+ * for your env vars, you'll need to coerce them to `string`.
14
+ *
15
+ * Example:
16
+ *
17
+ * ```ts
18
+ * {
19
+ * queues: {
20
+ * submissions: process.env.SQS_QUEUE_SUBMISSIONS as string,
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ queues?: object;
26
+ /**
27
+ * Maps short friendly queue names to the queue consumer function name, for
28
+ * use with offline SQS emulation. Example:
29
+ *
30
+ * ```ts
31
+ * {
32
+ * queueConsumers: {
33
+ * submissions: 'SubmissionConsumer',
34
+ * }
35
+ * }
36
+ * ```
37
+ *
38
+ * See the [SQSService docs](../../docs/services/SQSService.md) for details
39
+ * about how this works.
40
+ */
41
+ queueConsumers?: Record<string, string>;
42
+ }
43
+ export interface WithSQSServiceConfig {
44
+ sqs?: SQSServiceConfig;
45
+ }
46
+ /**
47
+ * Type of a queue name taken from the Lambda Wrapper config type.
48
+ *
49
+ * If the `sqs` config key is absent, the resulting type is `never` (since no
50
+ * queues are defined).
51
+ */
52
+ export declare type QueueName<TConfig extends WithSQSServiceConfig> = TConfig extends {
53
+ sqs: {
54
+ queues: Record<infer Key, string>;
55
+ };
56
+ } ? string & Key : never;
57
+ /**
58
+ * Allowed values for `process.env.LAMBDA_WRAPPER_OFFLINE_SQS_MODE`.
59
+ */
60
+ export declare const SQS_OFFLINE_MODES: {
61
+ /**
62
+ * When running offline, messages will trigger the consumer function directly
63
+ * via a Lambda endpoint, set using `process.env.SERVICE_LAMBDA_URL`. This is
64
+ * the default.
65
+ */
66
+ DIRECT: string;
67
+ /**
68
+ * When running offline, send messages to an offline SQS service defined by
69
+ * `process.env.LAMBDA_WRAPPER_OFFLINE_SQS_HOST`.
70
+ */
71
+ LOCAL: string;
72
+ /**
73
+ * When running offline, send messages to AWS as normal.
74
+ */
75
+ AWS: string;
76
+ };
77
+ /**
78
+ * Defines the preferred behaviour for `SQSService.prototype.send` in case the
79
+ * AWS SQS call fails.
80
+ */
81
+ export declare const SQS_PUBLISH_FAILURE_MODES: {
82
+ /**
83
+ * Catch the exception and logs it.
84
+ *
85
+ * This is the default behaviour for Lambda Wrapper v1.8.0 and below and for
86
+ * Lambda Wrapper v1.8.2 and above.
87
+ */
88
+ readonly CATCH: "catch";
89
+ /**
90
+ * Throw the exception so that the caller can handle it directly.
91
+ */
92
+ readonly THROW: "throw";
93
+ };
94
+ /**
95
+ * Helper service for working with SQS.
96
+ *
97
+ * Config for this service goes in the `sqs` key of your Lambda Wrapper config.
98
+ * The `queues` key maps short friendly names to the full SQS queue name.
99
+ * Usually we define queue names in our `serverless.yml` and provide them to
100
+ * the application via environment variables.
101
+ *
102
+ * ```ts
103
+ * const lambdaWrapper = lw.configure({
104
+ * sqs: {
105
+ * queues: {
106
+ * // add an entry for each queue mapping to its AWS name
107
+ * submissions: process.env.SQS_QUEUE_SUBMISSIONS as string,
108
+ * },
109
+ * },
110
+ * });
111
+ * ```
112
+ *
113
+ * You can then send messages to a queue within your Lambda handler using the
114
+ * `publish` method.
115
+ *
116
+ * ```ts
117
+ * export default lambdaWrapper.wrap(async (di) => {
118
+ * const sqs = di.get(SQSService);
119
+ * const message = { data: 'Hello SQS!' };
120
+ * await sqs.publish('submissions', message);
121
+ * });
122
+ * ```
123
+ *
124
+ * When using TypeScript, queue names are inferred from your Lambda Wrapper
125
+ * config so that IntelliSense can provide hints and TypeScript will tell you
126
+ * at compile-time if you try to publish to an undefined queue.
127
+ *
128
+ * ```ts
129
+ * // ok
130
+ * await sqs.publish('submissions', message);
131
+ *
132
+ * // error: Argument of type '"submission"' is not assignable to parameter of
133
+ * // type '"submissions"'.
134
+ * await sqs.publish('submission', message);
135
+ * ```
136
+ *
137
+ * Note that if you're passing the queue name in as a variable, you'll need to
138
+ * ensure the variable type is specific enough and not simply `string`. If you
139
+ * have a list of queue names you will need to declare it `as const`. Otherwise,
140
+ * use string literal types, or the `QueueName` generic type which extracts the
141
+ * type of all queue names from your Lambda Wrapper config.
142
+ *
143
+ * ```ts
144
+ * const myQueues = ['queue1', 'queue2'];
145
+ * for (const queue of myQueues) {
146
+ * // won't compile because `queue` is of type `string`
147
+ * await sqs.publish(queue, message);
148
+ * }
149
+ *
150
+ * const myQueues = ['queue1', 'queue2'] as const;
151
+ * for (const queue of myQueues) {
152
+ * // ok now because `queue` is of type `"queue1" | "queue2"`
153
+ * await sqs.publish(queue, message);
154
+ * }
155
+ *
156
+ * // you can also simply use string literal types
157
+ * let queue: "queue1" | "queue2";
158
+ *
159
+ * // or accept any queue defined in the config using `QueueName`
160
+ * let queue: QueueName<typeof lambdaWrapper.config>;
161
+ * ```
162
+ *
163
+ * This is all pretty cool, but the current implementation has a caveat: the
164
+ * `WithSQSServiceConfig` type has to be a little vague about `sqs.queues` in
165
+ * order to get TypeScript to infer its keys. The following config will not
166
+ * raise any errors itself, but is invalid and will make the `QueueName` type
167
+ * `never`.
168
+ *
169
+ * ```ts
170
+ * lambdaWrapper.configure<WithSQSServiceConfig>({
171
+ * sqs: {
172
+ * queues: {
173
+ * good: 'good-queue',
174
+ * bad: 0, // oops, not a string, but no errors here!
175
+ * },
176
+ * },
177
+ * });
178
+ *
179
+ * // even though this is queue has valid config, the invalid one breaks it:
180
+ * // Argument of type 'string' is not assignable to parameter of type 'never'.
181
+ * await sqs.publish('good', message);
182
+ * ```
183
+ *
184
+ * If you start getting _not assignable to parameter of type 'never'_ errors on
185
+ * all your `SQSService` method calls, double-check that your config is correct.
186
+ * Be particularly careful with environment variables – by default they have
187
+ * type `string | undefined`. In the first example at the top of this page, a
188
+ * type assertion was used to coerce this to `string`.
189
+ */
190
+ export default class SQSService<TConfig extends LambdaWrapperConfig & WithSQSServiceConfig = any> extends DependencyAwareClass {
191
+ readonly queues: Record<QueueName<TConfig>, string>;
192
+ readonly queueConsumers: Record<QueueName<TConfig>, string>;
193
+ readonly queueUrls: Record<QueueName<TConfig>, string>;
194
+ private $sqs?;
195
+ private $lambda?;
196
+ constructor(di: DependencyInjection<TConfig>);
197
+ /**
198
+ * Returns an SQS client instance
199
+ */
200
+ get sqs(): AWS.SQS;
201
+ /**
202
+ * Returns a Lambda client instance
203
+ */
204
+ get lambda(): AWS.Lambda;
205
+ /**
206
+ * Returns the mode to use for offline SQS.
207
+ *
208
+ * This is configured by `process.env.LAMBDA_WRAPPER_OFFLINE_SQS_MODE`. The
209
+ * default is `SQS_OFFLINE_MODES.LAMBDA`.
210
+ */
211
+ static get offlineMode(): string;
212
+ /**
213
+ * Batch delete messages.
214
+ *
215
+ * @param queue
216
+ * @param messageModels
217
+ */
218
+ batchDelete(queue: QueueName<TConfig>, messageModels: SQSMessageModel[]): Promise<void>;
219
+ /**
220
+ * Check SQS status.
221
+ */
222
+ checkStatus(): Promise<ServiceStatus>;
223
+ /**
224
+ * Get the approximate number of messages in a queue.
225
+ *
226
+ * @param queue
227
+ */
228
+ getMessageCount(queue: QueueName<TConfig>): Promise<number>;
229
+ /**
230
+ * Publish to message queue.
231
+ *
232
+ * When running within serverless-offline, messages can be published to a
233
+ * local Lambda or SQS service instead of to AWS, depending on the offline
234
+ * mode specified by `process.env.LAMBDA_WRAPPER_OFFLINE_SQS_MODE`.
235
+ *
236
+ * @param queue string
237
+ * @param messageObject object
238
+ * @param messageGroupId string
239
+ * @param failureMode Choose how failures are handled:
240
+ * - `catch`: errors will be caught and logged. This is the default.
241
+ * - `throw`: errors will be thrown, causing promise to reject.
242
+ */
243
+ publish(queue: QueueName<TConfig>, messageObject: object, messageGroupId?: null, failureMode?: 'catch' | 'throw'): Promise<QueueName<TConfig> | null>;
244
+ /**
245
+ * Sends a message to a queue consumer running in serverless-offline.
246
+ *
247
+ * This method invokes the consumer function directly instead of sending the
248
+ * message to SQS, which requires a real or emulated SQS service not provided
249
+ * by serverless-offline. This works very well for local testing.
250
+ *
251
+ * @param queue
252
+ * @param messageParameters
253
+ */
254
+ publishOffline(queue: QueueName<TConfig>, messageParameters: AWS.SQS.SendMessageRequest): Promise<void>;
255
+ /**
256
+ * Receive from message queue
257
+ *
258
+ * @param queue string
259
+ * @param timeout number
260
+ */
261
+ receive(queue: QueueName<TConfig>, timeout?: number): Promise<SQSMessageModel[]>;
262
+ }
263
+ //# sourceMappingURL=SQSService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQSService.d.ts","sourceRoot":"","sources":["../../src/services/SQSService.ts"],"names":[],"mappings":"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"}