@dr.pogodin/react-utils 1.12.7 → 1.13.0

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.
@@ -103,7 +103,10 @@ async function factory(webpackConfig, options) {
103
103
 
104
104
  server.use((0, _compression.default)());
105
105
  server.use((0, _helmet.default)({
106
- contentSecurityPolicy: false
106
+ contentSecurityPolicy: false,
107
+ crossOriginEmbedderPolicy: false,
108
+ crossOriginOpenerPolicy: false,
109
+ crossOriginResourcePolicy: false
107
110
  }));
108
111
 
109
112
  if (!options.noCsp) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/server.js"],"names":["defaultCspSettings","directives","helmet","contentSecurityPolicy","getDefaultDirectives","array","filter","item","push","getDefaultCspSettings","factory","webpackConfig","options","rendererOps","renderer","publicPath","output","server","beforeExpressJsSetup","logger","httpsRedirect","use","req","res","next","schema","headers","url","host","originalUrl","redirect","noCsp","nonce","cspNonce","cspSettings","cspSettingsHook","favicon","send","express","json","limit","urlencoded","extended","requestIp","mw","loggerMiddleware","token","clientIp","FORMAT","stream","write","info","bind","header","devMode","webpack","require","webpackDevMiddleware","webpackHotMiddleware","compiler","serverSideRender","static","path","onExpressJsSetup","ERRORS","NOT_FOUND","CODES","dontAttachDefaultErrorHandler","beforeExpressJsError","error","status","INTERNAL_SERVER_ERROR","serverSide","log","message","process","env","NODE_ENV"],"mappings":";;;;;;;;;;AAIA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AArBA;AACA;AACA;;AA0BA;AACA;AACA;AACA;AACA,MAAMA,kBAAkB,GAAG;AACzBC,EAAAA,UAAU,EAAE,uBACVC,gBAAOC,qBAAP,CAA6BC,oBAA7B,EADU,EAGV;AACA;AACA;AACA;AACCC,EAAAA,KAAD,IAAWA,KAAK,CAACC,MAAN,CAAcC,IAAD,IAAUA,IAAI,KAAK,QAAhC,CAPD;AADa,CAA3B;AAWAP,kBAAkB,CAACC,UAAnB,CAA8B,WAA9B,IAA6C,CAC3C,QAD2C,EAG3C;AACA;AACA,uBAL2C,CAA7C;AAOAD,kBAAkB,CAACC,UAAnB,CAA8B,YAA9B,EAA4CO,IAA5C,CAAiD,eAAjD,E,CAEA;AACA;AACA;;AACA,OAAOR,kBAAkB,CAACC,UAAnB,CAA8B,2BAA9B,CAAP;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASQ,qBAAT,GAAiC;AACtC,SAAO,uBAAUT,kBAAV,CAAP;AACD;;AAEc,eAAeU,OAAf,CAAuBC,aAAvB,EAAsCC,OAAtC,EAA+C;AAC5D,QAAMC,WAAW,GAAG,kBAAKD,OAAL,EAAc,CAChC,aADgC,EAEhC,cAFgC,EAGhC,SAHgC,EAIhC,cAJgC,EAKhC,OALgC,EAMhC,YANgC,EAOhC,uBAPgC,EAQhC,iBARgC,CAAd,CAApB;AAUA,QAAME,QAAQ,GAAG,uBAAgBH,aAAhB,EAA+BE,WAA/B,CAAjB;AACA,QAAM;AAAEE,IAAAA;AAAF,MAAiBJ,aAAa,CAACK,MAArC;AAEA,QAAMC,MAAM,GAAG,uBAAf;;AAEA,MAAIL,OAAO,CAACM,oBAAZ,EAAkC;AAChC,UAAMN,OAAO,CAACM,oBAAR,CAA6BD,MAA7B,CAAN;AACD;;AAEDA,EAAAA,MAAM,CAACE,MAAP,GAAgBP,OAAO,CAACO,MAAxB;;AAEA,MAAIP,OAAO,CAACQ,aAAZ,EAA2B;AACzBH,IAAAA,MAAM,CAACI,GAAP,CAAW,CAACC,GAAD,EAAMC,GAAN,EAAWC,IAAX,KAAoB;AAC7B,YAAMC,MAAM,GAAGH,GAAG,CAACI,OAAJ,CAAY,mBAAZ,CAAf;;AACA,UAAID,MAAM,KAAK,MAAf,EAAuB;AACrB,YAAIE,GAAG,GAAI,WAAUL,GAAG,CAACI,OAAJ,CAAYE,IAAK,EAAtC;AACA,YAAIN,GAAG,CAACO,WAAJ,KAAoB,GAAxB,EAA6BF,GAAG,IAAIL,GAAG,CAACO,WAAX;AAC7B,eAAON,GAAG,CAACO,QAAJ,CAAaH,GAAb,CAAP;AACD;;AACD,aAAOH,IAAI,EAAX;AACD,KARD;AASD;;AAEDP,EAAAA,MAAM,CAACI,GAAP,CAAW,2BAAX;AACAJ,EAAAA,MAAM,CAACI,GAAP,CAAW,qBAAO;AAAElB,IAAAA,qBAAqB,EAAE;AAAzB,GAAP,CAAX;;AAEA,MAAI,CAACS,OAAO,CAACmB,KAAb,EAAoB;AAClBd,IAAAA,MAAM,CAACI,GAAP,CAAW,CAACC,GAAD,EAAMC,GAAN,EAAWC,IAAX,KAAoB;AAC7BF,MAAAA,GAAG,CAACU,KAAJ,GAAY,eAAZ,CAD6B,CAG7B;AACA;;AACAV,MAAAA,GAAG,CAACW,QAAJ,GAAeX,GAAG,CAACU,KAAnB,CAL6B,CAO7B;AACA;;AACA,UAAIE,WAAW,GAAG,uBAAUlC,kBAAV,CAAlB;AACAkC,MAAAA,WAAW,CAACjC,UAAZ,CAAuB,YAAvB,EAAqCO,IAArC,CAA2C,UAASc,GAAG,CAACU,KAAM,GAA9D;;AACA,UAAIpB,OAAO,CAACuB,eAAZ,EAA6B;AAC3BD,QAAAA,WAAW,GAAGtB,OAAO,CAACuB,eAAR,CAAwBD,WAAxB,EAAqCZ,GAArC,CAAd;AACD;;AACDpB,sBAAOC,qBAAP,CAA6B+B,WAA7B,EAA0CZ,GAA1C,EAA+CC,GAA/C,EAAoDC,IAApD;AACD,KAfD;AAgBD;;AAED,MAAIZ,OAAO,CAACwB,OAAZ,EAAqB;AACnBnB,IAAAA,MAAM,CAACI,GAAP,CAAW,2BAAQT,OAAO,CAACwB,OAAhB,CAAX;AACD;;AAEDnB,EAAAA,MAAM,CAACI,GAAP,CAAW,aAAX,EAA0B,CAACC,GAAD,EAAMC,GAAN,KAAcA,GAAG,CAACc,IAAJ,CAAS,0BAAT,CAAxC;AAEApB,EAAAA,MAAM,CAACI,GAAP,CAAWiB,iBAAQC,IAAR,CAAa;AAAEC,IAAAA,KAAK,EAAE;AAAT,GAAb,CAAX;AACAvB,EAAAA,MAAM,CAACI,GAAP,CAAWiB,iBAAQG,UAAR,CAAmB;AAAEC,IAAAA,QAAQ,EAAE;AAAZ,GAAnB,CAAX;AACAzB,EAAAA,MAAM,CAACI,GAAP,CAAW,4BAAX;AACAJ,EAAAA,MAAM,CAACI,GAAP,CAAWsB,mBAAUC,EAAV,EAAX;;AAEAC,kBAAiBC,KAAjB,CAAuB,IAAvB,EAA8BxB,GAAD,IAASA,GAAG,CAACyB,QAA1C;;AACA,QAAMC,MAAM,GAAG,yFAAf;AACA/B,EAAAA,MAAM,CAACI,GAAP,CAAW,qBAAiB2B,MAAjB,EAAyB;AAClCC,IAAAA,MAAM,EAAE;AACNC,MAAAA,KAAK,EAAEtC,OAAO,CAACO,MAAR,CAAegC,IAAf,CAAoBC,IAApB,CAAyBxC,OAAO,CAACO,MAAjC;AADD;AAD0B,GAAzB,CAAX;AAMA;;AACAF,EAAAA,MAAM,CAACI,GAAP,CAAY,GAAEN,UAAW,mBAAzB,EAA6C,CAACO,GAAD,EAAMC,GAAN,EAAWC,IAAX,KAAoB;AAC/DD,IAAAA,GAAG,CAAC8B,MAAJ,CAAW,eAAX,EAA4B,UAA5B;AACA7B,IAAAA,IAAI;AACL,GAHD;AAKA;AACF;AACA;;AACE;;AACA;;AACA;;AACA,MAAIZ,OAAO,CAAC0C,OAAZ,EAAqB;AACnB,UAAMC,OAAO,GAAGC,OAAO,CAAC,SAAD,CAAvB;;AACA,UAAMC,oBAAoB,GAAGD,OAAO,CAAC,wBAAD,CAApC;;AACA,UAAME,oBAAoB,GAAGF,OAAO,CAAC,wBAAD,CAApC;;AACA,UAAMG,QAAQ,GAAGJ,OAAO,CAAC5C,aAAD,CAAxB;AACAM,IAAAA,MAAM,CAACI,GAAP,CAAWoC,oBAAoB,CAACE,QAAD,EAAW;AACxC5C,MAAAA,UADwC;AAExC6C,MAAAA,gBAAgB,EAAE;AAFsB,KAAX,CAA/B;AAIA3C,IAAAA,MAAM,CAACI,GAAP,CAAWqC,oBAAoB,CAACC,QAAD,CAA/B;AACD;AACD;;AACA;;AACA;;;AAEA1C,EAAAA,MAAM,CAACI,GAAP,CAAWN,UAAX,EAAuBuB,iBAAQuB,MAAR,CAAelD,aAAa,CAACK,MAAd,CAAqB8C,IAApC,CAAvB;;AAEA,MAAIlD,OAAO,CAACmD,gBAAZ,EAA8B;AAC5B,UAAMnD,OAAO,CAACmD,gBAAR,CAAyB9C,MAAzB,CAAN;AACD;;AACDA,EAAAA,MAAM,CAACI,GAAP,CAAWP,QAAX;AAEA;;AACAG,EAAAA,MAAM,CAACI,GAAP,CAAW,MAAM,kBAAK2C,eAAOC,SAAZ,EAAuBC,cAAMD,SAA7B,CAAjB;AAEA,MAAIE,6BAAJ;;AACA,MAAIvD,OAAO,CAACwD,oBAAZ,EAAkC;AAChCD,IAAAA,6BAA6B,GAAG,MAAMvD,OAAO,CAACwD,oBAAR,CAA6BnD,MAA7B,CAAtC;AACD;AAED;;;AACA,MAAI,CAACkD,6BAAL,EAAoC;AAClC;AACA;AACA;AACA;;AACA;AACAlD,IAAAA,MAAM,CAACI,GAAP,CAAW,CAACgD,KAAD,EAAQ/C,GAAR,EAAaC,GAAb,EAAkBC,IAAlB,KAA2B;AACtC;AACE,YAAM8C,MAAM,GAAGD,KAAK,CAACC,MAAN,IAAgBJ,cAAMK,qBAArC;AACA,YAAMC,UAAU,GAAGF,MAAM,IAAIJ,cAAMK,qBAAnC,CAHoC,CAKpC;;AACA3D,MAAAA,OAAO,CAACO,MAAR,CAAesD,GAAf,CAAmBD,UAAU,GAAG,OAAH,GAAa,OAA1C,EAAmDH,KAAnD;AAEA,UAAIK,OAAO,GAAGL,KAAK,CAACK,OAAN,IAAiB,6BAAgBJ,MAAhB,CAA/B;;AACA,UAAIE,UAAU,IAAIG,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA3C,EAAyD;AACvDH,QAAAA,OAAO,GAAGV,eAAOO,qBAAjB;AACD;;AAEDhD,MAAAA,GAAG,CAAC+C,MAAJ,CAAWA,MAAX,EAAmBjC,IAAnB,CAAwBqC,OAAxB;AACD,KAdD;AAeD;;AAED,SAAOzD,MAAP;AACD","sourcesContent":["/**\n * Creation of standard ExpressJS server for ReactJS apps.\n */\n\nimport {\n cloneDeep,\n mapValues,\n pick,\n} from 'lodash';\n\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport express from 'express';\nimport favicon from 'serve-favicon';\nimport helmet from 'helmet';\nimport loggerMiddleware from 'morgan';\nimport requestIp from 'request-ip';\nimport { v4 as uuid } from 'uuid';\n\nimport rendererFactory from './renderer';\n\nimport {\n CODES,\n ERRORS,\n fail,\n getErrorForCode,\n} from './utils/errors';\n\n/**\n * Default Content Security Policy settings.\n * @ignore\n */\nconst defaultCspSettings = {\n directives: mapValues(\n helmet.contentSecurityPolicy.getDefaultDirectives(),\n\n // 'https:' options (automatic re-write of insecure URLs to secure ones)\n // is removed to facilitate local development with HTTP server. In cloud\n // deployments we assume Apache or Nginx server in front of out app takes\n // care about such re-writes.\n (array) => array.filter((item) => item !== 'https:'),\n ),\n};\ndefaultCspSettings.directives['frame-src'] = [\n \"'self'\",\n\n // YouTube domain is whitelisted to allow <YouTubeVideo> component to work\n // out of box.\n 'https://*.youtube.com',\n];\ndefaultCspSettings.directives['script-src'].push(\"'unsafe-eval'\");\n\n// No need for automatic re-writes via Content Security Policy settings:\n// the forefront Apache or Nginx server is supposed to take care of this\n// in production cloud deployments.\ndelete defaultCspSettings.directives['upgrade-insecure-requests'];\n\n/**\n * @category Utilities\n * @func server/getDefaultCspSettings\n * @global\n * @desc\n * ```js\n * import { server } from '@dr.pogodin/react-utils';\n * const { getDefaultCspSettings } from '@dr.pogodin/react-utils';\n * ```\n * @return {{\n * directives: object\n * }} A deep copy of default CSP settings object used by `react-utils`,\n * with the exception of `nonce-xxx` clause in `script-src` directive,\n * which is added dynamically for each request.\n */\nexport function getDefaultCspSettings() {\n return cloneDeep(defaultCspSettings);\n}\n\nexport default async function factory(webpackConfig, options) {\n const rendererOps = pick(options, [\n 'Application',\n 'beforeRender',\n 'favicon',\n 'maxSsrRounds',\n 'noCsp',\n 'ssrTimeout',\n 'staticCacheController',\n 'staticCacheSize',\n ]);\n const renderer = rendererFactory(webpackConfig, rendererOps);\n const { publicPath } = webpackConfig.output;\n\n const server = express();\n\n if (options.beforeExpressJsSetup) {\n await options.beforeExpressJsSetup(server);\n }\n\n server.logger = options.logger;\n\n if (options.httpsRedirect) {\n server.use((req, res, next) => {\n const schema = req.headers['x-forwarded-proto'];\n if (schema === 'http') {\n let url = `https://${req.headers.host}`;\n if (req.originalUrl !== '/') url += req.originalUrl;\n return res.redirect(url);\n }\n return next();\n });\n }\n\n server.use(compression());\n server.use(helmet({ contentSecurityPolicy: false }));\n\n if (!options.noCsp) {\n server.use((req, res, next) => {\n req.nonce = uuid();\n\n // TODO: This is deprecated, but it is kept for now for backward\n // compatibility. Should be removed sometime later.\n req.cspNonce = req.nonce;\n\n // The deep clone is necessary here to ensure that default value can't be\n // mutated during request processing.\n let cspSettings = cloneDeep(defaultCspSettings);\n cspSettings.directives['script-src'].push(`'nonce-${req.nonce}'`);\n if (options.cspSettingsHook) {\n cspSettings = options.cspSettingsHook(cspSettings, req);\n }\n helmet.contentSecurityPolicy(cspSettings)(req, res, next);\n });\n }\n\n if (options.favicon) {\n server.use(favicon(options.favicon));\n }\n\n server.use('/robots.txt', (req, res) => res.send('User-agent: *\\nDisallow:'));\n\n server.use(express.json({ limit: '300kb' }));\n server.use(express.urlencoded({ extended: false }));\n server.use(cookieParser());\n server.use(requestIp.mw());\n\n loggerMiddleware.token('ip', (req) => req.clientIp);\n const FORMAT = ':ip > :status :method :url :response-time ms :res[content-length] :referrer :user-agent';\n server.use(loggerMiddleware(FORMAT, {\n stream: {\n write: options.logger.info.bind(options.logger),\n },\n }));\n\n /* Ensures no caching for the service worker script. */\n server.use(`${publicPath}service-worker.js`, (req, res, next) => {\n res.header('Cache-Control', 'no-cache');\n next();\n });\n\n /* Setup of Hot Module Reloading for development environment.\n * These dependencies are not used, nor installed for production use,\n * hence we should violate some import-related lint rules. */\n /* eslint-disable global-require */\n /* eslint-disable import/no-extraneous-dependencies */\n /* eslint-disable import/no-unresolved */\n if (options.devMode) {\n const webpack = require('webpack');\n const webpackDevMiddleware = require('webpack-dev-middleware');\n const webpackHotMiddleware = require('webpack-hot-middleware');\n const compiler = webpack(webpackConfig);\n server.use(webpackDevMiddleware(compiler, {\n publicPath,\n serverSideRender: true,\n }));\n server.use(webpackHotMiddleware(compiler));\n }\n /* eslint-enable global-require */\n /* eslint-enable import/no-extraneous-dependencies */\n /* eslint-enable import/no-unresolved */\n\n server.use(publicPath, express.static(webpackConfig.output.path));\n\n if (options.onExpressJsSetup) {\n await options.onExpressJsSetup(server);\n }\n server.use(renderer);\n\n /* Detects 404 errors, and forwards them to the error handler. */\n server.use(() => fail(ERRORS.NOT_FOUND, CODES.NOT_FOUND));\n\n let dontAttachDefaultErrorHandler;\n if (options.beforeExpressJsError) {\n dontAttachDefaultErrorHandler = await options.beforeExpressJsError(server);\n }\n\n /* Error handler. */\n if (!dontAttachDefaultErrorHandler) {\n // TODO: It is better to move the default error handler definition\n // to a stand-alone function at top-level, but the use of options.logger\n // prevents to do it without some extra refactoring. Should be done sometime\n // though.\n /* eslint-disable no-unused-vars */\n server.use((error, req, res, next) => {\n /* eslint-enable no-unused-vars */\n const status = error.status || CODES.INTERNAL_SERVER_ERROR;\n const serverSide = status >= CODES.INTERNAL_SERVER_ERROR;\n\n // Log server-side errors always, client-side at debug level only.\n options.logger.log(serverSide ? 'error' : 'debug', error);\n\n let message = error.message || getErrorForCode(status);\n if (serverSide && process.env.NODE_ENV === 'production') {\n message = ERRORS.INTERNAL_SERVER_ERROR;\n }\n\n res.status(status).send(message);\n });\n }\n\n return server;\n}\n"],"file":"server.js"}
1
+ {"version":3,"sources":["../../../src/server/server.js"],"names":["defaultCspSettings","directives","helmet","contentSecurityPolicy","getDefaultDirectives","array","filter","item","push","getDefaultCspSettings","factory","webpackConfig","options","rendererOps","renderer","publicPath","output","server","beforeExpressJsSetup","logger","httpsRedirect","use","req","res","next","schema","headers","url","host","originalUrl","redirect","crossOriginEmbedderPolicy","crossOriginOpenerPolicy","crossOriginResourcePolicy","noCsp","nonce","cspNonce","cspSettings","cspSettingsHook","favicon","send","express","json","limit","urlencoded","extended","requestIp","mw","loggerMiddleware","token","clientIp","FORMAT","stream","write","info","bind","header","devMode","webpack","require","webpackDevMiddleware","webpackHotMiddleware","compiler","serverSideRender","static","path","onExpressJsSetup","ERRORS","NOT_FOUND","CODES","dontAttachDefaultErrorHandler","beforeExpressJsError","error","status","INTERNAL_SERVER_ERROR","serverSide","log","message","process","env","NODE_ENV"],"mappings":"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","sourcesContent":["/**\n * Creation of standard ExpressJS server for ReactJS apps.\n */\n\nimport {\n cloneDeep,\n mapValues,\n pick,\n} from 'lodash';\n\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport express from 'express';\nimport favicon from 'serve-favicon';\nimport helmet from 'helmet';\nimport loggerMiddleware from 'morgan';\nimport requestIp from 'request-ip';\nimport { v4 as uuid } from 'uuid';\n\nimport rendererFactory from './renderer';\n\nimport {\n CODES,\n ERRORS,\n fail,\n getErrorForCode,\n} from './utils/errors';\n\n/**\n * Default Content Security Policy settings.\n * @ignore\n */\nconst defaultCspSettings = {\n directives: mapValues(\n helmet.contentSecurityPolicy.getDefaultDirectives(),\n\n // 'https:' options (automatic re-write of insecure URLs to secure ones)\n // is removed to facilitate local development with HTTP server. In cloud\n // deployments we assume Apache or Nginx server in front of out app takes\n // care about such re-writes.\n (array) => array.filter((item) => item !== 'https:'),\n ),\n};\ndefaultCspSettings.directives['frame-src'] = [\n \"'self'\",\n\n // YouTube domain is whitelisted to allow <YouTubeVideo> component to work\n // out of box.\n 'https://*.youtube.com',\n];\ndefaultCspSettings.directives['script-src'].push(\"'unsafe-eval'\");\n\n// No need for automatic re-writes via Content Security Policy settings:\n// the forefront Apache or Nginx server is supposed to take care of this\n// in production cloud deployments.\ndelete defaultCspSettings.directives['upgrade-insecure-requests'];\n\n/**\n * @category Utilities\n * @func server/getDefaultCspSettings\n * @global\n * @desc\n * ```js\n * import { server } from '@dr.pogodin/react-utils';\n * const { getDefaultCspSettings } from '@dr.pogodin/react-utils';\n * ```\n * @return {{\n * directives: object\n * }} A deep copy of default CSP settings object used by `react-utils`,\n * with the exception of `nonce-xxx` clause in `script-src` directive,\n * which is added dynamically for each request.\n */\nexport function getDefaultCspSettings() {\n return cloneDeep(defaultCspSettings);\n}\n\nexport default async function factory(webpackConfig, options) {\n const rendererOps = pick(options, [\n 'Application',\n 'beforeRender',\n 'favicon',\n 'maxSsrRounds',\n 'noCsp',\n 'ssrTimeout',\n 'staticCacheController',\n 'staticCacheSize',\n ]);\n const renderer = rendererFactory(webpackConfig, rendererOps);\n const { publicPath } = webpackConfig.output;\n\n const server = express();\n\n if (options.beforeExpressJsSetup) {\n await options.beforeExpressJsSetup(server);\n }\n\n server.logger = options.logger;\n\n if (options.httpsRedirect) {\n server.use((req, res, next) => {\n const schema = req.headers['x-forwarded-proto'];\n if (schema === 'http') {\n let url = `https://${req.headers.host}`;\n if (req.originalUrl !== '/') url += req.originalUrl;\n return res.redirect(url);\n }\n return next();\n });\n }\n\n server.use(compression());\n server.use(\n helmet({\n contentSecurityPolicy: false,\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n }),\n );\n\n if (!options.noCsp) {\n server.use((req, res, next) => {\n req.nonce = uuid();\n\n // TODO: This is deprecated, but it is kept for now for backward\n // compatibility. Should be removed sometime later.\n req.cspNonce = req.nonce;\n\n // The deep clone is necessary here to ensure that default value can't be\n // mutated during request processing.\n let cspSettings = cloneDeep(defaultCspSettings);\n cspSettings.directives['script-src'].push(`'nonce-${req.nonce}'`);\n if (options.cspSettingsHook) {\n cspSettings = options.cspSettingsHook(cspSettings, req);\n }\n helmet.contentSecurityPolicy(cspSettings)(req, res, next);\n });\n }\n\n if (options.favicon) {\n server.use(favicon(options.favicon));\n }\n\n server.use('/robots.txt', (req, res) => res.send('User-agent: *\\nDisallow:'));\n\n server.use(express.json({ limit: '300kb' }));\n server.use(express.urlencoded({ extended: false }));\n server.use(cookieParser());\n server.use(requestIp.mw());\n\n loggerMiddleware.token('ip', (req) => req.clientIp);\n const FORMAT = ':ip > :status :method :url :response-time ms :res[content-length] :referrer :user-agent';\n server.use(loggerMiddleware(FORMAT, {\n stream: {\n write: options.logger.info.bind(options.logger),\n },\n }));\n\n /* Ensures no caching for the service worker script. */\n server.use(`${publicPath}service-worker.js`, (req, res, next) => {\n res.header('Cache-Control', 'no-cache');\n next();\n });\n\n /* Setup of Hot Module Reloading for development environment.\n * These dependencies are not used, nor installed for production use,\n * hence we should violate some import-related lint rules. */\n /* eslint-disable global-require */\n /* eslint-disable import/no-extraneous-dependencies */\n /* eslint-disable import/no-unresolved */\n if (options.devMode) {\n const webpack = require('webpack');\n const webpackDevMiddleware = require('webpack-dev-middleware');\n const webpackHotMiddleware = require('webpack-hot-middleware');\n const compiler = webpack(webpackConfig);\n server.use(webpackDevMiddleware(compiler, {\n publicPath,\n serverSideRender: true,\n }));\n server.use(webpackHotMiddleware(compiler));\n }\n /* eslint-enable global-require */\n /* eslint-enable import/no-extraneous-dependencies */\n /* eslint-enable import/no-unresolved */\n\n server.use(publicPath, express.static(webpackConfig.output.path));\n\n if (options.onExpressJsSetup) {\n await options.onExpressJsSetup(server);\n }\n server.use(renderer);\n\n /* Detects 404 errors, and forwards them to the error handler. */\n server.use(() => fail(ERRORS.NOT_FOUND, CODES.NOT_FOUND));\n\n let dontAttachDefaultErrorHandler;\n if (options.beforeExpressJsError) {\n dontAttachDefaultErrorHandler = await options.beforeExpressJsError(server);\n }\n\n /* Error handler. */\n if (!dontAttachDefaultErrorHandler) {\n // TODO: It is better to move the default error handler definition\n // to a stand-alone function at top-level, but the use of options.logger\n // prevents to do it without some extra refactoring. Should be done sometime\n // though.\n /* eslint-disable no-unused-vars */\n server.use((error, req, res, next) => {\n /* eslint-enable no-unused-vars */\n const status = error.status || CODES.INTERNAL_SERVER_ERROR;\n const serverSide = status >= CODES.INTERNAL_SERVER_ERROR;\n\n // Log server-side errors always, client-side at debug level only.\n options.logger.log(serverSide ? 'error' : 'debug', error);\n\n let message = error.message || getErrorForCode(status);\n if (serverSide && process.env.NODE_ENV === 'production') {\n message = ERRORS.INTERNAL_SERVER_ERROR;\n }\n\n res.status(status).send(message);\n });\n }\n\n return server;\n}\n"],"file":"server.js"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Barrier = void 0;
7
+ exports.newBarrier = newBarrier;
8
+
9
+ /**
10
+ * Barrier is just a Promise which has resolve and reject exposed as instance
11
+ * methods.
12
+ */
13
+ class Barrier extends Promise {
14
+ #resolve;
15
+ #reject;
16
+
17
+ constructor(executor) {
18
+ let resolveRef;
19
+ let rejectRef;
20
+ super((resolve, reject) => {
21
+ resolveRef = resolve;
22
+ rejectRef = reject;
23
+ if (executor) executor(resolve, reject);
24
+ });
25
+ this.#resolve = resolveRef;
26
+ this.#reject = rejectRef;
27
+ }
28
+
29
+ get resolve() {
30
+ return this.#resolve;
31
+ }
32
+
33
+ get reject() {
34
+ return this.#reject;
35
+ }
36
+
37
+ then(onFulfilled, onRejected) {
38
+ const res = super.then(onFulfilled, onRejected);
39
+ res.#resolve = this.#resolve;
40
+ res.#reject = this.#reject;
41
+ return res;
42
+ }
43
+
44
+ }
45
+ /**
46
+ * Creates a new Barrier.
47
+ * @returns {Barrier}
48
+ */
49
+
50
+
51
+ exports.Barrier = Barrier;
52
+
53
+ function newBarrier(executor) {
54
+ return new Barrier(executor);
55
+ }
56
+ //# sourceMappingURL=Barrier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/shared/utils/Barrier.js"],"names":["Barrier","Promise","resolve","reject","constructor","executor","resolveRef","rejectRef","then","onFulfilled","onRejected","res","newBarrier"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACO,MAAMA,OAAN,SAAsBC,OAAtB,CAA8B;AACnC,GAACC,OAAD;AAEA,GAACC,MAAD;;AAEAC,EAAAA,WAAW,CAACC,QAAD,EAAW;AACpB,QAAIC,UAAJ;AACA,QAAIC,SAAJ;AACA,UAAM,CAACL,OAAD,EAAUC,MAAV,KAAqB;AACzBG,MAAAA,UAAU,GAAGJ,OAAb;AACAK,MAAAA,SAAS,GAAGJ,MAAZ;AACA,UAAIE,QAAJ,EAAcA,QAAQ,CAACH,OAAD,EAAUC,MAAV,CAAR;AACf,KAJD;AAKA,SAAK,CAACD,OAAN,GAAgBI,UAAhB;AACA,SAAK,CAACH,MAAN,GAAeI,SAAf;AACD;;AAEU,MAAPL,OAAO,GAAG;AAAE,WAAO,KAAK,CAACA,OAAb;AAAuB;;AAE7B,MAANC,MAAM,GAAG;AAAE,WAAO,KAAK,CAACA,MAAb;AAAsB;;AAErCK,EAAAA,IAAI,CAACC,WAAD,EAAcC,UAAd,EAA0B;AAC5B,UAAMC,GAAG,GAAG,MAAMH,IAAN,CAAWC,WAAX,EAAwBC,UAAxB,CAAZ;AACAC,IAAAA,GAAG,CAAC,CAACT,OAAL,GAAe,KAAK,CAACA,OAArB;AACAS,IAAAA,GAAG,CAAC,CAACR,MAAL,GAAc,KAAK,CAACA,MAApB;AACA,WAAOQ,GAAP;AACD;;AA1BkC;AA6BrC;AACA;AACA;AACA;;;;;AACO,SAASC,UAAT,CAAoBP,QAApB,EAA8B;AACnC,SAAO,IAAIL,OAAJ,CAAYK,QAAZ,CAAP;AACD","sourcesContent":["/**\n * Barrier is just a Promise which has resolve and reject exposed as instance\n * methods.\n */\nexport class Barrier extends Promise {\n #resolve;\n\n #reject;\n\n constructor(executor) {\n let resolveRef;\n let rejectRef;\n super((resolve, reject) => {\n resolveRef = resolve;\n rejectRef = reject;\n if (executor) executor(resolve, reject);\n });\n this.#resolve = resolveRef;\n this.#reject = rejectRef;\n }\n\n get resolve() { return this.#resolve; }\n\n get reject() { return this.#reject; }\n\n then(onFulfilled, onRejected) {\n const res = super.then(onFulfilled, onRejected);\n res.#resolve = this.#resolve;\n res.#reject = this.#reject;\n return res;\n }\n}\n\n/**\n * Creates a new Barrier.\n * @returns {Barrier}\n */\nexport function newBarrier(executor) {\n return new Barrier(executor);\n}\n"],"file":"Barrier.js"}
@@ -5,6 +5,17 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ var _exportNames = {
9
+ withRetries: true,
10
+ JU: true,
11
+ themed: true,
12
+ ThemeProvider: true,
13
+ config: true,
14
+ isomorphy: true,
15
+ time: true,
16
+ webpack: true,
17
+ Emitter: true
18
+ };
8
19
  Object.defineProperty(exports, "Emitter", {
9
20
  enumerable: true,
10
21
  get: function () {
@@ -25,7 +36,6 @@ Object.defineProperty(exports, "config", {
25
36
  }
26
37
  });
27
38
  exports.isomorphy = void 0;
28
- exports.newBarrier = newBarrier;
29
39
  Object.defineProperty(exports, "themed", {
30
40
  enumerable: true,
31
41
  get: function () {
@@ -55,6 +65,20 @@ var webpack = _interopRequireWildcard(require("./webpack"));
55
65
 
56
66
  exports.webpack = webpack;
57
67
 
68
+ var _Barrier = require("./Barrier");
69
+
70
+ Object.keys(_Barrier).forEach(function (key) {
71
+ if (key === "default" || key === "__esModule") return;
72
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
73
+ if (key in exports && exports[key] === _Barrier[key]) return;
74
+ Object.defineProperty(exports, key, {
75
+ enumerable: true,
76
+ get: function () {
77
+ return _Barrier[key];
78
+ }
79
+ });
80
+ });
81
+
58
82
  var _Emitter = _interopRequireDefault(require("./Emitter"));
59
83
 
60
84
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -73,36 +97,6 @@ if (isomorphy.IS_SERVER_SIDE && (process.env.NODE_CONFIG_ENV || process.env.NODE
73
97
  exports.JU = JU = webpack.requireWeak(path.resolve(__dirname, './jest'));
74
98
  /* eslint-enable global-require */
75
99
  }
76
- /**
77
- * @category Utilities
78
- * @func newBarrier
79
- * @global
80
- * @desc
81
- * ```js
82
- * import { newBarrier } from '@dr.pogodin/react-utils';
83
- * ```
84
- * Creates a new async barrier: a Promise instance with its resolve method
85
- * attached as `.resolve` field.
86
- * @return {Promise}
87
- * @example
88
- * import { newBarrier } from '@dr.pogodin/react-utils';
89
- * (async () => {
90
- * const barrier = newBarrier();
91
- * setTimeout(() => barrier.resolve(), 5000);
92
- * await barrier;
93
- * console.log('This will be printed only after the timeout fires.');
94
- * })();
95
- */
96
-
97
-
98
- function newBarrier() {
99
- let resolve;
100
- const promise = new Promise(res => {
101
- resolve = res;
102
- });
103
- promise.resolve = resolve;
104
- return promise;
105
- }
106
100
  /**
107
101
  * @category Utilities
108
102
  * @global
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/shared/utils/index.js"],"names":["themed","COMPOSE","PRIORITY","JU","isomorphy","IS_SERVER_SIDE","process","env","NODE_CONFIG_ENV","NODE_ENV","path","webpack","requireWeak","resolve","__dirname","newBarrier","promise","Promise","res","withRetries","action","maxRetries","interval","n","error","time","timer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAMA;;AACA;;;;AACA;;AACA;;;;AAEA;;;;;;AAEAA,qBAAOC,OAAP,GAAiBA,oBAAjB;AACAD,qBAAOE,QAAP,GAAkBA,qBAAlB;AAEA,IAAIC,EAAE,GAAG,IAAT,C,CAAe;;;;AACf,IAAIC,SAAS,CAACC,cAAV,IACC,CAACC,OAAO,CAACC,GAAR,CAAYC,eAAZ,IAA+BF,OAAO,CAACC,GAAR,CAAYE,QAA5C,MAA0D,YAD/D,EAEE;AACA;AACA,QAAMC,IAAI,GAAGC,OAAO,CAACC,WAAR,CAAoB,MAApB,CAAb;AACA,eAAAT,EAAE,GAAGQ,OAAO,CAACC,WAAR,CAAoBF,IAAI,CAACG,OAAL,CAAaC,SAAb,EAAwB,QAAxB,CAApB,CAAL;AACA;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,UAAT,GAAsB;AACpB,MAAIF,OAAJ;AACA,QAAMG,OAAO,GAAG,IAAIC,OAAJ,CAAaC,GAAD,IAAS;AAAEL,IAAAA,OAAO,GAAGK,GAAV;AAAgB,GAAvC,CAAhB;AACAF,EAAAA,OAAO,CAACH,OAAR,GAAkBA,OAAlB;AACA,SAAOG,OAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,eAAeG,WAAf,CAA2BC,MAA3B,EAAmCC,UAAU,GAAG,CAAhD,EAAmDC,QAAQ,GAAG,IAA9D,EAAoE;AACzE;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,GAAkB,EAAEA,CAApB,EAAuB;AACrB,QAAI;AACF,aAAO,MAAMH,MAAM,EAAnB;AACD,KAFD,CAEE,OAAOI,KAAP,EAAc;AACd,UAAID,CAAC,GAAGF,UAAR,EAAoB,MAAMI,cAAKC,KAAL,CAAWJ,QAAX,CAAN,CAApB,KACK,MAAME,KAAN;AACN;AACF;AACD;;AACD","sourcesContent":["import themed, {\n COMPOSE,\n PRIORITY,\n ThemeProvider,\n} from '@dr.pogodin/react-themes';\n\nimport config from './config';\nimport * as isomorphy from './isomorphy';\nimport time from './time';\nimport * as webpack from './webpack';\n\nexport { default as Emitter } from './Emitter';\n\nthemed.COMPOSE = COMPOSE;\nthemed.PRIORITY = PRIORITY;\n\nlet JU = null; // eslint-disable-line import/no-mutable-exports\nif (isomorphy.IS_SERVER_SIDE\n && (process.env.NODE_CONFIG_ENV || process.env.NODE_ENV) !== 'production'\n) {\n /* eslint-disable global-require */\n const path = webpack.requireWeak('path');\n JU = webpack.requireWeak(path.resolve(__dirname, './jest'));\n /* eslint-enable global-require */\n}\n\n/**\n * @category Utilities\n * @func newBarrier\n * @global\n * @desc\n * ```js\n * import { newBarrier } from '@dr.pogodin/react-utils';\n * ```\n * Creates a new async barrier: a Promise instance with its resolve method\n * attached as `.resolve` field.\n * @return {Promise}\n * @example\n * import { newBarrier } from '@dr.pogodin/react-utils';\n * (async () => {\n * const barrier = newBarrier();\n * setTimeout(() => barrier.resolve(), 5000);\n * await barrier;\n * console.log('This will be printed only after the timeout fires.');\n * })();\n */\nfunction newBarrier() {\n let resolve;\n const promise = new Promise((res) => { resolve = res; });\n promise.resolve = resolve;\n return promise;\n}\n\n/**\n * @category Utilities\n * @global\n * @func withRetries\n * @desc\n * ```js\n * import { withRetries } from '@dr.pogodin/react-utils';\n * ```\n * Attempts to perform given asynchronous `action` up to `maxRetries` times,\n * with the given `interval` between attempts. If any attempt is successful,\n * the result is returned immediately, with no further attempts done;\n * otherwise, if all attempts fail, the result Promise rejects after the last\n * attempt.\n * @param {function} action\n * @param {number} [maxRetries=5] Optional. Maximum number of retries. Defaults\n * to 5 attempts.\n * @param {number} [interval=1000] Optional. Interval between retries [ms].\n * Defaults to 1 second.\n * @return {Promise} Resolves to the result of successful operation, or\n * rejects with the error from the latst failed attempt.\n * @example\n * import { withRetries } from '@dr.pogodin/react-utils';\n *\n * let firstCall = true;\n *\n * function sampleAction() {\n * if (!firstCall) return 'success';\n * firstCall = false;\n * throw Error('The first call to this method fails');\n * }\n *\n * withRetries(sampleAction).then(console.log);\n * // It will print 'success' after one second, once the second attempt\n * // is performed.\n */\nexport async function withRetries(action, maxRetries = 5, interval = 1000) {\n /* eslint-disable no-await-in-loop */\n for (let n = 1; ; ++n) {\n try {\n return await action();\n } catch (error) {\n if (n < maxRetries) await time.timer(interval);\n else throw error;\n }\n }\n /* eslint-enable no-await-in-loop */\n}\n\nexport {\n config,\n isomorphy,\n JU,\n newBarrier,\n themed,\n ThemeProvider,\n time,\n webpack,\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/shared/utils/index.js"],"names":["themed","COMPOSE","PRIORITY","JU","isomorphy","IS_SERVER_SIDE","process","env","NODE_CONFIG_ENV","NODE_ENV","path","webpack","requireWeak","resolve","__dirname","withRetries","action","maxRetries","interval","n","error","time","timer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAMA;;AACA;;;;AACA;;AACA;;;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;;;;;AAEAA,qBAAOC,OAAP,GAAiBA,oBAAjB;AACAD,qBAAOE,QAAP,GAAkBA,qBAAlB;AAEA,IAAIC,EAAE,GAAG,IAAT,C,CAAe;;;;AACf,IAAIC,SAAS,CAACC,cAAV,IACC,CAACC,OAAO,CAACC,GAAR,CAAYC,eAAZ,IAA+BF,OAAO,CAACC,GAAR,CAAYE,QAA5C,MAA0D,YAD/D,EAEE;AACA;AACA,QAAMC,IAAI,GAAGC,OAAO,CAACC,WAAR,CAAoB,MAApB,CAAb;AACA,eAAAT,EAAE,GAAGQ,OAAO,CAACC,WAAR,CAAoBF,IAAI,CAACG,OAAL,CAAaC,SAAb,EAAwB,QAAxB,CAApB,CAAL;AACA;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,eAAeC,WAAf,CAA2BC,MAA3B,EAAmCC,UAAU,GAAG,CAAhD,EAAmDC,QAAQ,GAAG,IAA9D,EAAoE;AACzE;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,GAAkB,EAAEA,CAApB,EAAuB;AACrB,QAAI;AACF,aAAO,MAAMH,MAAM,EAAnB;AACD,KAFD,CAEE,OAAOI,KAAP,EAAc;AACd,UAAID,CAAC,GAAGF,UAAR,EAAoB,MAAMI,cAAKC,KAAL,CAAWJ,QAAX,CAAN,CAApB,KACK,MAAME,KAAN;AACN;AACF;AACD;;AACD","sourcesContent":["import themed, {\n COMPOSE,\n PRIORITY,\n ThemeProvider,\n} from '@dr.pogodin/react-themes';\n\nimport config from './config';\nimport * as isomorphy from './isomorphy';\nimport time from './time';\nimport * as webpack from './webpack';\n\nexport * from './Barrier';\nexport { default as Emitter } from './Emitter';\n\nthemed.COMPOSE = COMPOSE;\nthemed.PRIORITY = PRIORITY;\n\nlet JU = null; // eslint-disable-line import/no-mutable-exports\nif (isomorphy.IS_SERVER_SIDE\n && (process.env.NODE_CONFIG_ENV || process.env.NODE_ENV) !== 'production'\n) {\n /* eslint-disable global-require */\n const path = webpack.requireWeak('path');\n JU = webpack.requireWeak(path.resolve(__dirname, './jest'));\n /* eslint-enable global-require */\n}\n\n/**\n * @category Utilities\n * @global\n * @func withRetries\n * @desc\n * ```js\n * import { withRetries } from '@dr.pogodin/react-utils';\n * ```\n * Attempts to perform given asynchronous `action` up to `maxRetries` times,\n * with the given `interval` between attempts. If any attempt is successful,\n * the result is returned immediately, with no further attempts done;\n * otherwise, if all attempts fail, the result Promise rejects after the last\n * attempt.\n * @param {function} action\n * @param {number} [maxRetries=5] Optional. Maximum number of retries. Defaults\n * to 5 attempts.\n * @param {number} [interval=1000] Optional. Interval between retries [ms].\n * Defaults to 1 second.\n * @return {Promise} Resolves to the result of successful operation, or\n * rejects with the error from the latst failed attempt.\n * @example\n * import { withRetries } from '@dr.pogodin/react-utils';\n *\n * let firstCall = true;\n *\n * function sampleAction() {\n * if (!firstCall) return 'success';\n * firstCall = false;\n * throw Error('The first call to this method fails');\n * }\n *\n * withRetries(sampleAction).then(console.log);\n * // It will print 'success' after one second, once the second attempt\n * // is performed.\n */\nexport async function withRetries(action, maxRetries = 5, interval = 1000) {\n /* eslint-disable no-await-in-loop */\n for (let n = 1; ; ++n) {\n try {\n return await action();\n } catch (error) {\n if (n < maxRetries) await time.timer(interval);\n else throw error;\n }\n }\n /* eslint-enable no-await-in-loop */\n}\n\nexport {\n config,\n isomorphy,\n JU,\n themed,\n ThemeProvider,\n time,\n webpack,\n};\n"],"file":"index.js"}
@@ -8,14 +8,14 @@
8
8
  */
9
9
  (function webpackUniversalModuleDefinition(root, factory) {
10
10
  if(typeof exports === 'object' && typeof module === 'object')
11
- module.exports = factory(require("@babel/runtime/helpers/asyncToGenerator"), require("@babel/runtime/helpers/classCallCheck"), require("@babel/runtime/helpers/createClass"), require("@babel/runtime/helpers/defineProperty"), require("@babel/runtime/helpers/objectWithoutProperties"), require("@babel/runtime/helpers/slicedToArray"), require("@babel/runtime/helpers/typeof"), require("@babel/runtime/regenerator"), require("@dr.pogodin/react-global-state"), require("@dr.pogodin/react-themes"), require("axios"), require("dayjs"), require("lodash"), require("prop-types"), require("qs"), require("react"), require("react-dom"), require("react-helmet"), require("react-router-dom"));
11
+ module.exports = factory(require("@babel/runtime/helpers/assertThisInitialized"), require("@babel/runtime/helpers/asyncToGenerator"), require("@babel/runtime/helpers/classCallCheck"), require("@babel/runtime/helpers/classPrivateFieldGet"), require("@babel/runtime/helpers/classPrivateFieldSet"), require("@babel/runtime/helpers/createClass"), require("@babel/runtime/helpers/defineProperty"), require("@babel/runtime/helpers/get"), require("@babel/runtime/helpers/getPrototypeOf"), require("@babel/runtime/helpers/inherits"), require("@babel/runtime/helpers/objectWithoutProperties"), require("@babel/runtime/helpers/possibleConstructorReturn"), require("@babel/runtime/helpers/slicedToArray"), require("@babel/runtime/helpers/typeof"), require("@babel/runtime/helpers/wrapNativeSuper"), require("@babel/runtime/regenerator"), require("@dr.pogodin/react-global-state"), require("@dr.pogodin/react-themes"), require("axios"), require("dayjs"), require("lodash"), require("prop-types"), require("qs"), require("react"), require("react-dom"), require("react-helmet"), require("react-router-dom"));
12
12
  else if(typeof define === 'function' && define.amd)
13
- define(["@babel/runtime/helpers/asyncToGenerator", "@babel/runtime/helpers/classCallCheck", "@babel/runtime/helpers/createClass", "@babel/runtime/helpers/defineProperty", "@babel/runtime/helpers/objectWithoutProperties", "@babel/runtime/helpers/slicedToArray", "@babel/runtime/helpers/typeof", "@babel/runtime/regenerator", "@dr.pogodin/react-global-state", "@dr.pogodin/react-themes", "axios", "dayjs", "lodash", "prop-types", "qs", "react", "react-dom", "react-helmet", "react-router-dom"], factory);
13
+ define(["@babel/runtime/helpers/assertThisInitialized", "@babel/runtime/helpers/asyncToGenerator", "@babel/runtime/helpers/classCallCheck", "@babel/runtime/helpers/classPrivateFieldGet", "@babel/runtime/helpers/classPrivateFieldSet", "@babel/runtime/helpers/createClass", "@babel/runtime/helpers/defineProperty", "@babel/runtime/helpers/get", "@babel/runtime/helpers/getPrototypeOf", "@babel/runtime/helpers/inherits", "@babel/runtime/helpers/objectWithoutProperties", "@babel/runtime/helpers/possibleConstructorReturn", "@babel/runtime/helpers/slicedToArray", "@babel/runtime/helpers/typeof", "@babel/runtime/helpers/wrapNativeSuper", "@babel/runtime/regenerator", "@dr.pogodin/react-global-state", "@dr.pogodin/react-themes", "axios", "dayjs", "lodash", "prop-types", "qs", "react", "react-dom", "react-helmet", "react-router-dom"], factory);
14
14
  else if(typeof exports === 'object')
15
- exports["@dr.pogodin/react-utils"] = factory(require("@babel/runtime/helpers/asyncToGenerator"), require("@babel/runtime/helpers/classCallCheck"), require("@babel/runtime/helpers/createClass"), require("@babel/runtime/helpers/defineProperty"), require("@babel/runtime/helpers/objectWithoutProperties"), require("@babel/runtime/helpers/slicedToArray"), require("@babel/runtime/helpers/typeof"), require("@babel/runtime/regenerator"), require("@dr.pogodin/react-global-state"), require("@dr.pogodin/react-themes"), require("axios"), require("dayjs"), require("lodash"), require("prop-types"), require("qs"), require("react"), require("react-dom"), require("react-helmet"), require("react-router-dom"));
15
+ exports["@dr.pogodin/react-utils"] = factory(require("@babel/runtime/helpers/assertThisInitialized"), require("@babel/runtime/helpers/asyncToGenerator"), require("@babel/runtime/helpers/classCallCheck"), require("@babel/runtime/helpers/classPrivateFieldGet"), require("@babel/runtime/helpers/classPrivateFieldSet"), require("@babel/runtime/helpers/createClass"), require("@babel/runtime/helpers/defineProperty"), require("@babel/runtime/helpers/get"), require("@babel/runtime/helpers/getPrototypeOf"), require("@babel/runtime/helpers/inherits"), require("@babel/runtime/helpers/objectWithoutProperties"), require("@babel/runtime/helpers/possibleConstructorReturn"), require("@babel/runtime/helpers/slicedToArray"), require("@babel/runtime/helpers/typeof"), require("@babel/runtime/helpers/wrapNativeSuper"), require("@babel/runtime/regenerator"), require("@dr.pogodin/react-global-state"), require("@dr.pogodin/react-themes"), require("axios"), require("dayjs"), require("lodash"), require("prop-types"), require("qs"), require("react"), require("react-dom"), require("react-helmet"), require("react-router-dom"));
16
16
  else
17
- root["@dr.pogodin/react-utils"] = factory(root["@babel/runtime/helpers/asyncToGenerator"], root["@babel/runtime/helpers/classCallCheck"], root["@babel/runtime/helpers/createClass"], root["@babel/runtime/helpers/defineProperty"], root["@babel/runtime/helpers/objectWithoutProperties"], root["@babel/runtime/helpers/slicedToArray"], root["@babel/runtime/helpers/typeof"], root["@babel/runtime/regenerator"], root["@dr.pogodin/react-global-state"], root["@dr.pogodin/react-themes"], root["axios"], root["dayjs"], root["lodash"], root["prop-types"], root["qs"], root["react"], root["react-dom"], root["react-helmet"], root["react-router-dom"]);
18
- })(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_asyncToGenerator__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_classCallCheck__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_createClass__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_defineProperty__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_objectWithoutProperties__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_slicedToArray__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_typeof__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_regenerator__, __WEBPACK_EXTERNAL_MODULE__dr_pogodin_react_global_state__, __WEBPACK_EXTERNAL_MODULE__dr_pogodin_react_themes__, __WEBPACK_EXTERNAL_MODULE_axios__, __WEBPACK_EXTERNAL_MODULE_dayjs__, __WEBPACK_EXTERNAL_MODULE_lodash__, __WEBPACK_EXTERNAL_MODULE_prop_types__, __WEBPACK_EXTERNAL_MODULE_qs__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__, __WEBPACK_EXTERNAL_MODULE_react_helmet__, __WEBPACK_EXTERNAL_MODULE_react_router_dom__) {
17
+ root["@dr.pogodin/react-utils"] = factory(root["@babel/runtime/helpers/assertThisInitialized"], root["@babel/runtime/helpers/asyncToGenerator"], root["@babel/runtime/helpers/classCallCheck"], root["@babel/runtime/helpers/classPrivateFieldGet"], root["@babel/runtime/helpers/classPrivateFieldSet"], root["@babel/runtime/helpers/createClass"], root["@babel/runtime/helpers/defineProperty"], root["@babel/runtime/helpers/get"], root["@babel/runtime/helpers/getPrototypeOf"], root["@babel/runtime/helpers/inherits"], root["@babel/runtime/helpers/objectWithoutProperties"], root["@babel/runtime/helpers/possibleConstructorReturn"], root["@babel/runtime/helpers/slicedToArray"], root["@babel/runtime/helpers/typeof"], root["@babel/runtime/helpers/wrapNativeSuper"], root["@babel/runtime/regenerator"], root["@dr.pogodin/react-global-state"], root["@dr.pogodin/react-themes"], root["axios"], root["dayjs"], root["lodash"], root["prop-types"], root["qs"], root["react"], root["react-dom"], root["react-helmet"], root["react-router-dom"]);
18
+ })(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_assertThisInitialized__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_asyncToGenerator__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_classCallCheck__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_classPrivateFieldGet__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_classPrivateFieldSet__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_createClass__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_defineProperty__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_get__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_getPrototypeOf__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_inherits__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_objectWithoutProperties__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_possibleConstructorReturn__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_slicedToArray__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_typeof__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_wrapNativeSuper__, __WEBPACK_EXTERNAL_MODULE__babel_runtime_regenerator__, __WEBPACK_EXTERNAL_MODULE__dr_pogodin_react_global_state__, __WEBPACK_EXTERNAL_MODULE__dr_pogodin_react_themes__, __WEBPACK_EXTERNAL_MODULE_axios__, __WEBPACK_EXTERNAL_MODULE_dayjs__, __WEBPACK_EXTERNAL_MODULE_lodash__, __WEBPACK_EXTERNAL_MODULE_prop_types__, __WEBPACK_EXTERNAL_MODULE_qs__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__, __WEBPACK_EXTERNAL_MODULE_react_helmet__, __WEBPACK_EXTERNAL_MODULE_react_router_dom__) {
19
19
  return /******/ (function() { // webpackBootstrap
20
20
  /******/ "use strict";
21
21
  /******/ var __webpack_modules__ = ({
@@ -36,7 +36,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
36
36
  \**********************/
37
37
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
38
38
 
39
- eval("var __dirname = \"/\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"api\": function() { return /* reexport default from dynamic */ axios__WEBPACK_IMPORTED_MODULE_2___default.a; },\n/* harmony export */ \"PT\": function() { return /* reexport module object */ prop_types__WEBPACK_IMPORTED_MODULE_3__; },\n/* harmony export */ \"getGlobalState\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.getGlobalState; },\n/* harmony export */ \"GlobalStateProvider\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.GlobalStateProvider; },\n/* harmony export */ \"useAsyncCollection\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.useAsyncCollection; },\n/* harmony export */ \"useAsyncData\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.useAsyncData; },\n/* harmony export */ \"useGlobalState\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.useGlobalState; },\n/* harmony export */ \"BaseModal\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.BaseModal; },\n/* harmony export */ \"Button\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Button; },\n/* harmony export */ \"Checkbox\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Checkbox; },\n/* harmony export */ \"CodeSplit\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.CodeSplit; },\n/* harmony export */ \"Dropdown\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Dropdown; },\n/* harmony export */ \"Input\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Input; },\n/* harmony export */ \"Link\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Link; },\n/* harmony export */ \"MetaTags\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.MetaTags; },\n/* harmony export */ \"Modal\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Modal; },\n/* harmony export */ \"NavLink\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.NavLink; },\n/* harmony export */ \"PageLayout\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.PageLayout; },\n/* harmony export */ \"ScalableRect\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.ScalableRect; },\n/* harmony export */ \"Throbber\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Throbber; },\n/* harmony export */ \"WithTooltip\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.WithTooltip; },\n/* harmony export */ \"YouTubeVideo\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.YouTubeVideo; },\n/* harmony export */ \"client\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.client; },\n/* harmony export */ \"Emitter\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.Emitter; },\n/* harmony export */ \"JU\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.JU; },\n/* harmony export */ \"ThemeProvider\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.ThemeProvider; },\n/* harmony export */ \"config\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.config; },\n/* harmony export */ \"isomorphy\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.isomorphy; },\n/* harmony export */ \"newBarrier\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.newBarrier; },\n/* harmony export */ \"themed\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.themed; },\n/* harmony export */ \"time\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.time; },\n/* harmony export */ \"webpack\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.webpack; },\n/* harmony export */ \"withRetries\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.withRetries; },\n/* harmony export */ \"server\": function() { return /* binding */ server; }\n/* harmony export */ });\n/* harmony import */ var _styles_global_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./styles/global.scss */ \"./src/styles/global.scss\");\n/* harmony import */ var _shared_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shared/utils */ \"./src/shared/utils/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"axios\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"prop-types\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @dr.pogodin/react-global-state */ \"@dr.pogodin/react-global-state\");\n/* harmony import */ var _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _shared_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shared/components */ \"./src/shared/components/index.js\");\n\n\nvar server = null; // eslint-disable-line import/no-mutable-exports\n\nif (_shared_utils__WEBPACK_IMPORTED_MODULE_1__.isomorphy.IS_SERVER_SIDE) {\n try {\n var path = _shared_utils__WEBPACK_IMPORTED_MODULE_1__.webpack.requireWeak('path');\n server = _shared_utils__WEBPACK_IMPORTED_MODULE_1__.webpack.requireWeak(path.resolve(__dirname, './server'));\n } catch (error) {\n server = null;\n }\n}\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://@dr.pogodin/react-utils/./src/index.js?");
39
+ eval("var __dirname = \"/\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"api\": function() { return /* reexport default from dynamic */ axios__WEBPACK_IMPORTED_MODULE_2___default.a; },\n/* harmony export */ \"PT\": function() { return /* reexport module object */ prop_types__WEBPACK_IMPORTED_MODULE_3__; },\n/* harmony export */ \"getGlobalState\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.getGlobalState; },\n/* harmony export */ \"GlobalStateProvider\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.GlobalStateProvider; },\n/* harmony export */ \"useAsyncCollection\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.useAsyncCollection; },\n/* harmony export */ \"useAsyncData\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.useAsyncData; },\n/* harmony export */ \"useGlobalState\": function() { return /* reexport safe */ _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__.useGlobalState; },\n/* harmony export */ \"BaseModal\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.BaseModal; },\n/* harmony export */ \"Button\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Button; },\n/* harmony export */ \"Checkbox\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Checkbox; },\n/* harmony export */ \"CodeSplit\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.CodeSplit; },\n/* harmony export */ \"Dropdown\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Dropdown; },\n/* harmony export */ \"Input\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Input; },\n/* harmony export */ \"Link\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Link; },\n/* harmony export */ \"MetaTags\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.MetaTags; },\n/* harmony export */ \"Modal\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Modal; },\n/* harmony export */ \"NavLink\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.NavLink; },\n/* harmony export */ \"PageLayout\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.PageLayout; },\n/* harmony export */ \"ScalableRect\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.ScalableRect; },\n/* harmony export */ \"Throbber\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.Throbber; },\n/* harmony export */ \"WithTooltip\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.WithTooltip; },\n/* harmony export */ \"YouTubeVideo\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.YouTubeVideo; },\n/* harmony export */ \"client\": function() { return /* reexport safe */ _shared_components__WEBPACK_IMPORTED_MODULE_5__.client; },\n/* harmony export */ \"Barrier\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.Barrier; },\n/* harmony export */ \"Emitter\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.Emitter; },\n/* harmony export */ \"JU\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.JU; },\n/* harmony export */ \"ThemeProvider\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.ThemeProvider; },\n/* harmony export */ \"config\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.config; },\n/* harmony export */ \"isomorphy\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.isomorphy; },\n/* harmony export */ \"newBarrier\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.newBarrier; },\n/* harmony export */ \"themed\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.themed; },\n/* harmony export */ \"time\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.time; },\n/* harmony export */ \"webpack\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.webpack; },\n/* harmony export */ \"withRetries\": function() { return /* reexport safe */ _shared_utils__WEBPACK_IMPORTED_MODULE_1__.withRetries; },\n/* harmony export */ \"server\": function() { return /* binding */ server; }\n/* harmony export */ });\n/* harmony import */ var _styles_global_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./styles/global.scss */ \"./src/styles/global.scss\");\n/* harmony import */ var _shared_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shared/utils */ \"./src/shared/utils/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"axios\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"prop-types\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @dr.pogodin/react-global-state */ \"@dr.pogodin/react-global-state\");\n/* harmony import */ var _dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_dr_pogodin_react_global_state__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _shared_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shared/components */ \"./src/shared/components/index.js\");\n\n\nvar server = null; // eslint-disable-line import/no-mutable-exports\n\nif (_shared_utils__WEBPACK_IMPORTED_MODULE_1__.isomorphy.IS_SERVER_SIDE) {\n try {\n var path = _shared_utils__WEBPACK_IMPORTED_MODULE_1__.webpack.requireWeak('path');\n server = _shared_utils__WEBPACK_IMPORTED_MODULE_1__.webpack.requireWeak(path.resolve(__dirname, './server'));\n } catch (error) {\n server = null;\n }\n}\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://@dr.pogodin/react-utils/./src/index.js?");
40
40
 
41
41
  /***/ }),
42
42
 
@@ -220,6 +220,16 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
220
220
 
221
221
  /***/ }),
222
222
 
223
+ /***/ "./src/shared/utils/Barrier.js":
224
+ /*!*************************************!*\
225
+ !*** ./src/shared/utils/Barrier.js ***!
226
+ \*************************************/
227
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
228
+
229
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Barrier\": function() { return /* binding */ Barrier; },\n/* harmony export */ \"newBarrier\": function() { return /* binding */ newBarrier; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"@babel/runtime/helpers/classCallCheck\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"@babel/runtime/helpers/createClass\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"@babel/runtime/helpers/assertThisInitialized\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"@babel/runtime/helpers/get\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"@babel/runtime/helpers/inherits\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"@babel/runtime/helpers/possibleConstructorReturn\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"@babel/runtime/helpers/getPrototypeOf\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_wrapNativeSuper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ \"@babel/runtime/helpers/wrapNativeSuper\");\n/* harmony import */ var _babel_runtime_helpers_wrapNativeSuper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_wrapNativeSuper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_classPrivateFieldGet__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/classPrivateFieldGet */ \"@babel/runtime/helpers/classPrivateFieldGet\");\n/* harmony import */ var _babel_runtime_helpers_classPrivateFieldGet__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classPrivateFieldGet__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_classPrivateFieldSet__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/classPrivateFieldSet */ \"@babel/runtime/helpers/classPrivateFieldSet\");\n/* harmony import */ var _babel_runtime_helpers_classPrivateFieldSet__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classPrivateFieldSet__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nvar _resolve = /*#__PURE__*/new WeakMap();\n\nvar _reject = /*#__PURE__*/new WeakMap();\n\n/**\n * Barrier is just a Promise which has resolve and reject exposed as instance\n * methods.\n */\nvar Barrier = /*#__PURE__*/function (_Promise) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Barrier, _Promise);\n\n var _super = _createSuper(Barrier);\n\n function Barrier(executor) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Barrier);\n\n var resolveRef;\n var rejectRef;\n _this = _super.call(this, function (resolve, reject) {\n resolveRef = resolve;\n rejectRef = reject;\n if (executor) executor(resolve, reject);\n });\n\n _classPrivateFieldInitSpec(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this), _resolve, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this), _reject, {\n writable: true,\n value: void 0\n });\n\n _babel_runtime_helpers_classPrivateFieldSet__WEBPACK_IMPORTED_MODULE_9___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this), _resolve, resolveRef);\n\n _babel_runtime_helpers_classPrivateFieldSet__WEBPACK_IMPORTED_MODULE_9___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this), _reject, rejectRef);\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Barrier, [{\n key: \"resolve\",\n get: function get() {\n return _babel_runtime_helpers_classPrivateFieldGet__WEBPACK_IMPORTED_MODULE_8___default()(this, _resolve);\n }\n }, {\n key: \"reject\",\n get: function get() {\n return _babel_runtime_helpers_classPrivateFieldGet__WEBPACK_IMPORTED_MODULE_8___default()(this, _reject);\n }\n }, {\n key: \"then\",\n value: function then(onFulfilled, onRejected) {\n var res = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_3___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Barrier.prototype), \"then\", this).call(this, onFulfilled, onRejected);\n\n _babel_runtime_helpers_classPrivateFieldSet__WEBPACK_IMPORTED_MODULE_9___default()(res, _resolve, _babel_runtime_helpers_classPrivateFieldGet__WEBPACK_IMPORTED_MODULE_8___default()(this, _resolve));\n\n _babel_runtime_helpers_classPrivateFieldSet__WEBPACK_IMPORTED_MODULE_9___default()(res, _reject, _babel_runtime_helpers_classPrivateFieldGet__WEBPACK_IMPORTED_MODULE_8___default()(this, _reject));\n\n return res;\n }\n }]);\n\n return Barrier;\n}( /*#__PURE__*/_babel_runtime_helpers_wrapNativeSuper__WEBPACK_IMPORTED_MODULE_7___default()(Promise));\n/**\n * Creates a new Barrier.\n * @returns {Barrier}\n */\n\nfunction newBarrier(executor) {\n return new Barrier(executor);\n}\n\n//# sourceURL=webpack://@dr.pogodin/react-utils/./src/shared/utils/Barrier.js?");
230
+
231
+ /***/ }),
232
+
223
233
  /***/ "./src/shared/utils/Emitter.js":
224
234
  /*!*************************************!*\
225
235
  !*** ./src/shared/utils/Emitter.js ***!
@@ -246,7 +256,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _iso
246
256
  \***********************************/
247
257
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
248
258
 
249
- eval("var __dirname = \"/\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Emitter\": function() { return /* reexport safe */ _Emitter__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; },\n/* harmony export */ \"withRetries\": function() { return /* binding */ withRetries; },\n/* harmony export */ \"config\": function() { return /* reexport safe */ _config__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */ \"isomorphy\": function() { return /* reexport module object */ _isomorphy__WEBPACK_IMPORTED_MODULE_4__; },\n/* harmony export */ \"JU\": function() { return /* binding */ JU; },\n/* harmony export */ \"newBarrier\": function() { return /* binding */ newBarrier; },\n/* harmony export */ \"themed\": function() { return /* reexport default from dynamic */ _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default.a; },\n/* harmony export */ \"ThemeProvider\": function() { return /* reexport safe */ _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__.ThemeProvider; },\n/* harmony export */ \"time\": function() { return /* reexport safe */ _time__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */ \"webpack\": function() { return /* reexport module object */ _webpack__WEBPACK_IMPORTED_MODULE_6__; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"@babel/runtime/helpers/asyncToGenerator\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"@babel/runtime/regenerator\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @dr.pogodin/react-themes */ \"@dr.pogodin/react-themes\");\n/* harmony import */ var _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config */ \"./src/shared/utils/config.js\");\n/* harmony import */ var _isomorphy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isomorphy */ \"./src/shared/utils/isomorphy.js\");\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./time */ \"./src/shared/utils/time.js\");\n/* harmony import */ var _webpack__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./webpack */ \"./src/shared/utils/webpack.js\");\n/* harmony import */ var _Emitter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Emitter */ \"./src/shared/utils/Emitter.js\");\n\n\n\n\n\n\n\n\n(_dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default().COMPOSE) = _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__.COMPOSE;\n(_dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default().PRIORITY) = _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__.PRIORITY;\nvar JU = null; // eslint-disable-line import/no-mutable-exports\n\nif (_isomorphy__WEBPACK_IMPORTED_MODULE_4__.IS_SERVER_SIDE && (process.env.NODE_CONFIG_ENV || \"development\") !== 'production') {\n /* eslint-disable global-require */\n var path = _webpack__WEBPACK_IMPORTED_MODULE_6__.requireWeak('path');\n JU = _webpack__WEBPACK_IMPORTED_MODULE_6__.requireWeak(path.resolve(__dirname, './jest'));\n /* eslint-enable global-require */\n}\n/**\n * @category Utilities\n * @func newBarrier\n * @global\n * @desc\n * ```js\n * import { newBarrier } from '@dr.pogodin/react-utils';\n * ```\n * Creates a new async barrier: a Promise instance with its resolve method\n * attached as `.resolve` field.\n * @return {Promise}\n * @example\n * import { newBarrier } from '@dr.pogodin/react-utils';\n * (async () => {\n * const barrier = newBarrier();\n * setTimeout(() => barrier.resolve(), 5000);\n * await barrier;\n * console.log('This will be printed only after the timeout fires.');\n * })();\n */\n\n\nfunction newBarrier() {\n var resolve;\n var promise = new Promise(function (res) {\n resolve = res;\n });\n promise.resolve = resolve;\n return promise;\n}\n/**\n * @category Utilities\n * @global\n * @func withRetries\n * @desc\n * ```js\n * import { withRetries } from '@dr.pogodin/react-utils';\n * ```\n * Attempts to perform given asynchronous `action` up to `maxRetries` times,\n * with the given `interval` between attempts. If any attempt is successful,\n * the result is returned immediately, with no further attempts done;\n * otherwise, if all attempts fail, the result Promise rejects after the last\n * attempt.\n * @param {function} action\n * @param {number} [maxRetries=5] Optional. Maximum number of retries. Defaults\n * to 5 attempts.\n * @param {number} [interval=1000] Optional. Interval between retries [ms].\n * Defaults to 1 second.\n * @return {Promise} Resolves to the result of successful operation, or\n * rejects with the error from the latst failed attempt.\n * @example\n * import { withRetries } from '@dr.pogodin/react-utils';\n *\n * let firstCall = true;\n *\n * function sampleAction() {\n * if (!firstCall) return 'success';\n * firstCall = false;\n * throw Error('The first call to this method fails');\n * }\n *\n * withRetries(sampleAction).then(console.log);\n * // It will print 'success' after one second, once the second attempt\n * // is performed.\n */\n\n\nfunction withRetries(_x) {\n return _withRetries.apply(this, arguments);\n}\n\nfunction _withRetries() {\n _withRetries = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default().mark(function _callee(action) {\n var maxRetries,\n interval,\n n,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n maxRetries = _args.length > 1 && _args[1] !== undefined ? _args[1] : 5;\n interval = _args.length > 2 && _args[2] !== undefined ? _args[2] : 1000;\n n = 1;\n\n case 3:\n _context.prev = 3;\n _context.next = 6;\n return action();\n\n case 6:\n return _context.abrupt(\"return\", _context.sent);\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n\n if (!(n < maxRetries)) {\n _context.next = 16;\n break;\n }\n\n _context.next = 14;\n return _time__WEBPACK_IMPORTED_MODULE_5__[\"default\"].timer(interval);\n\n case 14:\n _context.next = 17;\n break;\n\n case 16:\n throw _context.t0;\n\n case 17:\n ++n;\n _context.next = 3;\n break;\n\n case 20:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 9]]);\n }));\n return _withRetries.apply(this, arguments);\n}\n\n\n\n//# sourceURL=webpack://@dr.pogodin/react-utils/./src/shared/utils/index.js?");
259
+ eval("var __dirname = \"/\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Barrier\": function() { return /* reexport safe */ _Barrier__WEBPACK_IMPORTED_MODULE_7__.Barrier; },\n/* harmony export */ \"newBarrier\": function() { return /* reexport safe */ _Barrier__WEBPACK_IMPORTED_MODULE_7__.newBarrier; },\n/* harmony export */ \"Emitter\": function() { return /* reexport safe */ _Emitter__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; },\n/* harmony export */ \"withRetries\": function() { return /* binding */ withRetries; },\n/* harmony export */ \"config\": function() { return /* reexport safe */ _config__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; },\n/* harmony export */ \"isomorphy\": function() { return /* reexport module object */ _isomorphy__WEBPACK_IMPORTED_MODULE_4__; },\n/* harmony export */ \"JU\": function() { return /* binding */ JU; },\n/* harmony export */ \"themed\": function() { return /* reexport default from dynamic */ _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default.a; },\n/* harmony export */ \"ThemeProvider\": function() { return /* reexport safe */ _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__.ThemeProvider; },\n/* harmony export */ \"time\": function() { return /* reexport safe */ _time__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; },\n/* harmony export */ \"webpack\": function() { return /* reexport module object */ _webpack__WEBPACK_IMPORTED_MODULE_6__; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"@babel/runtime/helpers/asyncToGenerator\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"@babel/runtime/regenerator\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @dr.pogodin/react-themes */ \"@dr.pogodin/react-themes\");\n/* harmony import */ var _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config */ \"./src/shared/utils/config.js\");\n/* harmony import */ var _isomorphy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isomorphy */ \"./src/shared/utils/isomorphy.js\");\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./time */ \"./src/shared/utils/time.js\");\n/* harmony import */ var _webpack__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./webpack */ \"./src/shared/utils/webpack.js\");\n/* harmony import */ var _Barrier__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Barrier */ \"./src/shared/utils/Barrier.js\");\n/* harmony import */ var _Emitter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Emitter */ \"./src/shared/utils/Emitter.js\");\n\n\n\n\n\n\n\n\n\n(_dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default().COMPOSE) = _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__.COMPOSE;\n(_dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2___default().PRIORITY) = _dr_pogodin_react_themes__WEBPACK_IMPORTED_MODULE_2__.PRIORITY;\nvar JU = null; // eslint-disable-line import/no-mutable-exports\n\nif (_isomorphy__WEBPACK_IMPORTED_MODULE_4__.IS_SERVER_SIDE && (process.env.NODE_CONFIG_ENV || \"development\") !== 'production') {\n /* eslint-disable global-require */\n var path = _webpack__WEBPACK_IMPORTED_MODULE_6__.requireWeak('path');\n JU = _webpack__WEBPACK_IMPORTED_MODULE_6__.requireWeak(path.resolve(__dirname, './jest'));\n /* eslint-enable global-require */\n}\n/**\n * @category Utilities\n * @global\n * @func withRetries\n * @desc\n * ```js\n * import { withRetries } from '@dr.pogodin/react-utils';\n * ```\n * Attempts to perform given asynchronous `action` up to `maxRetries` times,\n * with the given `interval` between attempts. If any attempt is successful,\n * the result is returned immediately, with no further attempts done;\n * otherwise, if all attempts fail, the result Promise rejects after the last\n * attempt.\n * @param {function} action\n * @param {number} [maxRetries=5] Optional. Maximum number of retries. Defaults\n * to 5 attempts.\n * @param {number} [interval=1000] Optional. Interval between retries [ms].\n * Defaults to 1 second.\n * @return {Promise} Resolves to the result of successful operation, or\n * rejects with the error from the latst failed attempt.\n * @example\n * import { withRetries } from '@dr.pogodin/react-utils';\n *\n * let firstCall = true;\n *\n * function sampleAction() {\n * if (!firstCall) return 'success';\n * firstCall = false;\n * throw Error('The first call to this method fails');\n * }\n *\n * withRetries(sampleAction).then(console.log);\n * // It will print 'success' after one second, once the second attempt\n * // is performed.\n */\n\n\nfunction withRetries(_x) {\n return _withRetries.apply(this, arguments);\n}\n\nfunction _withRetries() {\n _withRetries = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default().mark(function _callee(action) {\n var maxRetries,\n interval,\n n,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n maxRetries = _args.length > 1 && _args[1] !== undefined ? _args[1] : 5;\n interval = _args.length > 2 && _args[2] !== undefined ? _args[2] : 1000;\n n = 1;\n\n case 3:\n _context.prev = 3;\n _context.next = 6;\n return action();\n\n case 6:\n return _context.abrupt(\"return\", _context.sent);\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n\n if (!(n < maxRetries)) {\n _context.next = 16;\n break;\n }\n\n _context.next = 14;\n return _time__WEBPACK_IMPORTED_MODULE_5__[\"default\"].timer(interval);\n\n case 14:\n _context.next = 17;\n break;\n\n case 16:\n throw _context.t0;\n\n case 17:\n ++n;\n _context.next = 3;\n break;\n\n case 20:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 9]]);\n }));\n return _withRetries.apply(this, arguments);\n}\n\n\n\n//# sourceURL=webpack://@dr.pogodin/react-utils/./src/shared/utils/index.js?");
250
260
 
251
261
  /***/ }),
252
262
 
@@ -450,6 +460,16 @@ eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs
450
460
 
451
461
  /***/ }),
452
462
 
463
+ /***/ "@babel/runtime/helpers/assertThisInitialized":
464
+ /*!***************************************************************!*\
465
+ !*** external "@babel/runtime/helpers/assertThisInitialized" ***!
466
+ \***************************************************************/
467
+ /***/ (function(module) {
468
+
469
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_assertThisInitialized__;
470
+
471
+ /***/ }),
472
+
453
473
  /***/ "@babel/runtime/helpers/asyncToGenerator":
454
474
  /*!**********************************************************!*\
455
475
  !*** external "@babel/runtime/helpers/asyncToGenerator" ***!
@@ -470,6 +490,26 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_classCallCheck
470
490
 
471
491
  /***/ }),
472
492
 
493
+ /***/ "@babel/runtime/helpers/classPrivateFieldGet":
494
+ /*!**************************************************************!*\
495
+ !*** external "@babel/runtime/helpers/classPrivateFieldGet" ***!
496
+ \**************************************************************/
497
+ /***/ (function(module) {
498
+
499
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_classPrivateFieldGet__;
500
+
501
+ /***/ }),
502
+
503
+ /***/ "@babel/runtime/helpers/classPrivateFieldSet":
504
+ /*!**************************************************************!*\
505
+ !*** external "@babel/runtime/helpers/classPrivateFieldSet" ***!
506
+ \**************************************************************/
507
+ /***/ (function(module) {
508
+
509
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_classPrivateFieldSet__;
510
+
511
+ /***/ }),
512
+
473
513
  /***/ "@babel/runtime/helpers/createClass":
474
514
  /*!*****************************************************!*\
475
515
  !*** external "@babel/runtime/helpers/createClass" ***!
@@ -490,6 +530,36 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_defineProperty
490
530
 
491
531
  /***/ }),
