catalyst-core-internal 0.0.1-beta.52 → 0.0.1-beta.54

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 (74) hide show
  1. package/changelog.md +2 -1
  2. package/dist/scripts/loadScriptsBeforeServerStarts.js +1 -1
  3. package/dist/scripts/start.js +1 -1
  4. package/dist/server/renderer/document/Head.js +1 -1
  5. package/dist/server/renderer/extract.js +1 -1
  6. package/dist/server/renderer/handler.js +6 -4
  7. package/dist/server/renderer/index.js +1 -1
  8. package/dist/server/startServer.js +1 -1
  9. package/dist/webpack/babel.config.client.js +1 -1
  10. package/dist/webpack/babel.config.ssr.js +1 -1
  11. package/dist/webpack/base.babel.js +2 -2
  12. package/dist/webpack/development.client.babel.js +2 -18
  13. package/dist/webpack/production.ssr.babel.js +1 -1
  14. package/package.json +1 -2
  15. package/run.sh +2 -2
  16. package/dist/native/androidProject/app/build.gradle.kts +0 -180
  17. package/dist/native/androidProject/app/proguard-rules.pro +0 -21
  18. package/dist/native/androidProject/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.kt +0 -24
  19. package/dist/native/androidProject/app/src/main/AndroidManifest.xml +0 -28
  20. package/dist/native/androidProject/app/src/main/java/com/example/myapplication/MainActivity.kt +0 -278
  21. package/dist/native/androidProject/app/src/main/java/com/example/myapplication/WebCacheManager.kt +0 -331
  22. package/dist/native/androidProject/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  23. package/dist/native/androidProject/app/src/main/res/drawable/ic_launcher_foreground.xml +0 -30
  24. package/dist/native/androidProject/app/src/main/res/layout/activity_main.xml +0 -22
  25. package/dist/native/androidProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -6
  26. package/dist/native/androidProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -6
  27. package/dist/native/androidProject/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  28. package/dist/native/androidProject/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  29. package/dist/native/androidProject/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  30. package/dist/native/androidProject/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  31. package/dist/native/androidProject/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  32. package/dist/native/androidProject/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  33. package/dist/native/androidProject/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  34. package/dist/native/androidProject/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  35. package/dist/native/androidProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  36. package/dist/native/androidProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  37. package/dist/native/androidProject/app/src/main/res/values/colors.xml +0 -10
  38. package/dist/native/androidProject/app/src/main/res/values/strings.xml +0 -3
  39. package/dist/native/androidProject/app/src/main/res/values/themes.xml +0 -15
  40. package/dist/native/androidProject/app/src/main/res/values-night/themes.xml +0 -15
  41. package/dist/native/androidProject/app/src/main/res/xml/backup_rules.xml +0 -13
  42. package/dist/native/androidProject/app/src/main/res/xml/data_extraction_rules.xml +0 -19
  43. package/dist/native/androidProject/app/src/test/java/com/example/myapplication/ExampleUnitTest.kt +0 -17
  44. package/dist/native/androidProject/build.gradle.kts +0 -5
  45. package/dist/native/androidProject/gradle/libs.versions.toml +0 -26
  46. package/dist/native/androidProject/gradle/wrapper/gradle-wrapper.jar +0 -0
  47. package/dist/native/androidProject/gradle/wrapper/gradle-wrapper.properties +0 -6
  48. package/dist/native/androidProject/gradle.properties +0 -23
  49. package/dist/native/androidProject/gradlew +0 -185
  50. package/dist/native/androidProject/gradlew.bat +0 -89
  51. package/dist/native/androidProject/settings.gradle.kts +0 -35
  52. package/dist/native/androidSetup.js +0 -2
  53. package/dist/native/build.swift +0 -31
  54. package/dist/native/buildAppAndroid.js +0 -8
  55. package/dist/native/buildAppIos.js +0 -41
  56. package/dist/native/iosnativeWebView/iosnativeWebView/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  57. package/dist/native/iosnativeWebView/iosnativeWebView/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -13
  58. package/dist/native/iosnativeWebView/iosnativeWebView/Assets.xcassets/Contents.json +0 -6
  59. package/dist/native/iosnativeWebView/iosnativeWebView/CacheManager.swift +0 -249
  60. package/dist/native/iosnativeWebView/iosnativeWebView/ContentView.swift +0 -41
  61. package/dist/native/iosnativeWebView/iosnativeWebView/Info.plist +0 -13
  62. package/dist/native/iosnativeWebView/iosnativeWebView/Preview Content/Preview Assets.xcassets/Contents.json +0 -6
  63. package/dist/native/iosnativeWebView/iosnativeWebView/ResourceURLProtocol.swift +0 -134
  64. package/dist/native/iosnativeWebView/iosnativeWebView/WebView.swift +0 -79
  65. package/dist/native/iosnativeWebView/iosnativeWebView/WebViewModel.swift +0 -47
  66. package/dist/native/iosnativeWebView/iosnativeWebView/WebViewNavigationDelegate.swift +0 -145
  67. package/dist/native/iosnativeWebView/iosnativeWebView/iosnativeWebViewApp.swift +0 -17
  68. package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/project.pbxproj +0 -601
  69. package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  70. package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  71. package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/xcshareddata/xcschemes/iosnativeWebView.xcscheme +0 -112
  72. package/dist/native/setupEmulatorIos.js +0 -19
  73. package/dist/native/terminalProgress.js +0 -11
  74. package/dist/native/utils.js +0 -13
package/changelog.md CHANGED
@@ -10,4 +10,5 @@
10
10
 
11
11
  ### Changes
