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.
- package/changelog.md +2 -1
- package/dist/scripts/loadScriptsBeforeServerStarts.js +1 -1
- package/dist/scripts/start.js +1 -1
- package/dist/server/renderer/document/Head.js +1 -1
- package/dist/server/renderer/extract.js +1 -1
- package/dist/server/renderer/handler.js +6 -4
- package/dist/server/renderer/index.js +1 -1
- package/dist/server/startServer.js +1 -1
- package/dist/webpack/babel.config.client.js +1 -1
- package/dist/webpack/babel.config.ssr.js +1 -1
- package/dist/webpack/base.babel.js +2 -2
- package/dist/webpack/development.client.babel.js +2 -18
- package/dist/webpack/production.ssr.babel.js +1 -1
- package/package.json +1 -2
- package/run.sh +2 -2
- package/dist/native/androidProject/app/build.gradle.kts +0 -180
- package/dist/native/androidProject/app/proguard-rules.pro +0 -21
- package/dist/native/androidProject/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.kt +0 -24
- package/dist/native/androidProject/app/src/main/AndroidManifest.xml +0 -28
- package/dist/native/androidProject/app/src/main/java/com/example/myapplication/MainActivity.kt +0 -278
- package/dist/native/androidProject/app/src/main/java/com/example/myapplication/WebCacheManager.kt +0 -331
- package/dist/native/androidProject/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
- package/dist/native/androidProject/app/src/main/res/drawable/ic_launcher_foreground.xml +0 -30
- package/dist/native/androidProject/app/src/main/res/layout/activity_main.xml +0 -22
- package/dist/native/androidProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -6
- package/dist/native/androidProject/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -6
- package/dist/native/androidProject/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
- package/dist/native/androidProject/app/src/main/res/values/colors.xml +0 -10
- package/dist/native/androidProject/app/src/main/res/values/strings.xml +0 -3
- package/dist/native/androidProject/app/src/main/res/values/themes.xml +0 -15
- package/dist/native/androidProject/app/src/main/res/values-night/themes.xml +0 -15
- package/dist/native/androidProject/app/src/main/res/xml/backup_rules.xml +0 -13
- package/dist/native/androidProject/app/src/main/res/xml/data_extraction_rules.xml +0 -19
- package/dist/native/androidProject/app/src/test/java/com/example/myapplication/ExampleUnitTest.kt +0 -17
- package/dist/native/androidProject/build.gradle.kts +0 -5
- package/dist/native/androidProject/gradle/libs.versions.toml +0 -26
- package/dist/native/androidProject/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/dist/native/androidProject/gradle/wrapper/gradle-wrapper.properties +0 -6
- package/dist/native/androidProject/gradle.properties +0 -23
- package/dist/native/androidProject/gradlew +0 -185
- package/dist/native/androidProject/gradlew.bat +0 -89
- package/dist/native/androidProject/settings.gradle.kts +0 -35
- package/dist/native/androidSetup.js +0 -2
- package/dist/native/build.swift +0 -31
- package/dist/native/buildAppAndroid.js +0 -8
- package/dist/native/buildAppIos.js +0 -41
- package/dist/native/iosnativeWebView/iosnativeWebView/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
- package/dist/native/iosnativeWebView/iosnativeWebView/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -13
- package/dist/native/iosnativeWebView/iosnativeWebView/Assets.xcassets/Contents.json +0 -6
- package/dist/native/iosnativeWebView/iosnativeWebView/CacheManager.swift +0 -249
- package/dist/native/iosnativeWebView/iosnativeWebView/ContentView.swift +0 -41
- package/dist/native/iosnativeWebView/iosnativeWebView/Info.plist +0 -13
- package/dist/native/iosnativeWebView/iosnativeWebView/Preview Content/Preview Assets.xcassets/Contents.json +0 -6
- package/dist/native/iosnativeWebView/iosnativeWebView/ResourceURLProtocol.swift +0 -134
- package/dist/native/iosnativeWebView/iosnativeWebView/WebView.swift +0 -79
- package/dist/native/iosnativeWebView/iosnativeWebView/WebViewModel.swift +0 -47
- package/dist/native/iosnativeWebView/iosnativeWebView/WebViewNavigationDelegate.swift +0 -145
- package/dist/native/iosnativeWebView/iosnativeWebView/iosnativeWebViewApp.swift +0 -17
- package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/project.pbxproj +0 -601
- package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/dist/native/iosnativeWebView/iosnativeWebView.xcodeproj/xcshareddata/xcschemes/iosnativeWebView.xcscheme +0 -112
- package/dist/native/setupEmulatorIos.js +0 -19
- package/dist/native/terminalProgress.js +0 -11
- package/dist/native/utils.js +0 -13
package/changelog.md
CHANGED
|
@@ -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$).*")});
|
package/dist/scripts/start.js
CHANGED
|
@@ -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 --
|
|
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
|
|
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(
|
|
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};}
|
|
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(
|
|
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();
|
|
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,`../../`,"
|
|
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-
|
|
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-
|
|
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"
|
|
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
|
|
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}`;}}}}}})
|
|
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")
|
|
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.
|
|
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 ../
|
|
3
|
-
mv dist ../
|
|
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>
|