UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

1 lines 3.5 kB
{"version":3,"file":"head.mjs","names":[],"sources":["../../src/ui/head.ts"],"sourcesContent":["import type { ClientRuntimeConfig } from \"../types\";\nimport type { HeadScript } from \"./types\";\n\nexport interface RemoteScriptsOptions {\n assetsUrl: string;\n runtimeConfig?: Partial<ClientRuntimeConfig>;\n containerName?: string;\n hydratePath?: string;\n integrity?: string;\n}\n\nexport function getRemoteEntryScript(assetsUrl: string, integrity?: string): HeadScript {\n const script: HeadScript = {\n src: `${assetsUrl}/remoteEntry.js`,\n };\n if (integrity) {\n script.integrity = integrity;\n script.crossOrigin = \"anonymous\";\n }\n return script;\n}\n\nexport function getThemeInitScript(): HeadScript {\n return {\n children:\n \"(function(){var t=localStorage.getItem('theme');if(t==='dark'||(!t&&window.matchMedia('(prefers-color-scheme: dark)').matches)){document.documentElement.classList.add('dark');}})();\",\n };\n}\n\nexport function getHydrateScript(\n runtimeConfig: Partial<ClientRuntimeConfig> | undefined,\n containerName = \"ui\",\n hydratePath = \"./Hydrate\",\n): HeadScript {\n return {\n children: `\n window.__RUNTIME_CONFIG__=${JSON.stringify(runtimeConfig)};\n function __hydrate(){\n var container = window['${containerName}'];\n if (!container) {\n console.warn('[Hydrate] Container not ready yet, waiting...');\n window.__hydrateRetry = window.__hydrateRetry || 0;\n if (window.__hydrateRetry < 10) {\n window.__hydrateRetry++;\n setTimeout(__hydrate, 100);\n return;\n }\n console.error('[Hydrate] Container not found after 10 retries');\n return;\n }\n console.log('[Hydrate] Container available, starting init...');\n container.init({}).then(function(){\n return container.get('${hydratePath}');\n }).then(function(mod){\n return mod().hydrate();\n }).catch(function(e){\n console.error('[Hydrate] Failed:', e);\n });\n }\n if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',__hydrate);}else{__hydrate();}\n \t\t`.trim(),\n };\n}\n\nexport function getRemoteScripts(options: RemoteScriptsOptions): HeadScript[] {\n const { assetsUrl, runtimeConfig, containerName, hydratePath, integrity } = options;\n\n return [\n getRemoteEntryScript(assetsUrl, integrity),\n getThemeInitScript(),\n getHydrateScript(runtimeConfig, containerName, hydratePath),\n ];\n}\n\nexport function getBaseStyles(): string {\n return `\n*, *::before, *::after { box-sizing: border-box; }\nhtml { height: 100%; height: 100dvh; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; color-scheme: light dark; }\nbody { min-height: 100%; min-height: 100dvh; margin: 0; background-color: var(--background); color: var(--foreground); -webkit-tap-highlight-color: transparent; touch-action: manipulation; }\n#root { min-height: 100vh; }\n@supports (min-height: 100dvh) { #root { min-height: 100dvh; } }\n `.trim();\n}\n"],"mappings":";AAWA,SAAgB,qBAAqB,WAAmB,WAAgC;CACtF,MAAM,SAAqB,EACzB,KAAK,GAAG,UAAU,kBACnB;AACD,KAAI,WAAW;AACb,SAAO,YAAY;AACnB,SAAO,cAAc;;AAEvB,QAAO;;AAGT,SAAgB,qBAAiC;AAC/C,QAAO,EACL,UACE,yLACH;;AAGH,SAAgB,iBACd,eACA,gBAAgB,MAChB,cAAc,aACF;AACZ,QAAO,EACL,UAAU;6BACe,KAAK,UAAU,cAAc,CAAC;;4BAE/B,cAAc;;;;;;;;;;;;;;4BAcd,YAAY;;;;;;;;KAQnC,MAAM,EACR;;AAGH,SAAgB,iBAAiB,SAA6C;CAC5E,MAAM,EAAE,WAAW,eAAe,eAAe,aAAa,cAAc;AAE5E,QAAO;EACL,qBAAqB,WAAW,UAAU;EAC1C,oBAAoB;EACpB,iBAAiB,eAAe,eAAe,YAAY;EAC5D;;AAGH,SAAgB,gBAAwB;AACtC,QAAO;;;;;;IAML,MAAM"}