12
12
 
13
- - Added support for typescript
13
+ - Filter out host machine's environment variable from client environment variables
14
+ - Update @tata1mg/router's version to 0.0.1-beta.5.
@@ -1,4 +1,4 @@
1
- "use strict";require("./registerAliases.js");var _cssModulesRequireHook=_interopRequireDefault(require("@dr.pogodin/css-modules-require-hook"));var _path=_interopRequireDefault(require("path"));var _loadEnvironmentVariables=_interopRequireDefault(require("./loadEnvironmentVariables"));var _postcssScss=_interopRequireDefault(require("postcss-scss"));var _logger=require("@catalyst/logger.js");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}/* eslint-disable */const{cssModulesIdentifierDev}=require("@catalyst/root/config.json");// stores your config keys in enviorments variables
1
+ "use strict";var _registerAliases2=_interopRequireDefault(require("./registerAliases.js"));var _cssModulesRequireHook=_interopRequireDefault(require("@dr.pogodin/css-modules-require-hook"));var _path=_interopRequireDefault(require("path"));var _loadEnvironmentVariables=_interopRequireDefault(require("./loadEnvironmentVariables"));var _postcssScss=_interopRequireDefault(require("postcss-scss"));var _logger=require("@catalyst/logger.js");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}/* eslint-disable */const{cssModulesIdentifierDev}=require("@catalyst/root/config.json");// stores your config keys in enviorments variables
2
2
  (0,_loadEnvironmentVariables.default)();// creates logger instance with provided config and stores them at global level.
3
3
  (0,_logger.configureLogger)({enableDebugLogs:process.env.ENABLE_DEBUG_LOGS,enableFileLogging:process.env.ENABLE_FILE_LOGGING,enableConsoleLogging:process.env.ENABLE_CONSOLE_LOGGING});// compile css-variables in realtime in dev mode.
4
4
  if(process.env.NODE_ENV==="development")(0,_cssModulesRequireHook.default)({extensions:[".scss",".css"],processorOpts:{parser:_postcssScss.default.parse},generateScopedName:cssModulesIdentifierDev,devMode:true,ignore:_path.default.posix.join(process.env.src_path,"/src/static/css/base/(?!.*.scss$).*")});
@@ -2,5 +2,5 @@
2
2
  * @description - starts webpack dev server and node server.
3
3
  */function start(){const isWindows=process.platform==="win32";const commandLineArguments=process.argv.slice(2);const argumentsObject=arrayToObject(commandLineArguments);const dirname=path.resolve(__dirname,"../../");let command=`
4
4
  node ./dist/scripts/checkVersion
5
- npx babel-node -r ./dist/scripts/loadScriptsBeforeServerStarts.js ./dist/webpack/development.client.babel --no-warnings=ExperimentalWarning --no-warnings=BABEL & npx babel-node -r ./dist/scripts/loadScriptsBeforeServerStarts.js ./dist/server/startServer.js --extensions .js,.ts,.jsx,.tsx --watch-path=${process.env.PWD}/server --watch-path=./.catalyst-dev/server/renderer --ignore='__IGNORE__' --no-warnings=ExperimentalWarning --no-warnings=BABEL
5
+ npx babel-node -r ./dist/scripts/loadScriptsBeforeServerStarts.js ./dist/webpack/development.client.babel --no-warnings=ExperimentalWarning --no-warnings=BABEL & npx babel-node -r ./dist/scripts/loadScriptsBeforeServerStarts.js ./dist/server/startServer.js --watch-path=${process.env.PWD}/server --watch-path=${process.env.PWD}/src --ignore='__IGNORE__' --no-warnings=ExperimentalWarning --no-warnings=BABEL
6
6
  `;if(isWindows){spawn(`node ./dist/scripts/checkVersion && start /b npx babel-node -r ./dist/scripts/loadScriptsBeforeServerStarts.js ./dist/webpack/development.client.babel --no-warnings=ExperimentalWarning --no-warnings=BABEL`,[],{cwd:dirname,stdio:"inherit",shell:true,env:{...process.env,src_path:process.cwd(),NODE_ENV:"development",IS_DEV_COMMAND:false,APPLICATION:name||"catalyst_app",BUILD_OUTPUT_PATH:BUILD_OUTPUT_PATH,...argumentsObject}});spawn(`node ./dist/scripts/checkVersion && npx babel-node -r ./dist/scripts/loadScriptsBeforeServerStarts.js ./dist/server/startServer.js --watch-path=${process.cwd()}/server --watch-path=${process.cwd()}/src --ignore='__IGNORE__' --no-warnings=ExperimentalWarning --no-warnings=BABEL`,[],{cwd:dirname,stdio:"inherit",shell:true,env:{...process.env,src_path:process.cwd(),NODE_ENV:"development",IS_DEV_COMMAND:false,APPLICATION:name||"catalyst_app",BUILD_OUTPUT_PATH:BUILD_OUTPUT_PATH,...argumentsObject}});}else{spawnSync(command,[],{cwd:dirname,stdio:"inherit",shell:true,env:{...process.env,src_path:process.cwd(),NODE_ENV:"development",IS_DEV_COMMAND:false,APPLICATION:name||"catalyst_app",BUILD_OUTPUT_PATH:BUILD_OUTPUT_PATH,...argumentsObject}});}}start();
@@ -6,4 +6,4 @@
6
6
  * @param {array} metaTags - user defined function which returns meta tags in array
7
7
  * @param {string} publicAssetPath - public asset path for assets
8
8
  * @param {object} children - contains any child elements defined within the component
