@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 1.76 kB
Source Map (JSON)
{"version":3,"file":"http-cache.mjs","names":[],"sources":["../../../src/libs/kv/http-cache.ts"],"sourcesContent":["import type { ServiceContext } from \"../../utils/services/types.js\";\nimport {\n\tgetNamespaceTokens,\n\tinvalidateNamespace,\n\tinvalidateNamespaces,\n} from \"./namespaces.js\";\n\nconst HTTP_NAMESPACE_PREFIX = \"http-cache:\";\n\nconst toHttpNamespace = (tag: string) => `${HTTP_NAMESPACE_PREFIX}${tag}`;\n\n/**\n * Resolve the namespace token for each HTTP cache tag.\n */\nexport const getHttpCacheNamespaceTokens = async (\n\tcontext: ServiceContext,\n\ttags: string[],\n): Promise<Record<string, string>> => {\n\tconst namespaces = Array.from(new Set(tags)).map(toHttpNamespace);\n\tconst namespaceTokens = await getNamespaceTokens(context, namespaces);\n\n\tconst tagTokenPairs = tags.map((tag) => [\n\t\ttag,\n\t\tnamespaceTokens[toHttpNamespace(tag)],\n\t]);\n\n\treturn Object.fromEntries(tagTokenPairs);\n};\n\n/**\n * Invalidates a cache tag by rotating its namespace token.\n */\nexport const invalidateHttpCacheTag = async (\n\tcontext: ServiceContext,\n\ttag: string,\n) => {\n\tawait invalidateNamespace(context, toHttpNamespace(tag));\n};\n\n/**\n * Invalidates multiple cache tags by rotating namespace tokens.\n */\nexport const invalidateHttpCacheTags = async (\n\tcontext: ServiceContext,\n\ttags: string[],\n) => {\n\tawait invalidateNamespaces(context, tags.map(toHttpNamespace));\n};\n"],"mappings":"gFAOA,MAEM,EAAmB,GAAgB,cAA2B,IAKvD,EAA8B,MAC1C,EACA,IACqC,CAErC,IAAM,EAAkB,MAAM,EAAmB,EAD9B,MAAM,KAAK,IAAI,IAAI,CAAI,CAAC,CAAC,CAAC,IAAI,CACkB,CAAC,EAE9D,EAAgB,EAAK,IAAK,GAAQ,CACvC,EACA,EAAgB,EAAgB,CAAG,EACpC,CAAC,EAED,OAAO,OAAO,YAAY,CAAa,CACxC,EAea,EAA0B,MACtC,EACA,IACI,CACJ,MAAM,EAAqB,EAAS,EAAK,IAAI,CAAe,CAAC,CAC9D"}