@nodus-lib/nodus 0.0.3 → 0.0.5
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 +38 -13
- package/dist/logger/nodus-server-caller.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# next-session-inspector
|
|
2
2
|
|
|
3
|
-
Next.js 미들웨어에서 `nodus_session`
|
|
3
|
+
Next.js 미들웨어에서 세션 쿠키(`nodus_session`)를 발급하고 유지하는 경량 패키지입니다.
|
|
4
4
|
|
|
5
5
|
## 요구 사항
|
|
6
6
|
|
|
7
7
|
- Node.js `>=18.18.0`
|
|
8
|
-
- Next.js `>=14`
|
|
8
|
+
- Next.js `>=14` (peer dependency)
|
|
9
9
|
|
|
10
10
|
## 설치
|
|
11
11
|
|
|
@@ -15,23 +15,52 @@ npm install @nodus-lib/nodus
|
|
|
15
15
|
|
|
16
16
|
## 사용법
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
앱 루트의 `middleware.ts`에서 그대로 내보냅니다.
|
|
19
19
|
|
|
20
20
|
```ts
|
|
21
21
|
export { middleware, config } from "@nodus-lib/nodus";
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
또는 한 파일에서 감싸서 추가 로직을 실행할 수 있습니다.
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import type { NextRequest } from "next/server";
|
|
28
|
+
import { middleware as baseMiddleware } from "@nodus-lib/nodus";
|
|
29
|
+
|
|
30
|
+
export function middleware(request: NextRequest) {
|
|
31
|
+
const response = baseMiddleware(request);
|
|
32
|
+
|
|
33
|
+
// 추가 로직
|
|
34
|
+
|
|
35
|
+
return response;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { config } from "@nodus-lib/nodus";
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 환경 변수
|
|
42
|
+
|
|
43
|
+
방문 이벤트를 Nodus로 전송하려면 사이트 키를 설정합니다.
|
|
25
44
|
|
|
26
45
|
```env
|
|
27
46
|
NODUS_SITE_KEY=site_xxx
|
|
28
47
|
```
|
|
29
48
|
|
|
30
|
-
|
|
49
|
+
사이트 키가 없으면 세션 쿠키만 발급하고 방문 이벤트는 전송하지 않습니다.
|
|
50
|
+
|
|
51
|
+
## 동작
|
|
31
52
|
|
|
32
|
-
|
|
53
|
+
- 쿠키 이름: `nodus_session`
|
|
54
|
+
- 기존 쿠키가 있으면 재사용합니다.
|
|
55
|
+
- 쿠키가 없으면 `crypto.randomUUID()`로 새 세션 ID를 생성합니다.
|
|
56
|
+
- 쿠키 옵션: `httpOnly`, `sameSite: "lax"`, `secure: true`, `path: "/"`
|
|
57
|
+
- 쿠키 최대 수명: 1년
|
|
33
58
|
|
|
34
|
-
|
|
59
|
+
## config.matcher
|
|
60
|
+
|
|
61
|
+
기본 matcher는 정적 자산, API, favicon 등을 제외한 페이지 중심 경로에 적용됩니다.
|
|
62
|
+
|
|
63
|
+
제외되는 기본 경로:
|
|
35
64
|
|
|
36
65
|
- `/api`
|
|
37
66
|
- `/_next/static`
|
|
@@ -40,12 +69,8 @@ NODUS_SITE_KEY=site_xxx
|
|
|
40
69
|
- `/sitemap.xml`
|
|
41
70
|
- `/robots.txt`
|
|
42
71
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- `session_id`
|
|
46
|
-
- `last_page`
|
|
47
|
-
- `current_page`
|
|
72
|
+
필요하면 앱의 `middleware.ts`에서 `config`를 직접 정의해 덮어쓸 수 있습니다.
|
|
48
73
|
|
|
49
74
|
## 라이선스
|
|
50
75
|
|
|
51
|
-
MIT
|
|
76
|
+
MIT. 자세한 내용은 `LICENSE` 파일을 참고하세요.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.nodus_server_caller = nodus_server_caller;
|
|
4
4
|
function nodus_server_caller({ data, url, key }) {
|
|
5
|
-
void fetch(`https://
|
|
5
|
+
void fetch(`https://localhost:8080/sdk/${url}?key=${key}`, {
|
|
6
6
|
method: "POST",
|
|
7
7
|
headers: {
|
|
8
8
|
"Content-Type": "application/json",
|