9
- */function Head(props){const{pageCss,preloadJSLinks,metaTags,isBot,publicAssetPath,children}=props;if(children){return/*#__PURE__*/_react.default.createElement("head",null,children,metaTags&&metaTags,!isBot&&pageCss&&/*#__PURE__*/_react.default.createElement("style",{dangerouslySetInnerHTML:{__html:pageCss}}),!isBot&&preloadJSLinks);}return/*#__PURE__*/_react.default.createElement("head",null,/*#__PURE__*/_react.default.createElement("meta",{charSet:"utf-8"}),/*#__PURE__*/_react.default.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),publicAssetPath&&/*#__PURE__*/_react.default.createElement("link",{rel:"preconnect",href:publicAssetPath}),publicAssetPath&&/*#__PURE__*/_react.default.createElement("link",{rel:"dns-prefetch",href:publicAssetPath}),metaTags&&metaTags,!isBot&&pageCss&&/*#__PURE__*/_react.default.createElement("style",{dangerouslySetInnerHTML:{__html:pageCss}}),!isBot&&preloadJSLinks);}Head.propTypes={isBot:_propTypes.default.bool,preloadJSLinks:_propTypes.default.object,pageCss:_propTypes.default.string,metaTags:_propTypes.default.array,publicAssetPath:_propTypes.default.string,children:_propTypes.default.node};
9
+ */function Head(props){const{pageCss,preloadJSLinks,metaTags,isBot,publicAssetPath,children}=props;if(children){return/*#__PURE__*/_react.default.createElement("head",null,children,metaTags&&metaTags,pageCss&&/*#__PURE__*/_react.default.createElement("style",{dangerouslySetInnerHTML:{__html:pageCss}}),!isBot&&preloadJSLinks);}return/*#__PURE__*/_react.default.createElement("head",null,/*#__PURE__*/_react.default.createElement("meta",{charSet:"utf-8"}),/*#__PURE__*/_react.default.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),publicAssetPath&&/*#__PURE__*/_react.default.createElement("link",{rel:"preconnect",href:publicAssetPath}),publicAssetPath&&/*#__PURE__*/_react.default.createElement("link",{rel:"dns-prefetch",href:publicAssetPath}),metaTags&&metaTags,pageCss&&/*#__PURE__*/_react.default.createElement("style",{dangerouslySetInnerHTML:{__html:pageCss}}),!isBot&&preloadJSLinks);}Head.propTypes={isBot:_propTypes.default.bool,preloadJSLinks:_propTypes.default.object,pageCss:_propTypes.default.string,metaTags:_propTypes.default.array,publicAssetPath:_propTypes.default.string,children:_propTypes.default.node};
@@ -18,7 +18,7 @@ process.cssCache[key]={pageCss,listOfCachedAssets};}return pageCss;}/**
18
18
  let firstFoldCss="";let firstFoldJS="";const isProd=process.env.NODE_ENV==="production";const{routePath,preloadJSLinks}=res.locals;const linkElements=webExtractor.getLinkElements();// We want to cache/or check for update css on every call
19
19
  // We want to extract script tags for every call that will get added to body.
20
20
  // Their corresponding preloaded link script tags are already present in head.
21
- if(routePath){if(!isBot){if(isProd){firstFoldCss=cacheCSS(routePath,linkElements);firstFoldCss=`<style>${firstFoldCss}</style>`;}else{cacheCSS(routePath,linkElements);firstFoldCss=webExtractor.getStyleTags();}}// firstFoldJS = webExtractor.getScriptTags({ nonce: cspNonce })
21
+ if(routePath){if(isProd){firstFoldCss=cacheCSS(routePath,linkElements);if(firstFoldCss?.length)firstFoldCss=`<style>${firstFoldCss}</style>`;}else{cacheCSS(routePath,linkElements);firstFoldCss=webExtractor.getStyleTags();}// firstFoldJS = webExtractor.getScriptTags({ nonce: cspNonce })
22
22
  firstFoldJS=webExtractor.getScriptTags();}// This block will run for the first time and cache preloaded JS Links for second render
23
23
  // firstFoldJS ->scripts gets inject in body
24
24
  // firstFoldCss -> Inline css gets injected in body only for the first render
@@ -1,5 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=_default;var _fs=_interopRequireDefault(require("fs"));var _path=_interopRequireDefault(require("path"));var _react=_interopRequireDefault(require("react"));var _extract=_interopRequireWildcard(require("./extract"));var _reactRedux=require("react-redux");var _document=require("./document");var _server=require("react-router-dom/server");var _ServerRouter=_interopRequireDefault(require("@catalyst/router/ServerRouter.js"));var _index=_interopRequireDefault(require("@catalyst/template/src/js/containers/App/index.js"));var _server2=require("@loadable/server");var _server3=require("react-dom/server");var _userAgentUtil=require("@catalyst/server/utils/userAgentUtil");var _router=require("@tata1mg/router");var _validator=require("@catalyst/server/utils/validator");var _document2=_interopRequireDefault(require("@catalyst/template/server/document.js"));var _utils=require("@catalyst/template/src/js/routes/utils.js");var _index2=require("@catalyst/template/server/index.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};}// TODO: have not added onRenderSuccess
2
- const storePath=_path.default.resolve(`${process.env.src_path}/src/js/store/index.js`);let createStore;if(_fs.default.existsSync(storePath)){try{const{default:configureStore}=require(`${process.env.src_path}/src/js/store/index.js`);createStore=configureStore;}catch(error){createStore=()=>{return{getState:()=>{}};};}}else{createStore=()=>{return{getState:()=>{}};};}const isProduction=process.env.NODE_ENV==="production";// matches request route with routes defined in the application.
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=_default;var _fs=_interopRequireDefault(require("fs"));var _path=_interopRequireDefault(require("path"));var _react=_interopRequireDefault(require("react"));var _extract=_interopRequireWildcard(require("./extract"));var _reactRedux=require("react-redux");var _document=require("./document");var _server=require("react-router-dom/server");var _ServerRouter=_interopRequireDefault(require("@catalyst/router/ServerRouter.js"));var _index=_interopRequireDefault(require("@catalyst/template/src/js/containers/App/index.js"));var _server2=require("@loadable/server");var _server3=require("react-dom/server");var _userAgentUtil=require("@catalyst/server/utils/userAgentUtil");var _router=require("@tata1mg/router");var _validator=require("@catalyst/server/utils/validator");var _document2=_interopRequireDefault(require("@catalyst/template/server/document.js"));var _utils=require("@catalyst/template/src/js/routes/utils.js");var _index2=require("@catalyst/template/server/index.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};}const storePath=_path.default.resolve(`${process.env.src_path}/src/js/store/index.js`);let createStore;if(_fs.default.existsSync(storePath)){try{const{default:configureStore}=require(`${process.env.src_path}/src/js/store/index.js`);createStore=configureStore;}catch(error){createStore=()=>{return{getState:()=>{}};};}}else{createStore=()=>{return{getState:()=>{}};};}const isProduction=process.env.NODE_ENV==="production";// matches request route with routes defined in the application.
3
2
  const getMatchRoutes=(routes,req,res,store,context,fetcherData,basePath="",webExtractor)=>{return routes.reduce((matches,route)=>{const{path}=route;const match=(0,_router.matchPath)({path:`${basePath}/${path}`,caseSensitive:false,end:true},req.baseUrl||"/");if(match){if(!res.locals.pageCss&&!res.locals.preloadJSLinks&&!res.locals.routePath){res.locals.routePath=path;(0,_extract.default)(res,route);}if(!res.locals.pageCss&&!res.locals.preloadJSLinks){//moving routing logic outside of the App and using ServerRoutes for creating routes on server instead
4
3
  (0,_server3.renderToString)(/*#__PURE__*/_react.default.createElement(_server2.ChunkExtractorManager,{extractor:webExtractor},/*#__PURE__*/_react.default.createElement(_reactRedux.Provider,{store:store},/*#__PURE__*/_react.default.createElement(_server.StaticRouter,{context:context,location:req.originalUrl},/*#__PURE__*/_react.default.createElement(_ServerRouter.default,{store:store,intialData:fetcherData})))));}const wc=route.component;matches.push({route,match,serverSideFunction:wc&&wc.serverSideFunction||(()=>Promise.resolve())});}if(!match&&route.children){// recursively try to match nested routes
5
4
  const nested=getMatchRoutes(route.children,req,res,store,context,fetcherData,`${basePath}/${path}`,webExtractor);if(nested.length){matches=matches.concat(nested);}}return matches;},[]);};// Preloads chunks required for rendering document
