UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

632 lines (630 loc) 28.1 kB
import { StackActions } from "@react-navigation/native"; import { Fragment, startTransition, useDeferredValue, useSyncExternalStore } from "react"; import { Platform } from "react-native"; import { devtoolsRegistry } from "../devtools/registry.native.js"; import { resolveHref } from "../link/href.native.js"; import { openExternalURL } from "../link/openExternalURL.native.js"; import { resolve } from "../link/path.native.js"; import { checkBlocker } from "../useBlocker.native.js"; import { assertIsReady } from "../utils/assertIsReady.native.js"; import { getLoaderPath, getPreloadCSSPath, getPreloadPath } from "../utils/cleanUrl.native.js"; import { dynamicImport } from "../utils/dynamicImport.native.js"; import { isVersionStale } from "../skewProtection.native.js"; import { shouldLinkExternally } from "../utils/url.native.js"; import { ParamValidationError, RouteValidationError, validateParams as runValidateParams } from "../validateParams.native.js"; import { extractParamsFromState, extractPathnameFromHref, extractSearchFromHref, findRouteNodeFromState, findAllRouteNodesFromState } from "./findRouteNode.native.js"; import { getRouteInfo } from "./getRouteInfo.native.js"; import { getRoutes } from "./getRoutes.native.js"; import { setLastAction } from "./lastAction.native.js"; import { getLinking, resetLinking, setupLinking } from "./linkingConfig.native.js"; import { sortRoutes } from "./sortRoutes.native.js"; import { getQualifiedRouteComponent } from "./useScreens.native.js"; import { preloadRouteModules } from "./useViteRoutes.native.js"; import { getNavigateAction } from "./utils/getNavigateAction.native.js"; import { setClientMatches } from "../useMatches.native.js"; import { findInterceptRoute, setNavigationType, updateURLWithoutNavigation, storeInterceptState } from "./interceptRoutes.native.js"; import { setSlotState } from "../views/Navigator.native.js"; import { clearNotFoundState, findNearestNotFoundRoute, setNotFoundState } from "../notFoundState.native.js"; function _instanceof(left, right) { return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right; } function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj; } var routeNode = null, rootComponent, protectedRouteRegistry = /* @__PURE__ */new Map(); function registerProtectedRoutes(contextKey, protectedScreens) { protectedScreens.size === 0 ? protectedRouteRegistry.delete(contextKey) : protectedRouteRegistry.set(contextKey, protectedScreens); } function unregisterProtectedRoutes(contextKey) { protectedRouteRegistry.delete(contextKey); } function isRouteProtected(href) { var normalizedHref = href.replace(/^\/+|\/+$/g, ""), _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = protectedRouteRegistry[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var [contextKey, protectedScreens] = _step.value, normalizedContextKey = contextKey.replace(/^\/+|\/+$/g, ""); if (normalizedHref.startsWith(normalizedContextKey)) { var relativePath = normalizedHref.slice(normalizedContextKey.length).replace(/^\//, ""), routeName = relativePath.split("/")[0] || "index"; if (protectedScreens.has(routeName)) return !0; } } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } return !1; } var hasAttemptedToHideSplash = !1, initialState, rootState, nextState, routeInfo, splashScreenAnimationFrame, navigationRef = null, navigationRefSubscription, rootStateSubscribers = /* @__PURE__ */new Set(), loadingStateSubscribers = /* @__PURE__ */new Set(), storeSubscribers = /* @__PURE__ */new Set(), currentMatches = [], validationState = { status: "idle" }, validationStateSubscribers = /* @__PURE__ */new Set(); function subscribeToValidationState(subscriber) { return validationStateSubscribers.add(subscriber), function () { return validationStateSubscribers.delete(subscriber); }; } function setValidationState(state) { validationState = state; var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = validationStateSubscribers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var subscriber = _step.value; subscriber(state); } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } } function getValidationState() { return validationState; } function useValidationState() { return useSyncExternalStore(subscribeToValidationState, getValidationState, getValidationState); } function initialize(context, ref, initialLocation) { if (cleanUpState(), routeNode = getRoutes(context, { ignoreEntryPoints: !0, platform: Platform.OS }), rootComponent = routeNode ? getQualifiedRouteComponent(routeNode) : Fragment, !routeNode && process.env.NODE_ENV === "production") throw new Error("No routes found"); if (process.env.ONE_DEBUG_ROUTER && routeNode) { var _routeNode_slots, formatRouteTree = function (node) { for (var indent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "", isLast = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0, _node_slots, prefix = indent + (isLast ? "\u2514\u2500 " : "\u251C\u2500 "), childIndent = indent + (isLast ? " " : "\u2502 "), dynamicBadge = node.dynamic ? ` [${node.dynamic.map(function (d) { return d.name; }).join(", ")}]` : "", typeBadge = node.type !== "layout" ? ` (${node.type})` : "", slotsBadge = !((_node_slots = node.slots) === null || _node_slots === void 0) && _node_slots.size ? ` {@${Array.from(node.slots.keys()).join(", @")}}` : "", routeName = node.route || "/", line = `${prefix}${routeName}${dynamicBadge}${typeBadge}${slotsBadge}`, visibleChildren = node.children.filter(function (child2) { return !child2.internal; }), i = 0; i < visibleChildren.length; i++) { var child = visibleChildren[i], childIsLast = i === visibleChildren.length - 1; line += ` ` + formatRouteTree(child, childIndent, childIsLast); } return line; }; if (console.info(`[one] \u{1F4CD} Route structure: ${formatRouteTree(routeNode)}`), !((_routeNode_slots = routeNode.slots) === null || _routeNode_slots === void 0) && _routeNode_slots.size) { console.info("[one] \u{1F4E6} Slots on root layout:"); var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = routeNode.slots[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var [slotName, slotConfig] = _step.value, _slotConfig_defaultRoute; console.info(` @${slotName}:`, { defaultRoute: (_slotConfig_defaultRoute = slotConfig.defaultRoute) === null || _slotConfig_defaultRoute === void 0 ? void 0 : _slotConfig_defaultRoute.route, interceptRoutes: slotConfig.interceptRoutes.map(function (r) { return { route: r.route, intercept: r.intercept }; }) }); } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } } } navigationRef = ref, setupLinkingAndRouteInfo(initialLocation), subscribeToNavigationChanges(); } function cleanUpState() { initialState = void 0, rootState = void 0, nextState = void 0, routeInfo = void 0, resetLinking(), navigationRefSubscription?.(), rootStateSubscribers.clear(), storeSubscribers.clear(); } function setupLinkingAndRouteInfo(initialLocation) { initialState = setupLinking(routeNode, initialLocation), initialState ? (rootState = initialState, routeInfo = getRouteInfo(initialState)) : routeInfo = { unstable_globalHref: "", pathname: "", isIndex: !1, params: {}, segments: [] }; } function subscribeToNavigationChanges() { navigationRefSubscription = navigationRef.addListener("state", function (data) { var state = { ...data.data.state }; state.key && hashes[state.key] && (state.hash = hashes[state.key], delete hashes[state.key]), hasAttemptedToHideSplash || (hasAttemptedToHideSplash = !0, splashScreenAnimationFrame = requestAnimationFrame(function () {})), nextOptions && (state = { ...state, linkOptions: nextOptions }, nextOptions = null); var shouldUpdateSubscribers = nextState === state; nextState = void 0, state && state !== rootState && (updateState(state, void 0), shouldUpdateSubscribers = !0), shouldUpdateSubscribers && startTransition(function () { var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = rootStateSubscribers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var subscriber = _step.value; subscriber(state); } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } }); }), startTransition(function () { updateSnapshot(); var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = storeSubscribers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var subscriber = _step.value; subscriber(); } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } }); } function navigate(url, options) { return linkTo(resolveHref(url), "NAVIGATE", options); } function push(url, options) { return linkTo(resolveHref(url), "PUSH", options); } function dismiss(count) { process.env.ONE_DEBUG_ROUTER && console.info(`[one] \u{1F519} dismiss${count ? ` (${count})` : ""}`), navigationRef?.dispatch(StackActions.pop(count)); } function replace(url, options) { return linkTo(resolveHref(url), "REPLACE", options); } function setParams() { var params = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _navigationRef_current; return assertIsReady(navigationRef), navigationRef == null || (_navigationRef_current = navigationRef.current) === null || _navigationRef_current === void 0 ? void 0 : _navigationRef_current.setParams( // @ts-expect-error params); } function dismissAll() { process.env.ONE_DEBUG_ROUTER && console.info("[one] \u{1F519} dismissAll"), navigationRef?.dispatch(StackActions.popToTop()); } function goBack() { var _navigationRef_current; process.env.ONE_DEBUG_ROUTER && console.info("[one] \u{1F519} goBack"), assertIsReady(navigationRef), navigationRef == null || (_navigationRef_current = navigationRef.current) === null || _navigationRef_current === void 0 || _navigationRef_current.goBack(); } function canGoBack() { var _ref, _navigationRef_current; return navigationRef.isReady() && (_ref = navigationRef == null || (_navigationRef_current = navigationRef.current) === null || _navigationRef_current === void 0 ? void 0 : _navigationRef_current.canGoBack()) !== null && _ref !== void 0 ? _ref : !1; } function canDismiss() { for (var state = rootState; state;) { var _state_routes_state_index, _state_routes; if (state.type === "stack" && state.routes.length > 1) return !0; if (state.index === void 0) return !1; state = (_state_routes = state.routes) === null || _state_routes === void 0 || (_state_routes_state_index = _state_routes[state.index]) === null || _state_routes_state_index === void 0 ? void 0 : _state_routes_state_index.state; } return !1; } function getSortedRoutes() { if (!routeNode) throw new Error("No routes"); return routeNode.children.filter(function (route) { return !route.internal; }).sort(sortRoutes); } function updateState(state) { var nextStateParam = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : state; rootState = state, nextState = nextStateParam; var nextRouteInfo = getRouteInfo(state); if (!deepEqual(routeInfo, nextRouteInfo)) { if (process.env.ONE_DEBUG_ROUTER) { var from = routeInfo?.pathname || "(initial)", to = nextRouteInfo.pathname, params = Object.keys(nextRouteInfo.params || {}).length ? nextRouteInfo.params : void 0; console.info(`[one] \u{1F9ED} ${from} \u2192 ${to}`, params ? { params } : ""); } routeInfo = nextRouteInfo; var params1 = extractParamsFromState(state), newMatches = buildNativeMatches(state, nextRouteInfo.pathname, params1); currentMatches = newMatches, setClientMatches(newMatches); } process.env.NODE_ENV === "development" && typeof window < "u" && (window.__oneDevtools = { routeInfo: nextRouteInfo, rootState: state, routeNode, getRoutes: function () { return routeNode?.children || []; }, getLoaderTimingHistory: function () { var _ref, _devtoolsRegistry_getLoaderTimingHistory; return (_ref = (_devtoolsRegistry_getLoaderTimingHistory = devtoolsRegistry.getLoaderTimingHistory) === null || _devtoolsRegistry_getLoaderTimingHistory === void 0 ? void 0 : _devtoolsRegistry_getLoaderTimingHistory.call(devtoolsRegistry)) !== null && _ref !== void 0 ? _ref : []; }, getPreloadHistory }); } function subscribeToRootState(subscriber) { return rootStateSubscribers.add(subscriber), function () { rootStateSubscribers.delete(subscriber); }; } function subscribeToStore(subscriber) { return storeSubscribers.add(subscriber), function () { storeSubscribers.delete(subscriber); }; } function subscribeToLoadingState(subscriber) { return loadingStateSubscribers.add(subscriber), function () { loadingStateSubscribers.delete(subscriber); }; } function setLoadingState(state) { startTransition(function () { var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = loadingStateSubscribers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var listener = _step.value; listener(state); } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } }); } var currentSnapshot = null; function updateSnapshot() { currentSnapshot = getSnapshot(); } function snapshot() { return currentSnapshot; } function getSnapshot() { return { linkTo, routeNode, rootComponent, linking: getLinking(), hasAttemptedToHideSplash, initialState, rootState, nextState, routeInfo, splashScreenAnimationFrame, navigationRef, navigationRefSubscription, rootStateSubscribers, storeSubscribers }; } function rootStateSnapshot() { return rootState; } function routeInfoSnapshot() { return routeInfo; } function useOneRouter() { var state = useSyncExternalStore(subscribeToStore, snapshot, snapshot); return useDeferredValue(state); } function syncStoreRootState() { if (!navigationRef) throw new Error("No navigationRef, possible duplicate One dep"); if (navigationRef.isReady()) { var currentState = navigationRef.getRootState(); rootState !== currentState && updateState(currentState); } } function useStoreRootState() { syncStoreRootState(); var state = useSyncExternalStore(subscribeToRootState, rootStateSnapshot, rootStateSnapshot); return useDeferredValue(state); } function useStoreRouteInfo() { syncStoreRootState(); var state = useSyncExternalStore(subscribeToRootState, routeInfoSnapshot, routeInfoSnapshot); return state; } function cleanup() { splashScreenAnimationFrame && cancelAnimationFrame(splashScreenAnimationFrame); } var preloadingLoader = {}; var preloadedLoaderData = {}, cssInjectFunctions = {}, preloadHistory = []; function getPreloadHistory() { return preloadHistory; } function preloadRoute(href) { var injectCSS = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; if (0) { if (process.env.NODE_ENV === "development") var normalizedHref; if (injectCSS) var _preloadingLoader_href; } } function normalizeLoaderPath(href) { var url = new URL(href, "http://example.com"); return url.pathname.replace(/\/index$/, "").replace(/\/$/, "") || "/"; } function buildClientMatches(href, matchingNode, params, loaderData) { var pathname = extractPathnameFromHref(href), routeId = matchingNode?.contextKey || pathname, layoutMatches = currentMatches.filter(function (m) { return m.routeId.includes("_layout"); }), pageMatch = { routeId, pathname, params, loaderData }; return [...layoutMatches, pageMatch]; } function buildNativeMatches(state, pathname, params) { var allNodes = findAllRouteNodesFromState(state, routeNode); return allNodes.map(function (node) { return { routeId: node.contextKey || pathname, pathname, params, loaderData: void 0 }; }); } function initClientMatches(matches) { currentMatches = matches, setClientMatches(matches); } async function linkTo(href, event, options) { if (process.env.ONE_DEBUG_ROUTER && console.info(`[one] \u{1F517} ${event || "NAVIGATE"} ${href}`), setNavigationType("soft"), clearNotFoundState(), href[0] !== "#") { if (shouldLinkExternally(href)) { openExternalURL(href); return; } if (isVersionStale()) { window.location.href = href; return; } if (!checkBlocker(href, event === "REPLACE" ? "replace" : "push") && !isRouteProtected(href)) { var currentLayoutNode = routeNode, currentPath = routeInfo?.pathname || "/", interceptResult = findInterceptRoute(href, currentLayoutNode, currentPath); if (interceptResult) { var { interceptRoute, slotName, layoutContextKey, params } = interceptResult, scopedSlotKey = `${layoutContextKey}:${slotName}`; storeInterceptState(scopedSlotKey, interceptRoute, params), updateURLWithoutNavigation(href), setSlotState(scopedSlotKey, { activeRouteKey: interceptRoute.contextKey, activeRouteNode: interceptRoute, params, isIntercepted: !0 }); return; } assertIsReady(navigationRef); var current = navigationRef.current; if (current == null) throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?"); var linking = getLinking(); if (!linking) throw new Error("Attempted to link to route when no routes are present"); if (setLastAction(), href === ".." || href === "../") { current.goBack(); return; } if (href.startsWith(".")) { var _ref, _routeInfo_segments, base = (_ref = routeInfo == null || (_routeInfo_segments = routeInfo.segments) === null || _routeInfo_segments === void 0 ? void 0 : _routeInfo_segments.map(function (segment) { var _routeInfo_params; if (!segment.startsWith("[")) return segment; if (segment.startsWith("[...")) { var _ref2, _routeInfo_params1, _params_split; segment = segment.slice(4, -1); var params3 = routeInfo == null || (_routeInfo_params1 = routeInfo.params) === null || _routeInfo_params1 === void 0 ? void 0 : _routeInfo_params1[segment]; return Array.isArray(params3) ? params3.join("/") : (_ref2 = params3 == null || (_params_split = params3.split(",")) === null || _params_split === void 0 ? void 0 : _params_split.join("/")) !== null && _ref2 !== void 0 ? _ref2 : ""; } return segment = segment.slice(1, -1), routeInfo == null || (_routeInfo_params = routeInfo.params) === null || _routeInfo_params === void 0 ? void 0 : _routeInfo_params[segment]; }).filter(Boolean).join("/")) !== null && _ref !== void 0 ? _ref : "/"; routeInfo?.isIndex || (base += "/.."), href = resolve(base, href); } var state = linking.getStateFromPath(href, linking.config); if (!state || state.routes.length === 0) { console.error("Could not generate a valid navigation state for the given path: " + href), console.error("linking.config", linking.config), console.error("routes", getSortedRoutes()); return; } setLoadingState("loading"); var normalizedPreloadPath = normalizeLoaderPath(href); if (!(normalizedPreloadPath in preloadedLoaderData) && !(href in preloadedLoaderData)) await preloadRoute(href, !0);else if (process.env.NODE_ENV !== "development") { var inject = cssInjectFunctions[href]; inject && inject().catch(function () {}); } var preloadResult = preloadedLoaderData[normalizedPreloadPath]; if (preloadResult?.__oneRedirect) { var redirectTarget = preloadResult.__oneRedirect; delete preloadedLoaderData[normalizedPreloadPath], delete preloadingLoader[normalizedPreloadPath], delete preloadedLoaderData[href], delete preloadingLoader[href], setLoadingState("loaded"), linkTo(redirectTarget, "REPLACE"); return; } if (preloadResult?.__oneError === 404) { delete preloadedLoaderData[normalizedPreloadPath], delete preloadingLoader[normalizedPreloadPath], delete preloadedLoaderData[href], delete preloadingLoader[href], setLoadingState("loaded"); var notFoundRoute = findNearestNotFoundRoute(href, routeNode); setNotFoundState({ notFoundPath: preloadResult.__oneNotFoundPath || "/+not-found", notFoundRouteNode: notFoundRoute || void 0, originalPath: href }); return; } var matchingRouteNode = findRouteNodeFromState(state, routeNode); if (matchingRouteNode?.loadRoute) { setValidationState({ status: "validating", lastValidatedHref: href }); try { var loadedRoute = matchingRouteNode.loadRoute(), params1 = extractParamsFromState(state), search = extractSearchFromHref(href), pathname = extractPathnameFromHref(href); if (loadedRoute.validateParams && runValidateParams(loadedRoute.validateParams, params1), loadedRoute.validateRoute) { var validationResult = await loadedRoute.validateRoute({ params: params1, search, pathname, href }); if (validationResult && !validationResult.valid) { var _$error = new RouteValidationError(validationResult.error || "Route validation failed", validationResult.details); throw setValidationState({ status: "error", error: _$error, lastValidatedHref: href }), _$error; } } setValidationState({ status: "valid", lastValidatedHref: href }); } catch (error) { if (error && typeof error.then == "function") await error.catch(function () {}), setValidationState({ status: "valid", lastValidatedHref: href });else throw (_instanceof(error, ParamValidationError) || _instanceof(error, RouteValidationError)) && setValidationState({ status: "error", error, lastValidatedHref: href }), error; } } var normalizedPath = normalizeLoaderPath(href), loaderData = preloadedLoaderData[normalizedPath], params2 = extractParamsFromState(state), newMatches = buildClientMatches(href, matchingRouteNode, params2, loaderData); currentMatches = newMatches, setClientMatches(newMatches); var rootState2 = navigationRef.getRootState(), hash = href.indexOf("#"); rootState2.key && hash > 0 && (hashes[rootState2.key] = href.slice(hash)), nextOptions = options ?? null, startTransition(function () { var action = getNavigateAction(state, rootState2, event), current2 = navigationRef.getCurrentRoute(); navigationRef.dispatch(action); var warningTm, interval = setInterval(function () { var next = navigationRef.getCurrentRoute(); current2 !== next && setTimeout(function () { setLoadingState("loaded"); }), clearTimeout(warningTm), clearTimeout(interval); }, 16); process.env.NODE_ENV === "development" && (warningTm = setTimeout(function () { console.warn("Routing took more than 8 seconds"); }, 1e3)); }); } } } var hashes = {}, nextOptions = null; function deepEqual(a, b) { if (a === b) return !0; if (Array.isArray(a) && Array.isArray(b)) { if (a.length !== b.length) return !1; for (var i = 0; i < a.length; i++) if (!deepEqual(a[i], b[i])) return !1; return !0; } if ((typeof a > "u" ? "undefined" : _type_of(a)) === "object" && (typeof b > "u" ? "undefined" : _type_of(b)) === "object") { var keysA = Object.keys(a), keysB = Object.keys(b); if (keysA.length !== keysB.length) return !1; var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = keysA[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var key = _step.value; if (!deepEqual(a[key], b[key])) return !1; } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } return !0; } return !1; } export { canDismiss, canGoBack, cleanup, dismiss, dismissAll, getPreloadHistory, getSortedRoutes, getValidationState, goBack, hasAttemptedToHideSplash, initClientMatches, initialState, initialize, isRouteProtected, linkTo, navigate, navigationRef, preloadRoute, preloadedLoaderData, preloadingLoader, push, registerProtectedRoutes, replace, rootComponent, rootState, rootStateSnapshot, routeInfo, routeInfoSnapshot, routeNode, setLoadingState, setParams, setValidationState, snapshot, subscribeToLoadingState, subscribeToRootState, subscribeToStore, subscribeToValidationState, unregisterProtectedRoutes, updateState, useOneRouter, useStoreRootState, useStoreRouteInfo, useValidationState }; //# sourceMappingURL=router.native.js.map