@zengenti/contensis-react-base 4.0.0-beta.56 → 4.0.0-beta.59

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/cjs/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sources":["../src/client/client.tsx"],"sourcesContent":["import 'isomorphic-fetch';\nimport React from 'react';\nimport { createRoot, hydrateRoot } from 'react-dom/client';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { unstable_HistoryRouter as HistoryRouter } from 'react-router-dom';\nimport { loadableReady } from '@loadable/component';\nimport { parse } from 'query-string';\nimport { CookiesProvider } from 'react-cookie';\n\nimport { createLocaleRoutes } from '~/i18n/routes';\nimport { actions } from '~/i18n/redux/slice';\nimport { selectVersionStatus } from '~/redux/selectors/version';\nimport { setVersionStatus } from '~/redux/actions/version';\nimport rootSaga from '~/redux/sagas';\nimport { browserHistory as history } from '~/redux/store/history';\nimport createStore from '~/redux/store/store';\n\nimport { setCurrentProject } from '~/routing/redux/actions';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport pickProject from '~/util/pickProject';\nimport { SSRContextProvider } from '~/util/SSRContext';\n\nimport { AppConfig, AppState } from '~/models';\n\ndeclare let window: typeof globalThis & {\n isDynamic: boolean;\n REDUX_DATA: AppState;\n __USE_HYDRATE__: boolean;\n};\n\ntype ReactAppProps = { routes: any; withEvents: any };\n\nclass ClientApp {\n constructor(ReactApp: React.ComponentType<ReactAppProps>, config: AppConfig) {\n const documentRoot = document.getElementById('root') as HTMLElement;\n\n const {\n i18n,\n // stateType = 'immutable', // changed default in v4\n stateType = 'js',\n routes,\n withReducers,\n withSagas,\n withEvents,\n } = config;\n\n // process locales in static routes for i18n\n const localeRoutes = createLocaleRoutes(routes);\n\n const GetClientJSX = store => {\n const ClientJsx = (\n <CookiesProvider>\n <ReduxProvider store={store}>\n <HistoryRouter\n history={history as any}\n future={{\n v7_relativeSplatPath: true,\n v7_startTransition: true,\n }}\n >\n <SSRContextProvider>\n <ReactApp routes={routes} withEvents={withEvents} />\n </SSRContextProvider>\n </HistoryRouter>\n </ReduxProvider>\n </CookiesProvider>\n );\n return ClientJsx;\n };\n\n const isDev = process.env.NODE_ENV !== 'production';\n // const isProduction = !isDev;\n const shouldHydrate = window.__USE_HYDRATE__ && !window.isDynamic;\n\n /**\n * Webpack HMR Setup.\n */\n const HMRRenderer = Component => {\n if (shouldHydrate)\n loadableReady(\n () => {\n hydrateRoot(documentRoot, Component, {\n onRecoverableError(error) {\n console.warn('Hydration warning:', error);\n },\n });\n },\n { namespace: 'modern' }\n );\n else createRoot(documentRoot).render(Component);\n };\n\n const hmr = store => {\n // webpack Hot Module Replacement API\n if (module.hot) {\n module.hot.accept(ReactApp as unknown as string, () => {\n // if you are using harmony modules ({modules:false})\n HMRRenderer(GetClientJSX(store));\n });\n }\n };\n\n const qs = parse(window.location.search);\n const versionStatus = deliveryApi.getClientSideVersionStatus();\n\n if (isDev || window.isDynamic || window.REDUX_DATA) {\n createStore(withReducers, window.REDUX_DATA, history, stateType).then(\n store => {\n const state = store.getState();\n const ssrVersionStatus = selectVersionStatus(state);\n if (!ssrVersionStatus)\n store.dispatch(setVersionStatus(versionStatus));\n\n if (isDev && window.REDUX_DATA)\n console.log('Hydrating from inline Redux');\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n if (i18n) {\n store.dispatch(\n actions.INIT_LOCALES({\n locales: {},\n // Keep a record of the locale routes in Redux\n // so we can navigate between them when switching language\n routes: localeRoutes,\n ...i18n,\n })\n );\n }\n\n delete (window as any).REDUX_DATA;\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n }\n );\n } else {\n fetch(`${window.location.pathname}?redux=true`)\n .then(response => response.json())\n .then(data => {\n const ssRedux = JSON.parse(data);\n createStore(withReducers, ssRedux, history, stateType).then(store => {\n store.dispatch(setVersionStatus(versionStatus));\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n });\n });\n }\n }\n}\n\nexport default ClientApp;\n"],"names":["ClientApp","constructor","ReactApp","config","documentRoot","document","getElementById","i18n","stateType","routes","withReducers","withSagas","withEvents","localeRoutes","createLocaleRoutes","GetClientJSX","store","ClientJsx","React","createElement","CookiesProvider","ReduxProvider","HistoryRouter","history","future","v7_relativeSplatPath","v7_startTransition","SSRContextProvider","isDev","process","env","NODE_ENV","shouldHydrate","window","__USE_HYDRATE__","isDynamic","HMRRenderer","Component","loadableReady","hydrateRoot","onRecoverableError","error","console","warn","namespace","createRoot","render","hmr","module","hot","accept","qs","parse","location","search","versionStatus","deliveryApi","getClientSideVersionStatus","REDUX_DATA","createStore","then","state","getState","ssrVersionStatus","selectVersionStatus","dispatch","setVersionStatus","log","runSaga","rootSaga","setCurrentProject","pickProject","hostname","actions","INIT_LOCALES","locales","fetch","pathname","response","json","data","ssRedux","JSON"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sources":["../src/client/client.tsx"],"sourcesContent":["import 'isomorphic-fetch';\nimport React from 'react';\nimport { createRoot, hydrateRoot } from 'react-dom/client';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { unstable_HistoryRouter as HistoryRouter } from 'react-router-dom';\nimport { loadableReady } from '@loadable/component';\nimport { parse } from 'query-string';\nimport { CookiesProvider } from 'react-cookie';\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport { createLocaleRoutes } from '~/i18n/routes';\nimport { actions } from '~/i18n/redux/slice';\nimport { selectVersionStatus } from '~/redux/selectors/version';\nimport { setVersionStatus } from '~/redux/actions/version';\nimport rootSaga from '~/redux/sagas';\nimport { browserHistory as history } from '~/redux/store/history';\nimport createStore from '~/redux/store/store';\n\nimport { setCurrentProject } from '~/routing/redux/actions';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport pickProject from '~/util/pickProject';\nimport { SSRContextProvider } from '~/util/SSRContext';\n\nimport { AppConfig, AppState } from '~/models';\n\ndeclare let window: typeof globalThis & {\n isDynamic: boolean;\n REDUX_DATA: AppState;\n __USE_HYDRATE__: boolean;\n};\n\ntype ReactAppProps = { routes: any; withEvents: any };\n\nclass ClientApp {\n constructor(ReactApp: React.ComponentType<ReactAppProps>, config: AppConfig) {\n const documentRoot = document.getElementById('root') as HTMLElement;\n\n const {\n i18n,\n // stateType = 'immutable', // changed default in v4\n stateType = 'js',\n routes,\n withReducers,\n withSagas,\n withEvents,\n } = config;\n\n // process locales in static routes for i18n\n const localeRoutes = createLocaleRoutes(routes);\n\n const GetClientJSX = store => {\n const ClientJsx = (\n <HelmetProvider>\n <CookiesProvider>\n <ReduxProvider store={store}>\n <HistoryRouter\n history={history as any}\n future={{\n v7_relativeSplatPath: true,\n v7_startTransition: true,\n }}\n >\n <SSRContextProvider>\n <ReactApp routes={routes} withEvents={withEvents} />\n </SSRContextProvider>\n </HistoryRouter>\n </ReduxProvider>\n </CookiesProvider>\n </HelmetProvider>\n );\n return ClientJsx;\n };\n\n const isDev = process.env.NODE_ENV !== 'production';\n // const isProduction = !isDev;\n const shouldHydrate = window.__USE_HYDRATE__ && !window.isDynamic;\n\n /**\n * Webpack HMR Setup.\n */\n const HMRRenderer = Component => {\n if (shouldHydrate)\n loadableReady(\n () => {\n hydrateRoot(documentRoot, Component, {\n onRecoverableError(error) {\n console.warn('Hydration warning:', error);\n },\n });\n },\n { namespace: 'modern' }\n );\n else createRoot(documentRoot).render(Component);\n };\n\n const hmr = store => {\n // webpack Hot Module Replacement API\n if (module.hot) {\n module.hot.accept(ReactApp as unknown as string, () => {\n // if you are using harmony modules ({modules:false})\n HMRRenderer(GetClientJSX(store));\n });\n }\n };\n\n const qs = parse(window.location.search);\n const versionStatus = deliveryApi.getClientSideVersionStatus();\n\n if (isDev || window.isDynamic || window.REDUX_DATA) {\n createStore(withReducers, window.REDUX_DATA, history, stateType).then(\n store => {\n const state = store.getState();\n const ssrVersionStatus = selectVersionStatus(state);\n if (!ssrVersionStatus)\n store.dispatch(setVersionStatus(versionStatus));\n\n if (isDev && window.REDUX_DATA)\n console.log('Hydrating from inline Redux');\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n if (i18n) {\n store.dispatch(\n actions.INIT_LOCALES({\n locales: {},\n // Keep a record of the locale routes in Redux\n // so we can navigate between them when switching language\n routes: localeRoutes,\n ...i18n,\n })\n );\n }\n\n delete (window as any).REDUX_DATA;\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n }\n );\n } else {\n fetch(`${window.location.pathname}?redux=true`)\n .then(response => response.json())\n .then(data => {\n const ssRedux = JSON.parse(data);\n createStore(withReducers, ssRedux, history, stateType).then(store => {\n store.dispatch(setVersionStatus(versionStatus));\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n });\n });\n }\n }\n}\n\nexport default ClientApp;\n"],"names":["ClientApp","constructor","ReactApp","config","documentRoot","document","getElementById","i18n","stateType","routes","withReducers","withSagas","withEvents","localeRoutes","createLocaleRoutes","GetClientJSX","store","ClientJsx","React","createElement","HelmetProvider","CookiesProvider","ReduxProvider","HistoryRouter","history","future","v7_relativeSplatPath","v7_startTransition","SSRContextProvider","isDev","process","env","NODE_ENV","shouldHydrate","window","__USE_HYDRATE__","isDynamic","HMRRenderer","Component","loadableReady","hydrateRoot","onRecoverableError","error","console","warn","namespace","createRoot","render","hmr","module","hot","accept","qs","parse","location","search","versionStatus","deliveryApi","getClientSideVersionStatus","REDUX_DATA","createStore","then","state","getState","ssrVersionStatus","selectVersionStatus","dispatch","setVersionStatus","log","runSaga","rootSaga","setCurrentProject","pickProject","hostname","actions","INIT_LOCALES","locales","fetch","pathname","response","json","data","ssRedux","JSON"],"mappings":"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"}
@@ -32,7 +32,7 @@ var lodash = require('lodash');
32
32
  var lodashClean = require('lodash-clean');
33
33
  var CookieHelper_class = require('./CookieHelper.class-Det3qfdU.js');
34
34
  var cookiesMiddleware = require('universal-cookie-express');
35
- var App = require('./App-C5hfqiyz.js');
35
+ var App = require('./App-Dr56ZsQj.js');
36
36
  var store = require('./store-Dn7vP6G0.js');
37
37
  var version = require('./version-2FamXHhj.js');
38
38
  var selectors = require('./selectors-BrxJ8-F8.js');
@@ -42,6 +42,7 @@ var server$2 = require('@loadable/server');
42
42
  var chalk = require('chalk');
43
43
  var minifyCssString = require('minify-css-string');
44
44
  var reactCookie = require('react-cookie');
45
+ var reactHelmetAsync = require('react-helmet-async');
45
46
  var server$3 = require('react-router-dom/server');
46
47
  var SSRContext = require('./SSRContext-DotLlTQc.js');
47
48
  require('./VersionInfo-zFPsvS8q.js');
@@ -662,6 +663,7 @@ const servers$1 = SERVERS; /* global SERVERS */
662
663
  const project = PROJECT; /* global PROJECT */
663
664
  const alias$1 = ALIAS; /* global ALIAS */
664
665
  const deliveryApiHostname = urls.url(alias$1, project).api;
666
+ const proxyTimeoutMs = 45_000;
665
667
  const assetProxy = httpProxy__default.default.createProxyServer();
666
668
  const deliveryProxy = httpProxy__default.default.createProxyServer();
667
669
  const reverseProxies = (app, reverseProxyPaths = []) => {
@@ -669,15 +671,17 @@ const reverseProxies = (app, reverseProxyPaths = []) => {
669
671
  app.all(reverseProxyPaths.map(proxyPath =>
670
672
  // Patch to update paths for express v5
671
673
  proxyPath.endsWith('/*') ? `${proxyPath.slice(0, -2)}/{*splat}` : proxyPath.endsWith('/**') ? `${proxyPath.slice(0, -3)}/{*splat}` : proxyPath), (req, res) => {
672
- const target = req.hostname.indexOf('preview-') || req.hostname.indexOf('preview.') || req.hostname === 'localhost' ? servers$1.previewIis || servers$1.iis : servers$1.iis;
674
+ const target = req.hostname.includes('preview-') || req.hostname.includes('preview.') || req.hostname === 'localhost' ? servers$1.previewIis || servers$1.iis : servers$1.iis;
673
675
  assetProxy.web(req, res, {
674
676
  target,
675
- changeOrigin: true
676
- });
677
- assetProxy.on('error', e => {
678
- console.log(`Proxy Request for ${req.path} HostName:${req.hostname} failed with ${e}`);
677
+ changeOrigin: true,
678
+ proxyTimeout: proxyTimeoutMs,
679
+ timeout: proxyTimeoutMs
679
680
  });
680
681
  });
682
+ assetProxy.on('error', (e, req) => {
683
+ console.log(`Proxy request for ${req.url} HostName:${req.headers.host} failed with ${e}`);
684
+ });
681
685
  };
682
686
  const deliveryApiProxy = (apiProxy, app) => {
683
687
  // This is just here to stop cors requests on localhost. In Production this is mapped using varnish.
@@ -685,12 +689,14 @@ const deliveryApiProxy = (apiProxy, app) => {
685
689
  console.log(`Proxying api request to ${servers$1.alias}`);
686
690
  apiProxy.web(req, res, {
687
691
  target: deliveryApiHostname,
688
- changeOrigin: true
689
- });
690
- apiProxy.on('error', e => {
691
- console.log(`Proxy request for ${req.path} HostName:${req.hostname} failed with ${e}`);
692
+ changeOrigin: true,
693
+ proxyTimeout: proxyTimeoutMs,
694
+ timeout: proxyTimeoutMs
692
695
  });
693
696
  });
697
+ apiProxy.on('error', (e, req) => {
698
+ console.log(`Proxy request for ${req.url} HostName:${req.headers.host} failed with ${e}`);
699
+ });
694
700
  };
695
701
 
696
702
  const CacheDuration = {
@@ -1219,7 +1225,9 @@ const ssrJsxProducer = (ReactApp, {
1219
1225
  var _providers$styledComp;
1220
1226
  // Recast ChunkExtractorManager to avoid TS error `Property 'children' does not exist on type...`
1221
1227
  const ChunkExtractor = server$2.ChunkExtractorManager;
1222
- const jsx = /*#__PURE__*/React__default.default.createElement(ChunkExtractor, {
1228
+ const jsx = /*#__PURE__*/React__default.default.createElement(reactHelmetAsync.HelmetProvider, {
1229
+ context: providers.helmet
1230
+ }, /*#__PURE__*/React__default.default.createElement(ChunkExtractor, {
1223
1231
  extractor: providers.loadable.extractor
1224
1232
  }, /*#__PURE__*/React__default.default.createElement(reactCookie.CookiesProvider, {
1225
1233
  cookies: providers.cookies
@@ -1241,7 +1249,7 @@ const ssrJsxProducer = (ReactApp, {
1241
1249
  }, /*#__PURE__*/React__default.default.createElement(ReactApp, {
1242
1250
  routes: props.routes,
1243
1251
  withEvents: props.withEvents
1244
- })))))));
1252
+ }))))))));
1245
1253
 
