Skip to content

Commit 8e63ec0

Browse files
committed
Working on remix compatibility
1 parent 81cb4e5 commit 8e63ec0

File tree

3 files changed

+52
-26
lines changed

3 files changed

+52
-26
lines changed

src/backend/controllers/createTree/createTree.ts

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import {
4343
getStateAndContextData,
4444
filterAndFormatData,
4545
} from './statePropExtractors';
46-
import { nextJSDefaultComponent } from '../../models/filterConditions';
46+
import { nextJSDefaultComponent, remixDefaultComponents } from '../../models/filterConditions';
4747

4848
// -------------------------CREATE TREE TO SEND TO FRONT END--------------------
4949
/**
@@ -90,28 +90,29 @@ export default function createTree(
9090
_debugHookTypes,
9191
} = currentFiberNode;
9292
// Obtain component name:
93-
const componentName =
93+
let componentName =
9494
elementType?._context?.displayName || //For ContextProvider
9595
elementType?._result?.name || //For lazy Component
9696
elementType?.render?.name ||
9797
elementType?.name ||
9898
'nameless';
99-
// console.log('LinkFiber', {
100-
// currentFiberNode,
101-
// // tag,
102-
// // elementType,
103-
// componentName:
104-
// elementType?._context?.displayName || //For ContextProvider
105-
// elementType?._result?.name || //For lazy Component
106-
// elementType?.render?.name ||
107-
// elementType?.name ||
108-
// elementType,
109-
// // memoizedProps,
110-
// // memoizedState,
111-
// // stateNode,
112-
// // dependencies,
113-
// // _debugHookTypes,
114-
// });
99+
console.log('LinkFiber', {
100+
currentFiberNode,
101+
tag,
102+
// elementType,
103+
componentName:
104+
elementType?._context?.displayName || //For ContextProvider
105+
elementType?._result?.name || //For lazy Component
106+
elementType?.render?.name ||
107+
elementType?.name ||
108+
elementType,
109+
remix: remixDefaultComponents.has(componentName),
110+
// memoizedProps,
111+
// memoizedState,
112+
// stateNode,
113+
// dependencies,
114+
// _debugHookTypes,
115+
});
115116

116117
// -----------------INITIALIZE OBJECT TO CONTAIN COMPONENT DATA---------------
117118
let newState: any | { hooksState?: any[] } = {};
@@ -140,6 +141,7 @@ export default function createTree(
140141
// check to see if the parent component has any state/props
141142
if (
142143
!nextJSDefaultComponent.has(componentName) &&
144+
!remixDefaultComponents.has(componentName) &&
143145
(tag === FunctionComponent ||
144146
tag === ClassComponent ||
145147
tag === IndeterminateComponent ||
@@ -164,6 +166,7 @@ export default function createTree(
164166
// Note: if user use ReactHook, memoizedState.memoizedState can be a falsy value such as null, false, ... => need to specify this data is not undefined
165167
if (
166168
!nextJSDefaultComponent.has(componentName) &&
169+
!remixDefaultComponents.has(componentName) &&
167170
(tag === FunctionComponent || tag === ClassComponent) &&
168171
memoizedState?.memoizedState !== undefined
169172
) {
@@ -187,6 +190,7 @@ export default function createTree(
187190
// TODO: need to render this context provider when user use useContext hook.
188191
if (
189192
!nextJSDefaultComponent.has(componentName) &&
193+
!remixDefaultComponents.has(componentName) &&
190194
tag === ContextProvider &&
191195
!elementType._context.displayName
192196
) {
@@ -195,6 +199,7 @@ export default function createTree(
195199
stateData = { CONTEXT: stateData };
196200
}
197201
componentData.context = filterAndFormatData(stateData);
202+
componentName = 'Context';
198203
}
199204

200205
// DEPRECATED: This code might have worked previously. However, with the update of React Dev Tool, context can no longer be pulled using this method.
@@ -210,6 +215,7 @@ export default function createTree(
210215
// Example: for tic-tac-toe demo-app: Board is a stateful component that use setState to store state data.
211216
if (
212217
!nextJSDefaultComponent.has(componentName) &&
218+
!remixDefaultComponents.has(componentName) &&
213219
stateNode?.state &&
214220
(tag === ClassComponent || tag === IndeterminateComponent)
215221
) {
@@ -227,6 +233,7 @@ export default function createTree(
227233
// Check if node is a hooks useState function
228234
if (
229235
!nextJSDefaultComponent.has(componentName) &&
236+
!remixDefaultComponents.has(componentName) &&
230237
memoizedState &&
231238
(tag === FunctionComponent ||
232239
// tag === ClassComponent || WE SHOULD NOT BE ABLE TO USE HOOK IN CLASS
@@ -286,7 +293,8 @@ export default function createTree(
286293
// We want to add this fiber node to the snapshot
287294
if (
288295
(isStatefulComponent || newState === 'stateless') &&
289-
!nextJSDefaultComponent.has(componentName)
296+
!nextJSDefaultComponent.has(componentName) &&
297+
!remixDefaultComponents.has(componentName)
290298
) {
291299
// Grab JSX Component & replace the 'fromLinkFiber' class value
292300
if (currentFiberNode.child?.stateNode?.setAttribute) {

src/backend/controllers/createTree/statePropExtractors.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ export function filterAndFormatData(
118118
reactimeData[key] = reactDevData[key];
119119
}
120120
} catch (err) {
121-
console.log('linkFiber', { reactDevData, key });
122-
throw Error(`Error caught at converDataToString: ${err}`);
121+
console.log('Error: linkFiber', { reactDevData, key });
122+
// throw Error(`Error caught at converDataToString: ${err}`);
123123
}
124124
}
125125
return reactimeData;

src/backend/models/filterConditions.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ import {
2929
LegacyHiddenComponent,
3030
} from '../types/backendTypes';
3131

32+
export const allowedComponentTypes = new Set([
33+
FunctionComponent,
34+
ClassComponent,
35+
ContextProvider,
36+
IndeterminateComponent,
37+
]);
3238
export const nextJSDefaultComponent = new Set([
3339
'Root',
3440
'Head',
@@ -47,9 +53,21 @@ export const nextJSDefaultComponent = new Set([
4753
'Portal',
4854
]);
4955

50-
export const allowedComponentTypes = new Set([
51-
FunctionComponent,
52-
ClassComponent,
53-
ContextProvider,
54-
IndeterminateComponent,
56+
export const remixDefaultComponents = new Set([
57+
'RemixBrowser',
58+
'Remix',
59+
'RemixErrorBoundary',
60+
'RouterProvider',
61+
'DataRouter',
62+
'DataRouterState',
63+
'RenderErrorBoundary',
64+
'Meta',
65+
'V1Meta',
66+
'Links',
67+
'RemixRoute',
68+
'Outlet',
69+
'ScrollRestoration2',
70+
'script',
71+
'Scripts',
72+
'LiveReload2',
5573
]);

0 commit comments

Comments
 (0)