aws-lambda-secret-fetcher 0.3.7 → 0.4.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/README.md CHANGED
@@ -3,14 +3,15 @@
3
3
  [![npm version](https://img.shields.io/npm/v/aws-lambda-secret-fetcher.svg)](https://www.npmjs.com/package/aws-lambda-secret-fetcher)
4
4
  [![License](https://img.shields.io/npm/l/aws-lambda-secret-fetcher.svg)](https://www.npmjs.com/package/aws-lambda-secret-fetcher)
5
5
 
6
- A lightweight TypeScript library for fetching secrets from AWS Secrets Manager using the [AWS Parameters and Secrets Lambda Extension](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_lambda.html).
6
+ A lightweight TypeScript library for fetching secrets from AWS Secrets Manager using the [AWS Parameters and Secrets Lambda Extension](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_lambda.html). It calls the extension over `http://localhost` (default port **2773**) with retries and timeouts via [fetch-retrier](https://www.npmjs.com/package/fetch-retrier).
7
7
 
8
8
  ## Features
9
9
 
10
- - Uses the local Lambda Extension API (no AWS SDK required)
10
+ - Uses the local Lambda Extension HTTP API (no AWS SDK required)
11
+ - Configurable extension HTTP port via `extensionHttpPort` (default `2773`; pass through from your environment when using a custom extension port)
11
12
  - Retry with timeout and full jitter backoff via [fetch-retrier](https://www.npmjs.com/package/fetch-retrier)
12
13
  - Configurable timeout, retries, and base backoff
13
- - Automatic JSON parsing for secret values
14
+ - Automatic JSON parsing for secret values stored as JSON strings
14
15
  - TypeScript support with generics
15
16
 
16
17
  ## Installation
@@ -27,13 +28,9 @@ npm install aws-lambda-secret-fetcher
27
28
  yarn add aws-lambda-secret-fetcher
28
29
  ```
29
30
 
30
- ## Prerequisites
31
-
32
- Your Lambda function must have the [AWS Parameters and Secrets Lambda Extension](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_lambda.html) layer attached.
33
-
34
31
  ## Usage
35
32
 
36
- ### Basic Usage
33
+ ### Basic usage
37
34
 
38
35
  ```typescript
39
36
  import { secretFetcher } from 'aws-lambda-secret-fetcher';
@@ -52,7 +49,7 @@ const credentials = await secretFetcher.getSecretValue<DbCredentials>('my-db-cre
52
49
  console.log(credentials.username); // Type-safe access
53
50
  ```
54
51
 
55
- ### With Options
52
+ ### With options
56
53
 
57
54
  ```typescript
58
55
  import { secretFetcher, type GetSecretValueOptions } from 'aws-lambda-secret-fetcher';
@@ -66,10 +63,23 @@ const options: GetSecretValueOptions = {
66
63
  const secret = await secretFetcher.getSecretValue('my-secret', options);
67
64
  ```
68
65
 
66
+ ### Custom extension HTTP port
67
+
68
+ If you configure a non-default extension port (for example via the Lambda environment variable `PARAMETERS_SECRETS_EXTENSION_HTTP_PORT`), pass that value in from your function code:
69
+
70
+ ```typescript
71
+ import { secretFetcher } from 'aws-lambda-secret-fetcher';
72
+
73
+ const extensionHttpPort = process.env.PARAMETERS_SECRETS_EXTENSION_HTTP_PORT ?? '2773';
74
+
75
+ const secret = await secretFetcher.getSecretValue('my-secret', { extensionHttpPort });
76
+ ```
77
+
69
78
  ## Options
70
79
 
71
80
  | Option | Type | Default | Description |
72
81
  |--------|------|---------|-------------|
82
+ | `extensionHttpPort` | `string \| number` | `'2773'` | TCP port the extension listens on at `localhost` |
73
83
  | `timeoutMs` | `number` | `2000` | Request timeout in milliseconds per attempt |
74
84
  | `retries` | `number` | `3` | Maximum number of attempts (including the first request) |
75
85
  | `baseBackoffMs` | `number` | `300` | Base delay in milliseconds for backoff between retries |
@@ -87,7 +97,7 @@ Fetches a secret value from AWS Secrets Manager via the Lambda Extension.
87
97
  | Parameter | Type | Description |
88
98
  |-----------|------|-------------|
89
99
  | `name` | `string` | The name or ARN of the secret |
90
- | `options` | `GetSecretValueOptions` | Optional timeout, retries, and backoff settings |
100
+ | `options` | `GetSecretValueOptions` | Optional extension port, timeout, retries, and backoff |
91
101
 
92
102
  #### Returns
93
103
 
@@ -95,21 +105,23 @@ Fetches a secret value from AWS Secrets Manager via the Lambda Extension.
95
105
 
96
106
  #### Throws
97
107
 
98
- - `Error` — If the secret cannot be retrieved after all retries, or if the response format is invalid.
108
+ - `Error` — If the response body is not a valid extension payload, or if the request fails after all retries.
109
+ - `FetchRetrierHttpError` (from `fetch-retrier`) — On non-success HTTP responses that are not retried, or after the last failed attempt on retriable statuses.
99
110
 
100
- ## Retry Behavior
111
+ ## Retry behavior
101
112
 
102
113
  Retries use full jitter exponential backoff. The library retries on:
103
114
 
104
115
  - HTTP status codes: 429, 500, 502, 503, 504
105
- - Lambda Extension not ready (400 with "not ready to serve traffic")
116
+ - Lambda Extension not ready (400 with a body matching “not ready and traffic)
106
117
  - Request timeouts
107
118
  - Network errors
108
119
 
109
120
  ## Requirements
110
121
 
111
122
  - Node.js >= 20.0.0
112
- - AWS Lambda environment with the Parameters and Secrets Extension
123
+ - AWS Lambda with the [AWS Parameters and Secrets Lambda Extension](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_lambda.html) layer attached
124
+ - Runtime provides `AWS_SESSION_TOKEN` (used in the `X-Aws-Parameters-Secrets-Token` header expected by the extension)
113
125
 
114
126
  ## License
115
127
 
package/lib/index.d.ts CHANGED
@@ -2,6 +2,8 @@
2
2
  * Options for fetching a secret from the Secrets Manager Extension.
3
3
  */
4
4
  export interface GetSecretValueOptions {
5
+ /** Extension HTTP port (localhost). Default: 2773 (AWS extension default). Set explicitly when using a custom port. */
6
+ extensionHttpPort?: string | number;
5
7
  /** Request timeout in milliseconds. Default: 2000 */
6
8
  timeoutMs?: number;
7
9
  /** Maximum number of attempts (including the first request). Default: 3 */
package/lib/index.js CHANGED
@@ -3,17 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.secretFetcher = void 0;
4
4
  const fetch_retrier_1 = require("fetch-retrier");
5
5
  /**
6
- * Fetches a secret value from the AWS Lambda Secrets Manager Extension (localhost:2773).
6
+ * Fetches a secret value from the AWS Lambda Parameters and Secrets Extension (default localhost:2773).
7
+ * Pass `extensionHttpPort` in options when the extension listens on a non-default port.
7
8
  * Uses retries with full jitter backoff for transient errors (e.g. 5xx, 429, or extension "not ready").
8
9
  *
9
10
  * @param name - Secret name (identifier) to fetch
10
- * @param options - Optional timeout, retry, and backoff settings
11
+ * @param options - Optional port, timeout, retry, and backoff settings
11
12
  * @returns The secret value as string, or parsed as T if the stored value is JSON
12
13
  * @throws Error if the response format is invalid or the request fails after retries
13
14
  */
14
15
  const getSecretValue = async (name, options = {}) => {
15
- const { timeoutMs = 2000, retries = 3, baseBackoffMs = 300 } = options;
16
- const url = `http://localhost:2773/secretsmanager/get?secretId=${encodeURIComponent(name)}`;
16
+ const { extensionHttpPort = '2773', timeoutMs = 2000, retries = 3, baseBackoffMs = 300 } = options;
17
+ const port = String(extensionHttpPort);
18
+ const url = `http://localhost:${port}/secretsmanager/get?secretId=${encodeURIComponent(name)}`;
17
19
  const requestOptions = {
18
20
  headers: {
19
21
  'X-Aws-Parameters-Secrets-Token': process.env.AWS_SESSION_TOKEN ?? '',
@@ -72,4 +74,4 @@ const looksLikeJson = (str) => {
72
74
  exports.secretFetcher = {
73
75
  getSecretValue,
74
76
  };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQWtFO0FBNEJsRTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBYyxJQUFZLEVBQUUsVUFBaUMsRUFBRSxFQUFjLEVBQUU7SUFDekcsTUFBTSxFQUFFLFNBQVMsR0FBRyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxhQUFhLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXZFLE1BQU0sR0FBRyxHQUFHLHFEQUFxRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBRTVGLE1BQU0sY0FBYyxHQUFtQjtRQUNyQyxPQUFPLEVBQUU7WUFDUCxnQ0FBZ0MsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUU7U0FDdEU7UUFDRCxPQUFPO1FBQ1AsU0FBUztRQUNULGFBQWE7UUFDYixXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNoRSxpR0FBaUc7WUFDakcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzFFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztLQUNGLENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsNEJBQVksRUFBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFekQsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLElBQUksR0FBbUIsR0FBRyxDQUFDO0lBRWpDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFFdkMsSUFBSSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFNLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sWUFBaUIsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFjLEVBQTJCLEVBQUU7SUFDbkUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5RCxNQUFNLENBQUMsR0FBRyxLQUFnQyxDQUFDO0lBRTNDLE9BQU8sT0FBTyxDQUFDLENBQUMsWUFBWSxLQUFLLFFBQVE7UUFDbEMsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFDMUIsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLFFBQVE7UUFDekIsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFO0lBQzdDLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBR0Y7O0dBRUc7QUFDVSxRQUFBLGFBQWEsR0FBRztJQUMzQixjQUFjO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoUmV0cmllciwgdHlwZSBSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJ2ZldGNoLXJldHJpZXInO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGZldGNoaW5nIGEgc2VjcmV0IGZyb20gdGhlIFNlY3JldHMgTWFuYWdlciBFeHRlbnNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U2VjcmV0VmFsdWVPcHRpb25zIHtcbiAgLyoqIFJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IDIwMDAgKi9cbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHMgKGluY2x1ZGluZyB0aGUgZmlyc3QgcmVxdWVzdCkuIERlZmF1bHQ6IDMgKi9cbiAgcmV0cmllcz86IG51bWJlcjtcbiAgLyoqIEJhc2UgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIGZvciBiYWNrb2ZmIGJldHdlZW4gcmV0cmllcy4gRGVmYXVsdDogMzAwICovXG4gIGJhc2VCYWNrb2ZmTXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVzcG9uc2Ugc2hhcGUgcmV0dXJuZWQgYnkgdGhlIFNlY3JldHMgTWFuYWdlciBFeHRlbnNpb24gQVBJLlxuICovXG5pbnRlcmZhY2UgU2VjcmV0UmVzcG9uc2Uge1xuICAvKiogQVJOIG9mIHRoZSBzZWNyZXQgKi9cbiAgQVJOOiBzdHJpbmc7XG4gIC8qKiBOYW1lIG9mIHRoZSBzZWNyZXQgKi9cbiAgTmFtZTogc3RyaW5nO1xuICAvKiogU2VjcmV0IHZhbHVlIGFzIHN0cmluZyAobWF5IGJlIEpTT04pICovXG4gIFNlY3JldFN0cmluZzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgdmVyc2lvbiBpZGVudGlmaWVyICovXG4gIFZlcnNpb25JZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGZXRjaGVzIGEgc2VjcmV0IHZhbHVlIGZyb20gdGhlIEFXUyBMYW1iZGEgU2VjcmV0cyBNYW5hZ2VyIEV4dGVuc2lvbiAobG9jYWxob3N0OjI3NzMpLlxuICogVXNlcyByZXRyaWVzIHdpdGggZnVsbCBqaXR0ZXIgYmFja29mZiBmb3IgdHJhbnNpZW50IGVycm9ycyAoZS5nLiA1eHgsIDQyOSwgb3IgZXh0ZW5zaW9uIFwibm90IHJlYWR5XCIpLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gU2VjcmV0IG5hbWUgKGlkZW50aWZpZXIpIHRvIGZldGNoXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIHRpbWVvdXQsIHJldHJ5LCBhbmQgYmFja29mZiBzZXR0aW5nc1xuICogQHJldHVybnMgVGhlIHNlY3JldCB2YWx1ZSBhcyBzdHJpbmcsIG9yIHBhcnNlZCBhcyBUIGlmIHRoZSBzdG9yZWQgdmFsdWUgaXMgSlNPTlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgcmVzcG9uc2UgZm9ybWF0IGlzIGludmFsaWQgb3IgdGhlIHJlcXVlc3QgZmFpbHMgYWZ0ZXIgcmV0cmllc1xuICovXG5jb25zdCBnZXRTZWNyZXRWYWx1ZSA9IGFzeW5jIDxUID0gc3RyaW5nPihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEdldFNlY3JldFZhbHVlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHsgdGltZW91dE1zID0gMjAwMCwgcmV0cmllcyA9IDMsIGJhc2VCYWNrb2ZmTXMgPSAzMDAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgdXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6Mjc3My9zZWNyZXRzbWFuYWdlci9nZXQ/c2VjcmV0SWQ9JHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YDtcblxuICBjb25zdCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaGVhZGVyczoge1xuICAgICAgJ1gtQXdzLVBhcmFtZXRlcnMtU2VjcmV0cy1Ub2tlbic6IHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOID8/ICcnLFxuICAgIH0sXG4gICAgcmV0cmllcyxcbiAgICB0aW1lb3V0TXMsXG4gICAgYmFzZUJhY2tvZmZNcyxcbiAgICBzaG91bGRSZXRyeTogKHJlcywgYm9keSkgPT4ge1xuICAgICAgaWYgKFs0MjksIDUwMCwgNTAyLCA1MDMsIDUwNF0uaW5jbHVkZXMocmVzLnN0YXR1cykpIHJldHVybiB0cnVlO1xuICAgICAgLy8gRXh0ZW5zaW9uIG1heSByZXR1cm4gNDAwICsgXCJub3QgcmVhZHkgdG8gc2VydmUgdHJhZmZpY1wiIHdoaWxlIGluaXRpYWxpemluZzsgcmV0cnkgaW4gdGhhdCBjYXNlXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDAwICYmIC9ub3RcXHMrcmVhZHkuKnRyYWZmaWMvaS50ZXN0KGJvZHkpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hSZXRyaWVyKHVybCwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gIGNvbnN0IHJhdyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICBpZiAoIWlzU2VjcmV0UmVzcG9uc2UocmF3KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWNyZXQgcmVzcG9uc2UgZm9ybWF0Jyk7XG4gIH1cblxuICBjb25zdCBkYXRhOiBTZWNyZXRSZXNwb25zZSA9IHJhdztcblxuICBjb25zdCBzZWNyZXRTdHJpbmcgPSBkYXRhLlNlY3JldFN0cmluZztcblxuICBpZiAobG9va3NMaWtlSnNvbihzZWNyZXRTdHJpbmcpKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc2VjcmV0U3RyaW5nKSBhcyBUO1xuICB9XG5cbiAgcmV0dXJuIHNlY3JldFN0cmluZyBhcyBUO1xufTtcblxuLyoqXG4gKiBUeXBlIGd1YXJkIGZvciB0aGUgU2VjcmV0cyBNYW5hZ2VyIEV4dGVuc2lvbiByZXNwb25zZSBzaGFwZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB2YWx1ZSBoYXMgdGhlIHNoYXBlIG9mIFNlY3JldFJlc3BvbnNlXG4gKi9cbmNvbnN0IGlzU2VjcmV0UmVzcG9uc2UgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTZWNyZXRSZXNwb25zZSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHYgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICByZXR1cm4gdHlwZW9mIHYuU2VjcmV0U3RyaW5nID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgdHlwZW9mIHYuTmFtZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgIHR5cGVvZiB2LkFSTiA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICh2LlZlcnNpb25JZCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2LlZlcnNpb25JZCA9PT0gJ3N0cmluZycpO1xufTtcblxuLyoqXG4gKiBIZXVyaXN0aWMgY2hlY2sgd2hldGhlciBhIHN0cmluZyBsb29rcyBsaWtlIEpTT04gKHN0YXJ0cyB3aXRoIGB7YCBhZnRlciB0cmltKS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gU3RyaW5nIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJpbmcgYXBwZWFycyB0byBiZSBKU09OXG4gKi9cbmNvbnN0IGxvb2tzTGlrZUpzb24gPSAoc3RyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnICYmIHN0ci50cmltKCkuc3RhcnRzV2l0aCgneycpO1xufTtcblxuXG4vKipcbiAqIENsaWVudCBmb3IgZmV0Y2hpbmcgc2VjcmV0cyBmcm9tIHRoZSBBV1MgTGFtYmRhIFNlY3JldHMgTWFuYWdlciBFeHRlbnNpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNyZXRGZXRjaGVyID0ge1xuICBnZXRTZWNyZXRWYWx1ZSxcbn07XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQWtFO0FBOEJsRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQWMsSUFBWSxFQUFFLFVBQWlDLEVBQUUsRUFBYyxFQUFFO0lBQ3pHLE1BQU0sRUFBRSxpQkFBaUIsR0FBRyxNQUFNLEVBQUUsU0FBUyxHQUFHLElBQUksRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGFBQWEsR0FBRyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFbkcsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsTUFBTSxHQUFHLEdBQUcsb0JBQW9CLElBQUksZ0NBQWdDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFFL0YsTUFBTSxjQUFjLEdBQW1CO1FBQ3JDLE9BQU8sRUFBRTtZQUNQLGdDQUFnQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksRUFBRTtTQUN0RTtRQUNELE9BQU87UUFDUCxTQUFTO1FBQ1QsYUFBYTtRQUNiLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ2hFLGlHQUFpRztZQUNqRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDMUUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0YsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSw0QkFBWSxFQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUV6RCxNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFtQixHQUFHLENBQUM7SUFFakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUV2QyxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQU0sQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxZQUFpQixDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWMsRUFBMkIsRUFBRTtJQUNuRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlELE1BQU0sQ0FBQyxHQUFHLEtBQWdDLENBQUM7SUFFM0MsT0FBTyxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQUssUUFBUTtRQUNsQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUMxQixPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUTtRQUN6QixDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUU7SUFDN0MsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUM7QUFHRjs7R0FFRztBQUNVLFFBQUEsYUFBYSxHQUFHO0lBQzNCLGNBQWM7Q0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmV0Y2hSZXRyaWVyLCB0eXBlIFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnZmV0Y2gtcmV0cmllcic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZmV0Y2hpbmcgYSBzZWNyZXQgZnJvbSB0aGUgU2VjcmV0cyBNYW5hZ2VyIEV4dGVuc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRTZWNyZXRWYWx1ZU9wdGlvbnMge1xuICAvKiogRXh0ZW5zaW9uIEhUVFAgcG9ydCAobG9jYWxob3N0KS4gRGVmYXVsdDogMjc3MyAoQVdTIGV4dGVuc2lvbiBkZWZhdWx0KS4gU2V0IGV4cGxpY2l0bHkgd2hlbiB1c2luZyBhIGN1c3RvbSBwb3J0LiAqL1xuICBleHRlbnNpb25IdHRwUG9ydD86IHN0cmluZyB8IG51bWJlcjtcbiAgLyoqIFJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IDIwMDAgKi9cbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHMgKGluY2x1ZGluZyB0aGUgZmlyc3QgcmVxdWVzdCkuIERlZmF1bHQ6IDMgKi9cbiAgcmV0cmllcz86IG51bWJlcjtcbiAgLyoqIEJhc2UgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIGZvciBiYWNrb2ZmIGJldHdlZW4gcmV0cmllcy4gRGVmYXVsdDogMzAwICovXG4gIGJhc2VCYWNrb2ZmTXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVzcG9uc2Ugc2hhcGUgcmV0dXJuZWQgYnkgdGhlIFNlY3JldHMgTWFuYWdlciBFeHRlbnNpb24gQVBJLlxuICovXG5pbnRlcmZhY2UgU2VjcmV0UmVzcG9uc2Uge1xuICAvKiogQVJOIG9mIHRoZSBzZWNyZXQgKi9cbiAgQVJOOiBzdHJpbmc7XG4gIC8qKiBOYW1lIG9mIHRoZSBzZWNyZXQgKi9cbiAgTmFtZTogc3RyaW5nO1xuICAvKiogU2VjcmV0IHZhbHVlIGFzIHN0cmluZyAobWF5IGJlIEpTT04pICovXG4gIFNlY3JldFN0cmluZzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgdmVyc2lvbiBpZGVudGlmaWVyICovXG4gIFZlcnNpb25JZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGZXRjaGVzIGEgc2VjcmV0IHZhbHVlIGZyb20gdGhlIEFXUyBMYW1iZGEgUGFyYW1ldGVycyBhbmQgU2VjcmV0cyBFeHRlbnNpb24gKGRlZmF1bHQgbG9jYWxob3N0OjI3NzMpLlxuICogUGFzcyBgZXh0ZW5zaW9uSHR0cFBvcnRgIGluIG9wdGlvbnMgd2hlbiB0aGUgZXh0ZW5zaW9uIGxpc3RlbnMgb24gYSBub24tZGVmYXVsdCBwb3J0LlxuICogVXNlcyByZXRyaWVzIHdpdGggZnVsbCBqaXR0ZXIgYmFja29mZiBmb3IgdHJhbnNpZW50IGVycm9ycyAoZS5nLiA1eHgsIDQyOSwgb3IgZXh0ZW5zaW9uIFwibm90IHJlYWR5XCIpLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gU2VjcmV0IG5hbWUgKGlkZW50aWZpZXIpIHRvIGZldGNoXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIHBvcnQsIHRpbWVvdXQsIHJldHJ5LCBhbmQgYmFja29mZiBzZXR0aW5nc1xuICogQHJldHVybnMgVGhlIHNlY3JldCB2YWx1ZSBhcyBzdHJpbmcsIG9yIHBhcnNlZCBhcyBUIGlmIHRoZSBzdG9yZWQgdmFsdWUgaXMgSlNPTlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgcmVzcG9uc2UgZm9ybWF0IGlzIGludmFsaWQgb3IgdGhlIHJlcXVlc3QgZmFpbHMgYWZ0ZXIgcmV0cmllc1xuICovXG5jb25zdCBnZXRTZWNyZXRWYWx1ZSA9IGFzeW5jIDxUID0gc3RyaW5nPihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEdldFNlY3JldFZhbHVlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHsgZXh0ZW5zaW9uSHR0cFBvcnQgPSAnMjc3MycsIHRpbWVvdXRNcyA9IDIwMDAsIHJldHJpZXMgPSAzLCBiYXNlQmFja29mZk1zID0gMzAwIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHBvcnQgPSBTdHJpbmcoZXh0ZW5zaW9uSHR0cFBvcnQpO1xuICBjb25zdCB1cmwgPSBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3NlY3JldHNtYW5hZ2VyL2dldD9zZWNyZXRJZD0ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX1gO1xuXG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnWC1Bd3MtUGFyYW1ldGVycy1TZWNyZXRzLVRva2VuJzogcHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4gPz8gJycsXG4gICAgfSxcbiAgICByZXRyaWVzLFxuICAgIHRpbWVvdXRNcyxcbiAgICBiYXNlQmFja29mZk1zLFxuICAgIHNob3VsZFJldHJ5OiAocmVzLCBib2R5KSA9PiB7XG4gICAgICBpZiAoWzQyOSwgNTAwLCA1MDIsIDUwMywgNTA0XS5pbmNsdWRlcyhyZXMuc3RhdHVzKSkgcmV0dXJuIHRydWU7XG4gICAgICAvLyBFeHRlbnNpb24gbWF5IHJldHVybiA0MDAgKyBcIm5vdCByZWFkeSB0byBzZXJ2ZSB0cmFmZmljXCIgd2hpbGUgaW5pdGlhbGl6aW5nOyByZXRyeSBpbiB0aGF0IGNhc2VcbiAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDAgJiYgL25vdFxccytyZWFkeS4qdHJhZmZpYy9pLnRlc3QoYm9keSkpIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFJldHJpZXIodXJsLCByZXF1ZXN0T3B0aW9ucyk7XG5cbiAgY29uc3QgcmF3ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIGlmICghaXNTZWNyZXRSZXNwb25zZShyYXcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNlY3JldCByZXNwb25zZSBmb3JtYXQnKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGE6IFNlY3JldFJlc3BvbnNlID0gcmF3O1xuXG4gIGNvbnN0IHNlY3JldFN0cmluZyA9IGRhdGEuU2VjcmV0U3RyaW5nO1xuXG4gIGlmIChsb29rc0xpa2VKc29uKHNlY3JldFN0cmluZykpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzZWNyZXRTdHJpbmcpIGFzIFQ7XG4gIH1cblxuICByZXR1cm4gc2VjcmV0U3RyaW5nIGFzIFQ7XG59O1xuXG4vKipcbiAqIFR5cGUgZ3VhcmQgZm9yIHRoZSBTZWNyZXRzIE1hbmFnZXIgRXh0ZW5zaW9uIHJlc3BvbnNlIHNoYXBlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUcnVlIGlmIHZhbHVlIGhhcyB0aGUgc2hhcGUgb2YgU2VjcmV0UmVzcG9uc2VcbiAqL1xuY29uc3QgaXNTZWNyZXRSZXNwb25zZSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFNlY3JldFJlc3BvbnNlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgdiA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIHJldHVybiB0eXBlb2Ygdi5TZWNyZXRTdHJpbmcgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICB0eXBlb2Ygdi5OYW1lID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgdHlwZW9mIHYuQVJOID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgKHYuVmVyc2lvbklkID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHYuVmVyc2lvbklkID09PSAnc3RyaW5nJyk7XG59O1xuXG4vKipcbiAqIEhldXJpc3RpYyBjaGVjayB3aGV0aGVyIGEgc3RyaW5nIGxvb2tzIGxpa2UgSlNPTiAoc3RhcnRzIHdpdGggYHtgIGFmdGVyIHRyaW0pLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBTdHJpbmcgdG8gY2hlY2tcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHN0cmluZyBhcHBlYXJzIHRvIGJlIEpTT05cbiAqL1xuY29uc3QgbG9va3NMaWtlSnNvbiA9IChzdHI6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgJiYgc3RyLnRyaW0oKS5zdGFydHNXaXRoKCd7Jyk7XG59O1xuXG5cbi8qKlxuICogQ2xpZW50IGZvciBmZXRjaGluZyBzZWNyZXRzIGZyb20gdGhlIEFXUyBMYW1iZGEgU2VjcmV0cyBNYW5hZ2VyIEV4dGVuc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY3JldEZldGNoZXIgPSB7XG4gIGdldFNlY3JldFZhbHVlLFxufTtcbiJdfQ==
package/package.json CHANGED
@@ -5,24 +5,24 @@
5
5
  "url": "https://github.com/gammarers-aws-lambda-libs/aws-lambda-secret-fetcher.git"
6
6
  },
7
7
  "scripts": {
8
- "build": "npx projen build",
9
- "bump": "npx projen bump",
10
- "clobber": "npx projen clobber",
11
- "compile": "npx projen compile",
12
- "default": "npx projen default",
13
- "eject": "npx projen eject",
14
- "eslint": "npx projen eslint",
15
- "package": "npx projen package",
16
- "post-compile": "npx projen post-compile",
17
- "post-upgrade": "npx projen post-upgrade",
18
- "pre-compile": "npx projen pre-compile",
19
- "release": "npx projen release",
20
- "test": "npx projen test",
21
- "test:watch": "npx projen test:watch",
22
- "unbump": "npx projen unbump",
23
- "upgrade": "npx projen upgrade",
24
- "watch": "npx projen watch",
25
- "projen": "npx projen"
8
+ "build": "projen build",
9
+ "bump": "projen bump",
10
+ "clobber": "projen clobber",
11
+ "compile": "projen compile",
12
+ "default": "projen default",
13
+ "eject": "projen eject",
14
+ "eslint": "projen eslint",
15
+ "package": "projen package",
16
+ "post-compile": "projen post-compile",
17
+ "post-upgrade": "projen post-upgrade",
18
+ "pre-compile": "projen pre-compile",
19
+ "release": "projen release",
20
+ "test": "projen test",
21
+ "test:watch": "projen test:watch",
22
+ "unbump": "projen unbump",
23
+ "upgrade": "projen upgrade",
24
+ "watch": "projen watch",
25
+ "projen": "projen"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@stylistic/eslint-plugin": "^2",
@@ -37,13 +37,13 @@
37
37
  "eslint-plugin-import": "^2.32.0",
38
38
  "jest": "^30.3.0",
39
39
  "jest-junit": "^16",
40
- "projen": "^0.99.26",
41
- "ts-jest": "^29.4.6",
40
+ "projen": "^0.99.47",
41
+ "ts-jest": "^29.4.9",
42
42
  "ts-node": "^10.9.2",
43
43
  "typescript": "5.9.x"
44
44
  },
45
45
  "dependencies": {
46
- "fetch-retrier": "^0.1"
46
+ "fetch-retrier": "^0.2"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">= 20.0.0"
@@ -53,7 +53,7 @@
53
53
  "publishConfig": {
54
54
  "access": "public"
55
55
  },
56
- "version": "0.3.7",
56
+ "version": "0.4.0",
57
57
  "jest": {
58
58
  "coverageProvider": "v8",
59
59
  "testMatch": [