Skip to content

Commit 5340bba

Browse files
authored
Merge branch 'main' into renovate/express-dev-minor
2 parents 993a762 + eae7c45 commit 5340bba

358 files changed

Lines changed: 13281 additions & 1456 deletions

File tree

Some content is hidden

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

.changeset/clean-chairs-go.md

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

.changeset/config.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,15 @@
88
],
99
"commit": false,
1010
"ignore": [],
11-
"fixed": [],
11+
"fixed": [
12+
[
13+
"@clerk/electron-passkeys",
14+
"@clerk/electron-passkeys-darwin-arm64",
15+
"@clerk/electron-passkeys-darwin-x64",
16+
"@clerk/electron-passkeys-win32-arm64-msvc",
17+
"@clerk/electron-passkeys-win32-x64-msvc"
18+
]
19+
],
1220
"linked": [],
1321
"access": "public",
1422
"baseBranch": "origin/main",

.changeset/nine-lies-eat.md

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

.claude/settings.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,17 @@
2323
"Bash(cat secrets/**:*)",
2424
"Bash(cat **/.keys.json:*)"
2525
]
26+
},
27+
"hooks": {
28+
"SessionStart": [
29+
{
30+
"hooks": [
31+
{
32+
"type": "command",
33+
"command": "echo '{\"hookSpecificOutput\":{\"hookEventName\":\"SessionStart\",\"additionalContext\":\"This is the clerk/javascript SDK monorepo. A project skill named clerk-monorepo documents the repo setup, the pnpm + turbo dev loop, the package map, and the hard rules for changesets, conventional commits, and PRs. Invoke it via the Skill tool (skill: clerk-monorepo) before building, testing, committing, changing any package, or opening a PR in this repo.\"}}'"
34+
}
35+
]
36+
}
37+
]
2638
}
2739
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
name: Electron Passkeys Native Build
2+
3+
on:
4+
workflow_dispatch:
5+
6+
concurrency:
7+
group: electron-passkeys-${{ github.head_ref || github.ref }}
8+
cancel-in-progress: true
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
build:
15+
name: Build ${{ matrix.settings.target }}
16+
runs-on: ${{ matrix.settings.host }}
17+
timeout-minutes: 30
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
settings:
22+
- host: macos-14
23+
target: aarch64-apple-darwin
24+
- host: macos-14
25+
target: x86_64-apple-darwin
26+
- host: windows-latest
27+
target: x86_64-pc-windows-msvc
28+
- host: windows-latest
29+
target: aarch64-pc-windows-msvc
30+
defaults:
31+
run:
32+
working-directory: packages/electron-passkeys
33+
steps:
34+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
35+
with:
36+
persist-credentials: false
37+
38+
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
39+
with:
40+
node-version: 24
41+
42+
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
43+
44+
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
45+
with:
46+
toolchain: stable
47+
targets: ${{ matrix.settings.target }}
48+
49+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
50+
with:
51+
workspaces: packages/electron-passkeys
52+
53+
- name: Install dependencies
54+
run: pnpm install --filter @clerk/electron-passkeys... --frozen-lockfile --ignore-scripts
55+
working-directory: .
56+
57+
- name: Build native module
58+
run: pnpm build:native --target ${{ matrix.settings.target }}
59+
60+
- name: Smoke test (host-native targets only)
61+
if: matrix.settings.target == 'aarch64-apple-darwin' || matrix.settings.target == 'x86_64-pc-windows-msvc'
62+
run: node -e "const m = require('./index.js'); console.log('isAvailable:', m.isAvailable(), 'capabilities:', JSON.stringify(m.capabilities())); if (!m.isAvailable()) throw new Error('the loader did not find the freshly built native binary');"
63+
64+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
65+
with:
66+
name: bindings-${{ matrix.settings.target }}
67+
path: packages/electron-passkeys/electron-passkeys.*.node
68+
if-no-files-found: error
69+
70+
package:
71+
name: Assemble platform packages
72+
needs: build
73+
runs-on: blacksmith-8vcpu-ubuntu-2204
74+
timeout-minutes: 10
75+
defaults:
76+
run:
77+
working-directory: packages/electron-passkeys
78+
steps:
79+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
80+
with:
81+
persist-credentials: false
82+
83+
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
84+
with:
85+
node-version: 24
86+
87+
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
88+
89+
- name: Install dependencies
90+
run: pnpm install --filter @clerk/electron-passkeys... --frozen-lockfile --ignore-scripts
91+
working-directory: .
92+
93+
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
94+
with:
95+
path: packages/electron-passkeys/artifacts
96+
97+
- name: Move binaries into per-platform npm packages
98+
run: pnpm artifacts
99+
100+
- name: Verify every platform package contains its binary
101+
run: node scripts/check-electron-passkeys-binaries.mjs packages/electron-passkeys/npm
102+
working-directory: .
103+
104+
- name: Upload assembled platform binaries
105+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
106+
with:
107+
name: electron-passkeys-npm
108+
path: packages/electron-passkeys/npm/**/*.node
109+
if-no-files-found: error
110+
retention-days: 90
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
name: 'Expo native build (@clerk/expo)'
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened, ready_for_review]
6+
branches:
7+
- main
8+
paths:
9+
- '.github/workflows/expo-native-build.yml'
10+
- 'integration/templates/expo-native/**'
11+
- 'packages/expo/**'
12+
workflow_dispatch:
13+
14+
permissions:
15+
contents: read
16+
17+
concurrency:
18+
group: expo-native-build-${{ github.head_ref || github.ref }}
19+
cancel-in-progress: true
20+
21+
env:
22+
FIXTURE_DIR: integration/templates/expo-native
23+
FIXTURE_PUBLISHABLE_KEY: pk_test_ZHVtbXkuY2xlcmsuYWNjb3VudHMuZGV2JA
24+
SDK_PACK_DIR: /tmp/clerk-expo-pack
25+
26+
jobs:
27+
native-build:
28+
if: ${{ github.head_ref != 'changeset-release/main' }}
29+
name: Expo ${{ matrix.expo-sdk }} / ${{ matrix.platform }}
30+
runs-on: ${{ matrix.runner }}
31+
timeout-minutes: 45
32+
strategy:
33+
fail-fast: false
34+
matrix:
35+
include:
36+
- expo-sdk: 54
37+
platform: android
38+
runner: blacksmith-8vcpu-ubuntu-2204
39+
- expo-sdk: 54
40+
platform: ios
41+
runner: blacksmith-6vcpu-macos-26
42+
- expo-sdk: 55
43+
platform: android
44+
runner: blacksmith-8vcpu-ubuntu-2204
45+
- expo-sdk: 55
46+
platform: ios
47+
runner: blacksmith-6vcpu-macos-26
48+
- expo-sdk: 56
49+
platform: android
50+
runner: blacksmith-8vcpu-ubuntu-2204
51+
- expo-sdk: 56
52+
platform: ios
53+
runner: blacksmith-6vcpu-macos-26
54+
55+
steps:
56+
- name: Checkout repo
57+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
58+
with:
59+
persist-credentials: false
60+
61+
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
62+
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
63+
with:
64+
node-version: 24.15.0
65+
cache: pnpm
66+
67+
- name: Install monorepo dependencies
68+
run: pnpm install --frozen-lockfile
69+
70+
- name: Build and pack @clerk/expo
71+
run: |
72+
pnpm --filter @clerk/expo... build
73+
mkdir -p "$SDK_PACK_DIR"
74+
pnpm --filter @clerk/expo pack --pack-destination "$SDK_PACK_DIR"
75+
SDK_TARBALL="$(ls "$SDK_PACK_DIR"/clerk-expo-*.tgz)"
76+
if tar -tf "$SDK_TARBALL" | grep -q '^package/e2e/'; then
77+
echo "Fixture files must not be packed into @clerk/expo"
78+
exit 1
79+
fi
80+
81+
- name: Install fixture dependencies
82+
working-directory: ${{ env.FIXTURE_DIR }}
83+
env:
84+
EXPO_SDK: ${{ matrix.expo-sdk }}
85+
run: |
86+
cp "package.sdk-$EXPO_SDK.json" package.json
87+
pnpm install --no-frozen-lockfile
88+
SDK_TARBALL="$(ls "$SDK_PACK_DIR"/clerk-expo-*.tgz)"
89+
pnpm add "$SDK_TARBALL" -w
90+
pnpm expo install expo-auth-session expo-constants expo-crypto expo-dev-client expo-secure-store expo-web-browser
91+
92+
- name: Write fixture .env
93+
working-directory: ${{ env.FIXTURE_DIR }}
94+
run: |
95+
echo "EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=$FIXTURE_PUBLISHABLE_KEY" > .env
96+
97+
- name: Set up JDK 17
98+
if: ${{ matrix.platform == 'android' }}
99+
uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4
100+
with:
101+
distribution: temurin
102+
java-version: 17
103+
104+
- name: Prebuild Android fixture
105+
if: ${{ matrix.platform == 'android' }}
106+
working-directory: ${{ env.FIXTURE_DIR }}
107+
run: pnpm expo prebuild --clean --platform android
108+
109+
- name: Build Android fixture
110+
if: ${{ matrix.platform == 'android' }}
111+
working-directory: ${{ env.FIXTURE_DIR }}
112+
run: pnpm build:android
113+
114+
- name: Prebuild iOS fixture
115+
if: ${{ matrix.platform == 'ios' }}
116+
working-directory: ${{ env.FIXTURE_DIR }}
117+
run: pnpm expo prebuild --clean --platform ios
118+
119+
- name: Build iOS fixture
120+
if: ${{ matrix.platform == 'ios' }}
121+
working-directory: ${{ env.FIXTURE_DIR }}
122+
run: pnpm build:ios

