@hyperttp/core 1.2.0 → 1.2.5

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.
@@ -1,41 +1,19 @@
1
1
  import http from "node:http";
2
2
  import https from "node:https";
3
+ import zlib from "node:zlib";
3
4
  import { Readable } from "node:stream";
5
+ import { ReadableStream } from "node:stream/web";
4
6
  const REDIRECT_STATUS_CODES = new Set([301, 302, 303, 307, 308]);
5
7
  const DEFAULT_RETRY_STATUS_CODES = [502, 503, 504];
8
+ const RETRYABLE_NETWORK_CODES = [
9
+ "ECONNREFUSED",
10
+ "ETIMEDOUT",
11
+ "ECONNRESET",
12
+ "EPIPE",
13
+ ];
6
14
  export function isRedirect(status) {
7
15
  return REDIRECT_STATUS_CODES.has(status);
8
16
  }
9
- export function combineSignal(signal, timeoutMs) {
10
- if (timeoutMs <= 0) {
11
- return {
12
- signal,
13
- cancelTimer: () => { },
14
- isTimeoutAbort: () => false,
15
- };
16
- }
17
- const timeoutController = new AbortController();
18
- const timer = setTimeout(() => timeoutController.abort(), timeoutMs);
19
- let combinedSignal;
20
- if (signal) {
21
- if (typeof AbortSignal.any === "function") {
22
- combinedSignal = AbortSignal.any([signal, timeoutController.signal]);
23
- }
24
- else {
25
- const onAbort = () => timeoutController.abort();
26
- signal.addEventListener("abort", onAbort, { once: true });
27
- combinedSignal = timeoutController.signal;
28
- }
29
- }
30
- else {
31
- combinedSignal = timeoutController.signal;
32
- }
33
- return {
34
- signal: combinedSignal,
35
- cancelTimer: () => clearTimeout(timer),
36
- isTimeoutAbort: () => timeoutController.signal.aborted,
37
- };
38
- }
39
17
  export function shouldRetry(status, retryOptions) {
40
18
  const codes = retryOptions.retryStatusCodes;
41
19
  if (codes && codes.length > 0) {
@@ -48,40 +26,119 @@ export function sleep(ms) {
48
26
  }
49
27
  export function calcDelay(attempt, retryOptions) {
50
28
  const { baseDelay = 1000, maxDelay = 10000, jitter = true } = retryOptions;
51
- const base = Math.min(baseDelay * 2 ** attempt, maxDelay);
29
+ const base = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
52
30
  return jitter ? base * (0.75 + Math.random() * 0.5) : base;
53
31
  }
54
- /**
55
- * @ru Реализация ответа для стандартного Node.js транспорта.
56
- */
57
32
  class NodeTransportResponse {
58
33
  status;
59
34
  headers;
60
35
  url;
61
- body;
62
36
  baseUrl;
63
- _rawBody;
37
+ _decodedStream;
38
+ _cachedBuffer;
64
39
  _cachedText;
65
40
  _cachedJson;
66
41
  _cachedJsonReady = false;
67
- constructor(status, headers, url, rawBody) {
42
+ _cachedWebStream;
43
+ constructor(status, headers, url, rawStream) {
68
44
  this.status = status;
69
45
  this.headers = headers;
70
46
  this.url = url;
71
- this._rawBody = rawBody;
72
47
  this.baseUrl = url;
73
- const stream = Readable.from([rawBody]);
74
- Object.defineProperty(stream, "dump", {
75
- value: () => Promise.resolve(),
76
- writable: false,
77
- enumerable: false,
78
- configurable: true,
48
+ let stream = rawStream;
49
+ const contentEncoding = headers["content-encoding"];
50
+ if (typeof contentEncoding === "string") {
51
+ const encoding = contentEncoding.toLowerCase();
52
+ if (encoding.includes("gzip")) {
53
+ stream = stream.pipe(zlib.createGunzip());
54
+ }
55
+ else if (encoding.includes("deflate")) {
56
+ stream = stream.pipe(zlib.createInflate());
57
+ }
58
+ else if (encoding.includes("br")) {
59
+ stream = stream.pipe(zlib.createBrotliDecompress());
60
+ }
61
+ }
62
+ this._decodedStream = stream;
63
+ }
64
+ get body() {
65
+ if (!this._cachedWebStream) {
66
+ let webStream;
67
+ if (this._cachedBuffer) {
68
+ const buf = this._cachedBuffer;
69
+ webStream = new ReadableStream({
70
+ start(controller) {
71
+ controller.enqueue(new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));
72
+ controller.close();
73
+ },
74
+ });
75
+ }
76
+ else {
77
+ webStream = Readable.toWeb(this._decodedStream);
78
+ }
79
+ Object.defineProperty(webStream, "dump", {
80
+ value: () => this.dump(),
81
+ writable: false,
82
+ enumerable: false,
83
+ configurable: true,
84
+ });
85
+ this._cachedWebStream = webStream;
86
+ }
87
+ return this._cachedWebStream;
88
+ }
89
+ async _getBuffer() {
90
+ if (this._cachedBuffer)
91
+ return this._cachedBuffer;
92
+ if (this._cachedWebStream) {
93
+ const reader = this._cachedWebStream.getReader();
94
+ const chunks = [];
95
+ while (true) {
96
+ const { done, value } = await reader.read();
97
+ if (done)
98
+ break;
99
+ if (value)
100
+ chunks.push(value);
101
+ }
102
+ let totalLength = 0;
103
+ for (const chunk of chunks)
104
+ totalLength += chunk.byteLength;
105
+ const merged = new Uint8Array(totalLength);
106
+ let offset = 0;
107
+ for (const chunk of chunks) {
108
+ merged.set(chunk, offset);
109
+ offset += chunk.byteLength;
110
+ }
111
+ this._cachedBuffer = Buffer.from(merged.buffer, merged.byteOffset, merged.byteLength);
112
+ return this._cachedBuffer;
113
+ }
114
+ return new Promise((resolve, reject) => {
115
+ const chunks = [];
116
+ const onData = (chunk) => {
117
+ chunks.push(chunk);
118
+ };
119
+ const onEnd = () => {
120
+ cleanup();
121
+ this._cachedBuffer = Buffer.concat(chunks);
122
+ resolve(this._cachedBuffer);
123
+ };
124
+ const onError = (err) => {
125
+ cleanup();
126
+ reject(err);
127
+ };
128
+ const cleanup = () => {
129
+ this._decodedStream.removeListener("data", onData);
130
+ this._decodedStream.removeListener("end", onEnd);
131
+ this._decodedStream.removeListener("error", onError);
132
+ };
133
+ this._decodedStream.on("data", onData);
134
+ this._decodedStream.on("end", onEnd);
135
+ this._decodedStream.on("error", onError);
79
136
  });
80
- this.body = stream;
81
137
  }
82
138
  async text() {
83
139
  if (this._cachedText === undefined) {
84
- this._cachedText = this._rawBody.toString("utf-8");
140
+ const buf = await this._getBuffer();
141
+ this._cachedText = buf.toString("utf-8");
85
142
  }
86
143
  return this._cachedText;
87
144
  }
@@ -99,10 +156,12 @@ class NodeTransportResponse {
99
156
  this._cachedJsonReady = true;
100
157
  return this._cachedJson;
101
158
  }
159
+ async dump() {
160
+ if (this._cachedBuffer)
161
+ return;
162
+ this._decodedStream.resume();
163
+ }
102
164
  }
103
- /**
104
- * @ru Высокопроизводительный транспорт на базе классических модулей http/https Node.js.
105
- */
106
165
  export class NodeTransport {
107
166
  config;
108
167
  httpAgent;
@@ -122,57 +181,65 @@ export class NodeTransport {
122
181
  get timeout() {
123
182
  return this.config.network?.timeout ?? 30000;
124
183
  }
184
+ logRetry(reason, attempt, maxRetries) {
185
+ this.config.logger?.("warn", `Retrying request: ${reason}. Attempt ${attempt}/${maxRetries}`);
186
+ }
125
187
  async execute(req) {
126
188
  let currentUrl = req.url;
127
189
  let currentMethod = req.method;
128
190
  let currentHeaders = { ...req.headers };
129
191
  let currentBody = req.body;
130
192
  let redirects = 0;
131
- let attempt = 0;
193
+ const startTime = Date.now();
194
+ let attempt = 1;
132
195
  const maxRedirects = this.config.network?.maxRedirects ?? 5;
133
196
  const maxRetries = this.config.retry?.maxRetries ?? 3;
134
- const isStreamBody = currentBody instanceof Readable;
197
+ const isStreamBody = currentBody instanceof ReadableStream;
135
198
  while (true) {
136
- const { signal, cancelTimer, isTimeoutAbort } = combineSignal(req.signal, this.timeout);
137
199
  try {
138
200
  const fullUrl = new URL(currentUrl);
139
201
  const result = await this.dispatchOnce(fullUrl, {
140
202
  method: currentMethod,
141
203
  headers: currentHeaders,
142
204
  body: currentBody,
143
- signal,
205
+ externalSignal: req.signal,
206
+ timeoutMs: this.timeout,
144
207
  });
145
208
  if ((this.config.network?.followRedirects ?? true) &&
146
209
  isRedirect(result.status)) {
210
+ result.body.resume();
147
211
  if (redirects >= maxRedirects) {
148
212
  throw new Error("Too many redirects");
149
213
  }
150
214
  const location = result.headers["location"];
151
- if (location && typeof location === "string") {
152
- const nextUrl = new URL(location, fullUrl.toString()).toString();
153
- let nextMethod = currentMethod;
154
- if (result.status === 303 ||
155
- ((result.status === 301 || result.status === 302) &&
156
- currentMethod === "POST")) {
157
- nextMethod = "GET";
158
- }
159
- currentUrl = nextUrl;
160
- currentMethod = nextMethod;
161
- currentBody =
162
- nextMethod === "GET" || isStreamBody ? undefined : currentBody;
163
- const nextHeaders = { ...currentHeaders };
164
- if (nextMethod === "GET") {
165
- delete nextHeaders["content-type"];
166
- delete nextHeaders["content-length"];
167
- }
168
- currentHeaders = nextHeaders;
169
- redirects += 1;
170
- continue;
215
+ const locationStr = Array.isArray(location) ? location[0] : location;
216
+ if (typeof locationStr !== "string") {
217
+ throw new Error("Invalid redirect location");
218
+ }
219
+ const nextUrl = new URL(locationStr, fullUrl.toString()).toString();
220
+ let nextMethod = currentMethod;
221
+ if (result.status === 303 ||
222
+ ((result.status === 301 || result.status === 302) &&
223
+ currentMethod === "POST")) {
224
+ nextMethod = "GET";
171
225
  }
226
+ currentUrl = nextUrl;
227
+ currentMethod = nextMethod;
228
+ currentBody =
229
+ nextMethod === "GET" || isStreamBody ? undefined : currentBody;
230
+ const nextHeaders = { ...currentHeaders };
231
+ if (nextMethod === "GET") {
232
+ delete nextHeaders["content-type"];
233
+ delete nextHeaders["content-length"];
234
+ }
235
+ currentHeaders = nextHeaders;
236
+ redirects += 1;
237
+ continue;
172
238
  }
173
239
  if (!isStreamBody &&
174
240
  shouldRetry(result.status, this.config.retry ?? {})) {
175
241
  if (attempt < maxRetries) {
242
+ result.body.resume();
176
243
  await sleep(calcDelay(attempt, this.config.retry ?? {}));
177
244
  attempt += 1;
178
245
  continue;
@@ -181,33 +248,49 @@ export class NodeTransport {
181
248
  return new NodeTransportResponse(result.status, result.headers, fullUrl.toString(), result.body);
182
249
  }
183
250
  catch (err) {
184
- if (err.name === "AbortError" || isTimeoutAbort()) {
185
- if (req.signal?.aborted)
186
- throw err;
187
- if (isTimeoutAbort()) {
188
- throw new Error(`Request timeout after ${this.timeout}ms`, {
189
- cause: err,
190
- });
251
+ const error = err;
252
+ if (error.name === "AbortError") {
253
+ if (req.signal?.aborted) {
254
+ throw error;
191
255
  }
192
- throw new Error("Transport closed or aborted", { cause: err });
256
+ const msg = `Request timeout after ${this.timeout}ms`;
257
+ this.config.logger?.("error", msg);
258
+ const timeoutErr = new Error(msg);
259
+ timeoutErr.name = "AbortError";
260
+ timeoutErr.code = "TIMEOUT";
261
+ timeoutErr.request = {
262
+ url: req.url,
263
+ method: req.method,
264
+ headers: req.headers,
265
+ };
266
+ timeoutErr.meta = {
267
+ retryCount: attempt - 1,
268
+ isRetryable: false,
269
+ duration: Date.now() - startTime,
270
+ };
271
+ throw timeoutErr;
193
272
  }
194
- const retryableCodes = [
195
- "ECONNREFUSED",
196
- "ETIMEDOUT",
197
- "ECONNRESET",
198
- "EPIPE",
199
- ];
200
273
  if (!isStreamBody &&
201
274
  attempt < maxRetries &&
202
- retryableCodes.includes(err.code)) {
275
+ error.code &&
276
+ RETRYABLE_NETWORK_CODES.includes(error.code)) {
277
+ this.logRetry(`due to ${error.code}`, attempt, maxRetries);
203
278
  await sleep(calcDelay(attempt, this.config.retry ?? {}));
204
279
  attempt += 1;
205
280
  continue;
206
281
  }
207
- throw err;
208
- }
209
- finally {
210
- cancelTimer();
282
+ error.code = error.code ?? "NETWORK_ERROR";
283
+ error.request = {
284
+ url: req.url,
285
+ method: req.method,
286
+ headers: req.headers,
287
+ };
288
+ error.meta = {
289
+ retryCount: attempt - 1,
290
+ isRetryable: false,
291
+ duration: Date.now() - startTime,
292
+ };
293
+ throw error;
211
294
  }
212
295
  }
213
296
  }
@@ -216,50 +299,86 @@ export class NodeTransport {
216
299
  const isHttps = url.protocol === "https:";
217
300
  const requestFn = isHttps ? https.request : http.request;
218
301
  const agent = isHttps ? this.httpsAgent : this.httpAgent;
302
+ let isDone = false;
303
+ let timer;
219
304
  const reqOptions = {
220
305
  method: options.method,
221
306
  headers: options.headers,
222
307
  agent,
223
- signal: options.signal,
224
308
  };
225
- if (options.signal?.aborted) {
309
+ if (options.externalSignal?.aborted) {
226
310
  const abortError = new Error("The operation was aborted.");
227
311
  abortError.name = "AbortError";
228
312
  return reject(abortError);
229
313
  }
230
314
  const req = requestFn(url, reqOptions, (res) => {
231
- const chunks = [];
232
- res.on("data", (chunk) => {
233
- chunks.push(chunk);
234
- });
235
- res.on("end", () => {
236
- const body = chunks.length === 0 ? Buffer.alloc(0) : Buffer.concat(chunks);
237
- resolve({
238
- status: res.statusCode ?? 200,
239
- headers: res.headers,
240
- body,
241
- });
315
+ if (timer)
316
+ clearTimeout(timer);
317
+ cleanupExternalSignal();
318
+ isDone = true;
319
+ resolve({
320
+ status: res.statusCode ?? 200,
321
+ headers: res.headers,
322
+ body: res,
242
323
  });
243
- res.on("error", (err) => {
324
+ });
325
+ if (options.timeoutMs > 0) {
326
+ timer = setTimeout(() => {
327
+ if (isDone)
328
+ return;
329
+ isDone = true;
330
+ cleanupExternalSignal();
331
+ req.destroy();
332
+ const err = new Error("The operation was aborted.");
333
+ err.name = "AbortError";
334
+ reject(err);
335
+ }, options.timeoutMs);
336
+ }
337
+ let onExternalAbort;
338
+ if (options.externalSignal) {
339
+ onExternalAbort = () => {
340
+ if (isDone)
341
+ return;
342
+ isDone = true;
343
+ if (timer)
344
+ clearTimeout(timer);
345
+ req.destroy();
346
+ const err = new Error("The operation was aborted.");
347
+ err.name = "AbortError";
244
348
  reject(err);
349
+ };
350
+ options.externalSignal.addEventListener("abort", onExternalAbort, {
351
+ once: true,
245
352
  });
246
- });
353
+ }
354
+ function cleanupExternalSignal() {
355
+ if (options.externalSignal && onExternalAbort) {
356
+ options.externalSignal.removeEventListener("abort", onExternalAbort);
357
+ }
358
+ }
247
359
  req.on("error", (err) => {
360
+ if (isDone)
361
+ return;
362
+ isDone = true;
363
+ if (timer)
364
+ clearTimeout(timer);
365
+ cleanupExternalSignal();
248
366
  reject(err);
249
367
  });
250
368
  if (options.body !== undefined && options.body !== null) {
251
369
  if (Buffer.isBuffer(options.body) || typeof options.body === "string") {
252
- req.write(options.body);
370
+ req.end(options.body);
253
371
  }
254
- else if (options.body instanceof Readable) {
255
- options.body.pipe(req);
256
- return; // Управление потоком передано pipe
372
+ else if (options.body instanceof ReadableStream) {
373
+ Readable.fromWeb(options.body).pipe(req);
257
374
  }
258
375
  else {
259
- req.write(JSON.stringify(options.body));
376
+ req.end(JSON.stringify(options.body));
260
377
  }
261
378
  }
262
- req.end();
379
+ else {
380
+ req.end();
381
+ }
263
382
  });
264
383
  }
265
384
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { HyperPlugin, PluginContext, InternalRequest, HttpResponse, HyperttpError, HttpClientOptions } from "@hyperttp/types";
2
+ /**
3
+ * @ru Структура записи хука с метаданными для оптимизации и сортировки.
4
+ * @en Hook record structure with metadata for optimization and sorting.
5
+ */
6
+ export interface HookRecord<T> {
7
+ readonly name: string;
8
+ readonly priority: number;
9
+ readonly run: T;
10
+ }
11
+ export interface PipelineContainer {
12
+ readonly request: HookRecord<Required<HyperPlugin>["onRequest"]>[];
13
+ readonly responseMutators: HookRecord<Required<HyperPlugin>["onResponse"]>[];
14
+ readonly responseSideEffects: HookRecord<Required<HyperPlugin>["onResponse"]>[];
15
+ readonly error: HookRecord<Required<HyperPlugin>["onError"]>[];
16
+ }
17
+ /**
18
+ * @ru Создает пустой контейнер для конвейеров плагинов.
19
+ * @en Creates an empty container for plugin pipelines.
20
+ */
21
+ export declare function createPipelines(): PipelineContainer;
22
+ /**
23
+ * @ru Вставляет хук в массив с сохранением сортировки по убыванию приоритета (деревья поиска тут избыточны).
24
+ * @en Inserts a hook into the array maintaining descending priority order.
25
+ */
26
+ export declare function insertHookSorted<T>(list: HookRecord<T>[], hook: HookRecord<T>): void;
27
+ /**
28
+ * @ru Выполняет конвейер пред-запроса. Поддерживает short-circuit (ранний возврат ответа).
29
+ * @en Executes the pre-request pipeline. Supports short-circuiting.
30
+ */
31
+ export declare function executeRequestPipeline(hooks: readonly HookRecord<Required<HyperPlugin>["onRequest"]>[], req: InternalRequest, ctx: PluginContext): Promise<HttpResponse<unknown> | null>;
32
+ /**
33
+ * @ru Выполняет конвейер пост-ответа. Разделен на мутаторы (последовательно) и сайд-эффекты (в фоне).
34
+ * @en Executes the post-response pipeline. Split into mutators (sequential) and side-effects (background).
35
+ */
36
+ export declare function executeResponsePipeline(mutators: readonly HookRecord<Required<HyperPlugin>["onResponse"]>[], sideEffects: readonly HookRecord<Required<HyperPlugin>["onResponse"]>[], res: HttpResponse<unknown>, req: InternalRequest, ctx: PluginContext, logger?: HttpClientOptions["logger"]): Promise<void>;
37
+ /**
38
+ * @ru Выполняет конвейер перехвата ошибок. Первый вернувший HttpResponse плагин прерывает панику.
39
+ * @en Executes the error interception pipeline. First plugin to return HttpResponse stops the panic.
40
+ */
41
+ export declare function executeErrorPipeline(hooks: readonly HookRecord<Required<HyperPlugin>["onError"]>[], error: HyperttpError, req: InternalRequest, ctx: PluginContext): Promise<HttpResponse<unknown> | null>;
42
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/utils/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,EACb,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;IACnE,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;IAC7E,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CACtC,QAAQ,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CACpC,EAAE,CAAC;IACJ,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;CAChE;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAOnD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EACrB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAClB,IAAI,CAON;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAChE,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAWvC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EACpE,WAAW,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EACvE,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,EAC1B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,aAAa,EAClB,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAC9D,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAWvC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @ru Создает пустой контейнер для конвейеров плагинов.
3
+ * @en Creates an empty container for plugin pipelines.
4
+ */
5
+ export function createPipelines() {
6
+ return {
7
+ request: [],
8
+ responseMutators: [],
9
+ responseSideEffects: [],
10
+ error: [],
11
+ };
12
+ }
13
+ /**
14
+ * @ru Вставляет хук в массив с сохранением сортировки по убыванию приоритета (деревья поиска тут избыточны).
15
+ * @en Inserts a hook into the array maintaining descending priority order.
16
+ */
17
+ export function insertHookSorted(list, hook) {
18
+ const len = list.length;
19
+ let i = 0;
20
+ while (i < len && list[i].priority >= hook.priority) {
21
+ i++;
22
+ }
23
+ list.splice(i, 0, hook);
24
+ }
25
+ /**
26
+ * @ru Выполняет конвейер пред-запроса. Поддерживает short-circuit (ранний возврат ответа).
27
+ * @en Executes the pre-request pipeline. Supports short-circuiting.
28
+ */
29
+ export async function executeRequestPipeline(hooks, req, ctx) {
30
+ const len = hooks.length;
31
+ if (len === 0)
32
+ return null;
33
+ for (let i = 0; i < len; i++) {
34
+ const shortCircuit = await hooks[i].run(req, ctx);
35
+ if (shortCircuit) {
36
+ return shortCircuit;
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * @ru Выполняет конвейер пост-ответа. Разделен на мутаторы (последовательно) и сайд-эффекты (в фоне).
43
+ * @en Executes the post-response pipeline. Split into mutators (sequential) and side-effects (background).
44
+ */
45
+ export async function executeResponsePipeline(mutators, sideEffects, res, req, ctx, logger) {
46
+ // 1. Запуск фоновых сайд-эффектов (Background Phase) - Fire and Forget безопасно для основного потока
47
+ const seLen = sideEffects.length;
48
+ if (seLen > 0) {
49
+ for (let i = 0; i < seLen; i++) {
50
+ const effect = sideEffects[i];
51
+ try {
52
+ const promise = effect.run(res, req, ctx);
53
+ if (promise && typeof promise.catch === "function") {
54
+ promise.catch((err) => logger?.("warn", `Background hook ${effect.name} crashed: ${err instanceof Error ? err.message : String(err)}`));
55
+ }
56
+ }
57
+ catch (err) {
58
+ logger?.("warn", `Sync background hook ${effect.name} crashed: ${err instanceof Error ? err.message : String(err)}`);
59
+ }
60
+ }
61
+ }
62
+ // 2. Запуск мутаторов ответа (Mutator Phase) - Изменяют объект ответа последовательно
63
+ const mutLen = mutators.length;
64
+ if (mutLen > 0) {
65
+ for (let i = 0; i < mutLen; i++) {
66
+ await mutators[i].run(res, req, ctx);
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * @ru Выполняет конвейер перехвата ошибок. Первый вернувший HttpResponse плагин прерывает панику.
72
+ * @en Executes the error interception pipeline. First plugin to return HttpResponse stops the panic.
73
+ */
74
+ export async function executeErrorPipeline(hooks, error, req, ctx) {
75
+ const len = hooks.length;
76
+ if (len === 0)
77
+ return null;
78
+ for (let i = 0; i < len; i++) {
79
+ const recovered = await hooks[i].run(error, req, ctx);
80
+ if (recovered) {
81
+ return recovered;
82
+ }
83
+ }
84
+ return null;
85
+ }
86
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/utils/pipeline.ts"],"names":[],"mappings":"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"}