Skip to content

Commit c8e00a0

Browse files
committed
feat(clerk): Add machine auth support
1 parent 0a82c1f commit c8e00a0

File tree

3 files changed

+65
-94
lines changed

3 files changed

+65
-94
lines changed

packages/clerk-auth/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
},
4242
"homepage": "https://github.com/honojs/middleware",
4343
"dependencies": {
44-
"@clerk/backend": "^2.2.0",
45-
"@clerk/types": "^4.61.0"
44+
"@clerk/backend": "^2.24.0",
45+
"@clerk/shared": "^3.36.0"
4646
},
4747
"peerDependencies": {
4848
"hono": ">=3.0.0"

packages/clerk-auth/src/index.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import { createClerkClient } from '@clerk/backend'
2-
import type { ClerkClient, SessionAuthObject } from '@clerk/backend'
3-
import type { AuthenticateRequestOptions } from '@clerk/backend/internal'
4-
import { TokenType } from '@clerk/backend/internal'
2+
import type { ClerkClient } from '@clerk/backend'
3+
import type { AuthenticateRequestOptions, AuthOptions, GetAuthFn, GetAuthFnNoRequest } from '@clerk/backend/internal'
4+
import { getAuthObjectForAcceptedToken } from '@clerk/backend/internal'
55
import type { Context, MiddlewareHandler } from 'hono'
66
import { env } from 'hono/adapter'
77

88
declare module 'hono' {
99
interface ContextVariableMap {
1010
clerk: ClerkClient
11-
clerkAuth: () => SessionAuthObject | null
11+
clerkAuth: GetAuthFnNoRequest
1212
}
1313
}
1414

15-
export const getAuth = (c: Context): SessionAuthObject | null => {
15+
export const getAuth = ((c: Context) => {
1616
const authFn = c.get('clerkAuth')
1717
return authFn()
18-
}
18+
}) as GetAuthFn<Context>
1919

2020
type ClerkEnv = {
2121
CLERK_SECRET_KEY: string
@@ -55,7 +55,7 @@ export const clerkMiddleware = (options?: ClerkMiddlewareOptions): MiddlewareHan
5555
...rest,
5656
secretKey,
5757
publishableKey,
58-
acceptsToken: TokenType.SessionToken,
58+
acceptsToken: 'any',
5959
})
6060

6161
if (requestState.headers) {
@@ -72,8 +72,12 @@ export const clerkMiddleware = (options?: ClerkMiddlewareOptions): MiddlewareHan
7272
}
7373
}
7474

75-
// Options will be added soon
76-
c.set('clerkAuth', () => requestState.toAuth())
75+
const authObjectFn = ((options?: AuthOptions) => getAuthObjectForAcceptedToken({
76+
authObject: authObjectFn(options),
77+
acceptsToken: 'any'
78+
})) as GetAuthFnNoRequest
79+
80+
c.set('clerkAuth', authObjectFn)
7781
c.set('clerk', clerkClient)
7882

7983
await next()

yarn.lock

Lines changed: 50 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -694,29 +694,29 @@ __metadata:
694694
languageName: node
695695
linkType: hard
696696

697-
"@clerk/backend@npm:^2.2.0":
698-
version: 2.2.0
699-
resolution: "@clerk/backend@npm:2.2.0"
697+
"@clerk/backend@npm:^2.24.0":
698+
version: 2.24.0
699+
resolution: "@clerk/backend@npm:2.24.0"
700700
dependencies:
701-
"@clerk/shared": "npm:^3.9.8"
702-
"@clerk/types": "npm:^4.61.0"
701+
"@clerk/shared": "npm:^3.36.0"
702+
"@clerk/types": "npm:^4.101.3"
703703
cookie: "npm:1.0.2"
704-
snakecase-keys: "npm:8.0.1"
704+
standardwebhooks: "npm:^1.0.0"
705705
tslib: "npm:2.8.1"
706-
checksum: 10c0/deaf688e085ec2a28b8e98453b3ce2c293f19adf440acd8b295c71c7d765ad1c98841e8a5e9ee5d254e91d18884533cc11f6880c34ec99f4d3b57b330b47fe70
706+
checksum: 10c0/bec210ad221ab15a0a41a138690b54ab2919110ee2fcc8e9b523dcefd1f1e0835dd1f8ccec109628b37b4484ee99688cc2a867b125aaad6c24c91ed2ca8b05fa
707707
languageName: node
708708
linkType: hard
709709

