feat(react-email): Proper error feedback for when there is rate limiting #3456
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: rsnd | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
format: | |
runs-on: buildjet-4vcpu-ubuntu-2204 | |
container: | |
image: node:18 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Enable Corepack | |
id: pnpm-setup | |
run: | | |
corepack enable | |
corepack prepare pnpm@latest --activate | |
pnpm config set script-shell "/usr/bin/bash" | |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" | |
- name: pnpm Cache | |
uses: buildjet/cache@v3 | |
with: | |
path: ${{ steps.pnpm-setup.outputs.pnpm_cache_dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install packages | |
run: pnpm install --frozen-lockfile | |
- name: Run Format Check | |
run: pnpm format:check | |
test: | |
runs-on: buildjet-4vcpu-ubuntu-2204 | |
container: | |
image: node:18 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Enable Corepack | |
id: pnpm-setup | |
run: | | |
corepack enable | |
corepack prepare pnpm@latest --activate | |
pnpm config set script-shell "/usr/bin/bash" | |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" | |
- name: pnpm Cache | |
uses: buildjet/cache@v3 | |
with: | |
path: ${{ steps.pnpm-setup.outputs.pnpm_cache_dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install packages | |
run: pnpm install --frozen-lockfile | |
- name: Run Build | |
run: pnpm build | |
- name: Run Tests | |
run: pnpm test | |
lint: | |
runs-on: buildjet-4vcpu-ubuntu-2204 | |
container: | |
image: node:18 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Enable Corepack | |
id: pnpm-setup | |
run: | | |
corepack enable | |
corepack prepare pnpm@latest --activate | |
pnpm config set script-shell "/usr/bin/bash" | |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" | |
- name: pnpm Cache | |
uses: buildjet/cache@v3 | |
with: | |
path: ${{ steps.pnpm-setup.outputs.pnpm_cache_dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install packages | |
run: pnpm install --frozen-lockfile | |
- name: Run Build | |
run: pnpm build | |
- name: Run Lint | |
run: pnpm lint | |
build: | |
runs-on: buildjet-4vcpu-ubuntu-2204 | |
container: | |
image: node:18 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Enable Corepack | |
id: pnpm-setup | |
run: | | |
corepack enable | |
corepack prepare pnpm@latest --activate | |
pnpm config set script-shell "/usr/bin/bash" | |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" | |
- name: pnpm Cache | |
uses: buildjet/cache@v3 | |
with: | |
path: ${{ steps.pnpm-setup.outputs.pnpm_cache_dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install packages | |
run: pnpm install --frozen-lockfile | |
- name: Run Build | |
run: pnpm build | |
dependencies: | |
runs-on: buildjet-4vcpu-ubuntu-2204 | |
container: | |
image: node:18 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- 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) { | |
if (version.startsWith("workspace:")) { | |
return true; | |
} | |
if (version.startsWith("npm:")) { | |
return true; | |
} | |
return /^\d+\.\d+\.\d+$|^[a-z]+:[a-z]+@\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."); | |
} | |
' |