All Downloads are FREE. Search and download functionalities are using the official Maven repository.

rs.runtime.gears-frontend.0.79.2.source-code.index.tsx Maven / Gradle / Ivy

import { BrowserRouter, HashRouter } from 'react-router-dom'
import { createRoot } from 'react-dom/client'
import { ApolloClient, InMemoryCache, ApolloProvider, from, DefaultOptions, ApolloLink } from '@apollo/client'
import { setContext } from '@apollo/client/link/context'
import { InMemoryCacheConfig } from '@apollo/client/cache/inmemory/types'
import createUploadLink from 'apollo-upload-client/createUploadLink.mjs'

import App from './App'
import { authLink, AuthProvider } from './authentication/main'
import { env } from './utils/utils'
import * as serviceWorker from './utils/serviceWorker'
import i18n from './utils/i18n'
import { ENABLE_HTML } from 'components/render/RenderValue'
import { SERVER } from 'helpers/runtime'

const NAME        = env('NAME')
const VERSION     = env('VERSION')
const TITLE       = env('TITLE')
const THEME       = env('THEME')
const AUTH_MODE   = env('AUTH_MODE')
const ROUTER_MODE = env('ROUTER_MODE')

console.log(`${NAME} ${VERSION} with TITLE=${TITLE}, ENABLE_HTML=${ENABLE_HTML}, THEME=${THEME}, SERVER=${SERVER}, AUTH_MODE=${AUTH_MODE}, ROUTER_MODE=${ROUTER_MODE}`)
console.debug('i18n', i18n)
window.document.title = TITLE

// see https://medium.com/@galen.corey/understanding-apollo-fetch-policies-705b5ad71980
const mergePolicy: InMemoryCacheConfig = {}
const disableCache = true
const disableCacheOpts: DefaultOptions = {
  watchQuery: { fetchPolicy: 'network-only' },
  query: { fetchPolicy: 'network-only' },
}

const getRouter = (mode: string) => {
  switch (mode.toLowerCase()) {
    case 'browser': return BrowserRouter
    case 'hash':    return HashRouter
    default:        throw new Error('Invalid router mode: ' + mode)
  }
}

// store miscellaneous information in request headers, such as the user's timezone
const miscLink = setContext((_, { headers }) => {
  const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone
  return { headers: { ...headers, "X-User-TimeZone": timeZone } }
})

const uploadLink: ApolloLink = createUploadLink({ uri: SERVER + 'graphql'})

const client     = new ApolloClient({
  link: from([authLink, miscLink, uploadLink]),
  cache: new InMemoryCache(mergePolicy),
  defaultOptions: disableCache ? disableCacheOpts : {},
})
const Router = getRouter(ROUTER_MODE)

// @ts-ignore
const root = createRoot(document.getElementById('root'))
root.render(
  
    
      {/**/}
        
          
        
      {/**/}
    
  
)

serviceWorker.unregister()




© 2015 - 2024 Weber Informatics LLC | Privacy Policy