710-
"@clerk/shared@npm:^3.9.8":
711-
version: 3.9.8
712-
resolution: "@clerk/shared@npm:3.9.8"
710+
"@clerk/shared@npm:^3.36.0":
711+
version: 3.36.0
712+
resolution: "@clerk/shared@npm:3.36.0"
713713
dependencies:
714-
"@clerk/types": "npm:^4.61.0"
714+
csstype: "npm:3.1.3"
715715
dequal: "npm:2.0.3"
716716
glob-to-regexp: "npm:0.4.1"
717717
js-cookie: "npm:3.0.5"
718718
std-env: "npm:^3.9.0"
719-
swr: "npm:^2.3.3"
719+
swr: "npm:2.3.4"
720720
peerDependencies:
721721
react: ^18.0.0 || ^19.0.0 || ^19.0.0-0
722722
react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-0
@@ -725,16 +725,16 @@ __metadata:
725725
optional: true
726726
react-dom:
727727
optional: true
728-
checksum: 10c0/64f21c38900dd41229c94920ce7fa52dba67b1bb3fdca4468d99a7bca450b1f1d1cfebecd1867657554bf915b26c24cb46d0962746ec9b92dad6d435571f05d2
728+
checksum: 10c0/5415e3c0dfd1e0e1e9133650d073d5b28703099d6d9e4f05fcb70d48c3690f175ff7166e17af2a08447590b24c97297d8f6e8d33f656103eb32356e4850573e9
729729
languageName: node
730730
linkType: hard
731731

732-
"@clerk/types@npm:^4.61.0":
733-
version: 4.61.0
734-
resolution: "@clerk/types@npm:4.61.0"
732+
"@clerk/types@npm:^4.101.3":
733+
version: 4.101.3
734+
resolution: "@clerk/types@npm:4.101.3"
735735
dependencies:
736-
csstype: "npm:3.1.3"
737-
checksum: 10c0/4f05bbdc6562c3e8f114ccfe378bfb7c622ce49338336ec962c7bf7f69bdd7eab98484c69e43dd69ffc8f7d2fea43609c1f8a37a650b475361cf8dea541b9ee3
736+
"@clerk/shared": "npm:^3.36.0"
737+
checksum: 10c0/f5ab2e56975454ea46fdc74dc4cc34d29b4476100be50bdb4e4fbd9f972d651402024e891cd2d5b08429867e534dc58327e27384a0637f8a1a47061cba0dd99b
738738
languageName: node
739739
linkType: hard
740740

@@ -2171,8 +2171,8 @@ __metadata:
21712171
resolution: "@hono/clerk-auth@workspace:packages/clerk-auth"
21722172
dependencies:
21732173
"@arethetypeswrong/cli": "npm:^0.17.4"
2174-
"@clerk/backend": "npm:^2.2.0"
2175-
"@clerk/types": "npm:^4.61.0"
2174+
"@clerk/backend": "npm:^2.24.0"
2175+
"@clerk/shared": "npm:^3.36.0"
21762176
"@types/react": "npm:^18"
21772177
hono: "npm:^4.8.4"
21782178
publint: "npm:^0.3.9"
@@ -4410,6 +4410,13 @@ __metadata:
44104410
languageName: node
44114411
linkType: hard
44124412

