diff --git a/packages/client/src/renderer/index.ts b/packages/client/src/renderer/index.ts index cb6e9f5..5614ea8 100644 --- a/packages/client/src/renderer/index.ts +++ b/packages/client/src/renderer/index.ts @@ -2,3 +2,4 @@ export * from './ClientRenderer' export * from './IClientConfig' export * from './IRenderer' export * from './IStoreFactory' +export * from './isClientSide' diff --git a/packages/client/src/renderer/isClientSide.test.ts b/packages/client/src/renderer/isClientSide.test.ts new file mode 100644 index 0000000..8b20f80 --- /dev/null +++ b/packages/client/src/renderer/isClientSide.test.ts @@ -0,0 +1,27 @@ +import {isClientSide} from './isClientSide' + +describe('isClientSide', () => { + + describe('client', () => { + it('returns true when running in browser', () => { + expect(isClientSide()).toBe(true) + }) + }) + + describe('server', () => { + + const g: any = global + const window = g.window + beforeEach(() => { + delete g.window + }) + + afterEach(() => { + g.window = window + }) + it('returns false when running on server', () => { + expect(isClientSide()).toBe(false) + }) + }) + +}) diff --git a/packages/client/src/renderer/isClientSide.ts b/packages/client/src/renderer/isClientSide.ts new file mode 100644 index 0000000..d907866 --- /dev/null +++ b/packages/client/src/renderer/isClientSide.ts @@ -0,0 +1,5 @@ +export function isClientSide() { + return typeof window !== 'undefined' && + typeof window.document !== 'undefined' && + typeof window.document.createElement === 'function' +}