.github/workflows/release.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ jobs:
2727
timeout-minutes: ${{ vars.TIMEOUT_MINUTES_NORMAL && fromJSON(vars.TIMEOUT_MINUTES_NORMAL) || 10 }}
2828

2929
permissions:
30+
actions: read
3031
contents: write
3132
id-token: write
3233
packages: write
@@ -64,9 +65,31 @@ jobs:
6465
- name: Upgrade npm for trusted publishing
6566
run: npx npm@11 install -g npm@11
6667

68+
- name: Determine whether electron-passkeys is about to publish
69+
id: detect-native
70+
run: node scripts/detect-electron-passkeys-publish.mjs >> "$GITHUB_OUTPUT"
71+
6772
- name: Build release
6873
run: pnpm turbo build $TURBO_ARGS --force
6974

75+
- name: Download electron-passkeys native binaries
76+
if: ${{ steps.detect-native.outputs.should-build == 'true' }}
77+
uses: dawidd6/action-download-artifact@b6e2e70617bc3265edd6dab6c906732b2f1ae151 # v21
78+
with:
79+
github_token: ${{ github.token }}
80+
workflow: electron-passkeys.yml
81+
name: electron-passkeys-npm
82+
path: packages/electron-passkeys/npm
83+
branch: ${{ github.ref_name }}
84+
event: workflow_dispatch
85+
workflow_conclusion: success
86+
search_artifacts: true
87+
allow_forks: false
88+
89+
- name: Verify electron-passkeys binaries are present
90+
if: ${{ steps.detect-native.outputs.should-build == 'true' }}
91+
run: node scripts/check-electron-passkeys-binaries.mjs packages/electron-passkeys/npm
92+
7093
- name: Create Release PR
7194
id: changesets
7295
uses: changesets/action@63a615b9cd06ba9a3e6d13796c7fbcb080a60a0b # v1

