{"version":3,"file":"describe.utils.cjs","sources":["../src/describe.utils.ts"],"sourcesContent":["import { prepareEnvironment } from '@gmrchk/cli-testing-library';\nimport { afterAll, beforeAll, vi } from 'vitest';\nimport { undefiny } from './helpers';\nimport type { Defs, MockFn, MockFsKeys } from './types';\n\nexport const envFn = <K extends keyof Defs>() => {\n  type T = Defs[K];\n  return vi.fn<T[0], T[1]>();\n};\n\nexport const useBefore = () => {\n  const readFile = envFn<'readFile'>();\n  const writeFile = envFn<'writeFile'>();\n  const cleanup = envFn<'cleanup'>();\n  const ls = envFn<'ls'>();\n  const removeDir = envFn<'removeDir'>();\n  const execute = envFn<'execute'>();\n  const spawn = envFn<'spawn'>();\n  const removeFile = envFn<'removeFile'>();\n  const exists = envFn<'exists'>();\n  const makeDir = envFn<'makeDir'>();\n  const path = vi.fn();\n\n  beforeAll(async () => {\n    const cli = await prepareEnvironment();\n\n    // #region Implements functions\n    readFile.mockImplementation(cli.readFile);\n    writeFile.mockImplementation(cli.writeFile);\n    cleanup.mockImplementation(cli.cleanup);\n    ls.mockImplementation(cli.ls);\n    removeDir.mockImplementation(cli.removeDir);\n    execute.mockImplementation(cli.execute);\n    spawn.mockImplementation(cli.spawn);\n    makeDir.mockImplementation(cli.makeDir);\n    path.mockReturnValue(cli.path);\n    removeFile.mockImplementation(cli.removeFile);\n    exists.mockImplementation(cli.exists);\n    // #endregion\n  });\n\n  return {\n    readFile,\n    ls,\n    removeDir,\n    execute,\n    writeFile,\n    spawn,\n    cleanup,\n    makeDir,\n    path,\n    removeFile,\n    exists,\n    read: undefiny<string>(),\n  };\n};\n\nexport const buildFn = (_fn?: MockFn) => {\n  const fn = () => {\n    const {\n      readFile,\n      ls,\n      removeDir,\n      execute,\n      writeFile,\n      spawn,\n      cleanup,\n      makeDir,\n      path,\n      removeFile,\n      exists,\n    } = useBefore();\n\n    const mockFs = (...envs: MockFsKeys[]) => {\n      const __fn = globalThis?.buildMockFs?.getMockImplementation();\n      /* v8 ignore next 1 */\n      if (!__fn) return false;\n\n      globalThis.buildMockFs(\n        { exists, makeDir, removeDir, ls, readFile, writeFile },\n        ...envs,\n      );\n\n      return true;\n    };\n\n    afterAll(async () => {\n      await cleanup();\n      // vi.clearAllMocks();\n    });\n\n    return _fn?.({\n      readFile,\n      ls,\n      removeDir,\n      execute,\n      writeFile,\n      spawn,\n      cleanup,\n      makeDir,\n      path: path(),\n      removeFile,\n      mockFs,\n      exists,\n    });\n  };\n\n  return fn;\n};\n"],"names":["vi","beforeAll","prepareEnvironment","undefiny","afterAll"],"mappings":";;;;;;;AAKO,MAAM,KAAK,GAAG,MAA2B;AAE9C,IAAA,OAAOA,SAAE,CAAC,EAAE,EAAc,CAAC;AAC7B,EAAE;AAEK,MAAM,SAAS,GAAG,MAAK;AAC5B,IAAA,MAAM,QAAQ,GAAG,KAAK,EAAc,CAAC;AACrC,IAAA,MAAM,SAAS,GAAG,KAAK,EAAe,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,KAAK,EAAa,CAAC;AACnC,IAAA,MAAM,EAAE,GAAG,KAAK,EAAQ,CAAC;AACzB,IAAA,MAAM,SAAS,GAAG,KAAK,EAAe,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,KAAK,EAAa,CAAC;AACnC,IAAA,MAAM,KAAK,GAAG,KAAK,EAAW,CAAC;AAC/B,IAAA,MAAM,UAAU,GAAG,KAAK,EAAgB,CAAC;AACzC,IAAA,MAAM,MAAM,GAAG,KAAK,EAAY,CAAC;AACjC,IAAA,MAAM,OAAO,GAAG,KAAK,EAAa,CAAC;AACnC,IAAA,MAAM,IAAI,GAAGA,SAAE,CAAC,EAAE,EAAE,CAAC;IAErBC,gBAAS,CAAC,YAAW;AACnB,QAAA,MAAM,GAAG,GAAG,MAAMC,oCAAkB,EAAE,CAAC;;AAGvC,QAAA,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1C,QAAA,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxC,QAAA,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAA,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxC,QAAA,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9C,QAAA,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;AAExC,KAAC,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,EAAE;QACF,SAAS;QACT,OAAO;QACP,SAAS;QACT,KAAK;QACL,OAAO;QACP,OAAO;QACP,IAAI;QACJ,UAAU;QACV,MAAM;QACN,IAAI,EAAEC,sBAAQ,EAAU;KACzB,CAAC;AACJ,EAAE;AAEW,MAAA,OAAO,GAAG,CAAC,GAAY,KAAI;IACtC,MAAM,EAAE,GAAG,MAAK;QACd,MAAM,EACJ,QAAQ,EACR,EAAE,EACF,SAAS,EACT,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,OAAO,EACP,IAAI,EACJ,UAAU,EACV,MAAM,GACP,GAAG,SAAS,EAAE,CAAC;AAEhB,QAAA,MAAM,MAAM,GAAG,CAAC,GAAG,IAAkB,KAAI;YACvC,MAAM,IAAI,GAAG,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;;AAE9D,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,KAAK,CAAC;YAExB,UAAU,CAAC,WAAW,CACpB,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EACvD,GAAG,IAAI,CACR,CAAC;AAEF,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC;QAEFC,eAAQ,CAAC,YAAW;YAClB,MAAM,OAAO,EAAE,CAAC;;AAElB,SAAC,CAAC,CAAC;QAEH,OAAO,GAAG,GAAG;YACX,QAAQ;YACR,EAAE;YACF,SAAS;YACT,OAAO;YACP,SAAS;YACT,KAAK;YACL,OAAO;YACP,OAAO;YACP,IAAI,EAAE,IAAI,EAAE;YACZ,UAAU;YACV,MAAM;YACN,MAAM;AACP,SAAA,CAAC,CAAC;AACL,KAAC,CAAC;AAEF,IAAA,OAAO,EAAE,CAAC;AACZ;;;;;;"}