Skip to content

Commit 8af2285

Browse files
committed
Merge branch 'vincent-and-the-doctor' into cursor/implement-waitlist-hook-with-signal-primitives-3ad1
2 parents 4b79f9a + 5e1f028 commit 8af2285

File tree

763 files changed

+12909
-9181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

763 files changed

+12909
-9181
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
'@clerk/types': minor
3+
'@clerk/shared': minor
4+
'@clerk/astro': patch
5+
'@clerk/backend': patch
6+
'@clerk/chrome-extension': patch
7+
'@clerk/clerk-js': patch
8+
'@clerk/elements': patch
9+
'@clerk/themes': patch
10+
'@clerk/vue': patch
11+
---
12+
13+
Deprecate `@clerk/types` in favor of `@clerk/shared/types`
14+
15+
The `@clerk/types` package is now deprecated. All type definitions have been consolidated and moved to `@clerk/shared/types` to improve consistency across the Clerk ecosystem.
16+
17+
**Backward Compatibility:**
18+
19+
The `@clerk/types` package will remain available and will continue to re-export all types from `@clerk/shared/types` to ensure backward compatibility. Existing applications will continue to work without any immediate breaking changes. However, we strongly recommend migrating to `@clerk/shared/types` as new type definitions and updates will only be added to `@clerk/shared/types` starting with the next major release.
20+
21+
**Migration Steps:**
22+
23+
Please update your imports from `@clerk/types` to `@clerk/shared/types`:
24+
25+
```typescript
26+
// Before
27+
import type { ClerkResource, UserResource } from '@clerk/types';
28+
29+
// After
30+
import type { ClerkResource, UserResource } from '@clerk/shared/types';
31+
```
32+
33+
**What Changed:**
34+
35+
All type definitions including:
36+
- Resource types (User, Organization, Session, etc.)
37+
- API response types
38+
- Configuration types
39+
- Authentication types
40+
- Error types
41+
- And all other shared types
42+
43+
Have been moved from `packages/types/src` to `packages/shared/src/types` and are now exported via `@clerk/shared/types`.
44+
File renamed without changes.
File renamed without changes.

.changeset/large-doors-repeat.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/set-minimum-expo-53.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
'@clerk/expo': major
3+
'@clerk/expo-passkeys': major
4+
'@clerk/shared': major
5+
'@clerk/react': major
6+
'@clerk/localizations': major
7+
---
8+
9+
Drop support for Expo 50, 51 and 52. This release includes two breaking changes:
10+
11+
## 1. Updated Expo peer dependency requirements
12+
13+
**@clerk/clerk-expo**
14+
- **Added** new peer dependency: `expo: >=53 <55`
15+
- The core `expo` package is now explicitly required as a peer dependency
16+
- This ensures compatibility with the Expo SDK version range that supports the features used by Clerk
17+
18+
**@clerk/expo-passkeys**
19+
- **Updated** peer dependency: `expo: >=53 <55` (previously `>=50 <55`)
20+
- Minimum Expo version increased from 50 to 53
21+
- This aligns with the main `@clerk/clerk-expo` package requirements
22+
23+
## 2. Removed legacy subpath exports
24+
25+
The following packages have removed their legacy subpath export mappings:
26+
- `@clerk/clerk-expo`
27+
- `@clerk/shared`
28+
- `@clerk/clerk-react`
29+
- `@clerk/localizations`
30+
31+
**What changed:**
32+
Previously, these packages used a workaround to support subpath imports (e.g., `@clerk/shared/react`, `@clerk/clerk-expo/web`). These legacy exports have been removed in favor of modern package.json `exports` field configuration.
33+
34+
All public APIs remain available through the main package entry points.
35+
36+
37+

.changeset/tame-tips-own.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 65 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ concurrency:
1818
jobs:
1919
# Check triggering actor permissions to prevent PRs from forks accessing secrets by default, preventing them from exfiltrating secrets for malicious purposes
2020
check-permissions:
21-
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
21+
runs-on: "blacksmith-8vcpu-ubuntu-2204"
2222
defaults:
2323
run:
2424
shell: bash
@@ -48,7 +48,7 @@ jobs:
4848
needs: [check-permissions]
4949
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
5050
name: Formatting | Dedupe | Changeset
51-
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
51+
runs-on: "blacksmith-8vcpu-ubuntu-2204"
5252
defaults:
5353
run:
5454
shell: bash
@@ -89,7 +89,7 @@ jobs:
8989
needs: [check-permissions]
9090
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
9191
name: Build Packages
92-
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
92+
runs-on: "blacksmith-8vcpu-ubuntu-2204"
9393
permissions:
9494
contents: read
9595
defaults:
@@ -117,7 +117,7 @@ jobs:
117117
turbo-token: ${{ secrets.TURBO_TOKEN }}
118118

