@hyperttp/cache 1.0.6 → 1.0.8

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.6",
3
+ "version": "1.0.8",
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"
21
+ "@hyperttp/core": "^1.1.5"
22
22
  }
23
23
  }
package/plugin.d.ts CHANGED
@@ -1,13 +1,17 @@
1
1
  import type { HyperPlugin } from "@hyperttp/core";
2
2
  import type { CacheManagerOptions } from "./types/cache.js";
3
+ import { CacheManager } from "./utils/CacheManager.js";
3
4
  declare module "@hyperttp/core" {
5
+ interface PluginContext {
6
+ cache?: CacheManager;
7
+ }
4
8
  interface HttpClientOptions {
5
9
  cache?: CacheManagerOptions & {
6
10
  enabled: boolean;
7
11
  };
8
12
  }
9
13
  interface HyperCore {
10
- clearCache?: () => void;
14
+ clearCache(key?: string): void;
11
15
  }
12
16
  }
13
17
  export declare function withCache(): HyperPlugin;
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,EAIZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,iBAAiB;QACzB,KAAK,CAAC,EAAE,mBAAmB,GAAG;YAC5B,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;IAED,UAAU,SAAS;QACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;KACzB;CACF;AAED,wBAAgB,SAAS,IAAI,WAAW,CA8DvC"}
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,CA6FvC"}
package/plugin.js CHANGED
@@ -1,50 +1,79 @@
1
1
  import { CacheManager } from "./utils/CacheManager.js";
