@hyperttp/core 1.4.8 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/Core/HyperCore.d.ts +3 -15
  2. package/Core/HyperCore.d.ts.map +1 -1
  3. package/Core/HyperCore.js +2 -576
  4. package/Core/HyperCore.js.map +7 -1
  5. package/Core/RequestBuilder.d.ts +11 -0
  6. package/Core/RequestBuilder.d.ts.map +1 -0
  7. package/Core/RequestBuilder.js +2 -0
  8. package/Core/RequestBuilder.js.map +7 -0
  9. package/Core/index.js +2 -2
  10. package/Core/index.js.map +7 -1
  11. package/README.md +30 -0
  12. package/defaultConfig.js +2 -19
  13. package/defaultConfig.js.map +7 -1
  14. package/index.js +2 -3
  15. package/index.js.map +7 -1
  16. package/package.json +1 -1
  17. package/transports/browser.d.ts.map +1 -1
  18. package/transports/browser.js +2 -113
  19. package/transports/browser.js.map +7 -1
  20. package/transports/manager.d.ts +0 -33
  21. package/transports/manager.d.ts.map +1 -1
  22. package/transports/manager.js +7 -349
  23. package/transports/manager.js.map +7 -1
  24. package/transports/node.d.ts +1 -0
  25. package/transports/node.d.ts.map +1 -1
  26. package/transports/node.js +2 -380
  27. package/transports/node.js.map +7 -1
  28. package/utils/errors.d.ts +0 -11
  29. package/utils/errors.d.ts.map +1 -1
  30. package/utils/errors.js +2 -53
  31. package/utils/errors.js.map +7 -1
  32. package/utils/merge.js +2 -29
  33. package/utils/merge.js.map +7 -1
  34. package/utils/normalize.d.ts +12 -7
  35. package/utils/normalize.d.ts.map +1 -1
  36. package/utils/normalize.js +2 -285
  37. package/utils/normalize.js.map +7 -1
  38. package/utils/pipeline.js +2 -193
  39. package/utils/pipeline.js.map +7 -1
  40. package/utils/response.d.ts +0 -14
  41. package/utils/response.d.ts.map +1 -1
  42. package/utils/response.js +2 -389
  43. package/utils/response.js.map +7 -1
  44. package/utils/retryUtils.js +2 -55
  45. package/utils/retryUtils.js.map +7 -1
