{"version":3,"file":"create-vfs-plugin-Bg0LL_-h.cjs","sources":["../../../src/create-vfs-plugin.ts"],"sourcesContent":["import type { PrivateVfsApi } from './core/scopes';\nimport type { BaseVfs } from './core/types';\n\nexport interface VfsPlugin<Extensions> {\n  <Vfs extends BaseVfs & Partial<Extensions>>(vfs: Vfs, api: PrivateVfsApi<Vfs>): Vfs & Extensions;\n}\n\nexport function createVfsPlugin<const Extensions extends Record<keyof any, any>>(\n  name: string,\n  handler: <Vfs extends BaseVfs>(\n    vfs: Vfs & Partial<Extensions>,\n    api: PrivateVfsApi<Vfs>\n  ) => Vfs & Partial<Extensions>\n): VfsPlugin<Extensions> {\n  function plugin<Vfs extends BaseVfs & Partial<Extensions>>(\n    vfs: Vfs,\n    api: PrivateVfsApi<Vfs>\n  ): Vfs & Extensions {\n    return handler(vfs as unknown as Vfs & Partial<Extensions>, api) as unknown as Vfs & Extensions;\n  }\n\n  Object.defineProperty(plugin, 'name', { value: name });\n\n  return Object.assign(plugin, {\n    [pluginSymbol]: name\n  });\n}\n\nconst pluginSymbol = Symbol('vfs-plugin');\n"],"names":["pluginSymbol","Symbol","name","handler","plugin","vfs","api","Object","defineProperty","value","assign"],"mappings":"AA4BA,MAAMA,EAAeC,OAAO,sCArBrB,SACLC,CAAY,CACZC,CAG8B,EAE9B,SAASC,EACPC,CAAQ,CACRC,CAAuB,EAEvB,OAAOH,EAAQE,EAA6CC,EAC9D,CAIA,OAFAC,OAAOC,cAAc,CAACJ,EAAQ,OAAQ,CAAEK,MAAOP,CAAK,GAE7CK,OAAOG,MAAM,CAACN,EAAQ,CAC3B,CAACJ,GAAeE,CAClB,EACF"}