119119
- name: Turbo Build
120-
run: pnpm turbo build $TURBO_ARGS --only
120+
run: pnpm turbo build $TURBO_ARGS --only --filter=!@clerk/elements
121121

122122
- name: Upload Turbo Summary
123123
uses: actions/upload-artifact@v4
@@ -135,7 +135,7 @@ jobs:
135135
permissions:
136136
contents: read
137137
actions: write # needed for actions/upload-artifact
138-
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
138+
runs-on: "blacksmith-8vcpu-ubuntu-2204"
139139
defaults:
140140
run:
141141
shell: bash
@@ -195,7 +195,7 @@ jobs:
195195
permissions:
196196
contents: read
197197
actions: write # needed for actions/upload-artifact
198-
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
198+
runs-on: "blacksmith-8vcpu-ubuntu-2204"
199199
defaults:
200200
run:
201201
shell: bash
@@ -208,10 +208,8 @@ jobs:
208208
fail-fast: true
209209
matrix:
210210
include:
211-
- node-version: 20
212-
test-filter: '--filter=@clerk/astro --filter=@clerk/backend --filter=@clerk/express --filter=@clerk/nextjs --filter=@clerk/react --filter=@clerk/shared --filter=@clerk/tanstack-react-start --filter=@clerk/elements --filter=@clerk/vue --filter=@clerk/nuxt --filter=@clerk/expo'
213211
- node-version: 22
214-
test-filter: '**'
212+
test-filter: "**"
215213

216214
steps:
217215
- name: Checkout Repo
@@ -247,7 +245,7 @@ jobs:
247245
run: |
248246
# Only run Typedoc tests for one matrix version
249247
if [ "${{ matrix.node-version }}" == "22" ]; then
250-
pnpm test:typedoc
248+
pnpm turbo run //#test:typedoc
251249
fi
252250
env:
253251
NODE_VERSION: ${{ matrix.node-version }}
@@ -268,7 +266,7 @@ jobs:
268266
permissions:
269267
contents: read
270268
actions: write # needed for actions/upload-artifact
271-
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
269+
runs-on: "blacksmith-8vcpu-ubuntu-2204"
272270
defaults:
273271
run:
274272
shell: bash
@@ -279,35 +277,40 @@ jobs:
279277
matrix:
280278
test-name:
281279
[
282-
'generic',
283-
'express',
284-
'quickstart',
285-
'ap-flows',
286-
'elements',
287-
'localhost',
288-
'sessions',
289-
'sessions:staging',
290-
'handshake',
291-
'handshake:staging',
292-
'astro',
293-
'expo-web',
294-
'tanstack-react-start',
295-
# 'tanstack-react-router',
296-
'vue',
297-
'nuxt',
298-
'react-router',
299-
'billing',
300-
'machine',
301-
'custom',
280+
"generic",
281+
"express",
282+
"ap-flows",
283+
"localhost",
284+
"sessions",
285+
"sessions:staging",
286+
"handshake",
287+
"handshake:staging",
288+
"astro",
289+
"tanstack-react-start",
290+
"vue",
291+
"nuxt",
292+
"react-router",
293+
"billing",
294+
"machine",
295+
"custom",
302296
]
303-
test-project: ['chrome']
297+
test-project: ["chrome"]
304298
include:
305-
- test-name: 'nextjs'
306-
test-project: 'chrome'
307-
next-version: '14'
308-
- test-name: 'nextjs'
309-
test-project: 'chrome'
310-
next-version: '15'
299+
- test-name: "nextjs"
300+
test-project: "chrome"
301+
next-version: "14"
302+
- test-name: "nextjs"
303+
test-project: "chrome"
304+
next-version: "15"
305+
- test-name: "nextjs"
306+
test-project: "chrome"
307+
next-version: "16"
308+
- test-name: "quickstart"
309+
test-project: "chrome"
310+
next-version: "15"
311+
- test-name: "quickstart"
312+
test-project: "chrome"
313+
next-version: "16"
311314

312315
steps:
313316
- name: Checkout Repo
@@ -325,17 +328,34 @@ jobs:
325328
turbo-token: ${{ secrets.TURBO_TOKEN }}
326329
playwright-enabled: true
327330

