refactor: encapsulate internal context keys and add Get (by AI)

This commit is contained in:
AI Engineer 2026-06-10 09:45:10 +08:00
parent 147579b0d1
commit a81fb32f78
2 changed files with 21 additions and 3 deletions

8
CHANGELOG.md Normal file
View File

@ -0,0 +1,8 @@
# Changelog: @go/jsmod
## v1.5.1 (2026-06-08)
- **重构**: 完全隐藏内部 Context 键值(采用 `__GoJSContext__`),并废弃暴露的 `SafeModeKey`
- **新增**: 新增 `Get(ctx, key)` 辅助方法,统一承接来自 `go/js` 注入的 `map[string]any` 运行时配置。
## [1.5.0] - 2026-05-10
- 初始化模块。

View File

@ -7,12 +7,22 @@ import (
type contextKey string type contextKey string
const SafeModeKey contextKey = "SafeMode" const internalContextKey contextKey = "__GoJSContext__"
// Get retrieves an injected value from the context using the unified context map.
func Get(ctx context.Context, key string) any {
if ctx == nil {
return nil
}
if m, ok := ctx.Value(internalContextKey).(map[string]any); ok {
return m[key]
}
return nil
}
// IsSafeMode checks if the provided context indicates that the execution is in safe mode. // IsSafeMode checks if the provided context indicates that the execution is in safe mode.
func IsSafeMode(ctx context.Context) bool { func IsSafeMode(ctx context.Context) bool {
v := ctx.Value(SafeModeKey) if sm, ok := Get(ctx, "SafeMode").(bool); ok {
if sm, ok := v.(bool); ok {
return sm return sm
} }
return false // Default to false if not specified (internal trusted caller) return false // Default to false if not specified (internal trusted caller)