@gravito/core 2.0.0 → 2.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/dist/engine/index.js +62 -14
- package/dist/engine/index.js.map +7 -6
- package/dist/ffi/index.js +22 -493
- package/dist/ffi/index.js.map +3 -6
- package/dist/http/types.d.ts +7 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +6221 -6557
- package/dist/index.js.map +15 -17
- package/dist/runtime.d.ts +1 -1
- package/package.json +6 -13
- package/dist/compat.cjs +0 -49
- package/dist/compat.cjs.map +0 -9
- package/dist/engine/index.cjs +0 -1693
- package/dist/engine/index.cjs.map +0 -22
- package/dist/ffi/index.cjs +0 -621
- package/dist/ffi/index.cjs.map +0 -14
- package/dist/index.cjs +0 -14260
- package/dist/index.cjs.map +0 -168
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/platform/node/index.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/platform/index.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/version.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/internal/semver.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/types.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/diag.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/context/context.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/context.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/status.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/context-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/metrics.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/propagation.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/propagation-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/trace.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/index.js", "../src/ffi/
|
|
3
|
+
"sources": ["../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/platform/node/index.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/platform/index.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/version.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/internal/semver.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/types.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/diag.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/context/context.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/context.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/status.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/context-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/diag-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/metrics.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/metrics-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/propagation.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/propagation-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/api/trace.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/trace-api.js", "../../../node_modules/.bun/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/build/src/index.js", "../src/ffi/hash-fallback.ts", "../src/ffi/NativeHasher.ts", "../src/adapters/bun/types.ts", "../src/adapters/bun/RadixNode.ts", "../src/adapters/bun/RadixRouter.ts", "../src/engine/AOTRouter.ts", "../src/transpiler-utils.ts", "../src/engine/analyzer.ts", "../src/engine/constants.ts", "../src/Container/RequestScopeMetrics.ts", "../src/Container/RequestScopeManager.ts", "../src/engine/FastContext.ts", "../src/engine/MinimalContext.ts", "../src/engine/path.ts", "../src/engine/pool.ts", "../src/engine/Gravito.ts", "../src/adapters/bun/BunRequest.ts", "../src/adapters/bun/BunContext.ts", "../src/adapters/bun/BunWebSocketHandler.ts", "../src/adapters/bun/BunNativeAdapter.ts", "../src/adapters/GravitoEngineAdapter.ts", "../src/adapters/types.ts", "../src/Application.ts", "../src/runtime/adapter-bun.ts", "../src/runtime/detection.ts", "../src/runtime/adapter-deno.ts", "../src/runtime/adapter-node.ts", "../src/runtime/adapter-unknown.ts", "../src/runtime/archive.ts", "../src/runtime/compression.ts", "../src/runtime/markdown.ts", "../src/runtime/deep-equals.ts", "../src/runtime/escape.ts", "../src/runtime/index.ts", "../src/ConfigManager.ts", "../src/compat/async-local-storage.ts", "../src/exceptions/CircularDependencyException.ts", "../src/Container.ts", "../src/Logger.ts", "../src/error-handling/RequestScopeErrorContext.ts", "../src/exceptions/GravitoException.ts", "../src/exceptions/HttpException.ts", "../src/exceptions/ValidationException.ts", "../src/helpers/response.ts", "../src/ErrorHandler.ts", "../src/types/events.ts", "../src/EventManager.ts", "../src/events/DeadLetterQueue.ts", "../src/events/BackpressureManager.ts", "../src/events/PriorityEscalationManager.ts", "../src/events/queue-core.ts", "../src/events/CircuitBreaker.ts", "../src/events/task-executor.ts", "../src/events/EventPriorityQueue.ts", "../src/events/aggregation/types.ts", "../src/events/aggregation/AggregationWindow.ts", "../src/events/aggregation/DeduplicationManager.ts", "../src/events/aggregation/EventBatcher.ts", "../src/events/aggregation/EventAggregationManager.ts", "../src/events/EventOptions.ts", "../src/events/IdempotencyCache.ts", "../src/hooks/ActionManager.ts", "../src/hooks/AsyncDetector.ts", "../src/hooks/dlq-operations.ts", "../src/hooks/FilterManager.ts", "../src/hooks/MigrationWarner.ts", "../src/compat/crypto.ts", "../src/reliability/RetryPolicy.ts", "../src/reliability/DeadLetterQueueManager.ts", "../src/HookManager.ts", "../src/events/observability/EventMetrics.ts", "../src/events/observability/EventTracer.ts", "../src/events/observability/EventTracing.ts", "../src/events/observability/ObservableHookManager.ts", "../src/events/observability/OTelEventMetrics.ts", "../src/GlobalErrorHandlers.ts", "../src/observability/contracts.ts", "../src/helpers/data.ts", "../src/helpers/Arr.ts", "../src/helpers/errors.ts", "../src/helpers/Str.ts", "../src/helpers.ts", "../src/http/CookieJar.ts", "../src/exceptions/ModelNotFoundException.ts", "../src/Route.ts", "../src/router/ControllerDispatcher.ts", "../src/router/RequestValidator.ts", "../src/Router.ts", "../src/security/Encrypter.ts", "../src/security/Hasher.ts", "../src/PlanetCore.ts", "../src/CommandKernel.ts", "../src/cli/queue-commands.ts", "../src/events/FlowControlStrategy.ts", "../src/events/RetryScheduler.ts", "../src/events/WorkerPoolMetrics.ts", "../src/events/WorkerPool.ts", "../src/observability/QueueDashboard.ts", "../src/exceptions/AuthenticationException.ts", "../src/exceptions/AuthorizationException.ts", "../src/ServiceProvider.ts", "../src/GravitoServer.ts", "../src/health/HealthProvider.ts", "../src/http/cookie.ts", "../src/RequestContext.ts", "../src/testing/TestResponse.ts", "../src/testing/HttpTester.ts", "../src/runtime-helpers.ts", "../src/binary/BinaryUtils.ts", "../src/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map",
|
|
6
6
|
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./globalThis\"), exports);\n//# sourceMappingURL=index.js.map",
|
|
@@ -49,11 +49,9 @@
|
|
|
49
49
|
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nclass TraceAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n this.deleteSpan = context_utils_1.deleteSpan;\n this.getSpan = context_utils_1.getSpan;\n this.getActiveSpan = context_utils_1.getActiveSpan;\n this.getSpanContext = context_utils_1.getSpanContext;\n this.setSpan = context_utils_1.setSpan;\n this.setSpanContext = context_utils_1.setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n setGlobalTracerProvider(provider) {\n const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n /**\n * Returns the global tracer provider.\n */\n getTracerProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n }\n /**\n * Returns a tracer from the global tracer provider.\n */\n getTracer(name, version) {\n return this.getTracerProvider().getTracer(name, version);\n }\n /** Remove the global tracer provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map",
|
|
50
50
|
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/** Entrypoint for trace API */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map",
|
|
51
51
|
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n context: context_api_1.context,\n diag: diag_api_1.diag,\n metrics: metrics_api_1.metrics,\n propagation: propagation_api_1.propagation,\n trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map",
|
|
52
|
-
"/**\n * FFI (Foreign Function Interface) 類型定義\n * 支持 bun:ffi 的原生加速層\n */\n\n/**\n * CBOR 編碼/解碼加速器介面\n * 可由原生 C 實現或 JavaScript 回退實現\n */\nexport interface CborAccelerator {\n /**\n * 將任意 JavaScript 物件編碼為 CBOR 二進制格式\n * @param data - 要編碼的物件(支援:map、string、uint、float64、bytes、null、boolean)\n * @returns CBOR 編碼的二進制資料\n */\n encode(data: Record<string, unknown>): Uint8Array\n\n /**\n * 將 CBOR 二進制格式解碼為 JavaScript 物件\n * @param bytes - CBOR 編碼的二進制資料\n * @returns 解碼後的物件\n */\n decode(bytes: Uint8Array): Record<string, unknown>\n}\n\n/**\n * FFI 加速層狀態報告\n */\nexport interface NativeAcceleratorStatus {\n /**\n * 原生 FFI 加速是否可用\n */\n readonly available: boolean\n\n /**\n * 當前使用的運行時實現\n * - 'bun-ffi': Bun C 編譯器(bun:ffi 的 cc())\n * - 'js-fallback': 手寫 JavaScript CBOR 實現\n * - 'cborg': npm 的 cborg 套件(已棄用,僅用於向後相容)\n */\n readonly runtime: 'bun-ffi' | 'js-fallback' | 'cborg'\n\n /**\n * 運行時版本或詳細資訊\n */\n readonly version: string\n}\n\n/**\n * FFI 層配置選項\n */\nexport interface FfiConfig {\n /**\n * 啟用調試日誌\n * @default false\n */\n readonly debug?: boolean\n\n /**\n * 最大 buffer 大小(位元組)\n * @default 1048576 (1MB)\n */\n readonly maxBufferSize?: number\n\n /**\n * 強制使用特定的加速器實現\n * - undefined: 自動選擇(優先 bun-ffi,降級到 js-fallback)\n * - 'bun-ffi': 只使用原生 C 實現\n * - 'js-fallback': 只使用 JavaScript 實現\n */\n readonly forceImplementation?: 'bun-ffi' | 'js-fallback'\n}\n\n/**\n * CBOR Major Type 常數\n * 符合 RFC 7049 規範\n */\nexport const CBOR_MAJOR_TYPES = {\n UINT: 0, // 正整數 (0 to 2^64-1)\n NEGINT: 1, // 負整數 (-1 to -2^64)\n BYTES: 2, // 位元組字串\n TEXT: 3, // 文字字串\n ARRAY: 4, // 陣列\n MAP: 5, // Map 物件\n TAG: 6, // 語意 tag\n SIMPLE: 7, // 簡單值與浮點數\n} as const\n\n/**\n * CBOR 簡單值常數\n */\nexport const CBOR_SIMPLE_VALUES = {\n FALSE: 20, // Boolean false\n TRUE: 21, // Boolean true\n NULL: 22, // null\n UNDEFINED: 23, // undefined (不常用)\n} as const\n\n/**\n * CBOR 長度編碼的附加資訊\n */\nexport const CBOR_LENGTH_ENCODING = {\n SMALL_RANGE_END: 23, // 0-23: 直接作為值\n UINT8: 24, // 24: 接下來 1 byte 為 uint8_t\n UINT16: 25, // 25: 接下來 2 bytes 為 uint16_t (大端序)\n UINT32: 26, // 26: 接下來 4 bytes 為 uint32_t (大端序)\n UINT64: 27, // 27: 接下來 8 bytes 為 uint64_t (大端序)\n FLOAT16: 25, // 25: IEEE 754 半精度浮點數 (special case for SIMPLE)\n FLOAT32: 26, // 26: IEEE 754 單精度浮點數\n FLOAT64: 27, // 27: IEEE 754 雙精度浮點數\n INDEFINITE: 31, // 31: 無限長度編碼\n} as const\n\n/**\n * 雜湊加速器介面\n * 可由 Bun 原生實現或 Node.js 回退實現\n */\nexport interface HashAccelerator {\n /**\n * SHA-256 雜湊計算\n * @param input - 輸入(字串或二進制)\n * @returns 十六進制編碼的 SHA-256 雜湊值(64 字元)\n */\n sha256(input: string | Uint8Array): string\n\n /**\n * HMAC-SHA256 計算\n * @param key - 密鑰\n * @param data - 要雜湊的數據\n * @returns 十六進制編碼的 HMAC-SHA256 值(64 字元)\n */\n hmacSha256(key: string, data: string): string\n}\n\n/**\n * 雜湊加速器狀態報告\n */\nexport interface NativeHasherStatus {\n /**\n * 雜湊加速層是否可用\n */\n readonly available: boolean\n\n /**\n * 當前使用的運行時實現\n * - 'bun-crypto-hasher': Bun 原生 CryptoHasher(C 實現,推薦)\n * - 'node-crypto': node:crypto 回退實現\n */\n readonly runtime: 'bun-crypto-hasher' | 'node-crypto'\n}\n",
|
|
53
|
-
"/**\n * JavaScript CBOR 回退實現\n * 用於非 Bun 環境或 FFI 不可用的情況\n * 符合 RFC 7049 規範\n */\n\nimport type { CborAccelerator } from './types'\nimport { CBOR_LENGTH_ENCODING, CBOR_MAJOR_TYPES, CBOR_SIMPLE_VALUES } from './types'\n\n/**\n * CBOR 編碼器\n * 將 JavaScript 物件編碼為 CBOR 二進制格式\n */\nexport class CborFallbackEncoder implements CborAccelerator {\n private static readonly DEFAULT_BUFFER_SIZE = 4096\n private static readonly MAX_DEPTH = 16\n private static readonly MAX_BUFFER_SIZE = 1024 * 1024 // 1MB\n\n private buffer: Uint8Array\n private offset: number\n\n constructor() {\n this.buffer = new Uint8Array(CborFallbackEncoder.DEFAULT_BUFFER_SIZE)\n this.offset = 0\n }\n\n /**\n * 編碼 JavaScript 物件為 CBOR 格式\n */\n encode(data: Record<string, unknown>): Uint8Array {\n this.buffer = new Uint8Array(CborFallbackEncoder.DEFAULT_BUFFER_SIZE)\n this.offset = 0\n this.encodeValue(data, 0)\n return this.buffer.slice(0, this.offset)\n }\n\n /**\n * 解碼 CBOR 二進制為 JavaScript 物件\n */\n decode(bytes: Uint8Array): Record<string, unknown> {\n const decoder = new CborFallbackDecoder(bytes)\n const value = decoder.decode()\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error('CBOR 根值必須是物件')\n }\n return value as Record<string, unknown>\n }\n\n /**\n * 確保 buffer 有足夠空間\n */\n private ensureCapacity(required: number): void {\n let newCapacity = this.buffer.length\n while (this.offset + required > newCapacity) {\n newCapacity *= 2\n if (newCapacity > CborFallbackEncoder.MAX_BUFFER_SIZE) {\n throw new Error(\n `CBOR 編碼超過最大 buffer 大小 ${CborFallbackEncoder.MAX_BUFFER_SIZE} 位元組`\n )\n }\n }\n if (newCapacity !== this.buffer.length) {\n const newBuffer = new Uint8Array(newCapacity)\n newBuffer.set(this.buffer)\n this.buffer = newBuffer\n }\n }\n\n /**\n * 編寫一個位元組\n */\n private writeByte(byte: number): void {\n this.ensureCapacity(1)\n this.buffer[this.offset++] = byte & 0xff\n }\n\n /**\n * 編寫多個位元組\n */\n private writeBytes(bytes: ArrayLike<number>): void {\n this.ensureCapacity(bytes.length)\n this.buffer.set(bytes, this.offset)\n this.offset += bytes.length\n }\n\n /**\n * 編寫 CBOR 長度(Major Type + Additional Info)\n */\n private writeLength(majorType: number, length: number): void {\n const type = majorType << 5\n\n if (length < 24) {\n this.writeByte(type | length)\n } else if (length <= 0xff) {\n this.writeByte(type | CBOR_LENGTH_ENCODING.UINT8)\n this.writeByte(length)\n } else if (length <= 0xffff) {\n this.writeByte(type | CBOR_LENGTH_ENCODING.UINT16)\n this.writeByte((length >> 8) & 0xff)\n this.writeByte(length & 0xff)\n } else if (length <= 0xffffffff) {\n this.writeByte(type | CBOR_LENGTH_ENCODING.UINT32)\n this.writeByte((length >> 24) & 0xff)\n this.writeByte((length >> 16) & 0xff)\n this.writeByte((length >> 8) & 0xff)\n this.writeByte(length & 0xff)\n } else {\n throw new Error(`CBOR 不支援 > 2^32 的長度: ${length}`)\n }\n }\n\n /**\n * 遞迴編碼值\n */\n private encodeValue(value: unknown, depth: number): void {\n if (depth > CborFallbackEncoder.MAX_DEPTH) {\n throw new Error(`CBOR 編碼深度超過限制 ${CborFallbackEncoder.MAX_DEPTH}`)\n }\n\n if (value === null) {\n this.writeByte((CBOR_MAJOR_TYPES.SIMPLE << 5) | CBOR_SIMPLE_VALUES.NULL)\n } else if (value === true) {\n this.writeByte((CBOR_MAJOR_TYPES.SIMPLE << 5) | CBOR_SIMPLE_VALUES.TRUE)\n } else if (value === false) {\n this.writeByte((CBOR_MAJOR_TYPES.SIMPLE << 5) | CBOR_SIMPLE_VALUES.FALSE)\n } else if (typeof value === 'number') {\n this.encodeNumber(value)\n } else if (typeof value === 'string') {\n this.encodeString(value)\n } else if (value instanceof Uint8Array) {\n this.encodeBytes(value)\n } else if (Array.isArray(value)) {\n this.encodeArray(value, depth)\n } else if (typeof value === 'object') {\n this.encodeMap(value as Record<string, unknown>, depth)\n } else {\n throw new Error(`CBOR 不支援類型: ${typeof value}`)\n }\n }\n\n /**\n * 編碼整數或浮點數\n * 對於超過 uint32 範圍的整數,使用 float64 編碼(JavaScript 精度限制)\n */\n private encodeNumber(num: number): void {\n // 檢查是否為整數且在 uint32/negint32 範圍內\n if (Number.isInteger(num) && !Object.is(num, -0)) {\n if (num >= 0 && num <= 0xffffffff) {\n this.writeLength(CBOR_MAJOR_TYPES.UINT, num)\n return\n }\n if (num < 0 && -1 - num <= 0xffffffff) {\n this.writeLength(CBOR_MAJOR_TYPES.NEGINT, -1 - num)\n return\n }\n // 超過 32-bit 範圍的整數,降級為 float64\n }\n {\n // 浮點數(float64)\n const bytes = new Uint8Array(9)\n bytes[0] = (CBOR_MAJOR_TYPES.SIMPLE << 5) | CBOR_LENGTH_ENCODING.FLOAT64\n\n // IEEE 754 雙精度大端序\n const view = new DataView(new ArrayBuffer(8))\n view.setFloat64(0, num, false)\n for (let i = 0; i < 8; i++) {\n bytes[i + 1] = view.getUint8(i)\n }\n this.writeBytes(bytes)\n }\n }\n\n /**\n * 編碼字串\n */\n private encodeString(str: string): void {\n const encoder = new TextEncoder()\n const bytes = encoder.encode(str)\n this.writeLength(CBOR_MAJOR_TYPES.TEXT, bytes.length)\n this.writeBytes(bytes)\n }\n\n /**\n * 編碼位元組陣列\n */\n private encodeBytes(bytes: Uint8Array): void {\n this.writeLength(CBOR_MAJOR_TYPES.BYTES, bytes.length)\n this.writeBytes(bytes)\n }\n\n /**\n * 編碼陣列\n */\n private encodeArray(arr: unknown[], depth: number): void {\n this.writeLength(CBOR_MAJOR_TYPES.ARRAY, arr.length)\n for (const item of arr) {\n this.encodeValue(item, depth + 1)\n }\n }\n\n /**\n * 編碼物件(Map)\n */\n private encodeMap(obj: Record<string, unknown>, depth: number): void {\n const keys = Object.keys(obj)\n this.writeLength(CBOR_MAJOR_TYPES.MAP, keys.length)\n for (const key of keys) {\n this.encodeString(key)\n this.encodeValue(obj[key], depth + 1)\n }\n }\n}\n\n/**\n * CBOR 解碼器\n */\nexport class CborFallbackDecoder {\n private static readonly MAX_DEPTH = 16\n private data: Uint8Array\n private offset: number\n\n constructor(data: Uint8Array) {\n this.data = data\n this.offset = 0\n }\n\n /**\n * 解碼 CBOR 資料\n */\n decode(): unknown {\n return this.decodeValue(0)\n }\n\n /**\n * 讀取一個位元組\n */\n private readByte(): number {\n if (this.offset >= this.data.length) {\n throw new Error('CBOR 資料不足')\n }\n return this.data[this.offset++]\n }\n\n /**\n * 讀取固定長度的位元組\n */\n private readBytes(length: number): Uint8Array {\n if (this.offset + length > this.data.length) {\n throw new Error('CBOR 資料不足')\n }\n const result = this.data.slice(this.offset, this.offset + length)\n this.offset += length\n return result\n }\n\n /**\n * 讀取 CBOR 長度\n */\n private readLength(additionalInfo: number): number {\n if (additionalInfo < 24) {\n return additionalInfo\n }\n if (additionalInfo === 24) {\n return this.readByte()\n }\n if (additionalInfo === 25) {\n const b1 = this.readByte()\n const b2 = this.readByte()\n return (b1 << 8) | b2\n }\n if (additionalInfo === 26) {\n const b1 = this.readByte()\n const b2 = this.readByte()\n const b3 = this.readByte()\n const b4 = this.readByte()\n return (b1 << 24) | (b2 << 16) | (b3 << 8) | b4\n }\n if (additionalInfo === 27) {\n // 64-bit,但 JavaScript 無法精確表示,只支援到 2^53\n const high =\n (this.readByte() << 24) | (this.readByte() << 16) | (this.readByte() << 8) | this.readByte()\n const low =\n (this.readByte() << 24) | (this.readByte() << 16) | (this.readByte() << 8) | this.readByte()\n return high * 0x100000000 + low\n }\n throw new Error(`CBOR 無效的長度編碼: ${additionalInfo}`)\n }\n\n /**\n * 遞迴解碼值\n */\n private decodeValue(depth: number): unknown {\n if (depth > CborFallbackDecoder.MAX_DEPTH) {\n throw new Error(`CBOR 解碼深度超過限制 ${CborFallbackDecoder.MAX_DEPTH}`)\n }\n\n const byte = this.readByte()\n const majorType = (byte >> 5) & 0x07\n const additionalInfo = byte & 0x1f\n\n switch (majorType) {\n case CBOR_MAJOR_TYPES.UINT:\n return this.readLength(additionalInfo)\n\n case CBOR_MAJOR_TYPES.NEGINT:\n return -1 - this.readLength(additionalInfo)\n\n case CBOR_MAJOR_TYPES.BYTES: {\n const length = this.readLength(additionalInfo)\n return this.readBytes(length)\n }\n\n case CBOR_MAJOR_TYPES.TEXT: {\n const length = this.readLength(additionalInfo)\n const bytes = this.readBytes(length)\n const decoder = new TextDecoder()\n return decoder.decode(bytes)\n }\n\n case CBOR_MAJOR_TYPES.ARRAY: {\n const length = this.readLength(additionalInfo)\n const result: unknown[] = []\n for (let i = 0; i < length; i++) {\n result.push(this.decodeValue(depth + 1))\n }\n return result\n }\n\n case CBOR_MAJOR_TYPES.MAP: {\n const length = this.readLength(additionalInfo)\n const result: Record<string, unknown> = {}\n for (let i = 0; i < length; i++) {\n const key = this.decodeValue(depth + 1)\n if (typeof key !== 'string') {\n throw new Error(`CBOR Map 的 key 必須是字串,得到: ${typeof key}`)\n }\n result[key] = this.decodeValue(depth + 1)\n }\n return result\n }\n\n case CBOR_MAJOR_TYPES.SIMPLE:\n if (additionalInfo === CBOR_SIMPLE_VALUES.FALSE) {\n return false\n }\n if (additionalInfo === CBOR_SIMPLE_VALUES.TRUE) {\n return true\n }\n if (additionalInfo === CBOR_SIMPLE_VALUES.NULL) {\n return null\n }\n\n // 浮點數\n if (additionalInfo === CBOR_LENGTH_ENCODING.FLOAT32) {\n const bytes = this.readBytes(4)\n const view = new DataView(bytes.buffer, bytes.byteOffset)\n return view.getFloat32(0, false)\n }\n if (additionalInfo === CBOR_LENGTH_ENCODING.FLOAT64) {\n const bytes = this.readBytes(8)\n const view = new DataView(bytes.buffer, bytes.byteOffset)\n return view.getFloat64(0, false)\n }\n\n throw new Error(`CBOR 不支援的 simple value: ${additionalInfo}`)\n\n case CBOR_MAJOR_TYPES.TAG:\n // TAG 類型在此實現中跳過\n return this.decodeValue(depth)\n\n default:\n throw new Error(`CBOR 無效的 major type: ${majorType}`)\n }\n }\n}\n",
|
|
54
52
|
"/**\n * 雜湊加速器 JavaScript 回退實現\n * 基於 node:crypto 標準庫\n *\n * 使用場景:\n * - 非 Bun 環境(Node.js、Deno 等)\n * - Bun CryptoHasher 不可用的情況\n *\n * 性能特性:\n * - 短 key (<100 bytes):~1-2x 慢於 Bun.CryptoHasher(N-API 橋接開銷)\n * - 長 payload:差異較小(主要計算時間)\n * - 一致性:與 node:crypto 標準行為完全相同\n */\n\nimport { createHash, createHmac } from 'node:crypto'\nimport type { HashAccelerator } from './types'\n\n/**\n * Node.js crypto 回退實現\n * 適用於非 Bun 環境\n */\nexport class HashFallback implements HashAccelerator {\n /**\n * SHA-256 計算(回退實現)\n * @param input - 輸入(字串或 Uint8Array)\n * @returns 十六進制編碼的 SHA-256 雜湊值\n */\n sha256(input: string | Uint8Array): string {\n return createHash('sha256').update(input).digest('hex')\n }\n\n /**\n * HMAC-SHA256 計算(回退實現)\n * @param key - 密鑰\n * @param data - 要雜湊的數據\n * @returns 十六進制編碼的 HMAC-SHA256 值\n */\n hmacSha256(key: string, data: string): string {\n return createHmac('sha256', key).update(data).digest('hex')\n }\n}\n",
|
|
55
|
-
"/**\n * 原生加速器統一入口\n * 遵循 Galaxy Architecture 的運行時自適應模式\n * 與 RuntimeAdapter 模式保持一致\n */\n\nimport { CborFallbackEncoder } from './cbor-fallback'\nimport type { CborAccelerator, NativeAcceleratorStatus } from './types'\n\n/**\n * 原生加速器類別\n * 提供運行時自適應的 CBOR 編碼/解碼加速\n * - 在 Bun 環境下優先使用 C 編譯器實現(bun:ffi)\n * - 在非 Bun 環境或 FFI 不可用時自動降級到 JavaScript 實現\n */\nexport class NativeAccelerator {\n private static readonly DEBUG_ENV = 'GRAVITO_FFI_DEBUG'\n private static readonly DISABLE_ENV = 'GRAVITO_FFI_DISABLE'\n\n /**\n * FFI 可用性緩存\n * null: 未檢測, true: 可用, false: 不可用\n */\n private static available: boolean | null = null\n\n /**\n * 當前加速器實例緩存\n */\n private static cborAccelerator: CborAccelerator | null = null\n\n /**\n * 當前狀態\n */\n private static status: NativeAcceleratorStatus | null = null\n\n /**\n * 檢測原生 FFI 是否可用\n * 偵測邏輯:\n * 1. 檢查 GRAVITO_FFI_DISABLE 環境變數\n * 2. 檢查 Bun 運行時可用性\n * 3. 檢查 bun:ffi 的 cc() 是否可用\n */\n static isAvailable(): boolean {\n if (this.available !== null) {\n return this.available\n }\n\n // 檢查環境變數強制禁用\n if (typeof process !== 'undefined' && process.env) {\n if (process.env[this.DISABLE_ENV] === '1') {\n this.available = false\n return false\n }\n }\n\n // 檢查 Bun 運行時\n try {\n if (typeof Bun === 'undefined') {\n this.available = false\n return false\n }\n\n // 嘗試載入 bun:ffi 的 cc 函數\n const bunFfi = require('bun:ffi')\n if (typeof bunFfi.cc !== 'function') {\n this.available = false\n return false\n }\n\n this.available = true\n return true\n } catch {\n this.available = false\n return false\n }\n }\n\n /**\n * 取得 CBOR 加速器實例\n * 優先使用 Native,失敗則降級到 Fallback\n */\n static getCborAccelerator(): CborAccelerator {\n if (this.cborAccelerator !== null) {\n return this.cborAccelerator\n }\n\n // 嘗試載入原生實現\n if (this.isAvailable()) {\n try {\n const native = this.loadNativeImplementation()\n if (native !== null) {\n this.cborAccelerator = native\n this.updateStatus('bun-ffi')\n return native\n }\n } catch (error) {\n const debugMode = this.isDebugEnabled()\n if (debugMode) {\n console.warn('[GRAVITO_FFI] Native CBOR 載入失敗,降級到 JavaScript 實現:', error)\n }\n // 繼續降級到 Fallback\n }\n }\n\n // 降級到 JavaScript 實現\n const fallback = new CborFallbackEncoder()\n this.cborAccelerator = fallback\n this.updateStatus('js-fallback')\n\n if (this.isDebugEnabled()) {\n console.log('[GRAVITO_FFI] 使用 JavaScript 回退實現')\n }\n\n return fallback\n }\n\n /**\n * 取得加速器狀態\n */\n static getStatus(): NativeAcceleratorStatus {\n // 確保狀態已初始化\n if (this.status === null) {\n this.getCborAccelerator()\n }\n return (\n this.status || {\n available: false,\n runtime: 'js-fallback',\n version: '1.0.0',\n }\n )\n }\n\n /**\n * 重置加速器狀態(用於測試)\n */\n static reset(): void {\n this.available = null\n this.cborAccelerator = null\n this.status = null\n }\n\n /**\n * 解析 C 原始碼路徑\n * 支援從原始碼目錄或 npm 套件的 src/ffi/native 目錄載入\n */\n private static resolveCSourcePath(): string {\n const path = require('node:path')\n const fs = require('node:fs')\n\n // 取得當前模組目錄(ESM 優先,CJS 回退)\n const currentDir =\n typeof import.meta?.dir === 'string' && import.meta.dir !== ''\n ? import.meta.dir\n : typeof __dirname === 'string'\n ? __dirname\n : process.cwd()\n\n // 嘗試多個可能的路徑(開發時 vs 發佈後)\n const candidates = [\n path.resolve(currentDir, 'native', 'cbor.c'),\n path.resolve(currentDir, '..', 'ffi', 'native', 'cbor.c'),\n path.resolve(currentDir, '..', '..', 'src', 'ffi', 'native', 'cbor.c'),\n ]\n\n for (const candidate of candidates) {\n try {\n if (fs.existsSync(candidate)) {\n return candidate\n }\n } catch {}\n }\n\n throw new Error(`C 原始碼檔案未找到,嘗試路徑: ${candidates.join(', ')}`)\n }\n\n /**\n * 載入原生 C 實現\n * 使用 bun:ffi 的 cc() 動態編譯 C 代碼\n * 優先從檔案載入完整實現,避免內聯限制\n */\n private static loadNativeImplementation(): CborAccelerator | null {\n try {\n // 檢查 Bun 運行時\n if (typeof Bun === 'undefined') {\n return null\n }\n\n const bunFfi = require('bun:ffi')\n if (typeof bunFfi.cc !== 'function') {\n return null\n }\n\n // 解析 C 原始碼路徑\n const cSourcePath = this.resolveCSourcePath()\n\n if (this.isDebugEnabled()) {\n console.log(`[GRAVITO_FFI] 載入 C 原始碼: ${cSourcePath}`)\n }\n\n // 使用 bun:ffi 的 cc() 編譯 C 代碼\n // cc() 的 source 參數接受檔案路徑(不是源碼字串)\n const lib = bunFfi.cc({\n source: cSourcePath,\n symbols: {\n gravito_cbor_encode: {\n args: ['ptr', 'usize', 'ptr', 'usize'],\n returns: 'i32',\n },\n gravito_cbor_decode: {\n args: ['ptr', 'usize', 'ptr', 'usize'],\n returns: 'i32',\n },\n },\n })\n\n // cc() 返回 { close, symbols: { ... } }\n return new NativeCborAccelerator(lib.symbols)\n } catch (error) {\n if (this.isDebugEnabled()) {\n console.error('[GRAVITO_FFI] 編譯失敗:', error)\n }\n return null\n }\n }\n\n /**\n * 檢查是否啟用調試模式\n */\n private static isDebugEnabled(): boolean {\n if (typeof process !== 'undefined' && process.env) {\n return process.env[this.DEBUG_ENV] === '1'\n }\n return false\n }\n\n /**\n * 更新狀態\n */\n private static updateStatus(runtime: 'bun-ffi' | 'js-fallback'): void {\n this.status = {\n available: runtime === 'bun-ffi',\n runtime,\n version: runtime === 'bun-ffi' ? 'native-1.0.0' : 'js-fallback-1.0.0',\n }\n }\n}\n\n/**\n * 原生 C CBOR 加速器包裝類\n */\nclass NativeCborAccelerator implements CborAccelerator {\n private symbols: any\n\n constructor(symbols: any) {\n this.symbols = symbols\n }\n\n encode(data: Record<string, unknown>): Uint8Array {\n // 將物件序列化為 JSON\n const json = JSON.stringify(data)\n const jsonBytes = new TextEncoder().encode(json)\n\n // 估算 CBOR 輸出大小(CBOR 通常比 JSON 小 20-40%)\n let outputCapacity = Math.ceil(jsonBytes.length * 1.5)\n const maxAttempts = 3\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const outputBuffer = new Uint8Array(outputCapacity)\n\n // 調用 C 編碼函數\n const result = this.symbols.gravito_cbor_encode(\n jsonBytes,\n jsonBytes.length,\n outputBuffer,\n outputCapacity\n )\n\n if (typeof result !== 'number') {\n throw new Error('FFI 回傳值無效')\n }\n\n if (result > 0) {\n // 成功\n return outputBuffer.slice(0, result)\n }\n\n if (result === -1) {\n // Buffer 不足,擴大重試\n outputCapacity *= 2\n continue\n }\n\n // 其他錯誤\n throw new Error(`CBOR 編碼失敗 (error: ${result})`)\n }\n\n throw new Error(`CBOR 編碼失敗:超過最大重試次數,需要 > ${outputCapacity} 位元組`)\n }\n\n decode(bytes: Uint8Array): Record<string, unknown> {\n // 估算 JSON 輸出大小(JSON 通常比 CBOR 大)\n let jsonCapacity = Math.ceil(bytes.length * 3)\n const maxAttempts = 3\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const jsonBuffer = new Uint8Array(jsonCapacity)\n\n // 調用 C 解碼函數\n const result = this.symbols.gravito_cbor_decode(bytes, bytes.length, jsonBuffer, jsonCapacity)\n\n if (typeof result !== 'number') {\n throw new Error('FFI 回傳值無效')\n }\n\n if (result > 0) {\n // 成功\n const jsonString = new TextDecoder().decode(jsonBuffer.slice(0, result))\n const obj = JSON.parse(jsonString)\n\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n throw new Error('CBOR 根值必須是物件')\n }\n\n return obj as Record<string, unknown>\n }\n\n if (result === -1) {\n // Buffer 不足,擴大重試\n jsonCapacity *= 2\n continue\n }\n\n // 其他錯誤\n throw new Error(`CBOR 解碼失敗 (error: ${result})`)\n }\n\n throw new Error(`CBOR 解碼失敗:超過最大重試次數,需要 > ${jsonCapacity} 位元組`)\n }\n}\n",
|
|
56
53
|
"/**\n * 原生雜湊加速器\n * 運行時自適應實現,遵循 Galaxy Architecture 的設計模式\n *\n * 架構:\n * - 在 Bun 環境:使用 Bun.CryptoHasher(C 實現,高效)\n * - 其他環境:自動降級到 node:crypto\n * - 完全相同的 API 和結果保證\n *\n * 性能:\n * - Bun 環境:2-3x 快於 node:crypto(消除 N-API 開銷)\n * - 跨運行時:完全相容性\n *\n * 應用場景:\n * - FileStore.hashKey() 熱路徑\n * - Encrypter.hash() 加密雜湊\n * - 任何需要高效雜湊計算的地方\n */\n\nimport { HashFallback } from './hash-fallback'\nimport type { HashAccelerator, NativeHasherStatus } from './types'\n\n/**\n * Bun 原生 CryptoHasher 實現\n * 直接使用 Bun.CryptoHasher API\n */\nclass BunCryptoHasher implements HashAccelerator {\n /**\n * SHA-256 計算(Bun 原生)\n * @param input - 輸入(字串或 Uint8Array)\n * @returns 十六進制編碼的 SHA-256 雜湊值\n */\n sha256(input: string | Uint8Array): string {\n return new Bun.CryptoHasher('sha256').update(input).digest('hex')\n }\n\n /**\n * HMAC-SHA256 計算(Bun 原生)\n * Bun.CryptoHasher 第二參數直接支援 HMAC 密鑰\n *\n * @param key - 密鑰\n * @param data - 要雜湊的數據\n * @returns 十六進制編碼的 HMAC-SHA256 值\n */\n hmacSha256(key: string, data: string): string {\n return new Bun.CryptoHasher('sha256', key).update(data).digest('hex')\n }\n}\n\n/**\n * 原生雜湊加速器統一入口\n * 提供運行時自適應的 SHA-256/HMAC-SHA256 計算\n *\n * 使用範例:\n * ```typescript\n * // SHA-256\n * const hash = NativeHasher.sha256('data')\n *\n * // HMAC-SHA256\n * const hmac = NativeHasher.hmacSha256('secret', 'message')\n *\n * // 檢查狀態\n * const status = NativeHasher.getStatus()\n * console.log(`使用: ${status.runtime}`)\n * ```\n */\nexport class NativeHasher {\n /**\n * 當前加速器實例緩存\n */\n private static accelerator: HashAccelerator | null = null\n\n /**\n * 當前狀態緩存\n */\n private static status: NativeHasherStatus | null = null\n\n /**\n * 取得雜湊加速器實例\n * 優先使用 Bun.CryptoHasher,失敗則降級到 node:crypto\n *\n * @returns 雜湊加速器實例\n */\n private static getAccelerator(): HashAccelerator {\n if (this.accelerator !== null) {\n return this.accelerator\n }\n\n // 嘗試使用 Bun 原生實現\n if (this.isBunAvailable()) {\n try {\n this.accelerator = new BunCryptoHasher()\n this.updateStatus('bun-crypto-hasher')\n return this.accelerator\n } catch {\n // 降級到回退實現\n }\n }\n\n // 降級到 node:crypto 回退\n this.accelerator = new HashFallback()\n this.updateStatus('node-crypto')\n return this.accelerator\n }\n\n /**\n * 檢測 Bun 運行時和 CryptoHasher 可用性\n *\n * @returns Bun.CryptoHasher 是否可用\n */\n private static isBunAvailable(): boolean {\n try {\n return typeof Bun !== 'undefined' && typeof Bun.CryptoHasher === 'function'\n } catch {\n return false\n }\n }\n\n /**\n * 更新狀態\n *\n * @param runtime - 當前使用的運行時\n */\n private static updateStatus(runtime: 'bun-crypto-hasher' | 'node-crypto'): void {\n this.status = {\n available: runtime === 'bun-crypto-hasher',\n runtime,\n }\n }\n\n /**\n * 計算 SHA-256 雜湊\n * 支援字串和二進制輸入\n *\n * @param input - 要雜湊的數據(字串或 Uint8Array)\n * @returns 十六進制編碼的 SHA-256 雜湊值(64 字元)\n *\n * @example\n * ```typescript\n * const hash = NativeHasher.sha256('hello')\n * // '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'\n *\n * // 支援 Uint8Array\n * const bytes = new TextEncoder().encode('hello')\n * const hash2 = NativeHasher.sha256(bytes)\n * // 相同結果\n * ```\n */\n static sha256(input: string | Uint8Array): string {\n return this.getAccelerator().sha256(input)\n }\n\n /**\n * 計算 HMAC-SHA256\n * 用於認證消息完整性\n *\n * @param key - HMAC 密鑰\n * @param data - 要雜湊的數據\n * @returns 十六進制編碼的 HMAC-SHA256 值(64 字元)\n *\n * @example\n * ```typescript\n * const hmac = NativeHasher.hmacSha256('secret', 'message')\n * // '8b1a9953c4611296aed9e132b8502cf413b1b881fed3e8d26ab'...\n *\n * // 適用於加密驗證\n * const iv = Buffer.from('...').toString('base64')\n * const encrypted = '...'\n * const mac = NativeHasher.hmacSha256(key, iv + encrypted)\n * ```\n */\n static hmacSha256(key: string, data: string): string {\n return this.getAccelerator().hmacSha256(key, data)\n }\n\n /**\n * 取得加速器狀態\n * 用於診斷和性能監測\n *\n * @returns 加速器狀態報告\n *\n * @example\n * ```typescript\n * const status = NativeHasher.getStatus()\n * console.log(`可用: ${status.available}`)\n * console.log(`運行時: ${status.runtime}`)\n *\n * // 條件邏輯\n * if (status.runtime === 'bun-crypto-hasher') {\n * console.log('使用 Bun 原生實現(高效)')\n * } else {\n * console.log('使用 node:crypto(相容性回退)')\n * }\n * ```\n */\n static getStatus(): NativeHasherStatus {\n // 確保狀態已初始化\n if (this.status === null) {\n this.getAccelerator()\n }\n\n return (\n this.status || {\n available: false,\n runtime: 'node-crypto',\n }\n )\n }\n\n /**\n * 重置加速器狀態\n * 主要用於測試目的,允許重新初始化運行時檢測\n *\n * @internal\n * @example\n * ```typescript\n * // 測試中\n * NativeHasher.reset()\n * // 下一次呼叫會重新偵測運行時\n * const status = NativeHasher.getStatus()\n * ```\n */\n static reset(): void {\n this.accelerator = null\n this.status = null\n }\n}\n",
|
|
54
|
+
"/**\n * Route Handler type (simplified for internal use)\n * In the full framework this will align with GravitoHandler\n */\nexport type RouteHandler = Function\n\n/**\n * Route Match Result\n */\nexport interface RouteMatch {\n handlers: RouteHandler[]\n params: Record<string, string>\n}\n\n/**\n * Radix Node Type\n */\nexport enum NodeType {\n STATIC = 0,\n PARAM = 1,\n WILDCARD = 2,\n}\n",
|
|
57
55
|
"import type { HttpMethod } from '../../http/types'\nimport { NodeType, type RouteHandler } from './types'\n\n/**\n * Node in the Radix Router tree.\n * @internal\n */\nexport class RadixNode {\n // Path segment for this node (e.g., \"users\", \":id\")\n public segment: string\n\n // Node type (Static, Param, Wildcard)\n public type: NodeType\n\n // Children nodes (mapped by segment for fast lookup)\n public children: Map<string, RadixNode> = new Map()\n\n // Specialized child for parameter node (only one per level allowed usually to avoid ambiguity, though some routers support multiple)\n public paramChild: RadixNode | null = null\n\n // Specialized child for wildcard node\n public wildcardChild: RadixNode | null = null\n\n // Handlers registered at this node (keyed by HTTP method)\n public handlers: Map<HttpMethod, RouteHandler[]> = new Map()\n\n // Parameter name if this is a PARAM node (e.g., \"id\" for \":id\")\n public paramName: string | null = null\n\n // Parameter constraints (regex) - only applicable if this is a PARAM node\n // If we support per-route constraints, they might need to be stored differently,\n // but for now assume constraints are defined at node level (uncommon) or checked at match time.\n // Laravel allows global pattern constraints or per-route.\n // Ideally, constraints should be stored with the handler or part of matching logic.\n // For a Radix tree, if we have constraints, we might need to backtrack if constraint fails?\n // Or simply store constraint with the param node.\n public regex: RegExp | null = null\n\n constructor(segment = '', type: NodeType = NodeType.STATIC) {\n this.segment = segment\n this.type = type\n }\n\n toJSON(): any {\n return {\n segment: this.segment,\n type: this.type,\n children: Array.from(this.children.entries()).map(([k, v]) => [k, v.toJSON()]),\n paramChild: this.paramChild?.toJSON() || null,\n wildcardChild: this.wildcardChild?.toJSON() || null,\n paramName: this.paramName,\n regex: this.regex ? this.regex.source : null,\n }\n }\n\n static fromJSON(json: any): RadixNode {\n const node = new RadixNode(json.segment, json.type)\n node.paramName = json.paramName\n if (json.regex) {\n node.regex = new RegExp(json.regex)\n }\n if (json.children) {\n for (const [key, childJson] of json.children) {\n node.children.set(key, RadixNode.fromJSON(childJson))\n }\n }\n if (json.paramChild) {\n node.paramChild = RadixNode.fromJSON(json.paramChild)\n }\n if (json.wildcardChild) {\n node.wildcardChild = RadixNode.fromJSON(json.wildcardChild)\n }\n return node\n }\n}\n",
|
|
58
56
|
"import type { HttpMethod } from '../../http/types'\nimport { RadixNode } from './RadixNode'\nimport { NodeType, type RouteHandler, type RouteMatch } from './types'\n\n/**\n * Simple LRU Cache for route matching\n * @internal\n */\nclass RouteCache {\n private cache = new Map<string, RouteMatch | null>()\n private readonly maxSize = 10000\n\n get(key: string): RouteMatch | null | undefined {\n return this.cache.get(key)\n }\n\n set(key: string, value: RouteMatch | null): void {\n if (this.cache.size >= this.maxSize) {\n // Remove first (oldest) entry\n const firstKey = this.cache.keys().next().value\n if (firstKey) {\n this.cache.delete(firstKey)\n }\n }\n this.cache.set(key, value)\n }\n\n clear(): void {\n this.cache.clear()\n }\n\n has(key: string): boolean {\n return this.cache.has(key)\n }\n}\n\n/**\n * High-performance Radix Tree Router for Bun\n */\nexport class RadixRouter {\n private root: RadixNode = new RadixNode()\n\n // Global parameter constraints (e.g., id => /^\\d+$/)\n private globalConstraints: Map<string, RegExp> = new Map()\n\n // Route cache (P2 optimization)\n private routeCache = new RouteCache()\n\n /**\n * Add a generic parameter constraint\n */\n where(param: string, regex: RegExp): void {\n this.globalConstraints.set(param, regex)\n }\n\n /**\n * Register a route\n */\n add(method: HttpMethod, path: string, handlers: RouteHandler[]): void {\n let node = this.root\n const segments = this.splitPath(path)\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i]!\n\n // Determine node type\n if (segment === '*') {\n // Wildcard\n if (!node.wildcardChild) {\n node.wildcardChild = new RadixNode('*', NodeType.WILDCARD)\n }\n node = node.wildcardChild\n break\n } else if (segment.startsWith(':')) {\n // Parameter\n const paramName = segment.slice(1)\n if (!node.paramChild) {\n const child = new RadixNode(segment, NodeType.PARAM)\n child.paramName = paramName\n // Apply global constraint if exists\n const constraint = this.globalConstraints.get(paramName)\n if (constraint) {\n child.regex = constraint\n }\n node.paramChild = child\n }\n node = node.paramChild!\n } else {\n // Static\n if (!node.children.has(segment)) {\n node.children.set(segment, new RadixNode(segment, NodeType.STATIC))\n }\n node = node.children.get(segment)!\n }\n }\n\n // Ensure we store handlers for lowercase method\n node.handlers.set(method.toLowerCase() as HttpMethod, handlers)\n\n // P2 optimization: Clear cache when new route added\n this.routeCache.clear()\n }\n\n /**\n * Match a request\n */\n match(method: string, path: string): RouteMatch | null {\n const normalizedMethod = method.toLowerCase() as HttpMethod\n\n // Fast path for root\n if (path === '/' || path === '') {\n const handlers = this.root.handlers.get(normalizedMethod)\n if (handlers) {\n return { handlers, params: {} }\n }\n return null\n }\n\n // P2 optimization: Check route cache first\n const cacheKey = `${normalizedMethod}:${path}`\n if (this.routeCache.has(cacheKey)) {\n return this.routeCache.get(cacheKey) ?? null\n }\n\n // Removing leading slash for faster segmenting\n const searchPath = path.startsWith('/') ? path.slice(1) : path\n const segments = searchPath.split('/')\n\n const result = this.matchRecursive(this.root, segments, 0, {}, normalizedMethod)\n\n // P2 optimization: Cache the result\n this.routeCache.set(cacheKey, result)\n\n return result\n }\n\n private matchRecursive(\n node: RadixNode,\n segments: string[],\n depth: number,\n params: Record<string, string>,\n method: HttpMethod\n ): RouteMatch | null {\n // 1. Check if we reached end of path\n if (depth >= segments.length) {\n let handlers = node.handlers.get(method)\n if (!handlers) {\n handlers = node.handlers.get('all' as HttpMethod)\n }\n if (handlers) {\n return { handlers, params }\n }\n return null\n }\n\n const segment = segments[depth]!\n\n // 2. Try Static Match\n const staticChild = node.children.get(segment)\n if (staticChild) {\n const match = this.matchRecursive(staticChild, segments, depth + 1, params, method)\n if (match) {\n return match\n }\n }\n\n // 3. Try Param Match\n const paramChild = node.paramChild\n if (paramChild) {\n // Check constraints\n if (paramChild.regex && !paramChild.regex.test(segment)) {\n // Constraint failed, continue to wildcard\n } else {\n // Capture param\n if (paramChild.paramName) {\n params[paramChild.paramName] = decodeURIComponent(segment)\n const match = this.matchRecursive(paramChild, segments, depth + 1, params, method)\n if (match) {\n return match\n }\n // Backtrack\n delete params[paramChild.paramName]\n }\n }\n }\n\n // 4. Try Wildcard Match\n if (node.wildcardChild) {\n let handlers = node.wildcardChild.handlers.get(method)\n if (!handlers) {\n handlers = node.wildcardChild.handlers.get('all' as HttpMethod)\n }\n if (handlers) {\n return { handlers, params }\n }\n }\n\n return null\n }\n\n private splitPath(path: string): string[] {\n if (path === '/' || path === '') {\n return []\n }\n let p = path\n if (p.startsWith('/')) {\n p = p.slice(1)\n }\n if (p.endsWith('/')) {\n p = p.slice(0, -1)\n }\n return p.split('/')\n }\n\n /**\n * Serialize the router to a JSON string\n */\n serialize(): string {\n return JSON.stringify({\n root: this.root.toJSON(),\n globalConstraints: Array.from(this.globalConstraints.entries()).map(([k, v]) => [\n k,\n v.source,\n ]),\n })\n }\n\n /**\n * Restore a router from a serialized JSON string\n */\n static fromSerialized(json: string): RadixRouter {\n const data = JSON.parse(json)\n const router = new RadixRouter()\n\n router.root = RadixNode.fromJSON(data.root)\n\n if (data.globalConstraints) {\n for (const [key, source] of data.globalConstraints) {\n router.globalConstraints.set(key, new RegExp(source))\n }\n }\n\n return router\n }\n}\n",
|
|
59
57
|
"/**\n * @fileoverview AOT (Ahead-of-Time) Router\n *\n * Hybrid routing strategy:\n * - Static routes: O(1) Map lookup\n * - Dynamic routes: Optimized Radix Tree\n *\n * The key optimization is separating static from dynamic routes at registration time,\n * not at match time. This eliminates unnecessary tree traversal for static paths.\n *\n * @module @gravito/core/engine\n */\n\nimport { RadixRouter } from '../adapters/bun/RadixRouter'\nimport type { HttpMethod } from '../http/types'\nimport type { Handler, Middleware, RouteMatch, RouteMetadata } from './types'\n\n/**\n * Route definition for re-playing routes (mounting)\n */\ninterface RouteDefinition {\n method: HttpMethod\n path: string\n handler: Handler\n middleware: Middleware[]\n}\n\n/**\n * AOT Router - Optimized for Bun\n */\nexport class AOTRouter {\n // Static route cache: \"METHOD:PATH\" -> RouteMetadata\n /** @internal */\n public readonly staticRoutes = new Map<string, RouteMetadata>()\n\n // Dynamic route handler (Radix Tree)\n private dynamicRouter = new RadixRouter()\n\n // Store all route definitions to support mounting/merging\n /** @internal */\n public readonly routeDefinitions: RouteDefinition[] = []\n\n // Global middleware (applies to all routes)\n /** @internal */\n public readonly globalMiddleware: Middleware[] = []\n\n // Path-based middleware: pattern -> middleware[]\n /** @internal */\n public readonly pathMiddleware = new Map<string, Middleware[]>()\n\n // Dynamic route patterns: handler function -> route pattern\n // 用於追蹤動態路由的模式,防止高基數問題\n private dynamicRoutePatterns = new Map<Function, string>()\n\n private middlewareCache = new Map<string, { data: Middleware[]; version: number }>()\n private cacheMaxSize = 1000\n private _version = 0\n\n /**\n * Get the current version for cache invalidation\n * Incremented whenever middleware or routes are modified\n */\n public get version(): number {\n return this._version\n }\n\n /**\n * Register a route\n *\n * Automatically determines if route is static or dynamic.\n * Static routes are stored in a Map for O(1) lookup.\n * Dynamic routes use the Radix Tree.\n *\n * @param method - HTTP method\n * @param path - Route path\n * @param handler - Route handler\n * @param middleware - Route-specific middleware\n */\n add(method: HttpMethod, path: string, handler: Handler, middleware: Middleware[] = []): void {\n // Store definition for mounting support\n this.routeDefinitions.push({ method, path, handler, middleware })\n\n const normalizedMethod = method.toLowerCase() as HttpMethod\n\n if (this.isStaticPath(path)) {\n // Static route - use Map\n const key = `${normalizedMethod}:${path}`\n this.staticRoutes.set(key, { handler, middleware })\n } else {\n // Dynamic route - use Radix Tree\n // Wrap handler to match our Handler type\n const wrappedHandler = handler as unknown as Function\n this.dynamicRouter.add(normalizedMethod, path, [wrappedHandler])\n\n // Store route pattern for this handler\n this.dynamicRoutePatterns.set(wrappedHandler, path)\n\n // Store middleware separately\n if (middleware.length > 0) {\n this.pathMiddleware.set(`${normalizedMethod}:${path}`, middleware)\n }\n }\n }\n\n /**\n * Mount another router at a prefix\n */\n mount(prefix: string, other: AOTRouter): void {\n // 1. Convert other's global middleware to pattern middleware\n if (other.globalMiddleware.length > 0) {\n // Apply to both /prefix and /prefix/*\n this.usePattern(prefix, ...other.globalMiddleware)\n\n const wildcard = prefix === '/' ? '/*' : `${prefix}/*`\n this.usePattern(wildcard, ...other.globalMiddleware)\n }\n\n // 2. Transfer pattern-based middleware (only user-defined patterns, not route-specific)\n for (const [pattern, mws] of other.pathMiddleware) {\n // Skip route-specific middleware entries (they have method prefix like \"get:/path/:id\")\n // These are stored by add() with format \"method:path\"\n const hasMethodPrefix = /^(get|post|put|delete|patch|options|head):/.test(pattern)\n if (hasMethodPrefix) {\n continue\n }\n\n // Normalize pattern\n let newPattern: string\n if (pattern === '*') {\n newPattern = prefix === '/' ? '/*' : `${prefix}/*`\n } else if (pattern.startsWith('/')) {\n newPattern = prefix === '/' ? pattern : `${prefix}${pattern}`\n } else {\n newPattern = prefix === '/' ? `/${pattern}` : `${prefix}/${pattern}`\n }\n\n this.usePattern(newPattern, ...mws)\n }\n\n // 3. Transfer all routes\n for (const def of other.routeDefinitions) {\n // Calculate new path\n let newPath: string\n if (prefix === '/') {\n newPath = def.path\n } else if (def.path === '/') {\n newPath = prefix\n } else {\n newPath = `${prefix}${def.path}`\n }\n\n this.add(def.method, newPath, def.handler, def.middleware)\n }\n }\n\n /**\n * Add global middleware\n *\n * These run for every request, before route-specific middleware.\n *\n * @param middleware - Middleware functions\n */\n use(...middleware: Middleware[]): void {\n this.globalMiddleware.push(...middleware)\n this._version++\n }\n\n /**\n * Add path-based middleware\n *\n * Supports wildcard patterns like '/api/*'\n *\n * @param pattern - Path pattern\n * @param middleware - Middleware functions\n */\n usePattern(pattern: string, ...middleware: Middleware[]): void {\n // Special case: '*' pattern should be treated as global middleware\n if (pattern === '*') {\n this.globalMiddleware.push(...middleware)\n } else {\n const existing = this.pathMiddleware.get(pattern) ?? []\n this.pathMiddleware.set(pattern, [...existing, ...middleware])\n }\n this._version++\n }\n\n /**\n * Match a request to a route\n *\n * Returns the handler, params, and all applicable middleware.\n *\n * @param method - HTTP method\n * @param path - Request path\n * @returns Route match or null if not found\n */\n match(method: string, path: string): RouteMatch {\n const normalizedMethod = method.toLowerCase() as HttpMethod\n\n // Try static route first (O(1))\n const staticKey = `${normalizedMethod}:${path}`\n const staticRoute = this.staticRoutes.get(staticKey)\n\n if (staticRoute) {\n return {\n handler: staticRoute.handler,\n params: {},\n middleware: this.collectMiddleware(path, staticRoute.middleware),\n routePattern: path,\n }\n }\n\n // Try dynamic route (Radix Tree)\n const match = this.dynamicRouter.match(normalizedMethod, path)\n\n if (match && match.handlers.length > 0) {\n const handler = match.handlers[0] as unknown as Handler\n const wrappedHandler = match.handlers[0]\n\n // 從 Map 中取得路由模式\n const routePattern = this.dynamicRoutePatterns.get(wrappedHandler)\n const routeKey = routePattern ? `${normalizedMethod}:${routePattern}` : null\n const routeMiddleware = routeKey ? (this.pathMiddleware.get(routeKey) ?? []) : []\n\n return {\n handler,\n params: match.params,\n middleware: this.collectMiddleware(path, routeMiddleware),\n routePattern,\n }\n }\n\n // No match\n return {\n handler: null,\n params: {},\n middleware: [],\n }\n }\n\n /**\n * Public wrapper for collectMiddleware (used by Gravito for optimization)\n */\n collectMiddlewarePublic(path: string, routeMiddleware: Middleware[]): Middleware[] {\n return this.collectMiddleware(path, routeMiddleware)\n }\n\n /**\n * Collect all applicable middleware for a path\n *\n * Order: global -> pattern-based -> route-specific\n *\n * @param path - Request path\n * @param routeMiddleware - Route-specific middleware\n * @returns Combined middleware array\n */\n private collectMiddleware(path: string, routeMiddleware: Middleware[]): Middleware[] {\n // Fast path: no middleware at all\n if (\n this.globalMiddleware.length === 0 &&\n this.pathMiddleware.size === 0 &&\n routeMiddleware.length === 0\n ) {\n return []\n }\n\n // Optimized cache key: use path directly for O(1) lookups\n // Cache format: path -> { middleware array, version }\n const cacheKey = path\n const cached = this.middlewareCache.get(cacheKey)\n\n // Cache hit: return immediately (same path gets same middleware)\n if (cached !== undefined && cached.version === this._version) {\n return cached.data\n }\n\n const middleware: Middleware[] = []\n\n // 1. Global middleware (most common case)\n if (this.globalMiddleware.length > 0) {\n middleware.push(...this.globalMiddleware)\n }\n\n // 2. Pattern-based middleware (check only if pathMiddleware exists)\n if (this.pathMiddleware.size > 0) {\n for (const [pattern, mw] of this.pathMiddleware) {\n // Skip route-specific entries (they have method prefix)\n if (pattern.includes(':')) {\n continue\n }\n\n if (this.matchPattern(pattern, path)) {\n middleware.push(...mw)\n }\n }\n }\n\n // 3. Route-specific middleware\n if (routeMiddleware.length > 0) {\n middleware.push(...routeMiddleware)\n }\n\n // LRU cache: only cache if under max size\n if (this.middlewareCache.size < this.cacheMaxSize) {\n this.middlewareCache.set(cacheKey, { data: middleware, version: this._version })\n } else if (this.middlewareCache.has(cacheKey)) {\n // Update existing cache entry\n this.middlewareCache.set(cacheKey, { data: middleware, version: this._version })\n }\n\n return middleware\n }\n\n /**\n * Get all static routes optimized for Bun's native router.\n *\n * Unlike basic offloading, this version supports routes with middleware\n * by pre-compiling the middleware chain into a single native handler.\n *\n * @param onMatch - Factory to wrap handler and middleware into a Bun-compatible function\n * @returns Record of path -> Handler (Bun-compatible)\n */\n getNativeRoutes(\n onMatch: (\n handler: Handler,\n middleware: Middleware[],\n path: string\n ) => (req: Request) => Response | Promise<Response>\n ): Record<string, any> {\n const routes: Record<string, any> = {}\n\n for (const [key, metadata] of this.staticRoutes) {\n const [method, path] = key.split(':')\n if (method !== 'get') {\n continue // Bun's native routes primarily focus on GET for Response objects\n }\n\n // Collect all applicable middleware (Global + Pattern + Route-specific)\n const allMiddleware = this.collectMiddleware(path!, metadata.middleware)\n\n // Map to Bun's native router format\n // The middleware chain is compiled and wrapped by the caller (Gravito)\n routes[path!] = onMatch(metadata.handler, allMiddleware, path!)\n }\n\n return routes\n }\n\n /**\n * Check if a path is static (no parameters or wildcards)\n */\n private isStaticPath(path: string): boolean {\n return !path.includes(':') && !path.includes('*')\n }\n\n /**\n * Match a pattern against a path\n *\n * Supports:\n * - Exact match: '/api/users'\n * - Wildcard suffix: '/api/*'\n *\n * @param pattern - Pattern to match\n * @param path - Path to test\n * @returns True if pattern matches\n */\n private matchPattern(pattern: string, path: string): boolean {\n if (pattern === '*') {\n return true\n }\n if (pattern === path) {\n return true\n }\n\n if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -2)\n return path.startsWith(prefix)\n }\n\n return false\n }\n\n /**\n * Get all registered routes (for debugging)\n */\n getRoutes(): Array<{ method: string; path: string; type: 'static' | 'dynamic' }> {\n const routes: Array<{ method: string; path: string; type: 'static' | 'dynamic' }> = []\n\n // Static routes\n for (const key of this.staticRoutes.keys()) {\n const [method, path] = key.split(':')\n routes.push({ method: method!, path: path!, type: 'static' })\n }\n\n // Dynamic routes (harder to enumerate from Radix Tree)\n // For now, we'll skip this - it's mainly for debugging anyway\n\n return routes\n }\n}\n",
|
|
@@ -62,20 +60,24 @@
|
|
|
62
60
|
"/**\n * @fileoverview Engine Constants & Cached Buffers\n *\n * Pre-allocated resources to minimize runtime allocation overhead.\n * Specifically targets Bun's zero-copy capabilities.\n */\n\nconst encoder = new TextEncoder()\n\n// Pre-encoded JSON responses for common scenarios\nexport const CACHED_RESPONSES = {\n NOT_FOUND: encoder.encode('{\"error\":\"Not Found\"}'),\n INTERNAL_ERROR: encoder.encode('{\"error\":\"Internal Server Error\"}'),\n OK: encoder.encode('{\"ok\":true}'),\n EMPTY: new Uint8Array(0),\n} as const\n\n// Content-Type constants (avoid string allocation)\nexport const HEADERS = {\n JSON: { 'Content-Type': 'application/json; charset=utf-8' },\n TEXT: { 'Content-Type': 'text/plain; charset=utf-8' },\n HTML: { 'Content-Type': 'text/html; charset=utf-8' },\n} as const\n",
|
|
63
61
|
"/**\n * RequestScopeMetrics - Observability for RequestScope lifecycle\n *\n * Tracks cleanup execution time, scope size, and service counts\n * for performance monitoring and diagnostics.\n *\n * @example\n * ```typescript\n * const metrics = new RequestScopeMetrics()\n * metrics.recordCleanupStart()\n * await scope.cleanup()\n * metrics.recordCleanupEnd()\n *\n * console.log(metrics.toJSON())\n * // { cleanupDuration: 2.5, scopeSize: 3, servicesCleaned: 3 }\n * ```\n */\nexport class RequestScopeMetrics {\n private cleanupStartTime: number | null = null\n private cleanupDuration: number | null = null\n private scopeSize = 0\n private servicesCleaned = 0\n private errorsOccurred = 0\n\n /**\n * Record start of cleanup operation\n */\n recordCleanupStart(): void {\n this.cleanupStartTime = performance.now()\n }\n\n /**\n * Record end of cleanup operation\n *\n * @param scopeSize - Number of services in the scope\n * @param servicesCleaned - Number of services that had cleanup called\n * @param errorsOccurred - Number of cleanup errors\n */\n recordCleanupEnd(scopeSize: number, servicesCleaned: number, errorsOccurred = 0): void {\n if (this.cleanupStartTime !== null) {\n this.cleanupDuration = performance.now() - this.cleanupStartTime\n this.cleanupStartTime = null\n }\n\n this.scopeSize = scopeSize\n this.servicesCleaned = servicesCleaned\n this.errorsOccurred = errorsOccurred\n }\n\n /**\n * Get cleanup duration in milliseconds\n *\n * @returns Duration in ms, or null if cleanup not completed\n */\n getCleanupDuration(): number | null {\n return this.cleanupDuration\n }\n\n /**\n * Check if cleanup took longer than threshold (default 2ms)\n * Useful for detecting slow cleanups\n *\n * @param thresholdMs - Threshold in milliseconds\n * @returns True if cleanup exceeded threshold\n */\n isSlowCleanup(thresholdMs = 2): boolean {\n if (this.cleanupDuration === null) {\n return false\n }\n return this.cleanupDuration > thresholdMs\n }\n\n /**\n * Export metrics as JSON for logging/monitoring\n */\n toJSON() {\n return {\n cleanupDuration: this.cleanupDuration,\n scopeSize: this.scopeSize,\n servicesCleaned: this.servicesCleaned,\n errorsOccurred: this.errorsOccurred,\n hasErrors: this.errorsOccurred > 0,\n isSlowCleanup: this.isSlowCleanup(),\n }\n }\n\n /**\n * Export metrics as compact string for logging\n */\n toString(): string {\n const duration = this.cleanupDuration ?? 'pending'\n return (\n `cleanup: ${duration}ms, ` +\n `scope: ${this.scopeSize}, ` +\n `cleaned: ${this.servicesCleaned}, ` +\n `errors: ${this.errorsOccurred}`\n )\n }\n}\n\n/**\n * RequestScopeObserver - Hook for monitoring RequestScope lifecycle\n *\n * Implement this interface to receive callbacks during scope operations\n */\nexport interface RequestScopeObserver {\n /**\n * Called when a service is resolved in the scope\n */\n onServiceResolved?(key: string | symbol, isFromCache: boolean): void\n\n /**\n * Called when cleanup starts\n */\n onCleanupStart?(): void\n\n /**\n * Called when cleanup completes\n */\n onCleanupEnd?(metrics: RequestScopeMetrics): void\n\n /**\n * Called when cleanup encounters an error\n */\n onCleanupError?(error: Error): void\n}\n\n/**\n * RequestScopeMetricsCollector - Aggregates metrics across multiple scopes\n *\n * Used for application-level monitoring and performance tracking\n *\n * @example\n * ```typescript\n * const collector = new RequestScopeMetricsCollector()\n *\n * // Record metrics from multiple requests\n * collector.record(metrics1)\n * collector.record(metrics2)\n * collector.record(metrics3)\n *\n * // Get aggregated stats\n * const stats = collector.getStats()\n * console.log(stats.averageCleanupTime) // 3.5ms\n * ```\n */\nexport class RequestScopeMetricsCollector {\n private metrics: RequestScopeMetrics[] = []\n\n /**\n * Record metrics from a request scope\n */\n record(metrics: RequestScopeMetrics): void {\n this.metrics.push(metrics)\n }\n\n /**\n * Get aggregated statistics\n */\n getStats() {\n if (this.metrics.length === 0) {\n return {\n count: 0,\n averageCleanupTime: null,\n maxCleanupTime: null,\n minCleanupTime: null,\n totalErrorCount: 0,\n errorRate: 0,\n }\n }\n\n const durations = this.metrics\n .map((m) => m.getCleanupDuration())\n .filter((d): d is number => d !== null)\n\n const errorCounts = this.metrics.map((m) => m.toJSON().errorsOccurred)\n const totalErrors = errorCounts.reduce((a, b) => a + b, 0)\n\n return {\n count: this.metrics.length,\n averageCleanupTime:\n durations.length > 0 ? durations.reduce((a, b) => a + b) / durations.length : null,\n maxCleanupTime: durations.length > 0 ? Math.max(...durations) : null,\n minCleanupTime: durations.length > 0 ? Math.min(...durations) : null,\n totalErrorCount: totalErrors,\n errorRate: totalErrors / this.metrics.length,\n }\n }\n\n /**\n * Clear collected metrics\n */\n clear(): void {\n this.metrics = []\n }\n\n /**\n * Get number of recorded metrics\n */\n size(): number {\n return this.metrics.length\n }\n\n /**\n * Export metrics as JSON array\n */\n toJSON() {\n return this.metrics.map((m) => m.toJSON())\n }\n}\n",
|
|
64
62
|
"import type { ServiceKey } from '../Container'\nimport { RequestScopeMetrics, type RequestScopeObserver } from './RequestScopeMetrics'\n\n/**\n * Manages request-scoped service instances within a single HTTP request.\n *\n * Each request gets its own RequestScopeManager instance with isolated state.\n * Services are cached within the request and automatically cleaned up when\n * the request ends.\n *\n * @example\n * ```typescript\n * const scope = new RequestScopeManager()\n * const cache = scope.resolve('productCache', () => new ProductCache())\n * // ... use cache ...\n * await scope.cleanup() // Called automatically by Gravito engine\n * ```\n */\nexport class RequestScopeManager {\n private scoped = new Map<string, unknown>()\n private metadata = new Map<string, Record<string, unknown>>()\n private metrics = new RequestScopeMetrics()\n private observer: RequestScopeObserver | null = null\n\n constructor(observer?: RequestScopeObserver) {\n this.observer = observer || null\n }\n\n /**\n * Set observer for monitoring scope lifecycle\n */\n setObserver(observer: RequestScopeObserver): void {\n this.observer = observer\n }\n\n /**\n * Get metrics for this scope\n */\n getMetrics(): RequestScopeMetrics {\n return this.metrics\n }\n\n /**\n * Resolve or retrieve a request-scoped service instance.\n *\n * If the service already exists in this scope, returns the cached instance.\n * Otherwise, calls the factory function to create a new instance and caches it.\n *\n * Automatically detects and records services with cleanup methods.\n *\n * @template T - The type of the service.\n * @param key - The service key (for caching).\n * @param factory - Factory function to create the instance if not cached.\n * @returns The cached or newly created instance.\n */\n resolve<T>(key: ServiceKey, factory: () => T): T {\n const keyStr = String(key)\n const isFromCache = this.scoped.has(keyStr)\n\n if (!isFromCache) {\n const instance = factory()\n this.scoped.set(keyStr, instance)\n\n // Record metadata for cleanup detection\n if (instance && typeof instance === 'object' && 'cleanup' in instance) {\n this.metadata.set(keyStr, { hasCleanup: true })\n }\n }\n\n // Notify observer\n this.observer?.onServiceResolved?.(key, isFromCache)\n\n return this.scoped.get(keyStr) as T\n }\n\n /**\n * Clean up all request-scoped instances.\n *\n * Calls the cleanup() method on each service that has one.\n * Silently ignores cleanup errors to prevent cascading failures.\n * Called automatically by the Gravito engine in the request finally block.\n *\n * @returns Promise that resolves when all cleanup is complete.\n */\n async cleanup(): Promise<void> {\n this.metrics.recordCleanupStart()\n this.observer?.onCleanupStart?.()\n\n const errors: unknown[] = []\n let servicesCleaned = 0\n\n for (const [, instance] of this.scoped) {\n if (instance && typeof instance === 'object' && 'cleanup' in instance) {\n const fn = (instance as any).cleanup\n if (typeof fn === 'function') {\n try {\n await fn.call(instance)\n servicesCleaned++\n } catch (error) {\n // Collect errors but continue cleanup\n errors.push(error)\n this.observer?.onCleanupError?.(\n error instanceof Error ? error : new Error(String(error))\n )\n }\n }\n }\n }\n\n const scopeSize = this.scoped.size\n this.scoped.clear()\n this.metadata.clear()\n\n // Record metrics\n this.metrics.recordCleanupEnd(scopeSize, servicesCleaned, errors.length)\n this.observer?.onCleanupEnd?.(this.metrics)\n\n // Log errors if any occurred\n if (errors.length > 0) {\n console.error('RequestScope cleanup errors:', errors)\n }\n }\n\n /**\n * Get the number of services in this scope (for monitoring).\n *\n * @returns The count of cached services.\n */\n size(): number {\n return this.scoped.size\n }\n}\n",
|
|
65
|
-
"/**\n * @fileoverview FastContext - Pooled Request Context\n *\n * Minimal, high-performance context implementation designed for object pooling.\n * Lazy parsing strategy: only parse what's actually accessed.\n *\n * @module @gravito/core/engine\n */\n\nimport { RequestScopeManager } from '../Container/RequestScopeManager'\nimport type { FastRequest, FastContext as IFastContext } from './types'\n\n// Bun runtime optimization: cache frequently used functions\nconst bunEscapeHTML = require('bun').escapeHTML\n\n/**\n * Lazy-parsed request wrapper\n *\n * Delays parsing of query params, headers, and body until accessed.\n * This is a key optimization for requests that don't need all data.\n */\nclass FastRequestImpl implements FastRequest {\n private _request!: Request\n private _params!: Record<string, string>\n private _path!: string\n private _routePattern?: string\n private _url: URL | null = null\n private _query: URLSearchParams | null = null\n private _headers: Record<string, string> | null = null\n private _cachedJson: unknown = undefined\n private _jsonParsed = false\n private _cachedText: string | undefined = undefined\n private _textParsed = false\n private _cachedFormData: FormData | undefined = undefined\n private _formDataParsed = false\n private _cachedQueries: Record<string, string | string[]> | null = null\n private _cachedCookies: Record<string, string> | null = null\n // Back-reference for release check optimization\n private _ctx: FastContext\n\n constructor(ctx: FastContext) {\n this._ctx = ctx\n }\n\n /**\n * Initialize for new request\n */\n init(\n request: Request,\n params: Record<string, string> = {},\n path = '',\n routePattern?: string\n ): this {\n this._request = request\n this._params = params\n this._path = path\n this._routePattern = routePattern\n this._url = null\n this._query = null\n this._headers = null\n this._cachedJson = undefined\n this._jsonParsed = false\n this._cachedText = undefined\n this._textParsed = false\n this._cachedFormData = undefined\n this._formDataParsed = false\n this._cachedQueries = null\n this._cachedCookies = null\n return this\n }\n\n /**\n * Reset for pooling\n */\n reset(): void {\n // Release references to allow GC\n this._request = undefined as any\n this._params = undefined as any\n this._url = null\n this._query = null\n this._headers = null\n this._cachedJson = undefined\n this._jsonParsed = false\n this._cachedText = undefined\n this._textParsed = false\n this._cachedFormData = undefined\n this._formDataParsed = false\n this._cachedQueries = null\n this._cachedCookies = null\n }\n\n private checkReleased(): void {\n if (this._ctx._isReleased) {\n throw new Error(\n 'FastContext usage after release detected! (Object Pool Strict Lifecycle Guard)'\n )\n }\n }\n\n get url(): string {\n this.checkReleased()\n return this._request.url\n }\n\n get method(): string {\n this.checkReleased()\n return this._request.method\n }\n\n get path(): string {\n this.checkReleased()\n return this._path\n }\n\n get routePattern(): string | undefined {\n this.checkReleased()\n return this._routePattern\n }\n\n param(name: string): string | undefined {\n this.checkReleased()\n return this._params[name]\n }\n\n params(): Record<string, string> {\n this.checkReleased()\n return { ...this._params }\n }\n\n private getUrl(): URL {\n if (!this._url) {\n this._url = new URL(this._request.url)\n }\n return this._url\n }\n\n query(name: string): string | undefined {\n this.checkReleased()\n if (!this._query) {\n this._query = this.getUrl().searchParams\n }\n return this._query.get(name) ?? undefined\n }\n\n queries(): Record<string, string | string[]> {\n this.checkReleased()\n // Return cached queries object if available\n if (this._cachedQueries !== null) {\n return this._cachedQueries\n }\n\n if (!this._query) {\n this._query = this.getUrl().searchParams\n }\n\n const result: Record<string, string | string[]> = {}\n for (const [key, value] of this._query.entries()) {\n const existing = result[key]\n if (existing === undefined) {\n result[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n result[key] = [existing, value]\n }\n }\n this._cachedQueries = result\n return result\n }\n\n header(name: string): string | undefined {\n this.checkReleased()\n return this._request.headers.get(name) ?? undefined\n }\n\n headers(): Record<string, string> {\n this.checkReleased()\n if (!this._headers) {\n this._headers = {}\n for (const [key, value] of this._request.headers.entries()) {\n this._headers[key] = value\n }\n }\n return { ...this._headers }\n }\n\n get cookies(): Record<string, string> {\n this.checkReleased()\n // Return cached cookies if available\n if (this._cachedCookies !== null) {\n return this._cachedCookies\n }\n\n // 1. Try Bun Native CookieMap (Injected in Bun.serve routes API)\n const nativeCookies = (this._request as any).cookies\n if (nativeCookies) {\n this._cachedCookies = nativeCookies\n return nativeCookies\n }\n\n // 2. Fallback: Parse from Header manually (Lazy Parsed)\n const cookieHeader = this._request.headers.get('cookie')\n if (!cookieHeader) {\n this._cachedCookies = {}\n return {}\n }\n\n // Manual parse implementation (optimized for speed)\n // Handles URL-encoded values and flexible separators ('; ' or ';')\n const cookies: Record<string, string> = {}\n const pairs = cookieHeader.split(/;\\s*/)\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i]!\n const idx = pair.indexOf('=')\n if (idx > 0) {\n const name = pair.substring(0, idx)\n const value = pair.substring(idx + 1)\n // Decode value if URL-encoded, fallback to raw value on decode error\n try {\n cookies[name] = decodeURIComponent(value)\n } catch {\n cookies[name] = value\n }\n }\n }\n this._cachedCookies = cookies\n return cookies\n }\n\n async json<T = unknown>(): Promise<T> {\n this.checkReleased()\n if (!this._jsonParsed) {\n this._cachedJson = await this._request.json()\n this._jsonParsed = true\n }\n return this._cachedJson as T\n }\n\n async text(): Promise<string> {\n this.checkReleased()\n if (!this._textParsed) {\n this._cachedText = await this._request.text()\n this._textParsed = true\n }\n return this._cachedText!\n }\n\n async formData(): Promise<FormData> {\n this.checkReleased()\n if (!this._formDataParsed) {\n this._cachedFormData = await this._request.formData()\n this._formDataParsed = true\n }\n return this._cachedFormData!\n }\n\n get raw(): Request {\n this.checkReleased()\n return this._request\n }\n}\n\n/**\n * FastContext - Pooled request context\n *\n * Designed for minimal memory allocation and maximum reuse.\n * All response helpers create Response objects directly without intermediate wrappers.\n */\nexport class FastContext implements IFastContext {\n public readonly req: FastRequestImpl = new FastRequestImpl(this)\n // private _statusCode = 200\n private _headers = new Headers() // Reuse this object\n\n public _isReleased = false // Made public for internal check access\n private _requestScope: RequestScopeManager | null = null // Request-scoped services\n\n /**\n * Initialize context for a new request\n *\n * This is called when acquiring from the pool.\n */\n init(\n request: Request,\n params: Record<string, string> = {},\n path = '',\n routePattern?: string\n ): this {\n this._isReleased = false\n this.req.init(request, params, path, routePattern)\n // Optimization: Creating new Headers is faster than iterating to delete in Bun\n // But for strict object pooling, we might want to reconsider.\n // For now, new Headers() is safe and fast enough.\n this._headers = new Headers()\n this._requestScope = new RequestScopeManager() // Initialize request scope\n return this\n }\n\n /**\n * Reset context for pooling (Cleanup)\n *\n * This is called when releasing back to the pool.\n * Implements \"Deep-Reset Protocol\" and \"Release Guard\".\n */\n reset(): void {\n this._isReleased = true\n this.req.reset()\n // We don't clear _headers here because init() will create a new one.\n // If we wanted to reuse, we would clear it here.\n this._store.clear()\n this._requestScope = null // Release reference for GC\n }\n\n /**\n * Check if context is released\n */\n private checkReleased(): void {\n if (this._isReleased) {\n throw new Error(\n 'FastContext usage after release detected! (Object Pool Strict Lifecycle Guard)'\n )\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Response Helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n json<T>(data: T, status = 200): Response {\n this.checkReleased()\n // Merge custom headers with Content-Type\n const headers = new Headers(this._headers)\n headers.set('Content-Type', 'application/json; charset=utf-8')\n return Response.json(data, { status, headers })\n }\n\n text(text: string, status = 200): Response {\n this.checkReleased()\n // Merge custom headers with Content-Type\n const headers = new Headers(this._headers)\n headers.set('Content-Type', 'text/plain; charset=utf-8')\n return new Response(text, { status, headers })\n }\n\n html(html: string, status = 200): Response {\n this.checkReleased()\n // Merge custom headers with Content-Type\n const headers = new Headers(this._headers)\n headers.set('Content-Type', 'text/html; charset=utf-8')\n return new Response(html, { status, headers })\n }\n\n /**\n * Escape HTML using Bun's SIMD-accelerated native implementation\n */\n escape(html: string): string {\n return bunEscapeHTML(html)\n }\n\n redirect(url: string, status: 301 | 302 | 303 | 307 | 308 = 302): Response {\n this.checkReleased()\n return new Response(null, {\n status,\n headers: { Location: url },\n })\n }\n\n body(data: BodyInit | null, status = 200): Response {\n this.checkReleased()\n return new Response(data, {\n status,\n headers: this._headers,\n })\n }\n\n /**\n * Send high-performance binary response (e.g. CBOR, Protobuf)\n * Utilizing Bun's native ArrayBufferSink for zero-allocation construction.\n */\n binary(data: Uint8Array | ArrayBuffer, status = 200): Response {\n this.checkReleased()\n const body = data instanceof ArrayBuffer ? new Uint8Array(data) : data\n return new Response(body as any, {\n status,\n headers: { 'Content-Type': 'application/octet-stream' },\n })\n }\n\n stream(stream: any, status = 200): Response {\n this.checkReleased()\n // Direct streaming for zero-copy socket transfers\n return new Response(stream, {\n status,\n headers: { 'Content-Type': 'application/octet-stream' },\n })\n }\n\n notFound(message = 'Not Found'): Response {\n return this.text(message, 404)\n }\n\n forbidden(message = 'Forbidden'): Response {\n return this.text(message, 403)\n }\n\n unauthorized(message = 'Unauthorized'): Response {\n return this.text(message, 401)\n }\n\n badRequest(message = 'Bad Request'): Response {\n return this.text(message, 400)\n }\n\n async forward(target: string, _options: any = {}): Promise<Response> {\n this.checkReleased()\n // Minimal implementation of forwarding\n const url = new URL(this.req.url)\n const targetUrl = new URL(\n target.startsWith('http') ? target : `${url.protocol}//${target}${this.req.path}`\n )\n\n // Copy query params\n const searchParams = new URLSearchParams(url.search)\n searchParams.forEach((v, k) => {\n targetUrl.searchParams.set(k, v)\n })\n\n return fetch(targetUrl.toString(), {\n method: this.req.method,\n headers: this.req.raw.headers,\n body: this.req.method !== 'GET' && this.req.method !== 'HEAD' ? this.req.raw.body : null,\n // @ts-expect-error - Bun/Fetch specific\n duplex: 'half',\n })\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Header Management\n // ─────────────────────────────────────────────────────────────────────────\n\n header(name: string): string | undefined\n header(name: string, value: string): void\n header(name: string, value?: string): string | undefined | undefined {\n this.checkReleased()\n if (value !== undefined) {\n this._headers.set(name, value)\n return\n }\n return this.req.header(name)\n }\n\n /**\n * Status code setter (no-op)\n *\n * Note: Since all response helpers accept a `status` parameter,\n * this method is not actively used. Status should be set directly\n * in the response helper call (e.g., `ctx.json({}, 201)`).\n */\n status(_code: number): void {\n this.checkReleased()\n // Status is set per-response, not stored on context\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Context Variables\n // ─────────────────────────────────────────────────────────────────────────\n\n private _store = new Map<string, any>()\n\n get<T>(key: string): T {\n return this._store.get(key)\n }\n\n set(key: string, value: any): void {\n this._store.set(key, value)\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Request Scope Management\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Get the request-scoped service manager for this request.\n *\n * @returns The RequestScopeManager for this request.\n * @throws Error if called before init() or after reset().\n */\n requestScope(): RequestScopeManager {\n if (!this._requestScope) {\n throw new Error('RequestScope not initialized. Call init() first.')\n }\n return this._requestScope\n }\n\n /**\n * Resolve a request-scoped service (convenience method).\n *\n * @template T - The service type.\n * @param key - The service key for caching.\n * @param factory - Factory function to create the service.\n * @returns The cached or newly created service instance.\n */\n scoped<T>(key: string | symbol, factory: () => T): T {\n return this.requestScope().resolve(key, factory)\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Lifecycle helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n public route: (name: string, params?: any, query?: any) => string = () => ''\n\n get native(): this {\n return this\n }\n}\n",
|
|
66
|
-
"/**\n * @fileoverview MinimalContext - Ultra-lightweight Request Context\n *\n * Designed for zero-middleware static routes where pool overhead\n * exceeds the cost of creating a new object.\n *\n * Key difference from FastContext:\n * - No object pooling (direct instantiation is faster for simple cases)\n * - No Headers object reuse (creates inline)\n * - Minimal memory footprint\n *\n * @module @gravito/core/engine\n */\n\nimport { RequestScopeManager } from '../Container/RequestScopeManager'\nimport type { FastRequest, FastContext as IFastContext } from './types'\n\n// Bun runtime optimization: cache frequently used functions\nconst bunEscapeHTML = require('bun').escapeHTML\n\n/**\n * Minimal request wrapper\n */\nclass MinimalRequest implements FastRequest {\n private _searchParams: URLSearchParams | null = null\n private _cachedQueries: Record<string, string | string[]> | null = null\n private _cachedJsonPromise: Promise<unknown> | null = null\n private _cachedTextPromise: Promise<string> | null = null\n private _cachedFormDataPromise: Promise<FormData> | null = null\n\n constructor(\n private readonly _request: Request,\n private readonly _params: Record<string, string>,\n private readonly _path: string,\n private readonly _routePattern?: string\n ) {}\n\n get url(): string {\n return this._request.url\n }\n\n get method(): string {\n return this._request.method\n }\n\n get path(): string {\n return this._path\n }\n\n get routePattern(): string | undefined {\n return this._routePattern\n }\n\n param(name: string): string | undefined {\n return this._params[name]\n }\n\n params(): Record<string, string> {\n return { ...this._params }\n }\n\n /**\n * Lazy-initialize searchParams, only parse once\n */\n private getSearchParams(): URLSearchParams {\n if (this._searchParams === null) {\n const url = this._request.url\n const queryStart = url.indexOf('?')\n if (queryStart === -1) {\n this._searchParams = new URLSearchParams()\n } else {\n const hashStart = url.indexOf('#', queryStart)\n const queryString =\n hashStart === -1 ? url.slice(queryStart + 1) : url.slice(queryStart + 1, hashStart)\n this._searchParams = new URLSearchParams(queryString)\n }\n }\n return this._searchParams\n }\n\n query(name: string): string | undefined {\n return this.getSearchParams().get(name) ?? undefined\n }\n\n queries(): Record<string, string | string[]> {\n // Cache the parsed queries object to avoid repeated parsing\n if (this._cachedQueries !== null) {\n return this._cachedQueries\n }\n\n const params = this.getSearchParams()\n const result: Record<string, string | string[]> = {}\n for (const [key, value] of params.entries()) {\n const existing = result[key]\n if (existing === undefined) {\n result[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n result[key] = [existing, value]\n }\n }\n this._cachedQueries = result\n return result\n }\n\n header(name: string): string | undefined {\n return this._request.headers.get(name) ?? undefined\n }\n\n headers(): Record<string, string> {\n const result: Record<string, string> = {}\n for (const [key, value] of this._request.headers.entries()) {\n result[key] = value\n }\n return result\n }\n\n async json<T = unknown>(): Promise<T> {\n // Cache the json promise to prevent \"Body has already been consumed\" errors\n // when multiple handlers or middleware try to read the body\n if (this._cachedJsonPromise === null) {\n this._cachedJsonPromise = this._request.json()\n }\n return this._cachedJsonPromise as Promise<T>\n }\n\n async text(): Promise<string> {\n // Cache the text promise to prevent \"Body has already been consumed\" errors\n if (this._cachedTextPromise === null) {\n this._cachedTextPromise = this._request.text()\n }\n return this._cachedTextPromise\n }\n\n async formData(): Promise<FormData> {\n // Cache the formData promise to prevent \"Body has already been consumed\" errors\n if (this._cachedFormDataPromise === null) {\n this._cachedFormDataPromise = this._request.formData()\n }\n return this._cachedFormDataPromise\n }\n\n get cookies(): Record<string, string> {\n // 1. Try Bun Native CookieMap (Injected in Bun.serve routes API)\n const nativeCookies = (this._request as any).cookies\n if (nativeCookies) {\n return nativeCookies\n }\n\n // 2. Fallback: Parse from Header manually\n const cookieHeader = this._request.headers.get('cookie')\n if (!cookieHeader) {\n return {}\n }\n\n // Manual parse implementation (optimized for speed)\n // Handles URL-encoded values and flexible separators ('; ' or ';')\n const cookies: Record<string, string> = {}\n const pairs = cookieHeader.split(/;\\s*/)\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i]!\n const idx = pair.indexOf('=')\n if (idx > 0) {\n const name = pair.substring(0, idx)\n const value = pair.substring(idx + 1)\n // Decode value if URL-encoded, fallback to raw value on decode error\n try {\n cookies[name] = decodeURIComponent(value)\n } catch {\n cookies[name] = value\n }\n }\n }\n return cookies\n }\n\n get raw(): Request {\n return this._request\n }\n}\n\n/**\n * MinimalContext - Optimized for simple, fast responses\n *\n * Use when:\n * - No middleware\n * - Static routes\n * - Simple JSON/text responses\n * - No custom headers needed\n */\nexport class MinimalContext implements IFastContext {\n public readonly req: MinimalRequest\n private _resHeaders: Record<string, string> = {}\n private _requestScope: RequestScopeManager\n\n constructor(\n request: Request,\n params: Record<string, string>,\n path: string,\n routePattern?: string\n ) {\n this.req = new MinimalRequest(request, params, path, routePattern)\n this._requestScope = new RequestScopeManager()\n }\n\n // get req(): FastRequest {\n // return this._req\n // }\n\n // Response helpers - merge custom headers with defaults\n // Optimized: use Object.assign instead of spread to avoid shallow copy overhead\n private getHeaders(contentType: string): Record<string, string> {\n const headers = Object.assign({ 'Content-Type': contentType }, this._resHeaders)\n return headers\n }\n\n json<T>(data: T, status = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: this.getHeaders('application/json; charset=utf-8'),\n })\n }\n\n text(text: string, status = 200): Response {\n return new Response(text, {\n status,\n headers: this.getHeaders('text/plain; charset=utf-8'),\n })\n }\n\n html(html: string, status = 200): Response {\n return new Response(html, {\n status,\n headers: this.getHeaders('text/html; charset=utf-8'),\n })\n }\n\n redirect(url: string, status: 301 | 302 | 303 | 307 | 308 = 302): Response {\n return new Response(null, {\n status,\n headers: { ...this._resHeaders, Location: url },\n })\n }\n\n body(data: BodyInit | null, status = 200): Response {\n return new Response(data, {\n status,\n headers: this._resHeaders,\n })\n }\n\n header(name: string): string | undefined\n header(name: string, value: string): void\n header(name: string, value?: string): string | undefined | undefined {\n if (value !== undefined) {\n this._resHeaders[name] = value\n return\n }\n return this.req.header(name)\n }\n\n status(_code: number): void {\n // Status is set per response helper call, not stored on context\n }\n\n stream(stream: ReadableStream, status = 200): Response {\n return new Response(stream, {\n status,\n headers: this.getHeaders('application/octet-stream'),\n })\n }\n\n notFound(message = 'Not Found'): Response {\n return this.text(message, 404)\n }\n\n forbidden(message = 'Forbidden'): Response {\n return this.text(message, 403)\n }\n\n unauthorized(message = 'Unauthorized'): Response {\n return this.text(message, 401)\n }\n\n badRequest(message = 'Bad Request'): Response {\n return this.text(message, 400)\n }\n\n async forward(target: string, _options: any = {}): Promise<Response> {\n const url = new URL(this.req.url)\n const targetUrl = new URL(\n target.startsWith('http') ? target : `${url.protocol}//${target}${this.req.path}`\n )\n return fetch(targetUrl.toString(), {\n method: this.req.method,\n headers: this.req.raw.headers,\n })\n }\n\n escape(html: string): string {\n return bunEscapeHTML(html)\n }\n\n get<T>(_key: string): T {\n return undefined as any\n }\n\n set(_key: string, _value: any): void {}\n\n /**\n * Get the request-scoped service manager for this request.\n *\n * @returns The RequestScopeManager for this request.\n */\n requestScope(): RequestScopeManager {\n return this._requestScope\n }\n\n /**\n * Resolve a request-scoped service (convenience method).\n *\n * @template T - The service type.\n * @param key - The service key for caching.\n * @param factory - Factory function to create the service.\n * @returns The cached or newly created service instance.\n */\n scoped<T>(key: string | symbol, factory: () => T): T {\n return this._requestScope.resolve(key, factory)\n }\n\n public route: (name: string, params?: any, query?: any) => string = () => ''\n\n get native(): this {\n return this\n }\n\n // Required for interface compatibility\n init(_request: Request, _params?: Record<string, string>, _path?: string): this {\n throw new Error('MinimalContext does not support init. Create a new instance instead.')\n }\n\n // Required for interface compatibility\n reset(): void {\n // MinimalContext is not pooled, so no-op\n }\n}\n",
|
|
63
|
+
"/**\n * @fileoverview FastContext - Pooled Request Context\n *\n * Minimal, high-performance context implementation designed for object pooling.\n * Lazy parsing strategy: only parse what's actually accessed.\n *\n * @module @gravito/core/engine\n */\n\nimport { RequestScopeManager } from '../Container/RequestScopeManager'\nimport type { FastRequest, FastContext as IFastContext } from './types'\n\n// Bun runtime optimization: cache frequently used functions\nlet bunEscapeHTML: (html: string) => string = (html: string) => {\n // Default fallback for Node.js environments\n return html\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\ntry {\n bunEscapeHTML = (require('bun') as any).escapeHTML\n} catch {\n // Already have default fallback\n}\n\n/**\n * Lazy-parsed request wrapper\n *\n * Delays parsing of query params, headers, and body until accessed.\n * This is a key optimization for requests that don't need all data.\n */\nclass FastRequestImpl implements FastRequest {\n private _request!: Request\n private _params!: Record<string, string>\n private _path!: string\n private _routePattern?: string\n private _url: URL | null = null\n private _query: URLSearchParams | null = null\n private _headers: Record<string, string> | null = null\n private _cachedJson: unknown = undefined\n private _jsonParsed = false\n private _cachedText: string | undefined = undefined\n private _textParsed = false\n private _cachedFormData: FormData | undefined = undefined\n private _formDataParsed = false\n private _cachedQueries: Record<string, string | string[]> | null = null\n private _cachedCookies: Record<string, string> | null = null\n // Back-reference for release check optimization\n private _ctx: FastContext\n\n constructor(ctx: FastContext) {\n this._ctx = ctx\n }\n\n /**\n * Initialize for new request\n */\n init(\n request: Request,\n params: Record<string, string> = {},\n path = '',\n routePattern?: string\n ): this {\n this._request = request\n this._params = params\n this._path = path\n this._routePattern = routePattern\n this._url = null\n this._query = null\n this._headers = null\n this._cachedJson = undefined\n this._jsonParsed = false\n this._cachedText = undefined\n this._textParsed = false\n this._cachedFormData = undefined\n this._formDataParsed = false\n this._cachedQueries = null\n this._cachedCookies = null\n return this\n }\n\n /**\n * Reset for pooling\n */\n reset(): void {\n // Release references to allow GC\n this._request = undefined as any\n this._params = undefined as any\n this._url = null\n this._query = null\n this._headers = null\n this._cachedJson = undefined\n this._jsonParsed = false\n this._cachedText = undefined\n this._textParsed = false\n this._cachedFormData = undefined\n this._formDataParsed = false\n this._cachedQueries = null\n this._cachedCookies = null\n }\n\n private checkReleased(): void {\n if (this._ctx._isReleased) {\n throw new Error(\n 'FastContext usage after release detected! (Object Pool Strict Lifecycle Guard)'\n )\n }\n }\n\n get url(): string {\n this.checkReleased()\n return this._request.url\n }\n\n get method(): string {\n this.checkReleased()\n return this._request.method\n }\n\n get path(): string {\n this.checkReleased()\n return this._path\n }\n\n get routePattern(): string | undefined {\n this.checkReleased()\n return this._routePattern\n }\n\n param(name: string): string | undefined {\n this.checkReleased()\n return this._params[name]\n }\n\n params(): Record<string, string> {\n this.checkReleased()\n return { ...this._params }\n }\n\n private getUrl(): URL {\n if (!this._url) {\n this._url = new URL(this._request.url)\n }\n return this._url\n }\n\n query(name: string): string | undefined {\n this.checkReleased()\n if (!this._query) {\n this._query = this.getUrl().searchParams\n }\n return this._query.get(name) ?? undefined\n }\n\n queries(): Record<string, string | string[]> {\n this.checkReleased()\n // Return cached queries object if available\n if (this._cachedQueries !== null) {\n return this._cachedQueries\n }\n\n if (!this._query) {\n this._query = this.getUrl().searchParams\n }\n\n const result: Record<string, string | string[]> = {}\n for (const [key, value] of this._query.entries()) {\n const existing = result[key]\n if (existing === undefined) {\n result[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n result[key] = [existing, value]\n }\n }\n this._cachedQueries = result\n return result\n }\n\n header(name: string): string | undefined {\n this.checkReleased()\n return this._request.headers.get(name) ?? undefined\n }\n\n headers(): Record<string, string> {\n this.checkReleased()\n if (!this._headers) {\n this._headers = {}\n for (const [key, value] of this._request.headers.entries()) {\n this._headers[key] = value\n }\n }\n return { ...this._headers }\n }\n\n get cookies(): Record<string, string> {\n this.checkReleased()\n // Return cached cookies if available\n if (this._cachedCookies !== null) {\n return this._cachedCookies\n }\n\n // 1. Try Bun Native CookieMap (Injected in Bun.serve routes API)\n const nativeCookies = (this._request as any).cookies\n if (nativeCookies) {\n this._cachedCookies = nativeCookies\n return nativeCookies\n }\n\n // 2. Fallback: Parse from Header manually (Lazy Parsed)\n const cookieHeader = this._request.headers.get('cookie')\n if (!cookieHeader) {\n this._cachedCookies = {}\n return {}\n }\n\n // Manual parse implementation (optimized for speed)\n // Handles URL-encoded values and flexible separators ('; ' or ';')\n const cookies: Record<string, string> = {}\n const pairs = cookieHeader.split(/;\\s*/)\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i]!\n const idx = pair.indexOf('=')\n if (idx > 0) {\n const name = pair.substring(0, idx)\n const value = pair.substring(idx + 1)\n // Decode value if URL-encoded, fallback to raw value on decode error\n try {\n cookies[name] = decodeURIComponent(value)\n } catch {\n cookies[name] = value\n }\n }\n }\n this._cachedCookies = cookies\n return cookies\n }\n\n async json<T = unknown>(): Promise<T> {\n this.checkReleased()\n if (!this._jsonParsed) {\n this._cachedJson = await this._request.json()\n this._jsonParsed = true\n }\n return this._cachedJson as T\n }\n\n async text(): Promise<string> {\n this.checkReleased()\n if (!this._textParsed) {\n this._cachedText = await this._request.text()\n this._textParsed = true\n }\n return this._cachedText!\n }\n\n async formData(): Promise<FormData> {\n this.checkReleased()\n if (!this._formDataParsed) {\n this._cachedFormData = await this._request.formData()\n this._formDataParsed = true\n }\n return this._cachedFormData!\n }\n\n get raw(): Request {\n this.checkReleased()\n return this._request\n }\n}\n\n/**\n * FastContext - Pooled request context\n *\n * Designed for minimal memory allocation and maximum reuse.\n * All response helpers create Response objects directly without intermediate wrappers.\n */\nexport class FastContext implements IFastContext {\n public readonly req: FastRequestImpl = new FastRequestImpl(this)\n // private _statusCode = 200\n private _headers = new Headers() // Reuse this object\n\n public _isReleased = false // Made public for internal check access\n private _requestScope: RequestScopeManager | null = null // Request-scoped services\n\n /**\n * Initialize context for a new request\n *\n * This is called when acquiring from the pool.\n */\n init(\n request: Request,\n params: Record<string, string> = {},\n path = '',\n routePattern?: string\n ): this {\n this._isReleased = false\n this.req.init(request, params, path, routePattern)\n // Optimization: Creating new Headers is faster than iterating to delete in Bun\n // But for strict object pooling, we might want to reconsider.\n // For now, new Headers() is safe and fast enough.\n this._headers = new Headers()\n this._requestScope = new RequestScopeManager() // Initialize request scope\n return this\n }\n\n /**\n * Reset context for pooling (Cleanup)\n *\n * This is called when releasing back to the pool.\n * Implements \"Deep-Reset Protocol\" and \"Release Guard\".\n */\n reset(): void {\n this._isReleased = true\n this.req.reset()\n // We don't clear _headers here because init() will create a new one.\n // If we wanted to reuse, we would clear it here.\n this._store.clear()\n this._requestScope = null // Release reference for GC\n }\n\n /**\n * Check if context is released\n */\n private checkReleased(): void {\n if (this._isReleased) {\n throw new Error(\n 'FastContext usage after release detected! (Object Pool Strict Lifecycle Guard)'\n )\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Response Helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n json<T>(data: T, status = 200): Response {\n this.checkReleased()\n // Merge custom headers with Content-Type\n const headers = new Headers(this._headers)\n headers.set('Content-Type', 'application/json; charset=utf-8')\n return Response.json(data, { status, headers })\n }\n\n text(text: string, status = 200): Response {\n this.checkReleased()\n // Merge custom headers with Content-Type\n const headers = new Headers(this._headers)\n headers.set('Content-Type', 'text/plain; charset=utf-8')\n return new Response(text, { status, headers })\n }\n\n html(html: string, status = 200): Response {\n this.checkReleased()\n // Merge custom headers with Content-Type\n const headers = new Headers(this._headers)\n headers.set('Content-Type', 'text/html; charset=utf-8')\n return new Response(html, { status, headers })\n }\n\n /**\n * Escape HTML using Bun's SIMD-accelerated native implementation\n */\n escape(html: string): string {\n return bunEscapeHTML(html)\n }\n\n redirect(url: string, status: 301 | 302 | 303 | 307 | 308 = 302): Response {\n this.checkReleased()\n return new Response(null, {\n status,\n headers: { Location: url },\n })\n }\n\n body(data: BodyInit | null, status = 200): Response {\n this.checkReleased()\n return new Response(data, {\n status,\n headers: this._headers,\n })\n }\n\n /**\n * Send high-performance binary response (e.g. CBOR, Protobuf)\n * Utilizing Bun's native ArrayBufferSink for zero-allocation construction.\n */\n binary(data: Uint8Array | ArrayBuffer, status = 200): Response {\n this.checkReleased()\n const body = data instanceof ArrayBuffer ? new Uint8Array(data) : data\n return new Response(body as any, {\n status,\n headers: { 'Content-Type': 'application/octet-stream' },\n })\n }\n\n stream(stream: any, status = 200): Response {\n this.checkReleased()\n // Direct streaming for zero-copy socket transfers\n return new Response(stream, {\n status,\n headers: { 'Content-Type': 'application/octet-stream' },\n })\n }\n\n notFound(message = 'Not Found'): Response {\n return this.text(message, 404)\n }\n\n forbidden(message = 'Forbidden'): Response {\n return this.text(message, 403)\n }\n\n unauthorized(message = 'Unauthorized'): Response {\n return this.text(message, 401)\n }\n\n badRequest(message = 'Bad Request'): Response {\n return this.text(message, 400)\n }\n\n async forward(target: string, _options: any = {}): Promise<Response> {\n this.checkReleased()\n // Minimal implementation of forwarding\n const url = new URL(this.req.url)\n const targetUrl = new URL(\n target.startsWith('http') ? target : `${url.protocol}//${target}${this.req.path}`\n )\n\n // Copy query params\n const searchParams = new URLSearchParams(url.search)\n searchParams.forEach((v, k) => {\n targetUrl.searchParams.set(k, v)\n })\n\n return fetch(targetUrl.toString(), {\n method: this.req.method,\n headers: this.req.raw.headers,\n body: this.req.method !== 'GET' && this.req.method !== 'HEAD' ? this.req.raw.body : null,\n // @ts-expect-error - Bun/Fetch specific\n duplex: 'half',\n })\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Header Management\n // ─────────────────────────────────────────────────────────────────────────\n\n header(name: string): string | undefined\n header(name: string, value: string): void\n header(name: string, value?: string): string | undefined | undefined {\n this.checkReleased()\n if (value !== undefined) {\n this._headers.set(name, value)\n return\n }\n return this.req.header(name)\n }\n\n /**\n * Status code setter (no-op)\n *\n * Note: Since all response helpers accept a `status` parameter,\n * this method is not actively used. Status should be set directly\n * in the response helper call (e.g., `ctx.json({}, 201)`).\n */\n status(_code: number): void {\n this.checkReleased()\n // Status is set per-response, not stored on context\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Context Variables\n // ─────────────────────────────────────────────────────────────────────────\n\n private _store = new Map<string, any>()\n\n get<T>(key: string): T {\n return this._store.get(key)\n }\n\n set(key: string, value: any): void {\n this._store.set(key, value)\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Request Scope Management\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Get the request-scoped service manager for this request.\n *\n * @returns The RequestScopeManager for this request.\n * @throws Error if called before init() or after reset().\n */\n requestScope(): RequestScopeManager {\n if (!this._requestScope) {\n throw new Error('RequestScope not initialized. Call init() first.')\n }\n return this._requestScope\n }\n\n /**\n * Resolve a request-scoped service (convenience method).\n *\n * @template T - The service type.\n * @param key - The service key for caching.\n * @param factory - Factory function to create the service.\n * @returns The cached or newly created service instance.\n */\n scoped<T>(key: string | symbol, factory: () => T): T {\n return this.requestScope().resolve(key, factory)\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Lifecycle helpers\n // ─────────────────────────────────────────────────────────────────────────\n\n public route: (name: string, params?: any, query?: any) => string = () => ''\n\n get native(): this {\n return this\n }\n}\n",
|
|
64
|
+
"/**\n * @fileoverview MinimalContext - Ultra-lightweight Request Context\n *\n * Designed for zero-middleware static routes where pool overhead\n * exceeds the cost of creating a new object.\n *\n * Key difference from FastContext:\n * - No object pooling (direct instantiation is faster for simple cases)\n * - No Headers object reuse (creates inline)\n * - Minimal memory footprint\n *\n * @module @gravito/core/engine\n */\n\nimport { RequestScopeManager } from '../Container/RequestScopeManager'\nimport type { FastRequest, FastContext as IFastContext } from './types'\n\n// Bun runtime optimization: cache frequently used functions\nlet bunEscapeHTML: (html: string) => string = (html: string) => {\n // Default fallback for Node.js environments\n return html\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\ntry {\n bunEscapeHTML = (require('bun') as any).escapeHTML\n} catch {\n // Already have default fallback\n}\n\n/**\n * Minimal request wrapper\n */\nclass MinimalRequest implements FastRequest {\n private _searchParams: URLSearchParams | null = null\n private _cachedQueries: Record<string, string | string[]> | null = null\n private _cachedJsonPromise: Promise<unknown> | null = null\n private _cachedTextPromise: Promise<string> | null = null\n private _cachedFormDataPromise: Promise<FormData> | null = null\n\n constructor(\n private readonly _request: Request,\n private readonly _params: Record<string, string>,\n private readonly _path: string,\n private readonly _routePattern?: string\n ) {}\n\n get url(): string {\n return this._request.url\n }\n\n get method(): string {\n return this._request.method\n }\n\n get path(): string {\n return this._path\n }\n\n get routePattern(): string | undefined {\n return this._routePattern\n }\n\n param(name: string): string | undefined {\n return this._params[name]\n }\n\n params(): Record<string, string> {\n return { ...this._params }\n }\n\n /**\n * Lazy-initialize searchParams, only parse once\n */\n private getSearchParams(): URLSearchParams {\n if (this._searchParams === null) {\n const url = this._request.url\n const queryStart = url.indexOf('?')\n if (queryStart === -1) {\n this._searchParams = new URLSearchParams()\n } else {\n const hashStart = url.indexOf('#', queryStart)\n const queryString =\n hashStart === -1 ? url.slice(queryStart + 1) : url.slice(queryStart + 1, hashStart)\n this._searchParams = new URLSearchParams(queryString)\n }\n }\n return this._searchParams\n }\n\n query(name: string): string | undefined {\n return this.getSearchParams().get(name) ?? undefined\n }\n\n queries(): Record<string, string | string[]> {\n // Cache the parsed queries object to avoid repeated parsing\n if (this._cachedQueries !== null) {\n return this._cachedQueries\n }\n\n const params = this.getSearchParams()\n const result: Record<string, string | string[]> = {}\n for (const [key, value] of params.entries()) {\n const existing = result[key]\n if (existing === undefined) {\n result[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n result[key] = [existing, value]\n }\n }\n this._cachedQueries = result\n return result\n }\n\n header(name: string): string | undefined {\n return this._request.headers.get(name) ?? undefined\n }\n\n headers(): Record<string, string> {\n const result: Record<string, string> = {}\n for (const [key, value] of this._request.headers.entries()) {\n result[key] = value\n }\n return result\n }\n\n async json<T = unknown>(): Promise<T> {\n // Cache the json promise to prevent \"Body has already been consumed\" errors\n // when multiple handlers or middleware try to read the body\n if (this._cachedJsonPromise === null) {\n this._cachedJsonPromise = this._request.json()\n }\n return this._cachedJsonPromise as Promise<T>\n }\n\n async text(): Promise<string> {\n // Cache the text promise to prevent \"Body has already been consumed\" errors\n if (this._cachedTextPromise === null) {\n this._cachedTextPromise = this._request.text()\n }\n return this._cachedTextPromise\n }\n\n async formData(): Promise<FormData> {\n // Cache the formData promise to prevent \"Body has already been consumed\" errors\n if (this._cachedFormDataPromise === null) {\n this._cachedFormDataPromise = this._request.formData()\n }\n return this._cachedFormDataPromise\n }\n\n get cookies(): Record<string, string> {\n // 1. Try Bun Native CookieMap (Injected in Bun.serve routes API)\n const nativeCookies = (this._request as any).cookies\n if (nativeCookies) {\n return nativeCookies\n }\n\n // 2. Fallback: Parse from Header manually\n const cookieHeader = this._request.headers.get('cookie')\n if (!cookieHeader) {\n return {}\n }\n\n // Manual parse implementation (optimized for speed)\n // Handles URL-encoded values and flexible separators ('; ' or ';')\n const cookies: Record<string, string> = {}\n const pairs = cookieHeader.split(/;\\s*/)\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i]!\n const idx = pair.indexOf('=')\n if (idx > 0) {\n const name = pair.substring(0, idx)\n const value = pair.substring(idx + 1)\n // Decode value if URL-encoded, fallback to raw value on decode error\n try {\n cookies[name] = decodeURIComponent(value)\n } catch {\n cookies[name] = value\n }\n }\n }\n return cookies\n }\n\n get raw(): Request {\n return this._request\n }\n}\n\n/**\n * MinimalContext - Optimized for simple, fast responses\n *\n * Use when:\n * - No middleware\n * - Static routes\n * - Simple JSON/text responses\n * - No custom headers needed\n */\nexport class MinimalContext implements IFastContext {\n public readonly req: MinimalRequest\n private _resHeaders: Record<string, string> = {}\n private _requestScope: RequestScopeManager\n\n constructor(\n request: Request,\n params: Record<string, string>,\n path: string,\n routePattern?: string\n ) {\n this.req = new MinimalRequest(request, params, path, routePattern)\n this._requestScope = new RequestScopeManager()\n }\n\n // get req(): FastRequest {\n // return this._req\n // }\n\n // Response helpers - merge custom headers with defaults\n // Optimized: use Object.assign instead of spread to avoid shallow copy overhead\n private getHeaders(contentType: string): Record<string, string> {\n const headers = Object.assign({ 'Content-Type': contentType }, this._resHeaders)\n return headers\n }\n\n json<T>(data: T, status = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: this.getHeaders('application/json; charset=utf-8'),\n })\n }\n\n text(text: string, status = 200): Response {\n return new Response(text, {\n status,\n headers: this.getHeaders('text/plain; charset=utf-8'),\n })\n }\n\n html(html: string, status = 200): Response {\n return new Response(html, {\n status,\n headers: this.getHeaders('text/html; charset=utf-8'),\n })\n }\n\n redirect(url: string, status: 301 | 302 | 303 | 307 | 308 = 302): Response {\n return new Response(null, {\n status,\n headers: { ...this._resHeaders, Location: url },\n })\n }\n\n body(data: BodyInit | null, status = 200): Response {\n return new Response(data, {\n status,\n headers: this._resHeaders,\n })\n }\n\n header(name: string): string | undefined\n header(name: string, value: string): void\n header(name: string, value?: string): string | undefined | undefined {\n if (value !== undefined) {\n this._resHeaders[name] = value\n return\n }\n return this.req.header(name)\n }\n\n status(_code: number): void {\n // Status is set per response helper call, not stored on context\n }\n\n stream(stream: ReadableStream, status = 200): Response {\n return new Response(stream, {\n status,\n headers: this.getHeaders('application/octet-stream'),\n })\n }\n\n notFound(message = 'Not Found'): Response {\n return this.text(message, 404)\n }\n\n forbidden(message = 'Forbidden'): Response {\n return this.text(message, 403)\n }\n\n unauthorized(message = 'Unauthorized'): Response {\n return this.text(message, 401)\n }\n\n badRequest(message = 'Bad Request'): Response {\n return this.text(message, 400)\n }\n\n async forward(target: string, _options: any = {}): Promise<Response> {\n const url = new URL(this.req.url)\n const targetUrl = new URL(\n target.startsWith('http') ? target : `${url.protocol}//${target}${this.req.path}`\n )\n return fetch(targetUrl.toString(), {\n method: this.req.method,\n headers: this.req.raw.headers,\n })\n }\n\n escape(html: string): string {\n return bunEscapeHTML(html)\n }\n\n get<T>(_key: string): T {\n return undefined as any\n }\n\n set(_key: string, _value: any): void {}\n\n /**\n * Get the request-scoped service manager for this request.\n *\n * @returns The RequestScopeManager for this request.\n */\n requestScope(): RequestScopeManager {\n return this._requestScope\n }\n\n /**\n * Resolve a request-scoped service (convenience method).\n *\n * @template T - The service type.\n * @param key - The service key for caching.\n * @param factory - Factory function to create the service.\n * @returns The cached or newly created service instance.\n */\n scoped<T>(key: string | symbol, factory: () => T): T {\n return this._requestScope.resolve(key, factory)\n }\n\n public route: (name: string, params?: any, query?: any) => string = () => ''\n\n get native(): this {\n return this\n }\n\n // Required for interface compatibility\n init(_request: Request, _params?: Record<string, string>, _path?: string): this {\n throw new Error('MinimalContext does not support init. Create a new instance instead.')\n }\n\n // Required for interface compatibility\n reset(): void {\n // MinimalContext is not pooled, so no-op\n }\n}\n",
|
|
67
65
|
"/**\n * @fileoverview Lightweight Path Utilities\n *\n * High-performance path extraction without creating URL objects.\n * Performance critical - every optimization matters.\n *\n * @module @gravito/core/engine\n */\n\n/**\n * Extract pathname from URL string without creating URL object\n *\n * @param url - Full URL string (e.g., \"http://localhost:3000/api/users?id=1\")\n * @returns pathname (e.g., \"/api/users\")\n *\n * @example\n * ```typescript\n * extractPath(\"http://localhost:3000/api/users?id=1\") // \"/api/users\"\n * extractPath(\"https://example.com/\") // \"/\"\n * ```\n */\nexport function extractPath(url: string): string {\n // Optimization: use indexOf which is typically faster than JS loops\n // Find \"://\" to skip protocol\n const protocolEnd = url.indexOf('://')\n\n // Start searching after \"://\" (add 3)\n // If no \"://\", start from 0 (relative implementation or malformed)\n const searchStart = protocolEnd === -1 ? 0 : protocolEnd + 3\n\n const pathStart = url.indexOf('/', searchStart)\n\n // If no slash found after protocol, it's root \"/\" (e.g. http://localhost)\n if (pathStart === -1) {\n return '/'\n }\n\n const queryStart = url.indexOf('?', pathStart)\n\n if (queryStart === -1) {\n return url.slice(pathStart)\n }\n\n return url.slice(pathStart, queryStart)\n}\n\n/**\n * Extract pathname using simpler logic (alternative implementation)\n * Use this if the above doesn't cover edge cases\n */\nexport function extractPathSimple(url: string): string {\n // Find \"://\" then find next \"/\"\n const protocolEnd = url.indexOf('://')\n if (protocolEnd === -1) {\n // Relative URL or malformed\n const queryStart = url.indexOf('?')\n return queryStart === -1 ? url : url.slice(0, queryStart)\n }\n\n const pathStart = url.indexOf('/', protocolEnd + 3)\n if (pathStart === -1) {\n return '/'\n }\n\n const queryStart = url.indexOf('?', pathStart)\n return queryStart === -1 ? url.slice(pathStart) : url.slice(pathStart, queryStart)\n}\n",
|
|
68
66
|
"/**\n * @fileoverview Generic Object Pool Implementation\n *\n * High-performance object pooling to reduce GC pressure.\n * Implements \"fixed pool + overflow fallback\" strategy.\n *\n * @module @gravito/core/engine\n */\n\n/**\n * Generic object pool with fixed size and overflow handling\n *\n * @typeParam T - Type of objects to pool\n *\n * @example\n * ```typescript\n * const pool = new ObjectPool(\n * () => new MyObject(),\n * (obj) => obj.reset(),\n * 256\n * )\n *\n * const obj = pool.acquire()\n * try {\n * // Use object\n * } finally {\n * pool.release(obj)\n * }\n * ```\n */\nexport class ObjectPool<T> {\n private pool: T[] = []\n private readonly factory: () => T\n private readonly reset: (obj: T) => void\n private readonly maxSize: number\n\n /**\n * Create a new object pool\n *\n * @param factory - Function to create new objects\n * @param reset - Function to reset objects before reuse\n * @param maxSize - Maximum pool size (default: 256)\n */\n constructor(factory: () => T, reset: (obj: T) => void, maxSize = 256) {\n this.factory = factory\n this.reset = reset\n this.maxSize = maxSize\n }\n\n /**\n * Acquire an object from the pool\n *\n * If the pool is empty, creates a new object (overflow strategy).\n * This ensures the pool never blocks under high load.\n *\n * @returns Object from pool or newly created\n */\n acquire(): T {\n const obj = this.pool.pop()\n if (obj !== undefined) {\n return obj\n }\n\n // Pool exhausted - create new object (overflow)\n return this.factory()\n }\n\n /**\n * Release an object back to the pool\n *\n * If the pool is full, the object is discarded (will be GC'd).\n * This prevents unbounded memory growth.\n *\n * @param obj - Object to release\n */\n release(obj: T): void {\n if (this.pool.length < this.maxSize) {\n this.reset(obj)\n this.pool.push(obj)\n }\n // else: pool is full, let object be GC'd\n }\n\n /**\n * Clear all objects from the pool\n *\n * Useful for testing or when you need to force a clean slate.\n */\n clear(): void {\n this.pool = []\n }\n\n /**\n * Get current pool size\n */\n get size(): number {\n return this.pool.length\n }\n\n /**\n * Get maximum pool size\n */\n get capacity(): number {\n return this.maxSize\n }\n\n /**\n * Pre-warm the pool by creating objects in advance\n *\n * This can reduce latency for the first N requests.\n *\n * @param count - Number of objects to pre-create\n */\n prewarm(count: number): void {\n const targetSize = Math.min(count, this.maxSize)\n while (this.pool.length < targetSize) {\n const obj = this.factory()\n this.reset(obj)\n this.pool.push(obj)\n }\n }\n}\n",
|
|
69
|
-
"/**\n * @fileoverview Gravito - High-Performance Web Engine for Bun\n *\n * The standalone engine optimized exclusively for Bun runtime.\n * 99% API-compatible with Hono, but faster through Bun-specific optimizations.\n *\n * Key optimizations:\n * 1. Object pooling for zero-allocation request handling\n * 2. AOT router with O(1) static route lookup\n * 3. Lazy parsing - only parse what's accessed\n * 4. Direct Bun.serve integration without wrapper layers\n *\n * @module @gravito/core/engine\n */\n\nimport type { HttpMethod } from '../http/types'\nimport { AOTRouter } from './AOTRouter'\nimport { analyzeHandler, getOptimalContextType } from './analyzer'\nimport { CACHED_RESPONSES, HEADERS } from './constants'\nimport { FastContext as FastContextImpl } from './FastContext'\nimport { MinimalContext } from './MinimalContext'\nimport { extractPath } from './path'\nimport { ObjectPool } from './pool'\nimport type {\n CompiledHandler,\n EngineOptions,\n ErrorHandler,\n Handler,\n Middleware,\n NotFoundHandler,\n RouteMetadata,\n} from './types'\n\n// Bun runtime optimization: cache frequently used functions\nconst bunPeek = require('bun').peek\n\n/**\n * Precompile middleware chain into a single function\n */\nfunction compileMiddlewareChain(middleware: Middleware[], handler: Handler): CompiledHandler {\n // Fast path: no middleware\n if (middleware.length === 0) {\n return handler as CompiledHandler\n }\n\n // Single middleware optimization - avoid wrapping overhead\n if (middleware.length === 1) {\n const mw = middleware[0]!\n return async (ctx) => {\n let nextCalled = false\n const result = mw(ctx, async () => {\n nextCalled = true\n return undefined\n })\n\n // Optimization: Only use peek/await if result is truly a Promise\n let finalResult: any\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n finalResult = peeked === result ? await result : peeked\n } else {\n finalResult = result\n }\n\n if (finalResult instanceof Response) {\n return finalResult\n }\n\n if (nextCalled) {\n const hResult = handler(ctx)\n if (hResult instanceof Promise) {\n const p = bunPeek(hResult)\n return p === hResult ? await hResult : p\n }\n return hResult\n }\n return ctx.json({ error: 'Middleware did not call next or return response' }, 500)\n }\n }\n\n // Multiple middleware: compile right-to-left into a chain\n let compiled: CompiledHandler = handler as CompiledHandler\n\n for (let i = middleware.length - 1; i >= 0; i--) {\n const mw = middleware[i]!\n const nextHandler = compiled\n compiled = async (ctx) => {\n let nextCalled = false\n const result = mw(ctx, async () => {\n nextCalled = true\n return undefined\n })\n\n // Optimization: Only use peek/await if result is truly a Promise\n let finalResult: any\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n finalResult = peeked === result ? await result : peeked\n } else {\n finalResult = result\n }\n\n if (finalResult instanceof Response) {\n return finalResult\n }\n\n if (nextCalled) {\n const nextResult = nextHandler(ctx)\n if (nextResult instanceof Promise) {\n const p = bunPeek(nextResult)\n return p === nextResult ? await nextResult : p\n }\n return nextResult\n }\n\n return ctx.json({ error: 'Middleware did not call next or return response' }, 500)\n }\n }\n\n return compiled\n}\n\n/**\n * Gravito - The High-Performance Web Engine\n */\nexport class Gravito {\n private router = new AOTRouter()\n private contextPool: ObjectPool<FastContextImpl>\n private errorHandler?: ErrorHandler\n private notFoundHandler?: NotFoundHandler\n\n // Direct reference to static routes Map (O(1) access)\n /** @internal */\n public staticRoutes!: Map<string, RouteMetadata>\n // Flag: pure static app (no middleware at all) allows ultra-fast path\n private isPureStaticApp = true\n\n // Cache for precompiled dynamic routes\n private compiledDynamicRoutes = new Map<string, { compiled: CompiledHandler; version: number }>()\n\n /**\n * Create a new Gravito instance\n *\n * @param options - Engine configuration options\n */\n constructor(options: EngineOptions = {}) {\n const poolSize = options.poolSize ?? 256\n\n // Initialize context pool\n this.contextPool = new ObjectPool(\n () => new FastContextImpl(),\n (ctx) => ctx.reset(),\n poolSize\n )\n\n // Pre-warm pool for lower first-request latency\n this.contextPool.prewarm(Math.min(32, poolSize))\n\n // Set custom handlers if provided\n if (options.onError) {\n this.errorHandler = options.onError\n }\n if (options.onNotFound) {\n this.notFoundHandler = options.onNotFound\n }\n\n // Initialize route compilation\n this.compileRoutes()\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // HTTP Method Registration\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Register a GET route\n */\n get(path: string, ...handlers: Handler[]): this {\n return this.addRoute('get', path, handlers)\n }\n\n /**\n * Register a POST route\n */\n post(path: string, ...handlers: Handler[]): this {\n return this.addRoute('post', path, handlers)\n }\n\n /**\n * Register a PUT route\n */\n put(path: string, ...handlers: Handler[]): this {\n return this.addRoute('put', path, handlers)\n }\n\n /**\n * Register a DELETE route\n */\n delete(path: string, ...handlers: Handler[]): this {\n return this.addRoute('delete', path, handlers)\n }\n\n /**\n * Register a PATCH route\n */\n patch(path: string, ...handlers: Handler[]): this {\n return this.addRoute('patch', path, handlers)\n }\n\n /**\n * Register an OPTIONS route\n */\n options(path: string, ...handlers: Handler[]): this {\n return this.addRoute('options', path, handlers)\n }\n\n /**\n * Register a HEAD route\n */\n head(path: string, ...handlers: Handler[]): this {\n return this.addRoute('head', path, handlers)\n }\n\n /**\n * Register a route for all HTTP methods\n */\n all(path: string, ...handlers: Handler[]): this {\n const methods: HttpMethod[] = ['get', 'post', 'put', 'delete', 'patch', 'options', 'head']\n for (const method of methods) {\n this.addRoute(method, path, handlers)\n }\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Middleware Registration\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Register global or path-based middleware\n */\n use(path: string, ...middleware: Middleware[]): this\n use(...middleware: Middleware[]): this\n use(pathOrMiddleware: string | Middleware, ...middleware: Middleware[]): this {\n // Mark as not pure static since we have middleware\n this.isPureStaticApp = false\n\n if (typeof pathOrMiddleware === 'string') {\n // Path-based middleware\n this.router.usePattern(pathOrMiddleware, ...middleware)\n } else {\n // Global middleware\n this.router.use(pathOrMiddleware, ...middleware)\n }\n\n this.compileRoutes()\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Route Grouping\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Mount a sub-application at a path prefix\n */\n route(path: string, app: Gravito): this {\n // Mount the sub-application's router using the AOTRouter optimization\n this.router.mount(path, app.router)\n\n // Re-compile routes to update the static route map and optimizations\n this.compileRoutes()\n\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Error Handling\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Set custom error handler\n */\n onError(handler: ErrorHandler): this {\n this.errorHandler = handler\n return this\n }\n\n /**\n * Set custom 404 handler\n */\n notFound(handler: NotFoundHandler): this {\n this.notFoundHandler = handler\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Request Handling (Bun.serve integration)\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Predictive Route Warming (JIT Optimization)\n *\n * Simulates requests to specified routes to trigger JIT compilation (FTL)\n * before real traffic arrives.\n *\n * @param paths List of paths to warm up (e.g. ['/api/users', '/health'])\n */\n async warmup(paths: string[]): Promise<void> {\n const dummyReqOpts = { headers: { 'User-Agent': 'Gravito-Warmup/1.0' } }\n\n for (const path of paths) {\n const req = new Request(`http://localhost${path}`, dummyReqOpts)\n await this.fetch(req)\n }\n }\n\n /**\n * Generate Native Bun.serve Configuration\n *\n * Offloads static routes to Bun's SIMD-accelerated native router.\n * Supports pre-compiled middleware chains for zero runtime lookup.\n */\n serveConfig(baseConfig: Record<string, unknown> = {}): Record<string, unknown> {\n // 1. Extract and pre-compile routes for Bun's native router\n const nativeRoutes = this.router.getNativeRoutes((handler, middleware, path) => {\n // Pre-compile the middleware chain for this specific static route\n const compiled = compileMiddlewareChain(middleware, handler)\n\n // Create a native request handler that uses our pooling\n return async (req: Request) => {\n const ctx = this.contextPool.acquire()\n ctx.init(req, {}, path, path)\n\n try {\n const result = compiled(ctx)\n\n // Pro-level optimization: skip await if synchronous\n let response: Response\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n response = peeked === result ? await result : peeked\n } else {\n response = result\n }\n\n // Cleanup and release\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) await cleanup\n this.contextPool.release(ctx)\n return response\n } catch (error) {\n // Cleanup even on error\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) await cleanup\n this.contextPool.release(ctx)\n return this.handleErrorSync(error as Error, req, path)\n }\n }\n })\n\n return {\n ...baseConfig,\n routes: nativeRoutes,\n fetch: this.fetch, // Fallback for dynamic routes\n // Optimize TLS if provided in baseConfig\n tls: baseConfig.tls ? this.optimizeTLS(baseConfig.tls) : undefined,\n error: (error: Error) => {\n console.error('Native route error:', error)\n return new Response(CACHED_RESPONSES.INTERNAL_ERROR, {\n status: 500,\n headers: HEADERS.JSON,\n })\n },\n }\n }\n\n /**\n * Optimize TLS Configuration for Bun 1.39+\n */\n private optimizeTLS(tls: any): any {\n const isProd = process.env.NODE_ENV === 'production'\n\n const optimizeEntry = (entry: any) => {\n const optimized = { ...entry }\n if (typeof optimized.key === 'string' && !optimized.key.startsWith('-----BEGIN')) {\n optimized.key = require('bun').file(optimized.key)\n }\n if (typeof optimized.cert === 'string' && !optimized.cert.startsWith('-----BEGIN')) {\n optimized.cert = require('bun').file(optimized.cert)\n }\n if (isProd && optimized.lowMemoryMode === undefined) {\n optimized.lowMemoryMode = true\n }\n return optimized\n }\n\n return Array.isArray(tls) ? tls.map(optimizeEntry) : optimizeEntry(tls)\n }\n\n /**\n * Handle an incoming request\n */\n fetch = async (request: Request): Promise<Response> => {\n // Fast path: extract pathname without creating URL object\n const path = extractPath(request.url)\n const method = request.method.toLowerCase()\n\n // Try static route first (O(1) lookup, inlined for performance)\n const staticKey = `${method}:${path}`\n const staticRoute = this.staticRoutes.get(staticKey)\n\n if (staticRoute) {\n const ctx = this.contextPool.acquire()\n ctx.init(request, {}, path, path)\n\n try {\n const compiled =\n staticRoute.compiled ||\n compileMiddlewareChain(staticRoute.middleware, staticRoute.handler)\n const result = compiled(ctx)\n\n let response: Response\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n response = peeked === result ? await result : peeked\n } else {\n response = result\n }\n\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) await cleanup\n this.contextPool.release(ctx)\n return response\n } catch (error) {\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) await cleanup\n this.contextPool.release(ctx)\n return this.handleErrorSync(error as Error, request, path)\n }\n }\n\n // Dynamic route: use Radix Tree\n return await this.handleDynamicRoute(request, method, path)\n }\n\n /**\n * Handle dynamic routes with Radix Tree\n */\n private async handleDynamicRoute(\n request: Request,\n method: string,\n path: string\n ): Promise<Response> {\n const match = this.router.match(method, path)\n\n if (match.handler) {\n const ctx = this.contextPool.acquire()\n ctx.init(request, match.params, path, match.routePattern)\n\n try {\n // Use cached compilation if available\n const routeKey = `${method}:${match.routePattern}`\n let compiledObj = this.compiledDynamicRoutes.get(routeKey)\n\n if (!compiledObj || compiledObj.version !== this.router.version) {\n const compiled = compileMiddlewareChain(match.middleware, match.handler)\n compiledObj = { compiled, version: this.router.version }\n this.compiledDynamicRoutes.set(routeKey, compiledObj)\n }\n\n const result = compiledObj.compiled(ctx)\n\n let response: Response\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n response = peeked === result ? await result : peeked\n } else {\n response = result\n }\n\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) await cleanup\n this.contextPool.release(ctx)\n return response\n } catch (error) {\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) await cleanup\n this.contextPool.release(ctx)\n return this.handleErrorSync(error as Error, request, path)\n }\n }\n\n // 404\n return this.handleNotFoundSync(request, path)\n }\n\n /**\n * Sync error handler (for ultra-fast path)\n */\n private handleErrorSync(\n error: Error,\n request: Request,\n path: string\n ): Response | Promise<Response> {\n if (this.errorHandler) {\n const ctx = new MinimalContext(request, {}, path)\n const result = this.errorHandler(error, ctx)\n if (result instanceof Response) {\n return result\n }\n return result as Promise<Response>\n }\n\n console.error('Unhandled error:', error)\n return new Response(CACHED_RESPONSES.INTERNAL_ERROR, {\n status: 500,\n headers: HEADERS.JSON,\n })\n }\n\n /**\n * Sync 404 handler (for ultra-fast path)\n */\n private handleNotFoundSync(request: Request, path: string): Response | Promise<Response> {\n if (this.notFoundHandler) {\n const ctx = new MinimalContext(request, {}, path)\n const result = this.notFoundHandler(ctx)\n if (result instanceof Response) {\n return result\n }\n return result as Promise<Response>\n }\n\n return new Response(CACHED_RESPONSES.NOT_FOUND, {\n status: 404,\n headers: HEADERS.JSON,\n })\n }\n\n /**\n * Collect middleware for a specific path\n */\n private collectMiddlewareForPath(path: string, routeMiddleware: Middleware[]): Middleware[] {\n if (this.router.globalMiddleware.length === 0 && this.router.pathMiddleware.size === 0) {\n return routeMiddleware\n }\n\n return this.router.collectMiddlewarePublic(path, routeMiddleware)\n }\n\n /**\n * Compile routes for optimization\n */\n private compileRoutes(): void {\n this.staticRoutes = this.router.staticRoutes\n\n // Check if pure static app\n const hasGlobalMiddleware = this.router.globalMiddleware.length > 0\n const hasPathMiddleware = this.router.pathMiddleware.size > 0\n\n this.isPureStaticApp = !hasGlobalMiddleware && !hasPathMiddleware\n\n // Pre-mark routes\n for (const [key, route] of this.staticRoutes) {\n // Skip if already compiled for this version\n if (route.compiledVersion === this.router.version) {\n continue\n }\n\n const analysis = analyzeHandler(route.handler)\n const optimalType = getOptimalContextType(analysis)\n\n route.useMinimal =\n this.isPureStaticApp && route.middleware.length === 0 && optimalType === 'minimal'\n\n // Precompile middleware chain\n if (!route.useMinimal) {\n const allMiddleware = this.collectMiddlewareForPath(key.split(':')[1]!, route.middleware)\n route.compiled = compileMiddlewareChain(allMiddleware, route.handler)\n }\n\n route.compiledVersion = this.router.version\n }\n }\n\n /**\n * Add a route to the router\n */\n private addRoute(method: string, path: string, handlers: Handler[]): this {\n if (handlers.length === 0) {\n throw new Error(`No handler provided for ${method.toUpperCase()} ${path}`)\n }\n\n const handler = handlers[handlers.length - 1]!\n const middleware = handlers.slice(0, -1) as unknown as Middleware[]\n\n this.router.add(method as HttpMethod, path, handler, middleware)\n\n // Re-compile routes when new ones are added\n this.compileRoutes()\n\n return this\n }\n}\n",
|
|
67
|
+
"/**\n * @fileoverview Gravito - High-Performance Web Engine for Bun\n *\n * The standalone engine optimized exclusively for Bun runtime.\n * 99% API-compatible with Hono, but faster through Bun-specific optimizations.\n *\n * Key optimizations:\n * 1. Object pooling for zero-allocation request handling\n * 2. AOT router with O(1) static route lookup\n * 3. Lazy parsing - only parse what's accessed\n * 4. Direct Bun.serve integration without wrapper layers\n *\n * @module @gravito/core/engine\n */\n\nimport type { HttpMethod } from '../http/types'\nimport { AOTRouter } from './AOTRouter'\nimport { analyzeHandler, getOptimalContextType } from './analyzer'\nimport { CACHED_RESPONSES, HEADERS } from './constants'\nimport { FastContext as FastContextImpl } from './FastContext'\nimport { MinimalContext } from './MinimalContext'\nimport { extractPath } from './path'\nimport { ObjectPool } from './pool'\nimport type {\n CompiledHandler,\n EngineOptions,\n ErrorHandler,\n Handler,\n Middleware,\n NotFoundHandler,\n RouteMetadata,\n} from './types'\n\n// Bun runtime optimization: cache frequently used functions\nlet bunPeek = (promise: any) => promise // Default fallback\nlet bunFile = (path: string) => path // Default fallback\n\ntry {\n const bunModule = require('bun') as any\n bunPeek = bunModule.peek\n bunFile = bunModule.file\n} catch {\n // Already have default fallback\n}\n\n/**\n * Precompile middleware chain into a single function\n */\nfunction compileMiddlewareChain(middleware: Middleware[], handler: Handler): CompiledHandler {\n // Fast path: no middleware\n if (middleware.length === 0) {\n return handler as CompiledHandler\n }\n\n // Single middleware optimization - avoid wrapping overhead\n if (middleware.length === 1) {\n const mw = middleware[0]!\n return async (ctx) => {\n let nextCalled = false\n const result = mw(ctx, async () => {\n nextCalled = true\n return undefined\n })\n\n // Optimization: Only use peek/await if result is truly a Promise\n let finalResult: any\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n finalResult = peeked === result ? await result : peeked\n } else {\n finalResult = result\n }\n\n if (finalResult instanceof Response) {\n return finalResult\n }\n\n if (nextCalled) {\n const hResult = handler(ctx)\n if (hResult instanceof Promise) {\n const p = bunPeek(hResult)\n return p === hResult ? await hResult : p\n }\n return hResult\n }\n return ctx.json({ error: 'Middleware did not call next or return response' }, 500)\n }\n }\n\n // Multiple middleware: compile right-to-left into a chain\n let compiled: CompiledHandler = handler as CompiledHandler\n\n for (let i = middleware.length - 1; i >= 0; i--) {\n const mw = middleware[i]!\n const nextHandler = compiled\n compiled = async (ctx) => {\n let nextCalled = false\n const result = mw(ctx, async () => {\n nextCalled = true\n return undefined\n })\n\n // Optimization: Only use peek/await if result is truly a Promise\n let finalResult: any\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n finalResult = peeked === result ? await result : peeked\n } else {\n finalResult = result\n }\n\n if (finalResult instanceof Response) {\n return finalResult\n }\n\n if (nextCalled) {\n const nextResult = nextHandler(ctx)\n if (nextResult instanceof Promise) {\n const p = bunPeek(nextResult)\n return p === nextResult ? await nextResult : p\n }\n return nextResult\n }\n\n return ctx.json({ error: 'Middleware did not call next or return response' }, 500)\n }\n }\n\n return compiled\n}\n\n/**\n * Gravito - The High-Performance Web Engine\n */\nexport class Gravito {\n private router = new AOTRouter()\n private contextPool: ObjectPool<FastContextImpl>\n private errorHandler?: ErrorHandler\n private notFoundHandler?: NotFoundHandler\n\n // Direct reference to static routes Map (O(1) access)\n /** @internal */\n public staticRoutes!: Map<string, RouteMetadata>\n // Flag: pure static app (no middleware at all) allows ultra-fast path\n private isPureStaticApp = true\n\n // Cache for precompiled dynamic routes\n private compiledDynamicRoutes = new Map<string, { compiled: CompiledHandler; version: number }>()\n\n /**\n * Create a new Gravito instance\n *\n * @param options - Engine configuration options\n */\n constructor(options: EngineOptions = {}) {\n const poolSize = options.poolSize ?? 256\n\n // Initialize context pool\n this.contextPool = new ObjectPool(\n () => new FastContextImpl(),\n (ctx) => ctx.reset(),\n poolSize\n )\n\n // Pre-warm pool for lower first-request latency\n this.contextPool.prewarm(Math.min(32, poolSize))\n\n // Set custom handlers if provided\n if (options.onError) {\n this.errorHandler = options.onError\n }\n if (options.onNotFound) {\n this.notFoundHandler = options.onNotFound\n }\n\n // Initialize route compilation\n this.compileRoutes()\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // HTTP Method Registration\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Register a GET route\n */\n get(path: string, ...handlers: Handler[]): this {\n return this.addRoute('get', path, handlers)\n }\n\n /**\n * Register a POST route\n */\n post(path: string, ...handlers: Handler[]): this {\n return this.addRoute('post', path, handlers)\n }\n\n /**\n * Register a PUT route\n */\n put(path: string, ...handlers: Handler[]): this {\n return this.addRoute('put', path, handlers)\n }\n\n /**\n * Register a DELETE route\n */\n delete(path: string, ...handlers: Handler[]): this {\n return this.addRoute('delete', path, handlers)\n }\n\n /**\n * Register a PATCH route\n */\n patch(path: string, ...handlers: Handler[]): this {\n return this.addRoute('patch', path, handlers)\n }\n\n /**\n * Register an OPTIONS route\n */\n options(path: string, ...handlers: Handler[]): this {\n return this.addRoute('options', path, handlers)\n }\n\n /**\n * Register a HEAD route\n */\n head(path: string, ...handlers: Handler[]): this {\n return this.addRoute('head', path, handlers)\n }\n\n /**\n * Register a route for all HTTP methods\n */\n all(path: string, ...handlers: Handler[]): this {\n const methods: HttpMethod[] = ['get', 'post', 'put', 'delete', 'patch', 'options', 'head']\n for (const method of methods) {\n this.addRoute(method, path, handlers)\n }\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Middleware Registration\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Register global or path-based middleware\n */\n use(path: string, ...middleware: Middleware[]): this\n use(...middleware: Middleware[]): this\n use(pathOrMiddleware: string | Middleware, ...middleware: Middleware[]): this {\n // Mark as not pure static since we have middleware\n this.isPureStaticApp = false\n\n if (typeof pathOrMiddleware === 'string') {\n // Path-based middleware\n this.router.usePattern(pathOrMiddleware, ...middleware)\n } else {\n // Global middleware\n this.router.use(pathOrMiddleware, ...middleware)\n }\n\n this.compileRoutes()\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Route Grouping\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Mount a sub-application at a path prefix\n */\n route(path: string, app: Gravito): this {\n // Mount the sub-application's router using the AOTRouter optimization\n this.router.mount(path, app.router)\n\n // Re-compile routes to update the static route map and optimizations\n this.compileRoutes()\n\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Error Handling\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Set custom error handler\n */\n onError(handler: ErrorHandler): this {\n this.errorHandler = handler\n return this\n }\n\n /**\n * Set custom 404 handler\n */\n notFound(handler: NotFoundHandler): this {\n this.notFoundHandler = handler\n return this\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Request Handling (Bun.serve integration)\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Predictive Route Warming (JIT Optimization)\n *\n * Simulates requests to specified routes to trigger JIT compilation (FTL)\n * before real traffic arrives.\n *\n * @param paths List of paths to warm up (e.g. ['/api/users', '/health'])\n */\n async warmup(paths: string[]): Promise<void> {\n const dummyReqOpts = { headers: { 'User-Agent': 'Gravito-Warmup/1.0' } }\n\n for (const path of paths) {\n const req = new Request(`http://localhost${path}`, dummyReqOpts)\n await this.fetch(req)\n }\n }\n\n /**\n * Generate Native Bun.serve Configuration\n *\n * Offloads static routes to Bun's SIMD-accelerated native router.\n * Supports pre-compiled middleware chains for zero runtime lookup.\n */\n serveConfig(baseConfig: Record<string, unknown> = {}): Record<string, unknown> {\n // 1. Extract and pre-compile routes for Bun's native router\n const nativeRoutes = this.router.getNativeRoutes((handler, middleware, path) => {\n // Pre-compile the middleware chain for this specific static route\n const compiled = compileMiddlewareChain(middleware, handler)\n\n // Create a native request handler that uses our pooling\n return async (req: Request) => {\n const ctx = this.contextPool.acquire()\n ctx.init(req, {}, path, path)\n\n try {\n const result = compiled(ctx)\n\n // Pro-level optimization: skip await if synchronous\n let response: Response\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n response = peeked === result ? await result : peeked\n } else {\n response = result\n }\n\n // Cleanup and release\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) {\n await cleanup\n }\n this.contextPool.release(ctx)\n return response\n } catch (error) {\n // Cleanup even on error\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) {\n await cleanup\n }\n this.contextPool.release(ctx)\n return this.handleErrorSync(error as Error, req, path)\n }\n }\n })\n\n return {\n ...baseConfig,\n routes: nativeRoutes,\n fetch: this.fetch, // Fallback for dynamic routes\n // Optimize TLS if provided in baseConfig\n tls: baseConfig.tls ? this.optimizeTLS(baseConfig.tls) : undefined,\n error: (error: Error) => {\n console.error('Native route error:', error)\n return new Response(CACHED_RESPONSES.INTERNAL_ERROR, {\n status: 500,\n headers: HEADERS.JSON,\n })\n },\n }\n }\n\n /**\n * Optimize TLS Configuration for Bun 1.39+\n */\n private optimizeTLS(tls: any): any {\n const isProd = process.env.NODE_ENV === 'production'\n\n const optimizeEntry = (entry: any) => {\n const optimized = { ...entry }\n if (typeof optimized.key === 'string' && !optimized.key.startsWith('-----BEGIN')) {\n optimized.key = bunFile(optimized.key)\n }\n if (typeof optimized.cert === 'string' && !optimized.cert.startsWith('-----BEGIN')) {\n optimized.cert = bunFile(optimized.cert)\n }\n if (isProd && optimized.lowMemoryMode === undefined) {\n optimized.lowMemoryMode = true\n }\n return optimized\n }\n\n return Array.isArray(tls) ? tls.map(optimizeEntry) : optimizeEntry(tls)\n }\n\n /**\n * Handle an incoming request\n */\n fetch = async (request: Request): Promise<Response> => {\n // Fast path: extract pathname without creating URL object\n const path = extractPath(request.url)\n const method = request.method.toLowerCase()\n\n // Try static route first (O(1) lookup, inlined for performance)\n const staticKey = `${method}:${path}`\n const staticRoute = this.staticRoutes.get(staticKey)\n\n if (staticRoute) {\n const ctx = this.contextPool.acquire()\n ctx.init(request, {}, path, path)\n\n try {\n const compiled =\n staticRoute.compiled ||\n compileMiddlewareChain(staticRoute.middleware, staticRoute.handler)\n const result = compiled(ctx)\n\n let response: Response\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n response = peeked === result ? await result : peeked\n } else {\n response = result\n }\n\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) {\n await cleanup\n }\n this.contextPool.release(ctx)\n return response\n } catch (error) {\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) {\n await cleanup\n }\n this.contextPool.release(ctx)\n return this.handleErrorSync(error as Error, request, path)\n }\n }\n\n // Dynamic route: use Radix Tree\n return await this.handleDynamicRoute(request, method, path)\n }\n\n /**\n * Handle dynamic routes with Radix Tree\n */\n private async handleDynamicRoute(\n request: Request,\n method: string,\n path: string\n ): Promise<Response> {\n const match = this.router.match(method, path)\n\n if (match.handler) {\n const ctx = this.contextPool.acquire()\n ctx.init(request, match.params, path, match.routePattern)\n\n try {\n // Use cached compilation if available\n const routeKey = `${method}:${match.routePattern}`\n let compiledObj = this.compiledDynamicRoutes.get(routeKey)\n\n if (!compiledObj || compiledObj.version !== this.router.version) {\n const compiled = compileMiddlewareChain(match.middleware, match.handler)\n compiledObj = { compiled, version: this.router.version }\n this.compiledDynamicRoutes.set(routeKey, compiledObj)\n }\n\n const result = compiledObj.compiled(ctx)\n\n let response: Response\n if (result instanceof Promise) {\n const peeked = bunPeek(result)\n response = peeked === result ? await result : peeked\n } else {\n response = result\n }\n\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) {\n await cleanup\n }\n this.contextPool.release(ctx)\n return response\n } catch (error) {\n const cleanup = ctx.requestScope().cleanup()\n if (cleanup instanceof Promise) {\n await cleanup\n }\n this.contextPool.release(ctx)\n return this.handleErrorSync(error as Error, request, path)\n }\n }\n\n // 404\n return this.handleNotFoundSync(request, path)\n }\n\n /**\n * Sync error handler (for ultra-fast path)\n */\n private handleErrorSync(\n error: Error,\n request: Request,\n path: string\n ): Response | Promise<Response> {\n if (this.errorHandler) {\n const ctx = new MinimalContext(request, {}, path)\n const result = this.errorHandler(error, ctx)\n if (result instanceof Response) {\n return result\n }\n return result as Promise<Response>\n }\n\n console.error('Unhandled error:', error)\n return new Response(CACHED_RESPONSES.INTERNAL_ERROR, {\n status: 500,\n headers: HEADERS.JSON,\n })\n }\n\n /**\n * Sync 404 handler (for ultra-fast path)\n */\n private handleNotFoundSync(request: Request, path: string): Response | Promise<Response> {\n if (this.notFoundHandler) {\n const ctx = new MinimalContext(request, {}, path)\n const result = this.notFoundHandler(ctx)\n if (result instanceof Response) {\n return result\n }\n return result as Promise<Response>\n }\n\n return new Response(CACHED_RESPONSES.NOT_FOUND, {\n status: 404,\n headers: HEADERS.JSON,\n })\n }\n\n /**\n * Collect middleware for a specific path\n */\n private collectMiddlewareForPath(path: string, routeMiddleware: Middleware[]): Middleware[] {\n if (this.router.globalMiddleware.length === 0 && this.router.pathMiddleware.size === 0) {\n return routeMiddleware\n }\n\n return this.router.collectMiddlewarePublic(path, routeMiddleware)\n }\n\n /**\n * Compile routes for optimization\n */\n private compileRoutes(): void {\n this.staticRoutes = this.router.staticRoutes\n\n // Check if pure static app\n const hasGlobalMiddleware = this.router.globalMiddleware.length > 0\n const hasPathMiddleware = this.router.pathMiddleware.size > 0\n\n this.isPureStaticApp = !hasGlobalMiddleware && !hasPathMiddleware\n\n // Pre-mark routes\n for (const [key, route] of this.staticRoutes) {\n // Skip if already compiled for this version\n if (route.compiledVersion === this.router.version) {\n continue\n }\n\n const analysis = analyzeHandler(route.handler)\n const optimalType = getOptimalContextType(analysis)\n\n route.useMinimal =\n this.isPureStaticApp && route.middleware.length === 0 && optimalType === 'minimal'\n\n // Precompile middleware chain\n if (!route.useMinimal) {\n const allMiddleware = this.collectMiddlewareForPath(key.split(':')[1]!, route.middleware)\n route.compiled = compileMiddlewareChain(allMiddleware, route.handler)\n }\n\n route.compiledVersion = this.router.version\n }\n }\n\n /**\n * Add a route to the router\n */\n private addRoute(method: string, path: string, handlers: Handler[]): this {\n if (handlers.length === 0) {\n throw new Error(`No handler provided for ${method.toUpperCase()} ${path}`)\n }\n\n const handler = handlers[handlers.length - 1]!\n const middleware = handlers.slice(0, -1) as unknown as Middleware[]\n\n this.router.add(method as HttpMethod, path, handler, middleware)\n\n // Re-compile routes when new ones are added\n this.compileRoutes()\n\n return this\n }\n}\n",
|
|
68
|
+
"import type { GravitoRequest, ValidationTarget } from '../../http/types'\n\n/**\n * Bun-optimized implementation of GravitoRequest.\n * @internal\n */\nexport class BunRequest implements GravitoRequest {\n private _url: URL\n private _params: Record<string, string> = {}\n private _query: Record<string, string | string[]> | null = null\n private _validated: Partial<Record<ValidationTarget, unknown>> = {}\n\n constructor(\n public readonly raw: Request,\n params: Record<string, string> = {}\n ) {\n this._url = new URL(raw.url)\n this._params = params\n }\n\n // Internal: Set params after route match\n setParams(params: Record<string, string>) {\n this._params = params\n }\n\n get url(): string {\n return this.raw.url\n }\n\n get method(): string {\n return this.raw.method\n }\n\n get path(): string {\n return this._url.pathname\n }\n\n // Parameter Access\n param(name: string): string | undefined {\n return this._params[name]\n }\n\n params(): Record<string, string> {\n return this._params\n }\n\n query(name: string): string | undefined {\n // Lazily parse query\n if (!this._query) {\n this.parseQuery()\n }\n const val = this._query?.[name]\n if (Array.isArray(val)) {\n return val[0]\n }\n return val\n }\n\n queries(): Record<string, string | string[]> {\n if (!this._query) {\n this.parseQuery()\n }\n return this._query!\n }\n\n header(name: string): string | undefined\n header(): Record<string, string>\n header(name?: string): string | undefined | Record<string, string> {\n if (name) {\n return this.raw.headers.get(name) || undefined\n }\n const headers: Record<string, string> = {}\n this.raw.headers.forEach((value, key) => {\n headers[key] = value\n })\n return headers\n }\n\n // Body Parsing\n async json<T = unknown>(): Promise<T> {\n return this.raw.json() as Promise<T>\n }\n\n async text(): Promise<string> {\n return this.raw.text()\n }\n\n async formData(): Promise<FormData> {\n return this.raw.formData()\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n return this.raw.arrayBuffer()\n }\n\n async parseBody<T = unknown>(): Promise<T> {\n const contentType = this.raw.headers.get('Content-Type')\n if (\n contentType?.includes('application/x-www-form-urlencoded') ||\n contentType?.includes('multipart/form-data')\n ) {\n const formData = await this.formData()\n const body: Record<string, any> = {}\n formData.forEach((value, key) => {\n body[key] = value\n })\n return body as T\n }\n return {} as T\n }\n\n // Internal method to set validated data\n // This can be used by middleware to attach validated data to the request\n setValidated(target: ValidationTarget, data: unknown) {\n this._validated[target] = data\n }\n\n valid<T = unknown>(target: ValidationTarget): T {\n const data = this._validated[target]\n if (data === undefined) {\n // In Photon, valid() throws or returns specific type?\n // Gravito types definition says allows undefined?\n // \"valid<T = unknown>(target: ValidationTarget): T\"\n // Usually framework-agnostic means we should throw if not found or return T.\n // Photon definition: valid<T>(target: keyof ValidationTargets): T\n // If not validated, likely undefined or error.\n // Let's return undefined as \"unknown\" implicitly.\n // Or throw to match semantics?\n // \"throws {Error} If validation was not performed for this target\" in types.ts JSDoc\n throw new Error(`Validation target '${target}' not found or validation failed.`)\n }\n return data as T\n }\n\n private parseQuery() {\n this._query = {}\n for (const [key, value] of this._url.searchParams) {\n if (this._query[key]) {\n if (Array.isArray(this._query[key])) {\n ;(this._query[key] as string[]).push(value)\n } else {\n this._query[key] = [this._query[key] as string, value]\n }\n } else {\n this._query[key] = value\n }\n }\n }\n}\n",
|
|
69
|
+
"import { RequestScopeManager } from '../../Container/RequestScopeManager'\nimport type {\n ContentfulStatusCode,\n GravitoContext,\n GravitoVariables,\n ProxyOptions,\n StatusCode,\n} from '../../http/types'\nimport { BunRequest } from './BunRequest'\n\n/**\n * Bun-optimized implementation of GravitoContext.\n * @internal\n */\nexport class BunContext<V extends GravitoVariables = GravitoVariables>\n implements GravitoContext<V>\n{\n // Request wrapper\n public req: BunRequest\n\n // Context variables\n private _variables: Map<string, unknown> = new Map()\n\n // Request scope management\n private _requestScope: RequestScopeManager\n\n /**\n * URL generator helper\n */\n public route!: (name: string, params?: Record<string, any>, query?: Record<string, any>) => string\n\n // Response state\n private _status: StatusCode = 200\n private _headers: Headers = new Headers()\n private _executionCtx?: ExecutionContext\n\n // Stored response (Photon-like behavior)\n public res: Response | undefined\n\n public readonly native: unknown\n\n constructor(\n request: Request,\n public readonly env: Record<string, unknown> = {},\n executionCtx?: ExecutionContext\n ) {\n this.req = new BunRequest(request)\n this._executionCtx = executionCtx\n this._requestScope = new RequestScopeManager()\n this.native = { request, env, executionCtx }\n }\n\n /**\n * Create a proxied instance to enable object destructuring of context variables\n * This allows: async list({ userService }: Context)\n */\n static create<V extends GravitoVariables = GravitoVariables>(\n request: Request,\n env: Record<string, unknown> = {},\n executionCtx?: ExecutionContext\n ): GravitoContext<V> {\n const instance = new BunContext<V>(request, env, executionCtx)\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // 1. If property exists on the instance (method, property), return it\n if (prop in target) {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target) // Ensure 'this' points to instance\n }\n return value\n }\n\n // 2. If not, try to fetch from internal variable map\n if (typeof prop === 'string') {\n return target.get(prop as any)\n }\n\n return undefined\n },\n }) as any\n }\n\n // Response Builders\n json<T>(data: T, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.header('Content-Type', 'application/json')\n this.res = new Response(JSON.stringify(data), {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n text(text: string, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.header('Content-Type', 'text/plain')\n this.res = new Response(text, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n html(html: string, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.header('Content-Type', 'text/html')\n this.res = new Response(html, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n redirect(url: string, status: 301 | 302 | 303 | 307 | 308 = 302): Response {\n this.status(status)\n this.header('Location', url)\n this.res = new Response(null, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n body(data: BodyInit | null, status: StatusCode = 200): Response {\n this.status(status)\n this.res = new Response(data, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n stream(stream: ReadableStream, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.res = new Response(stream, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n notFound(message?: string): Response {\n return this.text(message ?? 'Not Found', 404 as 200)\n }\n\n forbidden(message?: string): Response {\n return this.text(message ?? 'Forbidden', 403 as 200)\n }\n\n unauthorized(message?: string): Response {\n return this.text(message ?? 'Unauthorized', 401 as 200)\n }\n\n badRequest(message?: string): Response {\n return this.text(message ?? 'Bad Request', 400 as 200)\n }\n\n async forward(target: string, options?: ProxyOptions): Promise<Response> {\n const url = new URL(target, this.req.url)\n const headers = new Headers(this.req.raw.headers)\n\n if (options?.headers) {\n for (const [key, value] of Object.entries(options.headers)) {\n headers.set(key, value)\n }\n }\n\n if (!options?.preserveHost) {\n headers.delete('Host')\n }\n\n if (options?.addForwardedHeaders !== false) {\n const origin = new URL(this.req.url)\n headers.append('X-Forwarded-Host', origin.host)\n headers.append('X-Forwarded-Proto', origin.protocol.slice(0, -1))\n }\n\n if (options?.rewritePath) {\n url.pathname = options.rewritePath(url.pathname)\n }\n\n return fetch(url, {\n method: this.req.method,\n headers,\n body: this.req.raw.body,\n redirect: 'manual',\n })\n }\n\n // Headers\n header(name: string, value: string, options?: { append?: boolean }): void\n header(name: string): string | undefined\n header(\n name: string,\n value?: string,\n options?: { append?: boolean }\n ): string | undefined | undefined {\n if (value === undefined) {\n return this.req.header(name)\n }\n if (options?.append) {\n this._headers.append(name, value)\n this.res?.headers.append(name, value)\n } else {\n this._headers.set(name, value)\n if (this.res) {\n this.res.headers.set(name, value)\n }\n }\n return undefined\n }\n\n /**\n * Reset context state for reuse in pooling scenarios\n * @internal\n */\n reset(request: Request): void {\n this.req = new BunRequest(request)\n this._status = 200\n this._headers = new Headers()\n this._variables.clear()\n this.res = undefined\n this._requestScope = new RequestScopeManager()\n }\n\n status(code: StatusCode): void {\n this._status = code\n }\n\n // Context Variables\n get<K extends keyof V>(key: K): V[K] {\n return this._variables.get(key as string) as V[K]\n }\n\n set<K extends keyof V>(key: K, value: V[K]): void {\n this._variables.set(key as string, value)\n }\n\n // Execution Control\n get executionCtx(): ExecutionContext | undefined {\n return this._executionCtx\n }\n\n // Request-Scoped Dependency Injection\n requestScope(): RequestScopeManager {\n return this._requestScope\n }\n\n scoped<T>(key: string | symbol, factory: () => T): T {\n return this._requestScope.resolve(key, factory)\n }\n}\n",
|
|
70
|
+
"/**\n * WebSocket 路由管理器\n *\n * 負責註冊和分發 WebSocket 事件到相應的路由處理器\n */\n\nexport interface WebSocketRouteHandlers {\n open?: (ws: unknown) => void | Promise<void>\n message?: (ws: unknown, data: string | Buffer | Uint8Array) => void | Promise<void>\n close?: (ws: unknown, code: number, reason: string) => void | Promise<void>\n drain?: (ws: unknown) => void | Promise<void>\n}\n\nexport class BunWebSocketHandler {\n private routes = new Map<string, WebSocketRouteHandlers>()\n\n /**\n * 註冊 WebSocket 路由\n */\n register(path: string, handlers: WebSocketRouteHandlers): void {\n this.routes.set(path, handlers)\n }\n\n /**\n * 檢查是否有該路由\n * 支援精確匹配和 wildcard 匹配\n */\n hasRoute(path: string): boolean {\n // 精確匹配\n if (this.routes.has(path)) {\n return true\n }\n\n // Wildcard 匹配 (e.g., /api/*)\n for (const registeredPath of this.routes.keys()) {\n if (this.matchesPath(registeredPath, path)) {\n return true\n }\n }\n\n return false\n }\n\n /**\n * 檢查是否有任何已註冊的路由\n */\n hasAnyRoute(): boolean {\n return this.routes.size > 0\n }\n\n /**\n * 將 handlers 轉換為 Bun.serve websocket config\n */\n toHandler(): {\n open?: (ws: unknown) => void | Promise<void>\n message?: (ws: unknown, data: string | Buffer | Uint8Array) => void | Promise<void>\n close?: (ws: unknown, code: number, reason: string) => void | Promise<void>\n drain?: (ws: unknown) => void | Promise<void>\n } {\n return {\n open: async (ws: unknown) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.open) {\n await handler.open(ws)\n }\n },\n\n message: async (ws: unknown, data: string | Buffer | Uint8Array) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.message) {\n await handler.message(ws, data)\n }\n },\n\n close: async (ws: unknown, code: number, reason: string) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.close) {\n await handler.close(ws, code, reason)\n }\n },\n\n drain: async (ws: unknown) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.drain) {\n await handler.drain(ws)\n }\n },\n }\n }\n\n /**\n * 尋找符合路徑的 handler\n * 優先精確匹配,再 wildcard 匹配\n */\n private findHandler(path: string): WebSocketRouteHandlers | undefined {\n // 精確匹配\n if (this.routes.has(path)) {\n return this.routes.get(path)\n }\n\n // Wildcard 匹配\n for (const [registeredPath, handlers] of this.routes.entries()) {\n if (this.matchesPath(registeredPath, path)) {\n return handlers\n }\n }\n\n return undefined\n }\n\n /**\n * 路徑匹配邏輯\n * 支援:\n * - 精確匹配:/chat\n * - Wildcard:/api/*, /api*\n */\n private matchesPath(pattern: string, path: string): boolean {\n if (!pattern.includes('*')) {\n return path === pattern\n }\n\n if (pattern.endsWith('/*')) {\n const basePattern = pattern.slice(0, -2)\n return path === basePattern || path.startsWith(`${basePattern}/`)\n }\n\n if (pattern.endsWith('*')) {\n const basePattern = pattern.slice(0, -1)\n return path.startsWith(basePattern)\n }\n\n return false\n }\n}\n",
|
|
71
|
+
"import type {\n GravitoContext,\n GravitoErrorHandler,\n GravitoHandler,\n GravitoMiddleware,\n GravitoNotFoundHandler,\n HttpMethod,\n} from '../../http/types'\nimport type { HttpAdapter, RouteDefinition } from '../types'\nimport { BunContext } from './BunContext'\nimport type { BunRequest } from './BunRequest'\nimport type { WebSocketRouteHandlers } from './BunWebSocketHandler'\nimport { BunWebSocketHandler } from './BunWebSocketHandler'\nimport { RadixRouter } from './RadixRouter'\n\n/**\n * Native Bun-optimized HTTP Adapter for Gravito.\n * Uses Bun's standard Request/Response classes and efficient router.\n * @public\n */\nexport class BunNativeAdapter implements HttpAdapter {\n public readonly name = 'bun-native'\n public readonly version = '0.0.1'\n\n public get native(): unknown {\n return this\n }\n\n private router = new RadixRouter()\n private middlewares: Array<{ path: string; handlers: GravitoMiddleware[] }> = []\n private errorHandler: GravitoErrorHandler | null = null\n private notFoundHandler: GravitoNotFoundHandler | null = null\n\n // Context pooling for P0 fix (state pollution)\n private contextPool: BunContext[] = []\n private readonly maxPoolSize = 100\n\n // P2 optimization: Pre-compiled middleware chains\n private middlewareChainCache = new Map<string, GravitoMiddleware[]>()\n\n // WebSocket support\n private wsHandler = new BunWebSocketHandler()\n\n route(\n method: HttpMethod,\n path: string,\n ...handlers: (GravitoHandler | GravitoMiddleware)[]\n ): void {\n this.router.add(method, path, handlers as any[])\n }\n\n routes(routes: RouteDefinition[]): void {\n for (const route of routes) {\n this.route(\n route.method,\n route.path,\n ...(route.handlers as (GravitoHandler | GravitoMiddleware)[])\n )\n }\n }\n\n use(path: string, ...middleware: GravitoMiddleware[]): void {\n this.middlewares.push({ path, handlers: middleware })\n // P2 optimization: Clear middleware cache when new middleware added\n this.middlewareChainCache.clear()\n }\n\n useGlobal(...middleware: GravitoMiddleware[]): void {\n this.use('*', ...middleware)\n }\n\n useScoped(scope: string, path: string, ...middleware: GravitoMiddleware[]): void {\n if (path === '*' || path === '*/*') {\n throw new Error(\n `useScoped(): Cannot use wildcard path '*' in Orbit-scoped middleware. ` +\n `Use regular use('*') for global middleware, or specify explicit paths like '${scope}/*'`\n )\n }\n\n const normalizedScope = scope.startsWith('/') ? scope : `/${scope}`\n const fullPath = normalizedScope + (path.startsWith('/') ? '' : `/${path}`)\n\n if (!fullPath.includes(normalizedScope)) {\n throw new Error(\n `useScoped(): Path '${path}' must include scope prefix '${scope}'. ` +\n `Expected path to be under '${scope}' (e.g., '${scope}${path}')`\n )\n }\n\n this.middlewares.push({ path: fullPath, handlers: middleware })\n }\n\n /**\n * P1 Fix: Accurate path pattern matching for middleware\n * Handles wildcards: *, /api/*, /api\n */\n private matchesPath(pattern: string, path: string): boolean {\n if (pattern === '*') {\n return true // Global wildcard\n }\n\n // Handle /api/* format\n if (pattern.endsWith('/*')) {\n const basePattern = pattern.slice(0, -2) // Remove /*\n return path === basePattern || path.startsWith(`${basePattern}/`)\n }\n\n // Handle /api* format (without slash)\n if (pattern.endsWith('*')) {\n const basePattern = pattern.slice(0, -1)\n return path.startsWith(basePattern)\n }\n\n // Default: treat as prefix match if it matches exactly or as a parent directory\n // This allows .use('/api', ...) to match '/api/test'\n return path === pattern || path.startsWith(`${pattern}/`)\n }\n\n /**\n * P2 optimization: Pre-compile middleware chain for a path\n */\n private getCompiledMiddlewareChain(path: string): GravitoMiddleware[] {\n // Check cache first\n if (this.middlewareChainCache.has(path)) {\n return this.middlewareChainCache.get(path)!\n }\n\n // Build chain\n const chain: GravitoMiddleware[] = []\n\n for (const mw of this.middlewares) {\n if (this.matchesPath(mw.path, path)) {\n chain.push(...mw.handlers)\n }\n }\n\n // Cache it\n this.middlewareChainCache.set(path, chain)\n\n return chain\n }\n\n /**\n * P0 Fix: Context object pooling to prevent state pollution\n */\n private acquireContext(request: Request): BunContext {\n const ctx = this.contextPool.pop()\n if (ctx) {\n ctx.reset(request)\n return ctx\n }\n return BunContext.create(request) as any\n }\n\n /**\n * P0 Fix: Release context back to pool\n */\n private releaseContext(ctx: BunContext): void {\n if (this.contextPool.length < this.maxPoolSize) {\n // Reset before returning to pool (with dummy request)\n ctx.reset(new Request('http://localhost/'))\n this.contextPool.push(ctx)\n }\n }\n\n mount(path: string, subAdapter: HttpAdapter): void {\n const fullPath = path.endsWith('/') ? `${path}*` : `${path}/*`\n\n // Register a wildcard route for ALL methods\n this.route('all' as HttpMethod, fullPath, async (ctx: GravitoContext) => {\n const url = new URL(ctx.req.url)\n // Strip the mounting path prefix (e.g., '/orbit') from the pathname\n const prefix = path.endsWith('/') ? path.slice(0, -1) : path\n\n if (url.pathname.startsWith(prefix)) {\n // Ensure we handle root correctly (e.g. /orbit needs to become / or similar based on router logic)\n const newPath = url.pathname.slice(prefix.length)\n url.pathname = newPath === '' ? '/' : newPath\n }\n\n // Create a clean request with minimal properties to avoid carrying over internal state\n const newReq = new Request(url.toString(), {\n method: ctx.req.method,\n headers: ctx.req.raw.headers,\n body: ctx.req.raw.body,\n })\n\n const res = await subAdapter.fetch(newReq)\n // Ensure response is stored in context for middleware chain\n if ('res' in ctx) {\n ;(ctx as any).res = res\n }\n return res\n })\n }\n\n createContext(request: Request): GravitoContext {\n return BunContext.create(request)\n }\n\n onError(handler: GravitoErrorHandler): void {\n this.errorHandler = handler\n }\n\n onNotFound(handler: GravitoNotFoundHandler): void {\n this.notFoundHandler = handler\n }\n\n /**\n * 註冊 WebSocket 路由\n */\n registerWebSocketRoute(path: string, handlers: WebSocketRouteHandlers): void {\n this.wsHandler.register(path, handlers)\n }\n\n /**\n * 取得 WebSocket handler(供 Bun.serve 使用)\n */\n get websocket() {\n return this.wsHandler.hasAnyRoute() ? this.wsHandler.toHandler() : undefined\n }\n\n /**\n * Predictive Route Warming (JIT Optimization)\n */\n async warmup(paths: string[]): Promise<void> {\n const dummyReqOpts = { headers: { 'User-Agent': 'Gravito-Warmup/1.0' } }\n\n for (const path of paths) {\n const req = new Request(`http://localhost${path}`, dummyReqOpts)\n await this.fetch(req)\n }\n }\n\n async fetch(request: Request, _server?: unknown): Promise<Response> {\n // WebSocket upgrade check (before context acquisition)\n const url = new URL(request.url)\n if (\n _server != null &&\n typeof (_server as any).upgrade === 'function' &&\n request.headers.get('upgrade')?.toLowerCase() === 'websocket' &&\n this.wsHandler.hasRoute(url.pathname)\n ) {\n const upgraded = (_server as any).upgrade(request, {\n data: {\n path: url.pathname,\n id: crypto.randomUUID(),\n channels: new Set<string>(),\n },\n })\n if (upgraded) {\n return new Response(null, { status: 101 })\n }\n }\n\n // P0 Fix: Use context pool to prevent state pollution\n const ctx = this.acquireContext(request)\n\n try {\n const path = url.pathname\n const method = request.method\n\n const match = this.router.match(method, path)\n\n const handlers: Function[] = []\n\n // P2 optimization: Use pre-compiled middleware chain\n const middlewareChain = this.getCompiledMiddlewareChain(path)\n handlers.push(...middlewareChain)\n\n if (match) {\n if (match.params) {\n ;(ctx.req as BunRequest).setParams(match.params)\n }\n handlers.push(...match.handlers)\n } else if (this.notFoundHandler) {\n // P2 Fix: Add notFound handler only when needed\n handlers.push(this.notFoundHandler)\n }\n\n return await this.executeChain(ctx, handlers)\n } catch (err) {\n if (this.errorHandler) {\n try {\n const response = await this.errorHandler(err as Error, ctx)\n if (response) {\n return response\n }\n } catch (e) {\n console.error('Error handler failed', e)\n }\n }\n console.error(err)\n return new Response('Internal Server Error', { status: 500 })\n } finally {\n // P0 Fix: Always release context back to pool\n this.releaseContext(ctx)\n }\n }\n\n private async executeChain(ctx: GravitoContext, handlers: Function[]): Promise<Response> {\n let index = -1\n\n const dispatch = async (i: number): Promise<Response | undefined> => {\n if (i <= index) {\n throw new Error('next() called multiple times')\n }\n index = i\n\n const fn = handlers[i]\n if (!fn) {\n return undefined\n }\n\n const result = await fn(ctx, async () => {\n const res = await dispatch(i + 1)\n // If next() returned a response, attach it to context so subsequent c.header() calls work\n if (res && (ctx as any).res !== res) {\n ;(ctx as any).res = res\n }\n return res\n })\n\n return result\n }\n\n const finalResponse = await dispatch(0)\n\n if (\n finalResponse &&\n (finalResponse instanceof Response || typeof (finalResponse as Response).status === 'number')\n ) {\n return finalResponse as Response\n }\n\n // Check if context has stored response (from middleware/handler calls to ctx.json() etc)\n if ((ctx as any).res) {\n return (ctx as any).res!\n }\n\n // If no response returned and no notFoundHandler handled it:\n return new Response('Not Found', { status: 404 })\n }\n}\n",
|
|
70
72
|
"import { Gravito } from '../engine/Gravito'\nimport type {\n GravitoContext,\n GravitoErrorHandler,\n GravitoHandler,\n GravitoMiddleware,\n GravitoNotFoundHandler,\n GravitoVariables,\n HttpMethod,\n} from '../http/types'\nimport type { AdapterConfig, HttpAdapter, RouteDefinition } from './types'\n\n/**\n * GravitoEngineAdapter - Optimized adapter using the Standalone Gravito Engine\n *\n * This adapter is exclusively for Bun and provides the best performance\n * by using the specialized Gravito engine with object pooling and AOT routing.\n */\nexport class GravitoEngineAdapter<V extends GravitoVariables = GravitoVariables>\n implements HttpAdapter<V>\n{\n readonly name = 'gravito-engine'\n readonly version = '1.0.0'\n\n private engine: Gravito\n\n constructor(config: AdapterConfig = {}) {\n this.engine = new Gravito(config.engineOptions)\n }\n\n get native(): Gravito {\n return this.engine\n }\n\n route(\n method: HttpMethod,\n path: string,\n ...handlers: (GravitoHandler<V> | GravitoMiddleware<V>)[]\n ): void {\n // Gravito engine uses Hono-like API for methods\n const methodFn = (this.engine as any)[method.toLowerCase()]\n if (typeof methodFn !== 'function') {\n throw new Error(`Unsupported HTTP method: ${method}`)\n }\n methodFn.call(this.engine, path, ...handlers)\n }\n\n routes(routes: RouteDefinition[]): void {\n for (const route of routes) {\n this.route(route.method, route.path, ...(route.handlers as any[]))\n }\n }\n\n use(path: string, ...middleware: GravitoMiddleware<V>[]): void {\n this.engine.use(path, ...(middleware as any))\n }\n\n useGlobal(...middleware: GravitoMiddleware<V>[]): void {\n this.engine.use(...(middleware as any))\n }\n\n mount(path: string, subAdapter: HttpAdapter<V>): void {\n // For now, simple relay\n this.use(`${path}/*`, async (ctx) => {\n return await subAdapter.fetch(ctx.req.raw)\n })\n }\n\n onError(handler: GravitoErrorHandler<V>): void {\n this.engine.onError(handler as any)\n }\n\n onNotFound(handler: GravitoNotFoundHandler<V>): void {\n this.engine.notFound(handler as any)\n }\n\n fetch = (request: Request, _server?: unknown): Response | Promise<Response> => {\n return this.engine.fetch(request)\n }\n\n async warmup(paths: string[]): Promise<void> {\n await this.engine.warmup(paths)\n }\n\n createContext(_request: Request): GravitoContext<V> {\n // Gravito engine has its own internal context management\n throw new Error('GravitoEngineAdapter manages context internally through pooling.')\n }\n\n useScoped(scope: string, path: string, ...middleware: GravitoMiddleware<V>[]): void {\n if (path === '*' || path === '*/*') {\n throw new Error(\n `useScoped(): Cannot use wildcard path '*' in Orbit-scoped middleware. ` +\n `Use regular use('*') for global middleware, or specify explicit paths like '${scope}/*'`\n )\n }\n\n const normalizedScope = scope.startsWith('/') ? scope : `/${scope}`\n const fullPath = normalizedScope + (path.startsWith('/') ? '' : '/') + path\n\n this.use(fullPath, ...middleware)\n }\n}\n",
|
|
71
73
|
"/**\n * @fileoverview HTTP Adapter Interface for Gravito Framework\n *\n * This module defines the contract that all HTTP adapters must implement.\n * By programming to this interface, Gravito can swap out the underlying\n * HTTP engine without changing application code.\n *\n * @module @gravito/core/adapters\n * @since 2.0.0\n */\n\nimport type {\n GravitoContext,\n GravitoErrorHandler,\n GravitoHandler,\n GravitoMiddleware,\n GravitoNotFoundHandler,\n GravitoVariables,\n HttpMethod,\n} from '../http/types'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Adapter Configuration\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Configuration options for HTTP adapters\n */\nexport interface AdapterConfig {\n /**\n * Base path prefix for all routes\n * @default ''\n */\n basePath?: string\n\n /**\n * Whether to enable strict routing (trailing slashes matter)\n * @default false\n */\n strictRouting?: boolean\n\n /**\n * Custom options passed to the underlying HTTP engine\n */\n engineOptions?: Record<string, unknown>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Route Definition\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Route definition structure\n */\nexport interface RouteDefinition {\n method: HttpMethod\n path: string\n handlers: (GravitoHandler | GravitoMiddleware)[]\n name?: string\n middleware?: GravitoMiddleware[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// HTTP Adapter Interface\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * HttpAdapter - The core interface for HTTP engine abstraction\n *\n * Any HTTP engine (Photon, Express, Fastify, custom Bun implementation)\n * must implement this interface to be usable with Gravito.\n *\n * @typeParam V - Context variables type\n *\n * @example\n * ```typescript\n * // Using the default Photon adapter\n * import { PhotonAdapter } from '@gravito/core/adapters'\n *\n * const core = new PlanetCore({\n * adapter: new PhotonAdapter()\n * })\n *\n * // Using a custom adapter\n * import { BunNativeAdapter } from '@gravito/adapter-bun'\n *\n * const core = new PlanetCore({\n * adapter: new BunNativeAdapter()\n * })\n * ```\n */\nexport interface HttpAdapter<V extends GravitoVariables = GravitoVariables> {\n // ─────────────────────────────────────────────\n // Identity\n // ─────────────────────────────────────────────\n\n /**\n * Adapter name for identification\n * @example 'photon', 'bun-native', 'express'\n */\n readonly name: string\n\n /**\n * Adapter version\n */\n readonly version: string\n\n // ─────────────────────────────────────────────\n // Native Access\n // ─────────────────────────────────────────────\n\n /**\n * Access the underlying native HTTP engine instance.\n *\n * ⚠️ WARNING: Using this ties your code to a specific adapter.\n *\n * @example\n * ```typescript\n * // For Photon adapter\n * const photonApp = adapter.native as Photon\n *\n * // For custom Bun adapter\n * const bunApp = adapter.native as BunApp\n * ```\n */\n readonly native: unknown\n\n // ─────────────────────────────────────────────\n // Routing\n // ─────────────────────────────────────────────\n\n /**\n * Register a route with the adapter\n *\n * @param method - HTTP method\n * @param path - Route path (may include parameters like ':id')\n * @param handlers - One or more handlers for this route (handlers or middleware)\n */\n route(\n method: HttpMethod,\n path: string,\n ...handlers: (GravitoHandler<V> | GravitoMiddleware<V>)[]\n ): void\n\n /**\n * Register multiple routes at once\n *\n * @param routes - Array of route definitions\n */\n routes(routes: RouteDefinition[]): void\n\n /**\n * Register a middleware for a path\n *\n * @param path - Path pattern to match\n * @param middleware - One or more middleware functions\n */\n use(path: string, ...middleware: GravitoMiddleware<V>[]): void\n\n /**\n * Register a global middleware (applied to all routes)\n *\n * @param middleware - Middleware function\n */\n useGlobal(...middleware: GravitoMiddleware<V>[]): void\n\n /**\n * Register a scoped middleware for Orbit-level isolation\n *\n * Unlike regular `use()`, this method enforces stricter scoping rules:\n * - REJECTS '*' wildcard paths (prevents global middleware in Orbits)\n * - ENFORCES that all middleware paths must include the scope prefix\n * - Throws error if attempting to register global middleware within an Orbit scope\n *\n * This is designed to prevent accidental middleware cross-contamination\n * when multiple Orbits are mounted to a single PlanetCore instance.\n *\n * @param scope - The scope/path prefix (e.g., '/api', '/blog')\n * @param path - Path pattern to match (cannot be '*')\n * @param middleware - One or more middleware functions\n * @throws {Error} If path is '*' when in Orbit scope\n * @since 2.3.0\n *\n * @example\n * ```typescript\n * // Correct: Scoped to specific path\n * adapter.useScoped('/api', '/users/*', authMiddleware)\n *\n * // Error: Cannot use wildcard in Orbit scope\n * adapter.useScoped('/api', '*', loggerMiddleware)\n * ```\n */\n useScoped(scope: string, path: string, ...middleware: GravitoMiddleware<V>[]): void\n\n /**\n * Mount a sub-adapter at a path\n *\n * @param path - Mount path\n * @param subAdapter - The adapter to mount\n */\n mount(path: string, subAdapter: HttpAdapter<V>): void\n\n // ─────────────────────────────────────────────\n // Error Handling\n // ─────────────────────────────────────────────\n\n /**\n * Set the error handler\n *\n * @param handler - Error handler function\n */\n onError(handler: GravitoErrorHandler<V>): void\n\n /**\n * Set the not-found handler\n *\n * @param handler - Not-found handler function\n */\n onNotFound(handler: GravitoNotFoundHandler<V>): void\n\n // ─────────────────────────────────────────────\n // Request Handling\n // ─────────────────────────────────────────────\n\n /**\n * The main fetch handler for serving requests.\n *\n * This is compatible with `Bun.serve()`, Cloudflare Workers,\n * and other fetch-based runtimes.\n *\n * @param request - Incoming HTTP request\n * @param server - Optional server context (Bun.Server, etc.)\n * @returns HTTP response\n *\n * @example\n * ```typescript\n * // With Bun.serve\n * Bun.serve({\n * port: 3000,\n * fetch: adapter.fetch\n * })\n * ```\n */\n fetch(request: Request, server?: unknown): Response | Promise<Response>\n\n /**\n * Predictive Route Warming (JIT Optimization)\n *\n * Simulates requests to specified routes to trigger JIT compilation (FTL)\n * before real traffic arrives.\n *\n * @param paths List of paths to warm up (e.g. ['/api/users', '/health'])\n * @since 2.1.0\n */\n warmup?(paths: string[]): Promise<void>\n\n /**\n * WebSocket Handler for Bun.serve\n *\n * @since 2.2.0\n */\n websocket?: {\n open?(ws: unknown): void | Promise<void>\n message?(ws: unknown, message: string | Buffer | Uint8Array): void | Promise<void>\n close?(ws: unknown, code: number, message: string): void | Promise<void>\n drain?(ws: unknown): void | Promise<void>\n // Allow any other Bun websocket properties\n [key: string]: unknown\n }\n\n // ─────────────────────────────────────────────\n // Lifecycle\n // ─────────────────────────────────────────────\n\n /**\n * Initialize the adapter\n *\n * Called during PlanetCore.boot()\n */\n init?(): void | Promise<void>\n\n /**\n * Cleanup resources\n *\n * Called during graceful shutdown\n */\n shutdown?(): void | Promise<void>\n\n // ─────────────────────────────────────────────\n // Context Factory\n // ─────────────────────────────────────────────\n\n /**\n * Create a GravitoContext from a raw request.\n *\n * This is used internally for testing and advanced scenarios.\n *\n * @param request - Raw HTTP request\n * @returns Gravito context\n */\n createContext(request: Request): GravitoContext<V>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Adapter Factory\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Factory function type for creating adapters\n */\nexport type AdapterFactory<V extends GravitoVariables = GravitoVariables> = (\n config?: AdapterConfig\n) => HttpAdapter<V>\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Type Guards\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Check if a value is an HttpAdapter\n */\nexport function isHttpAdapter(value: unknown): value is HttpAdapter {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'name' in value &&\n 'fetch' in value &&\n typeof (value as HttpAdapter).fetch === 'function' &&\n 'route' in value &&\n typeof (value as HttpAdapter).route === 'function'\n )\n}\n",
|
|
72
74
|
"/**\n * @fileoverview Application - Enterprise Application Container\n *\n * A high-level application class that orchestrates the entire framework.\n * Provides a centralized entry point for enterprise applications with\n * auto-discovery of providers, config loading, and lifecycle management.\n *\n * Phase 4 優化:Provider 預掃描 + 平行載入\n * - Phase 1:預掃描所有 Provider 文件(語法驗證)\n * - Phase 2:篩選有效 Provider(跳過無效的)\n * - Phase 3:平行 import 所有有效 Provider\n * - Phase 4:註冊到容器\n *\n * @module @gravito/core\n * @since 2.0.0\n */\n\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport { ConfigManager } from './ConfigManager'\nimport { Container } from './Container'\nimport type { EventManager } from './EventManager'\nimport type { Logger } from './Logger'\nimport { ConsoleLogger } from './Logger'\nimport { PlanetCore } from './PlanetCore'\nimport type { ServiceProvider } from './ServiceProvider'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 內部型別定義\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Provider 檔案掃描結果\n * 預掃描 Phase 的輸出,紀錄每個檔案的基本語法驗證結果\n */\ninterface ProviderScanResult {\n /** 檔案絕對路徑 */\n filePath: string\n /** 檔案名稱(含副檔名) */\n fileName: string\n /** 是否通過語法驗證 */\n valid: boolean\n /** 失敗原因(僅在 valid === false 時有值) */\n error?: string\n}\n\n/**\n * Provider 模組載入結果\n * 平行 import Phase 的輸出\n */\ninterface ProviderLoadResult {\n /** 檔案名稱(供日誌參考) */\n fileName: string\n /** 已解析的 Provider class(若載入成功) */\n // biome-ignore lint/complexity/noBannedTypes: 需要接受任意建構子函式\n ProviderClass?: Function\n /** 是否成功 */\n success: boolean\n /** 失敗原因 */\n error?: string\n}\n\n/**\n * Application Config options for the Application class.\n * @public\n */\nexport interface ApplicationConfig {\n /**\n * Base path of the application\n */\n basePath: string\n\n /**\n * Path to the config directory (relative to basePath)\n * @default 'config'\n */\n configPath?: string\n\n /**\n * Path to the providers directory (relative to basePath)\n * @default 'src/Providers'\n */\n providersPath?: string\n\n /**\n * Environment (development, production, testing)\n */\n env?: 'development' | 'production' | 'testing'\n\n /**\n * Logger instance\n */\n logger?: Logger\n\n /**\n * Initial configuration values\n */\n config?: Record<string, unknown>\n\n /**\n * Service providers to register\n */\n providers?: ServiceProvider[]\n\n /**\n * Whether to auto-discover providers from providersPath\n * @default true\n */\n autoDiscoverProviders?: boolean\n}\n\n/**\n * Application - Enterprise-grade application container.\n *\n * Provides a higher-level abstraction over PlanetCore for building\n * enterprise applications with convention-over-configuration patterns.\n *\n * @example\n * ```typescript\n * // Create application\n * const app = new Application({\n * basePath: import.meta.dir,\n * env: process.env.NODE_ENV as 'development' | 'production',\n * });\n *\n * // Boot the application\n * await app.boot();\n *\n * // Access core\n * export default app.core.liftoff();\n * ```\n */\nexport class Application {\n /**\n * The underlying PlanetCore instance.\n */\n public readonly core: PlanetCore\n\n /**\n * The IoC container.\n */\n public readonly container: Container\n\n /**\n * The configuration manager.\n */\n public readonly config: ConfigManager\n\n /**\n * The event manager.\n */\n public readonly events: EventManager\n\n /**\n * The logger instance.\n */\n public readonly logger: Logger\n\n /**\n * Application base path.\n */\n public readonly basePath: string\n\n /**\n * Environment mode.\n */\n public readonly env: 'development' | 'production' | 'testing'\n\n /**\n * Configuration options.\n */\n private readonly options: ApplicationConfig\n\n /**\n * Whether the application has been booted.\n */\n private booted = false\n\n constructor(options: ApplicationConfig) {\n this.options = options\n this.basePath = options.basePath\n this.env =\n options.env ??\n (process.env.NODE_ENV as 'development' | 'production' | 'testing') ??\n 'development'\n this.logger = options.logger ?? new ConsoleLogger()\n\n // Initialize container and config\n this.container = new Container()\n this.config = new ConfigManager(options.config ?? {})\n\n // Initialize core with shared container\n // Now PlanetCore uses the same container instance as Application\n this.core = new PlanetCore({\n logger: this.logger,\n config: options.config,\n container: this.container,\n })\n\n this.events = this.core.events\n\n // Register self in container\n this.container.instance('app', this)\n this.container.instance('config', this.config)\n this.container.instance('logger', this.logger)\n this.container.instance('events', this.events)\n }\n\n /**\n * Boot the application and its dependencies.\n *\n * This method orchestrates the full application lifecycle:\n * 1. Configuration: Loads all config files from the config directory.\n * 2. Discovery: Auto-discovers ServiceProviders from the providers directory.\n * 3. Registration: Registers all discovered and explicit providers.\n * 4. Bootstrapping: Triggers the PlanetCore bootstrap sequence.\n *\n * @returns Promise that resolves to the application instance for chaining.\n *\n * @example\n * ```typescript\n * const app = new Application({ basePath: import.meta.dir });\n * await app.boot();\n * ```\n */\n async boot(): Promise<this> {\n if (this.booted) {\n return this\n }\n\n this.logger.info(`🚀 Booting application in ${this.env} mode...`)\n\n // 1. Load configuration\n await this.loadConfiguration()\n\n // 2. Auto-discover and register providers\n if (this.options.autoDiscoverProviders !== false) {\n await this.discoverProviders()\n }\n\n // 4. Register explicit providers\n if (this.options.providers) {\n for (const provider of this.options.providers) {\n this.core.register(provider)\n }\n }\n\n // 5. Bootstrap core (register + boot all providers)\n await this.core.bootstrap()\n\n this.booted = true\n this.logger.info('✅ Application booted successfully')\n\n return this\n }\n\n /**\n * Load configuration files from the config directory.\n *\n * @internal\n */\n private async loadConfiguration(): Promise<void> {\n const configPath = path.resolve(this.basePath, this.options.configPath ?? 'config')\n\n try {\n const stat = await fs.stat(configPath)\n if (!stat.isDirectory()) {\n return\n }\n\n const files = await fs.readdir(configPath)\n\n for (const file of files) {\n if (!file.endsWith('.ts') && !file.endsWith('.js')) {\n continue\n }\n\n const key = path.basename(file, path.extname(file))\n const filePath = path.resolve(configPath, file)\n\n try {\n const module = await import(pathToFileURL(filePath).href)\n const value = module.default ?? module\n\n this.config.set(key, value)\n this.logger.info(`📋 Loaded config: ${key}`)\n } catch (error) {\n // Enhanced error handling with type guards\n if (error instanceof SyntaxError) {\n this.logger.error(`Syntax error in config file ${file}:`, error.message)\n } else if (error instanceof Error) {\n this.logger.warn(`Failed to load config ${file}: ${error.message}`, {\n stack: error.stack,\n })\n } else {\n this.logger.warn(`Failed to load config ${file}:`, error)\n }\n }\n }\n } catch {\n // Config directory doesn't exist, that's fine\n this.logger.info('No config directory found, skipping config loading')\n }\n }\n\n /**\n * Discover and register providers from the providers directory.\n *\n * Phase 4 優化版本:採用 4-Phase 載入策略\n * - Phase 1:預掃描所有候選 Provider 檔案(語法驗證)\n * - Phase 2:篩選有效 Provider 檔案(跳過語法錯誤的)\n * - Phase 3:平行 import 所有有效 Provider(從循序 → 並行)\n * - Phase 4:逐一註冊到容器\n *\n * 效能改進:N 個 Provider 從 O(N * importTime) 降至 O(importTime + overhead)\n *\n * @internal\n */\n private async discoverProviders(): Promise<void> {\n const providersPath = path.resolve(this.basePath, this.options.providersPath ?? 'src/Providers')\n\n try {\n const stat = await fs.stat(providersPath)\n if (!stat.isDirectory()) {\n return\n }\n\n const startTime = Date.now()\n\n // Phase 1:取得候選 Provider 檔案清單並預掃描\n const scanResults = await this.prescribeProviders(providersPath)\n const scanMs = Date.now() - startTime\n\n if (scanResults.length === 0) {\n return\n }\n\n // Phase 2:篩選有效檔案(排除語法錯誤的)\n const validProviders = scanResults.filter((r) => r.valid)\n const invalidCount = scanResults.length - validProviders.length\n\n this.logger.info(\n `🔍 Prescanned ${scanResults.length} files (${scanMs}ms) - valid: ${validProviders.length}, invalid: ${invalidCount}`\n )\n\n if (validProviders.length === 0) {\n return\n }\n\n // Phase 3:平行 import 所有有效 Provider\n this.logger.info('⚙️ Loading providers in parallel...')\n const loadResults = await this.loadProvidersInParallel(validProviders)\n\n // Phase 4:逐一註冊到容器\n const registerStart = Date.now()\n let registeredCount = 0\n\n for (const result of loadResults) {\n if (!result.success || !result.ProviderClass) {\n continue\n }\n\n try {\n const provider = new (result.ProviderClass as new () => ServiceProvider)()\n this.core.register(provider)\n this.logger.info(`🔌 Registered provider: ${result.ProviderClass.name}`)\n registeredCount++\n } catch (error) {\n if (error instanceof Error) {\n this.logger.warn(\n `Failed to instantiate provider from ${result.fileName}: ${error.message}`\n )\n } else {\n this.logger.warn(`Failed to instantiate provider from ${result.fileName}:`, error)\n }\n }\n }\n\n const totalMs = Date.now() - startTime\n this.logger.info(\n `🔌 Registered ${registeredCount} providers in ${Date.now() - registerStart}ms (total: ${totalMs}ms)`\n )\n } catch {\n // Providers directory doesn't exist, that's fine\n }\n }\n\n /**\n * Phase 1+2:預掃描 Provider 目錄中的所有候選檔案。\n *\n * 使用輕量語法驗證(嘗試讀取 + 基本結構檢查)篩選有效的 Provider 檔案,\n * 讓語法錯誤在 import 之前被發現,提供更清晰的錯誤訊息。\n *\n * 策略:\n * 1. 使用 Bun.Transpiler 進行 import 掃描(在 Bun 環境下)\n * 2. Fallback 至基本檔案讀取驗證(在 Node/Deno 環境下)\n *\n * @param providersPath - Provider 目錄絕對路徑\n * @returns 掃描結果陣列(含有效/無效標記)\n * @internal\n */\n private async prescribeProviders(providersPath: string): Promise<ProviderScanResult[]> {\n const files = await fs.readdir(providersPath)\n const candidateFiles = files.filter(\n (file) =>\n (file.endsWith('Provider.ts') || file.endsWith('Provider.js')) && !file.endsWith('.d.ts')\n )\n\n if (candidateFiles.length === 0) {\n return []\n }\n\n // 平行執行預掃描(IO 操作可並行)\n const scanPromises = candidateFiles.map(async (file): Promise<ProviderScanResult> => {\n const filePath = path.resolve(providersPath, file)\n\n try {\n // 嘗試讀取檔案內容以驗證可存取性\n const content = await fs.readFile(filePath, 'utf-8')\n\n // 基本結構驗證:確認檔案包含 Provider 相關關鍵字\n // 此驗證為輕量快速篩選,不取代完整的 import 驗證\n const hasProviderPattern =\n content.includes('ServiceProvider') ||\n content.includes('register(') ||\n content.includes('class ') ||\n content.includes('export default') ||\n content.includes('export {')\n\n if (!hasProviderPattern) {\n return {\n filePath,\n fileName: file,\n valid: false,\n error: 'File does not appear to contain a valid ServiceProvider export',\n }\n }\n\n return { filePath, fileName: file, valid: true }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n this.logger.warn(`❌ Cannot access provider file ${file}: ${message}`)\n return { filePath, fileName: file, valid: false, error: message }\n }\n })\n\n return Promise.all(scanPromises)\n }\n\n /**\n * Phase 3:平行 import 所有有效的 Provider 檔案。\n *\n * 使用 Promise.all() 同時 import 所有通過預掃描的 Provider 檔案,\n * 從循序載入(O(N))改善為平行載入(O(1) 理論上),\n * 實際效能受 I/O、CPU 和 V8 模組解析限制。\n *\n * @param validProviders - 通過預掃描的 Provider 掃描結果\n * @returns 模組載入結果陣列\n * @internal\n */\n private async loadProvidersInParallel(\n validProviders: ProviderScanResult[]\n ): Promise<ProviderLoadResult[]> {\n const loadPromises = validProviders.map(\n async ({ filePath, fileName }): Promise<ProviderLoadResult> => {\n try {\n const module = await import(pathToFileURL(filePath).href)\n\n // 尋找 default export 或含 register() 方法的 class\n const ProviderClass =\n module.default ??\n Object.values(module).find(\n (exp): exp is new () => ServiceProvider =>\n // biome-ignore lint/suspicious/noExplicitAny: 需要檢查動態模組的 prototype\n typeof exp === 'function' && (exp as any).prototype?.register\n )\n\n if (ProviderClass && typeof ProviderClass === 'function') {\n return { fileName, ProviderClass, success: true }\n }\n\n return {\n fileName,\n success: false,\n error: 'No valid ServiceProvider class found in module exports',\n }\n } catch (error) {\n // 詳細的錯誤分類,方便診斷\n let errorMessage: string\n if (error instanceof SyntaxError) {\n errorMessage = `Syntax error: ${error.message}`\n this.logger.error(`Syntax error in provider file ${fileName}:`, error.message)\n } else if (error instanceof TypeError) {\n errorMessage = `Type error: ${error.message}`\n this.logger.warn(`Invalid provider class in ${fileName}: ${error.message}`)\n } else if (error instanceof Error) {\n errorMessage = error.message\n this.logger.warn(`Failed to load provider ${fileName}: ${error.message}`, {\n stack: error.stack,\n })\n } else {\n errorMessage = String(error)\n this.logger.warn(`Failed to load provider ${fileName}:`, error)\n }\n\n return { fileName, success: false, error: errorMessage }\n }\n }\n )\n\n return Promise.all(loadPromises)\n }\n\n /**\n * Resolve a service instance from the IoC container.\n *\n * This is a convenience wrapper around `container.make()`.\n *\n * @template T - The expected type of the service.\n * @param key - The unique identifier or class name of the service.\n * @returns The resolved service instance.\n * @throws Error if the service is not bound in the container.\n *\n * @example\n * ```typescript\n * const db = app.make<Database>('db');\n * ```\n */\n make<T>(key: string): T {\n // Now uses the shared container instance\n return this.container.make<T>(key)\n }\n\n /**\n * Check if a service is bound.\n *\n * @param key - The service key\n * @returns True if bound\n */\n has(key: string): boolean {\n // Now uses the shared container instance\n return this.container.has(key)\n }\n\n /**\n * Retrieve a configuration value using dot notation.\n *\n * @template T - The expected type of the configuration value.\n * @param key - The configuration key (e.g., 'app.name', 'database.connections.mysql').\n * @param defaultValue - Optional value to return if the key is not found.\n * @returns The configuration value or the default value.\n *\n * @example\n * ```typescript\n * const port = app.getConfig<number>('app.port', 3000);\n * ```\n */\n getConfig<T>(key: string, defaultValue?: T): T {\n return this.config.get<T>(key, defaultValue)\n }\n\n /**\n * Resolve an absolute path relative to the application base path.\n *\n * @param segments - Path segments to join with the base path.\n * @returns The absolute path string.\n *\n * @example\n * ```typescript\n * const storagePath = app.path('storage', 'logs');\n * ```\n */\n path(...segments: string[]): string {\n return path.resolve(this.basePath, ...segments)\n }\n\n /**\n * Get the config path.\n *\n * @param segments - Additional path segments\n * @returns Absolute path to config directory\n */\n configPath(...segments: string[]): string {\n return this.path(this.options.configPath ?? 'config', ...segments)\n }\n\n /**\n * Check if running in production.\n */\n isProduction(): boolean {\n return this.env === 'production'\n }\n\n /**\n * Check if running in development.\n */\n isDevelopment(): boolean {\n return this.env === 'development'\n }\n\n /**\n * Check if running in testing.\n */\n isTesting(): boolean {\n return this.env === 'testing'\n }\n}\n",
|
|
73
|
-
"/**\n * Bun runtime adapter implementation.\n *\n * @module runtime/adapter-bun\n * @since 3.2.0\n */\n\nimport type { RuntimeAdapter, RuntimeSpawnOptions } from './types'\n\n/**\n * Create a RuntimeAdapter for the Bun runtime.\n * @internal\n */\nexport function createBunAdapter(): RuntimeAdapter {\n return {\n kind: 'bun',\n spawn(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n const proc = Bun.spawn([cmd, ...args], {\n cwd: options.cwd,\n env: options.env,\n stdin: options.stdin,\n stdout: options.stdout ?? 'pipe',\n stderr: options.stderr ?? 'pipe',\n })\n\n let timeoutHandle: Timer | undefined\n let abortListener: (() => void) | undefined\n\n const exitedWithTimeout = new Promise<number>((resolve, reject) => {\n if (options.timeout) {\n timeoutHandle = setTimeout(() => {\n proc.kill('SIGTERM')\n reject(new Error('[RuntimeAdapter] Process timeout'))\n }, options.timeout)\n }\n\n if (options.signal) {\n abortListener = () => {\n proc.kill('SIGTERM')\n reject(new DOMException('Aborted', 'AbortError'))\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n proc.exited\n .then(resolve)\n .catch(reject)\n .finally(() => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n })\n })\n\n return {\n exited: exitedWithTimeout,\n stdout: proc.stdout ?? null,\n stderr: proc.stderr ?? null,\n kill: (signal?: string | number) => {\n const bunSignal =\n typeof signal === 'number' ? signal : (signal as NodeJS.Signals | undefined)\n proc.kill(bunSignal)\n },\n unref: () => {\n // Bun.spawn doesn't have unref\n },\n resourceUsage: async () => {\n // Bun doesn't expose resource usage through spawn API\n return undefined\n },\n }\n },\n async spawnAndCollect(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n const proc = Bun.spawn([cmd, ...args], {\n cwd: options.cwd,\n env: options.env,\n stdin: options.stdin,\n stdout: 'pipe',\n stderr: 'pipe',\n })\n\n let timedOut = false\n let timeoutHandle: Timer | undefined\n\n const exitPromise = proc.exited\n .then((code: number) => ({ code, timedOut }))\n .catch(() => ({\n code: -1,\n timedOut: true,\n }))\n\n if (options.timeout) {\n const timeoutPromise = new Promise<{\n code: number\n timedOut: boolean\n }>((resolve) => {\n timeoutHandle = setTimeout(() => {\n timedOut = true\n proc.kill('SIGTERM')\n resolve({ code: -1, timedOut: true })\n }, options.timeout)\n })\n\n const result = await Promise.race([exitPromise, timeoutPromise])\n\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n\n const [stdoutText, stderrText] = await Promise.all([\n new Response(proc.stdout ?? null).text(),\n new Response(proc.stderr ?? null).text(),\n ])\n\n return {\n exitCode: result.code,\n stdout: stdoutText,\n stderr: stderrText,\n success: result.code === 0 && !result.timedOut,\n timedOut: result.timedOut,\n }\n }\n\n let abortListener: (() => void) | undefined\n if (options.signal) {\n abortListener = () => {\n proc.kill('SIGTERM')\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n const { code, timedOut: timeout } = await exitPromise\n\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n\n const [stdoutText, stderrText] = await Promise.all([\n new Response(proc.stdout ?? null).text(),\n new Response(proc.stderr ?? null).text(),\n ])\n\n return {\n exitCode: code,\n stdout: stdoutText,\n stderr: stderrText,\n success: code === 0 && !timeout,\n timedOut: timeout,\n }\n },\n spawnSync(command, options: Omit<RuntimeSpawnOptions, 'signal'> = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n const timedOut = false\n const proc = Bun.spawnSync([cmd, ...args], {\n cwd: options.cwd,\n env: options.env,\n stdin: options.stdin,\n stdout: 'pipe',\n stderr: 'pipe',\n })\n\n const decoder = new TextDecoder('utf-8', {\n fatal: false,\n })\n const stdoutText = decoder.decode(proc.stdout ?? new Uint8Array())\n const stderrText = decoder.decode(proc.stderr ?? new Uint8Array())\n\n return {\n exitCode: proc.exitCode ?? 0,\n stdout: stdoutText,\n stderr: stderrText,\n success: (proc.exitCode ?? 0) === 0 && !timedOut,\n timedOut,\n }\n },\n async writeFile(path, data) {\n await Bun.write(path, data)\n },\n async readFile(path) {\n const file = Bun.file(path)\n const buffer = await file.arrayBuffer()\n return new Uint8Array(buffer)\n },\n async readFileAsBlob(path) {\n return Bun.file(path)\n },\n async exists(path) {\n return await Bun.file(path).exists()\n },\n async stat(path) {\n const stats = await Bun.file(path).stat()\n return { size: stats.size }\n },\n async deleteFile(path) {\n const fs = await import('node:fs/promises')\n try {\n await fs.unlink(path)\n } catch {\n // Ignore if not found\n }\n },\n serve(config) {\n return Bun.serve({\n port: config.port,\n fetch: config.fetch,\n websocket: config.websocket as any,\n })\n },\n }\n}\n",
|
|
75
|
+
"/**\n * Bun runtime adapter implementation.\n *\n * @module runtime/adapter-bun\n * @since 3.2.0\n */\n\nimport type { RuntimeAdapter, RuntimeSpawnOptions } from './types'\n\n/**\n * Create a RuntimeAdapter for the Bun runtime.\n * @internal\n */\nexport function createBunAdapter(): RuntimeAdapter {\n return {\n kind: 'bun',\n spawn(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n const proc = Bun.spawn([cmd, ...args], {\n cwd: options.cwd,\n env: options.env,\n stdin: options.stdin,\n stdout: options.stdout ?? 'pipe',\n stderr: options.stderr ?? 'pipe',\n })\n\n let timeoutHandle: Timer | undefined\n let abortListener: (() => void) | undefined\n\n const exitedWithTimeout = new Promise<number>((resolve, reject) => {\n if (options.timeout) {\n timeoutHandle = setTimeout(() => {\n proc.kill('SIGTERM')\n reject(new Error('[RuntimeAdapter] Process timeout'))\n }, options.timeout)\n }\n\n if (options.signal) {\n abortListener = () => {\n proc.kill('SIGTERM')\n reject(new DOMException('Aborted', 'AbortError'))\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n proc.exited\n .then(resolve)\n .catch(reject)\n .finally(() => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n })\n })\n\n return {\n exited: exitedWithTimeout,\n stdout: proc.stdout ?? null,\n stderr: proc.stderr ?? null,\n kill: (signal?: string | number) => {\n const bunSignal =\n typeof signal === 'number' ? signal : (signal as NodeJS.Signals | undefined)\n proc.kill(bunSignal)\n },\n unref: () => {\n // Bun.spawn doesn't have unref\n },\n resourceUsage: async () => {\n // Bun doesn't expose resource usage through spawn API\n return undefined\n },\n }\n },\n async spawnAndCollect(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n const proc = Bun.spawn([cmd, ...args], {\n cwd: options.cwd,\n env: options.env,\n stdin: options.stdin,\n stdout: 'pipe',\n stderr: 'pipe',\n })\n\n let timedOut = false\n let timeoutHandle: Timer | undefined\n\n const exitPromise = proc.exited\n .then((code: number) => ({ code, timedOut }))\n .catch(() => ({\n code: -1,\n timedOut: true,\n }))\n\n if (options.timeout) {\n const timeoutPromise = new Promise<{\n code: number\n timedOut: boolean\n }>((resolve) => {\n timeoutHandle = setTimeout(() => {\n timedOut = true\n proc.kill('SIGTERM')\n resolve({ code: -1, timedOut: true })\n }, options.timeout)\n })\n\n const result = await Promise.race([exitPromise, timeoutPromise])\n\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n\n const [stdoutText, stderrText] = await Promise.all([\n new Response(proc.stdout ?? null).text(),\n new Response(proc.stderr ?? null).text(),\n ])\n\n return {\n exitCode: result.code,\n stdout: stdoutText,\n stderr: stderrText,\n success: result.code === 0 && !result.timedOut,\n timedOut: result.timedOut,\n }\n }\n\n let abortListener: (() => void) | undefined\n if (options.signal) {\n abortListener = () => {\n proc.kill('SIGTERM')\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n const { code, timedOut: timeout } = await exitPromise\n\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n\n const [stdoutText, stderrText] = await Promise.all([\n new Response(proc.stdout ?? null).text(),\n new Response(proc.stderr ?? null).text(),\n ])\n\n return {\n exitCode: code,\n stdout: stdoutText,\n stderr: stderrText,\n success: code === 0 && !timeout,\n timedOut: timeout,\n }\n },\n spawnSync(command, options: Omit<RuntimeSpawnOptions, 'signal'> = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n const timedOut = false\n const proc = Bun.spawnSync([cmd, ...args], {\n cwd: options.cwd,\n env: options.env,\n stdin: options.stdin,\n stdout: 'pipe',\n stderr: 'pipe',\n })\n\n const decoder = new TextDecoder('utf-8', {\n fatal: false,\n })\n const stdoutText = decoder.decode(proc.stdout ?? new Uint8Array())\n const stderrText = decoder.decode(proc.stderr ?? new Uint8Array())\n\n return {\n exitCode: proc.exitCode ?? 0,\n stdout: stdoutText,\n stderr: stderrText,\n success: (proc.exitCode ?? 0) === 0 && !timedOut,\n timedOut,\n }\n },\n async writeFile(path, data) {\n await Bun.write(path, data)\n },\n async appendFile(path, data) {\n const file = Bun.file(path)\n const writer = file.writer()\n writer.write(data)\n await writer.end()\n },\n createFileSink(path) {\n const writer = Bun.file(path).writer()\n return {\n write(data) {\n writer.write(data)\n },\n async flush() {\n await writer.flush()\n },\n async end() {\n await writer.end()\n },\n }\n },\n async readFile(path) {\n const file = Bun.file(path)\n const buffer = await file.arrayBuffer()\n return new Uint8Array(buffer)\n },\n async readFileAsBlob(path) {\n return Bun.file(path)\n },\n async exists(path) {\n return await Bun.file(path).exists()\n },\n async stat(path) {\n const stats = await Bun.file(path).stat()\n return { size: stats.size }\n },\n async deleteFile(path) {\n const fs = await import('node:fs/promises')\n try {\n await fs.unlink(path)\n } catch {\n // Ignore if not found\n }\n },\n async mkdir(path, options = {}) {\n const fs = await import('node:fs/promises')\n await fs.mkdir(path, options)\n },\n async readDir(path) {\n const fs = await import('node:fs/promises')\n const entries = await fs.readdir(path, { withFileTypes: true })\n return entries.map((entry) => ({\n name: entry.name,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n }))\n },\n async removeRecursive(path) {\n const fs = await import('node:fs/promises')\n await fs.rm(path, { recursive: true, force: true })\n },\n serve(config) {\n return Bun.serve({\n port: config.port,\n fetch: config.fetch,\n websocket: config.websocket as any,\n })\n },\n }\n}\n",
|
|
74
76
|
"/**\n * Runtime detection utilities.\n *\n * @module runtime/detection\n * @since 3.2.0\n */\n\nimport type { RuntimeKind } from './types'\n\n/**\n * Detect the current JavaScript runtime environment.\n * @internal\n */\nexport function getRuntimeKind(): RuntimeKind {\n if (typeof Bun !== 'undefined' && typeof Bun.spawn === 'function') {\n return 'bun'\n }\n const denoRuntime = (globalThis as any).Deno\n if (typeof denoRuntime !== 'undefined' && typeof denoRuntime?.version?.deno === 'string') {\n return 'deno'\n }\n if (typeof process !== 'undefined' && process.versions?.node) {\n return 'node'\n }\n return 'unknown'\n}\n\n/**\n * Get environment variables from the current runtime.\n * @public\n */\nexport function getRuntimeEnv(): Record<string, string | undefined> {\n const kind = getRuntimeKind()\n if (kind === 'bun' && typeof Bun !== 'undefined') {\n return Bun.env\n }\n if (kind === 'deno') {\n const deno = (globalThis as any).Deno\n if (deno?.env?.toObject) {\n return deno.env.toObject()\n }\n }\n if (typeof process !== 'undefined' && process.env) {\n return process.env\n }\n return {}\n}\n\n/**\n * Convert various data types to Uint8Array.\n * @internal\n */\nexport async function toUint8Array(\n data: Blob | Buffer | string | ArrayBuffer | Uint8Array\n): Promise<Uint8Array> {\n if (data instanceof Uint8Array) {\n return data\n }\n if (typeof data === 'string') {\n return new TextEncoder().encode(data)\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data)\n }\n if (typeof Buffer !== 'undefined' && data instanceof Buffer) {\n return new Uint8Array(data)\n }\n if (data instanceof Blob) {\n return new Uint8Array(await data.arrayBuffer())\n }\n return new Uint8Array()\n}\n",
|
|
75
77
|
"/**\n * Deno runtime adapter implementation.\n *\n * @module runtime/adapter-deno\n * @since 3.2.0\n */\n\nimport { toUint8Array } from './detection'\nimport type { RuntimeAdapter, RuntimeSpawnOptions } from './types'\n\n/**\n * Map stdio option to Deno-compatible value.\n * @internal\n */\nfunction mapDenoStdio(\n value: RuntimeSpawnOptions['stdout'] | undefined,\n defaultValue: 'piped' | 'null'\n): 'inherit' | 'piped' | 'null' {\n if (value === 'inherit') {\n return 'inherit'\n }\n if (value === 'ignore') {\n return 'null'\n }\n return defaultValue\n}\n\n/**\n * Create a RuntimeAdapter for the Deno runtime.\n * @internal\n */\nexport function createDenoAdapter(): RuntimeAdapter {\n return {\n kind: 'deno',\n spawn(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n const deno = (globalThis as any).Deno\n if (!deno?.Command) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for spawn()')\n }\n\n const proc = new deno.Command(cmd, {\n args,\n cwd: options.cwd,\n env: options.env,\n stdin: mapDenoStdio(options.stdin, 'piped'),\n stdout: mapDenoStdio(options.stdout, 'piped'),\n stderr: mapDenoStdio(options.stderr, 'piped'),\n }).spawn()\n\n let timeoutHandle: number | undefined\n let abortListener: (() => void) | undefined\n\n const exitedWithTimeout = new Promise<number>((resolve, reject) => {\n if (options.timeout) {\n timeoutHandle = setTimeout(() => {\n proc.kill('SIGTERM')\n reject(new Error('[RuntimeAdapter] Process timeout'))\n }, options.timeout) as unknown as number\n }\n\n if (options.signal) {\n abortListener = () => {\n proc.kill('SIGTERM')\n reject(new DOMException('Aborted', 'AbortError'))\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n proc.status\n .then((status: { code: number }) => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n resolve(status.code ?? 0)\n })\n .catch(reject)\n })\n\n return {\n exited: exitedWithTimeout,\n stdout: (proc.stdout as unknown as ReadableStream<Uint8Array>) ?? null,\n stderr: (proc.stderr as unknown as ReadableStream<Uint8Array>) ?? null,\n kill: (signal?: string | number) => {\n const killSignal = typeof signal === 'string' ? signal : 'SIGTERM'\n proc.kill(killSignal)\n },\n }\n },\n async spawnAndCollect(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n const deno = (globalThis as any).Deno\n if (!deno?.Command) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for spawn()')\n }\n\n const proc = new deno.Command(cmd, {\n args,\n cwd: options.cwd,\n env: options.env,\n stdout: 'piped',\n stderr: 'piped',\n stdin: mapDenoStdio(options.stdin, 'null'),\n }).spawn()\n\n let timedOut = false\n let timeoutHandle: number | undefined\n let abortListener: (() => void) | undefined\n\n const statusPromise = proc.status.then((status: { code: number; success: boolean }) => ({\n code: status.code ?? 0,\n timedOut,\n }))\n\n if (options.timeout) {\n const timeoutPromise = new Promise<{\n code: number\n timedOut: boolean\n }>((resolve) => {\n timeoutHandle = setTimeout(() => {\n timedOut = true\n proc.kill('SIGTERM')\n resolve({ code: -1, timedOut: true })\n }, options.timeout) as unknown as number\n })\n\n const raceResult = await Promise.race([statusPromise, timeoutPromise])\n\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n\n const [stdoutText, stderrText] = await Promise.all([\n new Response(proc.stdout ?? null).text(),\n new Response(proc.stderr ?? null).text(),\n ])\n\n return {\n exitCode: raceResult.code,\n stdout: stdoutText,\n stderr: stderrText,\n success: raceResult.code === 0 && !raceResult.timedOut,\n timedOut: raceResult.timedOut,\n }\n }\n\n if (options.signal) {\n abortListener = () => {\n proc.kill('SIGTERM')\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n const { code, timedOut: timeout } = await statusPromise\n\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n\n const [stdoutText, stderrText] = await Promise.all([\n new Response(proc.stdout ?? null).text(),\n new Response(proc.stderr ?? null).text(),\n ])\n\n return {\n exitCode: code,\n stdout: stdoutText,\n stderr: stderrText,\n success: code === 0 && !timeout,\n timedOut: timeout,\n }\n },\n spawnSync(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n const deno = (globalThis as any).Deno\n if (!deno?.Command) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for spawnSync()')\n }\n\n const result = new deno.Command(cmd, {\n args,\n cwd: options.cwd,\n env: options.env,\n stdin: mapDenoStdio(options.stdin, 'null'),\n }).outputSync()\n\n const decoder = new TextDecoder('utf-8', {\n fatal: false,\n })\n const stdoutText = decoder.decode(result.stdout ?? new Uint8Array())\n const stderrText = decoder.decode(result.stderr ?? new Uint8Array())\n\n return {\n exitCode: result.code ?? 0,\n stdout: stdoutText,\n stderr: stderrText,\n success: (result.code ?? 0) === 0,\n timedOut: false,\n }\n },\n async writeFile(path, data) {\n const deno = (globalThis as any).Deno\n if (!deno?.writeFile) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for writeFile()')\n }\n const payload = await toUint8Array(data)\n await deno.writeFile(path, payload)\n },\n async readFile(path) {\n const deno = (globalThis as any).Deno\n if (!deno?.readFile) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for readFile()')\n }\n return await deno.readFile(path)\n },\n async readFileAsBlob(path) {\n const buffer = await this.readFile(path)\n return new Blob([buffer as unknown as BlobPart])\n },\n async exists(path) {\n const deno = (globalThis as any).Deno\n if (!deno?.stat) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for exists()')\n }\n try {\n await deno.stat(path)\n return true\n } catch {\n return false\n }\n },\n async stat(path) {\n const deno = (globalThis as any).Deno\n if (!deno?.stat) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for stat()')\n }\n const stats = await deno.stat(path)\n return { size: stats.size }\n },\n async deleteFile(path) {\n const deno = (globalThis as any).Deno\n if (!deno?.remove) {\n throw new Error('[RuntimeAdapter] Deno runtime is required for deleteFile()')\n }\n try {\n await deno.remove(path)\n } catch {\n // Ignore if not found\n }\n },\n serve(_config) {\n throw new Error('[RuntimeAdapter] Bun runtime is required for Bun.serve()')\n },\n }\n}\n",
|
|
76
|
-
"/**\n * Node.js runtime adapter implementation.\n *\n * @module runtime/adapter-node\n * @since 3.2.0\n */\n\nimport { toUint8Array } from './detection'\nimport type { RuntimeAdapter, RuntimeSpawnOptions } from './types'\n\n/**\n * Create a RuntimeAdapter for the Node.js runtime.\n * @internal\n */\nexport function createNodeAdapter(): RuntimeAdapter {\n return {\n kind: 'node',\n spawn(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n // biome-ignore lint: node context\n const childProcess = require('node:child_process')\n // biome-ignore lint: node context\n const stream = require('node:stream')\n\n const stdioMap = (value: RuntimeSpawnOptions['stdout']) => {\n if (value === 'inherit') return 'inherit'\n if (value === 'ignore') return 'ignore'\n return 'pipe'\n }\n const stdinMap = (value: RuntimeSpawnOptions['stdin']) => {\n if (value === 'inherit') return 'inherit'\n if (value === 'ignore') return 'ignore'\n return 'pipe'\n }\n\n const child = childProcess.spawn(cmd, args, {\n cwd: options.cwd,\n env: options.env as Record<string, string>,\n stdio: [stdinMap(options.stdin), stdioMap(options.stdout), stdioMap(options.stderr)],\n }) as import('node:child_process').ChildProcess\n\n const toWeb = (streamReadable: NodeJS.ReadableStream | null) => {\n if (!streamReadable) return null\n const maybeWeb = streamReadable as unknown as ReadableStream<Uint8Array>\n if (typeof (maybeWeb as any).getReader === 'function') return maybeWeb\n return stream.Readable.toWeb(streamReadable as any) as unknown as ReadableStream<Uint8Array>\n }\n\n let timeoutHandle: NodeJS.Timeout | undefined\n let abortListener: (() => void) | undefined\n\n const exitedWithTimeout = new Promise<number>((resolve, reject) => {\n if (options.timeout) {\n timeoutHandle = setTimeout(() => {\n child.kill('SIGTERM')\n reject(new Error('[RuntimeAdapter] Process timeout'))\n }, options.timeout)\n }\n\n if (options.signal) {\n abortListener = () => {\n child.kill('SIGTERM')\n reject(new DOMException('Aborted', 'AbortError'))\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n child.on('error', reject)\n child.on('exit', (code) => {\n if (timeoutHandle) clearTimeout(timeoutHandle)\n if (abortListener && options.signal)\n options.signal.removeEventListener('abort', abortListener)\n resolve(code ?? 0)\n })\n })\n\n return {\n exited: exitedWithTimeout,\n stdout: toWeb(child.stdout),\n stderr: toWeb(child.stderr),\n kill: (signal?: string | number) => child.kill(signal as NodeJS.Signals | number),\n unref: () => {\n child.unref()\n },\n resourceUsage: async () => {\n try {\n const usage = (child as any).resourceUsage?.()\n if (!usage) return undefined\n return {\n cpuTime:\n usage.user && usage.system ? { user: usage.user, system: usage.system } : undefined,\n maxRSS: usage.maxRss,\n }\n } catch {\n return undefined\n }\n },\n }\n },\n async spawnAndCollect(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) throw new Error('[RuntimeAdapter] spawn() requires a command')\n\n // biome-ignore lint: node context\n const childProcess = require('node:child_process')\n\n return new Promise((resolve, reject) => {\n let timedOut = false\n let timeoutHandle: NodeJS.Timeout | undefined\n let abortListener: (() => void) | undefined\n\n const child = childProcess.spawn(cmd, args, {\n cwd: options.cwd,\n env: options.env as Record<string, string>,\n stdio: ['pipe', 'pipe', 'pipe'],\n }) as import('node:child_process').ChildProcess\n\n const stdoutChunks: Buffer[] = []\n const stderrChunks: Buffer[] = []\n\n child.stdout?.on('data', (chunk) => stdoutChunks.push(chunk))\n child.stderr?.on('data', (chunk) => stderrChunks.push(chunk))\n\n if (options.timeout) {\n timeoutHandle = setTimeout(() => {\n timedOut = true\n child.kill('SIGTERM')\n }, options.timeout)\n }\n\n if (options.signal) {\n abortListener = () => {\n child.kill('SIGTERM')\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n child.on('error', reject)\n child.on('exit', (code) => {\n if (timeoutHandle) clearTimeout(timeoutHandle)\n if (abortListener && options.signal)\n options.signal.removeEventListener('abort', abortListener)\n\n const stdout = Buffer.concat(stdoutChunks).toString('utf-8')\n const stderr = Buffer.concat(stderrChunks).toString('utf-8')\n\n resolve({\n exitCode: code ?? 0,\n stdout,\n stderr,\n success: (code ?? 0) === 0 && !timedOut,\n timedOut,\n })\n })\n })\n },\n spawnSync(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) throw new Error('[RuntimeAdapter] spawn() requires a command')\n\n // biome-ignore lint: node context\n const childProcess = require('node:child_process')\n\n const result = childProcess.spawnSync(cmd, args, {\n cwd: options.cwd,\n env: options.env as Record<string, string>,\n encoding: 'utf-8',\n })\n\n return {\n exitCode: result.status ?? 0,\n stdout: (result.stdout ?? '') as string,\n stderr: (result.stderr ?? '') as string,\n success: (result.status ?? 0) === 0,\n timedOut: (result.error as any)?.code === 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER',\n }\n },\n async writeFile(path, data) {\n const fs = await import('node:fs/promises')\n const payload = await toUint8Array(data)\n await fs.writeFile(path, payload)\n },\n async readFile(path) {\n const fs = await import('node:fs/promises')\n const buffer = await fs.readFile(path)\n return new Uint8Array(buffer)\n },\n async readFileAsBlob(path) {\n const buffer = await this.readFile(path)\n return new Blob([buffer as unknown as BlobPart])\n },\n async exists(path) {\n const fs = await import('node:fs/promises')\n try {\n await fs.access(path)\n return true\n } catch {\n return false\n }\n },\n async stat(path) {\n const fs = await import('node:fs/promises')\n const stats = await fs.stat(path)\n return { size: stats.size }\n },\n async deleteFile(path) {\n const fs = await import('node:fs/promises')\n try {\n await fs.unlink(path)\n } catch {\n // Ignore if not found\n }\n },\n serve(_config) {\n throw new Error('[RuntimeAdapter] Bun runtime is required for Bun.serve()')\n },\n }\n}\n",
|
|
78
|
+
"/**\n * Node.js runtime adapter implementation.\n *\n * @module runtime/adapter-node\n * @since 3.2.0\n */\n\nimport { toUint8Array } from './detection'\nimport type { RuntimeAdapter, RuntimeSpawnOptions } from './types'\n\n/**\n * Create a RuntimeAdapter for the Node.js runtime.\n * @internal\n */\nexport function createNodeAdapter(): RuntimeAdapter {\n return {\n kind: 'node',\n spawn(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n // biome-ignore lint: node context\n const childProcess = require('node:child_process')\n // biome-ignore lint: node context\n const stream = require('node:stream')\n\n const stdioMap = (value: RuntimeSpawnOptions['stdout']) => {\n if (value === 'inherit') {\n return 'inherit'\n }\n if (value === 'ignore') {\n return 'ignore'\n }\n return 'pipe'\n }\n const stdinMap = (value: RuntimeSpawnOptions['stdin']) => {\n if (value === 'inherit') {\n return 'inherit'\n }\n if (value === 'ignore') {\n return 'ignore'\n }\n return 'pipe'\n }\n\n const child = childProcess.spawn(cmd, args, {\n cwd: options.cwd,\n env: options.env as Record<string, string>,\n stdio: [stdinMap(options.stdin), stdioMap(options.stdout), stdioMap(options.stderr)],\n }) as import('node:child_process').ChildProcess\n\n const toWeb = (streamReadable: NodeJS.ReadableStream | null) => {\n if (!streamReadable) {\n return null\n }\n const maybeWeb = streamReadable as unknown as ReadableStream<Uint8Array>\n if (typeof (maybeWeb as any).getReader === 'function') {\n return maybeWeb\n }\n return stream.Readable.toWeb(streamReadable as any) as unknown as ReadableStream<Uint8Array>\n }\n\n let timeoutHandle: NodeJS.Timeout | undefined\n let abortListener: (() => void) | undefined\n\n const exitedWithTimeout = new Promise<number>((resolve, reject) => {\n if (options.timeout) {\n timeoutHandle = setTimeout(() => {\n child.kill('SIGTERM')\n reject(new Error('[RuntimeAdapter] Process timeout'))\n }, options.timeout)\n }\n\n if (options.signal) {\n abortListener = () => {\n child.kill('SIGTERM')\n reject(new DOMException('Aborted', 'AbortError'))\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n child.on('error', reject)\n child.on('exit', (code) => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n resolve(code ?? 0)\n })\n })\n\n return {\n exited: exitedWithTimeout,\n stdout: toWeb(child.stdout),\n stderr: toWeb(child.stderr),\n kill: (signal?: string | number) => child.kill(signal as NodeJS.Signals | number),\n unref: () => {\n child.unref()\n },\n resourceUsage: async () => {\n try {\n const usage = (child as any).resourceUsage?.()\n if (!usage) {\n return undefined\n }\n return {\n cpuTime:\n usage.user && usage.system ? { user: usage.user, system: usage.system } : undefined,\n maxRSS: usage.maxRss,\n }\n } catch {\n return undefined\n }\n },\n }\n },\n async spawnAndCollect(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n // biome-ignore lint: node context\n const childProcess = require('node:child_process')\n\n return new Promise((resolve, reject) => {\n let timedOut = false\n let timeoutHandle: NodeJS.Timeout | undefined\n let abortListener: (() => void) | undefined\n\n const child = childProcess.spawn(cmd, args, {\n cwd: options.cwd,\n env: options.env as Record<string, string>,\n stdio: ['pipe', 'pipe', 'pipe'],\n }) as import('node:child_process').ChildProcess\n\n const stdoutChunks: Buffer[] = []\n const stderrChunks: Buffer[] = []\n\n child.stdout?.on('data', (chunk) => stdoutChunks.push(chunk))\n child.stderr?.on('data', (chunk) => stderrChunks.push(chunk))\n\n if (options.timeout) {\n timeoutHandle = setTimeout(() => {\n timedOut = true\n child.kill('SIGTERM')\n }, options.timeout)\n }\n\n if (options.signal) {\n abortListener = () => {\n child.kill('SIGTERM')\n }\n options.signal.addEventListener('abort', abortListener)\n }\n\n child.on('error', reject)\n child.on('exit', (code) => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n if (abortListener && options.signal) {\n options.signal.removeEventListener('abort', abortListener)\n }\n\n const stdout = Buffer.concat(stdoutChunks).toString('utf-8')\n const stderr = Buffer.concat(stderrChunks).toString('utf-8')\n\n resolve({\n exitCode: code ?? 0,\n stdout,\n stderr,\n success: (code ?? 0) === 0 && !timedOut,\n timedOut,\n })\n })\n })\n },\n spawnSync(command, options = {}) {\n const [cmd, ...args] = command\n if (!cmd) {\n throw new Error('[RuntimeAdapter] spawn() requires a command')\n }\n\n // biome-ignore lint: node context\n const childProcess = require('node:child_process')\n\n const result = childProcess.spawnSync(cmd, args, {\n cwd: options.cwd,\n env: options.env as Record<string, string>,\n encoding: 'utf-8',\n })\n\n return {\n exitCode: result.status ?? 0,\n stdout: (result.stdout ?? '') as string,\n stderr: (result.stderr ?? '') as string,\n success: (result.status ?? 0) === 0,\n timedOut: (result.error as any)?.code === 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER',\n }\n },\n async writeFile(path, data) {\n const fs = await import('node:fs/promises')\n const payload = await toUint8Array(data)\n await fs.writeFile(path, payload)\n },\n async appendFile(path, data) {\n const fs = await import('node:fs/promises')\n const payload = await toUint8Array(data)\n await fs.appendFile(path, payload)\n },\n createFileSink(path) {\n // biome-ignore lint: node context\n const fs = require('node:fs')\n const stream = fs.createWriteStream(path, { flags: 'a' })\n return {\n write(data) {\n stream.write(data)\n },\n async flush() {\n return new Promise((resolve, reject) => {\n stream.once('error', reject)\n stream.write('', (err: Error | null) => {\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n },\n async end() {\n return new Promise((resolve, reject) => {\n stream.once('error', reject)\n stream.end(() => resolve())\n })\n },\n }\n },\n async readFile(path) {\n const fs = await import('node:fs/promises')\n const buffer = await fs.readFile(path)\n return new Uint8Array(buffer)\n },\n async readFileAsBlob(path) {\n const buffer = await this.readFile(path)\n return new Blob([buffer as unknown as BlobPart])\n },\n async exists(path) {\n const fs = await import('node:fs/promises')\n try {\n await fs.access(path)\n return true\n } catch {\n return false\n }\n },\n async stat(path) {\n const fs = await import('node:fs/promises')\n const stats = await fs.stat(path)\n return { size: stats.size }\n },\n async deleteFile(path) {\n const fs = await import('node:fs/promises')\n try {\n await fs.unlink(path)\n } catch {\n // Ignore if not found\n }\n },\n async mkdir(path, options = {}) {\n const fs = await import('node:fs/promises')\n await fs.mkdir(path, options)\n },\n async readDir(path) {\n const fs = await import('node:fs/promises')\n const entries = await fs.readdir(path, { withFileTypes: true })\n return entries.map((entry) => ({\n name: entry.name,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n }))\n },\n async removeRecursive(path) {\n const fs = await import('node:fs/promises')\n await fs.rm(path, { recursive: true, force: true })\n },\n serve(_config) {\n throw new Error('[RuntimeAdapter] Bun runtime is required for Bun.serve()')\n },\n }\n}\n",
|
|
77
79
|
"/**\n * Unknown runtime adapter implementation (fallback).\n *\n * @module runtime/adapter-unknown\n * @since 3.2.0\n */\n\nimport type { RuntimeAdapter } from './types'\n\n/**\n * Create a RuntimeAdapter for unsupported runtimes.\n * All methods throw with descriptive error messages.\n * @internal\n */\nexport function createUnknownAdapter(): RuntimeAdapter {\n return {\n kind: 'unknown',\n spawn() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for spawn()')\n },\n async spawnAndCollect() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for spawnAndCollect()')\n },\n spawnSync() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for spawnSync()')\n },\n async writeFile() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for writeFile()')\n },\n async readFile() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for readFile()')\n },\n async readFileAsBlob() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for readFileAsBlob()')\n },\n async exists() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for exists()')\n },\n async stat() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for stat()')\n },\n async deleteFile() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for deleteFile()')\n },\n serve() {\n throw new Error('[RuntimeAdapter] Unsupported runtime for serve()')\n },\n }\n}\n",
|
|
78
|
-
"/**\n * Runtime archive adapter implementations.\n *\n * @module runtime/archive\n * @since 3.2.0\n */\n\nimport { getRuntimeKind } from './detection'\nimport type {\n ArchiveCreateOptions,\n ArchiveFromDirectoryOptions,\n RuntimeArchiveAdapter,\n} from './types'\n\n// ============ Bun Archive Adapter ============\n\n/**\n * 建立 Bun 原生封裝 adapter (使用 Bun.Tar)\n * @internal\n */\nfunction createBunArchiveAdapter(): RuntimeArchiveAdapter {\n return {\n async create(entries, _options = {}) {\n // Use globalThis to avoid Vite import errors\n const B = (globalThis as any).Bun\n if (!B) throw new Error('[RuntimeArchiveAdapter] Bun global not found')\n if (!B.Tar) throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n\n const tar = new B.Tar()\n for (const [path, data] of Object.entries(entries)) {\n // Handle different data types\n let content: Uint8Array\n if (data instanceof Uint8Array) {\n content = data\n } else if (typeof data === 'string') {\n content = new TextEncoder().encode(data)\n } else if (data instanceof ArrayBuffer) {\n content = new Uint8Array(data)\n } else if (data instanceof Blob) {\n content = new Uint8Array(await data.arrayBuffer())\n } else {\n throw new Error(`[RuntimeArchiveAdapter] Unsupported data type for path: ${path}`)\n }\n tar.append(path, content)\n }\n return new Uint8Array(await new Response(tar.out).arrayBuffer())\n },\n\n async extract(_data, _targetDir, _options = {}) {\n const B = (globalThis as any).Bun\n if (!B?.Tar) throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n throw new Error('[RuntimeArchiveAdapter] Tar extraction not yet implemented via Bun.Tar')\n },\n\n async list(_data, _glob?) {\n const B = (globalThis as any).Bun\n if (!B?.Tar) throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n throw new Error('[RuntimeArchiveAdapter] Tar listing not yet implemented via Bun.Tar')\n },\n\n async readFile(_data, _filePath) {\n const B = (globalThis as any).Bun\n if (!B?.Tar) throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n throw new Error('[RuntimeArchiveAdapter] Tar readFile not yet implemented via Bun.Tar')\n },\n }\n}\n\n// ============ Node.js Archive Adapter ============\n\n/**\n * 建立 Node.js 封裝 adapter\n * @internal\n */\nfunction createNodeArchiveAdapter(): RuntimeArchiveAdapter {\n return {\n async create(_entries, _options = {}) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive creation requires external dependencies'\n )\n },\n async extract(_data, _targetDir, _options = {}) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive extraction requires external dependencies'\n )\n },\n async list(_data, _glob?) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive listing requires external dependencies'\n )\n },\n async readFile(_data, _filePath) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive readFile requires external dependencies'\n )\n },\n }\n}\n\n// ============ Unsupported Archive Adapter ============\n\n/**\n * 建立不支援的封裝 adapter\n * @internal\n */\nfunction createUnsupportedArchiveAdapter(message: string): RuntimeArchiveAdapter {\n return {\n async create() {\n throw new Error(message)\n },\n async extract() {\n throw new Error(message)\n },\n async list() {\n throw new Error(message)\n },\n async readFile() {\n throw new Error(message)\n },\n }\n}\n\n// ============ Singleton ============\n\nlet archiveAdapter: RuntimeArchiveAdapter | null = null\n\n/**\n * 取得封裝操作 adapter\n * @public\n */\nexport function getArchiveAdapter(): RuntimeArchiveAdapter {\n if (archiveAdapter) {\n return archiveAdapter\n }\n const kind = getRuntimeKind()\n switch (kind) {\n case 'bun':\n archiveAdapter = createBunArchiveAdapter()\n break\n case 'node':\n archiveAdapter = createNodeArchiveAdapter()\n break\n default:\n archiveAdapter = createUnsupportedArchiveAdapter(\n `[RuntimeArchiveAdapter] Archive operations unavailable in unknown runtime: ${kind}`\n )\n }\n return archiveAdapter\n}\n\n/**\n * 使用 Node.js readdir 遞迴掃描目錄(Fallback 實作)\n * @internal\n */\nasync function scanDirectoryNode(dir: string): Promise<Record<string, Uint8Array>> {\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const fs = await eval('import(\"node:fs/promises\")')\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const path = await eval('import(\"node:path\")')\n\n const { readdir, readFile, stat } = fs\n const { join } = path\n const entries: Record<string, Uint8Array> = {}\n\n async function walk(currentDir: string, base: string) {\n const files = await readdir(currentDir)\n for (const file of files) {\n const fullPath = join(currentDir, file)\n const relativePath = join(base, file)\n const s = await stat(fullPath)\n\n if (s.isDirectory()) {\n await walk(fullPath, relativePath)\n } else {\n entries[relativePath] = new Uint8Array(await readFile(fullPath))\n }\n }\n }\n\n await walk(dir, '')\n return entries\n}\n\n/**\n * 將目錄封裝為歸檔檔案\n * @public\n */\nexport async function archiveFromDirectory(\n dirPath: string,\n archivePath: string,\n options: ArchiveFromDirectoryOptions = {}\n): Promise<Uint8Array> {\n // Validate archivePath\n if (!archivePath) {\n throw new Error('archivePath cannot be empty')\n }\n if (!archivePath.endsWith('.tar.gz') && !archivePath.endsWith('.tgz')) {\n throw new Error('archivePath must end with .tar.gz or .tgz')\n }\n\n const kind = getRuntimeKind()\n const createOptions: ArchiveCreateOptions = {\n compress: options.compress === 'gzip' ? 'gzip' : undefined,\n level: options.level,\n }\n\n let entries: Record<string, Uint8Array> = {}\n\n if (kind === 'bun') {\n const B = (globalThis as any).Bun\n const glob = new B.Glob(options.glob ?? '**/*')\n for await (const file of glob.scan(dirPath)) {\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const pathMod = await eval('import(\"node:path\")')\n const filePath = pathMod.join(dirPath, file)\n entries[file] = new Uint8Array(await B.file(filePath).arrayBuffer())\n }\n } else {\n entries = await scanDirectoryNode(dirPath)\n }\n\n const adapter = getArchiveAdapter()\n const archiveData = await adapter.create(entries, createOptions)\n\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const fs = await eval('import(\"node:fs/promises\")')\n await fs.writeFile(archivePath, archiveData)\n\n return archiveData\n}\n",
|
|
80
|
+
"/**\n * Runtime archive adapter implementations.\n *\n * @module runtime/archive\n * @since 3.2.0\n */\n\nimport { getRuntimeKind } from './detection'\nimport type {\n ArchiveCreateOptions,\n ArchiveFromDirectoryOptions,\n RuntimeArchiveAdapter,\n} from './types'\n\n// ============ Bun Archive Adapter ============\n\n/**\n * 建立 Bun 原生封裝 adapter (使用 Bun.Tar)\n * @internal\n */\nfunction createBunArchiveAdapter(): RuntimeArchiveAdapter {\n return {\n async create(entries, _options = {}) {\n // Use globalThis to avoid Vite import errors\n const B = (globalThis as any).Bun\n if (!B) {\n throw new Error('[RuntimeArchiveAdapter] Bun global not found')\n }\n if (!B.Tar) {\n throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n }\n\n const tar = new B.Tar()\n for (const [path, data] of Object.entries(entries)) {\n // Handle different data types\n let content: Uint8Array\n if (data instanceof Uint8Array) {\n content = data\n } else if (typeof data === 'string') {\n content = new TextEncoder().encode(data)\n } else if (data instanceof ArrayBuffer) {\n content = new Uint8Array(data)\n } else if (data instanceof Blob) {\n content = new Uint8Array(await data.arrayBuffer())\n } else {\n throw new Error(`[RuntimeArchiveAdapter] Unsupported data type for path: ${path}`)\n }\n tar.append(path, content)\n }\n return new Uint8Array(await new Response(tar.out).arrayBuffer())\n },\n\n async extract(_data, _targetDir, _options = {}) {\n const B = (globalThis as any).Bun\n if (!B?.Tar) {\n throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n }\n throw new Error('[RuntimeArchiveAdapter] Tar extraction not yet implemented via Bun.Tar')\n },\n\n async list(_data, _glob?) {\n const B = (globalThis as any).Bun\n if (!B?.Tar) {\n throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n }\n throw new Error('[RuntimeArchiveAdapter] Tar listing not yet implemented via Bun.Tar')\n },\n\n async readFile(_data, _filePath) {\n const B = (globalThis as any).Bun\n if (!B?.Tar) {\n throw new Error('[RuntimeArchiveAdapter] Bun.Tarball is not available')\n }\n throw new Error('[RuntimeArchiveAdapter] Tar readFile not yet implemented via Bun.Tar')\n },\n }\n}\n\n// ============ Node.js Archive Adapter ============\n\n/**\n * 建立 Node.js 封裝 adapter\n * @internal\n */\nfunction createNodeArchiveAdapter(): RuntimeArchiveAdapter {\n return {\n async create(_entries, _options = {}) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive creation requires external dependencies'\n )\n },\n async extract(_data, _targetDir, _options = {}) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive extraction requires external dependencies'\n )\n },\n async list(_data, _glob?) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive listing requires external dependencies'\n )\n },\n async readFile(_data, _filePath) {\n throw new Error(\n '[RuntimeArchiveAdapter] Node.js archive readFile requires external dependencies'\n )\n },\n }\n}\n\n// ============ Unsupported Archive Adapter ============\n\n/**\n * 建立不支援的封裝 adapter\n * @internal\n */\nfunction createUnsupportedArchiveAdapter(message: string): RuntimeArchiveAdapter {\n return {\n async create() {\n throw new Error(message)\n },\n async extract() {\n throw new Error(message)\n },\n async list() {\n throw new Error(message)\n },\n async readFile() {\n throw new Error(message)\n },\n }\n}\n\n// ============ Singleton ============\n\nlet archiveAdapter: RuntimeArchiveAdapter | null = null\n\n/**\n * 取得封裝操作 adapter\n * @public\n */\nexport function getArchiveAdapter(): RuntimeArchiveAdapter {\n if (archiveAdapter) {\n return archiveAdapter\n }\n const kind = getRuntimeKind()\n switch (kind) {\n case 'bun':\n archiveAdapter = createBunArchiveAdapter()\n break\n case 'node':\n archiveAdapter = createNodeArchiveAdapter()\n break\n default:\n archiveAdapter = createUnsupportedArchiveAdapter(\n `[RuntimeArchiveAdapter] Archive operations unavailable in unknown runtime: ${kind}`\n )\n }\n return archiveAdapter\n}\n\n/**\n * 使用 Node.js readdir 遞迴掃描目錄(Fallback 實作)\n * @internal\n */\nasync function scanDirectoryNode(dir: string): Promise<Record<string, Uint8Array>> {\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const fs = await eval('import(\"node:fs/promises\")')\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const path = await eval('import(\"node:path\")')\n\n const { readdir, readFile, stat } = fs\n const { join } = path\n const entries: Record<string, Uint8Array> = {}\n\n async function walk(currentDir: string, base: string) {\n const files = await readdir(currentDir)\n for (const file of files) {\n const fullPath = join(currentDir, file)\n const relativePath = join(base, file)\n const s = await stat(fullPath)\n\n if (s.isDirectory()) {\n await walk(fullPath, relativePath)\n } else {\n entries[relativePath] = new Uint8Array(await readFile(fullPath))\n }\n }\n }\n\n await walk(dir, '')\n return entries\n}\n\n/**\n * 將目錄封裝為歸檔檔案\n * @public\n */\nexport async function archiveFromDirectory(\n dirPath: string,\n archivePath: string,\n options: ArchiveFromDirectoryOptions = {}\n): Promise<Uint8Array> {\n // Validate archivePath\n if (!archivePath) {\n throw new Error('archivePath cannot be empty')\n }\n if (!archivePath.endsWith('.tar.gz') && !archivePath.endsWith('.tgz')) {\n throw new Error('archivePath must end with .tar.gz or .tgz')\n }\n\n const kind = getRuntimeKind()\n const createOptions: ArchiveCreateOptions = {\n compress: options.compress === 'gzip' ? 'gzip' : undefined,\n level: options.level,\n }\n\n let entries: Record<string, Uint8Array> = {}\n\n if (kind === 'bun') {\n const B = (globalThis as any).Bun\n const glob = new B.Glob(options.glob ?? '**/*')\n for await (const file of glob.scan(dirPath)) {\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const pathMod = await eval('import(\"node:path\")')\n const filePath = pathMod.join(dirPath, file)\n entries[file] = new Uint8Array(await B.file(filePath).arrayBuffer())\n }\n } else {\n entries = await scanDirectoryNode(dirPath)\n }\n\n const adapter = getArchiveAdapter()\n const archiveData = await adapter.create(entries, createOptions)\n\n // biome-ignore lint/security/noGlobalEval: hide from Vite\n const fs = await eval('import(\"node:fs/promises\")')\n await fs.writeFile(archivePath, archiveData)\n\n return archiveData\n}\n",
|
|
79
81
|
"/**\n * Runtime compression adapter implementations.\n *\n * Provides unified gzip/deflate compression across Bun and Node.js runtimes.\n * Bun uses native C++ implementations (Bun.gzipSync etc.) for 2-5x better performance.\n * Node.js falls back to the standard node:zlib module.\n *\n * @module runtime/compression\n * @since 3.2.0\n */\n\nimport { getRuntimeKind } from './detection'\nimport type { RuntimeCompressionAdapter } from './types'\n\n// ============ Bun Compression Adapter ============\n\n/**\n * 建立 Bun 原生壓縮 adapter\n * 使用 Bun.gzipSync / Bun.gunzipSync / Bun.deflateSync / Bun.inflateSync\n * @internal\n */\nfunction createBunCompressionAdapter(): RuntimeCompressionAdapter {\n // Bun 壓縮等級型別\n type BunLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -1\n\n // Bun API 要求 Uint8Array<ArrayBuffer>,確保型別相容\n function toBunBuffer(data: Uint8Array): Uint8Array<ArrayBuffer> {\n const buf = new ArrayBuffer(data.byteLength)\n const view = new Uint8Array(buf)\n view.set(data)\n return view\n }\n\n function toLevel(level: number): BunLevel {\n return Math.max(-1, Math.min(12, level)) as BunLevel\n }\n\n return {\n gzipSync(data, options = {}) {\n return Bun.gzipSync(toBunBuffer(data), {\n level: toLevel(options.level ?? 6),\n })\n },\n\n gunzipSync(data) {\n return Bun.gunzipSync(toBunBuffer(data))\n },\n\n deflateSync(data, options = {}) {\n return Bun.deflateSync(toBunBuffer(data), {\n level: toLevel(options.level ?? 6),\n })\n },\n\n inflateSync(data) {\n return Bun.inflateSync(toBunBuffer(data))\n },\n\n async gzip(data, options = {}) {\n return Bun.gzipSync(toBunBuffer(data), {\n level: toLevel(options.level ?? 6),\n })\n },\n\n async gunzip(data) {\n return Bun.gunzipSync(toBunBuffer(data))\n },\n }\n}\n\n// ============ Node.js Compression Adapter ============\n\n/**\n * 建立 Node.js 壓縮 adapter(使用 node:zlib)\n * @internal\n */\nfunction createNodeCompressionAdapter(): RuntimeCompressionAdapter {\n return {\n gzipSync(data, options = {}) {\n // biome-ignore lint: node context\n const zlib = require('node:zlib')\n const result = zlib.gzipSync(Buffer.from(data), {\n level: options.level ?? 6,\n })\n return new Uint8Array(result)\n },\n\n gunzipSync(data) {\n // biome-ignore lint: node context\n const zlib = require('node:zlib')\n const result = zlib.gunzipSync(Buffer.from(data))\n return new Uint8Array(result)\n },\n\n deflateSync(data, options = {}) {\n // biome-ignore lint: node context\n const zlib = require('node:zlib')\n const result = zlib.deflateSync(Buffer.from(data), {\n level: options.level ?? 6,\n })\n return new Uint8Array(result)\n },\n\n inflateSync(data) {\n // biome-ignore lint: node context\n const zlib = require('node:zlib')\n const result = zlib.inflateSync(Buffer.from(data))\n return new Uint8Array(result)\n },\n\n async gzip(data, options = {}) {\n const zlib = await import('node:zlib')\n const { promisify } = await import('node:util')\n const gzipAsync = promisify(zlib.gzip)\n const result = await gzipAsync(Buffer.from(data), {\n level: options.level ?? 6,\n })\n return new Uint8Array(result)\n },\n\n async gunzip(data) {\n const zlib = await import('node:zlib')\n const { promisify } = await import('node:util')\n const gunzipAsync = promisify(zlib.gunzip)\n const result = await gunzipAsync(Buffer.from(data))\n return new Uint8Array(result)\n },\n }\n}\n\n// ============ Unsupported Compression Adapter ============\n\n/**\n * 建立不支援的壓縮 adapter(Deno / Unknown runtime 共用)\n * @internal\n */\nfunction createUnsupportedCompressionAdapter(message: string): RuntimeCompressionAdapter {\n return {\n gzipSync() {\n throw new Error(message)\n },\n gunzipSync() {\n throw new Error(message)\n },\n deflateSync() {\n throw new Error(message)\n },\n inflateSync() {\n throw new Error(message)\n },\n async gzip() {\n throw new Error(message)\n },\n async gunzip() {\n throw new Error(message)\n },\n }\n}\n\n// ============ Singleton ============\n\nlet compressionAdapter: RuntimeCompressionAdapter | null = null\n\n/**\n * 取得壓縮操作 adapter(依運行時自動選擇最佳實作)\n *\n * - Bun: 使用原生 C++ 壓縮(2-5x 更快)\n * - Node.js: 使用 node:zlib\n * - Deno/Unknown: 拋出錯誤\n *\n * @public\n */\nexport function getCompressionAdapter(): RuntimeCompressionAdapter {\n if (compressionAdapter) {\n return compressionAdapter\n }\n const kind = getRuntimeKind()\n switch (kind) {\n case 'bun':\n compressionAdapter = createBunCompressionAdapter()\n break\n case 'node':\n compressionAdapter = createNodeCompressionAdapter()\n break\n case 'deno':\n compressionAdapter = createUnsupportedCompressionAdapter(\n '[RuntimeCompressionAdapter] Deno compression support not yet implemented'\n )\n break\n default:\n compressionAdapter = createUnsupportedCompressionAdapter(\n '[RuntimeCompressionAdapter] Compression unavailable in unknown runtime'\n )\n }\n return compressionAdapter\n}\n",
|
|
80
82
|
"/**\n * Runtime markdown adapter implementations.\n *\n * Provides unified Markdown -> HTML rendering across Bun and Node.js runtimes.\n * Bun uses the native C++ Markdown parser (Bun.markdown) for 10-100x better performance.\n * Node.js falls back to the `marked` library (lazy-loaded optional dependency).\n *\n * @module runtime/markdown\n * @since 3.3.0\n */\n\nimport { getRuntimeKind } from './detection'\nimport type {\n MarkdownRenderCallbacks,\n MarkdownRenderOptions,\n RuntimeMarkdownAdapter,\n} from './types'\n\n// ============ Default HTML Render Callbacks ============\n\n/**\n * 建立預設的 HTML 渲染回調集合。\n *\n * 提供完整的 HTML 元素生成回調,產生與 `html()` 相同的 HTML 輸出。\n * 使用者可透過覆寫個別回調來自訂特定元素的渲染行為(例如 XSS 防護、\n * 自訂 CSS class 等),同時保留其他元素的預設 HTML 渲染。\n *\n * @param overrides - 要覆寫的回調。未指定的回調使用預設 HTML 渲染。\n * @returns 完整的 MarkdownRenderCallbacks 物件\n *\n * @example\n * ```typescript\n * // 自訂 link 和 html 渲染(XSS 防護)\n * const callbacks = createHtmlRenderCallbacks({\n * html: (raw) => escapeHtml(raw),\n * link: (content, { href }) => `<a href=\"${href}\" rel=\"noopener\">${content}</a>`,\n * })\n * const result = adapter.render(markdown, callbacks)\n * ```\n *\n * @public\n */\nexport function createHtmlRenderCallbacks(\n overrides: Partial<MarkdownRenderCallbacks> = {}\n): MarkdownRenderCallbacks {\n const defaults: MarkdownRenderCallbacks = {\n heading: (content, opts) => `<h${opts.level}>${content}</h${opts.level}>\\n`,\n paragraph: (content) => `<p>${content}</p>\\n`,\n code: (code, opts) => {\n const lang = opts.language ? ` class=\"language-${opts.language}\"` : ''\n return `<pre><code${lang}>${code}</code></pre>\\n`\n },\n codespan: (code) => `<code>${code}</code>`,\n strong: (content) => `<strong>${content}</strong>`,\n em: (content) => `<em>${content}</em>`,\n del: (content) => `<del>${content}</del>`,\n link: (content, opts) => {\n const titleAttr = opts.title ? ` title=\"${opts.title}\"` : ''\n return `<a href=\"${opts.href}\"${titleAttr}>${content}</a>`\n },\n image: (alt, opts) => {\n const titleAttr = opts.title ? ` title=\"${opts.title}\"` : ''\n return `<img src=\"${opts.src}\" alt=\"${alt}\"${titleAttr} />`\n },\n list: (content, opts) => {\n if (opts.ordered) {\n const start = opts.start && opts.start !== 1 ? ` start=\"${opts.start}\"` : ''\n return `<ol${start}>\\n${content}</ol>\\n`\n }\n return `<ul>\\n${content}</ul>\\n`\n },\n listItem: (content) => `<li>${content}</li>\\n`,\n blockquote: (content) => `<blockquote>\\n${content}</blockquote>\\n`,\n table: (content) => `<table>\\n${content}</table>\\n`,\n hr: () => '<hr />\\n',\n html: (rawHtml) => rawHtml,\n }\n\n return { ...defaults, ...overrides }\n}\n\n// ============ Callback Adapter ============\n\n/**\n * 將 MarkdownRenderCallbacks 轉換為 Bun.markdown.render 的 RenderCallbacks 格式。\n *\n * 我們的介面設計與 Bun 原生回調高度相似但有微小差異(如 code 的 meta 參數可選性),\n * 此函式負責建立轉接層以確保型別安全。\n *\n * @internal\n */\nfunction toBunRenderCallbacks(\n callbacks: MarkdownRenderCallbacks\n): Record<string, (...args: unknown[]) => string | null | undefined> {\n const result: Record<string, (...args: unknown[]) => string | null | undefined> = {}\n\n if (callbacks.heading) {\n const cb = callbacks.heading\n result.heading = (children: unknown, meta: unknown) => {\n const m = meta as { level: number }\n return cb(children as string, { level: m.level })\n }\n }\n\n if (callbacks.link) {\n const cb = callbacks.link\n result.link = (children: unknown, meta: unknown) => {\n const m = meta as { href: string; title?: string }\n return cb(children as string, { href: m.href, title: m.title })\n }\n }\n\n if (callbacks.code) {\n const cb = callbacks.code\n result.code = (children: unknown, meta?: unknown) => {\n const m = (meta as { language?: string } | undefined) ?? {}\n return cb(children as string, { language: m.language })\n }\n }\n\n if (callbacks.codespan) {\n const cb = callbacks.codespan\n result.codespan = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.image) {\n const cb = callbacks.image\n result.image = (alt: unknown, meta: unknown) => {\n const m = meta as { src: string; title?: string }\n return cb(alt as string, { src: m.src, title: m.title })\n }\n }\n\n if (callbacks.html) {\n const cb = callbacks.html\n result.html = (rawHtml: unknown) => cb(rawHtml as string)\n }\n\n if (callbacks.paragraph) {\n const cb = callbacks.paragraph\n result.paragraph = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.strong) {\n const cb = callbacks.strong\n result.strong = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.em) {\n const cb = callbacks.em\n result.em = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.del) {\n const cb = callbacks.del\n result.del = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.list) {\n const cb = callbacks.list\n result.list = (children: unknown, meta: unknown) => {\n const m = meta as { ordered: boolean; start?: number }\n return cb(children as string, { ordered: m.ordered, start: m.start })\n }\n }\n\n if (callbacks.listItem) {\n const cb = callbacks.listItem\n result.listItem = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.blockquote) {\n const cb = callbacks.blockquote\n result.blockquote = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.table) {\n const cb = callbacks.table\n result.table = (children: unknown) => cb(children as string)\n }\n\n if (callbacks.hr) {\n const cb = callbacks.hr\n result.hr = () => cb()\n }\n\n return result\n}\n\n// ============ Bun Markdown Adapter ============\n\n/**\n * 建立 Bun 原生 Markdown adapter(使用 Bun.markdown API)\n * @internal\n */\nfunction createBunMarkdownAdapter(): RuntimeMarkdownAdapter {\n // 驗證 Bun.markdown 是否可用\n if (\n typeof Bun === 'undefined' ||\n typeof Bun.markdown !== 'object' ||\n typeof Bun.markdown.html !== 'function'\n ) {\n throw new Error('[RuntimeMarkdownAdapter] Bun.markdown is not available in this Bun version')\n }\n\n const bunMd = Bun.markdown\n\n return {\n html(markdown: string, _options?: MarkdownRenderOptions): string {\n if (!markdown) {\n return ''\n }\n return bunMd.html(markdown)\n },\n\n render(markdown: string, callbacks?: MarkdownRenderCallbacks): string {\n if (!markdown) {\n return ''\n }\n if (!callbacks) {\n return bunMd.render(markdown)\n }\n // 透過轉接層將我們的回調格式映射到 Bun 原生格式\n const bunCallbacks = toBunRenderCallbacks(callbacks)\n return bunMd.render(markdown, bunCallbacks as unknown as Parameters<typeof bunMd.render>[1])\n },\n\n react(markdown: string): unknown | null {\n if (!markdown) {\n return null\n }\n return bunMd.react(markdown)\n },\n\n get isNative() {\n return true\n },\n }\n}\n\n// ============ Fallback Markdown Adapter (Node.js) ============\n\n/**\n * 建立 Node.js Fallback Markdown adapter。\n * 使用 marked 函式庫進行延遲載入(optional dependency)。\n *\n * marked 不在 core 的硬性依賴中,僅在 Node.js 環境下需要。\n * 若 marked 不可用,html() 和 render() 會拋出錯誤。\n *\n * @internal\n */\nfunction createFallbackMarkdownAdapter(): RuntimeMarkdownAdapter {\n // 延遲載入 marked(避免型別依賴問題)\n // biome-ignore lint/suspicious/noExplicitAny: marked 為 optional dependency,無法保證型別\n let markedModule: any | null = null\n\n function loadMarkedSync(): {\n marked: { parse: (...args: unknown[]) => unknown }\n Renderer: new () => Record<string, unknown>\n } {\n if (!markedModule) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n markedModule = require('marked')\n } catch {\n throw new Error(\n '[RuntimeMarkdownAdapter] Node.js markdown support requires \"marked\" package. ' +\n 'Install: npm install --save marked'\n )\n }\n }\n return markedModule as {\n marked: { parse: (...args: unknown[]) => unknown }\n Renderer: new () => Record<string, unknown>\n }\n }\n\n return {\n html(markdown: string, _options?: MarkdownRenderOptions): string {\n if (!markdown) {\n return ''\n }\n const { marked } = loadMarkedSync()\n const result = marked.parse(markdown, { async: false })\n return result as string\n },\n\n render(markdown: string, callbacks?: MarkdownRenderCallbacks): string {\n if (!markdown) {\n return ''\n }\n const { marked, Renderer } = loadMarkedSync()\n\n if (!callbacks) {\n // 無回調時回傳純文字(去除 HTML 標籤)\n const html = marked.parse(markdown, { async: false }) as string\n return html.replace(/<[^>]*>/g, '')\n }\n\n // 建立自訂 Renderer 並映射回調\n // biome-ignore lint/suspicious/noExplicitAny: marked Renderer 型別為 dynamic\n const renderer = new Renderer() as any\n\n if (callbacks.heading) {\n const cb = callbacks.heading\n renderer.heading = (text: string, level: number) => cb(text, { level })\n }\n\n if (callbacks.link) {\n const cb = callbacks.link\n renderer.link = (href: string, title: string | null, text: string) =>\n cb(text, { href, title: title ?? undefined })\n }\n\n if (callbacks.code) {\n const cb = callbacks.code\n renderer.code = (code: string, language: string | undefined) => cb(code, { language })\n }\n\n if (callbacks.image) {\n const cb = callbacks.image\n renderer.image = (href: string, title: string | null, text: string) =>\n cb(text, { src: href, title: title ?? undefined })\n }\n\n if (callbacks.html) {\n const cb = callbacks.html\n renderer.html = (html: string) => cb(html)\n }\n\n if (callbacks.paragraph) {\n const cb = callbacks.paragraph\n renderer.paragraph = (text: string) => cb(text)\n }\n\n if (callbacks.strong) {\n const cb = callbacks.strong\n renderer.strong = (text: string) => cb(text)\n }\n\n if (callbacks.em) {\n const cb = callbacks.em\n renderer.em = (text: string) => cb(text)\n }\n\n const result = marked.parse(markdown, { renderer, async: false })\n return result as string\n },\n\n react(_markdown: string): unknown | null {\n // Fallback 環境不支援 react()\n return null\n },\n\n get isNative() {\n return false\n },\n }\n}\n\n// ============ Unsupported Markdown Adapter ============\n\n/**\n * 建立不支援的 Markdown adapter(Deno / Unknown runtime 共用)\n * @internal\n */\nfunction createUnsupportedMarkdownAdapter(message: string): RuntimeMarkdownAdapter {\n return {\n html() {\n throw new Error(message)\n },\n render() {\n throw new Error(message)\n },\n react() {\n throw new Error(message)\n },\n get isNative() {\n return false\n },\n }\n}\n\n// ============ Singleton ============\n\nlet markdownAdapter: RuntimeMarkdownAdapter | null = null\n\n/**\n * 取得 Markdown 操作 adapter(依運行時自動選擇最佳實作)\n *\n * - Bun: 使用原生 C++ Markdown 解析器(10-100x 更快)\n * - Node.js: 使用 marked 函式庫(延遲載入 optional dependency)\n * - Deno/Unknown: 拋出錯誤\n *\n * @public\n */\nexport function getMarkdownAdapter(): RuntimeMarkdownAdapter {\n if (markdownAdapter) {\n return markdownAdapter\n }\n const kind = getRuntimeKind()\n switch (kind) {\n case 'bun':\n markdownAdapter = createBunMarkdownAdapter()\n break\n case 'node':\n markdownAdapter = createFallbackMarkdownAdapter()\n break\n case 'deno':\n markdownAdapter = createUnsupportedMarkdownAdapter(\n '[RuntimeMarkdownAdapter] Deno markdown support not yet implemented. Use Bun or Node.js runtime.'\n )\n break\n default:\n markdownAdapter = createUnsupportedMarkdownAdapter(\n `[RuntimeMarkdownAdapter] Markdown support unavailable in unknown runtime. Detected: ${kind}`\n )\n }\n return markdownAdapter\n}\n",
|
|
81
83
|
"/**\n * Deep equality comparison abstraction.\n *\n * Provides unified deep equality checking across Bun, Node.js, and Deno runtimes.\n * Uses Bun.deepEquals() when available, falls back to recursive comparison.\n *\n * @module runtime/deep-equals\n * @since 3.2.0\n */\n\nimport { getRuntimeKind } from './detection'\n\n/**\n * Options for deep equality comparison.\n * @public\n */\nexport interface DeepEqualsOptions {\n /**\n * When true, uses strict equality semantics:\n * - NaN !== NaN\n * - +0 !== -0\n *\n * When false (default), uses lenient semantics:\n * - NaN === NaN\n * - +0 === -0\n */\n strict?: boolean\n}\n\n/**\n * Function signature for deep equality comparison.\n * @public\n */\nexport type DeepEqualsFn = (a: unknown, b: unknown, options?: DeepEqualsOptions) => boolean\n\n/**\n * Creates a fallback deep equality function with cycle detection.\n *\n * Recursively compares objects, arrays, maps, sets, dates, and regexps.\n * Handles circular references using WeakSet tracking.\n *\n * @returns A deep equality comparison function.\n * @internal\n */\nfunction createFallbackDeepEquals(): DeepEqualsFn {\n return (a: unknown, b: unknown, options?: DeepEqualsOptions): boolean => {\n const visited = new WeakSet<object>()\n return deepEqualInternal(a, b, visited, options?.strict ?? false)\n }\n}\n\n/**\n * Internal recursive deep equality comparison.\n * @internal\n */\nfunction deepEqualInternal(\n a: unknown,\n b: unknown,\n visited: WeakSet<object>,\n strict: boolean\n): boolean {\n // 淺比較\n if (a === b) {\n return true\n }\n\n // null / undefined 檢查\n if (a == null || b == null) {\n return a === b\n }\n\n // 型別檢查\n const typeA = typeof a\n const typeB = typeof b\n if (typeA !== typeB) {\n return false\n }\n\n // 非物件型別(除了 object)\n if (typeA !== 'object') {\n // 特殊情況:NaN 比較\n // Bun.deepEquals 的行為:NaN === NaN 總是 true,無論嚴格模式\n if (Number.isNaN(a) && Number.isNaN(b)) {\n return true\n }\n // 其他情況:使用 === (包括 +0 !== -0)\n return a === b\n }\n\n // Date 比較\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n }\n if (a instanceof Date || b instanceof Date) {\n return false\n }\n\n // RegExp 比較\n if (a instanceof RegExp && b instanceof RegExp) {\n return a.source === b.source && a.flags === b.flags\n }\n if (a instanceof RegExp || b instanceof RegExp) {\n return false\n }\n\n // 循環引用偵測\n const aObj = a as object\n const bObj = b as object\n if (visited.has(aObj) || visited.has(bObj)) {\n return a === b\n }\n visited.add(aObj)\n visited.add(bObj)\n\n // Array 比較\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n return a.every((val, idx) => deepEqualInternal(val, b[idx], visited, strict))\n }\n if (Array.isArray(a) || Array.isArray(b)) {\n return false\n }\n\n // Map 比較\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false\n }\n for (const [key, val] of a) {\n if (!b.has(key) || !deepEqualInternal(val, b.get(key), visited, strict)) {\n return false\n }\n }\n return true\n }\n if (a instanceof Map || b instanceof Map) {\n return false\n }\n\n // Set 比較\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false\n }\n const arrA = Array.from(a)\n const arrB = Array.from(b)\n return arrA.every((val) => arrB.some((bVal) => deepEqualInternal(val, bVal, visited, strict)))\n }\n if (a instanceof Set || b instanceof Set) {\n return false\n }\n\n // 普通物件比較\n const keysA = Object.keys(a as object)\n const keysB = Object.keys(b as object)\n\n if (keysA.length !== keysB.length) {\n return false\n }\n\n return keysA.every((key) => {\n const valA = (a as Record<string, unknown>)[key]\n const valB = (b as Record<string, unknown>)[key]\n return deepEqualInternal(valA, valB, visited, strict)\n })\n}\n\n/**\n * Singleton cache for deep equals function.\n * @internal\n */\nlet deepEqualsFn: DeepEqualsFn | null = null\n\n/**\n * Get the optimized deep equality comparison function for the current runtime.\n *\n * - **Bun**: Uses native Bun.deepEquals() for maximum performance (C++ optimized)\n * - **Node.js/Deno/Unknown**: Uses fallback recursive implementation with cycle detection\n *\n * Results are cached after first invocation for efficiency.\n *\n * @returns A function that performs deep equality comparison\n * @public\n *\n * @example\n * ```typescript\n * const deepEquals = getDeepEquals()\n *\n * const obj1 = { a: [1, 2], b: { c: 3 } }\n * const obj2 = { a: [1, 2], b: { c: 3 } }\n *\n * console.log(deepEquals(obj1, obj2)) // true\n *\n * // Strict mode for +0 / -0 and NaN\n * console.log(deepEquals(NaN, NaN)) // true (lenient)\n * console.log(deepEquals(NaN, NaN, { strict: true })) // false\n * ```\n */\nexport function getDeepEquals(): DeepEqualsFn {\n if (deepEqualsFn) {\n return deepEqualsFn\n }\n\n const kind = getRuntimeKind()\n if (kind === 'bun' && typeof Bun !== 'undefined') {\n deepEqualsFn = (a: unknown, b: unknown, options?: DeepEqualsOptions): boolean => {\n return Bun.deepEquals(a, b, options?.strict ?? false)\n }\n return deepEqualsFn\n }\n\n deepEqualsFn = createFallbackDeepEquals()\n return deepEqualsFn\n}\n",
|
|
@@ -124,10 +126,6 @@
|
|
|
124
126
|
"/**\n * @gravito/core - OpenTelemetry Event Metrics\n *\n * Provides event system metrics using OpenTelemetry API directly.\n * This enables Prometheus export without requiring @gravito/monitor dependency.\n *\n * Metrics:\n * - gravito_event_dispatch_duration_seconds (Histogram)\n * - gravito_event_listener_duration_seconds (Histogram)\n * - gravito_event_queue_depth (Observable Gauge)\n *\n * @packageDocumentation\n */\n\nimport type {\n Counter,\n Histogram,\n Meter,\n ObservableGauge,\n ObservableResult,\n} from '@opentelemetry/api'\nimport type { CircuitBreakerMetricsRecorder } from '../CircuitBreaker'\n\n/**\n * Queue depth callback type.\n * Returns the current queue depths for each priority level.\n */\nexport type QueueDepthCallback = () => {\n critical: number\n high: number\n normal: number\n low: number\n}\n\n/**\n * Circuit breaker state callback type.\n * Returns the current state of a circuit breaker.\n */\nexport type CircuitBreakerStateCallback = () => {\n eventName: string\n listenerIndex: number\n state: 0 | 1 | 2 // 0=CLOSED, 1=HALF_OPEN, 2=OPEN\n}\n\n/**\n * Default histogram buckets for dispatch duration.\n * Covers from 1ms to 10s with exponential distribution.\n */\nconst DEFAULT_DISPATCH_BUCKETS = [0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10]\n\n/**\n * Default histogram buckets for listener duration.\n * Covers from 1ms to 5s with exponential distribution.\n */\nconst DEFAULT_LISTENER_BUCKETS = [0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2, 5]\n\n/**\n * Default histogram buckets for circuit breaker open duration.\n * Covers from 1s to 10m with exponential distribution.\n */\nconst DEFAULT_CB_OPEN_DURATION_BUCKETS = [1, 2, 5, 10, 30, 60, 120, 300, 600]\n\n/**\n * OpenTelemetry-based Event Metrics collector.\n *\n * Uses OpenTelemetry API directly for metrics collection, enabling\n * Prometheus export through the OpenTelemetry SDK.\n *\n * @example\n * ```typescript\n * import { metrics } from '@opentelemetry/api'\n * import { OTelEventMetrics } from '@gravito/core'\n *\n * const meter = metrics.getMeter('@gravito/core', '1.0.0')\n * const eventMetrics = new OTelEventMetrics(meter)\n *\n * // Record dispatch duration\n * eventMetrics.recordDispatchDuration('order:created', 'high', 0.123)\n *\n * // Record listener duration\n * eventMetrics.recordListenerDuration('order:created', 0, 0.456)\n *\n * // Set queue depth callback\n * eventMetrics.setQueueDepthCallback(() => ({\n * high: 10,\n * normal: 50,\n * low: 100\n * }))\n * ```\n *\n * @public\n */\nexport class OTelEventMetrics implements CircuitBreakerMetricsRecorder {\n private readonly meter: Meter\n private readonly prefix: string\n\n private readonly dispatchDurationHistogram: Histogram\n private readonly listenerDurationHistogram: Histogram\n private readonly queueDepthGauge: ObservableGauge\n\n // Circuit breaker metrics (new in Phase 2)\n private readonly cbStateGauge: ObservableGauge\n private readonly cbFailuresCounter: Counter\n private readonly cbSuccessesCounter: Counter\n private readonly cbTransitionsCounter: Counter\n private readonly cbOpenDurationHistogram: Histogram\n\n // Backpressure metrics (Phase 3)\n private readonly backpressureRejectionsCounter: Counter\n private readonly backpressureStateGauge: ObservableGauge\n private readonly backpressureDegradationsCounter: Counter\n private backpressureStateValue = 'NORMAL'\n\n // DLQ metrics (Phase 3)\n private readonly dlqEntriesCounter: Counter\n private readonly dlqDepthGauge: ObservableGauge\n private readonly dlqRequeueCounter: Counter\n private readonly retryAttemptsCounter: Counter\n private dlqDepthCallback?: () => number\n\n // Priority escalation metrics (Phase 1)\n private readonly priorityEscalationCounter: Counter\n\n private queueDepthCallback?: QueueDepthCallback\n private circuitBreakerStateCallbacks: Map<string, CircuitBreakerStateCallback> = new Map()\n private recordedCircuitBreakerStates: Map<string, number> = new Map()\n\n /**\n * Bucket boundaries for dispatch duration histogram.\n */\n private readonly dispatchDurationBuckets: number[] = DEFAULT_DISPATCH_BUCKETS\n\n /**\n * Bucket boundaries for listener duration histogram.\n */\n private readonly listenerDurationBuckets: number[] = DEFAULT_LISTENER_BUCKETS\n\n /**\n * Bucket boundaries for circuit breaker open duration histogram.\n */\n private readonly cbOpenDurationBuckets: number[] = DEFAULT_CB_OPEN_DURATION_BUCKETS\n\n /**\n * Create a new OTelEventMetrics instance.\n *\n * @param meter - OpenTelemetry Meter instance\n * @param prefix - Metric name prefix (default: 'gravito_event_')\n */\n constructor(meter: Meter, prefix = 'gravito_event_') {\n this.meter = meter\n this.prefix = prefix\n\n // Create dispatch duration histogram\n this.dispatchDurationHistogram = meter.createHistogram(`${prefix}dispatch_duration_seconds`, {\n description: 'Duration of event dispatch operations in seconds',\n unit: 's',\n advice: {\n explicitBucketBoundaries: this.dispatchDurationBuckets,\n },\n })\n\n // Create listener duration histogram\n this.listenerDurationHistogram = meter.createHistogram(`${prefix}listener_duration_seconds`, {\n description: 'Duration of listener execution in seconds',\n unit: 's',\n advice: {\n explicitBucketBoundaries: this.listenerDurationBuckets,\n },\n })\n\n // Create queue depth observable gauge\n this.queueDepthGauge = meter.createObservableGauge(`${prefix}queue_depth`, {\n description: 'Current queue depth by priority level',\n unit: '{events}',\n })\n\n // Register the observable callback\n this.queueDepthGauge.addCallback((observableResult: ObservableResult) => {\n if (this.queueDepthCallback) {\n const depths = this.queueDepthCallback()\n observableResult.observe(depths.critical, { priority: 'critical' })\n observableResult.observe(depths.high, { priority: 'high' })\n observableResult.observe(depths.normal, { priority: 'normal' })\n observableResult.observe(depths.low, { priority: 'low' })\n }\n })\n\n // Create circuit breaker state gauge (0=CLOSED, 1=HALF_OPEN, 2=OPEN)\n this.cbStateGauge = meter.createObservableGauge(`${prefix}circuit_breaker_state`, {\n description: 'Circuit breaker state (0=CLOSED, 1=HALF_OPEN, 2=OPEN)',\n unit: '{state}',\n })\n\n this.cbStateGauge.addCallback((observableResult: ObservableResult) => {\n for (const callback of this.circuitBreakerStateCallbacks.values()) {\n const state = callback()\n observableResult.observe(state.state, {\n event_name: state.eventName,\n listener_index: String(state.listenerIndex),\n })\n }\n for (const [name, state] of this.recordedCircuitBreakerStates.entries()) {\n observableResult.observe(state, {\n event_name: name,\n listener_index: '0',\n })\n }\n })\n\n // Create circuit breaker failures counter (with graceful fallback for testing)\n this.cbFailuresCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}circuit_breaker_failures_total`, {\n description: 'Total number of failures recorded by circuit breakers',\n unit: '{failures}',\n })\n : ({ add: () => {} } as any)\n\n // Create circuit breaker successes counter\n this.cbSuccessesCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}circuit_breaker_successes_total`, {\n description: 'Total number of successes recorded by circuit breakers',\n unit: '{successes}',\n })\n : ({ add: () => {} } as any)\n\n // Create circuit breaker transitions counter\n this.cbTransitionsCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}circuit_breaker_transitions_total`, {\n description: 'Total number of state transitions in circuit breakers',\n unit: '{transitions}',\n })\n : ({ add: () => {} } as any)\n\n // Create circuit breaker open duration histogram\n this.cbOpenDurationHistogram = meter.createHistogram(\n `${prefix}circuit_breaker_open_duration_seconds`,\n {\n description: 'Duration that circuit breakers remain in OPEN state',\n unit: 's',\n advice: {\n explicitBucketBoundaries: this.cbOpenDurationBuckets,\n },\n }\n )\n\n // Create backpressure metrics\n this.backpressureRejectionsCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}backpressure_rejections_total`, {\n description: 'Total number of events rejected due to backpressure',\n unit: '{rejections}',\n })\n : ({ add: () => {} } as any)\n\n this.backpressureStateGauge = meter.createObservableGauge(`${prefix}backpressure_state`, {\n description: 'Current backpressure state (0=NORMAL, 1=WARNING, 2=CRITICAL, 3=OVERFLOW)',\n unit: '{state}',\n })\n\n this.backpressureStateGauge.addCallback((observableResult: ObservableResult) => {\n const stateMap: Record<string, number> = {\n NORMAL: 0,\n WARNING: 1,\n CRITICAL: 2,\n OVERFLOW: 3,\n }\n observableResult.observe(stateMap[this.backpressureStateValue] ?? 0)\n })\n\n this.backpressureDegradationsCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}backpressure_degradations_total`, {\n description: 'Total number of priority degradations due to backpressure',\n unit: '{degradations}',\n })\n : ({ add: () => {} } as any)\n\n // Create DLQ metrics\n this.dlqEntriesCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}dlq_entries_total`, {\n description: 'Total number of events added to Dead Letter Queue',\n unit: '{entries}',\n })\n : ({ add: () => {} } as any)\n\n this.dlqDepthGauge = meter.createObservableGauge(`${prefix}dlq_depth`, {\n description: 'Current Dead Letter Queue depth',\n unit: '{events}',\n })\n\n this.dlqDepthGauge.addCallback((observableResult: ObservableResult) => {\n if (this.dlqDepthCallback) {\n observableResult.observe(this.dlqDepthCallback())\n }\n })\n\n this.dlqRequeueCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}dlq_requeue_total`, {\n description: 'Total number of DLQ requeue attempts',\n unit: '{attempts}',\n })\n : ({ add: () => {} } as any)\n\n this.retryAttemptsCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}retry_attempts_total`, {\n description: 'Total number of event retry attempts',\n unit: '{attempts}',\n })\n : ({ add: () => {} } as any)\n\n // Create priority escalation counter\n this.priorityEscalationCounter = (meter as any).createCounter\n ? (meter as any).createCounter(`${prefix}priority_escalation_total`, {\n description: 'Total number of priority escalations',\n unit: '{escalations}',\n })\n : ({ add: () => {} } as any)\n }\n\n /**\n * Record event dispatch duration.\n *\n * @param eventName - Name of the event\n * @param priority - Priority level (high, normal, low)\n * @param durationSeconds - Duration in seconds\n */\n recordDispatchDuration(eventName: string, priority: string, durationSeconds: number): void {\n this.dispatchDurationHistogram.record(durationSeconds, {\n event_name: eventName,\n priority,\n })\n }\n\n /**\n * Record listener execution duration.\n *\n * @param eventName - Name of the event\n * @param listenerIndex - Index of the listener in the callback list\n * @param durationSeconds - Duration in seconds\n */\n recordListenerDuration(eventName: string, listenerIndex: number, durationSeconds: number): void {\n this.listenerDurationHistogram.record(durationSeconds, {\n event_name: eventName,\n listener_index: String(listenerIndex),\n })\n }\n\n /**\n * Set the callback for queue depth observable gauge.\n *\n * The callback will be invoked when metrics are collected,\n * allowing real-time reporting of queue depths.\n *\n * @param callback - Function returning current queue depths\n */\n setQueueDepthCallback(callback: QueueDepthCallback): void {\n this.queueDepthCallback = callback\n }\n\n /**\n * Register a circuit breaker state callback for monitoring.\n *\n * @param key - Unique identifier for the circuit breaker (e.g., \"order:created-0\")\n * @param callback - Function returning current circuit breaker state\n */\n registerCircuitBreakerStateCallback(key: string, callback: CircuitBreakerStateCallback): void {\n this.circuitBreakerStateCallbacks.set(key, callback)\n }\n\n /**\n * Unregister a circuit breaker state callback.\n *\n * @param key - Unique identifier for the circuit breaker\n */\n unregisterCircuitBreakerStateCallback(key: string): void {\n this.circuitBreakerStateCallbacks.delete(key)\n }\n\n /**\n * Record circuit breaker state change.\n *\n * @param name - Name of the circuit breaker (usually event name)\n * @param state - State as number (0=CLOSED, 1=HALF_OPEN, 2=OPEN)\n */\n recordState(name: string, state: number): void {\n this.recordedCircuitBreakerStates.set(name, state)\n }\n\n /**\n * Record circuit breaker state transition.\n *\n * @param name - Name of the circuit breaker\n * @param fromState - Previous state\n * @param toState - New state\n */\n recordTransition(name: string, fromState: string, toState: string): void {\n this.recordCircuitBreakerTransition(name, 0, fromState, toState)\n }\n\n /**\n * Record circuit breaker failure.\n *\n * @param name - Name of the circuit breaker\n */\n recordFailure(name: string): void {\n this.recordCircuitBreakerFailure(name, 0)\n }\n\n /**\n * Record circuit breaker success.\n *\n * @param name - Name of the circuit breaker\n */\n recordSuccess(name: string): void {\n this.recordCircuitBreakerSuccess(name, 0)\n }\n\n /**\n * Record circuit breaker open duration.\n *\n * @param name - Name of the circuit breaker\n * @param seconds - Duration in seconds\n */\n recordOpenDuration(name: string, seconds: number): void {\n this.recordCircuitBreakerOpenDuration(name, 0, seconds)\n }\n\n /**\n * Record circuit breaker failure.\n *\n * @param eventName - Name of the event\n * @param listenerIndex - Index of the listener\n */\n recordCircuitBreakerFailure(eventName: string, listenerIndex: number): void {\n this.cbFailuresCounter.add(1, {\n event_name: eventName,\n listener_index: String(listenerIndex),\n })\n }\n\n /**\n * Record circuit breaker success.\n *\n * @param eventName - Name of the event\n * @param listenerIndex - Index of the listener\n */\n recordCircuitBreakerSuccess(eventName: string, listenerIndex: number): void {\n this.cbSuccessesCounter.add(1, {\n event_name: eventName,\n listener_index: String(listenerIndex),\n })\n }\n\n /**\n * Record circuit breaker state transition.\n *\n * @param eventName - Name of the event\n * @param listenerIndex - Index of the listener\n * @param fromState - Previous state (CLOSED, HALF_OPEN, OPEN)\n * @param toState - New state (CLOSED, HALF_OPEN, OPEN)\n */\n recordCircuitBreakerTransition(\n eventName: string,\n listenerIndex: number,\n fromState: string,\n toState: string\n ): void {\n this.cbTransitionsCounter.add(1, {\n event_name: eventName,\n listener_index: String(listenerIndex),\n from_state: fromState,\n to_state: toState,\n })\n }\n\n /**\n * Record circuit breaker open duration.\n *\n * @param eventName - Name of the event\n * @param listenerIndex - Index of the listener\n * @param durationSeconds - Duration in seconds\n */\n recordCircuitBreakerOpenDuration(\n eventName: string,\n listenerIndex: number,\n durationSeconds: number\n ): void {\n this.cbOpenDurationHistogram.record(durationSeconds, {\n event_name: eventName,\n listener_index: String(listenerIndex),\n })\n }\n\n /**\n * Get the bucket boundaries for dispatch duration histogram.\n *\n * @returns Array of bucket boundaries in seconds\n */\n getDispatchDurationBuckets(): number[] {\n return [...this.dispatchDurationBuckets]\n }\n\n /**\n * Get the bucket boundaries for listener duration histogram.\n *\n * @returns Array of bucket boundaries in seconds\n */\n getListenerDurationBuckets(): number[] {\n return [...this.listenerDurationBuckets]\n }\n\n /**\n * Get the OpenTelemetry Meter instance.\n *\n * @returns Meter instance\n */\n getMeter(): Meter {\n return this.meter\n }\n\n /**\n * Get the metric name prefix.\n *\n * @returns Metric name prefix\n */\n getPrefix(): string {\n return this.prefix\n }\n\n /**\n * Get the bucket boundaries for circuit breaker open duration histogram.\n *\n * @returns Array of bucket boundaries in seconds\n */\n getCircuitBreakerOpenDurationBuckets(): number[] {\n return [...this.cbOpenDurationBuckets]\n }\n\n /**\n * Get all registered circuit breaker state callback keys.\n *\n * @returns Array of registered keys\n */\n getRegisteredCircuitBreakers(): string[] {\n return Array.from(this.circuitBreakerStateCallbacks.keys())\n }\n\n /**\n * Clear all circuit breaker state callbacks.\n */\n clearCircuitBreakerCallbacks(): void {\n this.circuitBreakerStateCallbacks.clear()\n }\n\n /**\n * Record a backpressure rejection event.\n *\n * @param eventName - Event name\n * @param priority - Event priority\n * @param reason - Rejection reason\n */\n recordBackpressureRejection(eventName: string, priority: string, reason: string): void {\n this.backpressureRejectionsCounter.add(1, {\n event_name: eventName,\n priority,\n reason,\n })\n }\n\n /**\n * Record a backpressure state change event.\n *\n * @param state - New backpressure state (NORMAL, WARNING, CRITICAL, OVERFLOW)\n */\n recordBackpressureState(state: string): void {\n this.backpressureStateValue = state\n }\n\n /**\n * Record a backpressure degradation event.\n *\n * @param eventName - Event name\n * @param fromPriority - Original priority\n * @param toPriority - Degraded priority\n */\n recordBackpressureDegradation(eventName: string, fromPriority: string, toPriority: string): void {\n this.backpressureDegradationsCounter.add(1, {\n event_name: eventName,\n from_priority: fromPriority,\n to_priority: toPriority,\n })\n }\n\n /**\n * Record an event added to Dead Letter Queue.\n *\n * @param eventName - Event name\n * @param source - Source of DLQ entry (retry_exhausted, circuit_breaker, backpressure_overflow)\n */\n recordDLQEntry(eventName: string, source: string): void {\n this.dlqEntriesCounter.add(1, {\n event_name: eventName,\n source,\n })\n }\n\n /**\n * Set the callback for DLQ depth observable gauge.\n *\n * @param callback - Function returning current DLQ depth\n */\n setDLQDepthCallback(callback: () => number): void {\n this.dlqDepthCallback = callback\n }\n\n /**\n * Record a DLQ requeue attempt.\n *\n * @param eventName - Event name\n * @param result - Result of requeue (success or failure)\n */\n recordDLQRequeue(eventName: string, result: 'success' | 'failure'): void {\n this.dlqRequeueCounter.add(1, {\n event_name: eventName,\n result,\n })\n }\n\n /**\n * Record an event retry attempt.\n *\n * @param eventName - Event name\n * @param attemptNumber - Attempt number\n */\n recordRetryAttempt(eventName: string, attemptNumber: number): void {\n this.retryAttemptsCounter.add(1, {\n event_name: eventName,\n attempt_number: String(attemptNumber),\n })\n }\n\n /**\n * Record a priority escalation event.\n *\n * @param eventName - Event name\n * @param fromPriority - Original priority\n * @param toPriority - Escalated priority\n */\n recordPriorityEscalation(eventName: string, fromPriority: string, toPriority: string): void {\n this.priorityEscalationCounter.add(1, {\n event_name: eventName,\n from_priority: fromPriority,\n to_priority: toPriority,\n })\n }\n\n /**\n * Record event deduplication (FS-102).\n *\n * @param eventName - Event name\n * @param deduplicatedCount - Number of events after deduplication\n * @param totalCount - Total number of events before deduplication\n */\n recordDeduplication(eventName: string, deduplicatedCount: number, totalCount: number): void {\n this.meter\n .createObservableCounter(`gravito_event_deduplication_count`, {\n description: 'Count of deduplicated events',\n })\n .addCallback((result: ObservableResult) => {\n result.observe(totalCount - deduplicatedCount, {\n event_name: eventName,\n type: 'removed',\n })\n result.observe(deduplicatedCount, {\n event_name: eventName,\n type: 'remaining',\n })\n })\n }\n\n /**\n * Record batch submission (FS-102).\n *\n * @param eventName - Event name\n * @param batchSize - Size of submitted batch\n * @param windowMs - Aggregation window size\n */\n recordBatch(eventName: string, batchSize: number, windowMs: number): void {\n this.meter\n .createObservableCounter(`gravito_event_batch_size`, {\n description: 'Size of event batches',\n })\n .addCallback((result: ObservableResult) => {\n result.observe(batchSize, {\n event_name: eventName,\n })\n })\n\n this.meter\n .createObservableGauge(`gravito_event_batch_window`, {\n description: 'Aggregation window size in milliseconds',\n })\n .addCallback((result: ObservableResult) => {\n result.observe(windowMs, {\n event_name: eventName,\n })\n })\n }\n\n /**\n * Record window adjustment (FS-102).\n *\n * @param oldWindowMs - Previous window size\n * @param newWindowMs - New window size\n * @param reason - Adjustment reason\n */\n recordWindowAdjustment(oldWindowMs: number, newWindowMs: number, reason: string): void {\n this.meter\n .createObservableCounter(`gravito_event_aggregation_window_adjustments`, {\n description: 'Count of window adjustments',\n })\n .addCallback((result: ObservableResult) => {\n result.observe(1, {\n from_window: `${oldWindowMs}ms`,\n to_window: `${newWindowMs}ms`,\n reason,\n })\n })\n }\n}\n",
|
|
125
127
|
"import type { Logger } from './Logger'\nimport type { PlanetCore } from './PlanetCore'\n\n/**\n * Type of process-level error\n * @public\n */\nexport type GlobalProcessErrorKind = 'unhandledRejection' | 'uncaughtException'\n\n/**\n * Context payload for global error handler filters/actions\n * @public\n */\nexport type GlobalProcessErrorHandlerContext = {\n core?: PlanetCore\n kind: GlobalProcessErrorKind\n error: unknown\n isProduction: boolean\n timestamp: number\n logLevel?: 'error' | 'warn' | 'info' | 'none'\n logMessage?: string\n exit?: boolean\n exitCode?: number\n gracePeriodMs?: number\n}\n\n/**\n * Error handling strategy\n * @public\n */\nexport type GlobalErrorHandlersMode = 'log' | 'exit' | 'exitInProduction'\n\n/**\n * Options for registering global handlers\n * @public\n */\nexport type RegisterGlobalErrorHandlersOptions = {\n core?: PlanetCore\n logger?: Logger\n mode?: GlobalErrorHandlersMode\n exitCode?: number\n gracePeriodMs?: number\n}\n\ntype GlobalState = {\n nextId: number\n sinks: Map<\n number,\n Required<Pick<RegisterGlobalErrorHandlersOptions, 'mode'>> & RegisterGlobalErrorHandlersOptions\n >\n listenersInstalled: boolean\n onUnhandledRejection: ((reason: unknown, promise: Promise<unknown>) => void) | undefined\n onUncaughtException: ((error: unknown) => void) | undefined\n}\n\nconst stateKey = Symbol.for('gravito.core.globalErrorHandlers')\n\nfunction getGlobalState(): GlobalState {\n const g = globalThis as unknown as Record<symbol, GlobalState | undefined>\n const existing = g[stateKey]\n if (existing) {\n return existing\n }\n\n const created: GlobalState = {\n nextId: 1,\n sinks: new Map(),\n listenersInstalled: false,\n onUnhandledRejection: undefined,\n onUncaughtException: undefined,\n }\n g[stateKey] = created\n return created\n}\n\ntype ProcessEventListener = (...args: unknown[]) => void\n\nfunction offProcess(event: string, listener: ProcessEventListener): void {\n const p = process as unknown as {\n off?: (event: string, listener: ProcessEventListener) => void\n removeListener?: (event: string, listener: ProcessEventListener) => void\n }\n if (typeof p.off === 'function') {\n p.off(event, listener)\n return\n }\n if (typeof p.removeListener === 'function') {\n p.removeListener(event, listener)\n }\n}\n\nfunction safeMessageFromUnknown(error: unknown): string {\n if (error instanceof Error) {\n return error.message || 'Error'\n }\n if (typeof error === 'string') {\n return error\n }\n try {\n return JSON.stringify(error)\n } catch {\n return String(error)\n }\n}\n\nasync function handleProcessError(kind: GlobalProcessErrorKind, error: unknown): Promise<void> {\n const state = getGlobalState()\n if (state.sinks.size === 0) {\n return\n }\n\n const isProduction = process.env.NODE_ENV === 'production'\n let shouldExit = false\n let exitCode = 1\n let exitTimer: ReturnType<typeof setTimeout> | undefined\n\n try {\n const sinks = Array.from(state.sinks.values())\n const prepared = await Promise.all(\n sinks.map(async (sink) => {\n const defaultExit =\n sink.mode === 'exit' || (sink.mode === 'exitInProduction' && isProduction)\n\n let ctx: GlobalProcessErrorHandlerContext = {\n ...(sink.core ? { core: sink.core } : {}),\n kind,\n error,\n isProduction,\n timestamp: Date.now(),\n exit: defaultExit,\n exitCode: sink.exitCode ?? 1,\n gracePeriodMs: sink.gracePeriodMs ?? 250,\n }\n\n if (sink.core) {\n ctx = await sink.core.hooks.applyFilters<GlobalProcessErrorHandlerContext>(\n 'processError:context',\n ctx\n )\n }\n\n return { sink, ctx }\n })\n )\n\n const exitTargets = prepared\n .map((p) => p.ctx)\n .filter((ctx) => (ctx.exit ?? false) && (ctx.exitCode ?? 1) >= 0)\n shouldExit = exitTargets.length > 0\n const gracePeriodMs = Math.max(0, ...exitTargets.map((c) => c.gracePeriodMs ?? 250))\n exitCode = Math.max(0, ...exitTargets.map((c) => c.exitCode ?? 1))\n\n if (shouldExit) {\n exitTimer = setTimeout(() => {\n process.exit(exitCode)\n }, gracePeriodMs)\n exitTimer.unref?.()\n }\n\n await Promise.all(\n prepared.map(async ({ sink, ctx }) => {\n const logger = sink.logger ?? sink.core?.logger\n const logLevel = ctx.logLevel ?? 'error'\n if (logger && logLevel !== 'none') {\n const message = safeMessageFromUnknown(ctx.error)\n const msg = ctx.logMessage ?? `[${ctx.kind}] ${message}`\n if (logLevel === 'error') {\n logger.error(msg, ctx.error)\n } else if (logLevel === 'warn') {\n logger.warn(msg, ctx.error)\n } else {\n logger.info(msg, ctx.error)\n }\n }\n\n if (sink.core) {\n await sink.core.hooks.doAction('processError:report', ctx)\n }\n })\n )\n } catch (e) {\n console.error('[@gravito/core] Failed to handle process-level error:', e)\n } finally {\n if (shouldExit) {\n clearTimeout(exitTimer)\n process.exit(exitCode)\n }\n }\n}\n\nfunction ensureListenersInstalled(): void {\n const state = getGlobalState()\n if (state.listenersInstalled) {\n return\n }\n\n if (typeof process === 'undefined' || typeof process.on !== 'function') {\n return\n }\n\n state.onUnhandledRejection = (reason: unknown) => {\n void handleProcessError('unhandledRejection', reason)\n }\n state.onUncaughtException = (error: unknown) => {\n void handleProcessError('uncaughtException', error)\n }\n\n process.on('unhandledRejection', state.onUnhandledRejection)\n process.on('uncaughtException', state.onUncaughtException)\n\n state.listenersInstalled = true\n}\n\nfunction teardownListenersIfUnused(): void {\n const state = getGlobalState()\n if (!state.listenersInstalled || state.sinks.size > 0) {\n return\n }\n\n if (state.onUnhandledRejection) {\n offProcess('unhandledRejection', state.onUnhandledRejection as unknown as ProcessEventListener)\n }\n if (state.onUncaughtException) {\n offProcess('uncaughtException', state.onUncaughtException as unknown as ProcessEventListener)\n }\n\n state.onUnhandledRejection = undefined\n state.onUncaughtException = undefined\n state.listenersInstalled = false\n}\n\n/**\n * Register process-level error handlers (`unhandledRejection` / `uncaughtException`).\n *\n * - `mode: \"log\"`: only log/report\n * - `mode: \"exit\"`: report then `process.exit(exitCode)`\n * - `mode: \"exitInProduction\"`: exit only when `NODE_ENV=production` (default)\n */\nexport function registerGlobalErrorHandlers(\n options: RegisterGlobalErrorHandlersOptions = {}\n): () => void {\n const state = getGlobalState()\n ensureListenersInstalled()\n\n const id = state.nextId++\n state.sinks.set(id, {\n ...options,\n mode: options.mode ?? 'exitInProduction',\n })\n\n return () => {\n state.sinks.delete(id)\n teardownListenersIfUnused()\n }\n}\n",
|
|
126
128
|
"/**\n * @gravito/core - Observability Contracts\n *\n * Abstract interfaces for observability providers, decoupling core from OpenTelemetry.\n * This allows @gravito/monitor to provide complete OTel implementations while core\n * remains dependency-free.\n */\n\n/**\n * Represents a tracing span for distributed tracing.\n * @public\n */\nexport interface TracingSpan {\n /**\n * Add an event to the span.\n *\n * @param name - Event name\n * @param attributes - Optional event attributes\n */\n addEvent(name: string, attributes?: Record<string, string | number>): void\n\n /**\n * Set the span status.\n *\n * @param code - Status code: 'OK' or 'ERROR'\n * @param message - Optional error message\n */\n setStatus(code: 'OK' | 'ERROR', message?: string): void\n\n /**\n * End the span.\n */\n end(): void\n}\n\n/**\n * Event tracing provider for distributed tracing of events.\n * @public\n */\nexport interface EventTracingProvider {\n /**\n * Start a new tracing span for an event.\n *\n * @param name - Span name\n * @returns A TracingSpan instance\n */\n startSpan(name: string): TracingSpan\n\n /**\n * Record custom metrics for an event.\n *\n * @param eventName - Name of the event\n * @param metrics - Metrics to record (e.g., duration, count)\n */\n recordMetrics(eventName: string, metrics: Record<string, number>): void\n}\n\n/**\n * Event metrics recorder for monitoring event processing.\n * @public\n */\nexport interface EventMetricsRecorder {\n /**\n * Record event processing completion.\n *\n * @param eventName - Name of the event\n * @param duration - Processing duration in milliseconds\n * @param success - Whether processing was successful\n */\n recordEventProcessed(eventName: string, duration: number, success: boolean): void\n\n /**\n * Record event publication.\n *\n * @param eventName - Name of the event\n */\n recordEventPublished(eventName: string): void\n\n /**\n * Record event processing error.\n *\n * @param eventName - Name of the event\n * @param error - The error that occurred\n */\n recordEventError(eventName: string, error: Error): void\n}\n\n/**\n * Worker metrics provider for monitoring worker pool operations.\n * @public\n */\nexport interface WorkerMetricsProvider {\n /**\n * Record worker pool startup.\n *\n * @param poolId - ID of the worker pool\n */\n recordWorkerStartup(poolId: string): void\n\n /**\n * Record task execution in a worker pool.\n *\n * @param poolId - ID of the worker pool\n * @param duration - Task duration in milliseconds\n * @param success - Whether task execution was successful\n */\n recordTaskExecution(poolId: string, duration: number, success: boolean): void\n\n /**\n * Record worker pool error.\n *\n * @param poolId - ID of the worker pool\n * @param error - The error that occurred\n */\n recordWorkerError(poolId: string, error: Error): void\n}\n\n/**\n * Main observability provider interface combining all observability capabilities.\n * @public\n */\nexport interface ObservabilityProvider {\n /**\n * Event tracing provider (optional).\n */\n eventTracing?: EventTracingProvider\n\n /**\n * Event metrics recorder (optional).\n */\n eventMetrics?: EventMetricsRecorder\n\n /**\n * Worker metrics provider (optional).\n */\n workerMetrics?: WorkerMetricsProvider\n\n /**\n * General tracing provider (optional).\n */\n tracing?: {\n startSpan(name: string): TracingSpan\n }\n}\n\n/**\n * No-Op implementations for when observability is not configured.\n * These provide compatibility without requiring external dependencies.\n * @internal\n */\n\nclass NoOpTracingSpan implements TracingSpan {\n addEvent(): void {\n // No-op\n }\n\n setStatus(): void {\n // No-op\n }\n\n end(): void {\n // No-op\n }\n}\n\nclass NoOpEventTracingProvider implements EventTracingProvider {\n startSpan(): TracingSpan {\n return new NoOpTracingSpan()\n }\n\n recordMetrics(): void {\n // No-op\n }\n}\n\nclass NoOpEventMetricsRecorder implements EventMetricsRecorder {\n recordEventProcessed(): void {\n // No-op\n }\n\n recordEventPublished(): void {\n // No-op\n }\n\n recordEventError(): void {\n // No-op\n }\n}\n\nclass NoOpWorkerMetricsProvider implements WorkerMetricsProvider {\n recordWorkerStartup(): void {\n // No-op\n }\n\n recordTaskExecution(): void {\n // No-op\n }\n\n recordWorkerError(): void {\n // No-op\n }\n}\n\n/**\n * Create a no-op observability provider.\n * Used by default when no observability implementation is provided.\n *\n * @returns An ObservabilityProvider with all no-op implementations\n * @internal\n */\nexport function createNoOpObservabilityProvider(): ObservabilityProvider {\n return {\n eventTracing: new NoOpEventTracingProvider(),\n eventMetrics: new NoOpEventMetricsRecorder(),\n workerMetrics: new NoOpWorkerMetricsProvider(),\n tracing: {\n startSpan(): TracingSpan {\n return new NoOpTracingSpan()\n },\n },\n }\n}\n",
|
|
127
|
-
"import type { GravitoRequest, ValidationTarget } from '../../http/types'\n\n/**\n * Bun-optimized implementation of GravitoRequest.\n * @internal\n */\nexport class BunRequest implements GravitoRequest {\n private _url: URL\n private _params: Record<string, string> = {}\n private _query: Record<string, string | string[]> | null = null\n private _validated: Partial<Record<ValidationTarget, unknown>> = {}\n\n constructor(\n public readonly raw: Request,\n params: Record<string, string> = {}\n ) {\n this._url = new URL(raw.url)\n this._params = params\n }\n\n // Internal: Set params after route match\n setParams(params: Record<string, string>) {\n this._params = params\n }\n\n get url(): string {\n return this.raw.url\n }\n\n get method(): string {\n return this.raw.method\n }\n\n get path(): string {\n return this._url.pathname\n }\n\n // Parameter Access\n param(name: string): string | undefined {\n return this._params[name]\n }\n\n params(): Record<string, string> {\n return this._params\n }\n\n query(name: string): string | undefined {\n // Lazily parse query\n if (!this._query) {\n this.parseQuery()\n }\n const val = this._query?.[name]\n if (Array.isArray(val)) {\n return val[0]\n }\n return val\n }\n\n queries(): Record<string, string | string[]> {\n if (!this._query) {\n this.parseQuery()\n }\n return this._query!\n }\n\n header(name: string): string | undefined\n header(): Record<string, string>\n header(name?: string): string | undefined | Record<string, string> {\n if (name) {\n return this.raw.headers.get(name) || undefined\n }\n const headers: Record<string, string> = {}\n this.raw.headers.forEach((value, key) => {\n headers[key] = value\n })\n return headers\n }\n\n // Body Parsing\n async json<T = unknown>(): Promise<T> {\n return this.raw.json() as Promise<T>\n }\n\n async text(): Promise<string> {\n return this.raw.text()\n }\n\n async formData(): Promise<FormData> {\n return this.raw.formData()\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n return this.raw.arrayBuffer()\n }\n\n async parseBody<T = unknown>(): Promise<T> {\n const contentType = this.raw.headers.get('Content-Type')\n if (\n contentType?.includes('application/x-www-form-urlencoded') ||\n contentType?.includes('multipart/form-data')\n ) {\n const formData = await this.formData()\n const body: Record<string, any> = {}\n formData.forEach((value, key) => {\n body[key] = value\n })\n return body as T\n }\n return {} as T\n }\n\n // Internal method to set validated data\n // This can be used by middleware to attach validated data to the request\n setValidated(target: ValidationTarget, data: unknown) {\n this._validated[target] = data\n }\n\n valid<T = unknown>(target: ValidationTarget): T {\n const data = this._validated[target]\n if (data === undefined) {\n // In Photon, valid() throws or returns specific type?\n // Gravito types definition says allows undefined?\n // \"valid<T = unknown>(target: ValidationTarget): T\"\n // Usually framework-agnostic means we should throw if not found or return T.\n // Photon definition: valid<T>(target: keyof ValidationTargets): T\n // If not validated, likely undefined or error.\n // Let's return undefined as \"unknown\" implicitly.\n // Or throw to match semantics?\n // \"throws {Error} If validation was not performed for this target\" in types.ts JSDoc\n throw new Error(`Validation target '${target}' not found or validation failed.`)\n }\n return data as T\n }\n\n private parseQuery() {\n this._query = {}\n for (const [key, value] of this._url.searchParams) {\n if (this._query[key]) {\n if (Array.isArray(this._query[key])) {\n ;(this._query[key] as string[]).push(value)\n } else {\n this._query[key] = [this._query[key] as string, value]\n }\n } else {\n this._query[key] = value\n }\n }\n }\n}\n",
|
|
128
|
-
"import { RequestScopeManager } from '../../Container/RequestScopeManager'\nimport type {\n ContentfulStatusCode,\n GravitoContext,\n GravitoVariables,\n ProxyOptions,\n StatusCode,\n} from '../../http/types'\nimport { BunRequest } from './BunRequest'\n\n/**\n * Bun-optimized implementation of GravitoContext.\n * @internal\n */\nexport class BunContext<V extends GravitoVariables = GravitoVariables>\n implements GravitoContext<V>\n{\n // Request wrapper\n public req: BunRequest\n\n // Context variables\n private _variables: Map<string, unknown> = new Map()\n\n // Request scope management\n private _requestScope: RequestScopeManager\n\n /**\n * URL generator helper\n */\n public route!: (name: string, params?: Record<string, any>, query?: Record<string, any>) => string\n\n // Response state\n private _status: StatusCode = 200\n private _headers: Headers = new Headers()\n private _executionCtx?: ExecutionContext\n\n // Stored response (Photon-like behavior)\n public res: Response | undefined\n\n public readonly native: unknown\n\n constructor(\n request: Request,\n public readonly env: Record<string, unknown> = {},\n executionCtx?: ExecutionContext\n ) {\n this.req = new BunRequest(request)\n this._executionCtx = executionCtx\n this._requestScope = new RequestScopeManager()\n this.native = { request, env, executionCtx }\n }\n\n /**\n * Create a proxied instance to enable object destructuring of context variables\n * This allows: async list({ userService }: Context)\n */\n static create<V extends GravitoVariables = GravitoVariables>(\n request: Request,\n env: Record<string, unknown> = {},\n executionCtx?: ExecutionContext\n ): GravitoContext<V> {\n const instance = new BunContext<V>(request, env, executionCtx)\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // 1. If property exists on the instance (method, property), return it\n if (prop in target) {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target) // Ensure 'this' points to instance\n }\n return value\n }\n\n // 2. If not, try to fetch from internal variable map\n if (typeof prop === 'string') {\n return target.get(prop as any)\n }\n\n return undefined\n },\n }) as any\n }\n\n // Response Builders\n json<T>(data: T, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.header('Content-Type', 'application/json')\n this.res = new Response(JSON.stringify(data), {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n text(text: string, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.header('Content-Type', 'text/plain')\n this.res = new Response(text, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n html(html: string, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.header('Content-Type', 'text/html')\n this.res = new Response(html, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n redirect(url: string, status: 301 | 302 | 303 | 307 | 308 = 302): Response {\n this.status(status)\n this.header('Location', url)\n this.res = new Response(null, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n body(data: BodyInit | null, status: StatusCode = 200): Response {\n this.status(status)\n this.res = new Response(data, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n stream(stream: ReadableStream, status: ContentfulStatusCode = 200): Response {\n this.status(status)\n this.res = new Response(stream, {\n status: this._status,\n headers: this._headers,\n })\n return this.res\n }\n\n notFound(message?: string): Response {\n return this.text(message ?? 'Not Found', 404 as 200)\n }\n\n forbidden(message?: string): Response {\n return this.text(message ?? 'Forbidden', 403 as 200)\n }\n\n unauthorized(message?: string): Response {\n return this.text(message ?? 'Unauthorized', 401 as 200)\n }\n\n badRequest(message?: string): Response {\n return this.text(message ?? 'Bad Request', 400 as 200)\n }\n\n async forward(target: string, options?: ProxyOptions): Promise<Response> {\n const url = new URL(target, this.req.url)\n const headers = new Headers(this.req.raw.headers)\n\n if (options?.headers) {\n for (const [key, value] of Object.entries(options.headers)) {\n headers.set(key, value)\n }\n }\n\n if (!options?.preserveHost) {\n headers.delete('Host')\n }\n\n if (options?.addForwardedHeaders !== false) {\n const origin = new URL(this.req.url)\n headers.append('X-Forwarded-Host', origin.host)\n headers.append('X-Forwarded-Proto', origin.protocol.slice(0, -1))\n }\n\n if (options?.rewritePath) {\n url.pathname = options.rewritePath(url.pathname)\n }\n\n return fetch(url, {\n method: this.req.method,\n headers,\n body: this.req.raw.body,\n redirect: 'manual',\n })\n }\n\n // Headers\n header(name: string, value: string, options?: { append?: boolean }): void\n header(name: string): string | undefined\n header(\n name: string,\n value?: string,\n options?: { append?: boolean }\n ): string | undefined | undefined {\n if (value === undefined) {\n return this.req.header(name)\n }\n if (options?.append) {\n this._headers.append(name, value)\n this.res?.headers.append(name, value)\n } else {\n this._headers.set(name, value)\n if (this.res) {\n this.res.headers.set(name, value)\n }\n }\n return undefined\n }\n\n /**\n * Reset context state for reuse in pooling scenarios\n * @internal\n */\n reset(request: Request): void {\n this.req = new BunRequest(request)\n this._status = 200\n this._headers = new Headers()\n this._variables.clear()\n this.res = undefined\n this._requestScope = new RequestScopeManager()\n }\n\n status(code: StatusCode): void {\n this._status = code\n }\n\n // Context Variables\n get<K extends keyof V>(key: K): V[K] {\n return this._variables.get(key as string) as V[K]\n }\n\n set<K extends keyof V>(key: K, value: V[K]): void {\n this._variables.set(key as string, value)\n }\n\n // Execution Control\n get executionCtx(): ExecutionContext | undefined {\n return this._executionCtx\n }\n\n // Request-Scoped Dependency Injection\n requestScope(): RequestScopeManager {\n return this._requestScope\n }\n\n scoped<T>(key: string | symbol, factory: () => T): T {\n return this._requestScope.resolve(key, factory)\n }\n}\n",
|
|
129
|
-
"/**\n * WebSocket 路由管理器\n *\n * 負責註冊和分發 WebSocket 事件到相應的路由處理器\n */\n\nexport interface WebSocketRouteHandlers {\n open?: (ws: unknown) => void | Promise<void>\n message?: (ws: unknown, data: string | Buffer | Uint8Array) => void | Promise<void>\n close?: (ws: unknown, code: number, reason: string) => void | Promise<void>\n drain?: (ws: unknown) => void | Promise<void>\n}\n\nexport class BunWebSocketHandler {\n private routes = new Map<string, WebSocketRouteHandlers>()\n\n /**\n * 註冊 WebSocket 路由\n */\n register(path: string, handlers: WebSocketRouteHandlers): void {\n this.routes.set(path, handlers)\n }\n\n /**\n * 檢查是否有該路由\n * 支援精確匹配和 wildcard 匹配\n */\n hasRoute(path: string): boolean {\n // 精確匹配\n if (this.routes.has(path)) {\n return true\n }\n\n // Wildcard 匹配 (e.g., /api/*)\n for (const registeredPath of this.routes.keys()) {\n if (this.matchesPath(registeredPath, path)) {\n return true\n }\n }\n\n return false\n }\n\n /**\n * 檢查是否有任何已註冊的路由\n */\n hasAnyRoute(): boolean {\n return this.routes.size > 0\n }\n\n /**\n * 將 handlers 轉換為 Bun.serve websocket config\n */\n toHandler(): {\n open?: (ws: unknown) => void | Promise<void>\n message?: (ws: unknown, data: string | Buffer | Uint8Array) => void | Promise<void>\n close?: (ws: unknown, code: number, reason: string) => void | Promise<void>\n drain?: (ws: unknown) => void | Promise<void>\n } {\n return {\n open: async (ws: unknown) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.open) {\n await handler.open(ws)\n }\n },\n\n message: async (ws: unknown, data: string | Buffer | Uint8Array) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.message) {\n await handler.message(ws, data)\n }\n },\n\n close: async (ws: unknown, code: number, reason: string) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.close) {\n await handler.close(ws, code, reason)\n }\n },\n\n drain: async (ws: unknown) => {\n const path = (ws as any)?.data?.path\n if (!path) {\n return\n }\n\n const handler = this.findHandler(path)\n if (handler?.drain) {\n await handler.drain(ws)\n }\n },\n }\n }\n\n /**\n * 尋找符合路徑的 handler\n * 優先精確匹配,再 wildcard 匹配\n */\n private findHandler(path: string): WebSocketRouteHandlers | undefined {\n // 精確匹配\n if (this.routes.has(path)) {\n return this.routes.get(path)\n }\n\n // Wildcard 匹配\n for (const [registeredPath, handlers] of this.routes.entries()) {\n if (this.matchesPath(registeredPath, path)) {\n return handlers\n }\n }\n\n return undefined\n }\n\n /**\n * 路徑匹配邏輯\n * 支援:\n * - 精確匹配:/chat\n * - Wildcard:/api/*, /api*\n */\n private matchesPath(pattern: string, path: string): boolean {\n if (!pattern.includes('*')) {\n return path === pattern\n }\n\n if (pattern.endsWith('/*')) {\n const basePattern = pattern.slice(0, -2)\n return path === basePattern || path.startsWith(`${basePattern}/`)\n }\n\n if (pattern.endsWith('*')) {\n const basePattern = pattern.slice(0, -1)\n return path.startsWith(basePattern)\n }\n\n return false\n }\n}\n",
|
|
130
|
-
"import type {\n GravitoContext,\n GravitoErrorHandler,\n GravitoHandler,\n GravitoMiddleware,\n GravitoNotFoundHandler,\n HttpMethod,\n} from '../../http/types'\nimport type { HttpAdapter, RouteDefinition } from '../types'\nimport { BunContext } from './BunContext'\nimport type { BunRequest } from './BunRequest'\nimport type { WebSocketRouteHandlers } from './BunWebSocketHandler'\nimport { BunWebSocketHandler } from './BunWebSocketHandler'\nimport { RadixRouter } from './RadixRouter'\n\n/**\n * Native Bun-optimized HTTP Adapter for Gravito.\n * Uses Bun's standard Request/Response classes and efficient router.\n * @public\n */\nexport class BunNativeAdapter implements HttpAdapter {\n public readonly name = 'bun-native'\n public readonly version = '0.0.1'\n\n public get native(): unknown {\n return this\n }\n\n private router = new RadixRouter()\n private middlewares: Array<{ path: string; handlers: GravitoMiddleware[] }> = []\n private errorHandler: GravitoErrorHandler | null = null\n private notFoundHandler: GravitoNotFoundHandler | null = null\n\n // Context pooling for P0 fix (state pollution)\n private contextPool: BunContext[] = []\n private readonly maxPoolSize = 100\n\n // P2 optimization: Pre-compiled middleware chains\n private middlewareChainCache = new Map<string, GravitoMiddleware[]>()\n\n // WebSocket support\n private wsHandler = new BunWebSocketHandler()\n\n route(\n method: HttpMethod,\n path: string,\n ...handlers: (GravitoHandler | GravitoMiddleware)[]\n ): void {\n this.router.add(method, path, handlers as any[])\n }\n\n routes(routes: RouteDefinition[]): void {\n for (const route of routes) {\n this.route(\n route.method,\n route.path,\n ...(route.handlers as (GravitoHandler | GravitoMiddleware)[])\n )\n }\n }\n\n use(path: string, ...middleware: GravitoMiddleware[]): void {\n this.middlewares.push({ path, handlers: middleware })\n // P2 optimization: Clear middleware cache when new middleware added\n this.middlewareChainCache.clear()\n }\n\n useGlobal(...middleware: GravitoMiddleware[]): void {\n this.use('*', ...middleware)\n }\n\n useScoped(scope: string, path: string, ...middleware: GravitoMiddleware[]): void {\n if (path === '*' || path === '*/*') {\n throw new Error(\n `useScoped(): Cannot use wildcard path '*' in Orbit-scoped middleware. ` +\n `Use regular use('*') for global middleware, or specify explicit paths like '${scope}/*'`\n )\n }\n\n const normalizedScope = scope.startsWith('/') ? scope : `/${scope}`\n const fullPath = normalizedScope + (path.startsWith('/') ? '' : `/${path}`)\n\n if (!fullPath.includes(normalizedScope)) {\n throw new Error(\n `useScoped(): Path '${path}' must include scope prefix '${scope}'. ` +\n `Expected path to be under '${scope}' (e.g., '${scope}${path}')`\n )\n }\n\n this.middlewares.push({ path: fullPath, handlers: middleware })\n }\n\n /**\n * P1 Fix: Accurate path pattern matching for middleware\n * Handles wildcards: *, /api/*, /api\n */\n private matchesPath(pattern: string, path: string): boolean {\n if (pattern === '*') {\n return true // Global wildcard\n }\n\n if (!pattern.includes('*')) {\n return path === pattern // Exact match\n }\n\n // Handle /api/* format\n if (pattern.endsWith('/*')) {\n const basePattern = pattern.slice(0, -2) // Remove /*\n return path === basePattern || path.startsWith(`${basePattern}/`)\n }\n\n // Handle /api* format (without slash)\n if (pattern.endsWith('*')) {\n const basePattern = pattern.slice(0, -1)\n return path.startsWith(basePattern)\n }\n\n return false\n }\n\n /**\n * P2 optimization: Pre-compile middleware chain for a path\n */\n private getCompiledMiddlewareChain(path: string): GravitoMiddleware[] {\n // Check cache first\n if (this.middlewareChainCache.has(path)) {\n return this.middlewareChainCache.get(path)!\n }\n\n // Build chain\n const chain: GravitoMiddleware[] = []\n\n for (const mw of this.middlewares) {\n if (this.matchesPath(mw.path, path)) {\n chain.push(...mw.handlers)\n }\n }\n\n // Cache it\n this.middlewareChainCache.set(path, chain)\n\n return chain\n }\n\n /**\n * P0 Fix: Context object pooling to prevent state pollution\n */\n private acquireContext(request: Request): BunContext {\n const ctx = this.contextPool.pop()\n if (ctx) {\n ctx.reset(request)\n return ctx\n }\n return BunContext.create(request) as any\n }\n\n /**\n * P0 Fix: Release context back to pool\n */\n private releaseContext(ctx: BunContext): void {\n if (this.contextPool.length < this.maxPoolSize) {\n // Reset before returning to pool (with dummy request)\n ctx.reset(new Request('http://localhost/'))\n this.contextPool.push(ctx)\n }\n }\n\n mount(path: string, subAdapter: HttpAdapter): void {\n const fullPath = path.endsWith('/') ? `${path}*` : `${path}/*`\n\n // Register a wildcard route for ALL methods\n this.route('all' as HttpMethod, fullPath, async (ctx: GravitoContext) => {\n const url = new URL(ctx.req.url)\n // Strip the mounting path prefix (e.g., '/orbit') from the pathname\n const prefix = path.endsWith('/') ? path.slice(0, -1) : path\n\n if (url.pathname.startsWith(prefix)) {\n // Ensure we handle root correctly (e.g. /orbit needs to become / or similar based on router logic)\n const newPath = url.pathname.slice(prefix.length)\n url.pathname = newPath === '' ? '/' : newPath\n }\n\n // Create a clean request with minimal properties to avoid carrying over internal state\n const newReq = new Request(url.toString(), {\n method: ctx.req.method,\n headers: ctx.req.raw.headers,\n })\n\n const res = await subAdapter.fetch(newReq)\n // Ensure response is stored in context for middleware chain\n if ('res' in ctx) {\n ;(ctx as any).res = res\n }\n return res\n })\n }\n\n createContext(request: Request): GravitoContext {\n return BunContext.create(request)\n }\n\n onError(handler: GravitoErrorHandler): void {\n this.errorHandler = handler\n }\n\n onNotFound(handler: GravitoNotFoundHandler): void {\n this.notFoundHandler = handler\n }\n\n /**\n * 註冊 WebSocket 路由\n */\n registerWebSocketRoute(path: string, handlers: WebSocketRouteHandlers): void {\n this.wsHandler.register(path, handlers)\n }\n\n /**\n * 取得 WebSocket handler(供 Bun.serve 使用)\n */\n get websocket() {\n return this.wsHandler.hasAnyRoute() ? this.wsHandler.toHandler() : undefined\n }\n\n /**\n * Predictive Route Warming (JIT Optimization)\n */\n async warmup(paths: string[]): Promise<void> {\n const dummyReqOpts = { headers: { 'User-Agent': 'Gravito-Warmup/1.0' } }\n\n for (const path of paths) {\n const req = new Request(`http://localhost${path}`, dummyReqOpts)\n await this.fetch(req)\n }\n }\n\n async fetch(request: Request, _server?: unknown): Promise<Response> {\n // WebSocket upgrade check (before context acquisition)\n const url = new URL(request.url)\n if (\n _server != null &&\n typeof (_server as any).upgrade === 'function' &&\n request.headers.get('upgrade')?.toLowerCase() === 'websocket' &&\n this.wsHandler.hasRoute(url.pathname)\n ) {\n const upgraded = (_server as any).upgrade(request, {\n data: {\n path: url.pathname,\n id: crypto.randomUUID(),\n channels: new Set<string>(),\n },\n })\n if (upgraded) {\n return new Response(null, { status: 101 })\n }\n }\n\n // P0 Fix: Use context pool to prevent state pollution\n const ctx = this.acquireContext(request)\n\n try {\n const path = url.pathname\n const method = request.method\n\n const match = this.router.match(method, path)\n\n const handlers: Function[] = []\n\n // P2 optimization: Use pre-compiled middleware chain\n const middlewareChain = this.getCompiledMiddlewareChain(path)\n handlers.push(...middlewareChain)\n\n if (match) {\n if (match.params) {\n ;(ctx.req as BunRequest).setParams(match.params)\n }\n handlers.push(...match.handlers)\n } else if (this.notFoundHandler) {\n // P2 Fix: Add notFound handler only when needed\n handlers.push(this.notFoundHandler)\n }\n\n return await this.executeChain(ctx, handlers)\n } catch (err) {\n if (this.errorHandler) {\n try {\n const response = await this.errorHandler(err as Error, ctx)\n if (response) {\n return response\n }\n } catch (e) {\n console.error('Error handler failed', e)\n }\n }\n console.error(err)\n return new Response('Internal Server Error', { status: 500 })\n } finally {\n // P0 Fix: Always release context back to pool\n this.releaseContext(ctx)\n }\n }\n\n private async executeChain(ctx: GravitoContext, handlers: Function[]): Promise<Response> {\n let index = -1\n\n const dispatch = async (i: number): Promise<Response | undefined> => {\n if (i <= index) {\n throw new Error('next() called multiple times')\n }\n index = i\n\n const fn = handlers[i]\n if (!fn) {\n return undefined\n }\n\n const result = await fn(ctx, async () => {\n const res = await dispatch(i + 1)\n // If next() returned a response, attach it to context so subsequent c.header() calls work\n if (res && (ctx as any).res !== res) {\n ;(ctx as any).res = res\n }\n return res\n })\n\n return result\n }\n\n const finalResponse = await dispatch(0)\n\n if (\n finalResponse &&\n (finalResponse instanceof Response || typeof (finalResponse as Response).status === 'number')\n ) {\n return finalResponse as Response\n }\n\n // Check if context has stored response (from middleware/handler calls to ctx.json() etc)\n if ((ctx as any).res) {\n return (ctx as any).res!\n }\n\n // If no response returned and no notFoundHandler handled it:\n return new Response('Not Found', { status: 404 })\n }\n}\n",
|
|
131
129
|
"/**\n * Path segment (key) in a data structure.\n * @public\n */\nexport type PathSegment = string | number\n\n/**\n * Path to a value (dot notation or array of segments).\n * @public\n */\nexport type DataPath = string | readonly PathSegment[]\n\nfunction parsePath(path: DataPath | null | undefined): PathSegment[] {\n if (path === null || path === undefined) {\n return []\n }\n if (typeof path !== 'string') {\n return [...path]\n }\n\n if (path === '') {\n return []\n }\n\n return path.split('.').map((segment) => {\n const n = Number(segment)\n if (Number.isInteger(n) && String(n) === segment) {\n return n\n }\n return segment\n })\n}\n\nfunction getChild(current: unknown, key: PathSegment): unknown {\n if (current === null || current === undefined) {\n return undefined\n }\n\n if (current instanceof Map) {\n return current.get(key)\n }\n\n if (typeof current === 'object' || typeof current === 'function') {\n const record = current as Record<PropertyKey, unknown>\n return record[key as PropertyKey]\n }\n\n return undefined\n}\n\nfunction hasChild(current: unknown, key: PathSegment): boolean {\n if (current === null || current === undefined) {\n return false\n }\n\n if (current instanceof Map) {\n return current.has(key)\n }\n\n if (typeof current === 'object' || typeof current === 'function') {\n const record = current as Record<PropertyKey, unknown>\n return key in record\n }\n\n return false\n}\n\nfunction setChild(current: unknown, key: PathSegment, next: unknown): void {\n if (current === null || current === undefined) {\n throw new TypeError('dataSet target cannot be null or undefined.')\n }\n\n // Prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return\n }\n\n if (current instanceof Map) {\n current.set(key, next)\n return\n }\n\n if (typeof current === 'object' || typeof current === 'function') {\n const record = current as Record<PropertyKey, unknown>\n record[key as PropertyKey] = next\n return\n }\n\n throw new TypeError('dataSet target must be object-like.')\n}\n\n/**\n * Retrieve a value from a deep object using dot notation.\n * @public\n */\nexport function dataGet<TDefault = undefined>(\n target: unknown,\n path: DataPath | null | undefined,\n defaultValue?: TDefault\n): unknown | TDefault {\n const segments = parsePath(path)\n if (segments.length === 0) {\n return target\n }\n\n let current: unknown = target\n for (const segment of segments) {\n current = getChild(current, segment)\n if (current === undefined) {\n return defaultValue as TDefault\n }\n }\n\n return current\n}\n\n/**\n * Check if a key exists in a deep object using dot notation.\n * @public\n */\nexport function dataHas(target: unknown, path: DataPath | null | undefined): boolean {\n const segments = parsePath(path)\n if (segments.length === 0) {\n return true\n }\n\n let current: unknown = target\n for (const segment of segments) {\n if (!hasChild(current, segment)) {\n return false\n }\n current = getChild(current, segment)\n }\n\n return true\n}\n\n/**\n * Set a value in a deep object using dot notation.\n * @public\n */\nexport function dataSet(\n target: unknown,\n path: DataPath,\n setValue: unknown,\n overwrite = true\n): unknown {\n const segments = parsePath(path)\n if (segments.length === 0) {\n return target\n }\n\n let current: unknown = target\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i] as PathSegment\n const nextSegment = segments[i + 1] as PathSegment\n\n const existing = getChild(current, segment)\n if (\n existing !== undefined &&\n (typeof existing === 'object' || typeof existing === 'function')\n ) {\n current = existing\n continue\n }\n\n const created = typeof nextSegment === 'number' ? [] : {}\n setChild(current, segment, created)\n current = created\n }\n\n const last = segments[segments.length - 1] as PathSegment\n const existingLast = getChild(current, last)\n if (overwrite || existingLast === undefined) {\n setChild(current, last, setValue)\n }\n\n return target\n}\n",
|
|
132
130
|
"import { type DataPath, dataGet, dataHas, dataSet } from './data'\n\n/**\n * Array and Collection Helpers.\n * Provides utility methods for array manipulation and deep object access.\n * @public\n */\nexport const Arr = {\n get<TDefault = undefined>(\n target: unknown,\n path: DataPath | null | undefined,\n defaultValue?: TDefault\n ): unknown | TDefault {\n return dataGet(target, path, defaultValue)\n },\n\n has(target: unknown, path: DataPath | null | undefined): boolean {\n return dataHas(target, path)\n },\n\n set(target: unknown, path: DataPath, value: unknown, overwrite = true): unknown {\n return dataSet(target, path, value, overwrite)\n },\n\n wrap<T>(value: T | T[] | null | undefined): T[] {\n if (value === null || value === undefined) {\n return []\n }\n return Array.isArray(value) ? value : [value]\n },\n\n first<T>(items: readonly T[], callback?: (value: T, index: number) => boolean): T | undefined {\n if (!callback) {\n return items[0]\n }\n for (let i = 0; i < items.length; i++) {\n const value = items[i] as T\n if (callback(value, i)) {\n return value\n }\n }\n return undefined\n },\n\n last<T>(items: readonly T[], callback?: (value: T, index: number) => boolean): T | undefined {\n if (!callback) {\n return items.length ? items[items.length - 1] : undefined\n }\n for (let i = items.length - 1; i >= 0; i--) {\n const value = items[i] as T\n if (callback(value, i)) {\n return value\n }\n }\n return undefined\n },\n\n only<T extends Record<string, unknown>>(target: T, keys: readonly string[]): Partial<T> {\n const out: Partial<T> = {}\n for (const key of keys) {\n if (key in target) {\n out[key as keyof T] = target[key] as T[keyof T]\n }\n }\n return out\n },\n\n except<T extends Record<string, unknown>>(target: T, keys: readonly string[]): Partial<T> {\n const out: Partial<T> = {}\n const excluded = new Set(keys)\n for (const [key, value] of Object.entries(target)) {\n if (!excluded.has(key)) {\n out[key as keyof T] = value as T[keyof T]\n }\n }\n return out\n },\n\n flatten(items: unknown[], depth: number = Number.POSITIVE_INFINITY): unknown[] {\n const out: unknown[] = []\n const walk = (value: unknown, currentDepth: number) => {\n if (Array.isArray(value) && currentDepth > 0) {\n for (const v of value) {\n walk(v, currentDepth - 1)\n }\n return\n }\n out.push(value)\n }\n for (const item of items) {\n walk(item, depth)\n }\n return out\n },\n\n pluck<TItem extends Record<string, unknown>>(\n items: readonly TItem[],\n valuePath: DataPath,\n keyPath?: DataPath\n ): unknown[] | Record<string, unknown> {\n if (!keyPath) {\n return items.map((item) => dataGet(item, valuePath))\n }\n\n const out: Record<string, unknown> = {}\n for (const item of items) {\n const key = dataGet(item, keyPath)\n out[String(key)] = dataGet(item, valuePath)\n }\n return out\n },\n\n where<T>(items: readonly T[], callback: (value: T, index: number) => boolean): T[] {\n const out: T[] = []\n for (let i = 0; i < items.length; i++) {\n const value = items[i] as T\n if (callback(value, i)) {\n out.push(value)\n }\n }\n return out\n },\n} as const\n",
|
|
133
131
|
"import type { GravitoContext } from '../http/types'\n\n/**\n * Interface for displaying validation errors in views.\n * @public\n */\nexport interface ErrorBag {\n /** Check if a field has errors */\n has(field: string): boolean\n /** Get the first error message for a field (or any first error if no field specified) */\n first(field?: string): string | undefined\n /** Get all error messages for a field */\n get(field: string): string[]\n /** Get all errors for all fields */\n all(): Record<string, string[]>\n /** Check if there are any errors */\n any(): boolean\n /** Get total number of error messages */\n count(): number\n}\n\n/**\n * Create a new ErrorBag instance from raw errors.\n * @public\n */\nexport function createErrorBag(errors: Record<string, string[]>): ErrorBag {\n return {\n has: (field) => (errors[field]?.length ?? 0) > 0,\n first: (field) => {\n if (field) {\n return errors[field]?.[0]\n }\n for (const key of Object.keys(errors)) {\n if (errors[key]?.[0]) {\n return errors[key][0]\n }\n }\n return undefined\n },\n get: (field) => errors[field] ?? [],\n all: () => errors,\n any: () => Object.keys(errors).length > 0,\n count: () => Object.values(errors).flat().length,\n }\n}\n\n/**\n * Helper to retrieve the ErrorBag from session flash data.\n * @public\n */\nexport function errors(c: GravitoContext): ErrorBag {\n const session = c.get('session') as { getFlash?: (key: string) => unknown } | undefined\n const flashed = session?.getFlash?.('errors') ?? {}\n return createErrorBag(flashed as Record<string, string[]>)\n}\n\n/**\n * Helper to retrieve old input value from session flash.\n * @public\n */\nexport function old(c: GravitoContext, field: string, defaultValue?: unknown): unknown {\n const session = c.get('session') as { getFlash?: (key: string) => unknown } | undefined\n const oldInput = session?.getFlash?.('_old_input') ?? {}\n return (oldInput as Record<string, unknown>)[field] ?? defaultValue\n}\n",
|
|
@@ -160,9 +158,9 @@
|
|
|
160
158
|
"import type { PlanetCore } from '../PlanetCore'\nimport { TestResponse } from './TestResponse'\n\n/**\n * HttpTester provides a way to simulate HTTP requests against a PlanetCore instance\n * and returns a TestResponse for assertions.\n */\nexport class HttpTester {\n private cookies: Map<string, string> = new Map()\n\n constructor(private core: PlanetCore) {}\n\n /**\n * Make a GET request\n */\n async get(uri: string, headers: Record<string, string> = {}): Promise<TestResponse> {\n return this.call('GET', uri, null, headers)\n }\n\n /**\n * Make a POST request\n */\n async post(\n uri: string,\n data: any = null,\n headers: Record<string, string> = {}\n ): Promise<TestResponse> {\n return this.call('POST', uri, data, headers)\n }\n\n /**\n * Make a PUT request\n */\n async put(\n uri: string,\n data: any = null,\n headers: Record<string, string> = {}\n ): Promise<TestResponse> {\n return this.call('PUT', uri, data, headers)\n }\n\n /**\n * Make a PATCH request\n */\n async patch(\n uri: string,\n data: any = null,\n headers: Record<string, string> = {}\n ): Promise<TestResponse> {\n return this.call('PATCH', uri, data, headers)\n }\n\n /**\n * Make a DELETE request\n */\n async delete(\n uri: string,\n data: any = null,\n headers: Record<string, string> = {}\n ): Promise<TestResponse> {\n return this.call('DELETE', uri, data, headers)\n }\n\n /**\n * Core call method\n */\n private async call(\n method: string,\n uri: string,\n data: any,\n headers: Record<string, string>\n ): Promise<TestResponse> {\n const url = uri.startsWith('http')\n ? uri\n : `http://localhost${uri.startsWith('/') ? '' : '/'}${uri}`\n\n let body = null\n const requestHeaders = { ...headers }\n\n // Add cookies to headers\n if (this.cookies.size > 0) {\n const cookieString = Array.from(this.cookies.entries())\n .map(([name, value]) => `${name}=${value}`)\n .join('; ')\n requestHeaders.Cookie = cookieString\n }\n\n if (data) {\n if (typeof data === 'object' && !(data instanceof FormData) && !(data instanceof Blob)) {\n body = JSON.stringify(data)\n if (!requestHeaders['Content-Type'] && !requestHeaders['content-type']) {\n requestHeaders['Content-Type'] = 'application/json'\n }\n } else {\n body = data\n }\n }\n\n const request = new Request(url, {\n method,\n headers: requestHeaders,\n body,\n })\n\n // Use the core adapter's fetch directly to avoid network overhead\n const response = await this.core.adapter.fetch(request)\n\n // Capture cookies from response\n const setCookie = response.headers.get('Set-Cookie')\n if (setCookie) {\n // Handle multiple Set-Cookie headers (often separated by commas in Fetch API's get())\n const parts = setCookie.split(/,(?=[^;]+=[^;]+)/)\n for (const part of parts) {\n const cookiePair = part.split(';')[0].trim()\n const [name, ...valueParts] = cookiePair.split('=')\n if (name) {\n this.cookies.set(name, valueParts.join('='))\n }\n }\n }\n\n return new TestResponse(response)\n }\n}\n\n/**\n * Helper to create an HttpTester for a PlanetCore instance\n */\nexport function createHttpTester(core: PlanetCore): HttpTester {\n return new HttpTester(core)\n}\n",
|
|
161
159
|
"import { getRuntimeAdapter, type RuntimeAdapter, type RuntimeFileSink } from './runtime'\n\n/**\n * Safe append file operation with automatic fallback to node:fs/promises if not supported\n * @public\n */\nexport async function runtimeAppendFile(\n adapter: RuntimeAdapter,\n path: string,\n data: string\n): Promise<void> {\n if (adapter.appendFile) {\n return adapter.appendFile(path, data)\n }\n // Fallback: use node:fs/promises\n const fs = await import('node:fs/promises')\n await fs.appendFile(path, data, 'utf8')\n}\n\n/**\n * Safe text file reading with automatic fallback to node:fs/promises if not supported\n * @public\n */\nexport async function runtimeReadText(adapter: RuntimeAdapter, path: string): Promise<string> {\n if (adapter.readFileAsText) {\n return adapter.readFileAsText(path)\n }\n // Fallback: read as buffer and decode\n const buffer = await adapter.readFile(path)\n return new TextDecoder().decode(buffer)\n}\n\n/**\n * Safe JSON file reading with automatic fallback\n * @public\n */\nexport async function runtimeReadJSON<T = unknown>(\n adapter: RuntimeAdapter,\n path: string\n): Promise<T> {\n if (adapter.readFileAsJSON) {\n return adapter.readFileAsJSON<T>(path)\n }\n // Fallback: read as text and parse\n const text = await runtimeReadText(adapter, path)\n return JSON.parse(text || '{}') as T\n}\n\n/**\n * Safe directory creation with automatic fallback\n * @public\n */\nexport async function runtimeMkdir(\n adapter: RuntimeAdapter,\n path: string,\n options?: { recursive?: boolean }\n): Promise<void> {\n if (adapter.mkdir) {\n return adapter.mkdir(path, options)\n }\n // Fallback: use node:fs/promises\n const fs = await import('node:fs/promises')\n await fs.mkdir(path, { recursive: options?.recursive ?? true })\n}\n\n/**\n * Safe directory reading with automatic fallback\n * @public\n */\nexport async function runtimeReadDir(\n adapter: RuntimeAdapter,\n path: string\n): Promise<Array<{ name: string; isFile: boolean; isDirectory: boolean }>> {\n if (adapter.readDir) {\n return adapter.readDir(path)\n }\n // Fallback: use node:fs/promises\n const fs = await import('node:fs/promises')\n const entries = await fs.readdir(path, { withFileTypes: true })\n return entries.map((e) => ({\n name: e.name,\n isFile: e.isFile(),\n isDirectory: e.isDirectory(),\n }))\n}\n\n/**\n * Safe full file statistics reading with automatic fallback\n * @public\n */\nexport async function runtimeStatFull(\n adapter: RuntimeAdapter,\n path: string\n): Promise<{ size: number; mtimeMs: number; isFile: boolean; isDirectory: boolean }> {\n if (adapter.statFull) {\n return adapter.statFull(path)\n }\n // Fallback: use node:fs/promises and stat()\n const fs = await import('node:fs/promises')\n const stats = await fs.stat(path)\n return {\n size: stats.size,\n mtimeMs: stats.mtimeMs,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n }\n}\n\n/**\n * Safe file rename/move with automatic fallback\n * @public\n */\nexport async function runtimeRename(\n adapter: RuntimeAdapter,\n oldPath: string,\n newPath: string\n): Promise<void> {\n if (adapter.rename) {\n return adapter.rename(oldPath, newPath)\n }\n // Fallback: use node:fs/promises\n const fs = await import('node:fs/promises')\n await fs.rename(oldPath, newPath)\n}\n\n/**\n * Safe file sink creation with automatic fallback\n * @public\n */\nexport function runtimeCreateFileSink(adapter: RuntimeAdapter, path: string): RuntimeFileSink {\n if (adapter.createFileSink) {\n return adapter.createFileSink(path)\n }\n // Fallback: simple write accumulator (not efficient but functional)\n const chunks: Uint8Array[] = []\n return {\n write(data) {\n const buffer =\n typeof data === 'string'\n ? new TextEncoder().encode(data)\n : data instanceof ArrayBuffer\n ? new Uint8Array(data)\n : data\n chunks.push(buffer)\n },\n async flush() {\n // Flush all accumulated chunks to disk\n if (chunks.length > 0) {\n const full = new Uint8Array(chunks.reduce((acc, c) => acc + c.length, 0))\n let offset = 0\n for (const chunk of chunks) {\n full.set(chunk, offset)\n offset += chunk.length\n }\n await adapter.writeFile(path, full)\n }\n },\n async end() {\n await this.flush()\n chunks.length = 0\n },\n }\n}\n\n/**\n * Safe recursive directory removal with automatic fallback\n * @public\n */\nexport async function runtimeRemoveRecursive(adapter: RuntimeAdapter, path: string): Promise<void> {\n if (adapter.removeRecursive) {\n return adapter.removeRecursive(path)\n }\n // Fallback: use node:fs/promises\n const fs = await import('node:fs/promises')\n try {\n await fs.rm(path, { recursive: true, force: true })\n } catch {\n // Ignore if not found\n }\n}\n\n/**\n * Safe exclusive file write with automatic fallback\n * @public\n */\nexport async function runtimeWriteFileExclusive(\n adapter: RuntimeAdapter,\n path: string,\n data: string | Uint8Array\n): Promise<void> {\n if (adapter.writeFileExclusive) {\n return adapter.writeFileExclusive(path, data)\n }\n // Fallback: use node:fs/promises\n const fs = await import('node:fs/promises')\n const payload = typeof data === 'string' ? data : new TextDecoder().decode(data)\n await fs.writeFile(path, payload, { flag: 'wx' })\n}\n\n/**\n * Get default runtime adapter instance\n * @public\n */\nexport function getDefaultRuntimeAdapter(): RuntimeAdapter {\n return getRuntimeAdapter()\n}\n",
|
|
162
160
|
"/**\n * BinaryUtils - 統一的二進制轉換工具類\n *\n * 支援 Bun 原生 API 優化,並提供 Node.js 回退路徑。\n * 設計為 isomorphic,可在 Bun 和 Node.js 環境中運行。\n * @public\n */\n\n/**\n * 偵測當前是否在 Bun 運行時中\n */\nconst isBunRuntime = (): boolean =>\n typeof globalThis !== 'undefined' &&\n typeof (globalThis as Record<string, unknown>).Bun !== 'undefined'\n\n/**\n * BinaryUtils - 提供統一的二進制轉換、編碼、壓縮工具\n * 所有方法均為靜態方法,可直接呼叫\n * @public\n */\nexport class BinaryUtils {\n /**\n * 將各種資料類型轉換為 Uint8Array\n * @param data - 輸入資料(Blob、Buffer、string、ArrayBuffer 或 Uint8Array)\n * @returns Uint8Array\n * @public\n */\n static async toUint8Array(\n data: Blob | Buffer | string | ArrayBuffer | Uint8Array\n ): Promise<Uint8Array> {\n if (data instanceof Uint8Array) {\n return data\n }\n if (typeof data === 'string') {\n return new TextEncoder().encode(data)\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data)\n }\n if (typeof Buffer !== 'undefined' && data instanceof Buffer) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n }\n if (data instanceof Blob) {\n return new Uint8Array(await data.arrayBuffer())\n }\n throw new TypeError('[BinaryUtils] toUint8Array: 不支援的資料類型')\n }\n\n /**\n * 將各種資料類型轉換為 ArrayBuffer\n * @param data - 輸入資料\n * @returns ArrayBuffer\n * @public\n */\n static async toArrayBuffer(\n data: Blob | Buffer | string | Uint8Array | ArrayBuffer\n ): Promise<ArrayBuffer> {\n if (data instanceof ArrayBuffer) {\n return data\n }\n const bytes = await BinaryUtils.toUint8Array(data as Blob | Buffer | string | Uint8Array)\n return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer\n }\n\n /**\n * 將 Uint8Array 編碼為 Base64 字串\n * 在 Bun 環境中使用原生 toBase64(),否則使用 Buffer\n * @param data - 輸入的 Uint8Array\n * @returns Base64 字串\n * @public\n */\n static toBase64(data: Uint8Array): string {\n if (data.length === 0) {\n return ''\n }\n const bunTyped = data as Uint8Array & { toBase64?: () => string }\n if (typeof bunTyped.toBase64 === 'function') {\n return bunTyped.toBase64()\n }\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('base64')\n }\n let binary = ''\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i] as number)\n }\n return btoa(binary)\n }\n\n /**\n * 將 Base64 字串解碼為 Uint8Array\n * @param base64 - Base64 字串\n * @returns Uint8Array\n * @public\n */\n static fromBase64(base64: string): Uint8Array {\n if (!base64 || base64.length === 0) {\n return new Uint8Array(0)\n }\n const BunUint8Array = Uint8Array as typeof Uint8Array & {\n fromBase64?: (s: string) => Uint8Array\n }\n if (typeof BunUint8Array.fromBase64 === 'function') {\n return BunUint8Array.fromBase64(base64)\n }\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(base64, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n }\n const binary = atob(base64)\n const bytes = new Uint8Array(binary.length)\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i)\n }\n return bytes\n }\n\n /**\n * 將 Uint8Array 編碼為 Base64URL 字串(URL 安全,無填充)\n * @param data - 輸入的 Uint8Array\n * @returns Base64URL 字串\n * @public\n */\n static toBase64Url(data: Uint8Array): string {\n if (data.length === 0) {\n return ''\n }\n // 使用 Node.js Buffer 或標準 Base64 並進行轉換\n const base64 = BinaryUtils.toBase64(data)\n return base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n }\n\n /**\n * 將 Base64URL 字串解碼為 Uint8Array\n * @param base64url - Base64URL 字串\n * @returns Uint8Array\n * @public\n */\n static fromBase64Url(base64url: string): Uint8Array {\n if (!base64url || base64url.length === 0) {\n return new Uint8Array(0)\n }\n const BunUint8Array = Uint8Array as typeof Uint8Array & {\n fromBase64?: (s: string, opts?: { alphabet?: string }) => Uint8Array\n }\n if (typeof BunUint8Array.fromBase64 === 'function') {\n return BunUint8Array.fromBase64(base64url, { alphabet: 'base64url' })\n }\n const base64 = base64url.replace(/-/g, '+').replace(/_/g, '/')\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=')\n return BinaryUtils.fromBase64(padded)\n }\n\n /**\n * 將 Uint8Array 編碼為十六進制字串\n * 在 Bun 環境中使用原生 toHex(),否則使用 Buffer\n * @param data - 輸入的 Uint8Array\n * @returns 十六進制字串(小寫)\n * @public\n */\n static toHex(data: Uint8Array): string {\n if (data.length === 0) {\n return ''\n }\n const bunTyped = data as Uint8Array & { toHex?: () => string }\n if (typeof bunTyped.toHex === 'function') {\n return bunTyped.toHex()\n }\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('hex')\n }\n return Array.from(data)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n\n /**\n * 將十六進制字串解碼為 Uint8Array\n * @param hex - 十六進制字串\n * @returns Uint8Array\n * @throws {TypeError} 如果輸入不是有效的十六進制字串\n * @public\n */\n static fromHex(hex: string): Uint8Array {\n if (!hex || hex.length === 0) {\n return new Uint8Array(0)\n }\n if (hex.length % 2 !== 0) {\n throw new TypeError(\n `[BinaryUtils] fromHex: 十六進制字串長度必須為偶數,收到長度 ${hex.length}`\n )\n }\n if (!/^[0-9a-fA-F]+$/.test(hex)) {\n throw new TypeError('[BinaryUtils] fromHex: 輸入包含無效的十六進制字元')\n }\n const BunUint8Array = Uint8Array as typeof Uint8Array & {\n fromHex?: (s: string) => Uint8Array\n }\n if (typeof BunUint8Array.fromHex === 'function') {\n return BunUint8Array.fromHex(hex)\n }\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(hex, 'hex')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n }\n const bytes = new Uint8Array(hex.length / 2)\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16)\n }\n return bytes\n }\n\n /**\n * 使用 gzip 壓縮資料\n * 在 Bun 環境中使用原生 Bun.gzipSync(),在 Node.js 中使用 zlib\n * @param data - 輸入資料\n * @param level - 壓縮等級(0-9),預設為 6\n * @returns 壓縮後的 Uint8Array\n * @public\n */\n static async gzip(data: Uint8Array, level = 6): Promise<Uint8Array> {\n if (data.length === 0) {\n return data\n }\n if (isBunRuntime()) {\n const bunGlobal = (globalThis as Record<string, unknown>).Bun as {\n gzipSync?: (data: Uint8Array, opts?: { level?: number }) => Uint8Array\n }\n if (typeof bunGlobal?.gzipSync === 'function') {\n return bunGlobal.gzipSync(data, { level })\n }\n }\n const { gzipSync } = await import('node:zlib')\n const result = gzipSync(data, { level })\n return new Uint8Array(result.buffer, result.byteOffset, result.byteLength)\n }\n\n /**\n * 解壓縮 gzip 資料\n * 在 Bun 環境中使用原生 Bun.gunzipSync(),在 Node.js 中使用 zlib\n * @param data - gzip 壓縮的 Uint8Array\n * @returns 解壓縮後的 Uint8Array\n * @public\n */\n static async gunzip(data: Uint8Array): Promise<Uint8Array> {\n if (data.length === 0) {\n return data\n }\n if (isBunRuntime()) {\n const bunGlobal = (globalThis as Record<string, unknown>).Bun as {\n gunzipSync?: (data: Uint8Array) => Uint8Array\n }\n if (typeof bunGlobal?.gunzipSync === 'function') {\n return bunGlobal.gunzipSync(data)\n }\n }\n const { gunzipSync } = await import('node:zlib')\n const result = gunzipSync(data)\n return new Uint8Array(result.buffer, result.byteOffset, result.byteLength)\n }\n\n /**\n * 將 ReadableStream<Uint8Array> 讀取為 Uint8Array\n * 在 Bun 環境中使用原生 Bun.readableStreamToBytes(),否則手動讀取 chunks\n * @param stream - 輸入的 ReadableStream\n * @returns Uint8Array\n * @public\n */\n static async readableStreamToBytes(stream: ReadableStream<Uint8Array>): Promise<Uint8Array> {\n if (isBunRuntime()) {\n const bunGlobal = (globalThis as Record<string, unknown>).Bun as {\n readableStreamToBytes?: (\n stream: ReadableStream<Uint8Array>\n ) => Promise<Uint8Array | ArrayBuffer>\n }\n if (typeof bunGlobal?.readableStreamToBytes === 'function') {\n const result = await bunGlobal.readableStreamToBytes(stream)\n // 如果返回 ArrayBuffer,轉換為 Uint8Array\n if (result instanceof ArrayBuffer) {\n return new Uint8Array(result)\n }\n return result as Uint8Array\n }\n }\n const chunks: Uint8Array[] = []\n let totalLength = 0\n const reader = stream.getReader()\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) {\n break\n }\n if (value) {\n chunks.push(value)\n totalLength += value.length\n }\n }\n } finally {\n reader.releaseLock()\n }\n const result = new Uint8Array(totalLength)\n let offset = 0\n for (const chunk of chunks) {\n result.set(chunk, offset)\n offset += chunk.length\n }\n return result\n }\n\n /**\n * 將 ReadableStream<Uint8Array> 讀取為 ArrayBuffer\n * @param stream - 輸入的 ReadableStream\n * @returns ArrayBuffer\n * @public\n */\n static async readableStreamToArrayBuffer(\n stream: ReadableStream<Uint8Array>\n ): Promise<ArrayBuffer> {\n const bytes = await BinaryUtils.readableStreamToBytes(stream)\n return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer\n }\n}\n",
|
|
163
|
-
"/// <reference types=\"bun-types\" />\n/**\n * @gravito/core\n *\n * The core micro-kernel for the Galaxy Architecture.\n *\n * @packageDocumentation\n */\n\n// Export version from package.json\nimport packageJson from '../package.json'\nimport type { GravitoConfig } from './PlanetCore'\n\n/**\n * Current version of @gravito/core.\n * @public\n */\nexport const VERSION = packageJson.version\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Gravito HTTP Abstractions (v2.0 - Adapter Pattern)\n// These types enable swapping out the underlying HTTP engine.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport { GravitoEngineAdapter } from './adapters/GravitoEngineAdapter'\n\n// Adapters\nexport type { AdapterConfig, AdapterFactory, HttpAdapter, RouteDefinition } from './adapters/types'\nexport { isHttpAdapter } from './adapters/types'\n// HTTP Types\nexport type {\n ContentfulStatusCode,\n GravitoContext,\n GravitoErrorHandler,\n GravitoHandler,\n GravitoMiddleware,\n GravitoNext,\n GravitoNotFoundHandler,\n GravitoRequest,\n GravitoVariables,\n HttpMethod,\n ProxyOptions,\n StatusCode,\n ValidationTarget,\n} from './http/types'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Core Exports\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Application (Enterprise Container)\nexport { Application, type ApplicationConfig } from './Application'\nexport { type CommandHandler, CommandKernel } from './CommandKernel'\nexport { ConfigManager } from './ConfigManager'\nexport { Container, type Factory, type ServiceKey, type ServiceMap } from './Container'\nexport { RequestScopeManager } from './Container/RequestScopeManager'\nexport {\n RequestScopeMetrics,\n RequestScopeMetricsCollector,\n type RequestScopeObserver,\n} from './Container/RequestScopeMetrics'\nexport { registerQueueCommands } from './cli/queue-commands'\n// Error Handler (extracted from PlanetCore for SRP)\nexport {\n codeFromStatus,\n ErrorHandler,\n type ErrorHandlerDeps,\n messageFromStatus,\n} from './ErrorHandler'\n// Events\nexport { EventManager } from './EventManager'\n// RequestScope-Aware Error Handling\nexport {\n cleanupRequestScopeOnError,\n detectRequestScopeLeaks,\n extractRequestScopeErrorContext,\n RequestScopeCleanupError,\n type RequestScopeErrorContext,\n withRequestScopeCleanup,\n} from './error-handling/RequestScopeErrorContext'\n// Event System\nexport type {\n BackpressureConfig,\n BackpressureDecision,\n BackpressureMetricsSnapshot,\n BackpressureStrategy,\n CircuitBreakerMetrics,\n CircuitBreakerMetricsRecorder,\n CircuitBreakerOptions,\n DeadLetterDecision,\n DLQEntry,\n DLQEntryCallback,\n DLQEntrySource,\n DLQFilter,\n EventBackend,\n EventOptions,\n EventQueueConfig,\n EventTask,\n FlowControlContext,\n FlowControlStrategy,\n MultiPriorityQueueDepth,\n PriorityStatistics,\n RetrySchedulerConfig,\n WindowAdjustment,\n WorkerPoolConfig,\n WorkerPoolStats,\n WorkerStats,\n} from './events'\nexport {\n BackpressureManager,\n BackpressureState,\n CircuitBreaker,\n CircuitBreakerState,\n CompositeStrategy,\n DEFAULT_EVENT_OPTIONS,\n DeadLetterQueue,\n EventPriorityQueue,\n IdempotencyCache,\n PriorityEscalationManager,\n PriorityRebalanceStrategy,\n QueueDepthStrategy,\n RateLimitStrategy,\n RetryScheduler,\n StarvationProtectionStrategy,\n WorkerPool,\n WorkerPoolMetrics,\n} from './events'\n// Event System Observability\nexport type {\n EventTracingConfig,\n ObservabilityConfig,\n QueueDepthCallback,\n} from './events/observability'\nexport {\n EventMetrics,\n EventTracer,\n EventTracing,\n getEventTracing,\n ObservableHookManager,\n OTelEventMetrics,\n} from './events/observability'\n// ─────────────────────────────────────────────────────────────────────────────\n// Observability Contracts (Phase 2.2)\n// ─────────────────────────────────────────────────────────────────────────────\n// Abstract interfaces for observability providers\n// Concrete implementations provided by @gravito/monitor\nexport type {\n EventMetricsRecorder,\n EventTracingProvider,\n ObservabilityProvider,\n TracingSpan,\n WorkerMetricsProvider,\n} from './observability/contracts'\nexport { createNoOpObservabilityProvider } from './observability/contracts'\n// Queue Dashboard & CLI\nexport {\n type DashboardSnapshot,\n type ErrorStats,\n type JobEvent,\n QueueDashboard,\n type QueueDashboardConfig,\n type QueueMetrics,\n type WorkerMetrics as QueueWorkerMetrics,\n} from './observability/QueueDashboard'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// OpenTelemetry Instrumentation\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Exceptions\nexport * from './exceptions'\n// Global Error Handlers\nexport {\n type GlobalErrorHandlersMode,\n type GlobalProcessErrorHandlerContext,\n type GlobalProcessErrorKind,\n type RegisterGlobalErrorHandlersOptions,\n registerGlobalErrorHandlers,\n} from './GlobalErrorHandlers'\nexport { type GravitoManifest, GravitoServer } from './GravitoServer'\n// Hooks\nexport type { ActionCallback, FilterCallback, ListenerInfo, ListenerOptions } from './HookManager'\nexport { HookManager, type HookManagerConfig } from './HookManager'\n// Health\nexport type { HealthCheck, HealthCheckResult } from './health/HealthProvider'\nexport { HealthProvider } from './health/HealthProvider'\nexport type { DumpOptions } from './helpers'\n// Helpers\nexport {\n Arr,\n abort,\n abortIf,\n abortUnless,\n app,\n blank,\n config,\n DumpDieError,\n dd,\n dump,\n env,\n filled,\n hasApp,\n logger,\n router,\n Str,\n setApp,\n tap,\n throwIf,\n throwUnless,\n value,\n} from './helpers'\nexport * from './helpers/data'\nexport * from './helpers/errors'\nexport * from './helpers/response'\n// HTTP / Security utilities\nexport { CookieJar, type CookieOptions } from './http/CookieJar'\nexport { deleteCookie, getCookie, setCookie } from './http/cookie'\n// HTTP Middleware moved to @gravito/photon/middleware (Phase 2.1)\n// - bodySizeLimit → @gravito/photon/middleware/body\n// - cors → @gravito/photon/middleware/cors\n// - csrfProtection, getCsrfToken → @gravito/photon/middleware/security\n// - createHeaderGate, requireHeaderToken → @gravito/photon/middleware/security\n// - securityHeaders → @gravito/photon/middleware/security\n// - throttleRequests (was ThrottleRequests) → @gravito/photon/middleware/rate-limit\n// OpenTelemetry exports moved to @gravito/monitor (Phase 2.2)\n// Import from @gravito/monitor for OTel functionality\n// Listeners\nexport type { Listener, ShouldQueue } from './Listener'\n// Logger\nexport type { Logger } from './Logger'\nexport { ConsoleLogger } from './Logger'\n// PlanetCore (Main Application Class)\nexport {\n type CacheService,\n type ErrorHandlerContext,\n type GravitoConfig,\n type GravitoOrbit,\n PlanetCore,\n type ViewService,\n} from './PlanetCore'\n// Request Context\nexport {\n RequestContext,\n type RequestContextData,\n} from './RequestContext'\n// Routing\nexport { Route } from './Route'\nexport {\n type ControllerClass,\n FORM_REQUEST_SYMBOL,\n type FormRequestClass,\n type FormRequestLike,\n RouteGroup,\n type RouteHandler,\n type RouteOptions,\n Router,\n} from './Router'\n// Reliability\nexport type { DLQManagerFilter, DLQRecord, DLQStats, RetryPolicy } from './reliability'\nexport {\n DeadLetterQueueManager,\n getDefaultRetryPolicy,\n getPresetRetryPolicy,\n RetryEngine,\n} from './reliability'\n// Service Provider\nexport { ServiceProvider } from './ServiceProvider'\n// Security\nexport { Encrypter, type EncrypterOptions } from './security/Encrypter'\n// Event Types\nexport type { Channel, ShouldBroadcast } from './types/events'\nexport { Event } from './types/events'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Testing Utilities\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport * from './testing'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Runtime Adapters\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport {\n type ArchiveCreateOptions,\n type ArchiveEntry,\n type ArchiveExtractOptions,\n type ArchiveFileInfo,\n type ArchiveFromDirectoryOptions,\n archiveFromDirectory,\n type CompressionOptions,\n createHtmlRenderCallbacks,\n createSqliteDatabase,\n type EscapeHtmlFn,\n getArchiveAdapter,\n getCompressionAdapter,\n getEscapeHtml,\n getMarkdownAdapter,\n getPasswordAdapter,\n getRuntimeAdapter,\n getRuntimeEnv,\n getRuntimeKind,\n type MarkdownRenderCallbacks,\n type MarkdownRenderOptions,\n type RuntimeAdapter,\n type RuntimeArchiveAdapter,\n type RuntimeCompressionAdapter,\n type RuntimeFileSink,\n type RuntimeFileStat,\n type RuntimeKind,\n type RuntimeMarkdownAdapter,\n type RuntimePasswordAdapter,\n type RuntimeProcess,\n type RuntimeProcessOutput,\n type RuntimeResourceUsage,\n type RuntimeServeConfig,\n type RuntimeServer,\n type RuntimeSpawnOptions,\n type RuntimeSpawnSyncResult,\n type RuntimeSqliteDatabase,\n type RuntimeSqliteStatement,\n toUint8Array,\n} from './runtime'\nexport {\n getDefaultRuntimeAdapter,\n runtimeAppendFile,\n runtimeCreateFileSink,\n runtimeMkdir,\n runtimeReadDir,\n runtimeReadJSON,\n runtimeReadText,\n runtimeRemoveRecursive,\n runtimeRename,\n runtimeStatFull,\n runtimeWriteFileExclusive,\n} from './runtime-helpers'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Deep Equals & Binary Utilities\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport { BinaryUtils } from './binary'\nexport type { DeepEqualsFn, DeepEqualsOptions } from './runtime/deep-equals'\nexport { getDeepEquals } from './runtime/deep-equals'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Standalone Engine (High-Performance Bun-Only Engine)\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Re-export engine module for @gravito/core/engine import path\nexport * as engine from './engine'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// FFI (Foreign Function Interface) - Native Acceleration Layer\n// Re-export via @gravito/core/ffi to avoid compile-time FFI initialization\n// ─────────────────────────────────────────────────────────────────────────────\n// Note: Import via `import { NativeAccelerator } from '@gravito/core/ffi'`\n// Do NOT import directly from main entry to avoid compile-time FFI loading\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Configuration Helper\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Configure your Gravito application\n *\n * @example\n * ```typescript\n * const config = defineConfig({\n * config: {\n * APP_NAME: 'My App',\n * PORT: 3000,\n * },\n * orbits: [], // Add your orbits here\n * })\n *\n * const core = await PlanetCore.boot(config)\n * ```\n */\nexport function defineConfig(config: GravitoConfig): GravitoConfig {\n return config\n}\n"
|
|
161
|
+
"/// <reference types=\"bun-types\" />\n/**\n * @gravito/core\n *\n * The core micro-kernel for the Galaxy Architecture.\n *\n * @packageDocumentation\n */\n\n// Export version from package.json\nimport packageJson from '../package.json'\nimport type { GravitoConfig } from './PlanetCore'\n\n/**\n * Current version of @gravito/core.\n * @public\n */\nexport const VERSION = packageJson.version\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Gravito HTTP Abstractions (v2.0 - Adapter Pattern)\n// These types enable swapping out the underlying HTTP engine.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport { BunNativeAdapter } from './adapters/bun/BunNativeAdapter'\nexport { GravitoEngineAdapter } from './adapters/GravitoEngineAdapter'\n// Adapters\nexport type { AdapterConfig, AdapterFactory, HttpAdapter, RouteDefinition } from './adapters/types'\nexport { isHttpAdapter } from './adapters/types'\n// HTTP Types\nexport type {\n ContentfulStatusCode,\n GravitoContext,\n GravitoErrorHandler,\n GravitoHandler,\n GravitoMiddleware,\n GravitoNext,\n GravitoNotFoundHandler,\n GravitoRequest,\n GravitoVariables,\n HttpMethod,\n ProxyOptions,\n StatusCode,\n ValidationTarget,\n} from './http/types'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Core Exports\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Application (Enterprise Container)\nexport { Application, type ApplicationConfig } from './Application'\nexport { type CommandHandler, CommandKernel } from './CommandKernel'\nexport { ConfigManager } from './ConfigManager'\nexport { Container, type Factory, type ServiceKey, type ServiceMap } from './Container'\nexport { RequestScopeManager } from './Container/RequestScopeManager'\nexport {\n RequestScopeMetrics,\n RequestScopeMetricsCollector,\n type RequestScopeObserver,\n} from './Container/RequestScopeMetrics'\nexport { registerQueueCommands } from './cli/queue-commands'\n// Error Handler (extracted from PlanetCore for SRP)\nexport {\n codeFromStatus,\n ErrorHandler,\n type ErrorHandlerDeps,\n messageFromStatus,\n} from './ErrorHandler'\n// Events\nexport { EventManager } from './EventManager'\n// RequestScope-Aware Error Handling\nexport {\n cleanupRequestScopeOnError,\n detectRequestScopeLeaks,\n extractRequestScopeErrorContext,\n RequestScopeCleanupError,\n type RequestScopeErrorContext,\n withRequestScopeCleanup,\n} from './error-handling/RequestScopeErrorContext'\n// Event System\nexport type {\n BackpressureConfig,\n BackpressureDecision,\n BackpressureMetricsSnapshot,\n BackpressureStrategy,\n CircuitBreakerMetrics,\n CircuitBreakerMetricsRecorder,\n CircuitBreakerOptions,\n DeadLetterDecision,\n DLQEntry,\n DLQEntryCallback,\n DLQEntrySource,\n DLQFilter,\n EventBackend,\n EventOptions,\n EventQueueConfig,\n EventTask,\n FlowControlContext,\n FlowControlStrategy,\n MultiPriorityQueueDepth,\n PriorityStatistics,\n RetrySchedulerConfig,\n WindowAdjustment,\n WorkerPoolConfig,\n WorkerPoolStats,\n WorkerStats,\n} from './events'\nexport {\n BackpressureManager,\n BackpressureState,\n CircuitBreaker,\n CircuitBreakerState,\n CompositeStrategy,\n DEFAULT_EVENT_OPTIONS,\n DeadLetterQueue,\n EventPriorityQueue,\n IdempotencyCache,\n PriorityEscalationManager,\n PriorityRebalanceStrategy,\n QueueDepthStrategy,\n RateLimitStrategy,\n RetryScheduler,\n StarvationProtectionStrategy,\n WorkerPool,\n WorkerPoolMetrics,\n} from './events'\n// Event System Observability\nexport type {\n EventTracingConfig,\n ObservabilityConfig,\n QueueDepthCallback,\n} from './events/observability'\nexport {\n EventMetrics,\n EventTracer,\n EventTracing,\n getEventTracing,\n ObservableHookManager,\n OTelEventMetrics,\n} from './events/observability'\n// ─────────────────────────────────────────────────────────────────────────────\n// Observability Contracts (Phase 2.2)\n// ─────────────────────────────────────────────────────────────────────────────\n// Abstract interfaces for observability providers\n// Concrete implementations provided by @gravito/monitor\nexport type {\n EventMetricsRecorder,\n EventTracingProvider,\n ObservabilityProvider,\n TracingSpan,\n WorkerMetricsProvider,\n} from './observability/contracts'\nexport { createNoOpObservabilityProvider } from './observability/contracts'\n// Queue Dashboard & CLI\nexport {\n type DashboardSnapshot,\n type ErrorStats,\n type JobEvent,\n QueueDashboard,\n type QueueDashboardConfig,\n type QueueMetrics,\n type WorkerMetrics as QueueWorkerMetrics,\n} from './observability/QueueDashboard'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// OpenTelemetry Instrumentation\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Exceptions\nexport * from './exceptions'\n// Global Error Handlers\nexport {\n type GlobalErrorHandlersMode,\n type GlobalProcessErrorHandlerContext,\n type GlobalProcessErrorKind,\n type RegisterGlobalErrorHandlersOptions,\n registerGlobalErrorHandlers,\n} from './GlobalErrorHandlers'\nexport { type GravitoManifest, GravitoServer } from './GravitoServer'\n// Hooks\nexport type { ActionCallback, FilterCallback, ListenerInfo, ListenerOptions } from './HookManager'\nexport { HookManager, type HookManagerConfig } from './HookManager'\n// Health\nexport type { HealthCheck, HealthCheckResult } from './health/HealthProvider'\nexport { HealthProvider } from './health/HealthProvider'\nexport type { DumpOptions } from './helpers'\n// Helpers\nexport {\n Arr,\n abort,\n abortIf,\n abortUnless,\n app,\n blank,\n config,\n DumpDieError,\n dd,\n dump,\n env,\n filled,\n hasApp,\n logger,\n router,\n Str,\n setApp,\n tap,\n throwIf,\n throwUnless,\n value,\n} from './helpers'\nexport * from './helpers/data'\nexport * from './helpers/errors'\nexport * from './helpers/response'\n// HTTP / Security utilities\nexport { CookieJar, type CookieOptions } from './http/CookieJar'\nexport { deleteCookie, getCookie, setCookie } from './http/cookie'\n// HTTP Middleware moved to @gravito/photon/middleware (Phase 2.1)\n// - bodySizeLimit → @gravito/photon/middleware/body\n// - cors → @gravito/photon/middleware/cors\n// - csrfProtection, getCsrfToken → @gravito/photon/middleware/security\n// - createHeaderGate, requireHeaderToken → @gravito/photon/middleware/security\n// - securityHeaders → @gravito/photon/middleware/security\n// - throttleRequests (was ThrottleRequests) → @gravito/photon/middleware/rate-limit\n// OpenTelemetry exports moved to @gravito/monitor (Phase 2.2)\n// Import from @gravito/monitor for OTel functionality\n// Listeners\nexport type { Listener, ShouldQueue } from './Listener'\n// Logger\nexport type { Logger } from './Logger'\nexport { ConsoleLogger } from './Logger'\n// PlanetCore (Main Application Class)\nexport {\n type CacheService,\n type ErrorHandlerContext,\n type GravitoConfig,\n type GravitoOrbit,\n PlanetCore,\n type ViewService,\n} from './PlanetCore'\n// Request Context\nexport {\n RequestContext,\n type RequestContextData,\n} from './RequestContext'\n// Routing\nexport { Route } from './Route'\nexport {\n type ControllerClass,\n FORM_REQUEST_SYMBOL,\n type FormRequestClass,\n type FormRequestLike,\n RouteGroup,\n type RouteHandler,\n type RouteOptions,\n Router,\n} from './Router'\n// Reliability\nexport type { DLQManagerFilter, DLQRecord, DLQStats, RetryPolicy } from './reliability'\nexport {\n DeadLetterQueueManager,\n getDefaultRetryPolicy,\n getPresetRetryPolicy,\n RetryEngine,\n} from './reliability'\n// Service Provider\nexport { ServiceProvider } from './ServiceProvider'\n// Security\nexport { Encrypter, type EncrypterOptions } from './security/Encrypter'\n// Event Types\nexport type { Channel, ShouldBroadcast } from './types/events'\nexport { Event } from './types/events'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Testing Utilities\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport * from './testing'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Runtime Adapters\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport {\n type ArchiveCreateOptions,\n type ArchiveEntry,\n type ArchiveExtractOptions,\n type ArchiveFileInfo,\n type ArchiveFromDirectoryOptions,\n archiveFromDirectory,\n type CompressionOptions,\n createHtmlRenderCallbacks,\n createSqliteDatabase,\n type EscapeHtmlFn,\n getArchiveAdapter,\n getCompressionAdapter,\n getEscapeHtml,\n getMarkdownAdapter,\n getPasswordAdapter,\n getRuntimeAdapter,\n getRuntimeEnv,\n getRuntimeKind,\n type MarkdownRenderCallbacks,\n type MarkdownRenderOptions,\n type RuntimeAdapter,\n type RuntimeArchiveAdapter,\n type RuntimeCompressionAdapter,\n type RuntimeFileSink,\n type RuntimeFileStat,\n type RuntimeKind,\n type RuntimeMarkdownAdapter,\n type RuntimePasswordAdapter,\n type RuntimeProcess,\n type RuntimeProcessOutput,\n type RuntimeResourceUsage,\n type RuntimeServeConfig,\n type RuntimeServer,\n type RuntimeSpawnOptions,\n type RuntimeSpawnSyncResult,\n type RuntimeSqliteDatabase,\n type RuntimeSqliteStatement,\n resetRuntimeAdapter,\n toUint8Array,\n} from './runtime'\nexport {\n getDefaultRuntimeAdapter,\n runtimeAppendFile,\n runtimeCreateFileSink,\n runtimeMkdir,\n runtimeReadDir,\n runtimeReadJSON,\n runtimeReadText,\n runtimeRemoveRecursive,\n runtimeRename,\n runtimeStatFull,\n runtimeWriteFileExclusive,\n} from './runtime-helpers'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Deep Equals & Binary Utilities\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport { BinaryUtils } from './binary'\nexport type { DeepEqualsFn, DeepEqualsOptions } from './runtime/deep-equals'\nexport { getDeepEquals } from './runtime/deep-equals'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Standalone Engine (High-Performance Bun-Only Engine)\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Re-export engine module for @gravito/core/engine import path\nexport * as engine from './engine'\n\n// ─────────────────────────────────────────────────────────────────────────────\n// FFI (Foreign Function Interface) - Native Acceleration Layer\n// Re-export via @gravito/core/ffi to avoid compile-time FFI initialization\n// ─────────────────────────────────────────────────────────────────────────────\n// Note: Import via `import { NativeAccelerator } from '@gravito/core/ffi'`\n// Do NOT import directly from main entry to avoid compile-time FFI loading\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Configuration Helper\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Configure your Gravito application\n *\n * @example\n * ```typescript\n * const config = defineConfig({\n * config: {\n * APP_NAME: 'My App',\n * PORT: 3000,\n * },\n * orbits: [], // Add your orbits here\n * })\n *\n * const core = await PlanetCore.boot(config)\n * ```\n */\nexport function defineConfig(config: GravitoConfig): GravitoConfig {\n return config\n}\nexport * from './adapters/bun/index'\n"
|
|
164
162
|
],
|
|
165
|
-
"mappings": "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",
|
|
166
|
-
"debugId": "
|
|
163
|
+
"mappings": "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",
|
|
164
|
+
"debugId": "72B44EAE02419EE064756E2164756E21",
|
|
167
165
|
"names": []
|
|
168
166
|
}
|