@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
1 lines • 2.2 kB
Source Map (JSON)
{"version":3,"sources":["../src/storage/storageWithInit.ts"],"names":[],"mappings":";;;AAEA,IAAM,iBAAA,GAAoB,OAAO,aAAa,CAAA;AAEvC,SAAS,gBAAgB,OAAA,EAAuC;AACrE,EAAA,IAAI,cAAA,GAAuC,IAAA;AAE3C,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,cAAA,GAAiB,QAAQ,IAAA,EAAK;AAAA,IAChC;AAEA,IAAA,MAAM,cAAA;AAAA,EACR,CAAA;AAKA,EAAA,IAAI,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AAC9B,IAAA,OAAO,OAAA;AAAA,EACT;AAGA,EAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAA,EAAS;AAAA,IAC/B,GAAA,CAAI,QAAQ,IAAA,EAAM;AAEhB,MAAA,IAAI,SAAS,iBAAA,EAAmB;AAC9B,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,KAAA,GAAQ,OAAO,IAA2B,CAAA;AAChD,MAAA,IAAI,OAAO,KAAA,KAAU,UAAA,IAAc,IAAA,KAAS,MAAA,EAAQ;AAClD,QAAA,OAAO,UAAU,IAAA,KAAoB;AACnC,UAAA,MAAM,UAAA,EAAW;AAEjB,UAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,IAAI,CAAA;AAAA,QAC1C,CAAA;AAAA,MACF;AAEA,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,IAAI,CAAA;AAAA,IACjC;AAAA,GACD,CAAA;AAED,EAAA,OAAO,KAAA;AACT","file":"chunk-V3VLOOSW.cjs","sourcesContent":["import type { MastraStorage } from './base';\n\nconst isAugmentedSymbol = Symbol('isAugmented');\n\nexport function augmentWithInit(storage: MastraStorage): MastraStorage {\n let hasInitialized: null | Promise<void> = null;\n\n const ensureInit = async () => {\n if (!hasInitialized) {\n hasInitialized = storage.init();\n }\n\n await hasInitialized;\n };\n\n // if we already have a proxy, return it\n // instanceof Proxy doesnt work in vitest https://github.com/vitejs/vite/discussions/14490\n // @ts-expect-error - symbol is not defined on the storage\n if (storage[isAugmentedSymbol]) {\n return storage;\n }\n\n // override al functions to wait until init is complete\n const proxy = new Proxy(storage, {\n get(target, prop) {\n // Handle the isAugmentedSymbol specifically\n if (prop === isAugmentedSymbol) {\n return true;\n }\n\n const value = target[prop as keyof typeof target];\n if (typeof value === 'function' && prop !== 'init') {\n return async (...args: unknown[]) => {\n await ensureInit();\n\n return Reflect.apply(value, target, args);\n };\n }\n\n return Reflect.get(target, prop);\n },\n });\n\n return proxy;\n}\n"]}