{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n  FirestoreServer,\n  type FirestoreState,\n} from \"@firestore-emulator/server\";\nimport { findFreePorts } from \"find-free-ports\";\nimport type { Environment } from \"vitest/environments\";\nimport { builtinEnvironments } from \"vitest/environments\";\n\ndeclare global {\n  var emulator: {\n    host: string;\n    port: number;\n    state: FirestoreState;\n  };\n}\n\nexport interface Options {\n  \"firestore-emulator\"?: {\n    baseEnv?: keyof typeof builtinEnvironments;\n  };\n}\n\nexport default {\n  name: \"firestore-emulator\",\n  async setup(global: typeof globalThis, options: Options = {}) {\n    const supper = await builtinEnvironments[\n      options[\"firestore-emulator\"]?.baseEnv ?? \"node\"\n    ].setup(global, options);\n    const server = new FirestoreServer();\n\n    let tryCount = 0;\n    while (tryCount < 50) {\n      const [port] = await findFreePorts(1);\n      if (!port) throw new Error(\"Could not find a free port\");\n      try {\n        await server.start(port);\n        global.emulator = {\n          host: `0.0.0.0:${port}`,\n          port,\n          state: server.state,\n        };\n        return {\n          async teardown() {\n            server.stop();\n            await supper.teardown(global);\n          },\n        };\n      } catch (err) {\n        if (!(err instanceof Error)) throw err;\n        if (!err.message.startsWith(\"No address added out of total\")) throw err;\n      }\n      tryCount++;\n    }\n    throw new Error(\"Could not find a free port\");\n  },\n  transformMode: \"ssr\",\n} satisfies Environment;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAGO;AACP,6BAA8B;AAE9B,0BAAoC;AAgBpC,IAAO,gBAAQ;AAAA,EACb,MAAM;AAAA,EACN,MAAM,MAAM,QAA2B,UAAmB,CAAC,GAAG;AAC5D,UAAM,SAAS,MAAM,wCACnB,QAAQ,oBAAoB,GAAG,WAAW,MAC5C,EAAE,MAAM,QAAQ,OAAO;AACvB,UAAM,SAAS,IAAI,8BAAgB;AAEnC,QAAI,WAAW;AACf,WAAO,WAAW,IAAI;AACpB,YAAM,CAAC,IAAI,IAAI,UAAM,sCAAc,CAAC;AACpC,UAAI,CAAC,KAAM,OAAM,IAAI,MAAM,4BAA4B;AACvD,UAAI;AACF,cAAM,OAAO,MAAM,IAAI;AACvB,eAAO,WAAW;AAAA,UAChB,MAAM,WAAW,IAAI;AAAA,UACrB;AAAA,UACA,OAAO,OAAO;AAAA,QAChB;AACA,eAAO;AAAA,UACL,MAAM,WAAW;AACf,mBAAO,KAAK;AACZ,kBAAM,OAAO,SAAS,MAAM;AAAA,UAC9B;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,YAAI,EAAE,eAAe,OAAQ,OAAM;AACnC,YAAI,CAAC,IAAI,QAAQ,WAAW,+BAA+B,EAAG,OAAM;AAAA,MACtE;AACA;AAAA,IACF;AACA,UAAM,IAAI,MAAM,4BAA4B;AAAA,EAC9C;AAAA,EACA,eAAe;AACjB;","names":[]}