loader.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import templateWithHoc from './templateWithHoc';
  2. import templateWithLoader from './templateWithLoader';
  3. import { clearCommentsRgx, getDefaultAppJs, hasExportName, hasHOC, isPageToIgnore, } from './utils';
  4. export default function loader(rawCode) {
  5. var _a = this.query, hasGetInitialPropsOnAppJs = _a.hasGetInitialPropsOnAppJs, hasAppJs = _a.hasAppJs, extensionsRgx = _a.extensionsRgx, pagesPath = _a.pagesPath, hasLoadLocaleFrom = _a.hasLoadLocaleFrom, revalidate = _a.revalidate;
  6. var normalizedPagesPath = pagesPath.replace(/\\/g, '/');
  7. var normalizedResourcePath = this.resourcePath.replace(/\\/g, '/');
  8. if (normalizedResourcePath.includes('node_modules/next/dist/pages/_app')) {
  9. if (hasAppJs)
  10. return rawCode;
  11. return getDefaultAppJs(hasLoadLocaleFrom);
  12. }
  13. if (!normalizedResourcePath.startsWith(normalizedPagesPath))
  14. return rawCode;
  15. var page = normalizedResourcePath.replace(normalizedPagesPath, '/');
  16. var pageNoExt = page.replace(extensionsRgx, '');
  17. var code = rawCode.replace(clearCommentsRgx, '');
  18. var typescript = page.endsWith('.ts') || page.endsWith('.tsx');
  19. if (!code.includes('export default'))
  20. return rawCode;
  21. if (code.match(/export *\w* *(__N_SSP|__N_SSG) *=/)) {
  22. return rawCode;
  23. }
  24. if (hasGetInitialPropsOnAppJs) {
  25. return pageNoExt === '/_app'
  26. ? templateWithHoc(rawCode, { typescript: typescript, hasLoadLocaleFrom: hasLoadLocaleFrom })
  27. : rawCode;
  28. }
  29. if (pageNoExt === '/_app') {
  30. return templateWithHoc(rawCode, {
  31. skipInitialProps: true,
  32. typescript: typescript,
  33. hasLoadLocaleFrom: hasLoadLocaleFrom,
  34. });
  35. }
  36. if (isPageToIgnore(page))
  37. return rawCode;
  38. var isWrapperWithExternalHOC = hasHOC(code);
  39. var isDynamicPage = page.includes('[');
  40. var isGetInitialProps = !!code.match(/\WgetInitialProps\W/g);
  41. var isGetServerSideProps = hasExportName(code, 'getServerSideProps');
  42. var isGetStaticPaths = hasExportName(code, 'getStaticPaths');
  43. var isGetStaticProps = hasExportName(code, 'getStaticProps');
  44. var hasLoader = isGetStaticProps || isGetServerSideProps || isGetInitialProps;
  45. if (isGetInitialProps || (!hasLoader && isWrapperWithExternalHOC)) {
  46. return templateWithHoc(rawCode, { typescript: typescript, hasLoadLocaleFrom: hasLoadLocaleFrom });
  47. }
  48. var loader = isGetServerSideProps || (!hasLoader && isDynamicPage && !isGetStaticPaths)
  49. ? 'getServerSideProps'
  50. : 'getStaticProps';
  51. return templateWithLoader(rawCode, {
  52. page: pageNoExt,
  53. typescript: typescript,
  54. loader: loader,
  55. hasLoader: hasLoader,
  56. hasLoadLocaleFrom: hasLoadLocaleFrom,
  57. revalidate: revalidate,
  58. });
  59. }