@@ -15,6 +14,9 @@ if(IS_DEV_COMMAND==="true"){publicAssetPath=`http://${WEBPACK_DEV_SERVER_HOSTNAM
15
14
  const store=(0,_validator.validateConfigureStore)(createStore)?createStore({},req,res):null;// user defined routes
16
15
  const routes=(0,_validator.validateGetRoutes)(_utils.getRoutes)?(0,_utils.getRoutes)():[];// Matches req url with routes
17
16
  const matches=getMatchRoutes(routes,req,res,store,context,fetcherData,undefined,webExtractor);const allMatches=(0,_router.matchRoutes)((0,_utils.getRoutes)(),req.baseUrl);let allTags=[];// function defined by user which needs to run after route is matched
18
- (0,_validator.safeCall)(_index2.onRouteMatch,matches);// Executing app server side function
17
+ (0,_validator.safeCall)(_index2.onRouteMatch,{req,res,matches});// Executing app server side function
19
18
  _index.default.serverSideFunction({store,req,res})// Executing serverFetcher functions with serverDataFetcher provided by router and returning document
20
- .then(()=>{(0,_router.serverDataFetcher)({routes:routes,req,res,url:req.originalUrl},{store}).then(res=>{fetcherData=res;allTags=(0,_router.getMetaData)(allMatches,fetcherData);}).then(async()=>await renderMarkUp(null,req,res,allTags,fetcherData,store,matches,context,webExtractor)).catch(async error=>{logger.error("Error in executing serverFetcher functions: "+error);(0,_validator.safeCall)(_index2.onFetcherError);await renderMarkUp(404,req,res,allTags,fetcherData,store,matches,context,webExtractor);});}).catch(error=>{logger.error("Error in executing serverSideFunction inside App: "+error);renderMarkUp(error.status_code,req,res,allTags,fetcherData,store,matches,context,webExtractor);});}catch(error){logger.error("Error in handling document request: "+error.toString());}}
19
+ .then(()=>{(0,_router.serverDataFetcher)({routes:routes,req,res,url:req.originalUrl},{store}).then(response=>{fetcherData=response;allTags=(0,_router.getMetaData)(allMatches,fetcherData);// function defined by user which needs to run after SSR functions are executed
20
+ (0,_validator.safeCall)(_index2.onFetcherSuccess,{req,res,fetcherData});}).then(async()=>await renderMarkUp(null,req,res,allTags,fetcherData,store,matches,context,webExtractor))// TODO: this is never called, serverDataFetcher never throws any error
21
+ .catch(async error=>{logger.error("Error in executing serverFetcher functions: "+error);(0,_validator.safeCall)(_index2.onFetcherError,{req,res,error});await renderMarkUp(404,req,res,allTags,fetcherData,store,matches,context,webExtractor);});}).catch(error=>{logger.error("Error in executing serverSideFunction inside App: "+error);renderMarkUp(error.status_code,req,res,allTags,fetcherData,store,matches,context,webExtractor);});}catch(error){logger.error("Error in handling document request: "+error.toString());// function defined by user which needs to run when an error occurs in the handler
22
+ (0,_validator.safeCall)(_index2.onRequestError,{req,res,error});}}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _express=_interopRequireDefault(require("express"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const router=_express.default.Router();if(process.env.NODE_ENV==="production"){const handler=require("./handler").default;router.use(handler);}else{const developmentHandler=require("../../../.catalyst-dev/server/renderer/handler.development.js").default;router.use(developmentHandler);}var _default=exports.default=router;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _express=_interopRequireDefault(require("express"));var _handler=_interopRequireDefault(require("./handler"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const router=_express.default.Router();router.use(_handler.default);var _default=exports.default=router;
@@ -1,6 +1,6 @@
1
1
  "use strict";var _fs=_interopRequireDefault(require("fs"));var _path=_interopRequireDefault(require("path"));var _nodeUtil=_interopRequireDefault(require("node:util"));var _chokidar=_interopRequireDefault(require("chokidar"));var _picocolors=require("picocolors");var _index=require("@catalyst/template/server/index.js");var _validator=require("@catalyst/server/utils/validator.js");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const env=process.env.NODE_ENV||"development";// function defined by user which needs to run before server starts
2
2
  (0,_validator.safeCall)(_index.preServerInit);process.on("uncaughtException",(err,origin)=>{console.log(process.stderr.fd);console.log(`Caught exception: ${err}\n`+`Exception origin: ${origin}`);});process.on("SIGINT",function(data){console.log("SIGINT");console.log(data);process.exit(0);});process.on("uncaughtExceptionMonitor",(err,origin)=>{console.log(err,origin);});process.on("message",function(msg){if(msg=="shutdown"){console.log("Closing all connections...");setTimeout(function(){console.log("Finished closing connections");process.exit(0);},1500);}});if(env==="development"){// Add better stack tracing for promises in dev mode
3
- process.on("unhandledRejection",r=>console.debug(r));}const port=process.env.NODE_SERVER_PORT??3005;const host=process.env.NODE_SERVER_HOSTNAME??"localhost";let statsPath=_path.default.join(__dirname,`../../`,".catalyst-dev","/server","/renderer","handler.development.js");if(env==="production"){statsPath=_path.default.join(process.env.src_path,`${process.env.BUILD_OUTPUT_PATH}/public/loadable-stats.json`);}const watcher=_chokidar.default.watch(statsPath,{persistent:true});let serverInstance=null;const restartServer=()=>{const server=require("./expressServer.js").default;serverInstance=server.listen({port,host});};const startServer=()=>{const server=require("./expressServer.js").default;serverInstance=server.listen({port,host},error=>{const{APPLICATION,NODE_SERVER_HOSTNAME,NODE_SERVER_PORT}=process.env;if(error){console.log("An error occured while starting the Application server : ",error);// function defined by user which needs to run if server fails
3
+ process.on("unhandledRejection",r=>console.debug(r));}const port=process.env.NODE_SERVER_PORT??3005;const host=process.env.NODE_SERVER_HOSTNAME??"localhost";let statsPath=_path.default.join(__dirname,`../../`,"loadable-stats.json");if(env==="production"){statsPath=_path.default.join(process.env.src_path,`${process.env.BUILD_OUTPUT_PATH}/public/loadable-stats.json`);}const watcher=_chokidar.default.watch(statsPath,{persistent:true});let serverInstance=null;const restartServer=()=>{const server=require("./expressServer.js").default;serverInstance=server.listen({port,host});};const startServer=()=>{const server=require("./expressServer.js").default;serverInstance=server.listen({port,host},error=>{const{APPLICATION,NODE_SERVER_HOSTNAME,NODE_SERVER_PORT}=process.env;if(error){console.log("An error occured while starting the Application server : ",error);// function defined by user which needs to run if server fails
4
4
  (0,_validator.safeCall)(_index.onServerError);return;}if(env==="development")console.log((0,_picocolors.green)("Compiled successfully!"));console.log(`\nYou can now view ${APPLICATION} in the browser.\n`);console.log(_nodeUtil.default.format("\tLocal:".padEnd(8),(0,_picocolors.cyan)(`http://${NODE_SERVER_HOSTNAME}:${NODE_SERVER_PORT}`)));if(env==="development"){console.log("\nNote that the development build is not optimized.");console.log("To create a production build, use "+(0,_picocolors.cyan)("npm run build"));}console.log("\nFind out more about deployment here:");console.log((0,_picocolors.yellow)("\n https://catalyst.1mg.com/public_docs/content/deployment\n"));});};if(_fs.default.existsSync(statsPath)){// if loadable-stats.json exist this block will start the server in development environment. This happens in dev environment when loadable stats already exists and developer is making changes to the files. lodable-stats.json will be updated after every change.
5
5
  watcher.on("change",()=>{watcher.close();if(serverInstance){serverInstance.close(()=>startServer());}else{startServer();}});// this block will start the server when your files have been compiled for production and lodable-stats.json exists.
6
6
  watcher.on("add",()=>{if(env==="production"){watcher.close();startServer();}});}else{// this block will start the server in development environment for the first time when loadable-stats.json does not exists.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;const EXPERIMENTS=JSON.parse(process.env.EXPERIMENTS||"{}");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:[...(EXPERIMENTS?.ENABLE_COMPILER?[["babel-plugin-react-compiler",{target:"18"}]]:[]),"@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__"]};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;const EXPERIMENTS=JSON.parse(process.env.EXPERIMENTS||"{}");var _default=exports.default={babelrc:false,presets:[["@babel/preset-env",{targets:{browsers:"last 2 versions"}}],"@babel/preset-react"],plugins:[...(EXPERIMENTS?.ENABLE_COMPILER?[["babel-plugin-react-compiler",{target:"18"}]]:[]),"@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__"]};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;const EXPERIMENTS=JSON.parse(process.env.EXPERIMENTS||"{}");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:[...(EXPERIMENTS?.ENABLE_COMPILER?[["babel-plugin-react-compiler",{target:"18"}]]:[]),"@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__"]};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;const EXPERIMENTS=JSON.parse(process.env.EXPERIMENTS||"{}");var _default=exports.default={babelrc:false,presets:[["@babel/preset-env",{targets:{node:"current"}}],"@babel/preset-react"],plugins:[...(EXPERIMENTS?.ENABLE_COMPILER?[["babel-plugin-react-compiler",{target:"18"}]]:[]),"@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__"]};
@@ -1,8 +1,8 @@
1
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 _webpackPlugin=_interopRequireDefault(require("@loadable/webpack-plugin"));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=[new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..")}}),// **This loads process.env variable during webpack build process
2
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
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.
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"],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}},{// 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
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
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
7
+ test:/\.(ttf|eot|woff2|json?)$/,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
8
  test:/\.html$/,use:[{loader:"html-loader",options:{minimize:{minifyJS:true,minifyCSS:true,removeComments:false,collapseWhitespace:true}}}]}]}};
