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: <TITLE>" -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: <TITLE>" -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: <TITLE>" -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<typeof fetch>(); + }); + + 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<Signer>(); + }); +});