@hyperttp/cache 1.0.9 → 1.0.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperttp/cache",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "High-performance LRU caching plugin for Hyperttp client",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -18,6 +18,6 @@
18
18
  "lru-cache": "^11.5.0"
19
19
  },
20
20
  "peerDependencies": {
21
- "@hyperttp/core": "^1.1.5"
21
+ "@hyperttp/core": "^1.1.6"
22
22
  }
23
23
  }
package/plugin.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAMZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,aAAa;QACrB,KAAK,CAAC,EAAE,YAAY,CAAC;KACtB;IACD,UAAU,iBAAiB;QACzB,KAAK,CAAC,EAAE,mBAAmB,GAAG;YAC5B,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;IACD,UAAU,SAAS;QACjB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC;CACF;AAMD,wBAAgB,SAAS,IAAI,WAAW,CA0FvC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAMZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,aAAa;QACrB,KAAK,CAAC,EAAE,YAAY,CAAC;KACtB;IACD,UAAU,iBAAiB;QACzB,KAAK,CAAC,EAAE,mBAAmB,GAAG;YAC5B,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;IACD,UAAU,SAAS;QACjB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC;CACF;AAMD,wBAAgB,SAAS,IAAI,WAAW,CAwGvC"}
package/plugin.js CHANGED
@@ -5,6 +5,8 @@ function isCloneable(obj) {
5
5
  export function withCache() {
6
6
  let cache;
7
7
  let allowedMethods;
8
+ // Хранилище для промисов запросов, которые уже в пути
9
+ const inFlight = new Map();
8
10
  return {
9
11
  name: "hyperttp-cache",
10
12
  phase: "PREPARE",
@@ -31,26 +33,30 @@ export function withCache() {
31
33
  },
32
34
  wrapDispatch: (next) => {
33
35
  return (req) => {
34
- if (!allowedMethods.has(req.method.toUpperCase())) {
36
+ const method = req.method.toUpperCase();
37
+ if (!allowedMethods.has(method)) {
35
38
  return next(req);
36
39
  }
37
40
  const cacheKey = req.url;
38
41
  const cachedEntry = cache.getWithMetadata(cacheKey);
39
42
  if (cachedEntry !== undefined) {
40
- if (cachedEntry.etag || cachedEntry.lastModified) {
41
- req.headers = { ...req.headers };
42
- if (cachedEntry.etag)
43
- req.headers["if-none-match"] = cachedEntry.etag;
44
- if (cachedEntry.lastModified)
45
- req.headers["if-modified-since"] = cachedEntry.lastModified;
46
- }
47
- else {
43
+ if (!cachedEntry.etag && !cachedEntry.lastModified) {
48
44
  return Promise.resolve(isCloneable(cachedEntry.data)
49
45
  ? cachedEntry.data.clone()
50
46
  : cachedEntry.data);
51
47
  }
48
+ req.headers = { ...req.headers };
49
+ if (cachedEntry.etag)
50
+ req.headers["if-none-match"] = cachedEntry.etag;
51
+ if (cachedEntry.lastModified)
52
+ req.headers["if-modified-since"] = cachedEntry.lastModified;
53
+ }
54
+ if (inFlight.has(cacheKey)) {
55
+ return inFlight.get(cacheKey);
52
56
  }
53
- return next(req).then((response) => {
57
+ const requestPromise = next(req)
58
+ .then((response) => {
59
+ inFlight.delete(cacheKey);
54
60
  if (!response)
55
61
  return response;
56
62
  if (response.status === 304 && cachedEntry !== undefined) {
@@ -71,7 +77,13 @@ export function withCache() {
71
77
  });
72
78
  }
73
79
  return response;
80
+ })
81
+ .catch((err) => {
82
+ inFlight.delete(cacheKey);
83
+ throw err;
74
84
  });
85
+ inFlight.set(cacheKey, requestPromise);
86
+ return requestPromise;
75
87
  };
76
88
  },
77
89
  };
package/plugin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAgBvD,SAAS,WAAW,CAAI,GAAQ;IAC9B,OAAO,OAAO,GAAG,EAAE,KAAK,KAAK,UAAU,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,KAAmB,CAAC;IACxB,IAAI,cAA2B,CAAC;IAEhC,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,CAAC,MAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO;QAE/D,KAAK,CAAC,GAAkB;YACtB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAE7B,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YAElB,MAAM,OAAO,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACvC,IAAI,CAAC,QAAQ,GAAG;oBACd,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1C,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;oBAC/B,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,CAAC,GAAY,EAAE,EAAE;gBACjC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjD,CAAC,CAAC;QACJ,CAAC;QAED,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,OAAO,CAAI,GAAoB,EAA4B,EAAE;gBAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAClD,OAAO,IAAI,CAAI,GAAG,CAAC,CAAC;gBACtB,CAAC;gBAED,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;gBACzB,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAkB,QAAQ,CAAC,CAAC;gBAErE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;wBACjD,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;wBACjC,IAAI,WAAW,CAAC,IAAI;4BAClB,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC;wBAClD,IAAI,WAAW,CAAC,YAAY;4BAC1B,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC;oBAChE,CAAC;yBAAM,CAAC;wBACN,OAAO,OAAO,CAAC,OAAO,CACpB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;4BAC3B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE;4BAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,CACrB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACpC,IAAI,CAAC,QAAQ;wBAAE,OAAO,QAAQ,CAAC;oBAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;wBACzD,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;4BAClC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE;4BAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;oBACvB,CAAC;oBAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBACpD,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC;4BACxC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;4BAClB,CAAC,CAAC,QAAQ,CAAC;wBAEb,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;wBACjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;wBACpD,MAAM,YAAY,GAChB,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;wBAE3D,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE;4BAC5C,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;4BACjD,YAAY,EACV,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;yBAC9D,CAAC,CAAC;oBACL,CAAC;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}