Skip to content

Commit

Permalink
Remove duplicate code in inferno-server
Browse files Browse the repository at this point in the history
  • Loading branch information
jhsware committed Dec 27, 2022
1 parent 1f32158 commit 7f0184f
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 79 deletions.
9 changes: 5 additions & 4 deletions demo/inferno-router-demo/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ import koaRouter from 'koa-router'; // koa-router@next
import koaStatic from 'koa-static';
import koaMount from 'koa-mount';
import koaJSONBody from 'koa-json-body';
import { renderToString, resolveLoaders } from 'inferno-server';
import { StaticRouter } from 'inferno-router'
import { renderToString } from 'inferno-server';
import { StaticRouter, resolveLoaders, traverseLoaders } from 'inferno-router'
import {Parcel} from '@parcel/core';
import { createElement } from 'inferno-create-element';
import path from 'path';

const PORT = process.env.PORT || 3000

// Parcel watch subscription and bundle output
let subscription;
// let subscription;
let bundles;

let bundler = new Parcel({
Expand Down Expand Up @@ -111,7 +111,8 @@ frontend.get('(/page)?/:slug?', async (ctx) => {
const { appFactory } = require(pathToAppJs)
const app = appFactory();

const initialData = await resolveLoaders(location, app);
const loaderEntries = traverseLoaders(location, app);
const initialData = await resolveLoaders(loaderEntries);

const htmlApp = renderToString(createElement(StaticRouter, {
context: {},
Expand Down
23 changes: 16 additions & 7 deletions packages/inferno-router/__tests__/loaderOnRoute.spec.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { render } from 'inferno';
import { BrowserRouter, MemoryRouter, StaticRouter, Route, NavLink, useLoaderData, useLoaderError } from 'inferno-router';
import { BrowserRouter, MemoryRouter, StaticRouter, Route, NavLink, useLoaderData, useLoaderError, resolveLoaders, traverseLoaders } from 'inferno-router';
// Cherry picked relative import so we don't get node-stuff from inferno-server in browser test
import { resolveLoaders } from '../../inferno-server/src/ssrLoaderResolver';
import { createEventGuard } from './testUtils';

describe('A <Route> with loader in a MemoryRouter', () => {
Expand Down Expand Up @@ -182,7 +181,13 @@ describe('A <Route> with loader in a MemoryRouter', () => {
});

it('Can abort fetch', async () => {
const abortSpy = jest.spyOn(AbortController.prototype, 'abort');
const abortCalls = {
nrofCalls: 0
};
const _abortFn = AbortController.prototype.abort;
AbortController.prototype.abort = () => {
abortCalls.nrofCalls++;
}
const [setDone, waitForRerender] = createEventGuard();

const TEST = "ok";
Expand Down Expand Up @@ -251,8 +256,9 @@ describe('A <Route> with loader in a MemoryRouter', () => {

await waitForRerender();

expect(abortSpy).toBeCalledTimes(1);
expect(abortCalls.nrofCalls).toEqual(1);
expect(container.querySelector('#create')).toBeNull();
AbortController.prototype.abort = _abortFn;
});
});

Expand Down Expand Up @@ -520,7 +526,8 @@ describe('Resolve loaders during server side rendering', () => {
<Route path="/flowers" render={Component} loader={loaderFunc} />
</StaticRouter>;

const result = await resolveLoaders('/flowers', app);
const loaderEntries = traverseLoaders('/flowers', app);
const result = await resolveLoaders(loaderEntries);
expect(result).toEqual(initialData);
});

Expand All @@ -544,7 +551,8 @@ describe('Resolve loaders during server side rendering', () => {
<Route path="/bees" render={Component} loader={loaderFuncNoHit} />
</StaticRouter>;

const result = await resolveLoaders('/birds', app);
const loaderEntries = traverseLoaders('/birds', app);
const result = await resolveLoaders(loaderEntries);
expect(result).toEqual(initialData);
});

Expand All @@ -571,7 +579,8 @@ describe('Resolve loaders during server side rendering', () => {
</Route>
</StaticRouter>;

const result = await resolveLoaders('/flowers/birds', app);
const loaderEntries = traverseLoaders('/flowers/birds', app);
const result = await resolveLoaders(loaderEntries);
expect(result).toEqual(initialData);
});
})
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { render } from 'inferno';
import { MemoryRouter, Route, Switch, NavLink, useLoaderData, useLoaderError } from 'inferno-router';
// Cherry picked relative import so we don't get node-stuff from inferno-server in browser test
import { resolveLoaders } from '../../inferno-server/src/ssrLoaderResolver';
import { createEventGuard } from './testUtils';

describe('A <Route> with loader in a MemoryRouter', () => {
Expand Down
1 change: 1 addition & 0 deletions packages/inferno-router/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { Prompt } from './Prompt';
import { Redirect } from './Redirect';
import { matchPath } from './matchPath';
import { withRouter } from './withRouter';
export * from './resolveLoaders';
export * from './helpers';

export { BrowserRouter, HashRouter, Link, MemoryRouter, NavLink, Prompt, Redirect, Route, Router, StaticRouter, Switch, matchPath, withRouter };
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { render } from 'inferno';
import { renderToString, resolveLoaders } from 'inferno-server';
import { BrowserRouter, StaticRouter, Route, useLoaderData } from 'inferno-router';
import { renderToString } from 'inferno-server';
import { BrowserRouter, StaticRouter, Route, useLoaderData, resolveLoaders, traverseLoaders } from 'inferno-router';

describe('Resolve loaders during server side rendering', () => {
let container;
Expand Down Expand Up @@ -34,7 +34,8 @@ describe('Resolve loaders during server side rendering', () => {
<Route path="/bees" render={Component} loader={loaderFuncNoHit} />,
]

const initialData = await resolveLoaders('/birds', routes);
const loaderEntries = traverseLoaders('/birds', routes);
const initialData = await resolveLoaders(loaderEntries);

// Render on server
const html = renderToString(<StaticRouter location="/birds" initialData={initialData}>{routes}</StaticRouter>);
Expand Down
1 change: 0 additions & 1 deletion packages/inferno-server/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { renderToString } from './renderToString';
import { RenderQueueStream, streamQueueAsString } from './renderToString.queuestream';
import { RenderStream, streamAsString } from './renderToString.stream';
export * from './ssrLoaderResolver';

// Inferno does not generate "data-root" attributes so staticMarkup is literally same as renderToString
export {
Expand Down
63 changes: 0 additions & 63 deletions packages/inferno-server/src/ssrLoaderResolver.ts

This file was deleted.

0 comments on commit 7f0184f

Please sign in to comment.