.typedoc/__tests__/__snapshots__/clerk-properties.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99
| <a id="issignedin"></a> `isSignedIn` | `boolean` | Indicates whether the current user has a valid signed-in client session. |
1010
| <a id="isstandardbrowser"></a> `isStandardBrowser` | <code>undefined \| boolean</code> | Indicates whether the instance is being loaded in a standard browser environment. Set to `false` on native platforms where cookies cannot be set. When `undefined`, Clerk assumes a standard browser. |
1111
| <a id="loaded"></a> `loaded` | `boolean` | Indicates whether the `Clerk` object is ready for use. Set to `false` when the `status` is `"loading"`. Set to `true` when the `status` is `"ready"` or `"degraded"`. |
12-
| <a id="oauthapplication"></a> `oauthApplication` | [`OAuthApplicationNamespace`](../o-auth-application-namespace.mdx) | OAuth application helpers (e.g. consent metadata for custom consent UIs). |
12+
| <a id="oauthapplication"></a> `oauthApplication` | [`OAuthApplicationNamespace`](/docs/reference/types/oauth-application) | OAuth application helpers (e.g. consent metadata for custom consent UIs). |
1313
| <a id="organization"></a> `organization` | <code>undefined \| null \| [OrganizationResource](/docs/reference/objects/organization)</code> | A shortcut to the last active `Session.user.organizationMemberships` which holds an instance of a `Organization` object. If the session is `null` or `undefined`, the user field will match. |
1414
| <a id="proxyurl"></a> `proxyUrl` | <code>undefined \| string</code> | **Required for applications that run behind a reverse proxy**. Your Clerk app's proxy URL. Can be either a relative path (`/__clerk`) or a full URL (`https://<your-domain>/__clerk`). |
1515
| <a id="publishablekey"></a> `publishableKey` | `string` | Your Clerk [Publishable Key](!publishable-key). |
1616
| <a id="sdkmetadata"></a> `sdkMetadata` | <code>undefined \| \{ environment?: string; name: string; version: string; \}</code> | If present, contains information about the SDK that the host application is using. For example, if Clerk is loaded through `@clerk/nextjs`, this would be `{ name: '@clerk/nextjs', version: '1.0.0' }`. You don't need to set this value yourself unless you're [developing an SDK](/docs/guides/development/sdk-development/overview). |
1717
| <a id="session"></a> `session` | <code>undefined \| null \| [SignedInSessionResource](/docs/reference/objects/session)</code> | The currently active `Session`, which is guaranteed to be one of the sessions in `Client.sessions`. If there is no active session, this field will be `null`. If the session is loading, this field will be `undefined`. |
1818
| <a id="status"></a> `status` | <code>"error" \| "degraded" \| "loading" \| "ready"</code> | The status of the `Clerk` instance. Possible values are: <ul> <li>`"error"`: Set when hotloading `clerk-js` or `Clerk.load()` failed.</li> <li>`"loading"`: Set during initialization.</li> <li>`"ready"`: Set when Clerk is fully operational.</li> <li>`"degraded"`: Set when Clerk is partially operational.</li> </ul> |
1919
| <a id="telemetry"></a> `telemetry` | <code>undefined \| \{ isDebug: boolean; isEnabled: boolean; record: void; recordLog: void; \}</code> | [Telemetry](/docs/guides/how-clerk-works/security/clerk-telemetry) configuration. |
20+
| <a id="uiversion"></a> `uiVersion` | <code>undefined \| string</code> | The version of `@clerk/ui` that is currently loaded, or `undefined` if the prebuilt UI has not been loaded yet. |
2021
| <a id="user"></a> `user` | <code>undefined \| null \| [UserResource](/docs/reference/objects/user)</code> | A shortcut to `Session.user` which holds the currently active `User` object. If the session is `null` or `undefined`, the user field will match. |
2122
| <a id="version"></a> `version` | <code>undefined \| string</code> | The Clerk SDK version number. |

