Skip to content

Commit

Permalink
Prerender Private routes (redwoodjs#3124)
Browse files Browse the repository at this point in the history
  • Loading branch information
callingmedic911 authored Jul 26, 2021
1 parent 10a464c commit 3e1d823
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 4 deletions.
5 changes: 4 additions & 1 deletion __fixtures__/example-todo-main/web/src/Routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// 'src/pages/HomePage/HomePage.js' -> HomePage
// 'src/pages/Admin/BooksPage/BooksPage.js' -> AdminBooksPage

import { Router, Route } from '@redwoodjs/router'
import { Private, Router, Route } from '@redwoodjs/router'
import SetLayout from 'src/layouts/SetLayout'

const Routes = () => {
Expand All @@ -20,6 +20,9 @@ const Routes = () => {
<Route path="/foo" page={FooPage} name="fooPage" />
<Route path="/bar" page={BarPage} name="barPage" />
</Set>
<Private prerender unauthenticated="home">
<Route path="/private-page" page={PrivatePage} name="privatePage" />
</Private>
<Route notfound page={NotFoundPage} />
</Router>
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default () => 'I am a Private page.'
2 changes: 2 additions & 0 deletions packages/internal/src/__tests__/files.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ test('finds directory named modules', () => {
"web/src/pages/FooPage/FooPage.tsx",
"web/src/pages/HomePage/HomePage.tsx",
"web/src/pages/NotFoundPage/NotFoundPage.js",
"web/src/pages/PrivatePage/PrivatePage.tsx",
"web/src/pages/TypeScriptPage/TypeScriptPage.tsx",
"web/src/pages/admin/EditUserPage/EditUserPage.jsx",
]
Expand All @@ -73,6 +74,7 @@ test('finds all the page files', () => {
"web/src/pages/FooPage/FooPage.tsx",
"web/src/pages/HomePage/HomePage.tsx",
"web/src/pages/NotFoundPage/NotFoundPage.js",
"web/src/pages/PrivatePage/PrivatePage.tsx",
"web/src/pages/TypeScriptPage/TypeScriptPage.tsx",
"web/src/pages/admin/EditUserPage/EditUserPage.jsx",
]
Expand Down
10 changes: 9 additions & 1 deletion packages/internal/src/__tests__/paths.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ describe('paths', () => {

const pages = processPagesDir(pagesDir)

expect(pages.length).toEqual(7)
expect(pages.length).toEqual(8)

const adminEditUserPage = pages.find(
(page) => page.importName === 'adminEditUserPage'
Expand Down Expand Up @@ -74,6 +74,14 @@ describe('paths', () => {
path.join(pagesDir, 'TypeScriptPage/TypeScriptPage')
)
)

const privatePage = pages.find(
(page) => page.importName === 'PrivatePage'
)
expect(privatePage).not.toBeUndefined()
expect(privatePage.importPath).toEqual(
importStatementPath(path.join(pagesDir, 'PrivatePage/PrivatePage'))
)
})
})

Expand Down
3 changes: 3 additions & 0 deletions packages/internal/src/__tests__/typeDefinitions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ test('generate the correct mirror types for directory named modules', () => {
".redwood/types/mirror/web/src/pages/FooPage/index.d.ts",
".redwood/types/mirror/web/src/pages/HomePage/index.d.ts",
".redwood/types/mirror/web/src/pages/NotFoundPage/index.d.ts",
".redwood/types/mirror/web/src/pages/PrivatePage/index.d.ts",
".redwood/types/mirror/web/src/pages/TypeScriptPage/index.d.ts",
".redwood/types/mirror/web/src/pages/admin/EditUserPage/index.d.ts",
]
Expand Down Expand Up @@ -114,6 +115,7 @@ declare global {
const FooPage: typeof FooPageType
const HomePage: typeof HomePageType
const NotFoundPage: typeof NotFoundPageType
const PrivatePage: typeof PrivatePageType
const TypeScriptPage: typeof TypeScriptPageType
const adminEditUserPage: typeof adminEditUserPageType
}`)
Expand All @@ -138,6 +140,7 @@ test('generates the router routes', () => {
someOtherPage: (params?: RouteParams<"/somewhereElse"> & QueryParams) => "/somewhereElse"
fooPage: (params?: RouteParams<"/foo"> & QueryParams) => "/foo"
barPage: (params?: RouteParams<"/bar"> & QueryParams) => "/bar"
privatePage: (params?: RouteParams<"/private-page"> & QueryParams) => "/private-page"
`)
})

Expand Down
5 changes: 4 additions & 1 deletion packages/structure/src/model/RWRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,10 @@ export class RWRouter extends FileNode {
const sets = self.sf
.getDescendantsOfKind(tsm.SyntaxKind.JsxElement)
.filter(
(x) => x.getOpeningElement().getTagNameNode().getText() === 'Set'
(x) => {
const tagName = x.getOpeningElement().getTagNameNode().getText()
return tagName === 'Set' || tagName === 'Private'
}
)

const prerenderSets = sets.filter((set) =>
Expand Down
4 changes: 3 additions & 1 deletion packages/structure/src/model/__tests__/model.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ describe('Redwood Project Model', () => {
'FatalErrorPage',
'HomePage',
'NotFoundPage',
'PrivatePage',
'TypeScriptPage',
'EditUserPage',
'FooPage',
Expand Down Expand Up @@ -117,7 +118,7 @@ describe('Redwood Route detection', () => {
// interested in
.map(({ name, path }) => ({ name, path }))

expect(prerenderRoutes.length).toBe(5)
expect(prerenderRoutes.length).toBe(6)
expect(prerenderRoutes).toContainEqual({ name: 'home', path: '/' })
expect(prerenderRoutes).toContainEqual({
name: 'typescriptPage',
Expand All @@ -129,6 +130,7 @@ describe('Redwood Route detection', () => {
})
expect(prerenderRoutes).toContainEqual({ name: 'fooPage', path: '/foo' })
expect(prerenderRoutes).toContainEqual({ name: 'barPage', path: '/bar' })
expect(prerenderRoutes).toContainEqual({ name: 'privatePage', path: '/private-page' })
})
})

Expand Down

0 comments on commit 3e1d823

Please sign in to comment.