keq 2.8.13 → 2.8.14
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/CHANGELOG.md +7 -0
- package/dist/esm/src/util/create-response-proxy.js +2 -2
- package/dist/esm/src/util/fork.js +3 -3
- package/dist/umd/src/util/create-response-proxy.js +2 -2
- package/dist/umd/src/util/fork.js +3 -3
- package/package.json +1 -1
- package/packages/cache/.turbo/turbo-build.log +1 -6
- package/packages/cache/dist/cache-entry/cache-entry.d.ts +1 -1
- package/packages/cache/dist/cache-entry/cache-entry.d.ts.map +1 -1
- package/packages/cache/dist/cache.d.ts +7 -1
- package/packages/cache/dist/cache.d.ts.map +1 -1
- package/packages/cache/dist/index.js +28 -8
- package/packages/cache/dist/index.js.map +1 -1
- package/packages/cache/dist/index.mjs +28 -8
- package/packages/cache/dist/index.mjs.map +1 -1
- package/packages/cache/dist/request-cache-handler/request-cache-handler.d.ts.map +1 -1
- package/packages/cache/dist/types/request-cache-options.d.ts +11 -0
- package/packages/cache/dist/types/request-cache-options.d.ts.map +1 -1
- package/packages/cli/.turbo/turbo-build.log +1 -17
- package/packages/cli/dist/cli.cjs +132 -86
- package/packages/cli/dist/cli.cjs.map +1 -1
- package/packages/cli/dist/cli.js +132 -86
- package/packages/cli/dist/cli.js.map +1 -1
- package/packages/cli/dist/compiler/compiler.d.ts.map +1 -1
- package/packages/cli/dist/compiler/tasks/setup/index.d.ts.map +1 -1
- package/packages/cli/dist/compiler/tasks/setup/utils/index.d.ts +0 -1
- package/packages/cli/dist/compiler/tasks/setup/utils/index.d.ts.map +1 -1
- package/packages/cli/dist/compiler/tasks/setup/utils/parse-runtime-config.d.ts +3 -0
- package/packages/cli/dist/compiler/tasks/setup/utils/parse-runtime-config.d.ts.map +1 -0
- package/packages/cli/dist/compiler/types/compiler-context.d.ts +1 -1
- package/packages/cli/dist/compiler/types/compiler-context.d.ts.map +1 -1
- package/packages/cli/dist/compiler/types/compiler-hooks.d.ts +2 -1
- package/packages/cli/dist/compiler/types/compiler-hooks.d.ts.map +1 -1
- package/packages/cli/dist/define-config.d.ts +3 -0
- package/packages/cli/dist/define-config.d.ts.map +1 -0
- package/packages/cli/dist/index.cjs +137 -93
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.d.ts +2 -2
- package/packages/cli/dist/index.d.ts.map +1 -1
- package/packages/cli/dist/index.js +136 -91
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/dist/models/module-definition.d.ts +3 -2
- package/packages/cli/dist/models/module-definition.d.ts.map +1 -1
- package/packages/cli/dist/plugins/download-http-file/download-http-file.plugin.d.ts +2 -2
- package/packages/cli/dist/plugins/download-http-file/download-http-file.plugin.d.ts.map +1 -1
- package/packages/cli/dist/plugins/download-local-file/download-local-file.plugin.d.ts.map +1 -1
- package/packages/cli/dist/plugins/shaking/shaking.plugin.d.ts.map +1 -1
- package/packages/cli/dist/plugins.cjs +25 -12
- package/packages/cli/dist/plugins.cjs.map +1 -1
- package/packages/cli/dist/plugins.js +25 -12
- package/packages/cli/dist/plugins.js.map +1 -1
- package/packages/cli/dist/types/address.d.ts +8 -0
- package/packages/cli/dist/types/address.d.ts.map +1 -0
- package/packages/cli/dist/types/index.d.ts +2 -1
- package/packages/cli/dist/types/index.d.ts.map +1 -1
- package/packages/cli/dist/types/runtime-config.d.ts +16 -7
- package/packages/cli/dist/types/runtime-config.d.ts.map +1 -1
- package/packages/cli/dist/utils/is-valid-url.d.ts +16 -0
- package/packages/cli/dist/utils/is-valid-url.d.ts.map +1 -0
- package/packages/exception/dist/catch-exception.d.ts +4 -0
- package/packages/exception/dist/catch-exception.d.ts.map +1 -0
- package/packages/exception/dist/index.d.ts +4 -0
- package/packages/exception/dist/index.d.ts.map +1 -0
- package/packages/exception/dist/throw-exception.d.ts +5 -0
- package/packages/exception/dist/throw-exception.d.ts.map +1 -0
- package/packages/exception/dist/validate-status-code.d.ts +3 -0
- package/packages/exception/dist/validate-status-code.d.ts.map +1 -0
- package/packages/headers/.turbo/turbo-build.log +6 -4
- package/packages/headers/dist/index.d.ts +42 -0
- package/packages/headers/dist/index.d.ts.map +1 -0
- package/packages/keq/.turbo/turbo-build.log +6 -6
- package/packages/keq/dist/context/execution-context.d.ts +2 -2
- package/packages/keq/dist/context/execution-context.d.ts.map +1 -1
- package/packages/keq/dist/context/middleware-context.d.ts +1 -1
- package/packages/keq/dist/context/middleware-context.d.ts.map +1 -1
- package/packages/keq/dist/context/orchestrator-context.d.ts +2 -2
- package/packages/keq/dist/context/orchestrator-context.d.ts.map +1 -1
- package/packages/keq/dist/context/shared-context.d.ts +7 -7
- package/packages/keq/dist/context/shared-context.d.ts.map +1 -1
- package/packages/keq/dist/context/types/keq-global.d.ts +7 -2
- package/packages/keq/dist/context/types/keq-global.d.ts.map +1 -1
- package/packages/keq/dist/index.d.ts +1 -1
- package/packages/keq/dist/index.d.ts.map +1 -1
- package/packages/keq/dist/index.js +73 -61
- package/packages/keq/dist/index.js.map +1 -1
- package/packages/keq/dist/index.mjs +73 -61
- package/packages/keq/dist/index.mjs.map +1 -1
- package/packages/keq/dist/middlewares/flow-control-middleware/abort-flow-control-middleware.d.ts.map +1 -1
- package/packages/keq/dist/middlewares/flow-control-middleware/serial-flow-control-middleware.d.ts.map +1 -1
- package/packages/keq/dist/orchestrator/orchestrator.d.ts +11 -6
- package/packages/keq/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/packages/keq/dist/request/core.d.ts +1 -7
- package/packages/keq/dist/request/core.d.ts.map +1 -1
- package/packages/keq/dist/request/request.d.ts.map +1 -1
- package/packages/keq/dist/request-init/request-init.d.ts +1 -1
- package/packages/keq/dist/request-init/request-init.d.ts.map +1 -1
- package/packages/nestjs/.turbo/turbo-build.log +1 -6
- package/packages/url/.turbo/turbo-build.log +4 -2
- package/packages/url/dist/index.d.ts +5 -0
- package/packages/url/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/compiler/tasks/setup/utils/validate-modules.d.ts +0 -2
- package/packages/cli/dist/compiler/tasks/setup/utils/validate-modules.d.ts.map +0 -1
- package/packages/cli/dist/define-keq-config.d.ts +0 -3
- package/packages/cli/dist/define-keq-config.d.ts.map +0 -1
- package/packages/keq/node_modules/.bin/tsc +0 -21
- package/packages/keq/node_modules/.bin/tsserver +0 -21
- package/packages/nestjs/node_modules/.bin/tsc +0 -21
- package/packages/nestjs/node_modules/.bin/tsserver +0 -21
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [2.8.14](https://github.com/keq-request/keq/compare/v2.8.13...v2.8.14) (2026-01-20)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* resolve pnpm singleton trap ([89eed47](https://github.com/keq-request/keq/commit/89eed475346262d5cad371a1aa39cf257bf2a42f))
|
|
11
|
+
|
|
5
12
|
### [2.8.13](https://github.com/keq-request/keq/compare/v2.8.12...v2.8.13) (2026-01-14)
|
|
6
13
|
|
|
7
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { fork } from './fork.js';
|
|
2
|
-
const JsonCachePropertyKey =
|
|
3
|
-
const TextCachePropertyKey =
|
|
2
|
+
const JsonCachePropertyKey = '__KeqProtectedProperty(response.proxy.cache.json)__';
|
|
3
|
+
const TextCachePropertyKey = '__KeqProtectedProperty(response.proxy.cache.text)__';
|
|
4
4
|
export function createResponseProxy(response) {
|
|
5
5
|
return new Proxy(response, {
|
|
6
6
|
get(res, prop) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
2
2
|
import { klona } from 'klona/json';
|
|
3
|
-
const
|
|
3
|
+
const ForkedObjectBrandPropertyKey = '__KeqProtectedProperty(forked.object.brand)__';
|
|
4
4
|
const ARRAY_MUTATORS = new Set([
|
|
5
5
|
'push',
|
|
6
6
|
'pop',
|
|
@@ -35,7 +35,7 @@ export function fork(original) {
|
|
|
35
35
|
return new Proxy(getTarget(), {
|
|
36
36
|
get(target, prop) {
|
|
37
37
|
const realTarget = getTarget();
|
|
38
|
-
if (prop ===
|
|
38
|
+
if (prop === ForkedObjectBrandPropertyKey)
|
|
39
39
|
return realTarget;
|
|
40
40
|
const value = realTarget[prop];
|
|
41
41
|
// return value directly if already copied
|
|
@@ -81,5 +81,5 @@ export function fork(original) {
|
|
|
81
81
|
return createProxy();
|
|
82
82
|
}
|
|
83
83
|
export function unwrap(proxy) {
|
|
84
|
-
return proxy && proxy[
|
|
84
|
+
return proxy && proxy[ForkedObjectBrandPropertyKey] ? proxy[ForkedObjectBrandPropertyKey] : proxy;
|
|
85
85
|
}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.createResponseProxy = void 0;
|
|
13
13
|
const fork_js_1 = require("./fork.js");
|
|
14
|
-
const JsonCachePropertyKey =
|
|
15
|
-
const TextCachePropertyKey =
|
|
14
|
+
const JsonCachePropertyKey = '__KeqProtectedProperty(response.proxy.cache.json)__';
|
|
15
|
+
const TextCachePropertyKey = '__KeqProtectedProperty(response.proxy.cache.text)__';
|
|
16
16
|
function createResponseProxy(response) {
|
|
17
17
|
return new Proxy(response, {
|
|
18
18
|
get(res, prop) {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
exports.unwrap = exports.fork = void 0;
|
|
13
13
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
14
14
|
const json_1 = require("klona/json");
|
|
15
|
-
const
|
|
15
|
+
const ForkedObjectBrandPropertyKey = '__KeqProtectedProperty(forked.object.brand)__';
|
|
16
16
|
const ARRAY_MUTATORS = new Set([
|
|
17
17
|
'push',
|
|
18
18
|
'pop',
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
return new Proxy(getTarget(), {
|
|
48
48
|
get(target, prop) {
|
|
49
49
|
const realTarget = getTarget();
|
|
50
|
-
if (prop ===
|
|
50
|
+
if (prop === ForkedObjectBrandPropertyKey)
|
|
51
51
|
return realTarget;
|
|
52
52
|
const value = realTarget[prop];
|
|
53
53
|
// return value directly if already copied
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
}
|
|
95
95
|
exports.fork = fork;
|
|
96
96
|
function unwrap(proxy) {
|
|
97
|
-
return proxy && proxy[
|
|
97
|
+
return proxy && proxy[ForkedObjectBrandPropertyKey] ? proxy[ForkedObjectBrandPropertyKey] : proxy;
|
|
98
98
|
}
|
|
99
99
|
exports.unwrap = unwrap;
|
|
100
100
|
});
|
package/package.json
CHANGED
|
@@ -11,9 +11,4 @@
|
|
|
11
11
|
[34mCLI[39m Cleaning output folder
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
13
|
[34mESM[39m Build start
|
|
14
|
-
[
|
|
15
|
-
[32mCJS[39m [1mdist/index.js.map [22m[32m77.81 KB[39m
|
|
16
|
-
[32mCJS[39m ⚡️ Build success in 194ms
|
|
17
|
-
[32mESM[39m [1mdist/index.mjs [22m[32m41.10 KB[39m
|
|
18
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[32m77.05 KB[39m
|
|
19
|
-
[32mESM[39m ⚡️ Build success in 194ms
|
|
14
|
+
[41m[30m ELIFECYCLE [39m[49m [31mCommand failed.[39m
|
|
@@ -12,6 +12,6 @@ export declare class CacheEntry {
|
|
|
12
12
|
constructor(options: CacheEntryOptions);
|
|
13
13
|
static build(options: CacheEntryBuildOptions): Promise<CacheEntry>;
|
|
14
14
|
clone(): CacheEntry;
|
|
15
|
-
|
|
15
|
+
assignResponseHeaders(headers: Headers): void;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=cache-entry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-entry.d.ts","sourceRoot":"","sources":["../../src/cache-entry/cache-entry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAI7E,qBAAa,UAAU;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,QAAQ,CAAA;IAElB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ,SAAS,EAAE,IAAI,CAAA;gBAEH,OAAO,EAAE,iBAAiB;WAOzB,KAAK,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBxE,KAAK,IAAI,UAAU;
|
|
1
|
+
{"version":3,"file":"cache-entry.d.ts","sourceRoot":"","sources":["../../src/cache-entry/cache-entry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAI7E,qBAAa,UAAU;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,QAAQ,CAAA;IAElB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ,SAAS,EAAE,IAAI,CAAA;gBAEH,OAAO,EAAE,iBAAiB;WAOzB,KAAK,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBxE,KAAK,IAAI,UAAU;IASnB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAO9C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { queueAsPromised } from 'fastq';
|
|
2
|
+
import type { Keq, KeqMiddleware, KeqContext, KeqNext } from 'keq';
|
|
2
3
|
import { KeqCacheStorage } from './storage/keq-cache-storage.js';
|
|
3
4
|
import { KeqCacheKeyFactory, KeqCacheRule, RequestCacheOptions } from './types/index.js';
|
|
4
5
|
export interface KeqCacheOptions extends Pick<RequestCacheOptions, 'serverTiming'> {
|
|
@@ -33,6 +34,11 @@ declare module 'keq' {
|
|
|
33
34
|
context: KeqContext;
|
|
34
35
|
};
|
|
35
36
|
}
|
|
37
|
+
interface KeqGlobalCore {
|
|
38
|
+
cache?: Record<string, queueAsPromised<{
|
|
39
|
+
next: KeqNext;
|
|
40
|
+
}, void>>;
|
|
41
|
+
}
|
|
36
42
|
}
|
|
37
43
|
export declare function cache(options: KeqCacheOptions): KeqMiddleware;
|
|
38
44
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEhE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAGxF,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC;IAChF,OAAO,EAAE,eAAe,CAAA;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAE/B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CACvB;AAGD,OAAO,QAAQ,KAAK,CAAC;IACnB,UAAiB,oBAAoB,CAAC,EAAE;QACtC;;WAEG;QACH,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;KACpD;IAED,UAAiB,SAAS;QACxB,WAAW,EAAE;YACX,GAAG,EAAE,MAAM,CAAA;YACX,QAAQ,EAAE,QAAQ,CAAA;YAClB,OAAO,EAAE,UAAU,CAAA;SACpB,CAAA;QAED,YAAY,EAAE;YACZ,GAAG,EAAE,MAAM,CAAA;YACX,OAAO,EAAE,UAAU,CAAA;SACpB,CAAA;QAED,cAAc,EAAE;YACd,GAAG,EAAE,MAAM,CAAA;YACX,WAAW,CAAC,EAAE,QAAQ,CAAA;YACtB,WAAW,EAAE,QAAQ,CAAA;YACrB,OAAO,EAAE,UAAU,CAAA;SACpB,CAAA;KACF;IAED,UAAiB,aAAa;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,EAAE,IAAI,CAAC,CAAC,CAAA;KACjE;CACF;AAGD,wBAAgB,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAgE7D"}
|
|
@@ -46,6 +46,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
46
46
|
|
|
47
47
|
// src/cache.ts
|
|
48
48
|
var R2 = __toESM(require("ramda"));
|
|
49
|
+
var fastq = __toESM(require("fastq"));
|
|
49
50
|
|
|
50
51
|
// src/request-cache-handler/request-cache-handler.ts
|
|
51
52
|
var R = __toESM(require("ramda"));
|
|
@@ -306,12 +307,12 @@ var CacheEntry = class _CacheEntry {
|
|
|
306
307
|
expiredAt: this.expiredAt
|
|
307
308
|
});
|
|
308
309
|
}
|
|
309
|
-
|
|
310
|
-
this.
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
310
|
+
assignResponseHeaders(headers) {
|
|
311
|
+
this.response = new Response(this.response.body, {
|
|
312
|
+
status: this.response.status,
|
|
313
|
+
statusText: this.response.statusText,
|
|
314
|
+
headers
|
|
315
|
+
});
|
|
315
316
|
}
|
|
316
317
|
};
|
|
317
318
|
|
|
@@ -341,7 +342,9 @@ var RequestCacheHandler = class {
|
|
|
341
342
|
const entry = await this.storage.get(key);
|
|
342
343
|
if (entry) {
|
|
343
344
|
const dur = (/* @__PURE__ */ new Date()).getTime() - startAt.getTime();
|
|
344
|
-
entry.response.headers
|
|
345
|
+
const HeadersWithServerTiming = new Headers(entry.response.headers);
|
|
346
|
+
HeadersWithServerTiming.set("Server-Timing", "keq-cache; dur=".concat(dur, '; desc="HIT"'));
|
|
347
|
+
entry.assignResponseHeaders(HeadersWithServerTiming);
|
|
345
348
|
}
|
|
346
349
|
return [key, entry];
|
|
347
350
|
}
|
|
@@ -396,7 +399,24 @@ function cache(options) {
|
|
|
396
399
|
}
|
|
397
400
|
const handler = new RequestCacheHandler(storage, requestCacheOptions);
|
|
398
401
|
const strategy = requestCacheOptions.strategy;
|
|
399
|
-
|
|
402
|
+
if (requestCacheOptions.concurrent) {
|
|
403
|
+
await strategy(handler, ctx, next);
|
|
404
|
+
} else {
|
|
405
|
+
if (!ctx.global.core) ctx.global.core = {};
|
|
406
|
+
if (!ctx.global.core.cache) ctx.global.core.cache = {};
|
|
407
|
+
const cacheKey = handler.getRequestCacheKey(ctx);
|
|
408
|
+
if (!ctx.global.core.cache[cacheKey]) {
|
|
409
|
+
ctx.global.core.cache[cacheKey] = fastq.promise(async ({ next: next2 }) => {
|
|
410
|
+
await next2();
|
|
411
|
+
}, 1);
|
|
412
|
+
}
|
|
413
|
+
const queue = ctx.global.core.cache[cacheKey];
|
|
414
|
+
await queue.push({
|
|
415
|
+
next: async () => {
|
|
416
|
+
await strategy(handler, ctx, next);
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
}
|
|
400
420
|
};
|
|
401
421
|
}
|
|
402
422
|
|