UNPKG

sanity

Version:

Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches

95 lines (94 loc) 3.5 kB
"use strict"; var resizeObserver = require("@juggle/resize-observer"), node = require("esbuild-register/dist/node"), jsdomGlobal = require("jsdom-global"), pirates = require("pirates"), resolveFrom = require("resolve-from"), cli = require("../cli.js"); function _interopDefaultCompat(e) { return e && typeof e == "object" && "default" in e ? e : { default: e }; } var jsdomGlobal__default = /* @__PURE__ */ _interopDefaultCompat(jsdomGlobal), resolveFrom__default = /* @__PURE__ */ _interopDefaultCompat(resolveFrom); const jsdomDefaultHtml = `<!doctype html> <html> <head><meta charset="utf-8"></head> <body></body> </html>`; function mockBrowserEnvironment(basePath) { if (global && global.window && "__mockedBySanity" in global.window) return () => { }; const domCleanup = jsdomGlobal__default.default(jsdomDefaultHtml, { url: "http://localhost:3333/" }), windowCleanup = () => global.window.close(), globalCleanup = provideFakeGlobals(basePath), cleanupFileLoader = pirates.addHook( (code, filename) => `module.exports = ${JSON.stringify(filename)}`, { ignoreNodeModules: !1, exts: getFileExtensions() } ), { unregister: unregisterESBuild } = node.register({ target: "node18", format: "cjs", extensions: [".js", ".jsx", ".ts", ".tsx", ".mjs"], jsx: "automatic", define: { // define the `process.env` global ...cli.getStudioEnvironmentVariables({ prefix: "process.env.", jsonEncode: !0 }), // define the `import.meta.env` global ...cli.getStudioEnvironmentVariables({ prefix: "import.meta.env.", jsonEncode: !0 }) } }); return function() { unregisterESBuild(), cleanupFileLoader(), globalCleanup(), windowCleanup(), domCleanup(); }; } const getFakeGlobals = (basePath) => { var _a, _b, _c; return { __mockedBySanity: !0, requestAnimationFrame: setImmediate, cancelAnimationFrame: clearImmediate, requestIdleCallback: setImmediate, cancelIdleCallback: clearImmediate, ace: tryGetAceGlobal(basePath), InputEvent: (_a = global.window) == null ? void 0 : _a.InputEvent, customElements: (_b = global.window) == null ? void 0 : _b.customElements, ResizeObserver: ((_c = global.window) == null ? void 0 : _c.ResizeObserver) || resizeObserver.ResizeObserver }; }; function provideFakeGlobals(basePath) { const globalEnv = global, globalWindow = global.window, fakeGlobals = getFakeGlobals(basePath), stubbedGlobalKeys = [], stubbedWindowKeys = []; for (const [rawKey, value] of Object.entries(fakeGlobals)) { if (typeof value > "u") continue; const key = rawKey; key in globalEnv || (globalEnv[key] = fakeGlobals[key], stubbedGlobalKeys.push(key)), key in global.window || (globalWindow[key] = fakeGlobals[key], stubbedWindowKeys.push(key)); } return () => { stubbedGlobalKeys.forEach((key) => { delete globalEnv[key]; }), stubbedWindowKeys.forEach((key) => { delete globalWindow[key]; }); }; } function tryGetAceGlobal(basePath) { const acePath = resolveFrom__default.default.silent(basePath, "ace-builds"); if (acePath) try { return require(acePath); } catch { return; } } function getFileExtensions() { return [ ".jpeg", ".jpg", ".png", ".gif", ".svg", ".webp", ".woff", ".woff2", ".ttf", ".eot", ".otf", ".css" ]; } exports.mockBrowserEnvironment = mockBrowserEnvironment; //# sourceMappingURL=mockBrowserEnvironment.js.map