UNPKG

one

Version:

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

109 lines (107 loc) 8.62 kB
"use strict"; var import_vitest = require("vitest"), import_environmentGuardPlugin = require("./environmentGuardPlugin.native.js"); (0, import_vitest.describe)("environmentGuardPlugin", function () { (0, import_vitest.describe)("resolveEnvironmentGuard", function () { (0, import_vitest.it)("returns null for non-guard specifiers", function () { (0, import_vitest.expect)((0, import_environmentGuardPlugin.resolveEnvironmentGuard)("react", "client")).toBeNull(), (0, import_vitest.expect)((0, import_environmentGuardPlugin.resolveEnvironmentGuard)("vite", "ssr")).toBeNull(), (0, import_vitest.expect)((0, import_environmentGuardPlugin.resolveEnvironmentGuard)("some-other-pkg", "ios")).toBeNull(); }), (0, import_vitest.it)("returns virtual id for server-only", function () { var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("server-only", "ssr"); (0, import_vitest.expect)(id).toBe("\0one-env-guard:server-only:ssr"); }), (0, import_vitest.it)("returns virtual id for client-only", function () { var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "client"); (0, import_vitest.expect)(id).toBe("\0one-env-guard:client-only:client"); }), (0, import_vitest.it)("returns virtual id for native-only", function () { var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("native-only", "ios"); (0, import_vitest.expect)(id).toBe("\0one-env-guard:native-only:ios"); }), (0, import_vitest.it)("returns virtual id for web-only", function () { var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("web-only", "client"); (0, import_vitest.expect)(id).toBe("\0one-env-guard:web-only:client"); }); }), (0, import_vitest.describe)("loadEnvironmentGuard", function () { (0, import_vitest.it)("returns null for non-virtual ids", function () { (0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)("react")).toBeNull(), (0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)("/some/path.ts")).toBeNull(); }), (0, import_vitest.it)("server-only: allowed in ssr", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:ssr"); (0, import_vitest.expect)(result).toBe("export {}"); }), (0, import_vitest.it)("server-only: forbidden in client", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:client"); (0, import_vitest.expect)(result).toContain("throw new Error"), (0, import_vitest.expect)(result).toContain("server-only"), (0, import_vitest.expect)(result).toContain("client"); }), (0, import_vitest.it)("server-only: forbidden in ios", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:ios"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("server-only: forbidden in android", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:server-only:android"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("client-only: allowed in client", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:client"); (0, import_vitest.expect)(result).toBe("export {}"); }), (0, import_vitest.it)("client-only: forbidden in ssr", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:ssr"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("client-only: forbidden in ios", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:ios"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("client-only: forbidden in android", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:android"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("native-only: allowed in ios", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:ios"); (0, import_vitest.expect)(result).toBe("export {}"); }), (0, import_vitest.it)("native-only: allowed in android", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:android"); (0, import_vitest.expect)(result).toBe("export {}"); }), (0, import_vitest.it)("native-only: forbidden in client", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:client"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("native-only: forbidden in ssr", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:native-only:ssr"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("web-only: allowed in client", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:client"); (0, import_vitest.expect)(result).toBe("export {}"); }), (0, import_vitest.it)("web-only: allowed in ssr", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:ssr"); (0, import_vitest.expect)(result).toBe("export {}"); }), (0, import_vitest.it)("web-only: forbidden in ios", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:ios"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("web-only: forbidden in android", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:web-only:android"); (0, import_vitest.expect)(result).toContain("throw new Error"); }), (0, import_vitest.it)("disabled guards always pass", function () { var result = (0, import_environmentGuardPlugin.loadEnvironmentGuard)("\0one-env-guard:client-only:disabled"); (0, import_vitest.expect)(result).toBe("export {}"); }); }), (0, import_vitest.describe)("options", function () { (0, import_vitest.it)("disabled: true makes all guards no-ops", function () { var id = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "ssr", { disabled: !0 }); (0, import_vitest.expect)(id).toBe("\0one-env-guard:client-only:disabled"), (0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)(id)).toBe("export {}"); }), (0, import_vitest.it)("disableGuards: disables specific guard types", function () { var id1 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "ssr", { disableGuards: ["client-only"] }); (0, import_vitest.expect)(id1).toBe("\0one-env-guard:client-only:disabled"); var id2 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("server-only", "client", { disableGuards: ["client-only"] }); (0, import_vitest.expect)(id2).toBe("\0one-env-guard:server-only:client"), (0, import_vitest.expect)((0, import_environmentGuardPlugin.loadEnvironmentGuard)(id2)).toContain("throw new Error"); }), (0, import_vitest.it)("disableGuards: can disable multiple guards", function () { var id1 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("client-only", "ssr", { disableGuards: ["client-only", "server-only"] }); (0, import_vitest.expect)(id1).toBe("\0one-env-guard:client-only:disabled"); var id2 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("server-only", "client", { disableGuards: ["client-only", "server-only"] }); (0, import_vitest.expect)(id2).toBe("\0one-env-guard:server-only:disabled"); var id3 = (0, import_environmentGuardPlugin.resolveEnvironmentGuard)("native-only", "client", { disableGuards: ["client-only", "server-only"] }); (0, import_vitest.expect)(id3).toBe("\0one-env-guard:native-only:client"); }); }); }); //# sourceMappingURL=environmentGuardPlugin.test.native.js.map