@fuzionx/framework 0.1.25 → 0.1.27
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.
|
@@ -1,66 +1,202 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ═══════════════════════════════════════════════
|
|
2
|
+
# fuzionx.yaml — FuzionX 전체 설정 레퍼런스
|
|
3
|
+
# ═══════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
# ── Bridge (Rust 엔진) ──────────────────────────
|
|
2
6
|
bridge:
|
|
3
7
|
port: 49080
|
|
4
|
-
workers: 0
|
|
5
|
-
worker_timeout: 30
|
|
8
|
+
workers: 0 # 0 = CPU 코어 수 자동
|
|
9
|
+
worker_timeout: 30 # 워커 요청 타임아웃 (초)
|
|
6
10
|
|
|
11
|
+
# ── 보안: CORS ──
|
|
7
12
|
cors:
|
|
8
13
|
enabled: false
|
|
9
14
|
origins:
|
|
10
15
|
- "*"
|
|
11
16
|
|
|
17
|
+
# ── 보안: Rate Limit ──
|
|
12
18
|
rate_limit:
|
|
13
19
|
enabled: true
|
|
14
|
-
per_ip: 1000
|
|
20
|
+
per_ip: 1000 # IP당 초당 요청 수
|
|
21
|
+
|
|
22
|
+
# ── 보안: HSTS ──
|
|
23
|
+
hsts:
|
|
24
|
+
enabled: false
|
|
25
|
+
max_age: 31536000 # 1년 (초)
|
|
26
|
+
|
|
27
|
+
# ── 보안: CSP ──
|
|
28
|
+
csp:
|
|
29
|
+
enabled: false
|
|
30
|
+
directives:
|
|
31
|
+
- "default-src 'self'"
|
|
32
|
+
|
|
33
|
+
# ── 보안: IP Filter ──
|
|
34
|
+
ip_filter:
|
|
35
|
+
enabled: false
|
|
36
|
+
whitelist: [] # CIDR 형식
|
|
37
|
+
blacklist: []
|
|
15
38
|
|
|
39
|
+
# ── 세션 ──
|
|
16
40
|
session:
|
|
17
41
|
enabled: false
|
|
18
|
-
store: memory
|
|
19
|
-
ttl: 3600
|
|
42
|
+
store: memory # memory | redis
|
|
43
|
+
ttl: 3600 # 세션 TTL (초)
|
|
20
44
|
cookie_name: fuzionx.sid
|
|
45
|
+
# redis_url: "redis://localhost:6379"
|
|
46
|
+
|
|
47
|
+
# ── 국제화 (i18n) ──
|
|
48
|
+
i18n:
|
|
49
|
+
enabled: false
|
|
50
|
+
default_locale: ko
|
|
51
|
+
locale_dir: ./locales
|
|
52
|
+
auto_complete: false
|
|
53
|
+
locales:
|
|
54
|
+
- ko
|
|
55
|
+
- en
|
|
21
56
|
|
|
57
|
+
# ── WebSocket ──
|
|
22
58
|
websocket:
|
|
23
59
|
enabled: false
|
|
24
60
|
path: /ws
|
|
25
|
-
check_interval: 60
|
|
26
|
-
timeout: 60
|
|
61
|
+
check_interval: 60 # 헬스체크 간격 (초)
|
|
62
|
+
timeout: 60 # 타임아웃 (초)
|
|
63
|
+
|
|
64
|
+
# ── Hub (멀티서버 동기화) ──
|
|
65
|
+
hub:
|
|
66
|
+
enabled: false
|
|
67
|
+
url: "ws://127.0.0.1:9100/ws/bridge"
|
|
68
|
+
group: "{{name}}"
|
|
27
69
|
|
|
70
|
+
# ── 파일 업로드 ──
|
|
71
|
+
upload:
|
|
72
|
+
dir: /tmp
|
|
73
|
+
max_size: "1gb"
|
|
74
|
+
max_files: 20
|
|
75
|
+
allowed_types:
|
|
76
|
+
- image/jpeg
|
|
77
|
+
- image/png
|
|
78
|
+
- image/webp
|
|
79
|
+
- image/gif
|
|
80
|
+
- video/mp4
|
|
81
|
+
- video/webm
|
|
82
|
+
- application/pdf
|
|
83
|
+
# watermark: ./assets/watermark.png
|
|
84
|
+
# watermark_opacity: 50
|
|
85
|
+
|
|
86
|
+
# ── 정적 파일 ──
|
|
28
87
|
static:
|
|
29
88
|
- url: /public
|
|
30
89
|
path: ./public
|
|
31
90
|
|
|
91
|
+
# ── 로깅 ──
|
|
32
92
|
logging:
|
|
33
|
-
level: info
|
|
34
|
-
intercept_console: true
|
|
93
|
+
level: info # error | warn | info | debug
|
|
94
|
+
intercept_console: true # console.* 가로채기
|
|
95
|
+
file:
|
|
96
|
+
enabled: false
|
|
97
|
+
path: ./logs/app.log
|
|
98
|
+
|
|
99
|
+
# ── 액세스 로그 ──
|
|
100
|
+
access_log:
|
|
101
|
+
enabled: false
|
|
102
|
+
path: ./logs/access.log
|
|
103
|
+
error_path: ./logs/error.log
|
|
104
|
+
|
|
105
|
+
# ── 트래픽 캡처 ──
|
|
106
|
+
traffic_capture:
|
|
107
|
+
enabled: false
|
|
108
|
+
max_body_size: "64KB"
|
|
109
|
+
exclude_content_types: []
|
|
110
|
+
loki:
|
|
111
|
+
enabled: false
|
|
112
|
+
url: ""
|
|
113
|
+
labels: []
|
|
114
|
+
fields: []
|
|
115
|
+
batch_size: 100
|
|
116
|
+
flush_interval: "2s"
|
|
117
|
+
clickhouse:
|
|
118
|
+
enabled: false
|
|
119
|
+
url: ""
|
|
120
|
+
database: fuzionx
|
|
121
|
+
table: traffic
|
|
122
|
+
format: full # metadata | headers_only | full
|
|
123
|
+
batch_size: 100
|
|
124
|
+
flush_interval: "1s"
|
|
125
|
+
|
|
126
|
+
# ── ASP 암호화 ──
|
|
127
|
+
asp:
|
|
128
|
+
enabled: false
|
|
129
|
+
master_secret: "${ASP_SECRET:change-me-in-production}"
|
|
130
|
+
header_signal: Ruxy-Enc-Mode
|
|
35
131
|
|
|
132
|
+
# ── Database ────────────────────────────────────
|
|
36
133
|
database:
|
|
37
134
|
default: main
|
|
38
135
|
connections:
|
|
39
136
|
main:
|
|
40
|
-
driver: sqlite
|
|
137
|
+
driver: sqlite # sqlite | mariadb | postgres | mongodb
|
|
41
138
|
database: ./storage/database.sqlite
|
|
139
|
+
# host: "127.0.0.1"
|
|
140
|
+
# port: 3306
|
|
141
|
+
# user: root
|
|
142
|
+
# password: ""
|
|
143
|
+
# charset: utf8mb4
|
|
144
|
+
# pool:
|
|
145
|
+
# min: 2
|
|
146
|
+
# max: 10
|
|
42
147
|
|
|
148
|
+
# ── App (프레임워크) ────────────────────────────
|
|
43
149
|
app:
|
|
44
150
|
name: '{{name}}'
|
|
45
|
-
environment: development
|
|
151
|
+
environment: development # development | production
|
|
152
|
+
|
|
153
|
+
asp:
|
|
154
|
+
enabled: false
|
|
46
155
|
|
|
156
|
+
# 인증
|
|
47
157
|
auth:
|
|
48
158
|
secret: '${JWT_SECRET:change-me-in-production}'
|
|
49
159
|
accessTtl: '15m'
|
|
160
|
+
# refreshTtl: '7d'
|
|
161
|
+
# bcrypt_rounds: 12
|
|
50
162
|
|
|
163
|
+
# 국제화 (프레임워크 편의 설정)
|
|
51
164
|
i18n:
|
|
52
165
|
default_locale: 'ko'
|
|
53
166
|
fallback: 'en'
|
|
54
167
|
|
|
168
|
+
# Swagger/OpenAPI
|
|
55
169
|
docs:
|
|
56
170
|
enabled: true
|
|
57
171
|
path: '/docs'
|
|
58
172
|
|
|
173
|
+
# 테마
|
|
59
174
|
themes:
|
|
60
175
|
default: 'default'
|
|
61
176
|
|
|
62
|
-
#
|
|
177
|
+
# 스토리지
|
|
178
|
+
# storage:
|
|
179
|
+
# driver: local
|
|
180
|
+
# local:
|
|
181
|
+
# path: ./storage
|
|
182
|
+
# url_prefix: /storage
|
|
183
|
+
|
|
184
|
+
# 스케줄러
|
|
185
|
+
# scheduler:
|
|
186
|
+
# enabled: true
|
|
187
|
+
# lock:
|
|
188
|
+
# driver: null # null | redis
|
|
189
|
+
# redis_url: ""
|
|
190
|
+
# prefix: "myapp:lock"
|
|
191
|
+
|
|
192
|
+
# 큐
|
|
193
|
+
# queue:
|
|
194
|
+
# driver: memory # memory | redis
|
|
195
|
+
# redis_url: ""
|
|
196
|
+
# prefix: "myapp:queue"
|
|
197
|
+
|
|
198
|
+
# ── Multi-App (도메인 → 앱 라우팅) ────────────────
|
|
63
199
|
apps:
|
|
64
|
-
"localhost": backend
|
|
200
|
+
"localhost:49080": backend
|
|
65
201
|
# "admin.example.com": backend
|
|
66
202
|
# "example.com": frontend
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fuzionx/framework",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.27",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Full-stack MVC framework built on @fuzionx/core — Controller, Service, Model, Middleware, DI, EventBus",
|
|
6
6
|
"main": "index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"url": "https://github.com/saytohenry/fuzionx"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@fuzionx/core": "^0.1.
|
|
37
|
+
"@fuzionx/core": "^0.1.27",
|
|
38
38
|
"better-sqlite3": "^12.8.0",
|
|
39
39
|
"knex": "^3.2.5",
|
|
40
40
|
"mongoose": "^9.3.2",
|