expo-router
Version:
Expo Router is a file-based router for React Native and web applications.
46 lines (44 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "readLoaderData", {
enumerable: true,
get: function() {
return readLoaderData;
}
});
function readLoaderData({ client, store }, resolvedPath, fetcher) {
const suspended = store.get(resolvedPath);
if (suspended instanceof Promise) {
return suspended;
}
if (suspended) {
if ('error' in suspended) {
queueMicrotask(()=>{
if (store.get(resolvedPath) === suspended) {
store.clear(resolvedPath);
}
});
throw suspended.error;
}
return suspended.data;
}
const promise = new Promise((resolve, reject)=>{
const unsubscribe = client.subscribeLoader(resolvedPath, (result, isCurrentSource)=>{
if (isCurrentSource && store.get(resolvedPath) === promise) {
store.set(resolvedPath, result);
}
unsubscribe();
if ('error' in result) {
reject(result.error);
} else {
resolve(result.data);
}
});
client.execute(resolvedPath, fetcher);
});
store.set(resolvedPath, promise);
return promise;
}
//# sourceMappingURL=readLoaderData.js.map