1246
1254
  // Wrap the JSX in a StyleSheetManager if a ServerStyleSheet is provided
1247
1255
  return !((_providers$styledComp = providers.styledComponents) !== null && _providers$styledComp !== void 0 && _providers$styledComp.sheet) ? jsx : providers.styledComponents.sheet.collectStyles(jsx);
@@ -1361,12 +1369,17 @@ const webApp = (app, ReactApp, config) => {
1361
1369
  // and read back any context props set by the ReactApp
1362
1370
  const context = {};
1363
1371
 
1372
+ // Per-request helmet context object — populated by HelmetProvider during renderToString
1373
+ // Using a fresh object per request ensures thread safety under concurrent SSR requests
1374
+ const helmetContext = {};
1375
+
1364
1376
  // Amalgamate all props for the various Providers we wrap the ReactApp with
1365
1377
  const jsxProviderProps = {
1366
1378
  loadable: {
1367
1379
  extractor: loadableExtractor.commonLoadableExtractor
1368
1380
  },
1369
1381
  cookies: ssrCookies,
1382
+ helmet: helmetContext,
1370
1383
  redux: store$1,
1371
1384
  httpContext: context,
1372
1385
  router: {
@@ -1483,15 +1496,23 @@ const webApp = (app, ReactApp, config) => {
1483
1496
  const html = server$1.renderToString(styledJsx);
1484
1497
  // Helmet.renderStatic() has to be called synchronously immediately after calling renderToString()
1485
1498
  // as it is not thread-safe (or specifically scoped to only this request)
1499
+ // TODO: deprecate `react-helmet`
1486
1500
  const helmet = reactHelmet.Helmet.renderStatic();
1487
1501
 
1502
+ // helmetContext is populated synchronously by HelmetProvider during renderToString()
1503
+ // It is scoped per-request via the helmetContext object, making this thread-safe
1504
+ // under concurrent SSR requests (unlike the previous Helmet.renderStatic() global singleton)
1505
+ const {
1506
+ helmet: helmetAsync
1507
+ } = helmetContext;
1508
+
1488
1509
  // Because we have had to call renderToString() here to reliably gather all helmet metadata
1489
1510
  // We could potentially call sheet.getStyleTags() here too and avoid piping a react-rendered
1490
1511
  // stream to a second stream to inject styled-components CSS
1491
1512
 
1492
- const htmlAttributes = helmet.htmlAttributes.toString();
1493
- let title = helmet.title.toString();
1494
- const metadata = helmet.meta.toString().concat(helmet.base.toString()).concat(helmet.link.toString()).concat(helmet.script.toString()).concat(helmet.noscript.toString());
1513
+ const htmlAttributes = helmetAsync.htmlAttributes.toString() || helmet.htmlAttributes.toString();
1514
+ let title = helmet.title.toString().includes('><') ? helmetAsync.title.toString() : helmet.title.toString();
1515
+ const metadata = helmetAsync.meta.toString().concat(helmetAsync.base.toString()).concat(helmetAsync.priority.toString()).concat(helmetAsync.link.toString()).concat(helmetAsync.script.toString()).concat(helmetAsync.noscript.toString()).concat(helmet.meta.toString()).concat(helmet.base.toString()).concat(helmet.link.toString()).concat(helmet.script.toString()).concat(helmet.noscript.toString());
1495
1516
  try {
1496
1517
  /**
1497
1518
  * Loads all page assets into the provided templateHTML