@firestore-emulator/jest
Version:
This package contains a [`Jest`](https://jestjs.io/) environment for setup `@firestore-emulator/server`.
62 lines (61 loc) • 2.16 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/environment/node.ts
var node_exports = {};
__export(node_exports, {
default: () => FirestoreEmulatorEnvironment
});
module.exports = __toCommonJS(node_exports);
var import_server = require("@firestore-emulator/server");
var import_find_free_ports = require("find-free-ports");
var import_jest_environment_node = require("jest-environment-node");
var FirestoreEmulatorEnvironment = class extends import_jest_environment_node.TestEnvironment {
server;
constructor(config, context) {
super(config, context);
this.server = new import_server.FirestoreServer();
}
async setup() {
await super.setup();
let tryCount = 0;
while (tryCount < 50) {
const [port] = await (0, import_find_free_ports.findFreePorts)(1);
if (!port) throw new Error("Could not find a free port");
try {
await this.server.start(port);
this.global.emulator = {
host: `0.0.0.0:${port}`,
port,
state: this.server.state
};
return;
} catch (err) {
if (!(err instanceof Error)) throw err;
if (!err.message.startsWith("No address added out of total")) throw err;
}
tryCount++;
}
throw new Error("Could not find a free port");
}
async teardown() {
this.server.stop();
await super.teardown();
}
};
//# sourceMappingURL=node.js.map