UNPKG

@strapi/utils

Version:

Shared utilities for the Strapi packages

1 lines 1.73 kB
{"version":3,"file":"model-cache.mjs","sources":["../src/model-cache.ts"],"sourcesContent":["import type { Model } from './types';\n\n/**\n * Model cache to prevent redundant getModel() calls during populate traversal.\n *\n * Models don't change at runtime (changes require server restart), so caching\n * is safe. Current scoping (per-request) provides isolation and predictable\n * memory behavior.\n */\n\n/**\n * Creates cache for getModel() calls.\n *\n * @param getModelFn - The underlying getModel function to cache\n * @returns An object with cached getModel function and clear method\n */\nexport const createModelCache = (\n getModelFn: (\n uid: // TODO should use the type from @strapi/types but this package doesn't depend on it\n any\n ) => Model\n) => {\n const cache = new Map<string, Model>();\n\n return {\n getModel(uid: any): Model {\n const cached = cache.get(uid);\n if (cached) {\n return cached;\n }\n\n const model = getModelFn(uid);\n cache.set(uid, model);\n return model;\n },\n clear() {\n cache.clear();\n },\n };\n};\n"],"names":["createModelCache","getModelFn","cache","Map","getModel","uid","cached","get","model","set","clear"],"mappings":"AAEA;;;;;;;;;;;IAcO,MAAMA,gBAAAA,GAAmB,CAC9BC,UAAAA,GAAAA;AAKA,IAAA,MAAMC,QAAQ,IAAIC,GAAAA,EAAAA;IAElB,OAAO;AACLC,QAAAA,QAAAA,CAAAA,CAASC,GAAQ,EAAA;YACf,MAAMC,MAAAA,GAASJ,KAAAA,CAAMK,GAAG,CAACF,GAAAA,CAAAA;AACzB,YAAA,IAAIC,MAAAA,EAAQ;gBACV,OAAOA,MAAAA;AACT,YAAA;AAEA,YAAA,MAAME,QAAQP,UAAAA,CAAWI,GAAAA,CAAAA;YACzBH,KAAAA,CAAMO,GAAG,CAACJ,GAAAA,EAAKG,KAAAA,CAAAA;YACf,OAAOA,KAAAA;AACT,QAAA,CAAA;AACAE,QAAAA,KAAAA,CAAAA,GAAAA;AACER,YAAAA,KAAAA,CAAMQ,KAAK,EAAA;AACb,QAAA;AACF,KAAA;AACF;;;;"}