mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
20fe65ce41
Fixes #5845 Implement tslint for core files **What is this?** Implements tslint for both next and next-server, but keeps standardjs/eslint for the .js files that are still there, we're gradually migrating to Typescript. **How does it work?** Before every commit (pre-commit) we execute the following `tslint` command: `tslint -c tslint.json 'packages/**/*.ts` **TSLint Rules** In order to avoid as much changes as possible I marked some rules as false. This way we can improve the linter but making sure this step will not break things. (see tslint.json) **Note** After merging this PR, you'll need to update your dependencies since it adds tslint to package.json
34 lines
939 B
TypeScript
34 lines
939 B
TypeScript
import {join} from 'path'
|
|
import {PAGES_MANIFEST, SERVER_DIRECTORY} from 'next-server/constants'
|
|
import { normalizePagePath } from './normalize-page-path'
|
|
|
|
export function pageNotFoundError(page: string): Error {
|
|
const err: any = new Error(`Cannot find module for page: ${page}`)
|
|
err.code = 'ENOENT'
|
|
return err
|
|
}
|
|
|
|
export function getPagePath(page: string, distDir: string): string {
|
|
const serverBuildPath = join(distDir, SERVER_DIRECTORY)
|
|
const pagesManifest = require(join(serverBuildPath, PAGES_MANIFEST))
|
|
|
|
try {
|
|
page = normalizePagePath(page)
|
|
} catch (err) {
|
|
// tslint:disable-next-line
|
|
console.error(err)
|
|
throw pageNotFoundError(page)
|
|
}
|
|
|
|
if (!pagesManifest[page]) {
|
|
throw pageNotFoundError(page)
|
|
}
|
|
|
|
return join(serverBuildPath, pagesManifest[page])
|
|
}
|
|
|
|
export function requirePage(page: string, distDir: string): any {
|
|
const pagePath = getPagePath(page, distDir)
|
|
return require(pagePath)
|
|
}
|