fix(preview): rewrite inline module scripts in proxy HTML responses (#1470)
Co-authored-by: mdbetancourt <mdbetancourt@users.noreply.github.com> Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
mdbetancourt
Bohdan Triapitsyn
parent
3541bc63f9
commit
db17f2d95a
@@ -194,7 +194,7 @@ export const classifyPreviewNavigation = ({ url, currentUrl, targetOrigin }) =>
|
|||||||
return { action: 'external', url: parsed.toString() };
|
return { action: 'external', url: parsed.toString() };
|
||||||
};
|
};
|
||||||
|
|
||||||
const PREVIEW_BRIDGE_SCRIPT = String.raw`(() => {
|
const PREVIEW_BRIDGE_SCRIPT = String.raw`(() => {
|
||||||
if (window.__openchamberPreviewBridgeInstalled) return;
|
if (window.__openchamberPreviewBridgeInstalled) return;
|
||||||
window.__openchamberPreviewBridgeInstalled = true;
|
window.__openchamberPreviewBridgeInstalled = true;
|
||||||
|
|
||||||
|
|||||||
@@ -146,11 +146,27 @@ describe('preview body URL rewriting', () => {
|
|||||||
'import RefreshRuntime from "/@react-refresh";',
|
'import RefreshRuntime from "/@react-refresh";',
|
||||||
'window.__vite_plugin_react_preamble_installed__ = true;',
|
'window.__vite_plugin_react_preamble_installed__ = true;',
|
||||||
'</script>',
|
'</script>',
|
||||||
|
'<script type=module>',
|
||||||
|
'import { injectIntoGlobalHook } from "/@react-refresh";',
|
||||||
|
'import value from "/module.js";',
|
||||||
|
'const url = "/api/data";',
|
||||||
|
'</script>',
|
||||||
|
'<script type=\'module\'>',
|
||||||
|
'import "/entry.js";',
|
||||||
|
'</script>',
|
||||||
|
'<script type="text/javascript">',
|
||||||
|
'import "/not-rewritten.js";',
|
||||||
|
'</script>',
|
||||||
'<script>const refreshUrl = "/@react-refresh";</script>',
|
'<script>const refreshUrl = "/@react-refresh";</script>',
|
||||||
].join('');
|
].join('');
|
||||||
const output = rewrite(input, 'html');
|
const output = rewrite(input, 'html');
|
||||||
|
|
||||||
expect(output).toContain('from "/api/preview/proxy/abc123/@react-refresh"');
|
expect(output).toContain('from "/api/preview/proxy/abc123/@react-refresh"');
|
||||||
|
expect(output).toContain('import { injectIntoGlobalHook } from "/api/preview/proxy/abc123/@react-refresh";');
|
||||||
|
expect(output).toContain('import value from "/api/preview/proxy/abc123/module.js";');
|
||||||
|
expect(output).toContain('const url = "/api/data";');
|
||||||
|
expect(output).toContain('import "/api/preview/proxy/abc123/entry.js";');
|
||||||
|
expect(output).toContain('import "/not-rewritten.js";');
|
||||||
expect(output).toContain('window.__vite_plugin_react_preamble_installed__ = true;');
|
expect(output).toContain('window.__vite_plugin_react_preamble_installed__ = true;');
|
||||||
expect(output).toContain('const refreshUrl = "/@react-refresh";');
|
expect(output).toContain('const refreshUrl = "/@react-refresh";');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user