recoil-toolkit
Version:
33 lines • 1.21 kB
JavaScript
//todo traverse and json stringify Errors
export function getSnapshotState(snapshot) {
var _a;
const nodes = [];
for (const node of snapshot.getNodes_UNSTABLE({ isInitialized: true })) {
const nodeInfo = snapshot.getInfo_UNSTABLE(node);
const loadable = snapshot.getLoadable(node);
const subNodes = [];
for (const comp of nodeInfo.subscribers.nodes) {
subNodes.push(comp.key);
}
nodes.sort((a, b) => a.key.localeCompare(b.key));
nodes.push({
key: node.key,
type: nodeInfo.type,
// isSet: nodeInfo.isSet,
// isActive: nodeInfo.isActive,
isModified: nodeInfo.isModified,
subNodes,
state: loadable.state,
value: loadable.state === 'hasValue'
? loadable.contents
: loadable.state === 'loading'
? '... loading ...'
: JSON.stringify(((_a = loadable.contents) === null || _a === void 0 ? void 0 : _a.message) || loadable.contents),
});
}
return {
id: snapshot.getID().toString(),
nodes,
};
}
//# sourceMappingURL=getSnapshotState.js.map