gatsby
Version:
Blazing fast modern site generator for React
152 lines (147 loc) • 3.2 kB
JavaScript
exports.__esModule = true;
exports.reloadDataMachine = exports.recreatePagesMachine = exports.initializeDataMachine = void 0;
var _xstate = require("xstate");
var _actions = require("./actions");
var _services = require("./services");
const loadDataStates = {
customizingSchema: {
invoke: {
src: `customizeSchema`,
id: `customizing-schema`,
onDone: {
target: `sourcingNodes`
}
}
},
sourcingNodes: {
invoke: {
src: `sourceNodes`,
id: `sourcing-nodes`,
onDone: {
target: `buildingSchema`,
actions: `assignChangedPages`
}
}
}
};
const initialCreatePagesStates = {
buildingSchema: {
invoke: {
id: `building-schema`,
src: `buildSchema`,
onDone: {
target: `creatingPages`,
actions: `assignGraphQLRunners`
}
}
},
creatingPages: {
invoke: {
id: `creating-pages`,
src: `createPages`,
onDone: {
target: `writingOutRedirects`,
actions: `assignChangedPages`
}
}
},
writingOutRedirects: {
invoke: {
src: `writeOutRedirectsAndWatch`,
onDone: {
target: `done`
}
}
}
};
const recreatePagesStates = {
buildingSchema: {
invoke: {
id: `building-schema`,
src: `buildSchema`,
onDone: {
target: `creatingPages`,
actions: `assignGraphQLRunners`
}
}
},
creatingPages: {
invoke: {
id: `creating-pages`,
src: `createPages`,
onDone: {
target: `done`,
actions: `assignChangedPages`
}
}
}
};
const doneState = {
done: {
type: `final`,
data: ({
gatsbyNodeGraphQLFunction,
graphqlRunner,
pagesToBuild,
pagesToDelete
}) => {
return {
gatsbyNodeGraphQLFunction,
graphqlRunner,
pagesToBuild,
pagesToDelete
};
}
}
};
const options = {
actions: _actions.dataLayerActions,
services: _services.dataLayerServices
};
/**
* Machine used during first run
*/
const initializeDataMachine = (0, _xstate.createMachine)({
predictableActionArguments: true,
id: `initializeDataMachine`,
context: {},
initial: `customizingSchema`,
states: {
...loadDataStates,
...initialCreatePagesStates,
...doneState
}
}, options);
/**
* Machine used when we need to source nodes again
*/
exports.initializeDataMachine = initializeDataMachine;
const reloadDataMachine = (0, _xstate.createMachine)({
predictableActionArguments: true,
id: `reloadDataMachine`,
context: {},
initial: `customizingSchema`,
states: {
...loadDataStates,
...recreatePagesStates,
...doneState
}
}, options);
/**
* Machine used when we need to re-create pages after a
* node mutation outside of sourceNodes
*/
exports.reloadDataMachine = reloadDataMachine;
const recreatePagesMachine = (0, _xstate.createMachine)({
predictableActionArguments: true,
id: `recreatePagesMachine`,
context: {},
initial: `buildingSchema`,
states: {
...recreatePagesStates,
...doneState
}
}, options);
exports.recreatePagesMachine = recreatePagesMachine;
//# sourceMappingURL=index.js.map
;