Skip to content

Commit 8e3b334

Browse files
committed
Add typedef for lazyLoad()
1 parent ddb990e commit 8e3b334

File tree

9 files changed

+45
-37
lines changed

9 files changed

+45
-37
lines changed
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
import { lazy } from 'react'
21
import { get } from 'lodash'
2+
import { ComponentType, lazy, LazyExoticComponent } from 'react'
3+
4+
export type LazyLoadedComponent = LazyExoticComponent<ComponentType<any>>
5+
6+
export type LazyLoadType = (
7+
moduleImport: () => Promise<any>,
8+
namedExport?: string
9+
) => LazyLoadedComponent
310

411
/**
512
* Utility wrapper around react's `lazy` method,
613
* it allows importing default and named exports from modules using the same unique method
714
* (while react's `lazy` method only allows to import default exports)
815
*/
9-
export const lazyLoad = (moduleImport: () => Promise<any>, namedExport: string = 'default') => (
16+
export const lazyLoad: LazyLoadType = (moduleImport: () => Promise<any>, namedExport: string = 'default') => (
1017
lazy(() => moduleImport().then(m => ({default: get(m, namedExport)})))
1118
)

src-ts/tools/dev-center/dev-center.routes.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { lazyLoad, PlatformRoute } from '../../lib'
1+
import { lazyLoad, LazyLoadedComponent, PlatformRoute } from '../../lib'
22

3-
const GettingStartedGuide = lazyLoad(() => import('./dev-center-pages/community-app/getting-started/GettingStartedGuide'))
4-
const DevCenterLandingPage = lazyLoad(() => import('./dev-center-pages/community-app/landing-page/DevCenterLandingPage'))
5-
const DevCenter = lazyLoad(() => import('./DevCenter'))
3+
const GettingStartedGuide: LazyLoadedComponent = lazyLoad(() => import('./dev-center-pages/community-app/getting-started/GettingStartedGuide'))
4+
const DevCenterLandingPage: LazyLoadedComponent = lazyLoad(() => import('./dev-center-pages/community-app/landing-page/DevCenterLandingPage'))
5+
const DevCenter: LazyLoadedComponent = lazyLoad(() => import('./DevCenter'))
66

77
export const toolTitle: string = 'Dev Center'
88

src-ts/tools/gamification-admin/gamification-admin.routes.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import { lazyLoad, PlatformRoute, UserRole } from '../../lib'
1+
import { lazyLoad, LazyLoadedComponent, PlatformRoute, UserRole } from '../../lib'
22

33
import { toolTitle } from './GamificationAdmin'
4-
const GamificationAdmin = lazyLoad(() => import('./GamificationAdmin'))
5-
const BadgeDetailPage = lazyLoad(() => import('./pages/badge-detail/BadgeDetailPage'))
6-
const BadgeListingPage = lazyLoad(() => import('./pages/badge-listing/BadgeListingPage'))
7-
const CreateBadgePage = lazyLoad(() => import('./pages/create-badge/CreateBadgePage'))
4+
5+
const GamificationAdmin: LazyLoadedComponent = lazyLoad(() => import('./GamificationAdmin'))
6+
const BadgeDetailPage: LazyLoadedComponent = lazyLoad(() => import('./pages/badge-detail/BadgeDetailPage'))
7+
const BadgeListingPage: LazyLoadedComponent = lazyLoad(() => import('./pages/badge-listing/BadgeListingPage'))
8+
const CreateBadgePage: LazyLoadedComponent = lazyLoad(() => import('./pages/create-badge/CreateBadgePage'))
89

910
export const baseDetailPath: string = '/badge-detail'
1011
export const createBadgePath: string = '/create-badge'

src-ts/tools/learn/learn.routes.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import { authUrlLogin, lazyLoad, PlatformRoute } from '../../lib'
1+
import { authUrlLogin, lazyLoad, LazyLoadedComponent, PlatformRoute } from '../../lib'
22

33
import { toolTitle } from './Learn'
44
import { LearnConfig } from './learn-config'
55

6-
const WelcomePage = lazyLoad(() => import('./welcome'), 'WelcomePage')
7-
const CourseDetailsPage = lazyLoad(() => import('./course-details'), 'CourseDetailsPage')
8-
const CourseCompletedPage = lazyLoad(() => import('./course-completed/'), 'CourseCompletedPage')
9-
const MyCertificate = lazyLoad(() => import('./course-certificate'), 'MyCertificate')
10-
const UserCertificate = lazyLoad(() => import('./course-certificate'), 'UserCertificate')
11-
const FreeCodeCamp = lazyLoad(() => import('./free-code-camp'), 'FreeCodeCamp')
12-
const MyLearning = lazyLoad(() => import('./my-learning'), 'MyLearning')
13-
const LandingLearn = lazyLoad(() => import('./Learn'))
6+
const WelcomePage: LazyLoadedComponent = lazyLoad(() => import('./welcome'), 'WelcomePage')
7+
const CourseDetailsPage: LazyLoadedComponent = lazyLoad(() => import('./course-details'), 'CourseDetailsPage')
8+
const CourseCompletedPage: LazyLoadedComponent = lazyLoad(() => import('./course-completed/'), 'CourseCompletedPage')
9+
const MyCertificate: LazyLoadedComponent = lazyLoad(() => import('./course-certificate'), 'MyCertificate')
10+
const UserCertificate: LazyLoadedComponent = lazyLoad(() => import('./course-certificate'), 'UserCertificate')
11+
const FreeCodeCamp: LazyLoadedComponent = lazyLoad(() => import('./free-code-camp'), 'FreeCodeCamp')
12+
const MyLearning: LazyLoadedComponent = lazyLoad(() => import('./my-learning'), 'MyLearning')
13+
const LandingLearn: LazyLoadedComponent = lazyLoad(() => import('./Learn'))
1414

1515
export enum LEARN_PATHS {
1616
certificate = '/certificate',

src-ts/tools/work/work.routes.tsx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
import { Navigate } from 'react-router-dom'
22

3-
import { contactSupportPath, lazyLoad, PlatformRoute } from '../../lib'
3+
import { contactSupportPath, lazyLoad, LazyLoadedComponent, PlatformRoute } from '../../lib'
44

55
import { dashboardTitle, toolTitle } from './Work'
66
import { Work, WorkIntakeFormRoutes, WorkStatus } from './work-lib'
77
import { WorkLoginPrompt } from './work-login-prompt'
88
import { intakeFormsTitle } from './work-self-service'
99

10-
const WorkComponent = lazyLoad(() => import('./Work'))
11-
const WorkNotLoggedIn = lazyLoad(() => import('./work-not-logged-in'), 'WorkNotLoggedIn')
12-
const BugHuntIntakeForm = lazyLoad(() => import('./work-self-service'), 'BugHuntIntakeForm')
13-
const IntakeForms = lazyLoad(() => import('./work-self-service'), 'IntakeForms')
14-
const Review = lazyLoad(() => import('./work-self-service'), 'Review')
15-
16-
const SaveAfterLogin = lazyLoad(() => import('./work-self-service/intake-forms/save-after-login/SaveAfterLogin'))
17-
const WorkTable = lazyLoad(() => import('./work-table'), 'WorkTable')
18-
const WorkThankYou = lazyLoad(() => import('./work-thank-you'), 'WorkThankYou')
10+
const WorkComponent: LazyLoadedComponent = lazyLoad(() => import('./Work'))
11+
const WorkNotLoggedIn: LazyLoadedComponent = lazyLoad(() => import('./work-not-logged-in'), 'WorkNotLoggedIn')
12+
const BugHuntIntakeForm: LazyLoadedComponent = lazyLoad(() => import('./work-self-service'), 'BugHuntIntakeForm')
13+
const IntakeForms: LazyLoadedComponent = lazyLoad(() => import('./work-self-service'), 'IntakeForms')
14+
const Review: LazyLoadedComponent = lazyLoad(() => import('./work-self-service'), 'Review')
15+
const SaveAfterLogin: LazyLoadedComponent = lazyLoad(() => import('./work-self-service/intake-forms/save-after-login/SaveAfterLogin'))
16+
const WorkTable: LazyLoadedComponent = lazyLoad(() => import('./work-table'), 'WorkTable')
17+
const WorkThankYou: LazyLoadedComponent = lazyLoad(() => import('./work-thank-you'), 'WorkThankYou')
1918

2019
export const rootRoute: string = '/work'
2120
export const selfServiceRootRoute: string = '/self-service'

src-ts/utils/contact-support/ContactSupport.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
formGetInputFields,
99
formOnReset
1010
} from '../../lib'
11+
1112
import { toolTitle } from './contact-support.routes'
1213

1314
const ContactSupport: FC<{}> = () => {

src-ts/utils/contact-support/contact-support.routes.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { contactSupportPath, lazyLoad, PlatformRoute } from '../../lib'
1+
import { contactSupportPath, lazyLoad, LazyLoadedComponent, PlatformRoute } from '../../lib'
22

33
export const toolTitle: string = 'Contact Support'
44

5-
const ContactSupport = lazyLoad(() => import('./ContactSupport'));
5+
const ContactSupport: LazyLoadedComponent = lazyLoad(() => import('./ContactSupport'))
66

77
export const contactSupportRoutes: Array<PlatformRoute> = [
88
{

src-ts/utils/home/home.routes.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { lazyLoad, PlatformRoute } from '../../lib'
1+
import { lazyLoad, LazyLoadedComponent, PlatformRoute } from '../../lib'
22

3-
const Home = lazyLoad(() => import('./Home'));
3+
const Home: LazyLoadedComponent = lazyLoad(() => import('./Home'))
44

55
export const homeRoute: string = ''
66

src-ts/utils/settings/settings.routes.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { ToolTitle } from '../../config'
2-
import { lazyLoad, PlatformRoute } from '../../lib'
2+
import { lazyLoad, LazyLoadedComponent, PlatformRoute } from '../../lib'
33

4-
const Account = lazyLoad(() => import('./account'), 'Account');
5-
const Settings = lazyLoad(() => import('./Settings'));
4+
const Account: LazyLoadedComponent = lazyLoad(() => import('./account'), 'Account')
5+
const Settings: LazyLoadedComponent = lazyLoad(() => import('./Settings'))
66

77
export const settingsRoutes: Array<PlatformRoute> = [
88
{

0 commit comments

Comments
 (0)