diff --git a/.github/DISCUSSION_TEMPLATE/rfcs.yml b/.github/DISCUSSION_TEMPLATE/rfcs-request-for-comments.yml
similarity index 97%
rename from .github/DISCUSSION_TEMPLATE/rfcs.yml
rename to .github/DISCUSSION_TEMPLATE/rfcs-request-for-comments.yml
index 98ed1f9c0a..fd933670af 100644
--- a/.github/DISCUSSION_TEMPLATE/rfcs.yml
+++ b/.github/DISCUSSION_TEMPLATE/rfcs-request-for-comments.yml
@@ -25,6 +25,9 @@ body:
- JMESPath
- Batch Processing
- Validation
+ - Kafka
+ - Data Masking
+ - Signer
- Commons
- Automation
- Governance
@@ -109,4 +112,4 @@ body:
attributes:
label: Future readers
description: Please not edit this field
- value: "Please react with 👍 and your use case to help us understand customer demand."
\ No newline at end of file
+ value: "Please react with 👍 and your use case to help us understand customer demand."
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 19d952d231..0a290efe41 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -1,7 +1,8 @@
name: Bug report
description: Report a reproducible bug to help us improve
title: "Bug:
"
-labels: ["bug", "triage"]
+labels: ["triage"]
+type: Bug
body:
- type: markdown
attributes:
diff --git a/.github/ISSUE_TEMPLATE/documentation_improvements.yml b/.github/ISSUE_TEMPLATE/documentation_improvements.yml
index 63aceda5f6..1a7528d391 100644
--- a/.github/ISSUE_TEMPLATE/documentation_improvements.yml
+++ b/.github/ISSUE_TEMPLATE/documentation_improvements.yml
@@ -1,7 +1,8 @@
name: Documentation improvements
description: Suggest a documentation update to improve everyone's experience
title: "Docs: "
-labels: ["documentation", "triage"]
+labels: ["triage"]
+type: Docs
body:
- type: markdown
attributes:
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index 7042148195..551fddac70 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -1,7 +1,8 @@
name: Feature request
description: Suggest an idea for Powertools for AWS Lambda
title: "Feature request: "
-labels: ["feature-request", "triage"]
+labels: ["triage"]
+type: Feature
body:
- type: markdown
attributes:
diff --git a/.github/ISSUE_TEMPLATE/maintenance.yml b/.github/ISSUE_TEMPLATE/maintenance.yml
index 60ac59cfb8..597588b79b 100644
--- a/.github/ISSUE_TEMPLATE/maintenance.yml
+++ b/.github/ISSUE_TEMPLATE/maintenance.yml
@@ -1,7 +1,8 @@
name: Maintenance
description: Suggest an activity to help address tech debt, governance, and anything internal
title: "Maintenance: "
-labels: ["internal", "triage"]
+labels: ["triage"]
+type: Maintenance
body:
- type: markdown
attributes:
diff --git a/.github/workflows/on_pr_updates.yml b/.github/workflows/on_pr_updates.yml
index acd301f676..42767998cb 100644
--- a/.github/workflows/on_pr_updates.yml
+++ b/.github/workflows/on_pr_updates.yml
@@ -12,8 +12,8 @@ name: PR requirements
# NOTES
#
-# PR requirements are checked async in on_opened_pr.yml and enforced here synchronously
-# due to limitations in GH API.
+# Organization-level checks evaluate PR requirements asynchronously; this workflow enforces
+# the resulting do-not-merge label synchronously due to limitations in the GitHub API.
on:
pull_request:
@@ -32,4 +32,4 @@ jobs:
if: contains(github.event.pull_request.labels.*.name, 'do-not-merge')
run: |
echo "This PR does not meet minimum requirements (check PR comments)."
- exit 1
\ No newline at end of file
+ exit 1
diff --git a/.github/workflows/reusable-run-linting-check-and-unit-tests.yml b/.github/workflows/reusable-run-linting-check-and-unit-tests.yml
index 6e1cfce6b9..04d37a5f2c 100644
--- a/.github/workflows/reusable-run-linting-check-and-unit-tests.yml
+++ b/.github/workflows/reusable-run-linting-check-and-unit-tests.yml
@@ -59,6 +59,7 @@ jobs:
strategy:
matrix:
version: [22, 24]
+ # packages/testing is private and intentionally excluded from this publishable package matrix.
workspace: ${{ fromJSON(needs.resolve-workspaces.outputs.workspaces) }}
fail-fast: false
steps:
diff --git a/docs/features/metrics.md b/docs/features/metrics.md
index 5e50ad3a65..a02ce290a3 100644
--- a/docs/features/metrics.md
+++ b/docs/features/metrics.md
@@ -382,7 +382,7 @@ If it's a cold start invocation, this feature will:
This has the advantage of keeping cold start metric separate from your application metrics, where you might have unrelated dimensions.
-!!! info "We do not emit 0 as a value for the ColdStart metric for cost-efficiency reasons. [Let us know](https://github.com/aws-powertools/powertools-lambda-typescript/issues/new?assignees=&labels=feature-request%2C+triage&template=feature_request.md&title=) if you'd prefer a flag to override it."
+!!! info "We do not emit 0 as a value for the ColdStart metric for cost-efficiency reasons. [Let us know](https://github.com/aws-powertools/powertools-lambda-typescript/issues/new?assignees=&labels=triage&template=feature_request.yml&title=) if you'd prefer a flag to override it."
#### Setting function name
diff --git a/packages/signer/package.json b/packages/signer/package.json
index ffa62bce6f..029b0ebd11 100644
--- a/packages/signer/package.json
+++ b/packages/signer/package.json
@@ -13,7 +13,7 @@
"test": "vitest --run tests/unit",
"test:unit": "vitest --run tests/unit",
"test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'",
- "test:unit:types": "echo 'Not Implemented'",
+ "test:unit:types": "vitest --run tests/types --typecheck",
"test:unit:watch": "vitest tests/unit",
"test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e",
"test:e2e:nodejs24x": "RUNTIME=nodejs24x vitest --run tests/e2e",
diff --git a/packages/signer/tests/types/signer.test-d.ts b/packages/signer/tests/types/signer.test-d.ts
new file mode 100644
index 0000000000..9595a88746
--- /dev/null
+++ b/packages/signer/tests/types/signer.test-d.ts
@@ -0,0 +1,34 @@
+import { describe, expectTypeOf, it } from 'vitest';
+import { createSignedFetcher } from '../../src/fetch.js';
+import { SigV4Signer } from '../../src/sigv4.js';
+import type { Signer } from '../../src/types/index.js';
+
+describe('Signer type tests', () => {
+ it('creates a fetch-compatible function from a signer', () => {
+ // Prepare
+ const signer: Signer = {
+ sign: async (input, init) => new Request(input, init),
+ };
+
+ // Act
+ const signedFetch = createSignedFetcher(signer);
+
+ // Assess
+ expectTypeOf(signedFetch).toEqualTypeOf();
+ });
+
+ it('implements the signer interface with SigV4Signer', () => {
+ // Prepare & Act
+ const signer = new SigV4Signer({
+ service: 'execute-api',
+ region: 'us-east-1',
+ credentials: {
+ accessKeyId: 'access-key-id',
+ secretAccessKey: 'secret-access-key',
+ },
+ });
+
+ // Assess
+ expectTypeOf(signer).toMatchTypeOf();
+ });
+});