331+
- name: Verify jq is installed
332+
shell: bash
333+
run: |
334+
if ! command -v jq &> /dev/null; then
335+
echo "jq not found, installing..."
336+
sudo apt-get update && sudo apt-get install -y jq
337+
fi
338+
jq --version
339+
328340
- name: Task Status
329341
id: task-status
330342
env:
331343
E2E_APP_CLERK_JS_DIR: ${{runner.temp}}
332-
E2E_CLERK_VERSION: 'latest'
344+
E2E_CLERK_VERSION: "latest"
333345
E2E_NEXTJS_VERSION: ${{ matrix.next-version }}
334346
E2E_PROJECT: ${{ matrix.test-project }}
335347
INTEGRATION_INSTANCE_KEYS: ${{ secrets.INTEGRATION_INSTANCE_KEYS }}
336348
run: |
337-
AFFECTED=0
338-
(pnpm turbo-ignore --task=test:integration:${{ matrix.test-name }} --fallback=${{ github.base_ref || 'refs/heads/main' }}) || AFFECTED=1
349+
# Use turbo's built-in --affected flag to detect changes
350+
# This automatically uses GITHUB_BASE_REF in GitHub Actions
351+
TASK_COUNT=$(pnpm turbo run test:integration:${{ matrix.test-name }} --affected --dry=json 2>/dev/null | jq '.tasks | length' 2>/dev/null || echo "0")
352+
353+
if [ "$TASK_COUNT" -gt 0 ]; then
354+
AFFECTED=1
355+
else
356+
AFFECTED=0
357+
fi
358+
339359
echo "affected=${AFFECTED}"
340360
echo "affected=${AFFECTED}" >> $GITHUB_OUTPUT
341361
@@ -374,8 +394,8 @@ jobs:
374394
if: ${{ steps.task-status.outputs.affected == '1' }}
375395
uses: actions/github-script@v7
376396
env:
377-
INTEGRATION_CERTS: '${{secrets.INTEGRATION_CERTS}}'
378-
INTEGRATION_ROOT_CA: '${{secrets.INTEGRATION_ROOT_CA}}'
397+
INTEGRATION_CERTS: "${{secrets.INTEGRATION_CERTS}}"
398+
INTEGRATION_ROOT_CA: "${{secrets.INTEGRATION_ROOT_CA}}"
379399
with:
380400
script: |
381401
const fs = require('fs');
@@ -400,7 +420,7 @@ jobs:
400420
run: pnpm turbo test:integration:${{ matrix.test-name }} $TURBO_ARGS
401421
env:
402422
E2E_APP_CLERK_JS_DIR: ${{runner.temp}}
403-
E2E_CLERK_VERSION: 'latest'
423+
E2E_CLERK_VERSION: "latest"
404424
E2E_NEXTJS_VERSION: ${{ matrix.next-version }}
405425
E2E_PROJECT: ${{ matrix.test-project }}
406426
E2E_CLERK_ENCRYPTION_KEY: ${{ matrix.clerk-encryption-key }}
@@ -420,7 +440,7 @@ jobs:
420440
name: Publish with pkg-pr-new
421441
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }}
422442
needs: [check-permissions, build-packages]
423-
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
443+
runs-on: "blacksmith-8vcpu-ubuntu-2204"
424444
defaults:
425445
run:
426446
shell: bash

.typedoc/__tests__/file-structure.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ describe('Typedoc output', () => {
3636
"nextjs",
3737
"react",
3838
"shared",
39-
"types",
4039
]
4140
`);
4241
});

.typedoc/custom-theme.mjs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,22 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext {
7979
if (paramExtensionTag) {
8080
const stuff = this.helpers.getCommentParts(paramExtensionTag.content);
8181

82-
// Find the index of the item that contains '## Returns'
83-
const index = splitOutput.findIndex(item => item.includes('## Returns'));
84-
85-
// If the index is found, insert the stuff before it
86-
if (index !== -1) {
87-
splitOutput.splice(index, 0, stuff);
82+
// Find the index of the item that contains '## Parameters'
83+
const parametersIndex = splitOutput.findIndex(item => item.includes('## Parameters'));
84+
85+
if (parametersIndex !== -1) {
86+
// Find the immediate next heading after '## Parameters'
87+
const nextHeadingIndex = splitOutput.findIndex((item, index) => {
88+
// Skip the items before the parameters
89+
if (index <= parametersIndex) return false;
90+
// Find the next heading
91+
return item.startsWith('##') || item.startsWith('\n##');
92+
});
93+
94+
// Insert the stuff before the next heading
95+
// (or at the end of the entire page if no heading found)
96+
const insertIndex = nextHeadingIndex !== -1 ? nextHeadingIndex : splitOutput.length;
97+
splitOutput.splice(insertIndex, 0, stuff);
8898
}
8999
}
90100

eslint.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ export default tseslint.config([
120120
'packages/backend/src/runtime/**/*',
121121
'packages/clerk-js/rspack.config.js',
122122
'packages/shared/src/compiled/path-to-regexp/index.js',
123+
'packages/shared/tsdown.config.mjs',
123124
],
124125
},
125126
{

0 commit comments

Comments
 (0)