2
+ function isCloneable(obj) {
3
+ return typeof obj?.clone === "function";
4
+ }
2
5
  export function withCache() {
3
6
  let cache;
7
+ let allowedMethods;
4
8
  return {
5
9
  name: "hyperttp-cache",
6
10
  phase: "PREPARE",
7
11
  enabled: (config) => !!config.cache?.enabled,
8
- setup(core, config) {
9
- cache = new CacheManager(config.cache);
10
- core.clearCache = () => cache.clear();
12
+ setup(ctx) {
13
+ const { core, config } = ctx;
14
+ cache = new CacheManager(config?.cache);
15
+ ctx.cache = cache;
16
+ const methods = config?.cache?.methods ?? ["GET"];
17
+ allowedMethods = new Set(methods.map((m) => m.toUpperCase()));
11
18
  if (core && typeof core.getStats === "function") {
12
- const originalGetStats = core.getStats.bind(core);
13
- core.getStats = () => ({
14
- ...originalGetStats(),
15
- cacheSize: cache?.size ?? 0,
16
- });
19
+ const originalGetStats = core.getStats;
20
+ core.getStats = function () {
21
+ const stats = originalGetStats.call(this);
22
+ if (stats) {
23
+ stats.cacheSize = cache.size;
24
+ }
25
+ return stats;
26
+ };
17
27
  }
28
+ core.clearCache = (key) => {
29
+ return key ? cache.delete(key) : cache.clear();
30
+ };
18
31
  },
19
32
  wrapDispatch: (next) => {
20
- return async (req) => {
21
- if (req.method !== "GET")
33
+ return (req) => {
34
+ if (!allowedMethods.has(req.method.toUpperCase())) {
22
35
  return next(req);
23
- const cached = await cache.get(req.url);
24
- if (cached !== undefined) {
25
- return (typeof cached.clone === "function"
26
- ? cached.clone()
27
- : cached);
28
36
  }
29
- const response = await next(req);
30
- if (response !== undefined) {
31
- const valueToCache = typeof response.clone === "function"
32
- ? response.clone()
33
- : response;
34
- const headers = response.headers;
35
- if (headers) {
36
- const etag = headers["etag"] || headers["ETag"];
37
- const lastModified = headers["last-modified"] || headers["Last-Modified"];
38
- cache.setWithMetadata(req.url, valueToCache, {
39
- etag: typeof etag === "string" ? etag : undefined,
40
- lastModified: typeof lastModified === "string" ? lastModified : undefined,
41
- });
37
+ const cacheKey = req.url;
38
+ const cachedEntry = cache.getWithMetadata(cacheKey);
39
+ 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
+ }
45
+ if (cachedEntry.lastModified) {
46
+ req.headers["if-modified-since"] = cachedEntry.lastModified;
47
+ }
42
48
  }
43
49
  else {
44
- cache.set(req.url, valueToCache);
50
+ return Promise.resolve(isCloneable(cachedEntry.data)
51
+ ? cachedEntry.data.clone()
52
+ : cachedEntry.data);
45
53
  }
46
54
  }
47
- return response;
55
+ return next(req).then((response) => {
56
+ if (!response)
57
+ return response;
58
+ if (response.status === 304 && cachedEntry !== undefined) {
59
+ return isCloneable(cachedEntry.data)
60
+ ? cachedEntry.data.clone()
61
+ : cachedEntry.data;
62
+ }
63
+ if (response.status >= 200 && response.status < 300) {
64
+ const valueToCache = isCloneable(response)
65
+ ? response.clone()
66
+ : response;
67
+ const headers = response.headers;
68
+ const etag = headers?.["etag"] || headers?.["ETag"];
69
+ const lastModified = headers?.["last-modified"] || headers?.["Last-Modified"];
70
+ cache.setWithMetadata(cacheKey, valueToCache, {
71
+ etag: typeof etag === "string" ? etag : undefined,
72
+ lastModified: typeof lastModified === "string" ? lastModified : undefined,
73
+ });
74
+ }
75
+ return response;
76
+ });
48
77
  };
49
78
  },
50
79
  };
package/plugin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAcvD,MAAM,UAAU,SAAS;IACvB,IAAI,KAAoB,CAAC;IAEzB,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,IAAI,EAAE,MAAM;YAChB,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,KAAM,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;oBACrB,GAAG,gBAAgB,EAAE;oBACrB,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,OAAO,KAAK,EAAK,GAAoB,EAA4B,EAAE;gBACjE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAI,GAAG,CAAC,CAAC;gBAE9C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,CACL,OAAQ,MAAc,CAAC,KAAK,KAAK,UAAU;wBACzC,CAAC,CAAE,MAAc,CAAC,KAAK,EAAE;wBACzB,CAAC,CAAC,MAAM,CACQ,CAAC;gBACvB,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAI,GAAG,CAAC,CAAC;gBAEpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,YAAY,GAChB,OAAQ,QAAgB,CAAC,KAAK,KAAK,UAAU;wBAC3C,CAAC,CAAE,QAAgB,CAAC,KAAK,EAAE;wBAC3B,CAAC,CAAC,QAAQ,CAAC;oBAEf,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;oBAEjC,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;wBAChD,MAAM,YAAY,GAChB,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;wBAEvD,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE;4BAC3C,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;yBAAM,CAAC;wBACN,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,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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"}
package/types/cache.d.ts CHANGED
@@ -1,4 +1,9 @@
1
1
  export type Method = "GET" | "POST" | "PUT" | "PATCH" | "OPTIONS" | "DELETE" | "HEAD";
2
+ export interface CacheEntry<T> {
3
+ data: T;
4
+ etag?: string;
5
+ lastModified?: string;
6
+ }
2
7
  export interface CacheManagerOptions {
3
8
  /**
4
9
  * @ru Включить кэш
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/types/cache.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,SAAS,GACT,QAAQ,GACR,MAAM,CAAC;AAEX,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/types/cache.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,SAAS,GACT,QAAQ,GACR,MAAM,CAAC;AAEX,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -1,4 +1,4 @@
1
- import type { CacheManagerOptions } from "../types/cache.ts";
1
+ import type { CacheEntry, CacheManagerOptions } from "../types/cache.ts";
2
2
  /**
3
3
  * @class CacheManager
4
4
  * @en High-performance in-memory cache based on LRU strategy.
@@ -36,11 +36,7 @@ export declare class CacheManager {
36
36
  * @param key Cache key
37
37
  * @returns Cached entry with metadata or undefined
38
38
  */
39
- getWithMetadata<T>(key: string): {
40
- data: T;
41
- etag?: string;
42
- lastModified?: string;
43
- } | undefined;
39
+ getWithMetadata<T>(key: string): CacheEntry<T> | undefined;
44
40
  /**
45
41
  * @en Stores value with optional HTTP metadata (etag, lastModified).
46
42
  * @ru Сохраняет значение с дополнительными HTTP метаданными (etag, lastModified).
@@ -1 +1 @@
1
- {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/utils/CacheManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAE9C,OAAO,CAAC,EAAE,mBAAmB;IAQzC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAMnC;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAC1B;QACE,IAAI,EAAE,CAAC,CAAC;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACD,SAAS;IAIb;;;;;;;;OAQG;IACH,eAAe,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,IAAI;IAQP;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
1
+ {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/utils/CacheManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAE9C,OAAO,CAAC,EAAE,mBAAmB;IAQzC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAMnC;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS;IAK1D;;;;;;;;OAQG;IACH,eAAe,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,IAAI;IAQP;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -49,7 +49,8 @@ export class CacheManager {
49
49
  * @returns Cached entry with metadata or undefined
50
50
  */
51
51
  getWithMetadata(key) {
52
- return this.cache.get(key);
52
+ const entry = this.cache.get(key);
53
+ return entry ? entry : undefined;
53
54
  }
54
55
  /**
55
56
  * @en Stores value with optional HTTP metadata (etag, lastModified).
@@ -1 +1 @@
1
- {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../src/utils/CacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IACN,KAAK,CAAoC;IAE1D,YAAY,OAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC;YACxB,GAAG,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG;YAC5B,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO;YAC5B,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAI,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACnC,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAI,GAAW,EAAE,KAAQ;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAI,GAAW;QAO5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CACb,GAAW,EACX,IAAO,EACP,IAGC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI;YACJ,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI,EAAE,YAAY;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../src/utils/CacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IACN,KAAK,CAAoC;IAE1D,YAAY,OAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC;YACxB,GAAG,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG;YAC5B,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO;YAC5B,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAI,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACnC,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAI,GAAW,EAAE,KAAQ;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAI,GAAW;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,CAAC,CAAE,KAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CACb,GAAW,EACX,IAAO,EACP,IAGC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI;YACJ,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI,EAAE,YAAY;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}