UNPKG

one

Version:

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

114 lines (111 loc) 4.71 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); var import_vitest = require("vitest"); function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } (0, import_vitest.describe)("routeHmr.native", function () { var routeHmr; var realWindow = globalThis.window; var realModuleUpdatedHook = globalThis.__VXRN_ON_MODULE_UPDATED__; (0, import_vitest.beforeEach)(async function () { import_vitest.vi.stubEnv("NODE_ENV", "development"); import_vitest.vi.resetModules(); routeHmr = await import("./routeHmr.native"); }); (0, import_vitest.afterEach)(function () { import_vitest.vi.unstubAllEnvs(); globalThis.__VXRN_ON_MODULE_UPDATED__ = realModuleUpdatedHook; globalThis.window = realWindow; }); (0, import_vitest.it)("registers globalThis.__VXRN_ON_MODULE_UPDATED__ in development", function () { (0, import_vitest.expect)(_type_of(globalThis.__VXRN_ON_MODULE_UPDATED__)).toBe("function"); }); (0, import_vitest.it)("does not bump the epoch, so Fast Refresh can keep the mounted route", function () { var before = routeHmr.getRouteHmrEpoch(); var listener = import_vitest.vi.fn(); var unsubscribe = routeHmr.subscribeRouteHmr(listener); globalThis.__VXRN_ON_MODULE_UPDATED__("app/index.tsx"); (0, import_vitest.expect)(routeHmr.getRouteHmrEpoch()).toBe(before); (0, import_vitest.expect)(listener).not.toHaveBeenCalled(); unsubscribe(); }); (0, import_vitest.it)("evicts the route cache for the updated file when window.__oneRouteCache is present", function () { var clearFile = import_vitest.vi.fn(function () { return true; }); globalThis.window = { __oneRouteCache: { clearFile } }; globalThis.__VXRN_ON_MODULE_UPDATED__("app/_layout.tsx"); (0, import_vitest.expect)(clearFile).toHaveBeenCalledWith("app/_layout.tsx"); }); (0, import_vitest.it)("does not bump the epoch for a non-route module either", function () { var before = routeHmr.getRouteHmrEpoch(); var listener = import_vitest.vi.fn(); var unsubscribe = routeHmr.subscribeRouteHmr(listener); globalThis.window = { __oneRouteCache: { clearFile: function () { return false; } } }; globalThis.__VXRN_ON_MODULE_UPDATED__("features/onboarding/HmrProbeChild.tsx"); (0, import_vitest.expect)(routeHmr.getRouteHmrEpoch()).toBe(before); (0, import_vitest.expect)(listener).not.toHaveBeenCalled(); unsubscribe(); }); (0, import_vitest.it)("does not throw when window / route cache is absent", function () { ; globalThis.window = void 0; (0, import_vitest.expect)(function () { return globalThis.__VXRN_ON_MODULE_UPDATED__("x.tsx"); }).not.toThrow(); }); (0, import_vitest.it)("does not throw or bump the epoch when route-cache eviction throws", function () { var listener = import_vitest.vi.fn(); var unsubscribe = routeHmr.subscribeRouteHmr(listener); var before = routeHmr.getRouteHmrEpoch(); globalThis.window = { __oneRouteCache: { clearFile() { throw new Error("cache eviction failed"); } } }; (0, import_vitest.expect)(function () { return globalThis.__VXRN_ON_MODULE_UPDATED__("app/index.tsx"); }).not.toThrow(); (0, import_vitest.expect)(routeHmr.getRouteHmrEpoch()).toBe(before); (0, import_vitest.expect)(listener).not.toHaveBeenCalled(); unsubscribe(); }); }); //# sourceMappingURL=routeHmr.native.test.native.js.map