@@ -1 +1,7 @@
1
- {"version":3,"file":"HyperCore.js","sourceRoot":"","sources":["../../src/Core/HyperCore.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Core/HyperCore.ts"],
4
+ "sourcesContent": ["import type {\n IHyperCore,\n HyperTransport,\n HttpClientOptions,\n PluginContext,\n HyperPlugin,\n InternalRequest,\n HttpResponse,\n HyperttpError,\n RequestInterface,\n StreamResponse,\n RequestBodyData,\n Method,\n ResponseType,\n TransportResponse,\n} from \"@hyperttp/types\";\nimport { defaultConfig } from \"../defaultConfig.js\";\nimport { mapResponseFast, mapStreamFast } from \"../utils/response.js\";\nimport { TransportManager } from \"../transports/manager.js\";\nimport {\n createPipelines,\n executeErrorPipeline,\n executeRequestPipeline,\n executeResponsePipeline,\n executeResponseDataPipeline,\n insertHookSorted,\n} from \"../utils/pipeline.js\";\nimport { normalizeHeaders, normalizeBodyForTransport } from \"../utils/normalize.js\";\nimport { calcDelay, shouldRetry, drainBody } from \"../utils/retryUtils.js\";\nimport { TimeoutError } from \"../utils/errors.js\";\nimport { RequestBuilder } from \"./RequestBuilder.js\";\n\ntype TransportArgs = Parameters<HyperTransport[\"execute\"]>[0];\n\nconst sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));\nconst MAX_POOL_SIZE = 64;\n\nclass Semaphore {\n private current = 0;\n private queue: Array<() => void> = [];\n\n constructor(private max: number) {}\n\n acquire(): Promise<void> {\n if (this.current < this.max) {\n this.current++;\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n this.queue.push(() => {\n this.current++;\n resolve();\n });\n });\n }\n\n release(): void {\n const next = this.queue.shift();\n if (next) {\n next();\n } else {\n this.current--;\n }\n }\n}\n\n/**\n * @ru \u042F\u0434\u0440\u043E HTTP-\u043A\u043B\u0438\u0435\u043D\u0442\u0430 Hyperttp. \u041E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u0438\u0441\u043F\u0435\u0442\u0447\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044E \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0447\u0435\u0440\u0435\u0437\n * \u043A\u043E\u043D\u0432\u0435\u0439\u0435\u0440 \u043F\u043B\u0430\u0433\u0438\u043D\u043E\u0432, \u043F\u0443\u043B\u0438\u043D\u0433 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0438 \u043A\u044D\u0448\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 URL.\n * @en Hyperttp HTTP client core. Provides request dispatching through the\n * plugin pipeline, request object pooling, and URL caching.\n */\nexport class HyperCore implements IHyperCore {\n public config: HttpClientOptions;\n private readonly transportManager: TransportManager;\n private readonly transportReady: Promise<HyperTransport>;\n private readonly defaultHeaders: Record<string, string | string[]>;\n private readonly pluginCtx: PluginContext;\n private readonly pipelines = createPipelines();\n private readonly requestBuilder = new RequestBuilder();\n private readonly requestPool: InternalRequest[] = [];\n\n private semaphore: Semaphore | null = null;\n private hasRequestPlugins = false;\n private hasResponseDataPlugins = false;\n private hasResponsePlugins = false;\n private hasErrorPlugins = false;\n\n /**\n * @ru \u0421\u043E\u0437\u0434\u0430\u0451\u0442 \u043D\u043E\u0432\u044B\u0439 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u044F\u0434\u0440\u0430 HTTP-\u043A\u043B\u0438\u0435\u043D\u0442\u0430.\n * @en Creates a new HTTP client core instance.\n * @param config - Client configuration options.\n * @param transport - Optional custom transport implementation.\n */\n constructor(config: HttpClientOptions = defaultConfig, transport?: HyperTransport) {\n this.config = {\n ...defaultConfig,\n ...config,\n network: {\n ...defaultConfig.network,\n ...config.network,\n stealth:\n config.network?.stealth || defaultConfig.network?.stealth\n ? Object.assign({}, defaultConfig.network?.stealth, config.network?.stealth)\n : undefined,\n },\n };\n this.transportManager = new TransportManager(this.config, transport);\n this.transportReady = this.transportManager.getSync()\n ? Promise.resolve(this.transportManager.getSync()!)\n : this.transportManager.ensure();\n\n this.defaultHeaders = normalizeHeaders({\n Accept: \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, deflate, br\",\n \"User-Agent\": this.config.network?.userAgent ?? \"Hyperttp/2.0\",\n ...this.config.network?.headers,\n });\n\n const maxConcurrent = this.config.network?.maxConcurrent;\n this.semaphore = maxConcurrent != null && maxConcurrent > 0 ? new Semaphore(maxConcurrent) : null;\n\n this.pluginCtx = { config: this.config, core: this };\n }\n\n /**\n * @ru \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043C\u044F \u043A\u043B\u0430\u0441\u0441\u0430 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0433\u043E \u0442\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442\u0430.\n * @en Returns the class name of the currently active transport.\n * @returns Promise resolving to the transport class name.\n */\n public async getTransportName(): Promise<string> {\n const t = this.transportManager.transport ?? (await this.transportManager.get());\n return t.constructor.name;\n }\n\n /**\n * @ru \u041E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 \u0437\u0430\u043F\u0440\u043E\u0441 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043B\u043D\u044B\u0439 \u043A\u043E\u043D\u0432\u0435\u0439\u0435\u0440 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438:\n * \u043F\u043B\u0430\u0433\u0438\u043D\u044B \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u2192 \u0442\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442 \u2192 \u043F\u043B\u0430\u0433\u0438\u043D\u044B \u0434\u0430\u043D\u043D\u044B\u0445 \u043E\u0442\u0432\u0435\u0442\u0430 \u2192 \u043C\u0430\u043F\u043F\u0438\u043D\u0433 \u2192 \u043F\u043B\u0430\u0433\u0438\u043D\u044B \u043E\u0442\u0432\u0435\u0442\u0430.\n * @en Dispatches an internal request through the full processing pipeline:\n * request plugins \u2192 transport \u2192 response data plugins \u2192 mapping \u2192 response plugins.\n * @template T - Expected response body type.\n * @param req - The normalized internal request object.\n * @returns Promise resolving to the HTTP response.\n */\n public async dispatch<T = unknown>(req: InternalRequest): Promise<HttpResponse<T>> {\n const retryOpts = this.config.retry ?? {};\n const maxRetries = retryOpts.maxRetries ?? 0;\n\n for (let attempt = 0; ; attempt++) {\n try {\n if (this.hasRequestPlugins) {\n const syncResult = executeRequestPipeline(this.pipelines.request, req, this.pluginCtx);\n const shortCircuit = syncResult instanceof Promise ? await syncResult : syncResult;\n\n if (shortCircuit != null) {\n this.recycleRequest(req);\n return shortCircuit as HttpResponse<T>;\n }\n }\n\n if (req.body != null) {\n req.body = normalizeBodyForTransport(req.body, req.headers);\n }\n\n const transport =\n this.transportManager.transport ??\n this.transportManager.getSync() ??\n (await this.transportReady);\n\n if (this.semaphore) await this.semaphore.acquire();\n let rawResponse: TransportResponse;\n const networkStart = performance.now();\n try {\n rawResponse = await transport.execute(req as TransportArgs);\n } finally {\n this.semaphore?.release();\n }\n const networkMs = performance.now() - networkStart;\n\n const meta = req.meta as {\n responseType?: ResponseType;\n timings?: { networkMs?: number };\n };\n if (meta.timings) {\n meta.timings.networkMs = networkMs;\n }\n\n if (attempt < maxRetries && shouldRetry(rawResponse.status, retryOpts)) {\n await drainBody(rawResponse.body);\n await sleep(calcDelay(attempt, retryOpts));\n continue;\n }\n\n if (this.hasResponseDataPlugins) {\n const syncResult = executeResponseDataPipeline(\n this.pipelines.responseData,\n rawResponse,\n this.pluginCtx,\n );\n rawResponse = syncResult instanceof Promise ? await syncResult : syncResult;\n }\n\n const response =\n meta.responseType === \"stream\"\n ? mapStreamFast(rawResponse)\n : mapResponseFast(rawResponse);\n\n if (this.hasResponsePlugins) {\n const reqForPipeline =\n this.pipelines.responseSideEffects.length > 0\n ? {\n ...req,\n meta: {\n ...meta,\n timings: meta.timings ? { ...meta.timings } : undefined,\n },\n }\n : req;\n\n const syncResult = executeResponsePipeline(\n this.pipelines.responseMutators,\n this.pipelines.responseSideEffects,\n response as HttpResponse,\n reqForPipeline,\n this.pluginCtx,\n this.config.logger,\n );\n if (syncResult instanceof Promise) {\n await syncResult;\n }\n }\n\n this.recycleRequest(req);\n return response as HttpResponse<T>;\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n const timeout = this.config.network?.timeout;\n if (timeout != null && timeout > 0) {\n return this.handleDispatchError(new TimeoutError(req.url, timeout), req);\n }\n return this.handleDispatchError(error, req);\n }\n\n if (attempt < maxRetries && !req.signal?.aborted) {\n await sleep(calcDelay(attempt, retryOpts));\n continue;\n }\n\n return this.handleDispatchError(error as Error, req);\n }\n }\n }\n\n /**\n * @ru \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043F\u043B\u0430\u0433\u0438\u043D \u0432 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430. \u041F\u043B\u0430\u0433\u0438\u043D\u044B \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u044E\u0442\u0441\u044F \u0432 \u043F\u043E\u0440\u044F\u0434\u043A\u0435 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430.\n * @en Registers a plugin into the client instance. Plugins are executed in priority order.\n * @param plugin - The plugin instance to register.\n * @returns The current instance for chaining.\n */\n public use(plugin: HyperPlugin): this {\n const isEnabled = plugin.enabled ? plugin.enabled(this.config) : true;\n if (!isEnabled) return this;\n\n plugin.setup?.(this.pluginCtx);\n const priority = (plugin as { priority?: number }).priority ?? 0;\n const hook = { name: plugin.name, priority };\n\n if (plugin.onRequest) {\n insertHookSorted(this.pipelines.request, {\n ...hook,\n run: plugin.onRequest,\n });\n this.hasRequestPlugins = true;\n }\n if (plugin.onResponse) {\n const target =\n plugin.mode === \"background\"\n ? this.pipelines.responseSideEffects\n : this.pipelines.responseMutators;\n insertHookSorted(target, { ...hook, run: plugin.onResponse });\n this.hasResponsePlugins = true;\n }\n if (plugin.onResponseData) {\n insertHookSorted(this.pipelines.responseData, {\n ...hook,\n run: plugin.onResponseData,\n });\n this.hasResponseDataPlugins = true;\n }\n if (plugin.onError) {\n insertHookSorted(this.pipelines.error, { ...hook, run: plugin.onError });\n this.hasErrorPlugins = true;\n }\n return this;\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 GET-\u0437\u0430\u043F\u0440\u043E\u0441.\n * @en Performs a GET request.\n * @template T - Expected response body type.\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response.\n */\n public get<T = unknown>(req: RequestInterface | string, signal?: AbortSignal) {\n return this.dispatch<T>(this.acquireReq(\"GET\", req, undefined, signal));\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 POST-\u0437\u0430\u043F\u0440\u043E\u0441 \u0441 \u0442\u0435\u043B\u043E\u043C.\n * @en Performs a POST request with a body.\n * @template T - Expected response body type.\n * @param req - Request URL or RequestInterface object.\n * @param body - Request body data.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response.\n */\n public post<T = unknown>(\n req: RequestInterface | string,\n body?: RequestBodyData,\n signal?: AbortSignal,\n ) {\n return this.dispatch<T>(this.acquireReq(\"POST\", req, body, signal));\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 PUT-\u0437\u0430\u043F\u0440\u043E\u0441 \u0441 \u0442\u0435\u043B\u043E\u043C.\n * @en Performs a PUT request with a body.\n * @template T - Expected response body type.\n * @param req - Request URL or RequestInterface object.\n * @param body - Request body data.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response.\n */\n public put<T = unknown>(\n req: RequestInterface | string,\n body?: RequestBodyData,\n signal?: AbortSignal,\n ) {\n return this.dispatch<T>(this.acquireReq(\"PUT\", req, body, signal));\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 PATCH-\u0437\u0430\u043F\u0440\u043E\u0441 \u0441 \u0442\u0435\u043B\u043E\u043C.\n * @en Performs a PATCH request with a body.\n * @template T - Expected response body type.\n * @param req - Request URL or RequestInterface object.\n * @param body - Request body data.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response.\n */\n public patch<T = unknown>(\n req: RequestInterface | string,\n body?: RequestBodyData,\n signal?: AbortSignal,\n ) {\n return this.dispatch<T>(this.acquireReq(\"PATCH\", req, body, signal));\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 DELETE-\u0437\u0430\u043F\u0440\u043E\u0441.\n * @en Performs a DELETE request.\n * @template T - Expected response body type.\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response.\n */\n public delete<T = unknown>(req: RequestInterface | string, signal?: AbortSignal) {\n return this.dispatch<T>(this.acquireReq(\"DELETE\", req, undefined, signal));\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 OPTIONS-\u0437\u0430\u043F\u0440\u043E\u0441.\n * @en Performs an OPTIONS request.\n * @template T - Expected response body type.\n * @param req - Request URL or RequestInterface object.\n * @param body - Optional request body data.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response.\n */\n public options<T = unknown>(\n req: RequestInterface | string,\n body?: RequestBodyData,\n signal?: AbortSignal,\n ) {\n return this.dispatch<T>(this.acquireReq(\"OPTIONS\", req, body, signal));\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 HEAD-\u0437\u0430\u043F\u0440\u043E\u0441 (\u0431\u0435\u0437 \u0442\u0435\u043B\u0430 \u043E\u0442\u0432\u0435\u0442\u0430).\n * @en Performs a HEAD request (no response body).\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response with null body.\n */\n public head(req: RequestInterface | string, signal?: AbortSignal) {\n return this.dispatch<null>(this.acquireReq(\"HEAD\", req, undefined, signal));\n }\n\n /**\n * @ru \u0418\u043D\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043F\u043E\u0442\u043E\u043A\u043E\u0432\u044B\u0439 GET-\u0437\u0430\u043F\u0440\u043E\u0441. \u0422\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A ReadableStream.\n * @en Initiates a streaming GET request. Response body is returned as a ReadableStream.\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the stream response.\n */\n public stream(\n req: RequestInterface | string,\n signal?: AbortSignal,\n ): Promise<StreamResponse<unknown>> {\n return this.dispatch(this.acquireReq(\"GET\", req, undefined, signal, \"stream\")) as Promise<\n StreamResponse<unknown>\n >;\n }\n\n /**\n * @ru \u0418\u043D\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043F\u043E\u0442\u043E\u043A\u043E\u0432\u044B\u0439 POST-\u0437\u0430\u043F\u0440\u043E\u0441 \u0441 \u0442\u0435\u043B\u043E\u043C. \u0422\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A ReadableStream.\n * @en Initiates a streaming POST request with a body. Response body is returned as a ReadableStream.\n * @template T - Expected response body type.\n * @param req - Request URL or RequestInterface object.\n * @param body - Request body data.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the stream response.\n */\n public postStream<T = unknown>(\n req: RequestInterface | string,\n body?: RequestBodyData,\n signal?: AbortSignal,\n ): Promise<StreamResponse<T>> {\n return this.dispatch(this.acquireReq(\"POST\", req, body, signal, \"stream\")) as Promise<\n StreamResponse<T>\n >;\n }\n\n /**\n * @ru \u0421\u043E\u0437\u0434\u0430\u0451\u0442 \u043D\u043E\u0432\u044B\u0439 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043A\u043B\u0438\u0435\u043D\u0442\u0430, \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u044F\u044F \u0442\u0435\u043A\u0443\u0449\u0443\u044E \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044E \u0441 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u044B\u043C\u0438 \u043E\u043F\u0446\u0438\u044F\u043C\u0438.\n * @en Creates a new client instance by merging the current configuration with provided options.\n * @param options - Partial configuration options to extend.\n * @returns A new HyperCore instance.\n */\n public extend(options: Partial<HttpClientOptions>): HyperCore {\n return new HyperCore(\n {\n ...this.config,\n ...options,\n network: {\n ...this.config.network,\n ...options.network,\n stealth:\n options.network?.stealth || this.config.network?.stealth\n ? { ...this.config.network?.stealth, ...options.network?.stealth }\n : undefined,\n },\n },\n this.transportManager.transport ?? undefined,\n );\n }\n\n /**\n * @ru \u0421\u043E\u0437\u0434\u0430\u0451\u0442 \u043F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E \u043D\u043E\u0432\u044B\u0439 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u044B\u0445 \u043E\u043F\u0446\u0438\u0439.\n * @en Creates a completely new client instance based on provided options.\n * @param options - Partial configuration options for the new instance.\n * @returns A new HyperCore instance.\n */\n public create(options: Partial<HttpClientOptions>): HyperCore {\n return this.extend(options);\n }\n\n /**\n * @ru \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0440\u0430\u0431\u043E\u0442\u0443 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u0438 \u043E\u0441\u0432\u043E\u0431\u043E\u0436\u0434\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044B (\u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F, \u043F\u0443\u043B\u044B).\n * @en Shuts down the client and releases resources (connections, pools).\n * @param graceful - If true, waits for active requests to complete before closing.\n * @returns Promise that resolves when shutdown is complete.\n */\n public destroy(graceful = true): Promise<void> {\n return this.transportManager.destroy(graceful);\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 GET-\u0437\u0430\u043F\u0440\u043E\u0441 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0435\u043D\u043D\u043E\u0435 JSON-\u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430.\n * @en Performs a GET request and returns the parsed JSON response body.\n * @template T - Expected type of the parsed JSON.\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the parsed JSON data.\n */\n public json<T = unknown>(req: RequestInterface | string, signal?: AbortSignal): Promise<T> {\n return this.shortcut(req, signal).then((res) => {\n if (res.json) return res.json<T>();\n throw new Error(\"json() not supported\");\n });\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 GET-\u0437\u0430\u043F\u0440\u043E\u0441 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u043A\u0430\u043A \u0442\u0435\u043A\u0441\u0442.\n * @en Performs a GET request and returns the response body as text.\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the response text.\n */\n public text(req: RequestInterface | string, signal?: AbortSignal): Promise<string> {\n return this.shortcut(req, signal).then((res) => {\n if (res.text) return res.text();\n throw new Error(\"text() not supported\");\n });\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 GET-\u0437\u0430\u043F\u0440\u043E\u0441 \u0438 \u043D\u0435\u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E \u043E\u0442\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u0442\u0435\u043B\u043E \u043E\u0442\u0432\u0435\u0442\u0430 \u0434\u043B\u044F \u043E\u0441\u0432\u043E\u0431\u043E\u0436\u0434\u0435\u043D\u0438\u044F \u0440\u0435\u0441\u0443\u0440\u0441\u043E\u0432.\n * @en Performs a GET request and immediately discards the response body to free resources.\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise that resolves when the stream is drained.\n */\n public dump(req: RequestInterface | string, signal?: AbortSignal): Promise<void> {\n return this.shortcut(req, signal).then((res) => {\n if (res.dump) return res.dump();\n });\n }\n\n /**\n * @ru \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443 \u0434\u0438\u0441\u043F\u0435\u0442\u0447\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043D\u0432\u0435\u0439\u0435\u0440 \u043F\u043B\u0430\u0433\u0438\u043D\u043E\u0432 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u043E\u0448\u0438\u0431\u043E\u043A.\n * @en Handles dispatch errors through the error handling plugin pipeline.\n * @template T - Expected response body type.\n * @param error - The error that occurred.\n * @param req - The original internal request.\n * @returns Promise resolving to a recovered HTTP response, or throws if unrecoverable.\n */\n private async handleDispatchError<T>(\n error: Error,\n req: InternalRequest,\n ): Promise<HttpResponse<T>> {\n try {\n if (this.hasErrorPlugins) {\n const recovered = await executeErrorPipeline(\n this.pipelines.error,\n error as HyperttpError,\n req,\n this.pluginCtx,\n );\n if (recovered != null) {\n if (this.hasResponsePlugins) {\n const meta = req.meta;\n const reqForPipeline =\n this.pipelines.responseSideEffects.length > 0\n ? {\n ...req,\n meta: {\n ...meta,\n timings: meta?.timings ? { ...meta.timings } : undefined,\n },\n }\n : req;\n\n const syncResult = executeResponsePipeline(\n this.pipelines.responseMutators,\n this.pipelines.responseSideEffects,\n recovered as HttpResponse,\n reqForPipeline,\n this.pluginCtx,\n this.config.logger,\n );\n if (syncResult instanceof Promise) {\n await syncResult;\n }\n }\n return recovered as HttpResponse<T>;\n }\n }\n throw error;\n } finally {\n this.recycleRequest(req);\n }\n }\n\n /**\n * @ru \u0421\u043E\u0437\u0434\u0430\u0451\u0442 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u043E\u0431\u044A\u0435\u043A\u0442 InternalRequest \u0438\u0437 \u043F\u0443\u043B\u0430, \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u044F \u0435\u0433\u043E \u043F\u043E\u043B\u044F.\n * @en Creates or reuses an InternalRequest object from the pool, populating its fields.\n * @param method - HTTP method (GET, POST, etc.).\n * @param req - Request URL or RequestInterface object.\n * @param body - Optional request body data.\n * @param signal - Optional abort signal.\n * @param responseType - Optional response type hint ('stream').\n * @returns The populated internal request object.\n */\n private acquireReq(\n method: Method,\n req: RequestInterface | string,\n body?: RequestBodyData,\n signal?: AbortSignal,\n responseType?: \"stream\",\n ): InternalRequest {\n const pooled = this.requestPool.pop();\n return this.requestBuilder.build(\n method,\n req,\n body,\n signal,\n responseType,\n this.defaultHeaders,\n this.config,\n pooled,\n );\n }\n\n /**\n * @ru \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044A\u0435\u043A\u0442 \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u0432 \u043F\u0443\u043B \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F, \u043E\u0447\u0438\u0449\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0438 \u0434\u043B\u044F GC.\n * @en Returns the request object to the pool for reuse, clearing references for GC.\n * @param req - The internal request object to recycle.\n */\n private recycleRequest(req: InternalRequest): void {\n if (this.requestPool.length < MAX_POOL_SIZE) {\n req.method = \"GET\";\n req.url = \"\";\n req.headers = this.defaultHeaders;\n req.body = undefined;\n req.signal = undefined;\n req.stealth = undefined;\n\n const m = req.meta;\n if (m) {\n m.responseType = undefined;\n if (m.timings) {\n for (const key in m.timings) {\n (m.timings as any)[key] = undefined;\n }\n }\n }\n\n this.requestPool.push(req);\n }\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441 \u0441 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u043C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435\u043C HTTP-\u043C\u0435\u0442\u043E\u0434\u0430.\n * @en Performs a shortcut request with automatic HTTP method detection.\n * @param req - Request URL or RequestInterface object.\n * @param signal - Optional abort signal.\n * @returns Promise resolving to the HTTP response.\n */\n private shortcut(\n req: RequestInterface | string,\n signal?: AbortSignal,\n ): Promise<HttpResponse<unknown>> {\n const method = typeof req === \"string\" ? \"GET\" : (req.method ?? \"GET\");\n return this.dispatch(this.acquireReq(method, req, undefined, signal));\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["defaultConfig", "mapResponseFast", "mapStreamFast", "TransportManager", "createPipelines", "executeErrorPipeline", "executeRequestPipeline", "executeResponsePipeline", "executeResponseDataPipeline", "insertHookSorted", "normalizeHeaders", "normalizeBodyForTransport", "calcDelay", "shouldRetry", "drainBody", "TimeoutError", "RequestBuilder", "sleep", "ms", "resolve", "MAX_POOL_SIZE", "Semaphore", "max", "next", "config", "transport", "maxConcurrent", "req", "retryOpts", "maxRetries", "attempt", "syncResult", "shortCircuit", "rawResponse", "networkStart", "networkMs", "meta", "response", "reqForPipeline", "error", "timeout", "plugin", "priority", "hook", "target", "signal", "body", "options", "graceful", "res", "recovered", "method", "responseType", "pooled", "m", "key"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import type { HttpClientOptions, InternalRequest, RequestInterface, RequestBodyData, Method } from "@hyperttp/types";
2
+ export declare class RequestBuilder {
3
+ private urlCache;
4
+ private urlCacheCount;
5
+ private readonly MAX_CACHE_SIZE;
6
+ build(method: Method, req: RequestInterface | string, body: RequestBodyData | undefined, signal: AbortSignal | undefined, responseType: "stream" | undefined, defaultHeaders: Record<string, string | string[]>, config: HttpClientOptions, pooled?: InternalRequest): InternalRequest;
7
+ private resolveUrl;
8
+ private ensureCacheSpace;
9
+ private appendQueryParams;
10
+ }
11
+ //# sourceMappingURL=RequestBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestBuilder.d.ts","sourceRoot":"","sources":["../../src/Core/RequestBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,MAAM,EAEP,MAAM,iBAAiB,CAAC;AA6CzB,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IAEtC,KAAK,CACH,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,EAAE,eAAe,GAAG,SAAS,EACjC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,YAAY,EAAE,QAAQ,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EACjD,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,eAAe,GACvB,eAAe;IA6FlB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,iBAAiB;CAa1B"}
@@ -0,0 +1,2 @@
1
+ "use strict";import{normalizeBody as b,normalizeUrl as w}from"../utils/normalize.js";import{mergeHeadersFast as U}from"../utils/response.js";function y(i,e){if(typeof AbortSignal.any=="function")return AbortSignal.any([i,AbortSignal.timeout(e)]);const t=new AbortController;let r;const s=()=>{r?.(),t.abort(i.reason)},h=setTimeout(()=>{t.abort(new DOMException("Timeout","TimeoutError"))},e);return r=()=>{clearTimeout(h)},i.addEventListener("abort",s),t.signal.addEventListener("abort",()=>{i.removeEventListener("abort",s),clearTimeout(h)}),t.signal}function p(i,e){return e==null||e<=0?i:i?y(i,e):AbortSignal.timeout(e)}export class RequestBuilder{urlCache=Object.create(null);urlCacheCount=0;MAX_CACHE_SIZE=512;build(e,t,r,s,l,h,a,m){const n=m??{method:"GET",url:"",headers:h,body:void 0,signal:void 0,meta:{responseType:void 0,timings:{networkMs:void 0}},stealth:void 0},f=n.meta;if(typeof t=="string")return n.method=e,n.url=this.resolveUrl(t,a.baseURL),n.headers={...h},n.body=r!==void 0?b(e,r):void 0,n.signal=p(s,a.network?.timeout),f.responseType=l,n.stealth=a.network?.stealth,n;const o=w(t);if(!o)throw new Error(`[HyperCore] URL is undefined for ${e}`);let C;if(t.query){const u=o+"_base";let c=this.urlCache[u];c||(c=a.baseURL?new URL(o,a.baseURL).href:new URL(o).href,this.ensureCacheSpace(),this.urlCache[u]=c,this.urlCacheCount++);const d=new URL(c);this.appendQueryParams(d,t.query),C=d.href}else{let u=this.urlCache[o];u||(u=a.baseURL?new URL(o,a.baseURL).href:new URL(o).href,this.urlCacheCount>=this.MAX_CACHE_SIZE&&(this.urlCache=Object.create(null),this.urlCacheCount=0),this.urlCache[o]=u,this.urlCacheCount++),C=u}return n.method=e,n.url=C,n.headers=t.headers?U({...h},t.headers):{...h},n.body=b(e,t.body??r),n.signal=p(t.signal??s,a.network?.timeout),f.responseType=l??t.meta?.responseType,t.stealth?n.stealth=a.network?.stealth?{...a.network.stealth,...t.stealth}:t.stealth:n.stealth=a.network?.stealth,n}resolveUrl(e,t){if(!e)throw new Error("[HyperCore] URL is undefined");let r=this.urlCache[e];return r||((e.startsWith("http://")||e.startsWith("https://"))&&!e.includes("?")?r=e:r=t?new URL(e,t).href:new URL(e).href,this.urlCacheCount>=this.MAX_CACHE_SIZE&&(this.urlCache=Object.create(null),this.urlCacheCount=0),this.urlCache[e]=r,this.urlCacheCount++,r)}ensureCacheSpace(){this.urlCacheCount>=this.MAX_CACHE_SIZE&&(this.urlCache=Object.create(null),this.urlCacheCount=0)}appendQueryParams(e,t){for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const s=t[r];if(s==null)continue;if(Array.isArray(s))for(let l=0;l<s.length;l++)e.searchParams.append(r,String(s[l]));else e.searchParams.set(r,String(s))}}}
2
+ //# sourceMappingURL=RequestBuilder.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Core/RequestBuilder.ts"],
4
+ "sourcesContent": ["import type {\n HttpClientOptions,\n InternalRequest,\n RequestInterface,\n RequestBodyData,\n Method,\n ResponseType,\n} from \"@hyperttp/types\";\nimport { normalizeBody, normalizeUrl } from \"../utils/normalize.js\";\nimport { mergeHeadersFast } from \"../utils/response.js\";\n\nfunction combineSignals(userSignal: AbortSignal, timeoutMs: number): AbortSignal {\n if (typeof AbortSignal.any === \"function\") {\n return AbortSignal.any([userSignal, AbortSignal.timeout(timeoutMs)]);\n }\n\n const controller = new AbortController();\n let cleanup: (() => void) | undefined;\n\n const onUserAbort = () => {\n cleanup?.();\n controller.abort(userSignal.reason);\n };\n\n const onTimeout = () => {\n controller.abort(new DOMException(\"Timeout\", \"TimeoutError\"));\n };\n\n const timeoutId = setTimeout(onTimeout, timeoutMs);\n cleanup = () => {\n clearTimeout(timeoutId);\n };\n\n userSignal.addEventListener(\"abort\", onUserAbort);\n\n controller.signal.addEventListener(\"abort\", () => {\n userSignal.removeEventListener(\"abort\", onUserAbort);\n clearTimeout(timeoutId);\n });\n\n return controller.signal;\n}\n\nfunction applyTimeout(\n signal: AbortSignal | undefined,\n timeout: number | undefined,\n): AbortSignal | undefined {\n if (timeout == null || timeout <= 0) return signal;\n if (!signal) return AbortSignal.timeout(timeout);\n return combineSignals(signal, timeout);\n}\n\nexport class RequestBuilder {\n private urlCache: Record<string, string> = Object.create(null);\n private urlCacheCount = 0;\n private readonly MAX_CACHE_SIZE = 512;\n\n build(\n method: Method,\n req: RequestInterface | string,\n body: RequestBodyData | undefined,\n signal: AbortSignal | undefined,\n responseType: \"stream\" | undefined,\n defaultHeaders: Record<string, string | string[]>,\n config: HttpClientOptions,\n pooled?: InternalRequest,\n ): InternalRequest {\n const internalReq = pooled ?? {\n method: \"GET\" as Method,\n url: \"\",\n headers: defaultHeaders,\n body: undefined,\n signal: undefined,\n meta: {\n responseType: undefined as ResponseType | undefined,\n timings: {\n networkMs: undefined as number | undefined,\n },\n },\n stealth: undefined,\n };\n\n const metaObj = internalReq.meta as {\n responseType: ResponseType | undefined;\n timings: {\n networkMs: number | undefined;\n };\n };\n\n if (typeof req === \"string\") {\n internalReq.method = method;\n internalReq.url = this.resolveUrl(req, config.baseURL);\n internalReq.headers = { ...defaultHeaders };\n internalReq.body = body !== undefined ? normalizeBody(method, body) : undefined;\n internalReq.signal = applyTimeout(signal, config.network?.timeout);\n\n metaObj.responseType = responseType;\n\n internalReq.stealth = config.network?.stealth;\n return internalReq;\n }\n\n const rawUrl = normalizeUrl(req);\n if (!rawUrl) throw new Error(`[HyperCore] URL is undefined for ${method}`);\n\n let finalUrl: string;\n\n if (req.query) {\n const cacheKey = rawUrl + \"_base\";\n let baseUrl = this.urlCache[cacheKey];\n\n if (!baseUrl) {\n baseUrl = config.baseURL ? new URL(rawUrl, config.baseURL).href : new URL(rawUrl).href;\n\n this.ensureCacheSpace();\n this.urlCache[cacheKey] = baseUrl;\n this.urlCacheCount++;\n }\n\n const urlObj = new URL(baseUrl);\n this.appendQueryParams(urlObj, req.query);\n finalUrl = urlObj.href;\n } else {\n let cachedUrl = this.urlCache[rawUrl];\n if (!cachedUrl) {\n cachedUrl = config.baseURL ? new URL(rawUrl, config.baseURL).href : new URL(rawUrl).href;\n\n if (this.urlCacheCount >= this.MAX_CACHE_SIZE) {\n this.urlCache = Object.create(null);\n this.urlCacheCount = 0;\n }\n this.urlCache[rawUrl] = cachedUrl;\n this.urlCacheCount++;\n }\n finalUrl = cachedUrl;\n }\n\n internalReq.method = method;\n internalReq.url = finalUrl;\n internalReq.headers = req.headers\n ? mergeHeadersFast({ ...defaultHeaders }, req.headers)\n : { ...defaultHeaders };\n internalReq.body = normalizeBody(method, req.body ?? body);\n internalReq.signal = applyTimeout(req.signal ?? signal, config.network?.timeout);\n\n metaObj.responseType =\n responseType ?? (req.meta as { responseType?: ResponseType })?.responseType;\n\n if (req.stealth) {\n internalReq.stealth = config.network?.stealth\n ? { ...config.network.stealth, ...req.stealth }\n : req.stealth;\n } else {\n internalReq.stealth = config.network?.stealth;\n }\n\n return internalReq;\n }\n\n private resolveUrl(url: string, baseURL?: string): string {\n if (!url) throw new Error(\"[HyperCore] URL is undefined\");\n\n let finalUrl = this.urlCache[url];\n if (finalUrl) return finalUrl;\n\n const isAbsolute = url.startsWith(\"http://\") || url.startsWith(\"https://\");\n\n if (isAbsolute && !url.includes(\"?\")) {\n finalUrl = url;\n } else {\n finalUrl = baseURL ? new URL(url, baseURL).href : new URL(url).href;\n }\n\n if (this.urlCacheCount >= this.MAX_CACHE_SIZE) {\n this.urlCache = Object.create(null);\n this.urlCacheCount = 0;\n }\n this.urlCache[url] = finalUrl;\n this.urlCacheCount++;\n\n return finalUrl;\n }\n\n private ensureCacheSpace(): void {\n if (this.urlCacheCount >= this.MAX_CACHE_SIZE) {\n this.urlCache = Object.create(null);\n this.urlCacheCount = 0;\n }\n }\n\n private appendQueryParams(url: URL, query: Record<string, unknown>): void {\n for (const k in query) {\n if (Object.prototype.hasOwnProperty.call(query, k)) {\n const v = query[k];\n if (v == null) continue;\n if (Array.isArray(v)) {\n for (let j = 0; j < v.length; j++) url.searchParams.append(k, String(v[j]));\n } else {\n url.searchParams.set(k, String(v));\n }\n }\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["normalizeBody", "normalizeUrl", "mergeHeadersFast", "combineSignals", "userSignal", "timeoutMs", "controller", "cleanup", "onUserAbort", "timeoutId", "applyTimeout", "signal", "timeout", "method", "req", "body", "responseType", "defaultHeaders", "config", "pooled", "internalReq", "metaObj", "rawUrl", "finalUrl", "cacheKey", "baseUrl", "urlObj", "cachedUrl", "url", "baseURL", "query", "k", "v", "j"]
7
+ }
package/Core/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { HyperCore } from "./HyperCore.js";
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";export{HyperCore}from"./HyperCore.js";
2
+ //# sourceMappingURL=index.js.map
package/Core/index.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Core/index.ts"],
4
+ "sourcesContent": ["export { HyperCore } from \"./HyperCore.js\";\n"],
5
+ "mappings": "aAAA,OAAS,cAAiB",
6
+ "names": []
7
+ }
package/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@hyperttp/core)](https://www.npmjs.com/package/@hyperttp/core)
6
6
  [![npm downloads](https://img.shields.io/npm/dm/@hyperttp/core)](https://www.npmjs.com/package/@hyperttp/core)
7
+ [![bundle size](https://img.shields.io/bundlephobia/minzip/@hyperttp/core)](https://bundlephobia.com/package/@hyperttp/core)
7
8
  [![license](https://img.shields.io/npm/l/@hyperttp/core)](./LICENSE)
8
9
  [![typescript](https://img.shields.io/badge/TypeScript-strict-blue)](https://www.typescriptlang.org/)
9
10
 
@@ -41,6 +42,8 @@ pipeline-based plugin architecture — the foundation upon which the feature-ric
41
42
  - **🔌 Multi-Stage Hooks & Pipelines:** Granular control over the request lifecycle with sorted hook priorities and short-circuit capabilities.
42
43
  - **🗜️ Transparent Decompression:** Automatic out-of-the-box handling of `gzip`, `deflate`, and `br` (Brotli) content-encodings for both standard `Uint8Array` buffers and `ReadableStream` data.
43
44
  - **💎 Prototype Preservation:** Safe internal mapping that respects and carries forward custom prototypes passed via request configurations.
45
+ - **🛡️ Security Hardening:** Response body size limiting (`maxResponseBytes`), CRLF injection prevention in headers, SSL certificate validation enforcement, and concurrent request throttling (`maxConcurrent`).
46
+ - **📦 Tiny Footprint:** ~30.7 KB raw / ~9.6 KB gzip after minification — no unnecessary dependencies.
44
47
  - **🦀 Rust-Powered Toolchain:** Built and linted with OXC (`oxlint` + `oxfmt`) for blazing-fast development cycles.
45
48
 
46
49
  ---
@@ -238,6 +241,33 @@ const http = new HyperCore({}, new MyCustomTransport());
238
241
 
239
242
  ---
240
243
 
244
+ ## 🛡️ Security
245
+
246
+ @hyperttp/core includes several hardening mechanisms built into the core pipeline:
247
+
248
+ | Protection | Mechanism | Default |
249
+ |---|---|---|
250
+ | **SSL Validation** | `rejectUnauthorized` enforced via `https.Agent` in NodeTransport | `true` |
251
+ | **Response Size Limit** | `maxResponseBytes` — streaming transform aborts oversized responses | unlimited (0) |
252
+ | **CRLF Injection** | `\r\n` stripped from all header values in `appendHeader()` | always on |
253
+ | **Concurrency Throttle** | `maxConcurrent` — semaphore gates transport execution | unlimited (0) |
254
+ | **Transport Whitelist** | only explicitly registered packages can be loaded dynamically | strict |
255
+ | **Prototype Pollution** | all internal maps use `Object.create(null)` | always on |
256
+
257
+ Configurable via `HyperCore` constructor:
258
+
259
+ ```typescript
260
+ const http = new HyperCore({
261
+ network: {
262
+ maxResponseBytes: 10 * 1024 * 1024, // 10 MB limit
263
+ maxConcurrent: 50, // max 50 in-flight requests
264
+ rejectUnauthorized: true,
265
+ },
266
+ });
267
+ ```
268
+
269
+ ---
270
+
241
271
  ## 🔄 Extending Configuration
242
272
 
243
273
  Create derived clients with merged configuration via `.extend()`:
package/defaultConfig.js CHANGED
@@ -1,19 +1,2 @@
1
- export const defaultConfig = {
2
- network: {
3
- timeout: 30000,
4
- maxConcurrent: 128,
5
- pipelining: 0,
6
- keepAliveTimeout: 5000,
7
- followRedirects: true,
8
- maxRedirects: 5,
9
- rejectUnauthorized: true,
10
- },
11
- retry: {
12
- maxRetries: 0,
13
- baseDelay: 100,
14
- maxDelay: 5000,
15
- jitter: true,
16
- },
17
- verbose: false,
18
- };
19
- //# sourceMappingURL=defaultConfig.js.map
1
+ "use strict";export const defaultConfig={network:{timeout:3e4,maxConcurrent:128,pipelining:0,keepAliveTimeout:5e3,followRedirects:!0,maxRedirects:5,rejectUnauthorized:!0},retry:{maxRetries:0,baseDelay:100,maxDelay:5e3,jitter:!0},verbose:!1};
2
+ //# sourceMappingURL=defaultConfig.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../src/defaultConfig.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,OAAO,EAAE;QACP,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,CAAC;QACb,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,CAAC;QACf,kBAAkB,EAAE,IAAI;KACzB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACb;IACD,OAAO,EAAE,KAAK;CACf,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/defaultConfig.ts"],
4
+ "sourcesContent": ["import type { HttpClientOptions } from \"@hyperttp/types\";\n\nexport const defaultConfig: HttpClientOptions = {\n network: {\n timeout: 30000,\n maxConcurrent: 128,\n pipelining: 0,\n keepAliveTimeout: 5000,\n followRedirects: true,\n maxRedirects: 5,\n rejectUnauthorized: true,\n },\n retry: {\n maxRetries: 0,\n baseDelay: 100,\n maxDelay: 5000,\n jitter: true,\n },\n verbose: false,\n};\n"],
5
+ "mappings": "aAEO,aAAM,cAAmC,CAC9C,QAAS,CACP,QAAS,IACT,cAAe,IACf,WAAY,EACZ,iBAAkB,IAClB,gBAAiB,GACjB,aAAc,EACd,mBAAoB,IAEtB,MAAO,CACL,WAAY,EACZ,UAAW,IACX,SAAU,IACV,OAAQ,IAEV,QAAS",
6
+ "names": []
7
+ }
package/index.js CHANGED
@@ -1,3 +1,2 @@
1
- export { HyperCore } from "./Core/index.js";
2
- export { deepMerge } from "./utils/merge.js";
3
- //# sourceMappingURL=index.js.map
1
+ "use strict";export{HyperCore}from"./Core/index.js";export{deepMerge}from"./utils/merge.js";
2
+ //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["export { HyperCore } from \"./Core/index.js\";\nexport { deepMerge } from \"./utils/merge.js\";\n"],
5
+ "mappings": "aAAA,OAAS,cAAiB,kBAC1B,OAAS,cAAiB",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperttp/core",
3
- "version": "1.4.8",
3
+ "version": "1.5.0",
4
4
  "description": "High-performance, extensible HTTP client for Node.js, Bun, Deno and Browser",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/transports/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IASlC,MAAM,EAAE,sBAAsB;IARjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC;;;;OAIG;gBACgB,MAAM,EAAE,sBAAsB;IAiBjD;;;;;OAKG;IACU,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAsFxE"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/transports/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IASlC,MAAM,EAAE,sBAAsB;IARjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC;;;;OAIG;gBACgB,MAAM,EAAE,sBAAsB;IAiBjD;;;;;OAKG;IACU,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA8DxE"}
@@ -1,113 +1,2 @@
1
- /**
2
- * @ru Реализация транспорта для браузера с использованием глобального fetch API.
3
- * Оптимизирован для минимального размера и максимальной совместимости.
4
- * @en Browser transport implementation using the global fetch API.
5
- * Optimized for minimal size and maximum compatibility.
6
- */
7
- export class BrowserTransport {
8
- config;
9
- isProduction;
10
- cleanBaseUrl;
11
- /**
12
- * @ru Создаёт экземпляр BrowserTransport.
13
- * @en Creates a BrowserTransport instance.
14
- * @param config - Transport configuration.
15
- */
16
- constructor(config) {
17
- this.config = config;
18
- const isLocalhost = typeof window !== "undefined" &&
19
- ["localhost", "127.0.0.1", "::1"].includes(window.location.hostname);
20
- const hasProcess = typeof process !== "undefined" && process.env;
21
- const hasMeta = typeof import.meta !== "undefined";
22
- this.isProduction =
23
- !isLocalhost &&
24
- ((hasProcess && process.env.NODE_ENV === "production") ||
25
- (hasMeta && import.meta.env?.PROD === true));
26
- const base = config.baseUrl ?? (typeof window !== "undefined" ? window.location.origin : "");
27
- this.cleanBaseUrl = base.endsWith("/") ? base.slice(0, -1) : base;
28
- }
29
- /**
30
- * @ru Выполняет HTTP-запрос через глобальный fetch.
31
- * @en Executes an HTTP request via the global fetch.
32
- * @param req - The normalized transport request.
33
- * @returns Promise resolving to the transport response.
34
- */
35
- async execute(req) {
36
- const urlStr = req.url;
37
- const isAbsolute = urlStr.startsWith("http://") || urlStr.startsWith("https://") || urlStr.startsWith("//");
38
- const fullUrl = isAbsolute
39
- ? urlStr
40
- : urlStr.charCodeAt(0) === 47
41
- ? this.cleanBaseUrl + urlStr
42
- : this.cleanBaseUrl + "/" + urlStr;
43
- if (this.isProduction && fullUrl.includes("//localhost")) {
44
- throw new Error("Localhost URL detected in production environment");
45
- }
46
- let body = req.body;
47
- const finalHeaders = Object.create(null);
48
- if (req.headers) {
49
- if (req.headers instanceof Headers) {
50
- req.headers.forEach((value, key) => {
51
- finalHeaders[key.toLowerCase()] = value;
52
- });
53
- }
54
- else if (Array.isArray(req.headers)) {
55
- for (let i = 0; i < req.headers.length; i++) {
56
- const pair = req.headers[i];
57
- if (pair && typeof pair[0] === "string") {
58
- finalHeaders[pair[0].toLowerCase()] = String(pair[1]);
59
- }
60
- }
61
- }
62
- else {
63
- const src = req.headers;
64
- for (const key in src) {
65
- const value = src[key];
66
- if (value != null) {
67
- finalHeaders[key.toLowerCase()] = Array.isArray(value)
68
- ? value.join(", ")
69
- : String(value);
70
- }
71
- }
72
- }
73
- }
74
- if (body !== null && typeof body === "object") {
75
- if (body instanceof Uint8Array ||
76
- body instanceof ArrayBuffer ||
77
- ArrayBuffer.isView(body) ||
78
- body instanceof ReadableStream ||
79
- body instanceof URLSearchParams ||
80
- body instanceof FormData ||
81
- body instanceof Blob) {
82
- //
83
- }
84
- else {
85
- const proto = Object.getPrototypeOf(body);
86
- if (proto === Object.prototype || proto === null) {
87
- body = JSON.stringify(body);
88
- if (!finalHeaders["content-type"]) {
89
- finalHeaders["content-type"] = "application/json";
90
- }
91
- }
92
- }
93
- }
94
- const res = await globalThis.fetch(fullUrl, {
95
- method: req.method,
96
- headers: finalHeaders,
97
- body: body,
98
- signal: req.signal,
99
- });
100
- const resHeaders = Object.create(null);
101
- res.headers.forEach((value, key) => {
102
- resHeaders[key] = value;
103
- });
104
- return {
105
- status: res.status,
106
- url: res.url,
107
- body: res.body,
108
- headers: resHeaders,
109
- _raw: res,
110
- };
111
- }
112
- }
113
- //# sourceMappingURL=browser.js.map
1
+ "use strict";export class BrowserTransport{config;isProduction;cleanBaseUrl;constructor(s){this.config=s;const o=typeof window<"u"&&["localhost","127.0.0.1","::1"].includes(window.location.hostname),c=typeof process<"u"&&process.env,a=typeof import.meta<"u";this.isProduction=!o&&(c&&!0||a&&import.meta.env?.PROD===!0);const r=s.baseUrl??(typeof window<"u"?window.location.origin:"");this.cleanBaseUrl=r.endsWith("/")?r.slice(0,-1):r}async execute(s){const o=s.url,a=o.startsWith("http://")||o.startsWith("https://")||o.startsWith("//")?o:o.charCodeAt(0)===47?this.cleanBaseUrl+o:this.cleanBaseUrl+"/"+o;if(this.isProduction&&a.includes("//localhost"))throw new Error("Localhost URL detected in production environment");const r=Object.create(null);if(s.headers)if(s.headers instanceof Headers)s.headers.forEach((t,e)=>{r[e.toLowerCase()]=t});else if(Array.isArray(s.headers))for(let t=0;t<s.headers.length;t++){const e=s.headers[t];e&&typeof e[0]=="string"&&(r[e[0].toLowerCase()]=String(e[1]))}else{const t=s.headers;for(const e in t){const i=t[e];i!=null&&(r[e.toLowerCase()]=Array.isArray(i)?i.join(", "):String(i))}}const n=await globalThis.fetch(a,{method:s.method,headers:r,body:s.body,signal:s.signal}),l=Object.create(null);return n.headers.forEach((t,e)=>{l[e]=t}),{status:n.status,url:n.url,body:n.body,headers:l,_raw:n}}}
2
+ //# sourceMappingURL=browser.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/transports/browser.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/transports/browser.ts"],
4
+ "sourcesContent": ["import type {\n HttpClientOptions,\n HyperTransport,\n TransportRequest,\n TransportResponse,\n TransportResponsePayload,\n} from \"@hyperttp/types\";\n\n/**\n * @ru \u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0442\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442\u0430 \u0434\u043B\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.\n * @en Browser transport configuration.\n */\nexport interface BrowserTransportConfig extends HttpClientOptions {\n /**\n * @ru \u0411\u0430\u0437\u043E\u0432\u044B\u0439 URL \u0434\u043B\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u043F\u0443\u0442\u0435\u0439. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 window.location.origin.\n * @en Base URL for relative paths. Defaults to window.location.origin.\n */\n baseUrl?: string;\n}\n\n/**\n * @ru \u0418\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043B\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u043C\u0435\u0442\u0430-\u043E\u043A\u0440\u0443\u0436\u0435\u043D\u0438\u044E \u0441\u0431\u043E\u0440\u0449\u0438\u043A\u043E\u0432 (Vite, Webpack \u0438 \u0434\u0440.).\n * @en Interface for safe access to bundler meta-environment (Vite, Webpack, etc.).\n */\ninterface ImportMetaEnv {\n env?: {\n PROD?: boolean;\n [key: string]: unknown;\n };\n}\n\n/**\n * @ru \u0420\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0442\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442\u0430 \u0434\u043B\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E\u0433\u043E fetch API.\n * \u041E\u043F\u0442\u0438\u043C\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D \u0434\u043B\u044F \u043C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u0438 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0439 \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u043E\u0441\u0442\u0438.\n * @en Browser transport implementation using the global fetch API.\n * Optimized for minimal size and maximum compatibility.\n */\nexport class BrowserTransport implements HyperTransport {\n private readonly isProduction: boolean;\n private readonly cleanBaseUrl: string;\n\n /**\n * @ru \u0421\u043E\u0437\u0434\u0430\u0451\u0442 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440 BrowserTransport.\n * @en Creates a BrowserTransport instance.\n * @param config - Transport configuration.\n */\n constructor(public config: BrowserTransportConfig) {\n const isLocalhost =\n typeof window !== \"undefined\" &&\n [\"localhost\", \"127.0.0.1\", \"::1\"].includes(window.location.hostname);\n\n const hasProcess = typeof process !== \"undefined\" && process.env;\n const hasMeta = typeof import.meta !== \"undefined\";\n\n this.isProduction =\n !isLocalhost &&\n ((hasProcess && process.env.NODE_ENV === \"production\") ||\n (hasMeta && (import.meta as unknown as ImportMetaEnv).env?.PROD === true));\n\n const base = config.baseUrl ?? (typeof window !== \"undefined\" ? window.location.origin : \"\");\n this.cleanBaseUrl = base.endsWith(\"/\") ? base.slice(0, -1) : base;\n }\n\n /**\n * @ru \u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442 HTTP-\u0437\u0430\u043F\u0440\u043E\u0441 \u0447\u0435\u0440\u0435\u0437 \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 fetch.\n * @en Executes an HTTP request via the global fetch.\n * @param req - The normalized transport request.\n * @returns Promise resolving to the transport response.\n */\n public async execute(req: TransportRequest): Promise<TransportResponse> {\n const urlStr = req.url;\n\n const isAbsolute =\n urlStr.startsWith(\"http://\") || urlStr.startsWith(\"https://\") || urlStr.startsWith(\"//\");\n\n const fullUrl = isAbsolute\n ? urlStr\n : urlStr.charCodeAt(0) === 47\n ? this.cleanBaseUrl + urlStr\n : this.cleanBaseUrl + \"/\" + urlStr;\n\n if (this.isProduction && fullUrl.includes(\"//localhost\")) {\n throw new Error(\"Localhost URL detected in production environment\");\n }\n\n const finalHeaders: Record<string, string> = Object.create(null);\n if (req.headers) {\n if (req.headers instanceof Headers) {\n req.headers.forEach((value, key) => {\n finalHeaders[key.toLowerCase()] = value;\n });\n } else if (Array.isArray(req.headers)) {\n for (let i = 0; i < req.headers.length; i++) {\n const pair = req.headers[i] as unknown as [string, string] | undefined;\n if (pair && typeof pair[0] === \"string\") {\n finalHeaders[pair[0].toLowerCase()] = String(pair[1]);\n }\n }\n } else {\n const src = req.headers as Record<string, unknown>;\n for (const key in src) {\n const value = src[key];\n if (value != null) {\n finalHeaders[key.toLowerCase()] = Array.isArray(value)\n ? value.join(\", \")\n : String(value);\n }\n }\n }\n }\n\n const res = await globalThis.fetch(fullUrl, {\n method: req.method,\n headers: finalHeaders as HeadersInit,\n body: req.body as BodyInit | null,\n signal: req.signal,\n });\n\n const resHeaders: Record<string, string> = Object.create(null);\n res.headers.forEach((value, key) => {\n resHeaders[key] = value;\n });\n\n return {\n status: res.status,\n url: res.url,\n body: res.body as unknown as TransportResponsePayload,\n headers: resHeaders,\n _raw: res,\n } as TransportResponse;\n }\n}\n"],
5
+ "mappings": "aAqCM,aAAO,gBAAgB,CASR,OARF,aACA,aAOjB,YAAmBA,EAA8B,CAA9B,KAAA,OAAAA,EACjB,MAAMC,EACJ,OAAO,OAAW,KAClB,CAAC,YAAa,YAAa,KAAK,EAAE,SAAS,OAAO,SAAS,QAAQ,EAE/DC,EAAa,OAAO,QAAY,KAAe,QAAQ,IACvDC,EAAU,OAAO,YAAgB,IAEvC,KAAK,aACH,CAACF,IACCC,GAAc,IACbC,GAAY,YAAyC,KAAK,OAAS,IAExE,MAAMC,EAAOJ,EAAO,UAAY,OAAO,OAAW,IAAc,OAAO,SAAS,OAAS,IACzF,KAAK,aAAeI,EAAK,SAAS,GAAG,EAAIA,EAAK,MAAM,EAAG,EAAE,EAAIA,CAC/D,CAQO,MAAM,QAAQC,EAAqB,CACxC,MAAMC,EAASD,EAAI,IAKbE,EAFJD,EAAO,WAAW,SAAS,GAAKA,EAAO,WAAW,UAAU,GAAKA,EAAO,WAAW,IAAI,EAGrFA,EACAA,EAAO,WAAW,CAAC,IAAM,GACvB,KAAK,aAAeA,EACpB,KAAK,aAAe,IAAMA,EAEhC,GAAI,KAAK,cAAgBC,EAAQ,SAAS,aAAa,EACrD,MAAM,IAAI,MAAM,kDAAkD,EAGpE,MAAMC,EAAuC,OAAO,OAAO,IAAI,EAC/D,GAAIH,EAAI,QACN,GAAIA,EAAI,mBAAmB,QACzBA,EAAI,QAAQ,QAAQ,CAACI,EAAOC,IAAO,CACjCF,EAAaE,EAAI,YAAW,CAAE,EAAID,CACpC,CAAC,UACQ,MAAM,QAAQJ,EAAI,OAAO,EAClC,QAASM,EAAI,EAAGA,EAAIN,EAAI,QAAQ,OAAQM,IAAK,CAC3C,MAAMC,EAAOP,EAAI,QAAQM,CAAC,EACtBC,GAAQ,OAAOA,EAAK,CAAC,GAAM,WAC7BJ,EAAaI,EAAK,CAAC,EAAE,YAAW,CAAE,EAAI,OAAOA,EAAK,CAAC,CAAC,EAExD,KACK,CACL,MAAMC,EAAMR,EAAI,QAChB,UAAWK,KAAOG,EAAK,CACrB,MAAMJ,EAAQI,EAAIH,CAAG,EACjBD,GAAS,OACXD,EAAaE,EAAI,YAAW,CAAE,EAAI,MAAM,QAAQD,CAAK,EACjDA,EAAM,KAAK,IAAI,EACf,OAAOA,CAAK,EAEpB,CACF,CAGF,MAAMK,EAAM,MAAM,WAAW,MAAMP,EAAS,CAC1C,OAAQF,EAAI,OACZ,QAASG,EACT,KAAMH,EAAI,KACV,OAAQA,EAAI,OACb,EAEKU,EAAqC,OAAO,OAAO,IAAI,EAC7D,OAAAD,EAAI,QAAQ,QAAQ,CAACL,EAAOC,IAAO,CACjCK,EAAWL,CAAG,EAAID,CACpB,CAAC,EAEM,CACL,OAAQK,EAAI,OACZ,IAAKA,EAAI,IACT,KAAMA,EAAI,KACV,QAASC,EACT,KAAMD,EAEV",
6
+ "names": ["config", "isLocalhost", "hasProcess", "hasMeta", "base", "req", "urlStr", "fullUrl", "finalHeaders", "value", "key", "i", "pair", "src", "res", "resHeaders"]
7
+ }
@@ -4,22 +4,6 @@ import type { HttpClientOptions, HyperTransport } from "@hyperttp/types";
4
4
  * @en Supported runtime environments for automatic transport selection.
5
5
  */
6
6
  export type Runtime = "bun" | "node" | "deno" | "browser";
7
- /**
8
- * @ru Описание транспорта: имя, поддерживаемые среды, пакет, экспорт и приоритет.
9
- * @en Transport descriptor: name, supported runtimes, package, export, and priority.
10
- */
11
- type TransportDef = {
12
- /** @ru Имя транспорта для логирования. @en Transport name for logging. */
13
- readonly name: string;
14
- /** @ru Список сред, в которых транспорт может работать. @en List of runtimes where the transport can operate. */
15
- readonly runtime: readonly Runtime[];
16
- /** @ru Имя пакета npm или относительный путь для встроенных транспортов. @en npm package name or relative path for built-in transports. */
17
- readonly pkg: string;
18
- /** @ru Имя экспортируемого класса транспорта. @en Exported transport class name. */
19
- readonly export: string;
20
- /** @ru Приоритет выбора (выше значение = раньше попытка загрузки). @en Selection priority (higher value = earlier load attempt). */
21
- readonly priority: number;
22
- };
23
7
  /**
24
8
  * @ru Определяет текущую среду выполнения при загрузке модуля.
25
9
  * Порядок проверки: Bun → Deno → Node.js → Browser.
@@ -27,22 +11,6 @@ type TransportDef = {
27
11
  * Detection order: Bun → Deno → Node.js → Browser.
28
12
  */
29
13
  export declare const CURRENT_RUNTIME: Runtime;
30
- /**
31
- * @ru Возвращает список зарегистрированных транспортов (readonly для безопасности).
32
- * @en Returns the list of registered transports (readonly for safety).
33
- * @returns Readonly array of transport definitions.
34
- */
35
- export declare const getRegisteredTransports: () => readonly TransportDef[];
36
- /**
37
- * @ru Динамический импорт, изолированный от статического анализа сборщиков (Vite, Webpack).
38
- * Используется как ядром, так и модулем декомпрессии для ленивой загрузки node:zlib/node:stream.
39
- * @en Dynamic import isolated from bundlers' static analysis (Vite, Webpack).
40
- * Used by both the core and decompression module for lazy loading of node:zlib/node:stream.
41
- * @template T - Expected module type.
42
- * @param specifier - Module specifier string.
43
- * @returns Promise resolving to the imported module.
44
- */
45
- export declare const runtimeImport: <T = unknown>(specifier: string) => Promise<T>;
46
14
  /**
47
15
  * @ru Разрешает и создаёт оптимальный транспорт для текущей среды.
48
16
  * Перебирает кандидатов по приоритету, кэширует первый успешный результат.
@@ -118,5 +86,4 @@ export declare class TransportManager {
118
86
  */
119
87
  destroy(graceful?: boolean): Promise<void>;
120
88
  }
121
- export {};
122
89
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/transports/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAQ1D;;;GAGG;AACH,KAAK,YAAY,GAAG;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iHAAiH;IACjH,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC,2IAA2I;IAC3I,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oIAAoI;IACpI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,OAK1B,CAAC;AAuDL;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAO,SAAS,YAAY,EAAyB,CAAC;AAkB1F;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAwC,CAAC,CAAC,GAAG,OAAO,EAC5E,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,CAAC,CAAC,CAAC;AA4GhB;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+BzF;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B;;;OAGG;IACI,SAAS,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE/C;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAwC;IAEvD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAoB;IAElC;;;;;OAKG;gBACS,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,cAAc;IAY9D;;;;OAIG;IACI,OAAO,IAAI,cAAc,GAAG,IAAI;IAIvC;;;;;;OAMG;IACI,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAYxC;;;;OAIG;IACI,GAAG,IAAI,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAItD;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAajD;;;;;;;OAOG;IACU,OAAO,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBrD"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/transports/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAyB1D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,OAK1B,CAAC;AAiLL;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+BzF;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B;;;OAGG;IACI,SAAS,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE/C;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAwC;IAEvD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAoB;IAElC;;;;;OAKG;gBACS,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,cAAc;IAY9D;;;;OAIG;IACI,OAAO,IAAI,cAAc,GAAG,IAAI;IAIvC;;;;;;OAMG;IACI,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAYxC;;;;OAIG;IACI,GAAG,IAAI,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAItD;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAajD;;;;;;;OAOG;IACU,OAAO,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBrD"}