@gravito/ripple 4.0.0 → 4.0.3
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 +26 -10
- package/dist/{ripple/src/OrbitRipple.d.ts → OrbitRipple.d.ts} +1 -0
- package/dist/{ripple/src/RippleServer.d.ts → RippleServer.d.ts} +32 -2
- package/dist/core/src/Application.d.ts +41 -0
- package/dist/core/src/ConfigManager.d.ts +39 -0
- package/dist/core/src/Container/RequestScopeManager.d.ts +62 -0
- package/dist/core/src/Container/RequestScopeMetrics.d.ts +144 -0
- package/dist/core/src/Container.d.ts +45 -0
- package/dist/core/src/ErrorHandler.d.ts +3 -0
- package/dist/core/src/HookManager.d.ts +104 -165
- package/dist/core/src/PlanetCore.d.ts +114 -1
- package/dist/core/src/RequestContext.d.ts +97 -0
- package/dist/core/src/Router.d.ts +32 -46
- package/dist/core/src/ServiceProvider.d.ts +22 -0
- package/dist/core/src/adapters/bun/BunContext.d.ts +10 -1
- package/dist/core/src/adapters/bun/BunNativeAdapter.d.ts +35 -0
- package/dist/core/src/adapters/bun/BunWebSocketHandler.d.ts +48 -0
- package/dist/core/src/adapters/bun/RadixRouter.d.ts +1 -0
- package/dist/core/src/adapters/bun/index.d.ts +7 -0
- package/dist/core/src/binary/BinaryUtils.d.ts +105 -0
- package/dist/core/src/binary/index.d.ts +5 -0
- package/dist/core/src/cli/queue-commands.d.ts +6 -0
- package/dist/core/src/compat/async-local-storage.d.ts +7 -0
- package/dist/core/src/compat/crypto.d.ts +6 -0
- package/dist/core/src/engine/AOTRouter.d.ts +16 -1
- package/dist/core/src/engine/FastContext.d.ts +42 -1
- package/dist/core/src/engine/Gravito.d.ts +13 -19
- package/dist/core/src/engine/MinimalContext.d.ts +23 -0
- package/dist/core/src/engine/analyzer.d.ts +92 -6
- package/dist/core/src/engine/types.d.ts +6 -0
- package/dist/core/src/error-handling/RequestScopeErrorContext.d.ts +126 -0
- package/dist/core/src/events/BackpressureManager.d.ts +215 -0
- package/dist/core/src/events/DeadLetterQueue.d.ts +75 -1
- package/dist/core/src/events/EventBackend.d.ts +2 -1
- package/dist/core/src/events/EventOptions.d.ts +99 -4
- package/dist/core/src/events/EventPriorityQueue.d.ts +36 -175
- package/dist/core/src/events/FlowControlStrategy.d.ts +109 -0
- package/dist/core/src/events/MessageQueueBridge.d.ts +184 -0
- package/dist/core/src/events/PriorityEscalationManager.d.ts +82 -0
- package/dist/core/src/events/RetryScheduler.d.ts +104 -0
- package/dist/core/src/events/WorkerPool.d.ts +98 -0
- package/dist/core/src/events/WorkerPoolConfig.d.ts +153 -0
- package/dist/core/src/events/WorkerPoolMetrics.d.ts +65 -0
- package/dist/core/src/events/aggregation/AggregationWindow.d.ts +77 -0
- package/dist/core/src/events/aggregation/DeduplicationManager.d.ts +135 -0
- package/dist/core/src/events/aggregation/EventAggregationManager.d.ts +108 -0
- package/dist/core/src/events/aggregation/EventBatcher.d.ts +99 -0
- package/dist/core/src/events/aggregation/types.d.ts +117 -0
- package/dist/core/src/events/index.d.ts +18 -6
- package/dist/core/src/events/observability/OTelEventMetrics.d.ts +92 -0
- package/dist/core/src/events/observability/StreamWorkerMetrics.d.ts +76 -0
- package/dist/core/src/events/observability/index.d.ts +4 -0
- package/dist/core/src/events/queue-core.d.ts +77 -0
- package/dist/core/src/events/task-executor.d.ts +51 -0
- package/dist/core/src/events/types.d.ts +59 -0
- package/dist/core/src/ffi/NativeAccelerator.d.ts +62 -0
- package/dist/core/src/ffi/NativeHasher.d.ts +139 -0
- package/dist/core/src/ffi/cbor-fallback.d.ts +96 -0
- package/dist/core/src/ffi/hash-fallback.d.ts +33 -0
- package/dist/core/src/ffi/index.d.ts +10 -0
- package/dist/core/src/ffi/types.d.ts +135 -0
- package/dist/core/src/health/HealthProvider.d.ts +67 -0
- package/dist/core/src/helpers/Str.d.ts +15 -0
- package/dist/core/src/hooks/ActionManager.d.ts +132 -0
- package/dist/core/src/hooks/AsyncDetector.d.ts +84 -0
- package/dist/core/src/hooks/FilterManager.d.ts +71 -0
- package/dist/core/src/hooks/MigrationWarner.d.ts +24 -0
- package/dist/core/src/hooks/dlq-operations.d.ts +60 -0
- package/dist/core/src/hooks/types.d.ts +107 -0
- package/dist/core/src/http/CookieJar.d.ts +2 -2
- package/dist/core/src/http/types.d.ts +43 -3
- package/dist/core/src/index.d.ts +504 -15
- package/dist/core/src/observability/QueueDashboard.d.ts +136 -0
- package/dist/core/src/observability/contracts.d.ts +137 -0
- package/dist/core/src/reliability/DeadLetterQueueManager.d.ts +36 -3
- package/dist/core/src/runtime/adapter-bun.d.ts +12 -0
- package/dist/core/src/runtime/adapter-deno.d.ts +12 -0
- package/dist/core/src/runtime/adapter-node.d.ts +12 -0
- package/dist/core/src/runtime/adapter-unknown.d.ts +13 -0
- package/dist/core/src/runtime/archive.d.ts +17 -0
- package/dist/core/src/runtime/compression.d.ts +21 -0
- package/dist/core/src/runtime/deep-equals.d.ts +56 -0
- package/dist/core/src/runtime/detection.d.ts +22 -0
- package/dist/core/src/runtime/escape.d.ts +34 -0
- package/dist/core/src/runtime/index.d.ts +44 -0
- package/dist/core/src/runtime/markdown.d.ts +44 -0
- package/dist/core/src/runtime/types.d.ts +436 -0
- package/dist/core/src/runtime-helpers.d.ts +67 -0
- package/dist/core/src/runtime.d.ts +10 -118
- package/dist/core/src/testing/HttpTester.d.ts +1 -0
- package/dist/core/src/transpiler-utils.d.ts +170 -0
- package/dist/{ripple/src/engines → engines}/BunEngine.d.ts +11 -0
- package/dist/engines/UWebSocketsEngine.d.ts +97 -0
- package/dist/engines/WsEngine.d.ts +69 -0
- package/dist/{ripple/src/engines → engines}/index.d.ts +4 -0
- package/dist/index.js +1 -7139
- package/dist/index.js.map +3 -69
- package/dist/{ripple/src/serializers → serializers}/ISerializer.d.ts +1 -1
- package/dist/{ripple/src/serializers → serializers}/JsonSerializer.d.ts +1 -1
- package/dist/{ripple/src/serializers → serializers}/ProtobufSerializer.d.ts +6 -3
- package/dist/{ripple/src/types.d.ts → types.d.ts} +11 -0
- package/package.json +7 -2
- package/dist/atlas/src/DB.d.ts +0 -301
- package/dist/atlas/src/OrbitAtlas.d.ts +0 -9
- package/dist/atlas/src/config/defineConfig.d.ts +0 -14
- package/dist/atlas/src/config/index.d.ts +0 -7
- package/dist/atlas/src/config/loadConfig.d.ts +0 -48
- package/dist/atlas/src/connection/Connection.d.ts +0 -108
- package/dist/atlas/src/connection/ConnectionManager.d.ts +0 -111
- package/dist/atlas/src/drivers/BunSQLDriver.d.ts +0 -32
- package/dist/atlas/src/drivers/BunSQLPreparedStatement.d.ts +0 -118
- package/dist/atlas/src/drivers/MongoDBDriver.d.ts +0 -36
- package/dist/atlas/src/drivers/MySQLDriver.d.ts +0 -66
- package/dist/atlas/src/drivers/PostgresDriver.d.ts +0 -83
- package/dist/atlas/src/drivers/RedisDriver.d.ts +0 -43
- package/dist/atlas/src/drivers/SQLiteDriver.d.ts +0 -45
- package/dist/atlas/src/drivers/types.d.ts +0 -260
- package/dist/atlas/src/errors/index.d.ts +0 -45
- package/dist/atlas/src/grammar/Grammar.d.ts +0 -342
- package/dist/atlas/src/grammar/MongoGrammar.d.ts +0 -47
- package/dist/atlas/src/grammar/MySQLGrammar.d.ts +0 -54
- package/dist/atlas/src/grammar/NullGrammar.d.ts +0 -35
- package/dist/atlas/src/grammar/PostgresGrammar.d.ts +0 -62
- package/dist/atlas/src/grammar/SQLiteGrammar.d.ts +0 -32
- package/dist/atlas/src/index.d.ts +0 -67
- package/dist/atlas/src/migration/Migration.d.ts +0 -64
- package/dist/atlas/src/migration/MigrationRepository.d.ts +0 -65
- package/dist/atlas/src/migration/Migrator.d.ts +0 -110
- package/dist/atlas/src/migration/index.d.ts +0 -6
- package/dist/atlas/src/observability/AtlasMetrics.d.ts +0 -11
- package/dist/atlas/src/observability/AtlasObservability.d.ts +0 -15
- package/dist/atlas/src/observability/AtlasTracer.d.ts +0 -12
- package/dist/atlas/src/observability/index.d.ts +0 -9
- package/dist/atlas/src/orm/index.d.ts +0 -5
- package/dist/atlas/src/orm/model/DirtyTracker.d.ts +0 -121
- package/dist/atlas/src/orm/model/Model.d.ts +0 -449
- package/dist/atlas/src/orm/model/ModelRegistry.d.ts +0 -20
- package/dist/atlas/src/orm/model/concerns/HasAttributes.d.ts +0 -136
- package/dist/atlas/src/orm/model/concerns/HasEvents.d.ts +0 -36
- package/dist/atlas/src/orm/model/concerns/HasPersistence.d.ts +0 -87
- package/dist/atlas/src/orm/model/concerns/HasRelationships.d.ts +0 -117
- package/dist/atlas/src/orm/model/concerns/HasSerialization.d.ts +0 -64
- package/dist/atlas/src/orm/model/concerns/applyMixins.d.ts +0 -15
- package/dist/atlas/src/orm/model/concerns/index.d.ts +0 -12
- package/dist/atlas/src/orm/model/decorators.d.ts +0 -109
- package/dist/atlas/src/orm/model/errors.d.ts +0 -52
- package/dist/atlas/src/orm/model/index.d.ts +0 -10
- package/dist/atlas/src/orm/model/relationships.d.ts +0 -207
- package/dist/atlas/src/orm/model/types.d.ts +0 -12
- package/dist/atlas/src/orm/schema/SchemaRegistry.d.ts +0 -123
- package/dist/atlas/src/orm/schema/SchemaSniffer.d.ts +0 -54
- package/dist/atlas/src/orm/schema/index.d.ts +0 -6
- package/dist/atlas/src/orm/schema/types.d.ts +0 -85
- package/dist/atlas/src/query/Expression.d.ts +0 -60
- package/dist/atlas/src/query/NPlusOneDetector.d.ts +0 -10
- package/dist/atlas/src/query/QueryBuilder.d.ts +0 -573
- package/dist/atlas/src/query/clauses/GroupByClause.d.ts +0 -51
- package/dist/atlas/src/query/clauses/HavingClause.d.ts +0 -70
- package/dist/atlas/src/query/clauses/JoinClause.d.ts +0 -87
- package/dist/atlas/src/query/clauses/LimitClause.d.ts +0 -82
- package/dist/atlas/src/query/clauses/OrderByClause.d.ts +0 -69
- package/dist/atlas/src/query/clauses/SelectClause.d.ts +0 -71
- package/dist/atlas/src/query/clauses/WhereClause.d.ts +0 -167
- package/dist/atlas/src/query/clauses/index.d.ts +0 -11
- package/dist/atlas/src/schema/Blueprint.d.ts +0 -276
- package/dist/atlas/src/schema/ColumnDefinition.d.ts +0 -154
- package/dist/atlas/src/schema/ForeignKeyDefinition.d.ts +0 -37
- package/dist/atlas/src/schema/Schema.d.ts +0 -131
- package/dist/atlas/src/schema/grammars/MySQLSchemaGrammar.d.ts +0 -23
- package/dist/atlas/src/schema/grammars/PostgresSchemaGrammar.d.ts +0 -26
- package/dist/atlas/src/schema/grammars/SQLiteSchemaGrammar.d.ts +0 -28
- package/dist/atlas/src/schema/grammars/SchemaGrammar.d.ts +0 -97
- package/dist/atlas/src/schema/grammars/index.d.ts +0 -7
- package/dist/atlas/src/schema/index.d.ts +0 -8
- package/dist/atlas/src/seed/Factory.d.ts +0 -90
- package/dist/atlas/src/seed/Seeder.d.ts +0 -28
- package/dist/atlas/src/seed/SeederRunner.d.ts +0 -74
- package/dist/atlas/src/seed/index.d.ts +0 -6
- package/dist/atlas/src/types/index.d.ts +0 -1100
- package/dist/atlas/src/utils/levenshtein.d.ts +0 -9
- package/dist/core/src/adapters/PhotonAdapter.d.ts +0 -171
- package/dist/core/src/adapters/photon-types.d.ts +0 -73
- package/dist/core/src/http/middleware/BodySizeLimit.d.ts +0 -16
- package/dist/core/src/http/middleware/Cors.d.ts +0 -24
- package/dist/core/src/http/middleware/Csrf.d.ts +0 -23
- package/dist/core/src/http/middleware/HeaderTokenGate.d.ts +0 -28
- package/dist/core/src/http/middleware/SecurityHeaders.d.ts +0 -29
- package/dist/core/src/http/middleware/ThrottleRequests.d.ts +0 -18
- package/dist/core/src/instrumentation/index.d.ts +0 -35
- package/dist/core/src/instrumentation/opentelemetry.d.ts +0 -178
- package/dist/core/src/instrumentation/types.d.ts +0 -182
- package/dist/photon/src/index.d.ts +0 -84
- package/dist/photon/src/middleware/binary.d.ts +0 -31
- package/dist/photon/src/middleware/htmx.d.ts +0 -39
- package/dist/photon/src/middleware/ratelimit.d.ts +0 -157
- package/dist/photon/src/openapi.d.ts +0 -19
- /package/dist/{ripple/src/channels → channels}/Channel.d.ts +0 -0
- /package/dist/{ripple/src/channels → channels}/ChannelManager.d.ts +0 -0
- /package/dist/{ripple/src/channels → channels}/index.d.ts +0 -0
- /package/dist/{ripple/src/drivers → drivers}/LocalDriver.d.ts +0 -0
- /package/dist/{ripple/src/drivers → drivers}/NATSDriver.d.ts +0 -0
- /package/dist/{ripple/src/drivers → drivers}/RedisDriver.d.ts +0 -0
- /package/dist/{ripple/src/drivers → drivers}/index.d.ts +0 -0
- /package/dist/{ripple/src/engines → engines}/IRippleEngine.d.ts +0 -0
- /package/dist/{ripple/src/errors → errors}/RippleError.d.ts +0 -0
- /package/dist/{ripple/src/errors → errors}/index.d.ts +0 -0
- /package/dist/{ripple/src/events → events}/BroadcastEvent.d.ts +0 -0
- /package/dist/{ripple/src/events → events}/BroadcastManager.d.ts +0 -0
- /package/dist/{ripple/src/events → events}/Broadcaster.d.ts +0 -0
- /package/dist/{ripple/src/events → events}/index.d.ts +0 -0
- /package/dist/{ripple/src/health → health}/HealthChecker.d.ts +0 -0
- /package/dist/{ripple/src/health → health}/index.d.ts +0 -0
- /package/dist/{ripple/src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{ripple/src/logging → logging}/Logger.d.ts +0 -0
- /package/dist/{ripple/src/logging → logging}/index.d.ts +0 -0
- /package/dist/{ripple/src/middleware → middleware}/InterceptorManager.d.ts +0 -0
- /package/dist/{ripple/src/observability → observability}/RippleMetrics.d.ts +0 -0
- /package/dist/{ripple/src/reliability → reliability}/AckManager.d.ts +0 -0
- /package/dist/{ripple/src/serializers → serializers}/index.d.ts +0 -0
- /package/dist/{ripple/src/tracking → tracking}/ConnectionTracker.d.ts +0 -0
- /package/dist/{ripple/src/tracking → tracking}/SessionManager.d.ts +0 -0
- /package/dist/{ripple/src/tracking → tracking}/index.d.ts +0 -0
- /package/dist/{ripple/src/utils → utils}/MessageSerializer.d.ts +0 -0
- /package/dist/{ripple/src/utils → utils}/TokenBucket.d.ts +0 -0
- /package/dist/{ripple/src/utils → utils}/index.d.ts +0 -0
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @gravito/core - OpenTelemetry 類型定義
|
|
3
|
-
*
|
|
4
|
-
* 定義 OpenTelemetry SDK 集成所需的類型與介面。
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Tracing(追蹤)導出器類型
|
|
8
|
-
*/
|
|
9
|
-
export type TracingExporter = 'jaeger' | 'otlp' | 'console' | 'none';
|
|
10
|
-
/**
|
|
11
|
-
* Metrics(指標)導出器類型
|
|
12
|
-
*/
|
|
13
|
-
export type MetricsExporter = 'prometheus' | 'otlp' | 'console' | 'none';
|
|
14
|
-
/**
|
|
15
|
-
* Tracing 配置選項
|
|
16
|
-
*/
|
|
17
|
-
export interface TracingConfig {
|
|
18
|
-
/** 是否啟用追蹤(預設:true) */
|
|
19
|
-
enabled?: boolean;
|
|
20
|
-
/** 導出器類型(預設:otlp) */
|
|
21
|
-
exporter?: TracingExporter;
|
|
22
|
-
/** Jaeger HTTP 端點(使用 jaeger 導出器時) */
|
|
23
|
-
jaegerEndpoint?: string;
|
|
24
|
-
/** OTLP 端點(使用 otlp 導出器時) */
|
|
25
|
-
otlpEndpoint?: string;
|
|
26
|
-
/** 採樣率(0-1,預設:1.0 = 100%) */
|
|
27
|
-
samplingRate?: number;
|
|
28
|
-
/** 是否啟用自動儀器化(預設:false) */
|
|
29
|
-
autoInstrumentation?: boolean;
|
|
30
|
-
/** Batch Span Processor 配置 */
|
|
31
|
-
batchConfig?: {
|
|
32
|
-
/** 最大批次大小(預設:512) */
|
|
33
|
-
maxExportBatchSize?: number;
|
|
34
|
-
/** 導出間隔(毫秒,預設:5000) */
|
|
35
|
-
scheduledDelayMillis?: number;
|
|
36
|
-
/** 導出超時(毫秒,預設:30000) */
|
|
37
|
-
exportTimeoutMillis?: number;
|
|
38
|
-
/** 最大隊列大小(預設:2048) */
|
|
39
|
-
maxQueueSize?: number;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Metrics 配置選項
|
|
44
|
-
*/
|
|
45
|
-
export interface MetricsConfig {
|
|
46
|
-
/** 是否啟用指標(預設:true) */
|
|
47
|
-
enabled?: boolean;
|
|
48
|
-
/** 導出器類型(預設:otlp) */
|
|
49
|
-
exporter?: MetricsExporter;
|
|
50
|
-
/** Prometheus 端口(使用 prometheus 導出器時,預設:9090) */
|
|
51
|
-
prometheusPort?: number;
|
|
52
|
-
/** Prometheus 端點路徑(預設:/metrics) */
|
|
53
|
-
prometheusEndpoint?: string;
|
|
54
|
-
/** OTLP 端點(使用 otlp 導出器時) */
|
|
55
|
-
otlpEndpoint?: string;
|
|
56
|
-
/** 導出間隔(毫秒,預設:60000) */
|
|
57
|
-
exportIntervalMillis?: number;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* OpenTelemetry SDK 完整配置
|
|
61
|
-
*/
|
|
62
|
-
export interface OpenTelemetryConfig {
|
|
63
|
-
/** 是否啟用 OpenTelemetry(預設:true) */
|
|
64
|
-
enabled?: boolean;
|
|
65
|
-
/** 服務名稱(預設:gravito-app) */
|
|
66
|
-
serviceName?: string;
|
|
67
|
-
/** 服務版本(預設:1.0.0) */
|
|
68
|
-
serviceVersion?: string;
|
|
69
|
-
/** 環境名稱(預設:development) */
|
|
70
|
-
environment?: 'development' | 'staging' | 'production' | string;
|
|
71
|
-
/** 自定義 Resource Attributes */
|
|
72
|
-
resourceAttributes?: Record<string, string | number | boolean>;
|
|
73
|
-
/** Tracing 配置 */
|
|
74
|
-
tracing?: TracingConfig;
|
|
75
|
-
/** Metrics 配置 */
|
|
76
|
-
metrics?: MetricsConfig;
|
|
77
|
-
/** 是否在控制台輸出初始化日誌(預設:true) */
|
|
78
|
-
logInitialization?: boolean;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* OpenTelemetry SDK 實例包裝
|
|
82
|
-
*
|
|
83
|
-
* 封裝初始化後的 SDK 實例與相關資源。
|
|
84
|
-
*/
|
|
85
|
-
export interface OpenTelemetrySDK {
|
|
86
|
-
/** SDK 是否已啟動 */
|
|
87
|
-
isStarted: boolean;
|
|
88
|
-
/** SDK 是否已關閉 */
|
|
89
|
-
isShutdown: boolean;
|
|
90
|
-
/** 服務名稱 */
|
|
91
|
-
serviceName: string;
|
|
92
|
-
/** 服務版本 */
|
|
93
|
-
serviceVersion: string;
|
|
94
|
-
/** Tracer Provider(如果啟用追蹤) */
|
|
95
|
-
tracerProvider: unknown | null;
|
|
96
|
-
/** Meter Provider(如果啟用指標) */
|
|
97
|
-
meterProvider: unknown | null;
|
|
98
|
-
/** 原始配置 */
|
|
99
|
-
config: OpenTelemetryConfig;
|
|
100
|
-
/** 關閉 SDK */
|
|
101
|
-
shutdown: () => Promise<void>;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* 支援的 OpenTelemetry 環境變數
|
|
105
|
-
*
|
|
106
|
-
* 參考:https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/
|
|
107
|
-
*/
|
|
108
|
-
export declare const OTEL_ENV_VARS: {
|
|
109
|
-
/** 服務名稱 */
|
|
110
|
-
readonly SERVICE_NAME: "OTEL_SERVICE_NAME";
|
|
111
|
-
/** 服務版本 */
|
|
112
|
-
readonly SERVICE_VERSION: "OTEL_SERVICE_VERSION";
|
|
113
|
-
/** 環境名稱 */
|
|
114
|
-
readonly DEPLOYMENT_ENVIRONMENT: "OTEL_DEPLOYMENT_ENVIRONMENT";
|
|
115
|
-
/** Resource Attributes */
|
|
116
|
-
readonly RESOURCE_ATTRIBUTES: "OTEL_RESOURCE_ATTRIBUTES";
|
|
117
|
-
/** OTLP 端點(通用) */
|
|
118
|
-
readonly OTLP_ENDPOINT: "OTEL_EXPORTER_OTLP_ENDPOINT";
|
|
119
|
-
/** OTLP Traces 端點 */
|
|
120
|
-
readonly OTLP_TRACES_ENDPOINT: "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT";
|
|
121
|
-
/** OTLP Metrics 端點 */
|
|
122
|
-
readonly OTLP_METRICS_ENDPOINT: "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT";
|
|
123
|
-
/** 採樣器類型 */
|
|
124
|
-
readonly TRACES_SAMPLER: "OTEL_TRACES_SAMPLER";
|
|
125
|
-
/** 採樣率參數 */
|
|
126
|
-
readonly TRACES_SAMPLER_ARG: "OTEL_TRACES_SAMPLER_ARG";
|
|
127
|
-
/** 是否啟用 OpenTelemetry */
|
|
128
|
-
readonly GRAVITO_ENABLED: "GRAVITO_OTEL_ENABLED";
|
|
129
|
-
/** Jaeger 端點 */
|
|
130
|
-
readonly JAEGER_ENDPOINT: "JAEGER_ENDPOINT";
|
|
131
|
-
/** Prometheus 端口 */
|
|
132
|
-
readonly PROMETHEUS_PORT: "PROMETHEUS_PORT";
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* 完整的 BatchConfig 類型(所有屬性必填)
|
|
136
|
-
*/
|
|
137
|
-
export interface BatchConfigRequired {
|
|
138
|
-
maxExportBatchSize: number;
|
|
139
|
-
scheduledDelayMillis: number;
|
|
140
|
-
exportTimeoutMillis: number;
|
|
141
|
-
maxQueueSize: number;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* 完整的 TracingConfig 類型(所有屬性必填)
|
|
145
|
-
*/
|
|
146
|
-
export interface TracingConfigRequired {
|
|
147
|
-
enabled: boolean;
|
|
148
|
-
exporter: TracingExporter;
|
|
149
|
-
jaegerEndpoint: string;
|
|
150
|
-
otlpEndpoint: string;
|
|
151
|
-
samplingRate: number;
|
|
152
|
-
autoInstrumentation: boolean;
|
|
153
|
-
batchConfig: BatchConfigRequired;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* 完整的 MetricsConfig 類型(所有屬性必填)
|
|
157
|
-
*/
|
|
158
|
-
export interface MetricsConfigRequired {
|
|
159
|
-
enabled: boolean;
|
|
160
|
-
exporter: MetricsExporter;
|
|
161
|
-
prometheusPort: number;
|
|
162
|
-
prometheusEndpoint: string;
|
|
163
|
-
otlpEndpoint: string;
|
|
164
|
-
exportIntervalMillis: number;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* 完整的 OpenTelemetryConfig 類型(所有屬性必填)
|
|
168
|
-
*/
|
|
169
|
-
export interface OpenTelemetryConfigRequired {
|
|
170
|
-
enabled: boolean;
|
|
171
|
-
serviceName: string;
|
|
172
|
-
serviceVersion: string;
|
|
173
|
-
environment: 'development' | 'staging' | 'production';
|
|
174
|
-
resourceAttributes: Record<string, string | number | boolean>;
|
|
175
|
-
tracing: TracingConfigRequired;
|
|
176
|
-
metrics: MetricsConfigRequired;
|
|
177
|
-
logInitialization: boolean;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* 預設配置值
|
|
181
|
-
*/
|
|
182
|
-
export declare const DEFAULT_CONFIG: OpenTelemetryConfigRequired;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @gravito/photon - High-performance web engine for the Gravito Galaxy Architecture.
|
|
3
|
-
*
|
|
4
|
-
* Photon serves as the foundational HTTP layer for Gravito, providing an ultra-fast,
|
|
5
|
-
* type-safe routing system based on Hono. It is designed to be the "light" that
|
|
6
|
-
* connects Satellites (domain plugins) and Orbits (infrastructure) within the ecosystem.
|
|
7
|
-
*
|
|
8
|
-
* Key features:
|
|
9
|
-
* - Zero-overhead routing and middleware.
|
|
10
|
-
* - Full TypeScript inference for request parameters and body.
|
|
11
|
-
* - Built-in support for HTMX and binary (CBOR) protocols.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* import { Photon } from '@gravito/photon'
|
|
16
|
-
*
|
|
17
|
-
* const app = new Photon()
|
|
18
|
-
*
|
|
19
|
-
* app.get('/welcome', (c) => c.text('Welcome to the Galaxy!'))
|
|
20
|
-
*
|
|
21
|
-
* export default app
|
|
22
|
-
* ```
|
|
23
|
-
* @packageDocumentation
|
|
24
|
-
*/
|
|
25
|
-
export * from 'hono';
|
|
26
|
-
/**
|
|
27
|
-
* The primary application class for Photon.
|
|
28
|
-
*
|
|
29
|
-
* An alias for `Hono`, providing the core routing and middleware capabilities.
|
|
30
|
-
* Use this to define your API structure and mount domain-specific Satellites.
|
|
31
|
-
*
|
|
32
|
-
* @remarks
|
|
33
|
-
* Photon extends Hono's capabilities with Gravito-specific optimizations.
|
|
34
|
-
* It serves as the entry point for defining routes, applying middleware,
|
|
35
|
-
* and handling the request-response lifecycle.
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const app = new Photon()
|
|
40
|
-
*
|
|
41
|
-
* // Basic routing
|
|
42
|
-
* app.get('/api/health', (c) => c.json({ status: 'ok' }))
|
|
43
|
-
*
|
|
44
|
-
* // Middleware integration
|
|
45
|
-
* app.use('/api/*', myMiddleware)
|
|
46
|
-
*
|
|
47
|
-
* // Mounting sub-routers
|
|
48
|
-
* app.route('/v1', v1Router)
|
|
49
|
-
* ```
|
|
50
|
-
* @public
|
|
51
|
-
*/
|
|
52
|
-
export { Hono as Photon } from 'hono';
|
|
53
|
-
/**
|
|
54
|
-
* Binary-related middleware for Photon.
|
|
55
|
-
*
|
|
56
|
-
* Provides utilities for handling binary data formats like CBOR,
|
|
57
|
-
* optimizing payload size and serialization speed for high-performance APIs.
|
|
58
|
-
*
|
|
59
|
-
* @public
|
|
60
|
-
*/
|
|
61
|
-
export * from './middleware/binary';
|
|
62
|
-
/**
|
|
63
|
-
* HTMX-related middleware for Photon.
|
|
64
|
-
*
|
|
65
|
-
* Enhances Photon with first-class support for HTMX, including
|
|
66
|
-
* automatic request detection and simplified header access for hypermedia-driven UIs.
|
|
67
|
-
*
|
|
68
|
-
* @public
|
|
69
|
-
*/
|
|
70
|
-
export * from './middleware/htmx';
|
|
71
|
-
/**
|
|
72
|
-
* Rate limiting middleware for Photon.
|
|
73
|
-
*
|
|
74
|
-
* Provides built-in rate limiting with token bucket and sliding window strategies.
|
|
75
|
-
* Supports both memory-based and custom storage backends.
|
|
76
|
-
*
|
|
77
|
-
* @public
|
|
78
|
-
*/
|
|
79
|
-
export * from './middleware/ratelimit';
|
|
80
|
-
/**
|
|
81
|
-
* OpenAPI utilities
|
|
82
|
-
* @public
|
|
83
|
-
*/
|
|
84
|
-
export * from './openapi';
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { MiddlewareHandler } from 'hono';
|
|
2
|
-
/**
|
|
3
|
-
* Binary Middleware for Photon.
|
|
4
|
-
*
|
|
5
|
-
* Automatically detects 'Accept: application/cbor' and encodes
|
|
6
|
-
* JSON responses using the CBOR binary format for high-performance communication.
|
|
7
|
-
*
|
|
8
|
-
* @remarks
|
|
9
|
-
* This middleware is essential for high-frequency API calls where payload size
|
|
10
|
-
* and serialization speed are critical. It leverages the `cborg` library for
|
|
11
|
-
* efficient binary encoding.
|
|
12
|
-
*
|
|
13
|
-
* @returns A Hono middleware handler that intercepts JSON responses.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* import { Photon } from '@gravito/photon'
|
|
18
|
-
* import { binaryMiddleware } from '@gravito/photon/middleware/binary'
|
|
19
|
-
*
|
|
20
|
-
* const app = new Photon()
|
|
21
|
-
* app.use(binaryMiddleware())
|
|
22
|
-
*
|
|
23
|
-
* app.get('/api/data', (c) => c.json({ items: [1, 2, 3] }))
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @performance
|
|
27
|
-
* - CBOR encoding is ~2-3x faster than JSON.stringify for large objects.
|
|
28
|
-
* - Binary format reduces payload size by 20-40% on average.
|
|
29
|
-
* - Optimized to read body directly without clone(), saving ~30% overhead.
|
|
30
|
-
*/
|
|
31
|
-
export declare const binaryMiddleware: () => MiddlewareHandler;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { MiddlewareHandler } from 'hono';
|
|
2
|
-
/**
|
|
3
|
-
* HTMX Middleware for Photon.
|
|
4
|
-
*
|
|
5
|
-
* Automatically detects HTMX requests and populates the context with
|
|
6
|
-
* HTMX-specific headers and state.
|
|
7
|
-
*
|
|
8
|
-
* @remarks
|
|
9
|
-
* This middleware enables hypermedia-driven UIs by providing first-class
|
|
10
|
-
* support for HTMX. It allows handlers to easily distinguish between
|
|
11
|
-
* full-page loads and partial updates.
|
|
12
|
-
*
|
|
13
|
-
* @returns A Hono middleware handler that populates HTMX context variables.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* import { Photon } from '@gravito/photon'
|
|
18
|
-
* import { htmxMiddleware } from '@gravito/photon/middleware/htmx'
|
|
19
|
-
*
|
|
20
|
-
* const app = new Photon()
|
|
21
|
-
* app.use(htmxMiddleware())
|
|
22
|
-
*
|
|
23
|
-
* app.get('/search', async (c) => {
|
|
24
|
-
* // Check if request is from HTMX
|
|
25
|
-
* if (c.get('htmx')) {
|
|
26
|
-
* return c.html('<div>Search results...</div>')
|
|
27
|
-
* }
|
|
28
|
-
*
|
|
29
|
-
* return c.html('<html>...</html>')
|
|
30
|
-
* })
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @context_variables
|
|
34
|
-
* - `htmx`: Boolean indicating if the request is an HTMX request.
|
|
35
|
-
* - `htmx.boosted`: Boolean indicating if the request was boosted.
|
|
36
|
-
* - `htmx.target`: The ID of the target element.
|
|
37
|
-
* - `htmx.trigger`: The ID of the trigger element.
|
|
38
|
-
*/
|
|
39
|
-
export declare const htmxMiddleware: () => MiddlewareHandler;
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Rate Limiting Middleware for Photon
|
|
3
|
-
*
|
|
4
|
-
* Provides token bucket and sliding window rate limiting strategies.
|
|
5
|
-
* Supports memory-based and Redis-based storage backends.
|
|
6
|
-
*
|
|
7
|
-
* @module @gravito/photon/middleware/ratelimit
|
|
8
|
-
* @since 1.0.0
|
|
9
|
-
*/
|
|
10
|
-
import type { Context, MiddlewareHandler } from '@gravito/photon';
|
|
11
|
-
export interface RateLimitConfig {
|
|
12
|
-
/**
|
|
13
|
-
* Maximum number of requests allowed within the time window
|
|
14
|
-
* @default 100
|
|
15
|
-
*/
|
|
16
|
-
maxRequests: number;
|
|
17
|
-
/**
|
|
18
|
-
* Time window in milliseconds
|
|
19
|
-
* @default 60000 (1 minute)
|
|
20
|
-
*/
|
|
21
|
-
windowMs: number;
|
|
22
|
-
/**
|
|
23
|
-
* Strategy for rate limiting
|
|
24
|
-
* - 'token-bucket': Smooth rate limiting with token refill
|
|
25
|
-
* - 'sliding-window': Time-based window that slides continuously
|
|
26
|
-
* @default 'token-bucket'
|
|
27
|
-
*/
|
|
28
|
-
strategy?: 'token-bucket' | 'sliding-window';
|
|
29
|
-
/**
|
|
30
|
-
* Custom key generator function
|
|
31
|
-
* @default (c) => c.req.header('x-forwarded-for') || c.req.header('x-real-ip') || 'unknown'
|
|
32
|
-
*/
|
|
33
|
-
keyGenerator?: (c: Context) => string | Promise<string>;
|
|
34
|
-
/**
|
|
35
|
-
* Storage backend for rate limit state
|
|
36
|
-
* @default new MemoryStore()
|
|
37
|
-
*/
|
|
38
|
-
store?: RateLimitStore;
|
|
39
|
-
/**
|
|
40
|
-
* Custom handler for rate-limited requests
|
|
41
|
-
* @default (c) => c.json({ error: 'Too Many Requests', retryAfter: <seconds> }, 429)
|
|
42
|
-
*/
|
|
43
|
-
onRateLimitExceeded?: (c: Context, retryAfter: number) => Response | Promise<Response>;
|
|
44
|
-
/**
|
|
45
|
-
* Skip rate limiting for certain requests
|
|
46
|
-
* @default undefined
|
|
47
|
-
*/
|
|
48
|
-
skip?: (c: Context) => boolean | Promise<boolean>;
|
|
49
|
-
/**
|
|
50
|
-
* Custom headers to include in responses
|
|
51
|
-
* @default true
|
|
52
|
-
*/
|
|
53
|
-
standardHeaders?: boolean;
|
|
54
|
-
/**
|
|
55
|
-
* Include draft RateLimit headers (RateLimit-*)
|
|
56
|
-
* @default false
|
|
57
|
-
*/
|
|
58
|
-
draftHeaders?: boolean;
|
|
59
|
-
}
|
|
60
|
-
export interface RateLimitStore {
|
|
61
|
-
/**
|
|
62
|
-
* Increment request count and return current state
|
|
63
|
-
*/
|
|
64
|
-
increment(key: string): Promise<RateLimitState>;
|
|
65
|
-
/**
|
|
66
|
-
* Reset the rate limit for a key
|
|
67
|
-
*/
|
|
68
|
-
reset(key: string): Promise<void>;
|
|
69
|
-
/**
|
|
70
|
-
* Get current state without incrementing
|
|
71
|
-
*/
|
|
72
|
-
get(key: string): Promise<RateLimitState | null>;
|
|
73
|
-
}
|
|
74
|
-
export interface RateLimitState {
|
|
75
|
-
/**
|
|
76
|
-
* Number of requests made in current window
|
|
77
|
-
*/
|
|
78
|
-
count: number;
|
|
79
|
-
/**
|
|
80
|
-
* Timestamp when the window expires (ms)
|
|
81
|
-
*/
|
|
82
|
-
resetTime: number;
|
|
83
|
-
/**
|
|
84
|
-
* Remaining requests allowed
|
|
85
|
-
*/
|
|
86
|
-
remaining: number;
|
|
87
|
-
}
|
|
88
|
-
export declare class MemoryStore implements RateLimitStore {
|
|
89
|
-
private config;
|
|
90
|
-
private store;
|
|
91
|
-
private cleanupInterval;
|
|
92
|
-
constructor(config: {
|
|
93
|
-
maxRequests: number;
|
|
94
|
-
windowMs: number;
|
|
95
|
-
}, cleanupIntervalMs?: number);
|
|
96
|
-
increment(key: string): Promise<RateLimitState>;
|
|
97
|
-
reset(key: string): Promise<void>;
|
|
98
|
-
get(key: string): Promise<RateLimitState | null>;
|
|
99
|
-
/**
|
|
100
|
-
* Cleanup resources
|
|
101
|
-
*/
|
|
102
|
-
destroy(): void;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Create a rate limiting middleware
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* ```typescript
|
|
109
|
-
* import { Photon } from '@gravito/photon'
|
|
110
|
-
* import { rateLimit } from '@gravito/photon/middleware'
|
|
111
|
-
*
|
|
112
|
-
* const app = new Photon()
|
|
113
|
-
*
|
|
114
|
-
* // Basic usage: 100 requests per minute
|
|
115
|
-
* app.use('*', rateLimit({ maxRequests: 100, windowMs: 60000 }))
|
|
116
|
-
*
|
|
117
|
-
* // Per-user rate limiting
|
|
118
|
-
* app.use('/api/*', rateLimit({
|
|
119
|
-
* maxRequests: 50,
|
|
120
|
-
* windowMs: 60000,
|
|
121
|
-
* keyGenerator: (c) => {
|
|
122
|
-
* const userId = c.get('userId')
|
|
123
|
-
* return userId || c.req.header('x-forwarded-for') || 'anonymous'
|
|
124
|
-
* }
|
|
125
|
-
* }))
|
|
126
|
-
* ```
|
|
127
|
-
*/
|
|
128
|
-
export declare function rateLimit(config: RateLimitConfig): MiddlewareHandler;
|
|
129
|
-
/**
|
|
130
|
-
* Convenience factory: Create rate limiter with common presets
|
|
131
|
-
*/
|
|
132
|
-
export declare const createRateLimiter: {
|
|
133
|
-
/**
|
|
134
|
-
* Strict: 10 requests per minute
|
|
135
|
-
*/
|
|
136
|
-
strict: (overrides?: Partial<RateLimitConfig>) => MiddlewareHandler;
|
|
137
|
-
/**
|
|
138
|
-
* Moderate: 60 requests per minute
|
|
139
|
-
*/
|
|
140
|
-
moderate: (overrides?: Partial<RateLimitConfig>) => MiddlewareHandler;
|
|
141
|
-
/**
|
|
142
|
-
* Lenient: 100 requests per minute
|
|
143
|
-
*/
|
|
144
|
-
lenient: (overrides?: Partial<RateLimitConfig>) => MiddlewareHandler;
|
|
145
|
-
/**
|
|
146
|
-
* API: 1000 requests per hour
|
|
147
|
-
*/
|
|
148
|
-
api: (overrides?: Partial<RateLimitConfig>) => MiddlewareHandler;
|
|
149
|
-
/**
|
|
150
|
-
* Auth: 5 attempts per 15 minutes (for login endpoints)
|
|
151
|
-
*/
|
|
152
|
-
auth: (overrides?: Partial<RateLimitConfig>) => MiddlewareHandler;
|
|
153
|
-
};
|
|
154
|
-
/**
|
|
155
|
-
* Export convenience preset
|
|
156
|
-
*/
|
|
157
|
-
export { createRateLimiter as rateLimiter };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file packages/photon/src/openapi.ts
|
|
3
|
-
* @module @gravito/photon/openapi
|
|
4
|
-
* @description OpenAPI (Swagger) integration for Photon
|
|
5
|
-
*/
|
|
6
|
-
import type { RouteConfig } from '@hono/zod-openapi';
|
|
7
|
-
import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
|
|
8
|
-
import { z } from 'zod';
|
|
9
|
-
/**
|
|
10
|
-
* Photon Open API Class
|
|
11
|
-
* Extends OpenAPIHono to provide a seamless OpenAPI integration.
|
|
12
|
-
*/
|
|
13
|
-
export declare class PhotonOpenAPI extends OpenAPIHono {
|
|
14
|
-
/**
|
|
15
|
-
* Helper to create a fully typed route definition.
|
|
16
|
-
*/
|
|
17
|
-
static route(config: RouteConfig): RouteConfig;
|
|
18
|
-
}
|
|
19
|
-
export { createRoute, z };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|