Skip to content

Commit 54a9286

Browse files
committed
split exports to 'react-on-rails/server' and 'react-on-rails/client'
1 parent bfc1f0f commit 54a9286

File tree

4 files changed

+30
-14
lines changed

4 files changed

+30
-14
lines changed

node_package/src/ReactOnRails.ts renamed to node_package/src/ReactOnRails.client.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
import type { ReactElement } from 'react';
22

33
import * as ClientStartup from './clientStartup';
4-
import handleError from './handleError';
54
import ComponentRegistry from './ComponentRegistry';
65
import StoreRegistry from './StoreRegistry';
7-
import serverRenderReactComponent from './serverRenderReactComponent';
86
import buildConsoleReplay from './buildConsoleReplay';
97
import createReactOutput from './createReactOutput';
108
import Authenticity from './Authenticity';
119
import context from './context';
1210
import type {
1311
RegisteredComponent,
14-
RenderParams,
1512
RenderResult,
1613
RenderReturnType,
17-
ErrorOptions,
1814
ReactComponentOrRenderFunction,
1915
AuthenticityHeaders,
2016
Store,
@@ -243,8 +239,8 @@ ctx.ReactOnRails = {
243239
* Used by server rendering by Rails
244240
* @param options
245241
*/
246-
serverRenderReactComponent(options: RenderParams): null | string | Promise<RenderResult> {
247-
return serverRenderReactComponent(options);
242+
serverRenderReactComponent(): null | string | Promise<RenderResult> {
243+
throw new Error('serverRenderReactComponent is not available in "react-on-rails/client". Import "react-on-rails" server-side.');
248244
},
249245

250246
/**
@@ -259,8 +255,8 @@ ctx.ReactOnRails = {
259255
* Used by Rails to catch errors in rendering
260256
* @param options
261257
*/
262-
handleError(options: ErrorOptions): string | undefined {
263-
return handleError(options);
258+
handleError(): string | undefined {
259+
throw new Error('handleError is not available in "react-on-rails/client". Import "react-on-rails" server-side.');
264260
},
265261

266262
/**
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import ReactOnRails from './ReactOnRails';
1+
import ReactOnRails from './ReactOnRails.server';
22
import streamServerRenderedReactComponent from './streamServerRenderedReactComponent';
33

44
ReactOnRails.streamServerRenderedReactComponent = streamServerRenderedReactComponent;
55

6-
export * from './ReactOnRails';
7-
export { default } from './ReactOnRails';
6+
export * from './ReactOnRails.server';
7+
export { default } from './ReactOnRails.server';
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import handleError from './handleError';
2+
import serverRenderReactComponent from './serverRenderReactComponent';
3+
import type {
4+
RenderParams,
5+
RenderResult,
6+
ErrorOptions,
7+
} from './types';
8+
9+
import Client from './ReactOnRails.client';
10+
11+
if (typeof window !== 'undefined') {
12+
throw new Error('"react-on-rails" is for server-side rendering only. Import "react-on-rails/client".');
13+
}
14+
15+
Client.handleError = (options: ErrorOptions): string | undefined => handleError(options);
16+
Client.serverRenderReactComponent = (options: RenderParams): null | string | Promise<RenderResult> => serverRenderReactComponent(options);
17+
18+
export * from "./types";
19+
export default Client;

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
"version": "14.1.1",
44
"description": "react-on-rails JavaScript for react_on_rails Ruby gem",
55
"exports": {
6-
".": {
6+
"./server": {
77
"node": "./node_package/lib/ReactOnRails.node.js",
8-
"default": "./node_package/lib/ReactOnRails.js"
9-
}
8+
"default": "./node_package/lib/ReactOnRails.server.js"
9+
},
10+
"./client": "./node_package/lib/ReactOnRails.client.js"
1011
},
1112
"directories": {
1213
"doc": "docs"

0 commit comments

Comments
 (0)