@@ -1,20 +1,4 @@
1
- "use strict";var _webpack=_interopRequireDefault(require("webpack"));var _chokidar=_interopRequireDefault(require("chokidar"));var _webpackMerge=_interopRequireWildcard(require("webpack-merge"));var _webpackDevServer=_interopRequireDefault(require("webpack-dev-server"));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 _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
1
+ "use strict";var _webpack=_interopRequireDefault(require("webpack"));var _webpackMerge=_interopRequireDefault(require("webpack-merge"));var _webpackDevServer=_interopRequireDefault(require("webpack-dev-server"));var _miniCssExtractPlugin=_interopRequireDefault(require("mini-css-extract-plugin"));var _reactRefreshWebpackPlugin=_interopRequireDefault(require("@pmmmwh/react-refresh-webpack-plugin"));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 _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const{WEBPACK_DEV_SERVER_PORT,WEBPACK_DEV_SERVER_HOSTNAME}=process.env;const webpackConfig=(0,_webpackMerge.default)(_baseBabel.default,{devtool:"inline-source-map",stats:"none",infrastructureLogging:{level:"none"},plugins:[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
2
  reuseExistingChunk:true,// Disable to replicate stand alone chunking for all packages
5
3
  minRemainingSize:1000,// Disable to replicate stand alone chunking for all packages
6
- test:/[\\/]node_modules[\\/]/,name(module){const moduleFileName=module.identifier().split("/").reduceRight(item=>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:[..._webpackConfig.default.ssrPlugins].filter(Boolean)});// Create separate compiler for SSR that writes to disk
8
- const handlerPath=_path.default.join(__dirname,"../..",".catalyst-dev","/server","/renderer","handler.development.js");const ssrCompiler=(0,_webpack.default)(webpackSSRConfig);const watchInstance=ssrCompiler.watch({},(err,stats)=>{if(err){console.error(err);return;}console.log("SSR bundle recompiled");});const handlerWatcher=_chokidar.default.watch(handlerPath);// Cleanup on exit
9
- const cleanup=()=>{// Close webpack watch
10
- watchInstance.close(()=>{// Delete the development handler file
11
- try{// Delete the file
12
- require("fs").unlinkSync(handlerPath);// Try to remove the renderer directory
13
- require("fs").rmdirSync(_path.default.join(process.env.src_path,".catalyst-dev","/renderer"));// Try to remove the parent directory
14
- require("fs").rmdirSync(_path.default.join(process.env.src_path,".catalyst-dev"));}catch(err){// Ignore errors during cleanup
15
- }process.exit();});};// Handle various ways the process might exit
16
- process.on("SIGINT",cleanup);// Ctrl+C
17
- process.on("SIGTERM",cleanup);// kill
18
- process.on("exit",cleanup);// normal exit
19
- handlerWatcher.on("add",()=>{handlerWatcher.close();// Create dev server for client-side only
20
- 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");});});
4
+ test:/[\\/]node_modules[\\/]/,name(module){const moduleFileName=module.identifier().split("/").reduceRight(item=>item);return`npm.${moduleFileName}`;}}}}}});let devServer=new _webpackDevServer.default({port:WEBPACK_DEV_SERVER_PORT,host:WEBPACK_DEV_SERVER_HOSTNAME,static:{publicPath:webpackConfig.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)(webpackConfig));devServer.startCallback(()=>{console.log("Catalyst is compiling your files.");console.log("Please wait until bundling is finished.\n");});
@@ -1,4 +1,4 @@
1
1
  "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _registerAliases2=_interopRequireWildcard(require("../scripts/registerAliases.js"));var _path=_interopRequireDefault(require("path"));var _webpackNodeExternals=_interopRequireDefault(require("webpack-node-externals"));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"));var _package=require("@catalyst/root/package.json");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}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;}/* 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],target:"node",entry:{handler:_path.default.resolve(__dirname,"..","./server/renderer/handler.js")},externals:[// images are handled by isomorphic webpack.
2
2
  // html files are required directly
3
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;
4
+ (0,_webpackNodeExternals.default)({modulesDir:_path.default.resolve(process.env.src_path,"./node_modules")}),(0,_webpackNodeExternals.default)({modulesDir:_path.default.join(_appRootPath.default.path,"./node_modules")})],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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "catalyst-core-internal",
3
- "version": "0.0.1-beta.52",
3
+ "version": "0.0.1-beta.54",
4
4
  "main": "index.js",
5
5
  "description": "Web framework that provides great performance out of the box",
6
6
  "bin": {
@@ -44,7 +44,6 @@
44
44
  "@babel/node": "^7.22.19",
45
45
  "@babel/preset-env": "^7.23.2",
46
46
  "@babel/preset-react": "^7.22.15",
47
- "@babel/preset-typescript": "^7.24.7",
48
47
  "@babel/register": "^7.22.15",
49
48
  "@dr.pogodin/css-modules-require-hook": "^4.7.3",
50
49
  "@loadable/babel-plugin": "^5.16.1",
package/run.sh CHANGED
@@ -1,3 +1,3 @@
1
1
  npm run prepare
2
- rm -rf ../demo-apps/cca-basic/node_modules/catalyst-core-internal/dist
3
- mv dist ../demo-apps/cca-basic/node_modules/catalyst-core-internal/
2
+ rm -rf ../1mg_web/mweb/node_modules/catalyst-core/dist
3
+ mv dist ../1mg_web/mweb/node_modules/catalyst-core/
@@ -1,180 +0,0 @@
1
- import java.net.NetworkInterface
2
- import java.io.File
3
- import java.util.Properties
4
-
5
- val configPath: String? by project.properties
6
-
7
- fun getLocalIpAddress(): String {
8
- return NetworkInterface.getNetworkInterfaces().toList()
9
- .flatMap { it.inetAddresses.toList() }
10
- .filter { !it.isLoopbackAddress && it.hostAddress.indexOf(':') == -1 }
11
- .map { it.hostAddress }
12
- .firstOrNull() ?: "127.0.0.1"
13
- }
14
-
15
- plugins {
16
- alias(libs.plugins.android.application)
17
- alias(libs.plugins.jetbrains.kotlin.android)
18
- }
19
-
20
- android {
21
- namespace = "com.example.androidProject"
22
- compileSdk = 34
23
-
24
- defaultConfig {
25
- applicationId = "com.example.androidProject"
26
- minSdk = 24
27
- targetSdk = 34
28
- versionCode = 1
29
- versionName = "1.0"
30
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
31
- buildConfigField("String", "LOCAL_IP", "\"${getLocalIpAddress()}\"")
32
- }
33
-
34
- buildTypes {
35
- debug {
36
- manifestPlaceholders += mapOf("allowCleartextTraffic" to true)
37
- isMinifyEnabled = false
38
- buildConfigField("Boolean", "ALLOW_MIXED_CONTENT", "true")
39
- buildConfigField("String", "LOCAL_IP", "\"${getLocalIpAddress()}\"")
40
- }
41
- release {
42
- manifestPlaceholders += mapOf("allowCleartextTraffic" to false)
43
- isMinifyEnabled = false
44
- proguardFiles(
45
- getDefaultProguardFile("proguard-android-optimize.txt"),
46
- "proguard-rules.pro"
47
- )
48
- buildConfigField("Boolean", "ALLOW_MIXED_CONTENT", "false")
49
- buildConfigField("String", "LOCAL_IP", "\"127.0.0.1\"")
50
- }
51
- }
52
-
53
- compileOptions {
54
- sourceCompatibility = JavaVersion.VERSION_1_8
55
- targetCompatibility = JavaVersion.VERSION_1_8
56
- }
57
-
58
- kotlinOptions {
59
- jvmTarget = "1.8"
60
- }
61
-
62
- buildFeatures {
63
- viewBinding = true
64
- buildConfig = true
65
- }
66
- }
67
-
68
- dependencies {
69
- implementation(libs.androidx.core.ktx)
70
- implementation(libs.androidx.appcompat)
71
- implementation(libs.material)
72
- implementation(libs.androidx.constraintlayout)
73
- testImplementation(libs.junit)
74
- androidTestImplementation(libs.androidx.junit)
75
- androidTestImplementation(libs.androidx.espresso.core)
76
- implementation("androidx.webkit:webkit:1.12.1")
77
- implementation("org.json:json:20231013")
78
- }
79
-
80
- // Task to verify local IP
81
- tasks.register("printLocalIp") {
82
- doLast {
83
- println("Local IP Address: ${getLocalIpAddress()}")
84
- }
85
- }
86
-
87
- tasks.register("updateSdkPath") {
88
- doLast {
89
- val sdkPath: String? by project.properties
90
-
91
- if (sdkPath == null) {
92
- throw GradleException(
93
- """
94
- SDK path not provided!
95
- Please provide the SDK path using -PsdkPath=/path/to/sdk
96
- Example: ./gradlew updateSdkPath -PsdkPath=/path/to/android/sdk
97
- """.trimIndent()
98
- )
99
- }
100
-
101
- val localProperties = File(project.rootDir, "local.properties")
102
- val properties = Properties()
103
-
104
- if (localProperties.exists()) {
105
- properties.load(localProperties.inputStream())
106
- }
107
-
108
- properties.setProperty("sdk.dir", sdkPath)
109
- properties.store(localProperties.outputStream(), "Updated SDK Path")
110
-
111
- println("Updated SDK path to: $sdkPath")
112
- }
113
- }
114
-
115
- // Task to generate WebView config
116
- tasks.register("generateWebViewConfig") {
117
- doLast {
118
- val configJsonPath = configPath ?: throw GradleException(
119
- """
120
- Config path not provided!
121
- Please provide the config path using -PconfigPath=/path/to/your/config.json
122
- Example: ./gradlew generateWebViewConfig -PconfigPath=/path/to/your/config.json
123
- """.trimIndent()
124
- )
125
-
126
- val configJsonFile = File(configJsonPath)
127
- if (!configJsonFile.exists()) {
128
- throw GradleException("Config file not found at: $configJsonPath")
129
- }
130
-
131
- val configContent = configJsonFile.readText()
132
-
133
- // Extract WEBVIEW_CONFIG section
134
- val webviewConfigRegex = """"WEBVIEW_CONFIG"\s*:\s*\{([^}]*)\}""".toRegex()
135
- val webviewConfigMatch = webviewConfigRegex.find(configContent)
136
- val webviewConfigContent = webviewConfigMatch?.groupValues?.get(1)
137
-
138
- val properties = Properties()
139
- properties.setProperty("LOCAL_IP", getLocalIpAddress())
140
-
141
- // Parse top-level properties
142
- val topLevelRegex = """"([^"]+)"\s*:\s*"([^"]+)"""".toRegex()
143
- webviewConfigContent?.let {
144
- topLevelRegex.findAll(it).forEach { matchResult ->
145
- val (key, value) = matchResult.destructured
146
- if (key != "android") {
147
- properties.setProperty(key, value)
148
- }
149
- }
150
- }
151
-
152
- // Parse android object specifically
153
- val androidRegex = """"android"\s*:\s*\{([^}]*)\}""".toRegex()
154
- val androidMatch = androidRegex.find(webviewConfigContent ?: "")
155
- val androidContent = androidMatch?.groupValues?.get(1)
156
-
157
- // Parse android object properties
158
- val androidPropsRegex = """"([^"]+)"\s*:\s*"([^"]+)"""".toRegex()
159
- androidContent?.let {
160
- androidPropsRegex.findAll(it).forEach { matchResult ->
161
- val (key, value) = matchResult.destructured
162
- properties.setProperty("android.$key", value)
163
- }
164
- }
165
-
166
- // Create the assets directory if it doesn't exist
167
- val assetsDir = File("${project.projectDir}/src/main/assets")
168
- if (!assetsDir.exists()) {
169
- assetsDir.mkdirs()
170
- println("Created assets directory at ${assetsDir.absolutePath}")
171
- }
172
-
173
- // Write to properties file
174
- File(assetsDir, "webview_config.properties").outputStream().use {
175
- properties.store(it, "WebView Configuration")
176
- }
177
-
178
- println("WebView config generated at ${assetsDir.absolutePath}/webview_config.properties")
179
- }
180
- }
@@ -1,21 +0,0 @@
1
- # Add project specific ProGuard rules here.
2
- # You can control the set of applied configuration files using the
3
- # proguardFiles setting in build.gradle.
4
- #
5
- # For more details, see
6
- # http://developer.android.com/guide/developing/tools/proguard.html
7
-
8
- # If your project uses WebView with JS, uncomment the following
9
- # and specify the fully qualified class name to the JavaScript interface
10
- # class:
11
- #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12
- # public *;
13
- #}
14
-
15
- # Uncomment this to preserve the line number information for
16
- # debugging stack traces.
17
- #-keepattributes SourceFile,LineNumberTable
18
-
19
- # If you keep the line number information, uncomment this to
20
- # hide the original source file name.
21
- #-renamesourcefileattribute SourceFile
@@ -1,24 +0,0 @@
1
- package com.example.myapplication
2
-
3
- import androidx.test.platform.app.InstrumentationRegistry
4
- import androidx.test.ext.junit.runners.AndroidJUnit4
5
-
6
- import org.junit.Test
7
- import org.junit.runner.RunWith
8
-
9
- import org.junit.Assert.*
10
-
11
- /**
12
- * Instrumented test, which will execute on an Android device.
13
- *
14
- * See [testing documentation](http://d.android.com/tools/testing).
15
- */
16
- @RunWith(AndroidJUnit4::class)
17
- class ExampleInstrumentedTest {
18
- @Test
19
- fun useAppContext() {
20
- // Context of the app under test.
21
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22
- assertEquals("com.example.myapplication", appContext.packageName)
23
- }
24
- }
@@ -1,28 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
- xmlns:tools="http://schemas.android.com/tools">
4
- <uses-permission android:name="android.permission.INTERNET" />
5
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
6
- <application
7
- android:usesCleartextTraffic="${allowCleartextTraffic}"
8
- android:allowBackup="true"
9
- android:dataExtractionRules="@xml/data_extraction_rules"
10
- android:fullBackupContent="@xml/backup_rules"
11
- android:icon="@mipmap/ic_launcher"
12
- android:label="@string/app_name"
13
- android:roundIcon="@mipmap/ic_launcher_round"
14
- android:supportsRtl="true"
15
- android:theme="@style/Theme.AndroidProject"
16
- tools:targetApi="31">
17
- <activity
18
- android:name=".MainActivity"
19
- android:exported="true">
20
- <intent-filter>
21
- <action android:name="android.intent.action.MAIN" />
22
-
23
- <category android:name="android.intent.category.LAUNCHER" />
24
- </intent-filter>
25
- </activity>
26
- </application>
27
-
28
- </manifest>