cumqueoptio
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
31 lines (26 loc) • 763 B
text/typescript
import { interpret } from 'xstate/lib/interpreter';
import { MachineModelDesc } from './types';
import type { MachineMap } from './types/map';
/**
* merge service map at model mounting
*/
export function mergeMachineMap(
map: MachineMap,
modelDesc: MachineModelDesc,
): void {
// FIXME: mounting model must have name, should fix it's type
const modelName = modelDesc.name;
// warning for replacing service
const prevService = map[modelName];
if (prevService) {
console.warn(
`Mounting a model <${modelName}> with existed service. The service would be overridden.`,
);
}
// generate service from machine schema
const service = interpret(modelDesc.machine as any);
service.start();
map[modelName] = {
service,
};
}