@gaonjs/config 0.8.1 → 0.9.0
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/dist/types.d.ts +9 -0
- package/dist/wire.js +8 -0
- package/package.json +6 -6
package/dist/types.d.ts
CHANGED
|
@@ -150,6 +150,15 @@ export interface AppConfig {
|
|
|
150
150
|
readonly auth?: AuthOptions | JwtAuthOptions;
|
|
151
151
|
/** URL 프리픽스 명시 덮어쓰기. 생략 시 관례: web→'/', 그 외→'/<name>'. */
|
|
152
152
|
readonly prefix?: string;
|
|
153
|
+
/**
|
|
154
|
+
* 선택 플러그인 @gaonjs/seal 토글(결정 121). `true` 면 이 앱의 wire(요청/응답 JSON + 최초 문서
|
|
155
|
+
* data-page)를 봉인한다. `{ except: ['/webhooks/*'] }` 로 특정 경로를 평문 통과. 정적 자산·헬스체크·
|
|
156
|
+
* multipart body 는 자동 제외. 켜려면 `npm i @gaonjs/seal`. ⚠️ seal 은 서버 검증을 대체하지 않는다 —
|
|
157
|
+
* 기존 방어층(스키마·requireAuth·CSRF·rate limit 등)을 그대로 유지한다(agents/security.md §0).
|
|
158
|
+
*/
|
|
159
|
+
readonly seal?: boolean | {
|
|
160
|
+
readonly except?: readonly string[];
|
|
161
|
+
};
|
|
153
162
|
}
|
|
154
163
|
/** 타입 안전 헬퍼 — `export default defineAppConfig({...})`. */
|
|
155
164
|
export declare function defineAppConfig(config: AppConfig): AppConfig;
|
package/dist/wire.js
CHANGED
|
@@ -115,6 +115,11 @@ export async function wireGaon(config, cwd = process.cwd()) {
|
|
|
115
115
|
// app.config.ts 가 session 을 두면 세션을 켠다(app.config 는 임의 shape 라
|
|
116
116
|
// 얕게 검사). Redis 인스턴스는 wireGaon 이 소유하는 걸 재사용.
|
|
117
117
|
const ac = a.appConfig;
|
|
118
|
+
// 결정 121: app.config 의 seal 토글을 AppSpec 으로 전달한다(true | { except }). createApp 이
|
|
119
|
+
// seal 앱 스코프에 @gaonjs/seal 을 동적 배선한다(미설치면 부팅 에러).
|
|
120
|
+
if (ac?.seal !== undefined && ac.seal !== false) {
|
|
121
|
+
spec = { ...spec, seal: ac.seal };
|
|
122
|
+
}
|
|
118
123
|
// 결정 59: app.config.ts 의 auth(loadUser) 를 AppSpec.auth 로 전달한다.
|
|
119
124
|
// 이 배선이 빠지면 세션 로그인은 되는데 요청마다 currentUser 를 채울 길이
|
|
120
125
|
// 없어 requireAuth 가 로그인 후에도 영구 실패한다(컴파일 통과·런타임 파손).
|
|
@@ -129,6 +134,9 @@ export async function wireGaon(config, cwd = process.cwd()) {
|
|
|
129
134
|
secret: ac.session.secret,
|
|
130
135
|
cookieName: ac.session.cookieName,
|
|
131
136
|
ttlSeconds: ac.session.ttlSeconds,
|
|
137
|
+
// app.config 의 CSRF 토글을 serve 로 전달한다(SessionOptions.csrf · 명시적으로만 끔).
|
|
138
|
+
// 이전엔 wireGaon 이 이 필드를 떨궈 documented 토글이 gaon serve 에서 무시됐다.
|
|
139
|
+
csrf: ac.session.csrf,
|
|
132
140
|
},
|
|
133
141
|
};
|
|
134
142
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gaonjs/config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Gaon 루트 설정 로더·자동 배선 (gaon.config.ts · §3.3 · M9-A)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ioredis": "^5.4.1",
|
|
28
|
-
"@gaonjs/data": "0.13.1",
|
|
29
|
-
"@gaonjs/core": "0.2.1",
|
|
30
|
-
"@gaonjs/storage": "0.1.2",
|
|
31
|
-
"@gaonjs/mail": "0.1.3",
|
|
32
28
|
"@gaonjs/async": "0.6.1",
|
|
33
29
|
"@gaonjs/i18n": "0.1.2",
|
|
34
|
-
"@gaonjs/
|
|
30
|
+
"@gaonjs/mail": "0.1.3",
|
|
31
|
+
"@gaonjs/core": "0.2.1",
|
|
32
|
+
"@gaonjs/data": "0.13.1",
|
|
33
|
+
"@gaonjs/storage": "0.1.2",
|
|
34
|
+
"@gaonjs/web": "0.11.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"fastify": "^5.0.0"
|