@entur-partner/app-shell 4.0.1 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AppShell.d.ts +3 -3
- package/dist/app-shell.cjs.development.js +345 -523
- package/dist/app-shell.cjs.development.js.map +1 -1
- package/dist/app-shell.cjs.production.min.js +1 -1
- package/dist/app-shell.cjs.production.min.js.map +1 -1
- package/dist/app-shell.esm.js +346 -523
- package/dist/app-shell.esm.js.map +1 -1
- package/package.json +7 -5
- package/dist/Auth.d.ts +0 -21
- package/dist/authReducer.d.ts +0 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.esm.js","sources":["../src/authReducer.tsx","../src/Auth.tsx","../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx"],"sourcesContent":["import { User } from '@entur-partner/micro-frontend';\n\nexport type AuthStatus =\n | 'AUTHENTICATING'\n | 'AUTHENTICATED'\n | 'NOT_AUTHENTICATED'\n | 'ERROR';\n\nexport type AuthState =\n | {\n status: AuthStatus;\n user?: User;\n error?: Error;\n }\n | {\n status: 'AUTHENTICATED';\n user: User;\n }\n | {\n status: 'ERROR';\n error: Error;\n };\n\ntype AuthEvent =\n | {\n type: 'AUTHENTICATED';\n data: {\n user: User;\n };\n }\n | {\n type: 'LOGOUT';\n }\n | {\n type: 'ERROR';\n error: Error;\n }\n | {\n type: 'NOT_AUTHENTICATED';\n };\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\nexport function authReducer(state: AuthState, event: AuthEvent): AuthState {\n switch (event.type) {\n case 'AUTHENTICATED':\n return {\n status: 'AUTHENTICATED',\n user: event.data.user,\n };\n case 'LOGOUT':\n return initialState;\n case 'ERROR':\n return {\n error: event.error,\n status: 'ERROR',\n };\n case 'NOT_AUTHENTICATED':\n return {\n ...state,\n status: 'NOT_AUTHENTICATED',\n };\n default:\n return state;\n }\n}\n","import React, { FC, useState, useEffect, useContext, useReducer } from 'react';\nimport createAuth0Client, {\n Auth0ClientOptions,\n Auth0Client,\n GetTokenSilentlyOptions,\n} from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { authReducer, AuthState, AuthStatus } from './authReducer';\nimport { Auth0User, DecorateUserFn } from './UserTypes';\n\nconst POST_LOGIN_ROUTE_KEY = '@entur-partner:post-login-route';\nconst LOGIN_LAST_RETRY = '@entur-partner:last-login-retry';\n\nconst redirect = (pathname = '/') =>\n window.history.replaceState({}, document.title, pathname); // TODO: replace with react-router history\n\ninterface AuthContextType {\n status: AuthStatus;\n user?: User;\n error?: Error;\n logout: () => void;\n login: (redirectUri?: string) => void;\n getToken: () => Promise<string>;\n auth0Client?: Auth0Client;\n}\n\nexport const Auth0Context = React.createContext<AuthContextType | undefined>(\n undefined\n);\n\nexport const useAuth = () => {\n const auth = useContext(Auth0Context);\n assertIsDefined(\n auth,\n 'A `<Auth0Provider>` component needs to be higher up in the component hierarchy.'\n );\n return auth;\n};\n\nconst initialState: AuthState = {\n status: 'AUTHENTICATING',\n};\n\ninterface AuthProviderProps extends Auth0ClientOptions {\n decorateUser: DecorateUserFn;\n}\nexport const AuthProvider: FC<AuthProviderProps> = ({\n children,\n decorateUser,\n ...initOptions\n}) => {\n const [state, dispatch] = useReducer(authReducer, initialState);\n const [auth0Client, setAuth0] = useState<Auth0Client | undefined>();\n\n useEffect(() => {\n const initAuth0 = async () => {\n const client = await createAuth0Client(initOptions);\n setAuth0(client);\n\n if (window.location.search.includes('code=')) {\n await client.handleRedirectCallback();\n const route = localStorage.getItem(POST_LOGIN_ROUTE_KEY);\n localStorage.removeItem(POST_LOGIN_ROUTE_KEY);\n const postLoginRoute = route || '/';\n redirect(postLoginRoute);\n }\n\n const isAuthenticated = await client.isAuthenticated();\n\n if (isAuthenticated) {\n const auth0User = (await client.getUser()) as Auth0User;\n const token = await client.getTokenSilently();\n const user = await decorateUser(auth0User, token);\n\n dispatch({ type: 'AUTHENTICATED', data: { user } });\n } else {\n dispatch({ type: 'NOT_AUTHENTICATED' });\n }\n };\n\n initAuth0().catch(async (error) => {\n try {\n const lastRetryEpochSeconds = parseInt(\n localStorage.getItem(LOGIN_LAST_RETRY) ?? '0'\n );\n const nowEpochSeconds = Math.floor(Date.now() / 1000);\n const timeSinceLastRetry = nowEpochSeconds - lastRetryEpochSeconds;\n const minimumTimeForRetry = 120;\n\n // Has there been more than x seconds since last retry?\n if (timeSinceLastRetry >= minimumTimeForRetry) {\n localStorage.setItem(LOGIN_LAST_RETRY, nowEpochSeconds.toString());\n redirect('/');\n await initAuth0();\n } else {\n throw error;\n }\n } catch {\n dispatch({ type: 'ERROR', error });\n }\n });\n // eslint-disable-next-line\n }, []);\n\n const logout = () => {\n assertIsDefined(auth0Client);\n const { protocol, hostname, port } = window.location;\n auth0Client.logout({\n returnTo: `${protocol}//${hostname}:${port}`,\n });\n };\n\n const login = async (redirectUri = window.location.origin) => {\n assertIsDefined(auth0Client);\n\n const { location } = window;\n localStorage.setItem(\n POST_LOGIN_ROUTE_KEY,\n `${location.pathname}${location.search}`\n );\n auth0Client.loginWithRedirect({\n redirect_uri: redirectUri,\n });\n };\n\n const getToken = async (options?: GetTokenSilentlyOptions) => {\n assertIsDefined(auth0Client);\n return auth0Client.getTokenSilently(options);\n };\n\n return (\n <Auth0Context.Provider\n value={{\n ...state,\n auth0Client,\n logout,\n getToken,\n login,\n }}\n >\n {children}\n </Auth0Context.Provider>\n );\n};\n","import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect } from 'react';\nimport { Loader } from '@entur/loader';\nimport { BannerAlertBox } from '@entur/alert';\nimport { space } from '@entur/tokens';\nimport { Paragraph, Link, CodeText } from '@entur/typography';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\nimport { User } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Environment } from '@entur-partner/common';\n\nimport { AuthProvider, useAuth } from './Auth';\nimport { DecorateUserFn } from './UserTypes';\nimport { EnvironmentBanner } from './EnvironmentBanner';\n\nexport interface AppShellValues {\n logout: () => void;\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n redirectUri?: string;\n children: (options: AppShellValues) => ReactNode;\n}\n\nconst Login: FC<{ redirectUri?: string }> = ({ redirectUri }) => {\n const { login } = useAuth();\n useEffect(() => {\n login(redirectUri);\n }, [login, redirectUri]);\n return null;\n};\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, redirectUri }) => {\n const { status, user, error, logout, getToken } = useAuth();\n\n switch (status) {\n case 'NOT_AUTHENTICATED':\n return <Login redirectUri={redirectUri} />;\n case 'AUTHENTICATED':\n assertIsDefined(user);\n return (\n <>\n {children({\n user,\n logout,\n getToken,\n })}\n </>\n );\n case 'AUTHENTICATING':\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n case 'ERROR':\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the\n problem persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to\n get it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n default:\n return null;\n }\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n redirectUri,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <AuthProvider\n audience={audience}\n domain={domain}\n client_id={clientId}\n decorateUser={decorateUser}\n >\n <Authenticate redirectUri={redirectUri}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </AuthProvider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<Organisation[]>;\n\nexport interface Organisation {\n name: string;\n id: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n value: string;\n onChange: (id: string) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n value,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<Organisation[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: Organisation[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={language === 'nb' ? 'Organisasjon' : 'Organisation'}\n selectedOrganisationId={value}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n"],"names":["initialState","status","authReducer","state","event","type","user","data","error","_extends","POST_LOGIN_ROUTE_KEY","LOGIN_LAST_RETRY","redirect","pathname","window","history","replaceState","document","title","Auth0Context","React","createContext","undefined","useAuth","auth","useContext","assertIsDefined","AuthProvider","_ref","children","decorateUser","initOptions","_objectWithoutPropertiesLoose","_excluded","_useReducer","useReducer","dispatch","_useState","useState","auth0Client","setAuth0","useEffect","initAuth0","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","client","route","postLoginRoute","isAuthenticated","auth0User","token","wrap","_callee$","_context","prev","next","createAuth0Client","sent","location","search","includes","handleRedirectCallback","localStorage","getItem","removeItem","getUser","getTokenSilently","stop","apply","arguments","_ref3","_callee2","_localStorage$getItem","lastRetryEpochSeconds","nowEpochSeconds","timeSinceLastRetry","minimumTimeForRetry","_callee2$","_context2","parseInt","Math","floor","Date","now","setItem","toString","t0","_x","logout","_window$location","protocol","hostname","port","returnTo","login","_ref4","_callee3","redirectUri","_window","_callee3$","_context3","origin","loginWithRedirect","redirect_uri","_x2","getToken","_ref5","_callee4","options","_callee4$","_context4","abrupt","_x3","createElement","Provider","value","EnvironmentBanner","environment","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","Login","_useAuth","Authenticate","_useAuth2","Fragment","Loader","marginTop","space","extraLarge9","process","env","NODE_ENV","console","BannerAlertBox","variant","maxWidth","margin","Paragraph","Link","href","CodeText","AppShell","audience","domain","clientId","client_id","params","Environment","Production","isModifiedEvent","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","ex","preventDefault","defaultPrevented","button","MenuContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","set","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","_useOrganisationState","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","_useLanguageState","OrganisationsError","_Error","_inheritsLoose","_this","_len","length","args","Array","_key","call","concat","message","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","onChange","organisations","setOrganisations","_useLanguage","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-shell.esm.js","sources":["../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx"],"sourcesContent":["import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (error) {\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\n );\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<Organisation[]>;\n\nexport interface Organisation {\n name: string;\n id: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n value: string;\n onChange: (id: string) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n value,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<Organisation[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: Organisation[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={language === 'nb' ? 'Organisasjon' : 'Organisation'}\n selectedOrganisationId={value}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n"],"names":["EnvironmentBanner","_ref","environment","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","userLogout","logout","_window$location","window","location","protocol","hostname","port","logoutParams","returnTo","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","decoratedUser","wrap","_callee$","_context","prev","next","sent","t0","console","stop","apply","arguments","Loader","marginTop","space","extraLarge9","process","env","NODE_ENV","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","getToken","AppShell","_ref3","audience","domain","clientId","Auth0Provider","authorizationParams","redirect_uri","origin","params","Environment","Production","isModifiedEvent","event","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","_extends","ex","preventDefault","defaultPrevented","button","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useContext","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","Provider","value","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","setItem","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","_useOrganisationState","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","_useLanguageState","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_inheritsLoose","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","onChange","organisations","setOrganisations","_useLanguage","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","selectedOrganisationId"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur-partner/app-shell",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/app-shell.esm.js",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"lint": "dts lint"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
+
"@auth0/auth0-react": "^2.2.4",
|
|
26
27
|
"@entur/alert": "^0.11.0 || ^0.14.0 || ^0.15.0",
|
|
27
28
|
"@entur/layout": "^2.0.0",
|
|
28
29
|
"@entur/loader": "^0.4.0",
|
|
@@ -32,13 +33,14 @@
|
|
|
32
33
|
"react-dom": ">=16.8.0"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
|
-
"@auth0/auth0-
|
|
36
|
-
"@entur-partner/common": "^
|
|
36
|
+
"@auth0/auth0-react": "^2.2.4",
|
|
37
|
+
"@entur-partner/common": "^7.0.1",
|
|
37
38
|
"@entur-partner/micro-frontend": "^2.4.4",
|
|
38
39
|
"@entur-partner/util": "^1.2.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
|
-
"@entur-partner/permission-client-node": "2.3.2"
|
|
42
|
+
"@entur-partner/permission-client-node": "2.3.2",
|
|
43
|
+
"@types/auth0": "3.3.10"
|
|
42
44
|
},
|
|
43
45
|
"jest": {
|
|
44
46
|
"collectCoverageFrom": [
|
|
@@ -50,5 +52,5 @@
|
|
|
50
52
|
"reportFile": "jest-sonar-report.xml",
|
|
51
53
|
"indent": 4
|
|
52
54
|
},
|
|
53
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "73572058cb3c4e6ebaf5b253dd064d19e3b37701"
|
|
54
56
|
}
|
package/dist/Auth.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React, { FC } from 'react';
|
|
2
|
-
import { Auth0ClientOptions, Auth0Client } from '@auth0/auth0-spa-js';
|
|
3
|
-
import { User } from '@entur-partner/micro-frontend';
|
|
4
|
-
import { AuthStatus } from './authReducer';
|
|
5
|
-
import { DecorateUserFn } from './UserTypes';
|
|
6
|
-
interface AuthContextType {
|
|
7
|
-
status: AuthStatus;
|
|
8
|
-
user?: User;
|
|
9
|
-
error?: Error;
|
|
10
|
-
logout: () => void;
|
|
11
|
-
login: (redirectUri?: string) => void;
|
|
12
|
-
getToken: () => Promise<string>;
|
|
13
|
-
auth0Client?: Auth0Client;
|
|
14
|
-
}
|
|
15
|
-
export declare const Auth0Context: React.Context<AuthContextType | undefined>;
|
|
16
|
-
export declare const useAuth: () => AuthContextType;
|
|
17
|
-
interface AuthProviderProps extends Auth0ClientOptions {
|
|
18
|
-
decorateUser: DecorateUserFn;
|
|
19
|
-
}
|
|
20
|
-
export declare const AuthProvider: FC<AuthProviderProps>;
|
|
21
|
-
export {};
|
package/dist/authReducer.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { User } from '@entur-partner/micro-frontend';
|
|
2
|
-
export type AuthStatus = 'AUTHENTICATING' | 'AUTHENTICATED' | 'NOT_AUTHENTICATED' | 'ERROR';
|
|
3
|
-
export type AuthState = {
|
|
4
|
-
status: AuthStatus;
|
|
5
|
-
user?: User;
|
|
6
|
-
error?: Error;
|
|
7
|
-
} | {
|
|
8
|
-
status: 'AUTHENTICATED';
|
|
9
|
-
user: User;
|
|
10
|
-
} | {
|
|
11
|
-
status: 'ERROR';
|
|
12
|
-
error: Error;
|
|
13
|
-
};
|
|
14
|
-
type AuthEvent = {
|
|
15
|
-
type: 'AUTHENTICATED';
|
|
16
|
-
data: {
|
|
17
|
-
user: User;
|
|
18
|
-
};
|
|
19
|
-
} | {
|
|
20
|
-
type: 'LOGOUT';
|
|
21
|
-
} | {
|
|
22
|
-
type: 'ERROR';
|
|
23
|
-
error: Error;
|
|
24
|
-
} | {
|
|
25
|
-
type: 'NOT_AUTHENTICATED';
|
|
26
|
-
};
|
|
27
|
-
export declare function authReducer(state: AuthState, event: AuthEvent): AuthState;
|
|
28
|
-
export {};
|