Skip to content

Commit ce91f23

Browse files
Fix CI failures: Update Knip config and test imports for workspace structure
- Update Knip configuration to look for source files in packages/react-on-rails/src/ instead of node_package/src/ - Update all test import paths from ../src/ to ../../packages/react-on-rails/src/ - Fix dead code detection issues that were causing CI failures - Verify Knip passes locally in both normal and production modes 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 7745727 commit ce91f23

15 files changed

+52
-52
lines changed

knip.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@ const config: KnipConfig = {
55
workspaces: {
66
'.': {
77
entry: [
8-
'node_package/src/ReactOnRails.node.ts!',
9-
'node_package/src/pro/ReactOnRailsRSC.ts!',
10-
'node_package/src/pro/registerServerComponent/client.tsx!',
11-
'node_package/src/pro/registerServerComponent/server.tsx!',
12-
'node_package/src/pro/registerServerComponent/server.rsc.ts!',
13-
'node_package/src/pro/wrapServerComponentRenderer/server.tsx!',
14-
'node_package/src/pro/wrapServerComponentRenderer/server.rsc.tsx!',
15-
'node_package/src/pro/RSCRoute.tsx!',
16-
'node_package/src/pro/ServerComponentFetchError.ts!',
17-
'node_package/src/pro/getReactServerComponent.server.ts!',
18-
'node_package/src/pro/transformRSCNodeStream.ts!',
19-
'node_package/src/loadJsonFile.ts!',
8+
'packages/react-on-rails/src/ReactOnRails.node.ts!',
9+
'packages/react-on-rails/src/pro/ReactOnRailsRSC.ts!',
10+
'packages/react-on-rails/src/pro/registerServerComponent/client.tsx!',
11+
'packages/react-on-rails/src/pro/registerServerComponent/server.tsx!',
12+
'packages/react-on-rails/src/pro/registerServerComponent/server.rsc.ts!',
13+
'packages/react-on-rails/src/pro/wrapServerComponentRenderer/server.tsx!',
14+
'packages/react-on-rails/src/pro/wrapServerComponentRenderer/server.rsc.tsx!',
15+
'packages/react-on-rails/src/pro/RSCRoute.tsx!',
16+
'packages/react-on-rails/src/pro/ServerComponentFetchError.ts!',
17+
'packages/react-on-rails/src/pro/getReactServerComponent.server.ts!',
18+
'packages/react-on-rails/src/pro/transformRSCNodeStream.ts!',
19+
'packages/react-on-rails/src/loadJsonFile.ts!',
2020
'eslint.config.ts',
2121
],
2222
project: [
23-
'node_package/src/**/*.[jt]s{x,}!',
23+
'packages/react-on-rails/src/**/*.[jt]s{x,}!',
2424
'node_package/tests/**/*.[jt]s{x,}',
2525
'!react_on_rails_pro/**',
2626
],
@@ -30,11 +30,11 @@ const config: KnipConfig = {
3030
ignore: [
3131
'node_package/tests/emptyForTesting.js',
3232
// Pro features exported for external consumption
33-
'node_package/src/pro/streamServerRenderedReactComponent.ts:transformRenderStreamChunksToResultObject',
34-
'node_package/src/pro/streamServerRenderedReactComponent.ts:streamServerRenderedComponent',
35-
'node_package/src/pro/ServerComponentFetchError.ts:isServerComponentFetchError',
36-
'node_package/src/pro/RSCRoute.tsx:RSCRouteProps',
37-
'node_package/src/pro/streamServerRenderedReactComponent.ts:StreamingTrackers',
33+
'packages/react-on-rails/src/pro/streamServerRenderedReactComponent.ts:transformRenderStreamChunksToResultObject',
34+
'packages/react-on-rails/src/pro/streamServerRenderedReactComponent.ts:streamServerRenderedComponent',
35+
'packages/react-on-rails/src/pro/ServerComponentFetchError.ts:isServerComponentFetchError',
36+
'packages/react-on-rails/src/pro/RSCRoute.tsx:RSCRouteProps',
37+
'packages/react-on-rails/src/pro/streamServerRenderedReactComponent.ts:StreamingTrackers',
3838
// Exclude entire pro directory - it has its own package.json with dependencies
3939
'react_on_rails_pro/**',
4040
],

node_package/tests/Authenticity.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import ReactOnRails from '../src/ReactOnRails.client.ts';
1+
import ReactOnRails from '../../packages/react-on-rails/src/ReactOnRails.client.ts';
22

33
const testToken = 'TEST_CSRF_TOKEN';
44

node_package/tests/ComponentRegistry.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import * as React from 'react';
77
import * as createReactClass from 'create-react-class';
88

9-
import * as ComponentRegistry from '../src/pro/ComponentRegistry.ts';
9+
import * as ComponentRegistry from '../../packages/react-on-rails/src/pro/ComponentRegistry.ts';
1010

1111
const onPageLoadedCallbacks = [];
1212
const onPageUnloadedCallbacks = [];
1313

14-
jest.mock('../src/pageLifecycle.ts', () => ({
14+
jest.mock('../../packages/react-on-rails/src/pageLifecycle.ts', () => ({
1515
onPageLoaded: jest.fn((cb) => {
1616
onPageLoadedCallbacks.push(cb);
1717
cb();
@@ -22,7 +22,7 @@ jest.mock('../src/pageLifecycle.ts', () => ({
2222
}),
2323
}));
2424

25-
jest.mock('../src/context.ts', () => ({
25+
jest.mock('../../packages/react-on-rails/src/context.ts', () => ({
2626
getRailsContext: () => ({ componentRegistryTimeout: 100 }),
2727
}));
2828

node_package/tests/ReactOnRails.test.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import { createStore } from 'redux';
55
import * as React from 'react';
66
import * as createReactClass from 'create-react-class';
7-
import ReactOnRails from '../src/ReactOnRails.client.ts';
7+
import ReactOnRails from '../../packages/react-on-rails/src/ReactOnRails.client.ts';
88

99
describe('ReactOnRails', () => {
1010
it('render returns a virtual DOM element for component', () => {

node_package/tests/StoreRegistry.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createStore } from 'redux';
22

3-
import * as StoreRegistry from '../src/pro/StoreRegistry.ts';
3+
import * as StoreRegistry from '../../packages/react-on-rails/src/pro/StoreRegistry.ts';
44

55
function reducer() {
66
return {};

node_package/tests/buildConsoleReplay.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import buildConsoleReplay, { consoleReplay } from '../src/buildConsoleReplay.ts';
1+
import buildConsoleReplay, { consoleReplay } from '../../packages/react-on-rails/src/buildConsoleReplay.ts';
22

33
describe('consoleReplay', () => {
44
it('does not throw an exception if no console.history object', () => {

node_package/tests/injectRSCPayload.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Readable, PassThrough } from 'stream';
2-
import { RailsContextWithServerStreamingCapabilities } from '../src/types/index.ts';
3-
import injectRSCPayload from '../src/pro/injectRSCPayload.ts';
4-
import RSCRequestTracker from '../src/pro/RSCRequestTracker.ts';
2+
import { RailsContextWithServerStreamingCapabilities } from '../../packages/react-on-rails/src/types/index.ts';
3+
import injectRSCPayload from '../../packages/react-on-rails/src/pro/injectRSCPayload.ts';
4+
import RSCRequestTracker from '../../packages/react-on-rails/src/pro/RSCRequestTracker.ts';
55

66
// Shared utilities
77
const createMockStream = (chunks: (string | Buffer)[] | { [key: number]: string | string[] }) => {

node_package/tests/jest.setup.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ if (typeof window !== 'undefined') {
2323
// Node's fetch and polyfills like jest-fetch-mock return Node's Readable stream,
2424
// so we convert it to a web-standard ReadableStream for consistency
2525
// Note: Node's Readable stream exists in node 'stream' built-in module, can be imported as `import { Readable } from 'stream'`
26-
jest.mock('../src/utils', () => ({
27-
...jest.requireActual('../src/utils'),
26+
jest.mock('../../packages/react-on-rails/src/utils', () => ({
27+
...jest.requireActual('../../packages/react-on-rails/src/utils'),
2828
fetch: (...args) =>
2929
jest
30-
.requireActual('../src/utils')
30+
.requireActual('../../packages/react-on-rails/src/utils')
3131
.fetch(...args)
3232
.then((res) => {
3333
const originalBody = res.body;

node_package/tests/pageLifecycle.test.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
// Mock the turbolinksUtils module before importing pageLifecycle
6-
jest.mock('../src/turbolinksUtils.ts', () => ({
6+
jest.mock('../../packages/react-on-rails/src/turbolinksUtils.ts', () => ({
77
debugTurbolinks: jest.fn(),
88
turbolinksInstalled: jest.fn(() => false),
99
turbolinksSupported: jest.fn(() => false),
@@ -29,7 +29,7 @@ describe('pageLifecycle', () => {
2929
// We use require here instead of a global import at the top because we need to dynamically reload the module in each test.
3030
// This allows us to reset the module state between tests using jest.resetModules(), ensuring test isolation and preventing state leakage.
3131
// eslint-disable-next-line global-require
32-
const importPageLifecycle = () => require('../src/pageLifecycle.ts');
32+
const importPageLifecycle = () => require('../../packages/react-on-rails/src/pageLifecycle.ts');
3333

3434
// Helper function to create navigation library mock
3535
const createNavigationMock = (overrides = {}) => ({
@@ -109,15 +109,15 @@ describe('pageLifecycle', () => {
109109

110110
describe('with Turbo navigation library', () => {
111111
beforeEach(() => {
112-
jest.doMock('../src/turbolinksUtils.ts', () =>
112+
jest.doMock('../../packages/react-on-rails/src/turbolinksUtils.ts', () =>
113113
createNavigationMock({
114114
turboInstalled: jest.fn(() => true),
115115
}),
116116
);
117117
});
118118

119119
afterEach(() => {
120-
jest.dontMock('../src/turbolinksUtils.ts');
120+
jest.dontMock('../../packages/react-on-rails/src/turbolinksUtils.ts');
121121
});
122122

123123
it('should set up Turbo event listeners when Turbo is installed', () => {
@@ -137,7 +137,7 @@ describe('pageLifecycle', () => {
137137

138138
describe('with Turbolinks 5 navigation library', () => {
139139
beforeEach(() => {
140-
jest.doMock('../src/turbolinksUtils.ts', () =>
140+
jest.doMock('../../packages/react-on-rails/src/turbolinksUtils.ts', () =>
141141
createNavigationMock({
142142
turbolinksInstalled: jest.fn(() => true),
143143
turbolinksSupported: jest.fn(() => true),
@@ -147,7 +147,7 @@ describe('pageLifecycle', () => {
147147
});
148148

149149
afterEach(() => {
150-
jest.dontMock('../src/turbolinksUtils.ts');
150+
jest.dontMock('../../packages/react-on-rails/src/turbolinksUtils.ts');
151151
});
152152

153153
it('should set up Turbolinks 5 event listeners when Turbolinks 5 is installed', () => {
@@ -167,7 +167,7 @@ describe('pageLifecycle', () => {
167167

168168
describe('with Turbolinks 2 navigation library', () => {
169169
beforeEach(() => {
170-
jest.doMock('../src/turbolinksUtils.ts', () =>
170+
jest.doMock('../../packages/react-on-rails/src/turbolinksUtils.ts', () =>
171171
createNavigationMock({
172172
turbolinksInstalled: jest.fn(() => true),
173173
turbolinksSupported: jest.fn(() => true),
@@ -176,7 +176,7 @@ describe('pageLifecycle', () => {
176176
});
177177

178178
afterEach(() => {
179-
jest.dontMock('../src/turbolinksUtils.ts');
179+
jest.dontMock('../../packages/react-on-rails/src/turbolinksUtils.ts');
180180
});
181181

182182
it('should set up Turbolinks 2 event listeners when Turbolinks 2 is installed', () => {

node_package/tests/registerServerComponent.client.test.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import '@testing-library/jest-dom';
1010
import * as path from 'path';
1111
import * as fs from 'fs';
1212
import { createNodeReadableStream, getNodeVersion } from './testUtils.js';
13-
import ReactOnRails from '../src/ReactOnRails.client.ts';
14-
import registerServerComponent from '../src/pro/registerServerComponent/client.tsx';
15-
import { clear as clearComponentRegistry } from '../src/pro/ComponentRegistry.ts';
13+
import ReactOnRails from '../../packages/react-on-rails/src/ReactOnRails.client.ts';
14+
import registerServerComponent from '../../packages/react-on-rails/src/pro/registerServerComponent/client.tsx';
15+
import { clear as clearComponentRegistry } from '../../packages/react-on-rails/src/pro/ComponentRegistry.ts';
1616

1717
enableFetchMocks();
1818

@@ -44,7 +44,7 @@ enableFetchMocks();
4444

4545
expect(() => {
4646
// Re-import to trigger the check
47-
jest.requireActual('../src/pro/wrapServerComponentRenderer/client.tsx');
47+
jest.requireActual('../../packages/react-on-rails/src/pro/wrapServerComponentRenderer/client.tsx');
4848
}).toThrow('React.use is not defined');
4949
});
5050

0 commit comments

Comments
 (0)