@netlify/content-engine
Version:
61 lines • 2.34 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.startGraphQLServer = startGraphQLServer;
const better_opn_1 = __importDefault(require("better-opn"));
const reporter_1 = __importDefault(require("../reporter"));
const chalk_1 = __importDefault(require("chalk"));
const prepare_urls_1 = require("../utils/prepare-urls");
const start_server_1 = require("../utils/start-server");
const reporter_2 = __importDefault(require("../reporter"));
const redux_1 = require("../redux");
let server;
async function startGraphQLServer({ program, app, store, loadData, }) {
if (!program || !app || !store) {
reporter_1.default.panic(`Missing required params. Missing program: ${!program}, app: ${!app}, store: ${!store}. Stack: ${new Error().stack}`);
}
if (!server) {
const { listener } = await (0, start_server_1.startServer)(program, app);
server = listener;
}
let loading = false;
const queuedReloads = [];
const webhookHandler = async (action) => {
if (loading && queuedReloads.length < 50) {
queuedReloads.push(action);
}
else if (!loading) {
try {
loading = true;
await loadData(action);
const queuedReload = queuedReloads.shift();
if (queuedReload) {
setImmediate(() => {
webhookHandler(queuedReload);
});
}
else {
loading = false;
}
}
catch (e) {
reporter_2.default.error(e);
loading = false;
}
}
};
redux_1.emitter.on(`WEBHOOK_RECEIVED`, webhookHandler);
const urls = (0, prepare_urls_1.prepareUrls)(program.https ? `https` : `http`, program.host, program.port);
if (program.open) {
try {
await (0, better_opn_1.default)(urls.localUrlForBrowser);
}
catch {
console.log(`${chalk_1.default.yellow(`warn`)} Browser not opened because no browser was found`);
}
}
return server;
}
//# sourceMappingURL=start-dev-server.js.map
;