.typedoc/custom-plugin.mjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const FILES_WITHOUT_HEADINGS = [
3939
'use-organization-creation-defaults-params.mdx',
4040
'use-o-auth-consent-params.mdx',
4141
'use-o-auth-consent-return.mdx',
42+
'create-organization-domain-params.mdx',
4243
];
4344

4445
/**
@@ -70,6 +71,7 @@ const LINK_REPLACEMENTS = [
7071
['organization-domain-resource', '/docs/reference/types/organization-domain-resource'],
7172
['organization-invitation-resource', '/docs/reference/types/organization-invitation'],
7273
['organization-membership-request-resource', '/docs/reference/types/organization-membership-request'],
74+
['o-auth-application-namespace', '/docs/reference/types/oauth-application'],
7375
['o-auth-consent-info', '/docs/reference/types/oauth-consent-info'],
7476
['o-auth-consent-scope', '/docs/reference/types/oauth-consent-scope'],
7577
['o-auth-strategy', '/docs/reference/types/sso#o-auth-strategy'],
@@ -128,6 +130,8 @@ const LINK_REPLACEMENTS = [
128130
['session-task', '/docs/reference/types/session-task'],
129131
['public-user-data', '/docs/reference/types/public-user-data'],
130132
['session-status', '/docs/reference/types/session-status'],
133+
['create-organization-domain-params', '#create-organization-domain-params'],
134+
['organization-domain-verification', '/docs/reference/types/organization-domain-resource'],
131135
];
132136

133137
/**
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/.expo/
2+
/.env
3+
/android/
4+
/ios/
5+
/node_modules/
6+
/package.json
7+
/pnpm-lock.yaml

0 commit comments

Comments
 (0)