catalyst-core-internal 0.0.1-beta.6 → 0.0.1-beta.61

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.
Files changed (168) hide show
  1. package/README.md +21 -125
  2. package/babel.config.js +32 -0
  3. package/bin/catalyst.js +33 -35
  4. package/changelog.md +38 -0
  5. package/config.json +1 -1
  6. package/dist/caching.js +1 -0
  7. package/dist/index.js +1 -0
  8. package/dist/logger.js +10 -0
  9. package/dist/router/ClientRouter.js +3 -0
  10. package/dist/router/ServerRouter.js +1 -0
  11. package/dist/router.js +1 -0
  12. package/dist/scripts/build.js +3 -0
  13. package/dist/scripts/checkVersion.js +1 -0
  14. package/dist/scripts/devBuild.js +3 -0
  15. package/dist/scripts/devServe.js +3 -0
  16. package/dist/scripts/loadEnvironmentVariables.js +5 -0
  17. package/dist/scripts/loadScriptsBeforeServerStarts.js +4 -0
  18. package/dist/scripts/registerAliases.js +2 -0
  19. package/dist/scripts/scriptUtils.js +2 -0
  20. package/dist/scripts/serve.js +3 -0
  21. package/dist/scripts/start.js +6 -0
  22. package/dist/scripts/validator.js +1 -0
  23. package/dist/server/expressServer.js +9 -0
  24. package/dist/server/renderer/document/Body.js +11 -0
  25. package/dist/server/renderer/document/Head.js +9 -0
  26. package/dist/server/renderer/document/index.js +1 -0
  27. package/dist/server/renderer/extract.js +27 -0
  28. package/dist/server/renderer/handler.js +22 -0
  29. package/dist/server/renderer/index.js +1 -0
  30. package/dist/server/startServer.js +7 -0
  31. package/dist/server/utils/userAgentUtil.js +9 -0
  32. package/dist/server/utils/validator.js +1 -0
  33. package/dist/webpack/babel-plugins/remove-client.plugin.js +5 -0
  34. package/dist/webpack/babel-plugins/remove-ssr.plugin.js +5 -0
  35. package/dist/webpack/babel.config.client.js +1 -0
  36. package/dist/webpack/babel.config.ssr.js +1 -0
  37. package/dist/webpack/base.babel.js +8 -0
  38. package/dist/webpack/development.client.babel.js +19 -0
  39. package/dist/webpack/production.client.babel.js +4 -0
  40. package/dist/webpack/production.ssr.babel.js +4 -0
  41. package/dist/webpack/scssParams.js +9 -0
  42. package/license +10 -0
  43. package/package.json +121 -83
  44. package/template/README.md +25 -0
  45. package/template/api.js +16 -0
  46. package/template/client/index.js +23 -0
  47. package/template/client/styles.js +4 -0
  48. package/template/config/config.json +13 -0
  49. package/template/package-lock.json +3376 -0
  50. package/template/package.json +34 -0
  51. package/template/playwright.config.js +40 -0
  52. package/template/public/favicon.ico +0 -0
  53. package/template/server/document.js +24 -0
  54. package/template/server/index.js +2 -0
  55. package/template/server/server.js +15 -0
  56. package/template/src/js/components/Footer/Footer.js +26 -0
  57. package/template/src/js/components/Header/Header.js +39 -0
  58. package/template/src/js/containers/App/index.js +16 -0
  59. package/template/src/js/containers/Home/Home.js +23 -0
  60. package/template/src/js/containers/Home/Home.scss +34 -0
  61. package/template/src/js/layouts/MainLayout/MainLayout.js +23 -0
  62. package/template/src/js/pages/About/About.js +29 -0
  63. package/template/src/js/pages/BreedDetails/BreedDetails.js +78 -0
  64. package/template/src/js/pages/Home/Home.js +60 -0
  65. package/template/src/js/routes/index.js +43 -0
  66. package/template/src/js/routes/utils.js +42 -0
  67. package/template/src/static/css/base/index.scss +1 -0
  68. package/template/src/static/css/base/pet-styles.scss +77 -0
  69. package/template/src/static/css/base/styles.scss +3 -0
  70. package/template/src/static/css/resources/_variables.scss +0 -0
  71. package/template/tests/main.spec.js +49 -0
  72. package/template/webpackConfig.js +6 -0
  73. package/babel.config.json +0 -24
  74. package/caching.js +0 -16
  75. package/index.js +0 -16
  76. package/logger.js +0 -96
  77. package/packages/create-framework-app/templates/redux-js/node_modules/@babel/core/lib/config/caching.js +0 -261
  78. package/packages/create-framework-app/templates/redux-js/node_modules/@remix-run/router/dist/router.js +0 -4327
  79. package/packages/create-framework-app/templates/redux-js/node_modules/catalyst/router.js +0 -15
  80. package/packages/create-framework-app/templates/redux-js/node_modules/catalyst/src/router.js +0 -1
  81. package/packages/create-framework-app/templates/redux-js/node_modules/http-proxy-middleware/dist/router.js +0 -46
  82. package/router/ClientRouter.js +0 -19
  83. package/router/ServerRouter.js +0 -19
  84. package/router/index.js +0 -32
  85. package/router.js +0 -16
  86. package/scripts/build.js +0 -29
  87. package/scripts/checkVersion.js +0 -5
  88. package/scripts/loadEnvironmentVariables.js +0 -24
  89. package/scripts/loadScriptsBeforeServerStarts.js +0 -47
  90. package/scripts/prepare.js +0 -19
  91. package/scripts/registerAliases.js +0 -30
  92. package/scripts/serve.js +0 -30
  93. package/scripts/start.js +0 -26
  94. package/scripts/validator.js +0 -128
  95. package/server/expressServer.js +0 -50
  96. package/server/mainIndex.js +0 -65
  97. package/server/mainServer.js +0 -70
  98. package/server/renderer/document/Body.js +0 -36
  99. package/server/renderer/document/Head.js +0 -43
  100. package/server/renderer/document/index.js +0 -27
  101. package/server/renderer/extract.js +0 -87
  102. package/server/renderer/handler.js +0 -252
  103. package/server/renderer/index.js +0 -12
  104. package/server/renderer/render.js +0 -73
  105. package/server/renderer/userAgentUtil.js +0 -55
  106. package/server/startServer.js +0 -65
  107. package/server/utils/userAgentUtil.js +0 -55
  108. package/server/utils/validator.js +0 -128
  109. package/tsconfig.json +0 -110
  110. package/types/caching.d.ts +0 -1
  111. package/types/config/config.d.ts +0 -19
  112. package/types/index.d.ts +0 -1
  113. package/types/logger/index.d.ts +0 -14
  114. package/types/reducer/index.d.ts +0 -22
  115. package/types/reducer/loadableConfigReducer.d.ts +0 -9
  116. package/types/router/ClientRouter.d.ts +0 -5
  117. package/types/router/ServerRouter.d.ts +0 -7
  118. package/types/router/index.d.ts +0 -8
  119. package/types/router.d.ts +0 -1
  120. package/types/scripts/build.d.ts +0 -1
  121. package/types/scripts/loadEnvironmentVariables.d.ts +0 -5
  122. package/types/scripts/loadScriptsBeforeServerStarts.d.ts +0 -1
  123. package/types/scripts/prepare.d.ts +0 -1
  124. package/types/scripts/registerAliases.d.ts +0 -1
  125. package/types/scripts/serve.d.ts +0 -1
  126. package/types/scripts/start.d.ts +0 -1
  127. package/types/scripts/validator.d.ts +0 -9
  128. package/types/scripts/verifyConfig.d.ts +0 -1
  129. package/types/server/mainIndex.d.ts +0 -1
  130. package/types/server/mainServer.d.ts +0 -2
  131. package/types/server/renderer/document/Body.d.ts +0 -11
  132. package/types/server/renderer/document/Head.d.ts +0 -11
  133. package/types/server/renderer/document/index.d.ts +0 -2
  134. package/types/server/renderer/extract.d.ts +0 -18
  135. package/types/server/renderer/handler.d.ts +0 -6
  136. package/types/server/renderer/index.d.ts +0 -2
  137. package/types/server/renderer/render.d.ts +0 -38
  138. package/types/server/renderer/userAgentUtil.d.ts +0 -1
  139. package/types/store/index.d.ts +0 -11
  140. package/types/store/index.dev.d.ts +0 -8
  141. package/types/store/index.prod.d.ts +0 -8
  142. package/types/webpack/babel-plugins/remove-client.plugin.d.ts +0 -10
  143. package/types/webpack/babel-plugins/remove-ssr.plugin.d.ts +0 -10
  144. package/types/webpack/babel.config.client.d.ts +0 -21
  145. package/types/webpack/babel.config.d.ts +0 -16
  146. package/types/webpack/babel.config.ssr.d.ts +0 -21
  147. package/types/webpack/base.babel.d.ts +0 -184
  148. package/types/webpack/development.client.babel.d.ts +0 -1
  149. package/types/webpack/plugins/mime-types.d.ts +0 -78
  150. package/types/webpack/plugins/route-manifest-plugin.d.ts +0 -1
  151. package/types/webpack/plugins/upload-assets-plugin.d.ts +0 -1
  152. package/types/webpack/production.client.babel.d.ts +0 -174
  153. package/types/webpack/production.ssr.babel.d.ts +0 -2
  154. package/types/webpack/scssParams.d.ts +0 -2
  155. package/webpack/babel-plugins/remove-client.plugin.js +0 -31
  156. package/webpack/babel-plugins/remove-ssr.plugin.js +0 -21
  157. package/webpack/babel.config.client.js +0 -24
  158. package/webpack/babel.config.js +0 -20
  159. package/webpack/babel.config.ssr.js +0 -24
  160. package/webpack/base.babel.js +0 -167
  161. package/webpack/development.client.babel.js +0 -82
  162. package/webpack/plugins/mime-types.js +0 -82
  163. package/webpack/plugins/route-manifest-copy.js +0 -122
  164. package/webpack/plugins/route-manifest-plugin.js +0 -122
  165. package/webpack/plugins/upload-assets-plugin.js +0 -181
  166. package/webpack/production.client.babel.js +0 -78
  167. package/webpack/production.ssr.babel.js +0 -61
  168. package/webpack/scssParams.js +0 -35
