{"version":3,"file":"get-helpers.mjs","sources":["../../../../src/lib/get-helpers.ts"],"sourcesContent":["import { type CacheHandler } from \"@nimpl/cache\";\n\nimport { type LayerType } from \"./types\";\nimport { streamToRaw } from \"./stream\";\nimport { LAYER_TYPES } from \"./constants\";\n\nexport const getKeys = async (cacheHandler: CacheHandler, type: LayerType = \"main\"): Promise<string[]> => {\n    const layers = {\n        main: cacheHandler,\n        persistent: cacheHandler.persistentLayer,\n        ephemeral: cacheHandler.ephemeralLayer,\n    };\n    const handler = layers[type];\n    return handler.keys();\n};\n\nexport const getKeyDetails = async (cacheHandler: CacheHandler, type: LayerType, key: string) => {\n    const layers = {\n        main: cacheHandler,\n        persistent: cacheHandler.persistentLayer,\n        ephemeral: cacheHandler.ephemeralLayer,\n    };\n    const handler = layers[type];\n    try {\n        const cacheEntry = await handler.getEntry(key);\n\n        if (!cacheEntry) {\n            return {\n                key,\n                metadata: null,\n                value: null,\n                size: 0,\n                status: null,\n            };\n        }\n\n        const { entry, size, status } = cacheEntry;\n        const [cacheStream, responseStream] = entry.value.tee();\n        entry.value = cacheStream;\n        const value = await streamToRaw(responseStream);\n\n        return {\n            key,\n            metadata: {\n                tags: entry.tags,\n                timestamp: entry.timestamp,\n                stale: entry.stale,\n                revalidate: entry.revalidate,\n                expire: entry.expire,\n            },\n            value,\n            size,\n            status,\n        };\n    } catch (error) {\n        return {\n            key,\n            metadata: null,\n            value: null,\n            size: 0,\n            error: error instanceof Error ? error.message : \"Unknown error\",\n            status: null,\n        };\n    }\n};\n\nexport const getCacheData = (cacheHandler: CacheHandler, segments?: string[]) => {\n    if (!segments?.length || segments.length > 2) {\n        return null;\n    }\n    const type = segments[0] as LayerType;\n    if (!LAYER_TYPES.includes(type)) {\n        return null;\n    }\n    if (segments.length === 1) {\n        return getKeys(cacheHandler, type);\n    }\n\n    return getKeyDetails(cacheHandler, type, segments[1]);\n};\n"],"names":[],"mappings":";;;AAMO,MAAM,OAAO,GAAG,OAAO,YAA0B,EAAE,IAAA,GAAkB,MAAM,KAAuB;AACrG,IAAA,MAAM,MAAM,GAAG;AACX,QAAA,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,YAAY,CAAC,eAAe;QACxC,SAAS,EAAE,YAAY,CAAC,cAAc;KACzC;AACD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5B,IAAA,OAAO,OAAO,CAAC,IAAI,EAAE;AACzB;AAEO,MAAM,aAAa,GAAG,OAAO,YAA0B,EAAE,IAAe,EAAE,GAAW,KAAI;AAC5F,IAAA,MAAM,MAAM,GAAG;AACX,QAAA,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,YAAY,CAAC,eAAe;QACxC,SAAS,EAAE,YAAY,CAAC,cAAc;KACzC;AACD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5B,IAAA,IAAI;QACA,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAE9C,IAAI,CAAC,UAAU,EAAE;YACb,OAAO;gBACH,GAAG;AACH,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,MAAM,EAAE,IAAI;aACf;QACL;QAEA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU;AAC1C,QAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AACvD,QAAA,KAAK,CAAC,KAAK,GAAG,WAAW;AACzB,QAAA,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC;QAE/C,OAAO;YACH,GAAG;AACH,YAAA,QAAQ,EAAE;gBACN,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;AACvB,aAAA;YACD,KAAK;YACL,IAAI;YACJ,MAAM;SACT;IACL;IAAE,OAAO,KAAK,EAAE;QACZ,OAAO;YACH,GAAG;AACH,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe;AAC/D,YAAA,MAAM,EAAE,IAAI;SACf;IACL;AACJ;MAEa,YAAY,GAAG,CAAC,YAA0B,EAAE,QAAmB,KAAI;AAC5E,IAAA,IAAI,EAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,QAAA,OAAO,IAAI;IACf;AACA,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAc;IACrC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAA,OAAO,IAAI;IACf;AACA,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;IACtC;IAEA,OAAO,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzD;;;;"}