cdk-serverless 2.22.4 → 3.0.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
@@ -172,6 +172,70 @@ await test.cleanupItems();
172
172
  await test.removeUser('test@example.com');
173
173
  ```
174
174
 
175
+ ## Breaking Change: `axios` Removed
176
+
177
+ CDK Serverless no longer depends on `axios`. The library now uses the
178
+ platform-native `fetch` API (stable in Node.js 18+; the Lambda functions
179
+ created by this library use `Runtime.NODEJS_LATEST`, currently Node 22).
180
+
181
+ This removes one third-party runtime dependency from every Lambda bundle that
182
+ imports from `cdk-serverless/lambda` and from every test workspace that
183
+ imports from `cdk-serverless/tests`. It was motivated by repeated axios
184
+ security advisories — landing this as a deliberate breaking change so the
185
+ fix is permanent rather than chasing CVE upgrades.
186
+
187
+ ### Impact on Lambda handlers (`cdk-serverless/lambda`)
188
+
189
+ None. The internal JWKS / well-known-issuer fetches in the JWT authorizers
190
+ were the only axios call sites in the Lambda runtime code, and their public
191
+ behavior is unchanged. Errors now surface as `Error` (or a `TimeoutError`
192
+ from `AbortSignal.timeout`) instead of `AxiosError`; if you catch errors
193
+ inside the authorizer, the message text is similar but the type guard is
194
+ different.
195
+
196
+ ### Impact on `IntegTestUtil` (`cdk-serverless/tests`)
197
+
198
+ `IntegTestUtil.getClient()` and `IntegTestUtil.getAuthenticatedClient()`
199
+ previously returned an `Axios` instance. They now return a small
200
+ `HttpClient` exported from `cdk-serverless/tests`. The migration is
201
+ mechanical:
202
+
203
+ ```typescript
204
+ // Before
205
+ const client = await test.getAuthenticatedClient('test@example.com');
206
+ const response = await client.get('/items');
207
+ // response.data is the parsed JSON, response.status is the HTTP status code
208
+ const items = response.data.items;
209
+
210
+ // After
211
+ const client = await test.getAuthenticatedClient('test@example.com');
212
+ const response = await client.get('/items');
213
+ // response.body is the raw string, response.json() parses it, response.ok
214
+ // reports 2xx, response.status is the HTTP status code
215
+ const items = response.json<{ items: Item[] }>().items;
216
+ ```
217
+
218
+ The `HttpClient` exposes the methods that integration tests in this
219
+ ecosystem actually use:
220
+
221
+ - `get(path, options?)`
222
+ - `post(path, body?, options?)` — `body` may be a string or any JSON-serializable
223
+ value; objects are stringified and `Content-Type: application/json` is added
224
+ automatically if the caller did not set it.
225
+ - `put(path, body?, options?)`, `patch(path, body?, options?)`, `delete(path, options?)`
226
+
227
+ Configuration accepted by `HttpClient` and by `getClient(config)`:
228
+
229
+ - `baseURL` — prepended to relative paths.
230
+ - `headers` — default headers applied to every request; per-request `headers`
231
+ override these on collision.
232
+
233
+ If you relied on axios-specific features (interceptors, `defaults`,
234
+ `transformRequest` / `transformResponse`, automatic `data` parsing), implement
235
+ the equivalent in your test code or wrap `HttpClient`. If your use case
236
+ needs richer client features and we should expose them, please open an
237
+ issue.
238
+
175
239
  ## Contribute
176
240
 
177
241
  ### How to contribute to CDK Serverless
@@ -15,10 +15,10 @@
15
15
  --dark-hl-6: #6A9955;
16
16
  --light-hl-7: #0070C1;
17
17
  --dark-hl-7: #4FC1FF;
18
- --light-hl-8: #098658;
19
- --dark-hl-8: #B5CEA8;
20
- --light-hl-9: #267F99;
21
- --dark-hl-9: #4EC9B0;
18
+ --light-hl-8: #267F99;
19
+ --dark-hl-8: #4EC9B0;
20
+ --light-hl-9: #098658;
21
+ --dark-hl-9: #B5CEA8;
22
22
  --light-code-background: #FFFFFF;
23
23
  --dark-code-background: #1E1E1E;
24
24
  }
@@ -2,7 +2,7 @@
2
2
  This construct facilitates setting up a Lambda function with various custom options, environment variables, and permissions required to interact with AWS services
3
3
  such as DynamoDB, Cognito, and S3. It supports setting up Lambda functions with pre-defined bundles, custom handlers, and integrations with AWS services.
4
4
  The construct also provides methods to dynamically update the configuration and permissions of the Lambda function after it has been created.</p>
5
- </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">lambdaFunction</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">LambdaFunction</span><span class="hl-1">(</span><span class="hl-5">this</span><span class="hl-1">, </span><span class="hl-2">&#39;MyLambdaFunction&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">entry:</span><span class="hl-1"> </span><span class="hl-2">&#39;path/to/lambda/handler.ts&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">handler:</span><span class="hl-1"> </span><span class="hl-2">&#39;main&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">stageName:</span><span class="hl-1"> </span><span class="hl-2">&#39;dev&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">table:</span><span class="hl-1"> </span><span class="hl-4">myDynamoDBTable</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">userPool:</span><span class="hl-1"> </span><span class="hl-4">myCognitoUserPool</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">assetBucket:</span><span class="hl-1"> </span><span class="hl-4">myS3Bucket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">lambdaOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">timeout:</span><span class="hl-1"> </span><span class="hl-4">Duration</span><span class="hl-1">.</span><span class="hl-0">seconds</span><span class="hl-1">(</span><span class="hl-8">30</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-4">memorySize:</span><span class="hl-1"> </span><span class="hl-8">512</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">// Add additional permissions</span><br/><span class="hl-4">lambdaFunction</span><span class="hl-1">.</span><span class="hl-0">grantSendEmails</span><span class="hl-1">();</span><br/><span class="hl-4">lambdaFunction</span><span class="hl-1">.</span><span class="hl-0">grantTableWrite</span><span class="hl-1">();</span>
5
+ </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">lambdaFunction</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">LambdaFunction</span><span class="hl-1">(</span><span class="hl-5">this</span><span class="hl-1">, </span><span class="hl-2">&#39;MyLambdaFunction&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">entry:</span><span class="hl-1"> </span><span class="hl-2">&#39;path/to/lambda/handler.ts&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">handler:</span><span class="hl-1"> </span><span class="hl-2">&#39;main&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">stageName:</span><span class="hl-1"> </span><span class="hl-2">&#39;dev&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">table:</span><span class="hl-1"> </span><span class="hl-4">myDynamoDBTable</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">userPool:</span><span class="hl-1"> </span><span class="hl-4">myCognitoUserPool</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">assetBucket:</span><span class="hl-1"> </span><span class="hl-4">myS3Bucket</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">lambdaOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">timeout:</span><span class="hl-1"> </span><span class="hl-4">Duration</span><span class="hl-1">.</span><span class="hl-0">seconds</span><span class="hl-1">(</span><span class="hl-9">30</span><span class="hl-1">),</span><br/><span class="hl-1"> </span><span class="hl-4">memorySize:</span><span class="hl-1"> </span><span class="hl-9">512</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">// Add additional permissions</span><br/><span class="hl-4">lambdaFunction</span><span class="hl-1">.</span><span class="hl-0">grantSendEmails</span><span class="hl-1">();</span><br/><span class="hl-4">lambdaFunction</span><span class="hl-1">.</span><span class="hl-0">grantTableWrite</span><span class="hl-1">();</span>
6
6
  </code><button type="button">Copy</button></pre>
7
7
 
8
8
  </div></div></section><section class="tsd-panel tsd-hierarchy" data-refl="129"><h4>Hierarchy</h4><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-signature-type">NodejsFunction</span><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">LambdaFunction</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
@@ -145,7 +145,7 @@ cross-environment scenarios.</li>
145
145
  </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Stack</span></h4><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.stack</p></aside></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Methods</h2></summary><section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="addalias"><span>add<wbr/>Alias</span><a href="#addalias" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="addalias-1"><span class="tsd-kind-call-signature">addAlias</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">aliasName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">AliasOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Alias</span><a href="#addalias-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Defines an alias for this function.</p>
146
146
  <p>The alias will automatically be updated to point to the latest version of
147
147
  the function as it is being updated during a deployment.</p>
148
- <pre><code class="ts"><span class="hl-5">declare</span><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">fn</span><span class="hl-1">: </span><span class="hl-9">lambda</span><span class="hl-1">.</span><span class="hl-9">Function</span><span class="hl-1">;</span><br/><br/><span class="hl-4">fn</span><span class="hl-1">.</span><span class="hl-0">addAlias</span><span class="hl-1">(</span><span class="hl-2">&#39;Live&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-6">// Is equivalent to</span><br/><br/><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-4">lambda</span><span class="hl-1">.</span><span class="hl-0">Alias</span><span class="hl-1">(</span><span class="hl-5">this</span><span class="hl-1">, </span><span class="hl-2">&#39;AliasLive&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">aliasName:</span><span class="hl-1"> </span><span class="hl-2">&#39;Live&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">version:</span><span class="hl-1"> </span><span class="hl-4">fn</span><span class="hl-1">.</span><span class="hl-4">currentVersion</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
148
+ <pre><code class="ts"><span class="hl-5">declare</span><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">fn</span><span class="hl-1">: </span><span class="hl-8">lambda</span><span class="hl-1">.</span><span class="hl-8">Function</span><span class="hl-1">;</span><br/><br/><span class="hl-4">fn</span><span class="hl-1">.</span><span class="hl-0">addAlias</span><span class="hl-1">(</span><span class="hl-2">&#39;Live&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-6">// Is equivalent to</span><br/><br/><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-4">lambda</span><span class="hl-1">.</span><span class="hl-0">Alias</span><span class="hl-1">(</span><span class="hl-5">this</span><span class="hl-1">, </span><span class="hl-2">&#39;AliasLive&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">aliasName:</span><span class="hl-1"> </span><span class="hl-2">&#39;Live&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">version:</span><span class="hl-1"> </span><span class="hl-4">fn</span><span class="hl-1">.</span><span class="hl-4">currentVersion</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
149
149
  </code><button type="button">Copy</button></pre>
150
150
 
151
151
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">aliasName</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The name of the alias</p>
@@ -282,27 +282,27 @@ this type-testing method instead.</p>
282
282
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">construct</span>: <span class="tsd-signature-type">IConstruct</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.isOwnedResource</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="isresource"><code class="tsd-tag">Static</code><span>is<wbr/>Resource</span><a href="#isresource" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="isresource-1"><span class="tsd-kind-call-signature">isResource</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">construct</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IConstruct</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-kind-parameter">construct</span> <span class="tsd-signature-keyword">is</span> <span class="tsd-signature-type">Resource</span><a href="#isresource-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Check whether the given construct is a Resource</p>
283
283
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">construct</span>: <span class="tsd-signature-type">IConstruct</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-kind-parameter">construct</span> <span class="tsd-signature-keyword">is</span> <span class="tsd-signature-type">Resource</span></h4><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.isResource</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="metricall"><code class="tsd-tag">Static</code><span>metric<wbr/>All</span><a href="#metricall" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="metricall-1"><span class="tsd-kind-call-signature">metricAll</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">metricName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">MetricOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Metric</span><a href="#metricall-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Return the given named metric for this Lambda</p>
284
284
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">metricName</span>: <span class="tsd-signature-type">string</span></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.metricAll</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="metricallconcurrentexecutions"><code class="tsd-tag">Static</code><span>metric<wbr/>All<wbr/>Concurrent<wbr/>Executions</span><a href="#metricallconcurrentexecutions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="metricallconcurrentexecutions-1"><span class="tsd-kind-call-signature">metricAllConcurrentExecutions</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">MetricOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Metric</span><a href="#metricallconcurrentexecutions-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Metric for the number of concurrent executions across all Lambdas</p>
285
- </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default">Default<a href="#default" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">max</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-8">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
285
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default">Default<a href="#default" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">max</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-9">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
286
286
  </code><button type="button">Copy</button></pre>
287
287
 
288
288
  </div></div><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.metricAllConcurrentExecutions</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="metricallduration"><code class="tsd-tag">Static</code><span>metric<wbr/>All<wbr/>Duration</span><a href="#metricallduration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="metricallduration-1"><span class="tsd-kind-call-signature">metricAllDuration</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">MetricOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Metric</span><a href="#metricallduration-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Metric for the Duration executing all Lambdas</p>
289
- </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-1">Default<a href="#default-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">average</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-8">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
289
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-1">Default<a href="#default-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">average</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-9">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
290
290
  </code><button type="button">Copy</button></pre>
291
291
 
292
292
  </div></div><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.metricAllDuration</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="metricallerrors"><code class="tsd-tag">Static</code><span>metric<wbr/>All<wbr/>Errors</span><a href="#metricallerrors" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="metricallerrors-1"><span class="tsd-kind-call-signature">metricAllErrors</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">MetricOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Metric</span><a href="#metricallerrors-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Metric for the number of Errors executing all Lambdas</p>
293
- </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-2">Default<a href="#default-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">sum</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-8">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
293
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-2">Default<a href="#default-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">sum</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-9">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
294
294
  </code><button type="button">Copy</button></pre>
295
295
 
296
296
  </div></div><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.metricAllErrors</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="metricallinvocations"><code class="tsd-tag">Static</code><span>metric<wbr/>All<wbr/>Invocations</span><a href="#metricallinvocations" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="metricallinvocations-1"><span class="tsd-kind-call-signature">metricAllInvocations</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">MetricOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Metric</span><a href="#metricallinvocations-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Metric for the number of invocations of all Lambdas</p>
297
- </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-3">Default<a href="#default-3" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">sum</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-8">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
297
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-3">Default<a href="#default-3" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">sum</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-9">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
298
298
  </code><button type="button">Copy</button></pre>
299
299
 
300
300
  </div></div><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.metricAllInvocations</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="metricallthrottles"><code class="tsd-tag">Static</code><span>metric<wbr/>All<wbr/>Throttles</span><a href="#metricallthrottles" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="metricallthrottles-1"><span class="tsd-kind-call-signature">metricAllThrottles</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">MetricOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Metric</span><a href="#metricallthrottles-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Metric for the number of throttled invocations of all Lambdas</p>
301
- </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-4">Default<a href="#default-4" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">sum</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-8">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
301
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-4">Default<a href="#default-4" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">sum</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-9">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
302
302
  </code><button type="button">Copy</button></pre>
303
303
 
304
304
  </div></div><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.metricAllThrottles</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="metricallunreservedconcurrentexecutions"><code class="tsd-tag">Static</code><span>metric<wbr/>All<wbr/>Unreserved<wbr/>Concurrent<wbr/>Executions</span><a href="#metricallunreservedconcurrentexecutions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="metricallunreservedconcurrentexecutions-1"><span class="tsd-kind-call-signature">metricAllUnreservedConcurrentExecutions</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">MetricOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Metric</span><a href="#metricallunreservedconcurrentexecutions-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Metric for the number of unreserved concurrent executions across all Lambdas</p>
305
- </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-5">Default<a href="#default-5" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">max</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-8">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
305
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">props</span>: <span class="tsd-signature-type">MetricOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Metric</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-default"><h4 class="tsd-anchor-link" id="default-5">Default<a href="#default-5" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">max</span><span class="hl-1"> </span><span class="hl-4">over</span><span class="hl-1"> </span><span class="hl-9">5</span><span class="hl-1"> </span><span class="hl-4">minutes</span>
306
306
  </code><button type="button">Copy</button></pre>
307
307
 
308
308
  </div></div><aside class="tsd-sources"><p>Inherited from lambdaNodejs.NodejsFunction.metricAllUnreservedConcurrentExecutions</p></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#architecture" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>architecture</span></a><a href="#cancreatepermissions" class="tsd-is-protected tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>can<wbr/>Create<wbr/>Permissions</span></a><a href="#deadletterqueue" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>dead<wbr/>Letter<wbr/>Queue</span></a><a href="#deadlettertopic" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>dead<wbr/>Letter<wbr/>Topic</span></a><a href="#grantprincipal" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>grant<wbr/>Principal</span></a><a href="#node" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>node</span></a><a href="#permissionsnode" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>permissions<wbr/>Node</span></a><a href="#role" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>role</span></a><a href="#runtime" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>runtime</span></a><a href="#tenancyconfig" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>tenancy<wbr/>Config</span></a><a href="#timeout" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>timeout</span></a><a href="#property_injection_id" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>PROPERTY_<wbr/>INJECTION_<wbr/>ID</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Accessors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Accessors</summary><div><a href="#connections" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>connections</span></a><a href="#currentversion" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>current<wbr/>Version</span></a><a href="#env" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>env</span></a><a href="#functionarn" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>function<wbr/>Arn</span></a><a href="#functionname" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>function<wbr/>Name</span></a><a href="#functionref" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>function<wbr/>Ref</span></a><a href="#isboundtovpc" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>is<wbr/>Bound<wbr/>To<wbr/>Vpc</span></a><a href="#latestversion" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>latest<wbr/>Version</span></a><a href="#loggroup" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>log<wbr/>Group</span></a><a href="#physicalname" class="tsd-is-protected tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>physical<wbr/>Name</span></a><a href="#resourcearnsforgrantinvoke" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>resource<wbr/>Arns<wbr/>For<wbr/>Grant<wbr/>Invoke</span></a><a href="#stack" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Accessor"><use href="../assets/icons.svg#icon-262144"></use></svg><span>stack</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#addalias" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Alias</span></a><a href="#addenvironment" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Environment</span></a><a href="#addeventsource" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Event<wbr/>Source</span></a><a href="#addeventsourcemapping" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Event<wbr/>Source<wbr/>Mapping</span></a><a href="#addfunctionurl" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Function<wbr/>Url</span></a><a href="#addlayers" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Layers</span></a><a href="#addpermission" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Permission</span></a><a href="#addtorolepolicy" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>To<wbr/>Role<wbr/>Policy</span></a><a href="#applyremovalpolicy" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>apply<wbr/>Removal<wbr/>Policy</span></a><a href="#configureasyncinvoke" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>configure<wbr/>Async<wbr/>Invoke</span></a><a href="#considerwarningoninvokefunctionpermissions" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>consider<wbr/>Warning<wbr/>On<wbr/>Invoke<wbr/>Function<wbr/>Permissions</span></a><a href="#generatephysicalname" class="tsd-is-protected tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>generate<wbr/>Physical<wbr/>Name</span></a><a href="#getresourcearnattribute" class="tsd-is-protected tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Resource<wbr/>Arn<wbr/>Attribute</span></a><a href="#getresourcenameattribute" class="tsd-is-protected tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Resource<wbr/>Name<wbr/>Attribute</span></a><a href="#grantdeleteasset"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Delete<wbr/>Asset</span></a><a href="#grantinvoke" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Invoke</span></a><a href="#grantinvokecompositeprincipal" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Invoke<wbr/>Composite<wbr/>Principal</span></a><a href="#grantinvokelatestversion" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Invoke<wbr/>Latest<wbr/>Version</span></a><a href="#grantinvokeurl" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Invoke<wbr/>Url</span></a><a href="#grantinvokeversion" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Invoke<wbr/>Version</span></a><a href="#grantreadassets"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Read<wbr/>Assets</span></a><a href="#grantsendemails"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Send<wbr/>Emails</span></a><a href="#granttablewrite"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Table<wbr/>Write</span></a><a href="#grantuploadassets"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Upload<wbr/>Assets</span></a><a href="#grantuserpoolread"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Userpool<wbr/>Read</span></a><a href="#grantuserpoolreadwrite"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>grant<wbr/>Userpool<wbr/>Read<wbr/>Write</span></a><a href="#invalidateversionbasedon" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>invalidate<wbr/>Version<wbr/>Based<wbr/>On</span></a><a href="#metric" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric</span></a><a href="#metricduration" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>Duration</span></a><a href="#metricerrors" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>Errors</span></a><a href="#metricinvocations" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>Invocations</span></a><a href="#metricthrottles" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>Throttles</span></a><a href="#settable"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Table</span></a><a href="#settimeout"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Timeout</span></a><a href="#setuserpool"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>User<wbr/>Pool</span></a><a href="#tostring" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>to<wbr/>String</span></a><a href="#warninvokefunctionpermissions" class="tsd-is-protected tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>warn<wbr/>Invoke<wbr/>Function<wbr/>Permissions</span></a><a href="#with" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>with</span></a><a href="#classifyversionproperty" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>classify<wbr/>Version<wbr/>Property</span></a><a href="#fromfunctionarn" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>from<wbr/>Function<wbr/>Arn</span></a><a href="#fromfunctionattributes" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>from<wbr/>Function<wbr/>Attributes</span></a><a href="#fromfunctionname" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>from<wbr/>Function<wbr/>Name</span></a><a href="#isconstruct" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Construct</span></a><a href="#isownedresource" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Owned<wbr/>Resource</span></a><a href="#isresource" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Resource</span></a><a href="#metricall" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>All</span></a><a href="#metricallconcurrentexecutions" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>All<wbr/>Concurrent<wbr/>Executions</span></a><a href="#metricallduration" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>All<wbr/>Duration</span></a><a href="#metricallerrors" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>All<wbr/>Errors</span></a><a href="#metricallinvocations" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>All<wbr/>Invocations</span></a><a href="#metricallthrottles" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>All<wbr/>Throttles</span></a><a href="#metricallunreservedconcurrentexecutions" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>metric<wbr/>All<wbr/>Unreserved<wbr/>Concurrent<wbr/>Executions</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -55,6 +55,50 @@
55
55
  <pre><code class="typescript"><span class="hl-3">import</span><span class="hl-1"> { </span><span class="hl-4">IntegTestUtil</span><span class="hl-1"> } </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">&#39;cdk-serverless/tests/integ-test-util&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-6">// Initialize with your stack outputs</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">test</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">IntegTestUtil</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-4">region:</span><span class="hl-1"> </span><span class="hl-2">&#39;us-east-1&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">apiOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">baseURL:</span><span class="hl-1"> </span><span class="hl-2">&#39;https://api.example.com&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">authOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">userPoolId:</span><span class="hl-1"> </span><span class="hl-2">&#39;us-east-1_xxxxx&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">userPoolClientId:</span><span class="hl-1"> </span><span class="hl-2">&#39;xxxxxxxx&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">identityPoolId:</span><span class="hl-1"> </span><span class="hl-2">&#39;us-east-1:xxxxxxxx&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">datastoreOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">tableName:</span><span class="hl-1"> </span><span class="hl-2">&#39;MyTable&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> },</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">// Create and authenticate a test user</span><br/><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">test</span><span class="hl-1">.</span><span class="hl-0">createUser</span><span class="hl-1">(</span><span class="hl-2">&#39;test@example.com&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;custom:attribute&#39;</span><span class="hl-4">:</span><span class="hl-1"> </span><span class="hl-2">&#39;value&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">}, [</span><span class="hl-2">&#39;admin&#39;</span><span class="hl-1">]);</span><br/><br/><span class="hl-6">// Get an authenticated API client</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">client</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">test</span><span class="hl-1">.</span><span class="hl-0">getAuthenticatedClient</span><span class="hl-1">(</span><span class="hl-2">&#39;test@example.com&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-6">// Make API calls</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-2">&#39;/items&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-6">// Clean up test data</span><br/><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">test</span><span class="hl-1">.</span><span class="hl-0">cleanupItems</span><span class="hl-1">();</span><br/><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">test</span><span class="hl-1">.</span><span class="hl-0">removeUser</span><span class="hl-1">(</span><span class="hl-2">&#39;test@example.com&#39;</span><span class="hl-1">);</span>
56
56
  </code><button type="button">Copy</button></pre>
57
57
 
58
+ <h2 id="breaking-change-removed" class="tsd-anchor-link">Breaking Change: <code>axios</code> Removed<a href="#breaking-change-removed" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
59
+ <p>CDK Serverless no longer depends on <code>axios</code>. The library now uses the
60
+ platform-native <code>fetch</code> API (stable in Node.js 18+; the Lambda functions
61
+ created by this library use <code>Runtime.NODEJS_LATEST</code>, currently Node 22).</p>
62
+ <p>This removes one third-party runtime dependency from every Lambda bundle that
63
+ imports from <code>cdk-serverless/lambda</code> and from every test workspace that
64
+ imports from <code>cdk-serverless/tests</code>. It was motivated by repeated axios
65
+ security advisories — landing this as a deliberate breaking change so the
66
+ fix is permanent rather than chasing CVE upgrades.</p>
67
+ <h3 id="impact-on-lambda-handlers-" class="tsd-anchor-link">Impact on Lambda handlers (<code>cdk-serverless/lambda</code>)<a href="#impact-on-lambda-handlers-" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
68
+ <p>None. The internal JWKS / well-known-issuer fetches in the JWT authorizers
69
+ were the only axios call sites in the Lambda runtime code, and their public
70
+ behavior is unchanged. Errors now surface as <code>Error</code> (or a <code>TimeoutError</code>
71
+ from <code>AbortSignal.timeout</code>) instead of <code>AxiosError</code>; if you catch errors
72
+ inside the authorizer, the message text is similar but the type guard is
73
+ different.</p>
74
+ <h3 id="impact-on-" class="tsd-anchor-link">Impact on <code>IntegTestUtil</code> (<code>cdk-serverless/tests</code>)<a href="#impact-on-" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
75
+ <p><code>IntegTestUtil.getClient()</code> and <code>IntegTestUtil.getAuthenticatedClient()</code>
76
+ previously returned an <code>Axios</code> instance. They now return a small
77
+ <code>HttpClient</code> exported from <code>cdk-serverless/tests</code>. The migration is
78
+ mechanical:</p>
79
+ <pre><code class="typescript"><span class="hl-6">// Before</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">client</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">test</span><span class="hl-1">.</span><span class="hl-0">getAuthenticatedClient</span><span class="hl-1">(</span><span class="hl-2">&#39;test@example.com&#39;</span><span class="hl-1">);</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-2">&#39;/items&#39;</span><span class="hl-1">);</span><br/><span class="hl-6">// response.data is the parsed JSON, response.status is the HTTP status code</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">items</span><span class="hl-1"> = </span><span class="hl-4">response</span><span class="hl-1">.</span><span class="hl-4">data</span><span class="hl-1">.</span><span class="hl-4">items</span><span class="hl-1">;</span><br/><br/><span class="hl-6">// After</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">client</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">test</span><span class="hl-1">.</span><span class="hl-0">getAuthenticatedClient</span><span class="hl-1">(</span><span class="hl-2">&#39;test@example.com&#39;</span><span class="hl-1">);</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">client</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-2">&#39;/items&#39;</span><span class="hl-1">);</span><br/><span class="hl-6">// response.body is the raw string, response.json() parses it, response.ok</span><br/><span class="hl-6">// reports 2xx, response.status is the HTTP status code</span><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">items</span><span class="hl-1"> = </span><span class="hl-4">response</span><span class="hl-1">.</span><span class="hl-0">json</span><span class="hl-1">&lt;{ </span><span class="hl-4">items</span><span class="hl-1">: </span><span class="hl-8">Item</span><span class="hl-1">[] }&gt;().</span><span class="hl-4">items</span><span class="hl-1">;</span>
80
+ </code><button type="button">Copy</button></pre>
81
+
82
+ <p>The <code>HttpClient</code> exposes the methods that integration tests in this
83
+ ecosystem actually use:</p>
84
+ <ul>
85
+ <li><code>get(path, options?)</code></li>
86
+ <li><code>post(path, body?, options?)</code> — <code>body</code> may be a string or any JSON-serializable
87
+ value; objects are stringified and <code>Content-Type: application/json</code> is added
88
+ automatically if the caller did not set it.</li>
89
+ <li><code>put(path, body?, options?)</code>, <code>patch(path, body?, options?)</code>, <code>delete(path, options?)</code></li>
90
+ </ul>
91
+ <p>Configuration accepted by <code>HttpClient</code> and by <code>getClient(config)</code>:</p>
92
+ <ul>
93
+ <li><code>baseURL</code> — prepended to relative paths.</li>
94
+ <li><code>headers</code> — default headers applied to every request; per-request <code>headers</code>
95
+ override these on collision.</li>
96
+ </ul>
97
+ <p>If you relied on axios-specific features (interceptors, <code>defaults</code>,
98
+ <code>transformRequest</code> / <code>transformResponse</code>, automatic <code>data</code> parsing), implement
99
+ the equivalent in your test code or wrap <code>HttpClient</code>. If your use case
100
+ needs richer client features and we should expose them, please open an
101
+ issue.</p>
58
102
  <h2 id="contribute" class="tsd-anchor-link">Contribute<a href="#contribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
59
103
  <h3 id="how-to-contribute-to-cdk-serverless" class="tsd-anchor-link">How to contribute to CDK Serverless<a href="#how-to-contribute-to-cdk-serverless" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
60
104
  <h4 id="did-you-find-a-bug" class="tsd-anchor-link"><strong>Did you find a bug?</strong><a href="#did-you-find-a-bug" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4>
@@ -92,4 +136,4 @@
92
136
  </ul>
93
137
  <h2 id="authors" class="tsd-anchor-link">Authors<a href="#authors" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
94
138
  <p>Brought to you by <a href="https://taimos.de">Taimos</a></p>
95
- </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#cdk-serverless"><span>CDK <wbr/>Serverless</span></a><ul><li><ul><li><a href="#features"><span>Features</span></a></li></ul></li><li><a href="#quick-start"><span>Quick <wbr/>Start</span></a></li><li><ul><li><a href="#adding-projen-constructs"><span>Adding projen constructs</span></a></li><li><a href="#using-the-cdk-serverless-l3-constructs"><span>Using the <wbr/>CDK serverless <wbr/>L3 constructs</span></a></li></ul></li><li><a href="#testing-utilities"><span>Testing <wbr/>Utilities</span></a></li><li><ul><li><a href="#lambdatestutil"><span>Lambda<wbr/>Test<wbr/>Util</span></a></li><li><ul><li><a href="#rest-api-testing"><span>REST <wbr/>API <wbr/>Testing</span></a></li><li><a href="#graphql-testing"><span>Graph<wbr/>QL <wbr/>Testing</span></a></li></ul></li><li><a href="#integtestutil"><span>Integ<wbr/>Test<wbr/>Util</span></a></li></ul></li><li><a href="#contribute"><span>Contribute</span></a></li><li><ul><li><a href="#how-to-contribute-to-cdk-serverless"><span>How to contribute to <wbr/>CDK <wbr/>Serverless</span></a></li><li><ul><li><a href="#did-you-find-a-bug"><span>Did you find a bug?</span></a></li><li><a href="#did-you-write-a-patch-that-fixes-a-bug"><span>Did you write a patch that fixes a bug?</span></a></li><li><a href="#did-you-fix-whitespace-format-code-or-make-a-purely-cosmetic-patch"><span>Did you fix whitespace, format code, or make a purely cosmetic patch?</span></a></li><li><a href="#do-you-intend-to-add-a-new-feature-or-change-an-existing-one"><span>Do you intend to add a new feature or change an existing one?</span></a></li><li><a href="#do-you-want-to-contribute-to-the-cdk-serverless-documentation"><span>Do you want to contribute to the <wbr/>CDK <wbr/>Serverless documentation?</span></a></li></ul></li></ul></li><li><a href="#authors"><span>Authors</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
139
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#cdk-serverless"><span>CDK <wbr/>Serverless</span></a><ul><li><ul><li><a href="#features"><span>Features</span></a></li></ul></li><li><a href="#quick-start"><span>Quick <wbr/>Start</span></a></li><li><ul><li><a href="#adding-projen-constructs"><span>Adding projen constructs</span></a></li><li><a href="#using-the-cdk-serverless-l3-constructs"><span>Using the <wbr/>CDK serverless <wbr/>L3 constructs</span></a></li></ul></li><li><a href="#testing-utilities"><span>Testing <wbr/>Utilities</span></a></li><li><ul><li><a href="#lambdatestutil"><span>Lambda<wbr/>Test<wbr/>Util</span></a></li><li><ul><li><a href="#rest-api-testing"><span>REST <wbr/>API <wbr/>Testing</span></a></li><li><a href="#graphql-testing"><span>Graph<wbr/>QL <wbr/>Testing</span></a></li></ul></li><li><a href="#integtestutil"><span>Integ<wbr/>Test<wbr/>Util</span></a></li></ul></li><li><a href="#breaking-change-removed"><span>Breaking <wbr/>Change: <wbr/>Removed</span></a></li><li><ul><li><a href="#impact-on-lambda-handlers-"><span>Impact on <wbr/>Lambda handlers ()</span></a></li><li><a href="#impact-on-"><span>Impact on ()</span></a></li></ul></li><li><a href="#contribute"><span>Contribute</span></a></li><li><ul><li><a href="#how-to-contribute-to-cdk-serverless"><span>How to contribute to <wbr/>CDK <wbr/>Serverless</span></a></li><li><ul><li><a href="#did-you-find-a-bug"><span>Did you find a bug?</span></a></li><li><a href="#did-you-write-a-patch-that-fixes-a-bug"><span>Did you write a patch that fixes a bug?</span></a></li><li><a href="#did-you-fix-whitespace-format-code-or-make-a-purely-cosmetic-patch"><span>Did you fix whitespace, format code, or make a purely cosmetic patch?</span></a></li><li><a href="#do-you-intend-to-add-a-new-feature-or-change-an-existing-one"><span>Do you intend to add a new feature or change an existing one?</span></a></li><li><a href="#do-you-want-to-contribute-to-the-cdk-serverless-documentation"><span>Do you want to contribute to the <wbr/>CDK <wbr/>Serverless documentation?</span></a></li></ul></li></ul></li><li><a href="#authors"><span>Authors</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -15,8 +15,10 @@
15
15
  --dark-hl-6: #6A9955;
16
16
  --light-hl-7: #0070C1;
17
17
  --dark-hl-7: #4FC1FF;
18
- --light-hl-8: #098658;
19
- --dark-hl-8: #B5CEA8;
18
+ --light-hl-8: #267F99;
19
+ --dark-hl-8: #4EC9B0;
20
+ --light-hl-9: #098658;
21
+ --dark-hl-9: #B5CEA8;
20
22
  --light-code-background: #FFFFFF;
21
23
  --dark-code-background: #1E1E1E;
22
24
  }
@@ -31,6 +33,7 @@
31
33
  --hl-6: var(--light-hl-6);
32
34
  --hl-7: var(--light-hl-7);
33
35
  --hl-8: var(--light-hl-8);
36
+ --hl-9: var(--light-hl-9);
34
37
  --code-background: var(--light-code-background);
35
38
  } }
36
39
 
@@ -44,6 +47,7 @@
44
47
  --hl-6: var(--dark-hl-6);
45
48
  --hl-7: var(--dark-hl-7);
46
49
  --hl-8: var(--dark-hl-8);
50
+ --hl-9: var(--dark-hl-9);
47
51
  --code-background: var(--dark-code-background);
48
52
  } }
49
53
 
@@ -57,6 +61,7 @@
57
61
  --hl-6: var(--light-hl-6);
58
62
  --hl-7: var(--light-hl-7);
59
63
  --hl-8: var(--light-hl-8);
64
+ --hl-9: var(--light-hl-9);
60
65
  --code-background: var(--light-code-background);
61
66
  }
62
67
 
@@ -70,6 +75,7 @@
70
75
  --hl-6: var(--dark-hl-6);
71
76
  --hl-7: var(--dark-hl-7);
72
77
  --hl-8: var(--dark-hl-8);
78
+ --hl-9: var(--dark-hl-9);
73
79
  --code-background: var(--dark-code-background);
74
80
  }
75
81
 
@@ -82,4 +88,5 @@
82
88
  .hl-6 { color: var(--hl-6); }
83
89
  .hl-7 { color: var(--hl-7); }
84
90
  .hl-8 { color: var(--hl-8); }
91
+ .hl-9 { color: var(--hl-9); }
85
92
  pre, code { background: var(--code-background); }
@@ -30,7 +30,7 @@ above <code>constructorOpt</code>, including <code>constructorOpt</code>, will b
30
30
  generated stack trace.</p>
31
31
  <p>The <code>constructorOpt</code> argument is useful for hiding implementation
32
32
  details of error generation from the user. For instance:</p>
33
- <pre><code class="js"><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">a</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">// Create an error without stack trace to avoid calculating the stack trace twice.</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> { </span><span class="hl-7">stackTraceLimit</span><span class="hl-1"> } = </span><span class="hl-4">Error</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-8">0</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-4">stackTraceLimit</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-6">// Capture the stack trace above function b</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-4">error</span><span class="hl-1">, </span><span class="hl-4">b</span><span class="hl-1">); </span><span class="hl-6">// Neither function c, nor b is included in the stack trace</span><br/><span class="hl-1"> </span><span class="hl-3">throw</span><span class="hl-1"> </span><span class="hl-4">error</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-0">a</span><span class="hl-1">();</span>
33
+ <pre><code class="js"><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">a</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">// Create an error without stack trace to avoid calculating the stack trace twice.</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> { </span><span class="hl-7">stackTraceLimit</span><span class="hl-1"> } = </span><span class="hl-4">Error</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-4">stackTraceLimit</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-6">// Capture the stack trace above function b</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-4">error</span><span class="hl-1">, </span><span class="hl-4">b</span><span class="hl-1">); </span><span class="hl-6">// Neither function c, nor b is included in the stack trace</span><br/><span class="hl-1"> </span><span class="hl-3">throw</span><span class="hl-1"> </span><span class="hl-4">error</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-0">a</span><span class="hl-1">();</span>
34
34
  </code><button type="button">Copy</button></pre>
35
35
 
36
36
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">targetObject</span>: <span class="tsd-signature-type">object</span></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">constructorOpt</span>: <span class="tsd-signature-type">Function</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><p>Inherited from <a href="errors.HttpError.html">HttpError</a>.<a href="errors.HttpError.html#capturestacktrace">captureStackTrace</a></p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="preparestacktrace"><code class="tsd-tag">Static</code><span>prepare<wbr/>Stack<wbr/>Trace</span><a href="#preparestacktrace" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="preparestacktrace-1"><span class="tsd-kind-call-signature">prepareStackTrace</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">err</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Error</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">stackTraces</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">CallSite</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><a href="#preparestacktrace-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">err</span>: <span class="tsd-signature-type">Error</span></span></li><li><span><span class="tsd-kind-parameter">stackTraces</span>: <span class="tsd-signature-type">CallSite</span><span class="tsd-signature-symbol">[]</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">any</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-see"><h4 class="tsd-anchor-link" id="see">See<a href="#see" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p><a href="https://v8.dev/docs/stack-trace-api#customizing-stack-traces">https://v8.dev/docs/stack-trace-api#customizing-stack-traces</a></p>
@@ -30,7 +30,7 @@ above <code>constructorOpt</code>, including <code>constructorOpt</code>, will b
30
30
  generated stack trace.</p>
31
31
  <p>The <code>constructorOpt</code> argument is useful for hiding implementation
32
32
  details of error generation from the user. For instance:</p>
33
- <pre><code class="js"><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">a</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">// Create an error without stack trace to avoid calculating the stack trace twice.</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> { </span><span class="hl-7">stackTraceLimit</span><span class="hl-1"> } = </span><span class="hl-4">Error</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-8">0</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-4">stackTraceLimit</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-6">// Capture the stack trace above function b</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-4">error</span><span class="hl-1">, </span><span class="hl-4">b</span><span class="hl-1">); </span><span class="hl-6">// Neither function c, nor b is included in the stack trace</span><br/><span class="hl-1"> </span><span class="hl-3">throw</span><span class="hl-1"> </span><span class="hl-4">error</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-0">a</span><span class="hl-1">();</span>
33
+ <pre><code class="js"><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">a</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">function</span><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">// Create an error without stack trace to avoid calculating the stack trace twice.</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> { </span><span class="hl-7">stackTraceLimit</span><span class="hl-1"> } = </span><span class="hl-4">Error</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-4">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-4">stackTraceLimit</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-6">// Capture the stack trace above function b</span><br/><span class="hl-1"> </span><span class="hl-4">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-4">error</span><span class="hl-1">, </span><span class="hl-4">b</span><span class="hl-1">); </span><span class="hl-6">// Neither function c, nor b is included in the stack trace</span><br/><span class="hl-1"> </span><span class="hl-3">throw</span><span class="hl-1"> </span><span class="hl-4">error</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-0">a</span><span class="hl-1">();</span>
34
34
  </code><button type="button">Copy</button></pre>
35
35
 
36
36
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">targetObject</span>: <span class="tsd-signature-type">object</span></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">constructorOpt</span>: <span class="tsd-signature-type">Function</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><p>Inherited from <a href="errors.HttpError.html">HttpError</a>.<a href="errors.HttpError.html#capturestacktrace">captureStackTrace</a></p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="preparestacktrace"><code class="tsd-tag">Static</code><span>prepare<wbr/>Stack<wbr/>Trace</span><a href="#preparestacktrace" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="preparestacktrace-1"><span class="tsd-kind-call-signature">prepareStackTrace</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">err</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Error</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">stackTraces</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">CallSite</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><a href="#preparestacktrace-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">err</span>: <span class="tsd-signature-type">Error</span></span></li><li><span><span class="tsd-kind-parameter">stackTraces</span>: <span class="tsd-signature-type">CallSite</span><span class="tsd-signature-symbol">[]</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">any</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-see"><h4 class="tsd-anchor-link" id="see">See<a href="#see" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p><a href="https://v8.dev/docs/stack-trace-api#customizing-stack-traces">https://v8.dev/docs/stack-trace-api#customizing-stack-traces</a></p>