Skip to content
This repository was archived by the owner on Jan 29, 2026. It is now read-only.

Commit e9ea394

Browse files
committed
chain 함수 수정
1 parent 6e60e7b commit e9ea394

6 files changed

Lines changed: 53 additions & 55 deletions

File tree

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,19 @@
1-
import { NextResponse } from 'next/server'
2-
import type { NextFetchEvent, NextRequest } from 'next/server'
1+
import { NextMiddleware, NextResponse } from 'next/server'
32

4-
import { CustomMiddleware, MiddlewareFactory } from './types'
3+
import { MiddlewareFactory } from './types'
54

6-
/**
7-
* TF 14.0.11의 middlewares/src/chain 참고하여 작성
8-
* https://github.com/titicacadev/triple-frontend/blob/ceee9a7116dfbf39cc1363013a43cfb0060a9539/packages/middlewares/src/chain.ts
9-
*/
105
export function chain(
116
functions: MiddlewareFactory[],
127
index = 0,
13-
): CustomMiddleware {
8+
): NextMiddleware {
149
const current = functions[index]
1510

1611
if (current) {
1712
const next = chain(functions, index + 1)
1813
return current(next)
1914
}
2015

21-
return (
22-
request: NextRequest,
23-
event: NextFetchEvent,
24-
response: NextResponse,
25-
) => {
26-
return response
16+
return () => {
17+
return NextResponse.next()
2718
}
2819
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { chain } from './chain'
22
import type { MiddlewareFactory } from './types'
33
import { refreshSessionMiddleware } from './refresh-session'
4+
import { setWebDeviceIdMiddleware } from './set-web-device-id'
45

56
export { oldTripleIosCookiesMiddleware } from './old-triple-ios-cookie'
67

78
export const constructMiddleware = (functions: MiddlewareFactory[]) =>
8-
chain([...functions, refreshSessionMiddleware])
9+
chain([...functions, refreshSessionMiddleware, setWebDeviceIdMiddleware])
910

1011
export * from './types'

packages/react-contexts/src/middlewares/old-triple-ios-cookie.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
1-
import { NextRequest, NextResponse, NextFetchEvent } from 'next/server'
1+
import {
2+
NextRequest,
3+
NextResponse,
4+
NextFetchEvent,
5+
NextMiddleware,
6+
} from 'next/server'
27
import satisfies from 'semver/functions/satisfies'
38

49
import { parseApp } from '../user-agent-context'
510

6-
import { CustomMiddleware } from './types'
7-
811
/**
912
* TF 13.42.1의 react-contexts/src/middleware 참고하여 작성
1013
* https://github.com/titicacadev/triple-frontend/blob/8d002e80f9ff187d6a06b6a2695c48f1d5383662/packages/react-contexts/src/middleware.ts
1114
*/
12-
export function oldTripleIosCookiesMiddleware(
13-
customMiddleware: CustomMiddleware,
14-
) {
15-
return function middleware(request: NextRequest, event: NextFetchEvent) {
16-
const response = NextResponse.next()
15+
export function oldTripleIosCookiesMiddleware(next: NextMiddleware) {
16+
return async function middleware(
17+
request: NextRequest,
18+
event: NextFetchEvent,
19+
) {
20+
const response = (await next(request, event)) as NextResponse
1721

1822
const userAgent = request.headers.get('User-Agent')
1923

@@ -22,7 +26,7 @@ export function oldTripleIosCookiesMiddleware(
2226
const tripleApp = userAgent ? parseApp(userAgent) : null
2327

2428
if (!userAgent || (host && !!tripleApp)) {
25-
return customMiddleware(request, event, response)
29+
return response
2630
}
2731

2832
try {
@@ -45,6 +49,6 @@ export function oldTripleIosCookiesMiddleware(
4549
// semver 파싱 에러가 발생하면 ignore 합니다.
4650
}
4751

48-
return customMiddleware(request, event, response)
52+
return response
4953
}
5054
}

packages/react-contexts/src/middlewares/refresh-session.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
1-
import { NextFetchEvent, NextRequest, NextResponse } from 'next/server'
1+
import {
2+
NextFetchEvent,
3+
NextMiddleware,
4+
NextRequest,
5+
NextResponse,
6+
} from 'next/server'
27
import { get, post } from '@titicaca/fetcher'
38
import { parseString, splitCookiesString } from 'set-cookie-parser'
49

5-
import { CustomMiddleware } from './types'
610
import { TP_SE, TP_TK } from './constants'
711

8-
export function refreshSessionMiddleware(customMiddleware: CustomMiddleware) {
12+
export function refreshSessionMiddleware(next: NextMiddleware) {
913
return async function middleware(
1014
request: NextRequest,
1115
event: NextFetchEvent,
1216
) {
17+
const response = (await next(request, event)) as NextResponse
1318
const url = request.nextUrl
1419

1520
const isPageUrl = url.pathname.match('^/((?!(api|static|.*\\..*|_next)).*)')
1621
if (!isPageUrl) {
17-
return customMiddleware(request, event, NextResponse.next())
22+
return response
1823
}
1924

2025
const allCookies = request.cookies.getAll()
@@ -25,7 +30,7 @@ export function refreshSessionMiddleware(customMiddleware: CustomMiddleware) {
2530
const cookies = deriveAllCookies(request.cookies.getAll())
2631

2732
if (!isSessionExisted) {
28-
return customMiddleware(request, event, NextResponse.next())
33+
return response
2934
}
3035

3136
const options = {
@@ -36,7 +41,7 @@ export function refreshSessionMiddleware(customMiddleware: CustomMiddleware) {
3641
const firstTrialResponse = await get('/api/users/me', options)
3742

3843
if (firstTrialResponse.status !== 401) {
39-
return customMiddleware(request, event, NextResponse.next())
44+
return response
4045
}
4146

4247
/**
@@ -73,10 +78,10 @@ export function refreshSessionMiddleware(customMiddleware: CustomMiddleware) {
7378

7479
response.headers.set('set-cookie', setCookie)
7580

76-
return customMiddleware(request, event, response)
81+
return response
7782
}
7883
}
79-
return customMiddleware(request, event, NextResponse.next())
84+
return response
8085
}
8186
}
8287

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
1-
import { randomUUID } from 'crypto'
1+
import {
2+
NextFetchEvent,
3+
NextMiddleware,
4+
NextRequest,
5+
NextResponse,
6+
} from 'next/server'
7+
import { v4 as uuidV4 } from 'uuid'
28

3-
import { NextFetchEvent, NextRequest, NextResponse } from 'next/server'
4-
5-
import { CustomMiddleware } from './types'
69
import { getTripleApp } from './utils/get-triple-app'
710
import { X_TRIPLE_WEB_DEVICE_ID } from './constants'
811

9-
export function setWebDeviceIdMiddleware(customMiddleware: CustomMiddleware) {
10-
return function middleware(request: NextRequest, event: NextFetchEvent) {
11-
const response = NextResponse.next()
12+
export function setWebDeviceIdMiddleware(next: NextMiddleware) {
13+
return async function middleware(
14+
request: NextRequest,
15+
event: NextFetchEvent,
16+
) {
17+
const response = (await next(request, event)) as NextResponse
1218
const tripleApp = getTripleApp(request)
1319

1420
if (tripleApp) {
15-
return customMiddleware(request, event, response)
21+
return response
1622
}
1723

1824
const allCookies = request.cookies.getAll()
1925
const hasWebDeviceId = allCookies.some(
2026
({ name }) => name === X_TRIPLE_WEB_DEVICE_ID,
2127
)
2228

23-
if (!hasWebDeviceId) {
24-
const randomWebDeviceId = randomUUID()
29+
if (!hasWebDeviceId && response?.cookies) {
30+
const randomWebDeviceId = uuidV4()
2531
response.cookies.set(X_TRIPLE_WEB_DEVICE_ID, randomWebDeviceId)
2632
}
2733

28-
return customMiddleware(request, event, response)
34+
return response
2935
}
3036
}
Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
import { NextMiddlewareResult } from 'next/dist/server/web/types'
2-
import { NextFetchEvent, NextRequest, NextResponse } from 'next/server'
1+
import { NextMiddleware } from 'next/server'
32

4-
export type CustomMiddleware = (
5-
request: NextRequest,
6-
event: NextFetchEvent,
7-
response: NextResponse,
8-
) => NextMiddlewareResult | Promise<NextMiddlewareResult>
9-
10-
export type MiddlewareFactory = (
11-
middleware: CustomMiddleware,
12-
) => CustomMiddleware
3+
export type MiddlewareFactory = (middleware: NextMiddleware) => NextMiddleware

0 commit comments

Comments
 (0)