context-bridge.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. const binding = process._linkedBinding('electron_renderer_context_bridge');
  2. const checkContextIsolationEnabled = () => {
  3. if (!process.contextIsolated) throw new Error('contextBridge API can only be used when contextIsolation is enabled');
  4. };
  5. const contextBridge: Electron.ContextBridge = {
  6. exposeInMainWorld: (key: string, api: any) => {
  7. checkContextIsolationEnabled();
  8. return binding.exposeAPIInMainWorld(key, api);
  9. }
  10. };
  11. export default contextBridge;
  12. export const internalContextBridge = {
  13. contextIsolationEnabled: process.contextIsolated,
  14. overrideGlobalValueFromIsolatedWorld: (keys: string[], value: any) => {
  15. return binding._overrideGlobalValueFromIsolatedWorld(keys, value, false);
  16. },
  17. overrideGlobalValueWithDynamicPropsFromIsolatedWorld: (keys: string[], value: any) => {
  18. return binding._overrideGlobalValueFromIsolatedWorld(keys, value, true);
  19. },
  20. overrideGlobalPropertyFromIsolatedWorld: (keys: string[], getter: Function, setter?: Function) => {
  21. return binding._overrideGlobalPropertyFromIsolatedWorld(keys, getter, setter || null);
  22. },
  23. isInMainWorld: () => binding._isCalledFromMainWorld() as boolean
  24. };
  25. if (binding._isDebug) {
  26. contextBridge.internalContextBridge = internalContextBridge;
  27. }