@fluojs/graphql
Advanced tools
+6
-6
@@ -12,3 +12,3 @@ { | ||
| ], | ||
| "version": "1.0.2", | ||
| "version": "1.0.3", | ||
| "private": false, | ||
@@ -45,7 +45,7 @@ "license": "MIT", | ||
| "ws": "^8.18.3", | ||
| "@fluojs/core": "^1.0.2", | ||
| "@fluojs/di": "^1.0.2", | ||
| "@fluojs/http": "^1.0.0", | ||
| "@fluojs/runtime": "^1.1.0", | ||
| "@fluojs/validation": "^1.0.3" | ||
| "@fluojs/core": "^1.0.3", | ||
| "@fluojs/di": "^1.0.3", | ||
| "@fluojs/http": "^1.1.0", | ||
| "@fluojs/runtime": "^1.1.1", | ||
| "@fluojs/validation": "^1.0.4" | ||
| }, | ||
@@ -52,0 +52,0 @@ "devDependencies": { |
+4
-0
@@ -112,2 +112,3 @@ # @fluojs/graphql | ||
| - Request-scoped DataLoader helper는 같은 `GraphQLContext` operation 경계를 사용하므로 loader cache는 하나의 GraphQL operation 안에서만 공유됩니다. | ||
| - 애플리케이션 shutdown은 WebSocket transport를 등록 해제하고, 살아 있는 WebSocket client를 닫으며, 아직 활성 상태인 WebSocket operation container를 정상 operation 완료 때와 같은 request-scoped provider teardown 경로로 dispose합니다. | ||
@@ -165,5 +166,8 @@ ```typescript | ||
| - 문서 depth, field complexity, aggregate query cost에 대한 request validation budget이 기본적으로 보수적인 값으로 활성화됩니다. | ||
| - `graphiql` 기본값은 `false`입니다. `introspection`은 명시하지 않으면 `graphiql` 설정을 따르므로, production 앱은 기본적으로 비공개 상태를 유지하고 로컬 GraphiQL 세션만 opt in할 수 있습니다. | ||
| - `limits`에는 request validation budget을 전달하거나 `false`를 전달할 수 있습니다. `false`는 fluo 밖에서 동등한 제어를 적용할 때만 사용하세요. | ||
| - Streaming GraphQL 응답은 downstream response stream이 닫히거나 오류를 내면 upstream fetch body를 cancel하므로 SSE subscription 리소스를 즉시 해제합니다. | ||
| - GraphQL 스키마 해석 이후 bootstrap이 실패하면 임시 `graphql/jsutils/instanceOf` 패치를 원복한 뒤 원래 오류를 다시 던지므로, 실패한 시작 시도가 이후 애플리케이션 시작의 process-wide GraphQL 동작을 오염시키지 않습니다. | ||
| - WebSocket 구독 경로에는 별도의 전송 budget이 기본 적용됩니다: 동시 연결 `100`, 최대 payload 크기 `64 KiB`, 연결당 활성 operation `25`개입니다. | ||
| - `subscriptions.websocket.enabled` 기본값은 `false`입니다. 활성화하려면 upgrade를 지원하는 Node HTTP/S adapter가 필요합니다. `connectionInitWaitTimeoutMs`는 연결 초기화를 위해 `graphql-ws`로 전달되고, `keepAliveMs`는 설정 시 WebSocket keepalive ping 주기를 제어합니다. | ||
| - 무제한 WebSocket 동작이 정말 필요할 때만 `subscriptions.websocket.limits = false`를 사용하고, 그 경우에도 동일한 수준의 외부 제어 수단을 마련해야 합니다. | ||
@@ -170,0 +174,0 @@ - 무제한 동작이 꼭 필요할 때만 `limits: false`를 사용하고, 그 경우에는 외부 제어 수단을 함께 두어야 합니다. |
+4
-0
@@ -112,2 +112,3 @@ # @fluojs/graphql | ||
| - Request-scoped DataLoader helpers use the same `GraphQLContext` operation boundary, so loader caches are shared only within one GraphQL operation. | ||
| - Application shutdown unregisters the websocket transport, closes live websocket clients, and disposes any still-active websocket operation containers through the same request-scoped provider teardown path used when an operation completes normally. | ||
@@ -165,5 +166,8 @@ ```typescript | ||
| - Request validation budgets are enabled by default with conservative limits for document depth, field complexity, and aggregate query cost. | ||
| - `graphiql` defaults to `false`. `introspection` follows `graphiql` unless set explicitly, so production apps stay private by default while local GraphiQL sessions can opt in. | ||
| - `limits` accepts request validation budgets or `false`; use `false` only when equivalent controls exist outside fluo. | ||
| - Streaming GraphQL responses cancel the upstream fetch body when the downstream response stream closes or errors, so SSE subscription resources are released promptly. | ||
| - Bootstrap failures after GraphQL schema resolution restore the package's temporary `graphql/jsutils/instanceOf` patch before rethrowing, so failed startups do not leak process-wide GraphQL behavior into later app attempts. | ||
| - WebSocket subscriptions use separate transport budgets by default: `100` concurrent connections, `64 KiB` maximum payload size, and `25` active operations per connection. | ||
| - `subscriptions.websocket.enabled` defaults to `false`; enabling it requires a Node HTTP/S adapter with upgrade support. `connectionInitWaitTimeoutMs` is forwarded to `graphql-ws` for connection initialization, and `keepAliveMs` controls websocket keepalive pings when configured. | ||
| - Set `subscriptions.websocket.limits = false` only when you intentionally need unbounded websocket behavior and can enforce equivalent controls elsewhere. | ||
@@ -170,0 +174,0 @@ - Pass `limits: false` only when you intentionally need unbounded behavior and can compensate with external controls. |
146580
1.28%218
1.87%Updated
Updated
Updated
Updated
Updated