4413+
"@stablelib/base64@npm:^1.0.0":
4414+
version: 1.0.1
4415+
resolution: "@stablelib/base64@npm:1.0.1"
4416+
checksum: 10c0/6330720f021819d19cecfe274111b79a256caa81df478d6b0ae7effc8842b96915b6aeed85926ff05b4d48ec1fc78ad043d928b730ee4e6cc6e8cba6aa097bed
4417+
languageName: node
4418+
linkType: hard
4419+
44134420
"@standard-schema/spec@npm:1.0.0":
44144421
version: 1.0.0
44154422
resolution: "@standard-schema/spec@npm:1.0.0"
@@ -7025,16 +7032,6 @@ __metadata:
70257032
languageName: node
70267033
linkType: hard
70277034

7028-
"dot-case@npm:^3.0.4":
7029-
version: 3.0.4
7030-
resolution: "dot-case@npm:3.0.4"
7031-
dependencies:
7032-
no-case: "npm:^3.0.4"
7033-
tslib: "npm:^2.0.3"
7034-
checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05
7035-
languageName: node
7036-
linkType: hard
7037-
70387035
"dot-prop@npm:^5.2.0":
70397036
version: 5.3.0
70407037
resolution: "dot-prop@npm:5.3.0"
@@ -8380,6 +8377,13 @@ __metadata:
83808377
languageName: node
83818378
linkType: hard
83828379

8380+
"fast-sha256@npm:^1.3.0":
8381+
version: 1.3.0
8382+
resolution: "fast-sha256@npm:1.3.0"
8383+
checksum: 10c0/87f9e4baa7639576cf60a2b6235c9f436e1a1c52323abbd8a705b5bea8355500acf176f2aed0c14f2ecd6d6007e26151461bab2f27b8953bcca8d9d6b76a86e4
8384+
languageName: node
8385+
linkType: hard
8386+
83838387
"fast-uri@npm:^3.0.1":
83848388
version: 3.0.6
83858389
resolution: "fast-uri@npm:3.0.6"
@@ -10532,15 +10536,6 @@ __metadata:
1053210536
languageName: node
1053310537
linkType: hard
1053410538

10535-
"lower-case@npm:^2.0.2":
10536-
version: 2.0.2
10537-
resolution: "lower-case@npm:2.0.2"
10538-
dependencies:
10539-
tslib: "npm:^2.0.3"
10540-
checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b
10541-
languageName: node
10542-
linkType: hard
10543-
1054410539
"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0":
1054510540
version: 10.1.0
1054610541
resolution: "lru-cache@npm:10.1.0"
@@ -10676,13 +10671,6 @@ __metadata:
1067610671
languageName: node
1067710672
linkType: hard
1067810673

10679-
"map-obj@npm:^4.1.0":
10680-
version: 4.3.0
10681-
resolution: "map-obj@npm:4.3.0"
10682-
checksum: 10c0/1c19e1c88513c8abdab25c316367154c6a0a6a0f77e3e8c391bb7c0e093aefed293f539d026dc013d86219e5e4c25f23b0003ea588be2101ccd757bacc12d43b
10683-
languageName: node
10684-
linkType: hard
10685-
1068610674
"markdown-extensions@npm:^2.0.0":
1068710675
version: 2.0.0
1068810676
resolution: "markdown-extensions@npm:2.0.0"
@@ -11800,16 +11788,6 @@ __metadata:
1180011788
languageName: node
1180111789
linkType: hard
1180211790

11803-
"no-case@npm:^3.0.4":
11804-
version: 3.0.4
11805-
resolution: "no-case@npm:3.0.4"
11806-
dependencies:
11807-
lower-case: "npm:^2.0.2"
11808-
tslib: "npm:^2.0.3"
11809-
checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703
11810-
languageName: node
11811-
linkType: hard
11812-
1181311791
"node-emoji@npm:^2.2.0":
1181411792
version: 2.2.0
1181511793
resolution: "node-emoji@npm:2.2.0"
@@ -14311,27 +14289,6 @@ __metadata:
1431114289
languageName: node
1431214290
linkType: hard
1431314291

