@artatol-acp/auth-nextjs 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.jsx +25 -5
- package/dist/client/index.jsx.map +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +19 -3
- package/dist/middleware.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @artatol-acp/auth-nextjs
|
|
2
2
|
|
|
3
|
-
Next.js SDK for Artatol Cloud Platform Authentication with support for App Router, Server Actions, and
|
|
3
|
+
Next.js SDK for Artatol Cloud Platform Authentication with support for App Router, Server Actions, Middleware, and automatic token refresh.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -568,6 +568,84 @@ const health = await client.health();
|
|
|
568
568
|
console.log(health); // { status: 'ok', timestamp: '...' }
|
|
569
569
|
```
|
|
570
570
|
|
|
571
|
+
## Automatic Token Refresh
|
|
572
|
+
|
|
573
|
+
The Next.js SDK includes automatic token refresh functionality on the client side via the `ACPAuthProvider`.
|
|
574
|
+
|
|
575
|
+
### How It Works
|
|
576
|
+
|
|
577
|
+
1. When you use `ACPAuthProvider`, the SDK automatically manages access tokens
|
|
578
|
+
2. After successful login, a background interval starts
|
|
579
|
+
3. **Every 4 minutes**, the token is automatically refreshed (tokens expire after 5 minutes)
|
|
580
|
+
4. If refresh fails, the user is automatically logged out
|
|
581
|
+
5. The interval stops when the user logs out or the component unmounts
|
|
582
|
+
|
|
583
|
+
### Client-Side Usage
|
|
584
|
+
|
|
585
|
+
```typescript
|
|
586
|
+
'use client';
|
|
587
|
+
|
|
588
|
+
import { ACPAuthProvider } from '@artatol-acp/auth-nextjs/client';
|
|
589
|
+
|
|
590
|
+
export default function RootLayout({ children }) {
|
|
591
|
+
return (
|
|
592
|
+
<html>
|
|
593
|
+
<body>
|
|
594
|
+
<ACPAuthProvider
|
|
595
|
+
baseUrl={process.env.NEXT_PUBLIC_ACP_AUTH_URL}
|
|
596
|
+
>
|
|
597
|
+
{children}
|
|
598
|
+
</ACPAuthProvider>
|
|
599
|
+
</body>
|
|
600
|
+
</html>
|
|
601
|
+
);
|
|
602
|
+
}
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
The `ACPAuthProvider` internally creates an `ACPAuthClient` with auto-refresh enabled:
|
|
606
|
+
- `autoRefresh: true` (enabled by default)
|
|
607
|
+
- `refreshThresholdSeconds: 60` (refreshes 60 seconds before token expires)
|
|
608
|
+
|
|
609
|
+
### Manual Token Management
|
|
610
|
+
|
|
611
|
+
If you're using the client directly without the provider:
|
|
612
|
+
|
|
613
|
+
```typescript
|
|
614
|
+
import { ACPAuthClient } from '@artatol-acp/auth-js';
|
|
615
|
+
|
|
616
|
+
const client = new ACPAuthClient({
|
|
617
|
+
baseUrl: 'https://sso.artatol.com',
|
|
618
|
+
apiKey: '',
|
|
619
|
+
autoRefresh: true,
|
|
620
|
+
refreshThresholdSeconds: 60
|
|
621
|
+
});
|
|
622
|
+
|
|
623
|
+
// After login, token is automatically managed
|
|
624
|
+
const result = await client.login({ email: '...', password: '...' });
|
|
625
|
+
|
|
626
|
+
// Subsequent calls automatically refresh if needed
|
|
627
|
+
const user = await client.me(); // No manual token management required
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
### Server-Side Token Refresh
|
|
631
|
+
|
|
632
|
+
For server-side token refresh, use the `refreshAccessToken()` function:
|
|
633
|
+
|
|
634
|
+
```typescript
|
|
635
|
+
'use server';
|
|
636
|
+
|
|
637
|
+
import { refreshAccessToken } from '@artatol-acp/auth-nextjs/server';
|
|
638
|
+
|
|
639
|
+
export async function refreshTokenAction() {
|
|
640
|
+
try {
|
|
641
|
+
await refreshAccessToken();
|
|
642
|
+
return { success: true };
|
|
643
|
+
} catch (error) {
|
|
644
|
+
return { success: false, error: 'Failed to refresh token' };
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
```
|
|
648
|
+
|
|
571
649
|
## Error Handling
|
|
572
650
|
|
|
573
651
|
```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAkD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAkD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,oBAAoB,2CAoE1E;AAED,wBAAgB,OAAO,IAAI,mBAAmB,CAM7C;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,mBAAmB,sBAAsB,CAAC"}
|
package/dist/client/index.jsx
CHANGED
|
@@ -6,16 +6,22 @@ const ACPAuthContext = createContext(null);
|
|
|
6
6
|
export function ACPAuthProvider({ children, baseUrl }) {
|
|
7
7
|
const [user, setUser] = useState(null);
|
|
8
8
|
const [isLoading, setIsLoading] = useState(true);
|
|
9
|
-
const [client] = useState(() => new ACPAuthClient({
|
|
9
|
+
const [client] = useState(() => new ACPAuthClient({
|
|
10
|
+
baseUrl,
|
|
11
|
+
apiKey: '',
|
|
12
|
+
autoRefresh: true,
|
|
13
|
+
refreshThresholdSeconds: 60
|
|
14
|
+
}));
|
|
10
15
|
const refresh = async () => {
|
|
11
16
|
try {
|
|
12
17
|
await client.refresh();
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
// Fetch user data after successful refresh
|
|
19
|
+
const userData = await client.me();
|
|
20
|
+
setUser(userData);
|
|
16
21
|
}
|
|
17
22
|
catch (error) {
|
|
18
23
|
setUser(null);
|
|
24
|
+
client.setAccessToken(null);
|
|
19
25
|
}
|
|
20
26
|
};
|
|
21
27
|
const login = async (email, password) => {
|
|
@@ -23,7 +29,7 @@ export function ACPAuthProvider({ children, baseUrl }) {
|
|
|
23
29
|
if ('requiresTwoFactor' in result) {
|
|
24
30
|
throw new Error('2FA_REQUIRED');
|
|
25
31
|
}
|
|
26
|
-
// User logged in successfully
|
|
32
|
+
// User logged in successfully, token is automatically set in client
|
|
27
33
|
setUser(result.user);
|
|
28
34
|
};
|
|
29
35
|
const logout = async () => {
|
|
@@ -37,6 +43,20 @@ export function ACPAuthProvider({ children, baseUrl }) {
|
|
|
37
43
|
// Try to restore session on mount
|
|
38
44
|
refresh().finally(() => setIsLoading(false));
|
|
39
45
|
}, []);
|
|
46
|
+
// Auto-refresh interval - refresh token every 4 minutes
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!user)
|
|
49
|
+
return;
|
|
50
|
+
const REFRESH_INTERVAL = 4 * 60 * 1000; // 4 minutes
|
|
51
|
+
const interval = setInterval(() => {
|
|
52
|
+
refresh().catch(() => {
|
|
53
|
+
// If refresh fails, user session is invalid
|
|
54
|
+
setUser(null);
|
|
55
|
+
client.setAccessToken(null);
|
|
56
|
+
});
|
|
57
|
+
}, REFRESH_INTERVAL);
|
|
58
|
+
return () => clearInterval(interval);
|
|
59
|
+
}, [user]);
|
|
40
60
|
return (<ACPAuthContext.Provider value={{ user, isLoading, login, logout, refresh, resendVerification }}>
|
|
41
61
|
{children}
|
|
42
62
|
</ACPAuthContext.Provider>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAa,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAWvF,MAAM,cAAc,GAAG,aAAa,CAA6B,IAAI,CAAC,CAAC;AAOvE,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAwB;IACzE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
|
package/dist/middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,IAO/B,SAAS,WAAW,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,IAO/B,SAAS,WAAW,oCAyD7D"}
|
package/dist/middleware.js
CHANGED
|
@@ -23,14 +23,30 @@ export function createACPAuthMiddleware(options) {
|
|
|
23
23
|
if (!publicKey) {
|
|
24
24
|
publicKey = await importSPKI(jwtPublicKey, 'EdDSA');
|
|
25
25
|
}
|
|
26
|
-
await jwtVerify(accessToken, publicKey, {
|
|
26
|
+
const { payload } = await jwtVerify(accessToken, publicKey, {
|
|
27
27
|
algorithms: ['EdDSA'],
|
|
28
28
|
});
|
|
29
|
+
// Check if token is close to expiration (within 60 seconds)
|
|
30
|
+
const exp = payload.exp;
|
|
31
|
+
if (exp) {
|
|
32
|
+
const timeUntilExpiry = exp * 1000 - Date.now();
|
|
33
|
+
const refreshThreshold = 60 * 1000; // 60 seconds
|
|
34
|
+
if (timeUntilExpiry < refreshThreshold) {
|
|
35
|
+
// Token is close to expiration, trigger refresh by redirecting to a refresh endpoint
|
|
36
|
+
// This is a lightweight approach - the refresh will happen server-side
|
|
37
|
+
const refreshToken = request.cookies.get('refresh_token')?.value;
|
|
38
|
+
if (refreshToken) {
|
|
39
|
+
// Note: In middleware, we can't directly make server calls easily
|
|
40
|
+
// The best approach is to let the SDK handle this on the client side
|
|
41
|
+
// or implement a refresh endpoint that middleware can call
|
|
42
|
+
// For now, we'll let it pass and rely on client-side auto-refresh
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
29
46
|
return NextResponse.next();
|
|
30
47
|
}
|
|
31
48
|
catch (error) {
|
|
32
|
-
// Token invalid,
|
|
33
|
-
// For now, redirect to login
|
|
49
|
+
// Token invalid or expired, redirect to login
|
|
34
50
|
const url = request.nextUrl.clone();
|
|
35
51
|
url.pathname = loginPath;
|
|
36
52
|
url.searchParams.set('from', pathname);
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAgB,MAAM,MAAM,CAAC;AAQ3D,IAAI,SAAS,GAAmB,IAAI,CAAC;AAErC,MAAM,UAAU,uBAAuB,CAAC,OAAiC;IACvE,MAAM,EACJ,YAAY,EACZ,WAAW,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,EAC5E,SAAS,GAAG,QAAQ,GACrB,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,UAAU,iBAAiB,CAAC,OAAoB;QAC1D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAErC,qBAAqB;QACrB,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,yBAAyB;QACzB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC;QAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,oBAAoB;YACpB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAgB,MAAM,MAAM,CAAC;AAQ3D,IAAI,SAAS,GAAmB,IAAI,CAAC;AAErC,MAAM,UAAU,uBAAuB,CAAC,OAAiC;IACvE,MAAM,EACJ,YAAY,EACZ,WAAW,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,EAC5E,SAAS,GAAG,QAAQ,GACrB,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,UAAU,iBAAiB,CAAC,OAAoB;QAC1D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAErC,qBAAqB;QACrB,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,yBAAyB;QACzB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC;QAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,oBAAoB;YACpB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE;gBAC1D,UAAU,EAAE,CAAC,OAAO,CAAC;aACtB,CAAC,CAAC;YAEH,4DAA4D;YAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACxB,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;gBAEjD,IAAI,eAAe,GAAG,gBAAgB,EAAE,CAAC;oBACvC,qFAAqF;oBACrF,uEAAuE;oBACvE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;oBACjE,IAAI,YAAY,EAAE,CAAC;wBACjB,kEAAkE;wBAClE,qEAAqE;wBACrE,2DAA2D;wBAC3D,kEAAkE;oBACpE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8CAA8C;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@artatol-acp/auth-nextjs",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Next.js SDK for Artatol Cloud Platform Authentication with support for App Router, Server Actions, and Middleware",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"react": "^18.0.0 || ^19.0.0"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@artatol-acp/auth-js": "^0.3.
|
|
44
|
+
"@artatol-acp/auth-js": "^0.3.6",
|
|
45
45
|
"jose": "^5.9.6"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|