Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0bca64a
fix: workflows failing on contributor forks (#563)
gabrielmfern Aug 8, 2025
ee0d2a1
feat: rate limiting information for all responses (#562)
gabrielmfern Aug 14, 2025
2988eda
feat: use typescript to ensure there's email or id for contacts.get (…
gabrielmfern Aug 15, 2025
8fa7977
chore: bump to 6.1.0-canary.0 (#568)
gabrielmfern Aug 19, 2025
bc6392e
feat: discussion/issue templates (#579)
gabrielmfern Aug 21, 2025
a2024a3
chore: use vitest 😼 (#580)
gabrielmfern Aug 21, 2025
6f30f45
chore(deps): update pnpm to v10.15.0 (#570)
renovate[bot] Aug 21, 2025
12137de
chore(deps): update dependency tsup to v8 (#272)
renovate[bot] Aug 21, 2025
8867954
chore: temporarily remove docker container credentials (#583)
gabrielmfern Aug 21, 2025
25372d1
chore: document the response object in the examples (#471)
mcwhittemore Aug 21, 2025
7d74ab3
chore(deps): upgrade biome (#540)
emiliosheinz Aug 21, 2025
cb55cc5
fix: type issues (#585)
gabrielmfern Aug 22, 2025
546af97
chore: improved workflows (#584)
gabrielmfern Aug 22, 2025
a8fb086
chore(deps): update dependency typescript to v5.9.2 (#553)
renovate[bot] Aug 22, 2025
67feede
chore: lint (#591)
gabrielmfern Aug 22, 2025
8666e27
feat: pkg-pr-new workflow (#581)
gabrielmfern Aug 22, 2025
e2700f7
chore(deps): update dependency @types/react to v19.1.10 (#518)
renovate[bot] Aug 22, 2025
df6de37
chore(deps): update tj-actions/changed-files digest to 2036da1 (#593)
renovate[bot] Aug 22, 2025
8c72b7c
chore(deps): update node.js to v22 (#442)
renovate[bot] Aug 22, 2025
de2aed2
fix: preview releases workflow (#595)
gabrielmfern Aug 25, 2025
308d251
feat: react option for updating broadcasts (#510)
hufftheweevil Aug 25, 2025
6899036
fix: wrong syntax in rendering template note (#604)
vieiralucas Aug 26, 2025
e9c02bf
chore: bump to 6.1.0-canary.1 (#603)
gabrielmfern Aug 27, 2025
722feb3
feat: adds permissive mode for batch API (#599)
pedro-stramantinoli Aug 29, 2025
59c9e71
fix: changes headers name to keep standard (#608)
pedro-stramantinoli Aug 29, 2025
16f6884
feat: add emails.list method (#609)
vieiralucas Aug 31, 2025
b0055c4
fix: links in js doc comments on rate limiting API (#612)
gabrielmfern Sep 1, 2025
6a794d1
feat: add async iterator support to emails.list method
vieiralucas Aug 31, 2025
4cc8f42
feat: make PaginatedRequest itself be a Promise and a AsyncIterator
vieiralucas Sep 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/DISCUSSION_TEMPLATE/help.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
body:
- type: textarea
attributes:
label: Summary
description: What do you need help with?
validations:
required: true
- type: textarea
attributes:
label: Additional information
description: Any code snippets, error messages, or dependency details that may be related?
render: js
validations:
required: false
- type: input
attributes:
label: Example
description: A link to a minimal reproduction is helpful for collaborative debugging!
validations:
required: false
23 changes: 23 additions & 0 deletions .github/DISCUSSION_TEMPLATE/ideas.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
body:
- type: textarea
attributes:
label: Goals
description: Short list of what the feature request aims to address?
value: |
1.
2.
3.
validations:
required: true
- type: textarea
attributes:
label: Background
description: Discuss prior art, why do you think this feature is needed? Are there current alternatives?
validations:
required: true
- type: textarea
attributes:
label: Proposal
description: How should this feature be implemented? Are you interested in contributing?
validations:
required: true
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/1.bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Bug Report
description: Create a bug report for the Node SDK
labels: ["Type: Bug"]
body:
- type: textarea
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: input
attributes:
label: Link to the code that reproduces this issue
description: |
A link to a GitHub repository minimal reproduction. A minimal reproduction code is really helpful to understand the issue.
validations:
required: true
- type: textarea
attributes:
label: To Reproduce
description: Steps to reproduce the behavior, please provide a clear description of how to reproduce the issue, based on the linked minimal reproduction. Screenshots can be provided in the issue body below. If using code blocks, make sure that [syntax highlighting is correct](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks#syntax-highlighting) and double check that the rendered preview is not broken.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: markdown
attributes:
value: Before posting the issue go through the steps you've written down to make sure the steps provided are detailed and clear.
- type: markdown
attributes:
value: Contributors should be able to follow the steps provided in order to reproduce the bug.
- type: input
attributes:
label: What's your node version? (if relevant)
description: "Please specify the exact version."
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Ask a question
url: https://github.com/resend/resend-node/discussions
about: Ask questions and discuss with other community members
- name: Feature request
url: https://github.com/resend/resend-node/discussions/new?category=ideas
about: Feature requests should be opened as discussions
27 changes: 27 additions & 0 deletions .github/scripts/check-pinned-dependencies.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import fs from 'node:fs';

const pkg = JSON.parse(await fs.promises.readFile('package.json', 'utf8'));
const errors = [];

function isPinned(version) {
return /^\d+\.\d+\.\d+(-canary\.\d+)?$/.test(version);
}

for (const [dep, version] of Object.entries(pkg.dependencies || {})) {
if (!isPinned(version)) {
errors.push(`Dependency "${dep}" is not pinned: "${version}"`);
}
}

for (const [dep, version] of Object.entries(pkg.devDependencies || {})) {
if (!isPinned(version)) {
errors.push(`Dev dependency "${dep}" is not pinned: "${version}"`);
}
}

if (errors.length > 0) {
console.error(`\n${errors.join('\n')}\n`);
process.exit(1);
} else {
console.log('All dependencies are pinned.');
}
20 changes: 9 additions & 11 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,22 @@ on:
branches:
- main
pull_request:
permissions:
contents: read
pull-requests: read
jobs:
lint:
runs-on: buildjet-4vcpu-ubuntu-2204
container:
image: node:20
credentials:
username: ${{ vars.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_API_KEY }}
image: node:22
# credentials:
# username: ${{ vars.DOCKER_HUB_USERNAME || '' }}
# password: ${{ secrets.DOCKER_HUB_API_KEY || '' }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
- name: pnpm setup
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: "pnpm"
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
- name: Install packages
run: pnpm install
- name: Run Lint
Expand Down
42 changes: 9 additions & 33 deletions .github/workflows/pin-dependencies-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,44 +4,20 @@ on:
branches:
- main
pull_request:
permissions:
contents: read
pull-requests: read
jobs:
pin-dependencies-check:
runs-on: buildjet-4vcpu-ubuntu-2204
container:
image: node:20
credentials:
username: ${{ vars.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_API_KEY }}
image: node:22
# credentials:
# username: ${{ vars.DOCKER_HUB_USERNAME || '' }}
# password: ${{ secrets.DOCKER_HUB_API_KEY || '' }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
- name: Check for pinned dependencies
run: |
node -e '
const fs = require("fs");
const pkg = JSON.parse(fs.readFileSync("package.json", "utf8"));
const errors = [];

function isPinned(version) {
return /^\d+\.\d+\.\d+(-canary\.\d+)?$/.test(version);
}

for (const [dep, version] of Object.entries(pkg.dependencies || {})) {
if (!isPinned(version)) {
errors.push(`Dependency "${dep}" is not pinned: "${version}"`);
}
}

for (const [dep, version] of Object.entries(pkg.devDependencies || {})) {
if (!isPinned(version)) {
errors.push(`Dev dependency "${dep}" is not pinned: "${version}"`);
}
}

if (errors.length > 0) {
console.error(`\n${errors.join("\n")}\n`);
process.exit(1);
} else {
console.log("All dependencies are pinned.");
}
'
node .github/scripts/check-pinned-dependencies.mjs
12 changes: 7 additions & 5 deletions .github/workflows/pr-title-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,19 @@ name: PR Title Check
on:
pull_request:
types: [opened, edited, synchronize]
permissions:
pull-requests: read
jobs:
pr-title-check:
runs-on: buildjet-4vcpu-ubuntu-2204
container:
image: node:20
credentials:
username: ${{ vars.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_API_KEY }}
image: node:22
# credentials:
# username: ${{ vars.DOCKER_HUB_USERNAME || '' }}
# password: ${{ secrets.DOCKER_HUB_API_KEY || '' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
- name: Run PR title check
run: |
node .github/scripts/pr-title-check.js
40 changes: 40 additions & 0 deletions .github/workflows/preview-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

name: Preview Release
on:
push:
branches:
- canary
- preview-*
pull_request:
permissions:
contents: read
pull-requests: write
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
preview-release:
runs-on: buildjet-4vcpu-ubuntu-2204
permissions:
contents: write
pull-requests: write
container:
image: node:22
steps:
- name: Checkout
uses: actions/checkout@v4
- name: pnpm setup
uses: pnpm/action-setup@v4
- name: Install packages
run: pnpm install --frozen-lockfile
- name: Run Build
run: pnpm build
- name: Find changed files
id: changed_files
if: github.event_name == 'pull_request'
uses: tj-actions/changed-files@2036da178f85576f1940fedb74bb93a36cd89ab7
with:
files: src/**,pnpm-lock.yaml
dir_names: true
dir_names_max_depth: 2
- name: Publish changed packages to pkg.pr.new
if: github.event_name == 'push' || steps.changed_files.outputs.all_changed_and_modified_files != ''
run: pnpm dlx pkg-pr-new publish
23 changes: 10 additions & 13 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,24 @@ on:
push:
branches:
- main
- canary
pull_request:
permissions:
contents: read
pull-requests: read
jobs:
tests:
runs-on: buildjet-4vcpu-ubuntu-2204
container:
image: node:20
credentials:
username: ${{ vars.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_API_KEY }}
image: node:22
# credentials:
# username: ${{ vars.DOCKER_HUB_USERNAME || '' }}
# password: ${{ secrets.DOCKER_HUB_API_KEY || '' }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
- name: pnpm setup
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: "pnpm"
- name: Install Doppler CLI
uses: dopplerhq/cli-action@v3
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
- name: Install packages
run: pnpm install
- name: Run Tests
Expand Down
20 changes: 15 additions & 5 deletions biome.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@
// only run on changed files by default (faster, but happy to remove)
"defaultBranch": "main"
},
"organizeImports": {
"enabled": true
},
"assist": { "actions": { "source": { "organizeImports": "on" } } },
"formatter": {
"indentStyle": "space",
"indentWidth": 2,
Expand All @@ -24,10 +22,22 @@
"linter": {
"enabled": true,
"rules": {
"recommended": true
"recommended": true,
"style": {
"noParameterAssign": "error",
"useAsConstAssertion": "error",
"useDefaultParameterLast": "error",
"useEnumInitializers": "error",
"useSelfClosingElements": "error",
"useSingleVarDeclarator": "error",
"noUnusedTemplateLiteral": "error",
"useNumberNamespace": "error",
"noInferrableTypes": "error",
"noUselessElse": "error"
}
}
},
"files": {
"ignore": ["pnpm-lock.yaml"]
"includes": ["**", "!**/pnpm-lock.yaml", "!dist"]
}
}
13 changes: 0 additions & 13 deletions jest.config.ts

This file was deleted.

3 changes: 0 additions & 3 deletions jest.setup.ts

This file was deleted.

Loading