alpha
Login
or
Join now
nandi.uk
/
semble
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
This repository has no description
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
replace localhost with 127.0.0.1
author
Wesley Finck
date
9 months ago
(Oct 15, 2025, 6:02 PM -0700)
commit
aef18bce
aef18bce1ed2635e5811c3038c00aa356cc7f54e
parent
fc5ea0e1
fc5ea0e1e716b9207657683bef96a62a3cb69220
+50
-44
40 changed files
Expand all
Collapse all
Unified
Split
src
modules
atproto
infrastructure
services
FakeAtProtoOAuthProcessor.ts
user
infrastructure
http
controllers
CompleteOAuthSignInController.ts
shared
infrastructure
config
EnvironmentConfigService.ts
webapp
api-client
ApiClient.ts
app
(auth)
auth
complete
page.tsx
(dashboard)
profile
[handle]
(withHeader)
cards
layout.tsx
collections
layout.tsx
layout.tsx
opengraph-image.tsx
(withoutHeader)
collections
[rkey]
layout.tsx
opengraph-image.tsx
components
AddToCollectionModal.tsx
extension
SaveCardPage.tsx
SignInPage.tsx
features
auth
components
loginForm
LoginForm.tsx
cards
lib
mutations
useAddCard.tsx
useAddCardToLibrary.tsx
useRemoveCardFromCollections.tsx
useRemoveCardFromLibrary.tsx
queries
useCards.tsx
useGetCard.tsx
useGetCardFromMyLibrary.tsx
useGetLibrariesForcard.tsx
useMyCards.tsx
collections
lib
mutations
useAddCardToCollection.tsx
useCreateCollection.tsx
useDeleteCollection.tsx
useUpdateCollection.tsx
queries
useCollection.tsx
useCollectionSearch.tsx
useCollections.tsx
useMyCollections.tsx
feeds
lib
queries
useMyFeed.tsx
notes
lib
mutations
useUpdateNote.tsx
profile
components
profileHeader
ProfileHeader.tsx
lib
queries
useMyProfile.tsx
useProfile.tsx
hooks
useAuth.tsx
useExtensionAuth.tsx
services
auth.ts
+1
-1
src/modules/atproto/infrastructure/services/FakeAtProtoOAuthProcessor.ts
View file
Reviewed
···
12
12
async generateAuthUrl(handle?: string): Promise<Result<string>> {
13
13
try {
14
14
// Generate tokens for the mock DID
15
15
-
const mockUrl = `http://localhost:3000/api/users/oauth/callback?code=mockCode&state=mockState&iss=mockIssuer`;
15
15
+
const mockUrl = `http://127.0.0.1:3000/api/users/oauth/callback?code=mockCode&state=mockState&iss=mockIssuer`;
16
16
return ok(mockUrl);
17
17
} catch (error: any) {
18
18
return err(error);
+6
src/modules/user/infrastructure/http/controllers/CompleteOAuthSignInController.ts
View file
Reviewed
···
16
16
const appUrl = configService.getAppConfig().appUrl;
17
17
try {
18
18
const { code, state, iss } = req.query;
19
19
+
console.log('OAuth callback received with params:', req.query);
20
20
+
console.log('request coming from:', req.headers.referer);
21
21
+
console.log('requesting host:', req.headers.host);
19
22
20
23
if (!code || !state || !iss) {
21
24
return this.badRequest(res, 'Missing required parameters');
···
33
36
`${appUrl}/login?error=${encodeURIComponent(result.error.message)}`,
34
37
);
35
38
}
39
39
+
40
40
+
console.log('setting cookies with tokens:', result.value);
41
41
+
console.log('redirecting to:', `${appUrl}/auth/complete`);
36
42
37
43
// Set tokens in httpOnly cookies
38
44
this.cookieService.setTokens(res, {
+1
-1
src/shared/infrastructure/config/EnvironmentConfigService.ts
View file
Reviewed
···
88
88
host: process.env.HOST || '127.0.0.1',
89
89
},
90
90
app: {
91
91
-
appUrl: process.env.APP_URL || 'http://localhost:4000',
91
91
+
appUrl: process.env.APP_URL || 'http://127.0.0.1:4000',
92
92
},
93
93
iframely: {
94
94
apiKey: process.env.IFRAMELY_API_KEY || '',
+3
-3
src/webapp/api-client/ApiClient.ts
View file
Reviewed
···
302
302
// Factory functions for different client types
303
303
export const createAuthenticatedApiClient = () => {
304
304
return new ApiClient(
305
305
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
305
305
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
306
306
createClientTokenManager(),
307
307
);
308
308
};
309
309
310
310
export const createUnauthenticatedApiClient = () => {
311
311
return new ApiClient(
312
312
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
312
312
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
313
313
undefined,
314
314
);
315
315
};
···
318
318
export const createServerApiClient = async () => {
319
319
const tokenManager = await createServerTokenManager();
320
320
return new ApiClient(
321
321
-
process.env.API_BASE_URL || 'http://localhost:3000',
321
321
+
process.env.API_BASE_URL || 'http://127.0.0.1:3000',
322
322
tokenManager,
323
323
);
324
324
};
+1
-1
src/webapp/app/(auth)/auth/complete/page.tsx
View file
Reviewed
···
18
18
const handleAuth = async () => {
19
19
// Create API client instance
20
20
const apiClient = new ApiClient(
21
21
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
21
21
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
22
22
createClientTokenManager(),
23
23
);
24
24
+1
-1
src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/cards/layout.tsx
View file
Reviewed
···
12
12
const { handle } = await params;
13
13
14
14
const apiClient = new ApiClient(
15
15
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
15
15
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
16
16
createClientTokenManager(),
17
17
);
18
18
+1
-1
src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/collections/layout.tsx
View file
Reviewed
···
12
12
const { handle } = await params;
13
13
14
14
const apiClient = new ApiClient(
15
15
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
15
15
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
16
16
createClientTokenManager(),
17
17
);
18
18
+1
-1
src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/layout.tsx
View file
Reviewed
···
17
17
const { handle } = await params;
18
18
19
19
const apiClient = new ApiClient(
20
20
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
20
20
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
21
21
createClientTokenManager(),
22
22
);
23
23
+1
-1
src/webapp/app/(dashboard)/profile/[handle]/(withHeader)/opengraph-image.tsx
View file
Reviewed
···
17
17
const { handle } = await props.params;
18
18
19
19
const apiClient = new ApiClient(
20
20
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
20
20
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
21
21
createClientTokenManager(),
22
22
);
23
23
+1
-1
src/webapp/app/(dashboard)/profile/[handle]/(withoutHeader)/collections/[rkey]/layout.tsx
View file
Reviewed
···
12
12
const { rkey, handle } = await params;
13
13
14
14
const apiClient = new ApiClient(
15
15
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
15
15
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
16
16
createClientTokenManager(),
17
17
);
18
18
+1
-1
src/webapp/app/(dashboard)/profile/[handle]/(withoutHeader)/collections/[rkey]/opengraph-image.tsx
View file
Reviewed
···
17
17
const { rkey, handle } = await props.params;
18
18
19
19
const apiClient = new ApiClient(
20
20
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
20
20
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
21
21
createClientTokenManager(),
22
22
);
23
23
+3
-3
src/webapp/components/AddToCollectionModal.tsx
View file
Reviewed
···
37
37
38
38
// Create API client instance
39
39
const apiClient = new ApiClient(
40
40
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
40
40
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
41
41
createClientTokenManager(),
42
42
);
43
43
···
50
50
const fetchCard = useCallback(async () => {
51
51
// Create API client instance
52
52
const apiClient = new ApiClient(
53
53
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
53
53
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
54
54
createClientTokenManager(),
55
55
);
56
56
···
85
85
try {
86
86
// Create API client instance
87
87
const apiClient = new ApiClient(
88
88
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
88
88
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
89
89
createClientTokenManager(),
90
90
);
91
91
+1
-1
src/webapp/components/extension/SaveCardPage.tsx
View file
Reviewed
···
24
24
const apiClient = useMemo(
25
25
() =>
26
26
new ApiClient(
27
27
-
process.env.PLASMO_PUBLIC_API_URL || 'http://localhost:3000',
27
27
+
process.env.PLASMO_PUBLIC_API_URL || 'http://127.0.0.1:3000',
28
28
createExtensionTokenManager(),
29
29
),
30
30
[],
+1
-1
src/webapp/components/extension/SignInPage.tsx
View file
Reviewed
···
10
10
const [loginError, setLoginError] = useState('');
11
11
12
12
const handleSignIn = () => {
13
13
-
const appUrl = process.env.PLASMO_PUBLIC_APP_URL || 'http://localhost:3000';
13
13
+
const appUrl = process.env.PLASMO_PUBLIC_APP_URL || 'http://127.0.0.1:3000';
14
14
const loginUrl = `${appUrl}/login?extension-login=true`;
15
15
chrome.tabs.create({ url: loginUrl });
16
16
window.close();
+1
-1
src/webapp/features/auth/components/loginForm/LoginForm.tsx
View file
Reviewed
···
30
30
31
31
const isExtensionLogin = searchParams.get('extension-login') === 'true';
32
32
const apiClient = new ApiClient(
33
33
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
33
33
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
34
34
createClientTokenManager(),
35
35
);
36
36
+1
-1
src/webapp/features/cards/lib/mutations/useAddCard.tsx
View file
Reviewed
···
4
4
5
5
export default function useAddCard() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/cards/lib/mutations/useAddCardToLibrary.tsx
View file
Reviewed
···
4
4
5
5
export default function useAddCardToLibrary() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/cards/lib/mutations/useRemoveCardFromCollections.tsx
View file
Reviewed
···
4
4
5
5
export default function useRemoveCardFromCollections() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/cards/lib/mutations/useRemoveCardFromLibrary.tsx
View file
Reviewed
···
4
4
5
5
export default function useRemoveCardFromLibrary() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/cards/lib/queries/useCards.tsx
View file
Reviewed
···
9
9
10
10
export default function useCards(props: Props) {
11
11
const apiClient = new ApiClient(
12
12
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
12
12
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
13
13
createClientTokenManager(),
14
14
);
15
15
+1
-1
src/webapp/features/cards/lib/queries/useGetCard.tsx
View file
Reviewed
···
8
8
9
9
export default function useGetCard(props: Props) {
10
10
const apiClient = new ApiClient(
11
11
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
11
11
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
12
12
createClientTokenManager(),
13
13
);
14
14
+1
-1
src/webapp/features/cards/lib/queries/useGetCardFromMyLibrary.tsx
View file
Reviewed
···
8
8
9
9
export default function useGetCardFromMyLibrary(props: Props) {
10
10
const apiClient = new ApiClient(
11
11
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
11
11
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
12
12
createClientTokenManager(),
13
13
);
14
14
+1
-1
src/webapp/features/cards/lib/queries/useGetLibrariesForcard.tsx
View file
Reviewed
···
8
8
9
9
export default function useGetLibrariesForCard(props: Props) {
10
10
const apiClient = new ApiClient(
11
11
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
11
11
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
12
12
createClientTokenManager(),
13
13
);
14
14
+1
-1
src/webapp/features/cards/lib/queries/useMyCards.tsx
View file
Reviewed
···
8
8
9
9
export default function useMyCards(props?: Props) {
10
10
const apiClient = new ApiClient(
11
11
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
11
11
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
12
12
createClientTokenManager(),
13
13
);
14
14
+1
-1
src/webapp/features/collections/lib/mutations/useAddCardToCollection.tsx
View file
Reviewed
···
4
4
5
5
export default function useAddCardToCollection() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/collections/lib/mutations/useCreateCollection.tsx
View file
Reviewed
···
4
4
5
5
export default function useCreateCollection() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/collections/lib/mutations/useDeleteCollection.tsx
View file
Reviewed
···
4
4
5
5
export default function useDeleteCollection() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/collections/lib/mutations/useUpdateCollection.tsx
View file
Reviewed
···
4
4
5
5
export default function useUpdateCollection() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/collections/lib/queries/useCollection.tsx
View file
Reviewed
···
10
10
11
11
export default function useCollection(props: Props) {
12
12
const apiClient = new ApiClient(
13
13
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
13
13
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
14
14
createClientTokenManager(),
15
15
);
16
16
+1
-1
src/webapp/features/collections/lib/queries/useCollectionSearch.tsx
View file
Reviewed
···
11
11
12
12
export default function useCollectionSearch(props: Props) {
13
13
const apiClient = new ApiClient(
14
14
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
14
14
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
15
15
createClientTokenManager(),
16
16
);
17
17
+1
-1
src/webapp/features/collections/lib/queries/useCollections.tsx
View file
Reviewed
···
9
9
10
10
export default function useCollections(props: Props) {
11
11
const apiClient = new ApiClient(
12
12
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
12
12
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
13
13
createClientTokenManager(),
14
14
);
15
15
+1
-1
src/webapp/features/collections/lib/queries/useMyCollections.tsx
View file
Reviewed
···
8
8
9
9
export default function useMyCollections(props?: Props) {
10
10
const apiClient = new ApiClient(
11
11
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
11
11
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
12
12
createClientTokenManager(),
13
13
);
14
14
+1
-1
src/webapp/features/feeds/lib/queries/useMyFeed.tsx
View file
Reviewed
···
8
8
9
9
export default function useMyFeed(props?: Props) {
10
10
const apiClient = new ApiClient(
11
11
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
11
11
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
12
12
createClientTokenManager(),
13
13
);
14
14
+1
-1
src/webapp/features/notes/lib/mutations/useUpdateNote.tsx
View file
Reviewed
···
4
4
5
5
export default function useUpdateNote() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/profile/components/profileHeader/ProfileHeader.tsx
View file
Reviewed
···
22
22
23
23
export default async function ProfileHeader(props: Props) {
24
24
const apiClient = new ApiClient(
25
25
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
25
25
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
26
26
createClientTokenManager(),
27
27
);
28
28
+1
-1
src/webapp/features/profile/lib/queries/useMyProfile.tsx
View file
Reviewed
···
4
4
5
5
export default function useMyProfile() {
6
6
const apiClient = new ApiClient(
7
7
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
7
7
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
8
8
createClientTokenManager(),
9
9
);
10
10
+1
-1
src/webapp/features/profile/lib/queries/useProfile.tsx
View file
Reviewed
···
8
8
9
9
export default function useProfile(props: Props) {
10
10
const apiClient = new ApiClient(
11
11
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
11
11
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
12
12
createClientTokenManager(),
13
13
);
14
14
+1
-1
src/webapp/hooks/useAuth.tsx
View file
Reviewed
···
43
43
// Create API client instance
44
44
const createApiClient = useCallback(() => {
45
45
return new ApiClient(
46
46
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
46
46
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
47
47
createClientTokenManager(),
48
48
);
49
49
}, []);
+1
-1
src/webapp/hooks/useExtensionAuth.tsx
View file
Reviewed
···
36
36
37
37
const createApiClient = useCallback((token: string | null) => {
38
38
return new ApiClient(
39
39
-
process.env.PLASMO_PUBLIC_API_URL || 'http://localhost:3000',
39
39
+
process.env.PLASMO_PUBLIC_API_URL || 'http://127.0.0.1:3000',
40
40
createExtensionTokenManager(),
41
41
);
42
42
}, []);
+2
-2
src/webapp/services/auth.ts
View file
Reviewed
···
59
59
export const createClientTokenManager = () => {
60
60
const storage = new ClientTokenStorage();
61
61
const refresher = new ApiTokenRefresher(
62
62
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
62
62
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
63
63
);
64
64
return new TokenManager(storage, refresher);
65
65
};
···
76
76
export const createExtensionTokenManager = () => {
77
77
const storage = new ClientTokenStorage();
78
78
const refresher = new ApiTokenRefresher(
79
79
-
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3000',
79
79
+
process.env.NEXT_PUBLIC_API_BASE_URL || 'http://127.0.0.1:3000',
80
80
);
81
81
return new TokenManager(storage, refresher);
82
82
};