492
532
 
533
+ /***/ "@babel/runtime/helpers/get":
534
+ /*!*********************************************!*\
535
+ !*** external "@babel/runtime/helpers/get" ***!
536
+ \*********************************************/
537
+ /***/ (function(module) {
538
+
539
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_get__;
540
+
541
+ /***/ }),
542
+
543
+ /***/ "@babel/runtime/helpers/getPrototypeOf":
544
+ /*!********************************************************!*\
545
+ !*** external "@babel/runtime/helpers/getPrototypeOf" ***!
546
+ \********************************************************/
547
+ /***/ (function(module) {
548
+
549
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_getPrototypeOf__;
550
+
551
+ /***/ }),
552
+
553
+ /***/ "@babel/runtime/helpers/inherits":
554
+ /*!**************************************************!*\
555
+ !*** external "@babel/runtime/helpers/inherits" ***!
556
+ \**************************************************/
557
+ /***/ (function(module) {
558
+
559
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_inherits__;
560
+
561
+ /***/ }),
562
+
493
563
  /***/ "@babel/runtime/helpers/objectWithoutProperties":
494
564
  /*!*****************************************************************!*\
495
565
  !*** external "@babel/runtime/helpers/objectWithoutProperties" ***!
@@ -500,6 +570,16 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_objectWithoutP
500
570
 
501
571
  /***/ }),