14314-
"snake-case@npm:^3.0.4":
14315-
version: 3.0.4
14316-
resolution: "snake-case@npm:3.0.4"
14317-
dependencies:
14318-
dot-case: "npm:^3.0.4"
14319-
tslib: "npm:^2.0.3"
14320-
checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd
14321-
languageName: node
14322-
linkType: hard
14323-
14324-
"snakecase-keys@npm:8.0.1":
14325-
version: 8.0.1
14326-
resolution: "snakecase-keys@npm:8.0.1"
14327-
dependencies:
14328-
map-obj: "npm:^4.1.0"
14329-
snake-case: "npm:^3.0.4"
14330-
type-fest: "npm:^4.15.0"
14331-
checksum: 10c0/3615126462e413fe5e1637c945362e99c3ac497bc49d867397547ab1a87ff2827ae890d1aa022ef06c27cb3924bcb3714db2f4e76770e6ebd3625f3e16d79d27
14332-
languageName: node
14333-
linkType: hard
14334-
1433514292
"socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.5":
1433614293
version: 8.0.5
1433714294
resolution: "socks-proxy-agent@npm:8.0.5"
@@ -14505,6 +14462,16 @@ __metadata:
1450514462
languageName: node
1450614463
linkType: hard
1450714464

14465+
"standardwebhooks@npm:^1.0.0":
14466+
version: 1.0.0
14467+
resolution: "standardwebhooks@npm:1.0.0"
14468+
dependencies:
14469+
"@stablelib/base64": "npm:^1.0.0"
14470+
fast-sha256: "npm:^1.3.0"
14471+
checksum: 10c0/aee097d0f3c05172c19b80df1ed9596a2ce92f8956957650d0bbe47c2ca6d36515796b51d523333cb4a48c889b2ab130d789e7879e14975c4381bc7a61274327
14472+
languageName: node
14473+
linkType: hard
14474+
1450814475
"statuses@npm:2.0.1, statuses@npm:^2.0.1":
1450914476
version: 2.0.1
1451014477
resolution: "statuses@npm:2.0.1"
@@ -14818,15 +14785,15 @@ __metadata:
1481814785
languageName: node
1481914786
linkType: hard
1482014787

14821-
"swr@npm:^2.3.3":
14822-
version: 2.3.3
14823-
resolution: "swr@npm:2.3.3"
14788+
"swr@npm:2.3.4":
14789+
version: 2.3.4
14790+
resolution: "swr@npm:2.3.4"
1482414791
dependencies:
1482514792
dequal: "npm:^2.0.3"
1482614793
use-sync-external-store: "npm:^1.4.0"
1482714794
peerDependencies:
1482814795
react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
14829-
checksum: 10c0/882fc8291912860e0c50eae3470ebf0cd58b0144cb12adcc4b14c5cef913ea06479043830508d8b0b3d4061d99ad8dd52485c9c879fbd4e9b893484e6d8da9e3
14796+
checksum: 10c0/c5cf536c2652fc6b64d64d3ce232f8bbe25dcaffc688f852fb81cf06e28b59280ebebde752429d9801c3af8e7a956ee7242376a6386a599cedc0000b862a712d
1483014797
languageName: node
1483114798
linkType: hard
1483214799

@@ -15186,7 +15153,7 @@ __metadata:
1518615153
languageName: node
1518715154
linkType: hard
1518815155

15189-
"tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.4.0":
15156+
"tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0":
1519015157
version: 2.6.2
1519115158
resolution: "tslib@npm:2.6.2"
1519215159
checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb
@@ -15287,7 +15254,7 @@ __metadata:
1528715254
languageName: node
1528815255
linkType: hard
1528915256

15290-
"type-fest@npm:^4.15.0, type-fest@npm:^4.26.1, type-fest@npm:^4.37.0":
15257+
"type-fest@npm:^4.26.1, type-fest@npm:^4.37.0":
1529115258
version: 4.38.0
1529215259
resolution: "type-fest@npm:4.38.0"
1529315260
checksum: 10c0/db9990d682a08697cf8ae67ac3cdbca734c742c96615e8888401d7d54e376b390e6a5d3be25fe3b4b439e1bb88a7da461da678a614ece8caccd9c0a07dd2e5f4

0 commit comments

Comments
 (0)