cdk-serverless 2.22.5 → 3.1.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.
Files changed (42) hide show
  1. package/.agents/tasks/task-api-gateway-authorizer/2025-01-20-120000-review.md +79 -0
  2. package/.agents/tasks/task-api-gateway-authorizer/context.json +25 -0
  3. package/.agents/tasks/task-api-gateway-authorizer/features/FEAT-001.json +22 -0
  4. package/.agents/tasks/task-api-gateway-authorizer/features/FEAT-002.json +31 -0
  5. package/.agents/tasks/task-api-gateway-authorizer/features/FEAT-003.json +25 -0
  6. package/.agents/tasks/task-api-gateway-authorizer/features/FEAT-004.json +24 -0
  7. package/.agents/tasks/task-api-gateway-authorizer/features/FEAT-005.json +22 -0
  8. package/.agents/tasks/task-api-gateway-authorizer/task.json +14 -0
  9. package/README.md +64 -0
  10. package/docs/constructs/assets/hierarchy.js +1 -1
  11. package/docs/constructs/assets/highlight.css +4 -4
  12. package/docs/constructs/assets/search.js +1 -1
  13. package/docs/constructs/classes/LambdaFunction.html +8 -8
  14. package/docs/constructs/classes/RestApi.html +22 -5
  15. package/docs/constructs/classes/SingleTableDatastore.html +1 -1
  16. package/docs/constructs/classes/Workflow.html +1 -1
  17. package/docs/constructs/hierarchy.html +1 -1
  18. package/docs/constructs/index.html +45 -1
  19. package/docs/constructs/interfaces/RestApiProps.html +39 -14
  20. package/docs/lambda/assets/highlight.css +9 -2
  21. package/docs/lambda/classes/errors.BadRequestError.html +1 -1
  22. package/docs/lambda/classes/errors.ForbiddenError.html +1 -1
  23. package/docs/lambda/classes/errors.HttpError.html +1 -1
  24. package/docs/lambda/classes/errors.NotFoundError.html +1 -1
  25. package/docs/lambda/classes/errors.UnauthenticatedError.html +1 -1
  26. package/docs/lambda/index.html +45 -1
  27. package/docs/projen/assets/highlight.css +13 -6
  28. package/docs/projen/index.html +45 -1
  29. package/docs/projen/interfaces/ServerlessProjectOptions.html +4 -4
  30. package/lib/constructs/rest-api.d.ts +88 -0
  31. package/lib/constructs/rest-api.js +194 -3
  32. package/lib/lambda/auth.js +10 -4
  33. package/lib/lambda/rest-api.jwt-authorizer.d.ts +1 -0
  34. package/lib/lambda/rest-api.jwt-authorizer.js +154 -0
  35. package/lib/tests/http-client.d.ts +48 -0
  36. package/lib/tests/http-client.js +82 -0
  37. package/lib/tests/index.d.ts +1 -0
  38. package/lib/tests/index.js +2 -1
  39. package/lib/tests/integ-test-util.d.ts +4 -3
  40. package/lib/tests/integ-test-util.js +14 -27
  41. package/package.json +1 -2
  42. package/specs/remove-axios-dependency.md +240 -0
@@ -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>
@@ -31,7 +31,7 @@ above <code>constructorOpt</code>, including <code>constructorOpt</code>, will b
31
31
  generated stack trace.</p>
32
32
  <p>The <code>constructorOpt</code> argument is useful for hiding implementation
33
33
  details of error generation from the user. For instance:</p>
34
- <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>
34
+ <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>
35
35
  </code><button type="button">Copy</button></pre>
36
36
 
37
37
  </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 Error.captureStackTrace</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>
@@ -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>
@@ -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,12 +15,14 @@
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: #CD3131;
21
- --dark-hl-9: #F44747;
22
- --light-hl-10: #000000;
23
- --dark-hl-10: #C8C8C8;
18
+ --light-hl-8: #267F99;
19
+ --dark-hl-8: #4EC9B0;
20
+ --light-hl-9: #098658;
21
+ --dark-hl-9: #B5CEA8;
22
+ --light-hl-10: #CD3131;
23
+ --dark-hl-10: #F44747;
24
+ --light-hl-11: #000000;
25
+ --dark-hl-11: #C8C8C8;
24
26
  --light-code-background: #FFFFFF;
25
27
  --dark-code-background: #1E1E1E;
26
28
  }
@@ -37,6 +39,7 @@
37
39
  --hl-8: var(--light-hl-8);
38
40
  --hl-9: var(--light-hl-9);
39
41
  --hl-10: var(--light-hl-10);
42
+ --hl-11: var(--light-hl-11);
40
43
  --code-background: var(--light-code-background);
41
44
  } }
42
45
 
@@ -52,6 +55,7 @@
52
55
  --hl-8: var(--dark-hl-8);
53
56
  --hl-9: var(--dark-hl-9);
54
57
  --hl-10: var(--dark-hl-10);
58
+ --hl-11: var(--dark-hl-11);
55
59
  --code-background: var(--dark-code-background);
56
60
  } }
57
61
 
@@ -67,6 +71,7 @@
67
71
  --hl-8: var(--light-hl-8);
68
72
  --hl-9: var(--light-hl-9);
69
73
  --hl-10: var(--light-hl-10);
74
+ --hl-11: var(--light-hl-11);
70
75
  --code-background: var(--light-code-background);
71
76
  }
72
77
 
@@ -82,6 +87,7 @@
82
87
  --hl-8: var(--dark-hl-8);
83
88
  --hl-9: var(--dark-hl-9);
84
89
  --hl-10: var(--dark-hl-10);
90
+ --hl-11: var(--dark-hl-11);
85
91
  --code-background: var(--dark-code-background);
86
92
  }
87
93
 
@@ -96,4 +102,5 @@
96
102
  .hl-8 { color: var(--hl-8); }
97
103
  .hl-9 { color: var(--hl-9); }
98
104
  .hl-10 { color: var(--hl-10); }
105
+ .hl-11 { color: var(--hl-11); }
99
106
  pre, code { background: var(--code-background); }
@@ -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>