502
572
 
573
+ /***/ "@babel/runtime/helpers/possibleConstructorReturn":
574
+ /*!*******************************************************************!*\
575
+ !*** external "@babel/runtime/helpers/possibleConstructorReturn" ***!
576
+ \*******************************************************************/
577
+ /***/ (function(module) {
578
+
579
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_possibleConstructorReturn__;
580
+
581
+ /***/ }),
582
+
503
583
  /***/ "@babel/runtime/helpers/slicedToArray":
504
584
  /*!*******************************************************!*\
505
585
  !*** external "@babel/runtime/helpers/slicedToArray" ***!
@@ -520,6 +600,16 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_typeof__;
520
600
 
521
601
  /***/ }),
522
602
 
603
+ /***/ "@babel/runtime/helpers/wrapNativeSuper":
604
+ /*!*********************************************************!*\
605
+ !*** external "@babel/runtime/helpers/wrapNativeSuper" ***!
606
+ \*********************************************************/
607
+ /***/ (function(module) {
608
+
609
+ module.exports = __WEBPACK_EXTERNAL_MODULE__babel_runtime_helpers_wrapNativeSuper__;
610
+
611
+ /***/ }),
612
+
523
613
  /***/ "@babel/runtime/regenerator":
524
614
  /*!*********************************************!*\
525
615
  !*** external "@babel/runtime/regenerator" ***!
@@ -26,7 +26,7 @@ delete defaultCspSettings.directives["upgrade-insecure-requests"];/**
26
26
  * }} A deep copy of default CSP settings object used by `react-utils`,
27
27
  * with the exception of `nonce-xxx` clause in `script-src` directive,
28
28
  * which is added dynamically for each request.
29
- */function getDefaultCspSettings(){return(0,_lodash.cloneDeep)(defaultCspSettings)}async function factory(webpackConfig,options){const rendererOps=(0,_lodash.pick)(options,["Application","beforeRender","favicon","maxSsrRounds","noCsp","ssrTimeout","staticCacheController","staticCacheSize"]);const renderer=(0,_renderer.default)(webpackConfig,rendererOps);const{publicPath}=webpackConfig.output;const server=(0,_express.default)();if(options.beforeExpressJsSetup){await options.beforeExpressJsSetup(server)}server.logger=options.logger;if(options.httpsRedirect){server.use((req,res,next)=>{const schema=req.headers["x-forwarded-proto"];if(schema==="http"){let url=`https://${req.headers.host}`;if(req.originalUrl!=="/")url+=req.originalUrl;return res.redirect(url)}return next()})}server.use((0,_compression.default)());server.use((0,_helmet.default)({contentSecurityPolicy:false}));if(!options.noCsp){server.use((req,res,next)=>{req.nonce=(0,_uuid.v4)();// TODO: This is deprecated, but it is kept for now for backward
29
+ */function getDefaultCspSettings(){return(0,_lodash.cloneDeep)(defaultCspSettings)}async function factory(webpackConfig,options){const rendererOps=(0,_lodash.pick)(options,["Application","beforeRender","favicon","maxSsrRounds","noCsp","ssrTimeout","staticCacheController","staticCacheSize"]);const renderer=(0,_renderer.default)(webpackConfig,rendererOps);const{publicPath}=webpackConfig.output;const server=(0,_express.default)();if(options.beforeExpressJsSetup){await options.beforeExpressJsSetup(server)}server.logger=options.logger;if(options.httpsRedirect){server.use((req,res,next)=>{const schema=req.headers["x-forwarded-proto"];if(schema==="http"){let url=`https://${req.headers.host}`;if(req.originalUrl!=="/")url+=req.originalUrl;return res.redirect(url)}return next()})}server.use((0,_compression.default)());server.use((0,_helmet.default)({contentSecurityPolicy:false,crossOriginEmbedderPolicy:false,crossOriginOpenerPolicy:false,crossOriginResourcePolicy:false}));if(!options.noCsp){server.use((req,res,next)=>{req.nonce=(0,_uuid.v4)();// TODO: This is deprecated, but it is kept for now for backward
30
30
  // compatibility. Should be removed sometime later.
31
31
  req.cspNonce=req.nonce;// The deep clone is necessary here to ensure that default value can't be
32
32
  // mutated during request processing.