@@ -0,0 +1,5 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=_default;/**
2
+ * @description babel plugin used to remove unwanted code from the build.
3
+ * @return babel plugin object
4
+ */function _default(){return{name:"ast-transform",// not required
5
+ visitor:{ImportDefaultSpecifier(path){path.parentPath.parent.body=path.parentPath.parent.body.map(astStructure=>{if(astStructure.type==="VariableDeclaration"){if(astStructure.declarations[0]?.init?.type==="ArrowFunctionExpression"&&astStructure.declarations[0]?.init?.body?.body?.length>0){astStructure.declarations[0].init.body.body=astStructure.declarations[0].init.body.body.filter(node=>!(node?.type==="ExpressionStatement"&&node?.expression?.callee?.name==="useEffect"));}}if(astStructure?.type==="FunctionDeclaration"&&astStructure?.body?.body?.length>0){astStructure.body.body=astStructure.body.body.filter(node=>!(node?.type==="ExpressionStatement"&&node?.expression?.callee?.name==="useEffect"));}return astStructure;});}}};}
@@ -0,0 +1,5 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=_default;/**
2
+ * @description babel plugin used to remove unwanted code from the build.
3
+ * @return babel plugin object
4
+ */function _default(){return{name:"ast-transform",// not required
5
+ visitor:{ImportDefaultSpecifier(path){path.parentPath.parent.body=path.parentPath.parent.body.filter(val=>val?.expression?.left?.property?.name!=="serverSideFunction"&&val?.expression?.left?.property?.name!=="serverFetcher");}}};}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const isCompilerEnabled=!!_webpackConfig.default.reactCompiler;const reactCompilerOptions=typeof _webpackConfig.default.reactCompiler==="object"?_webpackConfig.default.reactCompiler:{target:"18"};var _default=exports.default={babelrc:false,presets:[["@babel/preset-typescript",{isTSX:true,allExtensions:true}],["@babel/preset-env",{targets:{browsers:"last 2 versions"}}],["@babel/preset-react",{runtime:"automatic"}]],plugins:[...(isCompilerEnabled?[["babel-plugin-react-compiler",reactCompilerOptions]]:[]),"@loadable/babel-plugin"],env:{production:{plugins:[require("./babel-plugins/remove-ssr.plugin").default,"transform-react-remove-prop-types"]},test:{presets:["@babel/preset-react"]}},ignore:["__TEST__"]};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const isCompilerEnabled=!!_webpackConfig.default.reactCompiler;const reactCompilerOptions=typeof _webpackConfig.default.reactCompiler==="object"?_webpackConfig.default.reactCompiler:{target:"18"};var _default=exports.default={babelrc:false,presets:[["@babel/preset-typescript",{isTSX:true,allExtensions:true}],["@babel/preset-env",{targets:{node:"current"}}],["@babel/preset-react",{runtime:"automatic"}]],plugins:[...(isCompilerEnabled?[["babel-plugin-react-compiler",reactCompilerOptions]]:[]),"@loadable/babel-plugin"],env:{development:{plugins:["react-refresh/babel"]},production:{plugins:[require("./babel-plugins/remove-client.plugin").default,"transform-react-remove-prop-types"]}},ignore:["__TEST__"]};
@@ -0,0 +1,8 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.basePlugins=void 0;var _path=_interopRequireDefault(require("path"));var _webpack=_interopRequireDefault(require("webpack"));var _miniCssExtractPlugin=_interopRequireDefault(require("mini-css-extract-plugin"));var _webpackBundleAnalyzer=require("webpack-bundle-analyzer");var _config=_interopRequireDefault(require("@catalyst/root/config.json"));var _package=require("@catalyst/template/package.json");var _scssParams=require("@catalyst/webpack/scssParams");var _babelConfig=_interopRequireDefault(require("@catalyst/webpack/babel.config.ssr"));var _babelConfig2=_interopRequireDefault(require("@catalyst/webpack/babel.config.client"));var _loadEnvironmentVariables=_interopRequireDefault(require("@catalyst/scripts/loadEnvironmentVariables"));var _config2=require("@catalyst/template/config/config.json");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}(0,_loadEnvironmentVariables.default)();const isDev=process.env.NODE_ENV==="development";const isSSR=!!process.env.SSR||false;const basePlugins=exports.basePlugins=[// **This loads process.env variable during webpack build process
2
+ new _webpack.default.DefinePlugin({"process.env":([..._config2.CLIENT_ENV_VARIABLES,"BUILD_OUTPUT_PATH","PUBLIC_STATIC_ASSET_PATH","PUBLIC_STATIC_ASSET_URL","src_path","PWD"]||[]).reduce((clientEnvMap,env)=>{clientEnvMap[env]=JSON.stringify(process.env[env]);return clientEnvMap;},{})}),// ** This is used to analyze bundle size.
3
+ _config2.ANALYZE_BUNDLE&&new _webpackBundleAnalyzer.BundleAnalyzerPlugin({generateStatsFile:_config2.ANALYZE_BUNDLE}),new _webpack.default.IgnorePlugin({resourceRegExp:/^\.\/locale$/,contextRegExp:/moment$/})];const{IS_DEV_COMMAND,PUBLIC_STATIC_ASSET_URL,PUBLIC_STATIC_ASSET_PATH,WEBPACK_DEV_SERVER_HOSTNAME,WEBPACK_DEV_SERVER_PORT,NODE_SERVER_HOSTNAME,NODE_SERVER_PORT}=process.env;let publicPath=isDev?`http://${WEBPACK_DEV_SERVER_HOSTNAME}:${WEBPACK_DEV_SERVER_PORT}/`:`${PUBLIC_STATIC_ASSET_URL}${PUBLIC_STATIC_ASSET_PATH}`;// serves assets from local on running devBuild and devServe command
4
+ if(IS_DEV_COMMAND==="true"&&!isDev){publicPath=`http://${NODE_SERVER_HOSTNAME}:${NODE_SERVER_PORT}/assets/`;}var _default=exports.default={context:_path.default.resolve(process.env.src_path),mode:isDev?"development":"production",entry:{app:[_path.default.resolve(process.env.src_path,"./client/index.js")]},output:{path:_path.default.join(process.env.src_path,`${process.env.BUILD_OUTPUT_PATH}/public`),filename:process.env.NODE_ENV==="development"?"[name].bundle.js":"[name].[contenthash].js",chunkFilename:process.env.NODE_ENV==="development"?"[name].bundle.js":"[name].[contenthash].js",publicPath:publicPath},resolve:{fallback:{url:require.resolve("url")},extensions:[".js",".jsx",".scss",".ts",".tsx"],alias:Object.keys(_package._moduleAliases||{}).reduce((moduleEnvMap,alias)=>{moduleEnvMap[alias]=_path.default.join(process.env.src_path,..._package._moduleAliases[alias].split("/"));return moduleEnvMap;},{})},plugins:basePlugins,module:{rules:[{test:/\.jsx$|\.js$/,exclude:_path.default.resolve(process.env.src_path,"./node_modules"),use:{loader:"babel-loader",options:isSSR?_babelConfig.default:_babelConfig2.default}},{test:/\.tsx$|\.ts$/,exclude:_path.default.resolve(process.env.src_path,"./node_modules"),use:{loader:"babel-loader",options:isSSR?_babelConfig.default:_babelConfig2.default}},{// This loader processes all the .scss files that should be modularized. This should exclude anything inside node_modules and everything inside src/css/base since they should be globally scoped.
5
+ test:/\.scss$/,exclude:[_path.default.resolve(process.env.src_path,"./node_modules"),_path.default.resolve(process.env.src_path,"./src/static/css/base")],use:[isDev&&"css-hot-loader",!isSSR&&_miniCssExtractPlugin.default.loader,{loader:"css-loader",options:{modules:{mode:"local",exportOnlyLocals:!isDev&&isSSR,localIdentName:isDev?_config.default.cssModulesIdentifierDev:_config.default.cssModulesIdentifierProd}}},{loader:"postcss-loader"},{loader:"sass-loader",options:{additionalData:"$font_url: "+(0,_scssParams.fontUrl)()+";"+"$url_for: "+(0,_scssParams.imageUrl)()+";"}},{loader:"sass-resources-loader",options:{resources:[_path.default.resolve(process.env.src_path,"./src/static/css/resources/*.scss")]}}]},{// In development mode, client request app.css ,which has all the css in node_modules and src/static/css/base, This is served by webpack-dev-server. However in prod this css is injected in the doc sent from the server and needs to be global, so we don't pass the files through css-loader to be modularized.
6
+ test:/\.scss$/,include:[_path.default.resolve(process.env.src_path,"./node_modules"),_path.default.resolve(process.env.src_path,"./src/static/css/base")],use:[isDev&&"css-hot-loader",!isSSR&&_miniCssExtractPlugin.default.loader,{loader:"css-loader"},{loader:"postcss-loader"},{loader:"sass-loader",options:{additionalData:"$font_url: "+(0,_scssParams.fontUrl)()+";"+"$url_for: "+(0,_scssParams.imageUrl)()+";"}},{loader:"sass-resources-loader",options:{resources:[_path.default.resolve(process.env.src_path,"./src/static/css/resources/*.scss")]}}]},{test:/\.css$/,use:[!isSSR&&_miniCssExtractPlugin.default.loader,"css-loader","postcss-loader"]},{test:/\.(png|jpg|gif|jpeg|ico?)$/,use:["url-loader?limit=10240","img-loader"]},{test:/\.svg$/i,issuer:/\.[jt]sx?$/,use:["@svgr/webpack","url-loader?limit=10240","img-loader"]},{// This loader loads fonts in src/static/fonts using file-loader
7
+ test:/\.(ttf|eot|woff2?)$/,use:[{loader:"url-loader",options:{limit:10240,outputPath:[_path.default.resolve(process.env.src_path,"./src/static/fonts/")]}},"file-loader"]},{// This loader loads html files
8
+ test:/\.html$/,use:[{loader:"html-loader",options:{minimize:{minifyJS:true,minifyCSS:true,removeComments:false,collapseWhitespace:true}}}]}]}};
@@ -0,0 +1,19 @@
1
+ "use strict";var _webpack=_interopRequireDefault(require("webpack"));var _webpackMerge=_interopRequireWildcard(require("webpack-merge"));var _webpackDevServer=_interopRequireDefault(require("webpack-dev-server"));var _webpackPlugin=_interopRequireDefault(require("@loadable/webpack-plugin"));var _miniCssExtractPlugin=_interopRequireDefault(require("mini-css-extract-plugin"));var _reactRefreshWebpackPlugin=_interopRequireDefault(require("@pmmmwh/react-refresh-webpack-plugin"));var _path=_interopRequireDefault(require("path"));var _webpackNodeExternals=_interopRequireDefault(require("webpack-node-externals"));var _appRootPath=_interopRequireDefault(require("app-root-path"));var _registerAliases=require("../scripts/registerAliases.js");var _config=_interopRequireDefault(require("@catalyst/root/config.json"));var _baseBabel=_interopRequireDefault(require("@catalyst/webpack/base.babel.js"));var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// Import the catalystResultMap for SSR support
2
+ const{WEBPACK_DEV_SERVER_PORT,WEBPACK_DEV_SERVER_HOSTNAME}=process.env;// Create client config
3
+ const webpackClientConfig=(0,_webpackMerge.default)(_baseBabel.default,{devtool:"inline-source-map",stats:"none",infrastructureLogging:{level:"none"},plugins:[new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..")}}),new _reactRefreshWebpackPlugin.default({overlay:{entry:false}}),new _miniCssExtractPlugin.default({filename:_config.default.cssChunkFileName,ignoreOrder:true}),..._webpackConfig.default.developmentPlugins].filter(Boolean),optimization:{runtimeChunk:"single",moduleIds:"deterministic",splitChunks:_webpackConfig.default.splitChunksConfig?_webpackConfig.default.splitChunksConfig:{cacheGroups:{commonVendor:{test:/[\\/]node_modules[\\/](react|react-dom|react-redux|react-router|react-router-dom|redux|redux-thunk|axios|react-loadable-visibility|react-helmet-async|react-fast-compare|react-async-script|babel|@loadable\/component|catalyst)[\\/]/,name:"commonVendor",minSize:30000},utilityVendor:{maxInitialRequests:Infinity,chunks:"all",// minSize: 0, // Enable to replicate stand alone chunking for all packages
4
+ reuseExistingChunk:true,// Disable to replicate stand alone chunking for all packages
5
+ minRemainingSize:1000,// Disable to replicate stand alone chunking for all packages
6
+ test:/[\\/]node_modules[\\/]/,name(module){const moduleFileName=module.identifier().split("node_modules")?.[1]?.split("/").reverse().slice(0,3).reduce((item,current)=>{item=current+"."+item;return item;},[]);return`npm.${moduleFileName}`;}}}}}});// Create SSR config
7
+ const webpackSSRConfig=(0,_webpackMerge.mergeWithCustomize)({customizeArray:(0,_webpackMerge.customizeArray)({entry:"replace",optimization:"replace",plugins:"prepend"}),customizeObject:(0,_webpackMerge.customizeObject)({entry:"replace",optimization:"replace",plugins:"prepend"})})(_baseBabel.default,{mode:"development",stats:"none",target:"node",entry:{handler:_path.default.resolve(__dirname,"..","./server/renderer/handler.js")},externals:[/\.(html|png|gif|jpg)$/,(0,_webpackNodeExternals.default)({modulesDir:_path.default.resolve(process.env.src_path,"./node_modules"),allowlist:_webpackConfig.default.transpileModules?_webpackConfig.default.transpileModules:[]}),(0,_webpackNodeExternals.default)({modulesDir:_path.default.join(_appRootPath.default.path,"./node_modules"),allowlist:_webpackConfig.default.transpileModules?_webpackConfig.default.transpileModules:[]})],resolve:{alias:_registerAliases.catalystResultMap},output:{path:_path.default.join(__dirname,"../..",".catalyst-dev","/server","/renderer"),chunkFilename:_config.default.chunkFileName,filename:"handler.development.js",libraryTarget:"commonjs"},plugins:[new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..",".catalyst-dev","/server","/renderer")}}),new _miniCssExtractPlugin.default({filename:_config.default.cssChunkFileName,ignoreOrder:true}),..._webpackConfig.default.ssrPlugins].filter(Boolean)});// Create separate compiler for SSR that writes to disk
8
+ const ssrCompiler=(0,_webpack.default)(webpackSSRConfig);const watchInstance=ssrCompiler.watch({},err=>{if(err){console.error(err);return;}});// Create dev server for client-side only
9
+ let devServer=new _webpackDevServer.default({port:WEBPACK_DEV_SERVER_PORT,host:WEBPACK_DEV_SERVER_HOSTNAME,static:{publicPath:webpackClientConfig.output.publicPath},hot:true,historyApiFallback:true,headers:{"Access-Control-Allow-Origin":"*"},client:{logging:"error",overlay:{errors:false,warnings:false,runtimeErrors:false},reconnect:true}},(0,_webpack.default)(webpackClientConfig));devServer.startCallback(()=>{console.log("Catalyst is compiling your files.");console.log("Please wait until bundling is finished.\n");});// Cleanup on exit
10
+ const cleanup=()=>{// Close webpack watch
11
+ watchInstance.close(()=>{// Delete the development handler file
12
+ try{// Delete the file
13
+ require("fs").unlinkSync(_path.default.join(__dirname,"../..",".catalyst-dev","/server","/renderer","handler.development.js"));// Try to remove the renderer directory
14
+ require("fs").rmdirSync(_path.default.join(process.env.src_path,".catalyst-dev","/renderer"));// Try to remove the parent directory
15
+ require("fs").rmdirSync(_path.default.join(process.env.src_path,".catalyst-dev"));}catch(err){// Ignore errors during cleanup
16
+ }process.exit();});};// Handle various ways the process might exit
17
+ process.on("SIGINT",cleanup);// Ctrl+C
18
+ process.on("SIGTERM",cleanup);// kill
19
+ process.on("exit",cleanup);// normal exit
@@ -0,0 +1,4 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _registerAliases2=require("../scripts/registerAliases.js");require("../scripts/loadScriptsBeforeServerStarts.js");var _path=_interopRequireDefault(require("path"));var _webpackPlugin=_interopRequireDefault(require("@loadable/webpack-plugin"));var _miniCssExtractPlugin=_interopRequireDefault(require("mini-css-extract-plugin"));var _webpackMerge=require("webpack-merge");var _base=_interopRequireDefault(require("@catalyst/webpack/base.babel"));var _config=_interopRequireDefault(require("@catalyst/root/config.json"));var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}/* eslint-disable */const clientConfig=(0,_webpackMerge.mergeWithCustomize)({customizeArray:(0,_webpackMerge.customizeArray)({entry:"prepend",plugins:"append",module:"prepend"}),customizeObject:(0,_webpackMerge.customizeObject)({entry:"prepend",plugins:"append",module:"prepend"})})(_base.default,{mode:"production",stats:"errors-only",resolve:{alias:_registerAliases2.catalystResultMap},optimization:{runtimeChunk:"single",moduleIds:"deterministic",splitChunks:_webpackConfig.default.splitChunksConfig?_webpackConfig.default.splitChunksConfig:{cacheGroups:{commonVendor:{chunks:"all",test:/[\\/]node_modules[\\/](react|react-dom|react-redux|react-router|react-router-dom|redux|redux-thunk|axios|react-loadable-visibility|react-helmet-async|react-fast-compare|react-async-script|babel|@loadable\/component|catalyst)[\\/]/,name:"commonVendor",minSize:400000,maxSize:400000},utilityVendor:{maxInitialRequests:Infinity,chunks:"all",// minSize: 0, // Enable to replicate stand alone chunking for all packages
2
+ reuseExistingChunk:true,// Disable to replicate stand alone chunking for all packages
3
+ minRemainingSize:1000,// Disable to replicate stand alone chunking for all packages
4
+ minSize:1000,maxSize:120000,test:/[\\/]node_modules[\\/]/,name(module){const moduleFileName=module.identifier().split("/").reverse().slice(0,3).reduce((item,current)=>{item=current+"."+item;return item;},[]);return`npm.${moduleFileName}`;}}},chunks:"all",name(module){const moduleFileName=module.identifier().split("/").reverse().slice(0,3).reduce((item,current)=>{item=current+"."+item;return item;},[]);return`npm.${moduleFileName}`;}}},plugins:[new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..")}}),new _miniCssExtractPlugin.default({filename:_config.default.cssChunkFileName,ignoreOrder:true}),..._webpackConfig.default.clientPlugins]});var _default=exports.default=clientConfig;
@@ -0,0 +1,4 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _registerAliases2=require("../scripts/registerAliases.js");require("../scripts/loadScriptsBeforeServerStarts.js");var _path=_interopRequireDefault(require("path"));var _webpackNodeExternals=_interopRequireDefault(require("webpack-node-externals"));var _webpackPlugin=_interopRequireDefault(require("@loadable/webpack-plugin"));var _appRootPath=_interopRequireDefault(require("app-root-path"));var _base=_interopRequireDefault(require("@catalyst/webpack/base.babel"));var _config=_interopRequireDefault(require("@catalyst/root/config.json"));var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}/* eslint-disable */const{mergeWithCustomize,customizeArray,customizeObject}=require("webpack-merge");const ssrConfig=mergeWithCustomize({customizeArray:customizeArray({entry:"replace",optimization:"replace",plugins:"prepend"}),customizeObject:customizeObject({entry:"replace",optimization:"replace",plugins:"prepend"})})(_base.default,{mode:"production",stats:"errors-only",optimization:{splitChunks:{chunks:"all",minSize:10000000,name:false}},resolve:{alias:_registerAliases2.catalystResultMap},plugins:[..._webpackConfig.default.ssrPlugins,new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..")}})],target:"node",entry:{handler:_path.default.resolve(__dirname,"..","./server/renderer/handler.js")},externals:[// images are handled by isomorphic webpack.
2
+ // html files are required directly
3
+ /\.(html|png|gif|jpg)$/,// treat all node modules as external to keep this bundle small
4
+ (0,_webpackNodeExternals.default)({modulesDir:_path.default.resolve(process.env.src_path,"./node_modules"),allowlist:_webpackConfig.default.transpileModules?_webpackConfig.default.transpileModules:[]}),(0,_webpackNodeExternals.default)({modulesDir:_path.default.join(_appRootPath.default.path,"./node_modules"),allowlist:_webpackConfig.default.transpileModules?_webpackConfig.default.transpileModules:[]})],output:{path:_path.default.join(process.env.src_path,process.env.BUILD_OUTPUT_PATH,"/renderer"),chunkFilename:_config.default.chunkFileNameProd,filename:"handler.js",libraryTarget:"commonjs"}});var _default=exports.default=ssrConfig;
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.imageUrl=exports.fontUrl=void 0;/**
2
+ * @description generate assets url according to enviorment
3
+ * @returns returns path required for loading assets according to enviorment
4
+ */const imageUrl=()=>{const{PUBLIC_STATIC_ASSET_URL,PUBLIC_STATIC_ASSET_PATH,IS_DEV_COMMAND,NODE_SERVER_HOSTNAME,NODE_SERVER_PORT}=process.env;let publicPath=`${PUBLIC_STATIC_ASSET_URL}${PUBLIC_STATIC_ASSET_PATH}`;// serves assets from localhost on running devBuild and devServe command
5
+ if(IS_DEV_COMMAND==="true"){publicPath=`http://${NODE_SERVER_HOSTNAME}:${NODE_SERVER_PORT}/${PUBLIC_STATIC_ASSET_PATH}`;}const imagePath=JSON.stringify(`${publicPath}images/`);return imagePath;};/**
6
+ * @description generate assets font url according to enviorment
7
+ * @returns returns path required for loading fonts according to enviorment
8
+ */exports.imageUrl=imageUrl;const fontUrl=()=>{const{PUBLIC_STATIC_ASSET_URL,PUBLIC_STATIC_ASSET_PATH,IS_DEV_COMMAND,NODE_SERVER_HOSTNAME,NODE_SERVER_PORT}=process.env;let publicPath=`${PUBLIC_STATIC_ASSET_URL}${PUBLIC_STATIC_ASSET_PATH}`;// serves assets from localhost on running devBuild and devServe command
9
+ if(IS_DEV_COMMAND==="true"){publicPath=`http://${NODE_SERVER_HOSTNAME}:${NODE_SERVER_PORT}/${PUBLIC_STATIC_ASSET_PATH}`;}const fontPath=JSON.stringify(`${publicPath}fonts/`);return fontPath;};exports.fontUrl=fontUrl;
package/license ADDED
@@ -0,0 +1,10 @@
1
+ MIT License
2
+
3
+ Copyright (c) 1mg Healthcare Solutions Private Limited.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10
+
package/package.json CHANGED
@@ -1,85 +1,123 @@
1
1
  {
2
- "name": "catalyst-core-internal",
3
- "version": "0.0.1-beta.6",
4
- "main": "index.js",
5
- "description": "Web framework that provides great performance out of the box",
6
- "bin": {
7
- "catalyst": "bin/catalyst.js"
8
- },
9
- "scripts": {
10
- "prepare": "babel src --out-dir . ",
11
- "start": "node ./scripts/checkVersion && npm run start:client & npm run start:server",
12
- "start:client": "npx babel-node -r ./scripts/loadScriptsBeforeServerStarts.js webpack/development.client.babel --no-warnings=ExperimentalWarning --no-warnings=BABEL",
13
- "start:server": "npx babel-node -r ./scripts/loadScriptsBeforeServerStarts.js ./server/startServer.js --watch-path=${npm_config_src_path}/server --watch-path=${npm_config_src_path}/src --ignore='__IGNORE__' --no-warnings=ExperimentalWarning --no-warnings=BABEL",
14
- "build": "node ./scripts/checkVersion && npm run build:prepare && npm run build:client && npm run build:ssr && npm run build:server",
15
- "build:prepare": "rm -rf ${npm_config_src_path}/build & node ./scripts/loadScriptsBeforeServerStarts.js",
16
- "build:client": "APPLICATION=${npm_config_app_name} NODE_ENV=production webpack --config ./webpack/production.client.babel.js --progress",
17
- "build:ssr": "APPLICATION=${npm_config_app_name} NODE_ENV=production SSR=true webpack --config ./webpack/production.ssr.babel.js --progress",
18
- "build:server": "APPLICATION=${npm_config_app_name} NODE_ENV=production npx babel ./server --out-dir ${npm_config_src_path}/build --ignore '**/*.test.js,./server/renderer/handler.js' && APPLICATION=${npm_config_app_name} npx babel ${npm_config_src_path}/server --out-dir ${npm_config_src_path}/build",
19
- "serve": "APPLICATION=${npm_config_app_name} NODE_ENV=production node -r ./scripts/loadScriptsBeforeServerStarts.js ${npm_config_src_path}/build/startServer.js",
20
- "prepublishOnly": "npm i && npm run prepare"
21
- },
22
- "license": "ISC",
23
- "dependencies": {
24
- "@babel/cli": "^7.23.0",
25
- "@babel/core": "^7.23.2",
26
- "@babel/node": "^7.22.19",
27
- "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
28
- "@babel/plugin-transform-react-jsx": "^7.22.15",
29
- "@babel/preset-env": "^7.23.2",
30
- "@babel/preset-react": "^7.22.15",
31
- "@babel/register": "^7.22.15",
32
- "@loadable/babel-plugin": "^5.16.1",
33
- "@loadable/component": "^5.15.3",
34
- "@loadable/server": "^5.16.1",
35
- "@loadable/webpack-plugin": "^5.15.2",
36
- "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
37
- "@svgr/webpack": "^8.1.0",
38
- "@tata1mg/router": "^0.0.1-beta.0",
39
- "app-root-path": "^3.1.0",
40
- "babel-loader": "^9.1.3",
41
- "babel-plugin-dynamic-import-node": "^2.3.3",
42
- "babel-plugin-syntax-dynamic-import": "^6.18.0",
43
- "babel-plugin-transform-class-properties": "^6.24.1",
44
- "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
45
- "babel-plugin-transform-export-extensions": "^6.22.0",
46
- "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
47
- "body-parser": "^1.20.2",
48
- "chokidar": "^3.6.0",
49
- "compression": "^1.7.4",
50
- "cookie-parser": "^1.4.6",
51
- "css-hot-loader": "^1.4.4",
52
- "css-loader": "^6.8.1",
53
- "css-modules-require-hook": "^4.2.3",
54
- "express": "^4.18.2",
55
- "express-static-gzip": "^2.1.7",
56
- "file-loader": "^6.2.0",
57
- "html-loader": "^4.2.0",
58
- "img-loader": "^4.0.0",
59
- "isomorphic-dompurify": "^1.13.0",
60
- "mini-css-extract-plugin": "^2.7.6",
61
- "module-alias": "^2.2.3",
62
- "picocolors": "^1.0.0",
63
- "postcss-loader": "^7.3.3",
64
- "react": "^18.2.0",
65
- "react-dom": "^18.2.0",
66
- "react-redux": "^8.1.3",
67
- "react-refresh": "^0.14.0",
68
- "react-router-dom": "^6.16.0",
69
- "redux": "^4.2.1",
70
- "sass": "^1.69.5",
71
- "sass-loader": "^13.3.2",
72
- "sass-resources-loader": "^2.2.5",
73
- "ua-parser-js": "^1.0.37",
74
- "url": "^0.11.3",
75
- "url-loader": "^4.1.1",
76
- "webpack": "^5.88.2",
77
- "webpack-bundle-analyzer": "^4.9.1",
78
- "webpack-cli": "^5.1.4",
79
- "webpack-dev-server": "^4.15.2",
80
- "webpack-merge": "^5.9.0",
81
- "webpack-node-externals": "^3.0.0",
82
- "winston": "^3.11.0",
83
- "winston-daily-rotate-file": "^5.0.0"
84
- }
2
+ "name": "catalyst-core-internal",
3
+ "version": "0.0.1-beta.61",
4
+ "main": "index.js",
5
+ "description": "Web framework that provides great performance out of the box",
6
+ "bin": {
7
+ "catalyst": "bin/catalyst.js"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/tata1mg/catalyst-core.git"
12
+ },
13
+ "_moduleAliases": {
14
+ "@catalyst/template": ".",
15
+ "@catalyst/template/src": "src",
16
+ "@catalyst/template/routes": "src/js/routes",
17
+ "@catalyst/template/server": "server",
18
+ "@catalyst/template/store": "src/js/store",
19
+ "@catalyst/template/config": "config",
20
+ "@catalyst": ".",
21
+ "@catalyst/root": "../",
22
+ "@catalyst/router": "router",
23
+ "@catalyst/scripts": "scripts",
24
+ "@catalyst/server": "server",
25
+ "@catalyst/webpack": "webpack"
26
+ },
27
+ "exports": {
28
+ ".": "./dist/index.js",
29
+ "./logger": "./dist/logger.js",
30
+ "./caching": "./dist/caching.js",
31
+ "./router/ClientRouter": "./dist/router/ClientRouter.js"
32
+ },
33
+ "scripts": {
34
+ "lint": "eslint .",
35
+ "test:dev": "cd template && npm run test:dev && cd ..",
36
+ "test:prod": "cd template && npm run build && npm run test:prod && cd ..",
37
+ "lint-staged": "lint-staged",
38
+ "prettify": "prettier . --write",
39
+ "prepare": "babel src --out-dir ./dist",
40
+ "prepublishOnly": "npm i && npm run prepare"
41
+ },
42
+ "license": "MIT",
43
+ "dependencies": {
44
+ "@babel/cli": "^7.23.0",
45
+ "@babel/core": "^7.23.2",
46
+ "@babel/node": "^7.22.19",
47
+ "@babel/preset-env": "^7.23.2",
48
+ "@babel/preset-react": "^7.22.15",
49
+ "@babel/preset-typescript": "^7.24.7",
50
+ "@babel/register": "^7.22.15",
51
+ "@dr.pogodin/css-modules-require-hook": "^4.7.3",
52
+ "@loadable/babel-plugin": "^5.16.1",
53
+ "@loadable/component": "^5.15.3",
54
+ "@loadable/server": "^5.16.1",
55
+ "@loadable/webpack-plugin": "^5.15.2",
56
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
57
+ "@svgr/webpack": "^8.1.0",
58
+ "@tata1mg/router": "0.0.1-beta.7",
59
+ "app-root-path": "^3.1.0",
60
+ "babel-loader": "^9.1.3",
61
+ "babel-plugin-react-compiler": "^19.0.0-beta-decd7b8-20250118",
62
+ "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
63
+ "body-parser": "^1.20.2",
64
+ "chokidar": "^3.6.0",
65
+ "compression": "^1.7.4",
66
+ "cookie-parser": "^1.4.6",
67
+ "cross-env": "^7.0.3",
68
+ "css-hot-loader": "^1.4.4",
69
+ "css-loader": "^6.8.1",
70
+ "express": "^4.18.2",
71
+ "express-static-gzip": "^2.1.7",
72
+ "file-loader": "^6.2.0",
73
+ "html-loader": "^4.2.0",
74
+ "img-loader": "^4.0.0",
75
+ "mini-css-extract-plugin": "^2.7.6",
76
+ "module-alias": "^2.2.3",
77
+ "picocolors": "^1.0.0",
78
+ "postcss-loader": "^7.3.3",
79
+ "postcss-scss": "^4.0.9",
80
+ "react": "^18.2.0",
81
+ "react-compiler-runtime": "^19.0.0-beta-decd7b8-20250118",
82
+ "react-dom": "^18.2.0",
83
+ "react-redux": "^8.1.3",
84
+ "react-refresh": "^0.14.0",
85
+ "react-router-dom": "^6.16.0",
86
+ "redux": "^4.2.1",
87
+ "sass": "^1.69.5",
88
+ "sass-loader": "^13.3.2",
89
+ "sass-resources-loader": "^2.2.5",
90
+ "ua-parser-js": "^1.0.37",
91
+ "url": "^0.11.3",
92
+ "url-loader": "^4.1.1",
93
+ "webpack": "^5.88.2",
94
+ "webpack-bundle-analyzer": "^4.9.1",
95
+ "webpack-cli": "^5.1.4",
96
+ "webpack-dev-server": "^4.15.2",
97
+ "webpack-merge": "^5.9.0",
98
+ "webpack-node-externals": "^3.0.0",
99
+ "winston": "^3.11.0",
100
+ "winston-daily-rotate-file": "^5.0.0"
101
+ },
102
+ "devDependencies": {
103
+ "@babel/eslint-parser": "^7.19.1",
104
+ "@commitlint/cli": "^19.3.0",
105
+ "@commitlint/config-conventional": "^19.2.2",
106
+ "eslint": "^8.26.0",
107
+ "eslint-plugin-babel": "^5.3.1",
108
+ "eslint-plugin-react": "^7.34.1",
109
+ "eslint-plugin-react-compiler": "^19.0.0-beta-decd7b8-20250118",
110
+ "eslint-plugin-react-hooks": "^4.6.0",
111
+ "eslint-plugin-risxss": "^2.1.0",
112
+ "eslint-plugin-security": "^3.0.0",
113
+ "husky": "^9.0.11",
114
+ "lint-staged": "^15.2.2",
115
+ "prettier": "^3.2.5"
116
+ },
117
+ "lint-staged": {
118
+ "*.{js,jsx}": [
119
+ "eslint .",
120
+ "prettier . --write"
121
+ ]
122
+ }
85
123
  }
@@ -0,0 +1,25 @@
1
+ ## Getting Started
2
+
3
+ Commence development by initiating the the following commands:
4
+
5
+ For running the application in development mode, run:
6
+
7
+ ```bash
8
+ npm run start
9
+ ```
10
+
11
+ For a production build, change NODE_ENV to "production" in config/config.json, then run :
12
+
13
+ ```bash
14
+ npm run build
15
+ ```
16
+
17
+ To serve the production build, execute:
18
+
19
+ ```bash
20
+ npm run serve
21
+ ```
22
+
23
+ ## Documentation
24
+
25
+ Explore the complete documentation at [https://catalyst.1mg.com](https://catalyst.1mg.com).
@@ -0,0 +1,16 @@
1
+ const fetchFunction = (url, options) => {
2
+ let baseURL = process.env.API_URL
3
+ let finalUrl = baseURL + url
4
+
5
+ // Request Interceptor - modify request here
6
+
7
+ return fetch(finalUrl, options)
8
+ .then(response => {
9
+ return response.json().then(parsedResponse => {
10
+ // Response Interceptor - modify response here
11
+ return parsedResponse
12
+ })
13
+ })
14
+ }
15
+
16
+ export default fetchFunction
@@ -0,0 +1,23 @@
1
+ import React from "react"
2
+ import "./styles"
3
+ import { hydrateRoot } from "react-dom/client"
4
+ import { loadableReady } from "@loadable/component"
5
+ import { RouterProvider } from "@tata1mg/router"
6
+ import clientRouter from "catalyst-core/router/ClientRouter"
7
+
8
+ window.addEventListener("load", () => {
9
+ loadableReady(() => {
10
+ const { __ROUTER_INITIAL_DATA__: routerInitialData } = window
11
+
12
+ const router = clientRouter({ routerInitialState: routerInitialData })
13
+
14
+ const Application = (
15
+ <React.StrictMode>
16
+ <RouterProvider router={router} />
17
+ </React.StrictMode>
18
+ )
19
+
20
+ const container = document.getElementById("app")
21
+ hydrateRoot(container, Application)
22
+ })
23
+ })
@@ -0,0 +1,4 @@
1
+ // Include initial base styles. Global styles will come here.
2
+
3
+ import "@css/base/index.scss";
4
+ import "@css/base/pet-styles.scss";
@@ -0,0 +1,13 @@
1
+ {
2
+ "NODE_SERVER_HOSTNAME": "localhost",
3
+ "NODE_SERVER_PORT": 3005,
4
+ "WEBPACK_DEV_SERVER_HOSTNAME": "localhost",
5
+ "WEBPACK_DEV_SERVER_PORT": 3006,
6
+ "BUILD_OUTPUT_PATH": "build",
7
+ "PUBLIC_STATIC_ASSET_PATH": "/assets/",
8
+ "PUBLIC_STATIC_ASSET_URL": "http://localhost:3005",
9
+ "API_URL": "",
10
+ "ANALYZE_BUNDLE": false,
11
+ "CUSTOM_VAR": "custom",
12
+ "CLIENT_ENV_VARIABLES": ["API_URL", "CUSTOM_VAR"]
13
+ }