catalyst-core 0.2.0-beta.3 → 0.3.0-beta.1
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/babel.native.config.cjs +8 -0
- package/bin/catalyst.js +49 -105
- package/changelog.md +8 -0
- package/dist/caching.js +1 -1
- package/dist/index.jsx +8 -0
- package/dist/logger.js +74 -3
- package/dist/native/androidSetup.js +300 -8
- package/dist/native/bridge/WebBridge.js +481 -59
- package/dist/native/bridge/constants/NativeInterfaces.js +290 -45
- package/dist/native/bridge/errors.js +250 -26
- package/dist/native/bridge/hooks/index.js +125 -1
- package/dist/native/bridge/hooks/useCamera.js +347 -9
- package/dist/native/bridge/hooks/useDataProtection.js +200 -2
- package/dist/native/bridge/hooks/useDeviceInfo.js +71 -2
- package/dist/native/bridge/hooks/useFilePicker.js +429 -2
- package/dist/native/bridge/hooks/useGoogleSignIn.js +81 -1
- package/dist/native/bridge/hooks/useHapticFeedback.js +196 -1
- package/dist/native/bridge/hooks/useIntent.js +95 -1
- package/dist/native/bridge/hooks/useNativeTransition.js +202 -27
- package/dist/native/bridge/hooks/useNetworkStatus.js +84 -3
- package/dist/native/bridge/hooks/useNotification.js +318 -2
- package/dist/native/bridge/hooks/useSafeArea.js +84 -2
- package/dist/native/bridge/hooks/useVideoStream.js +434 -6
- package/dist/native/bridge/hooks/utils.js +27 -1
- package/dist/native/bridge/hooks.js +16 -1
- package/dist/native/bridge/perf/collectors/ApiCollector.js +66 -3
- package/dist/native/bridge/perf/collectors/CacheCollector.js +186 -11
- package/dist/native/bridge/perf/collectors/HookCollector.js +141 -19
- package/dist/native/bridge/perf/collectors/InsightsCollector.js +481 -23
- package/dist/native/bridge/perf/collectors/InteractionCollector.js +245 -10
- package/dist/native/bridge/perf/collectors/KeyboardCollector.js +107 -8
- package/dist/native/bridge/perf/collectors/NavigationCollector.js +273 -32
- package/dist/native/bridge/perf/collectors/NetworkTimingCollector.js +178 -2
- package/dist/native/bridge/perf/collectors/RenderCollector.js +258 -14
- package/dist/native/bridge/perf/collectors/ScrollCollector.js +95 -9
- package/dist/native/bridge/perf/collectors/ThreadCollector.js +90 -6
- package/dist/native/bridge/perf/core/constants.js +103 -20
- package/dist/native/bridge/perf/core/measure.js +179 -30
- package/dist/native/bridge/perf/core/session.js +89 -23
- package/dist/native/bridge/perf/core/store.js +554 -1
- package/dist/native/bridge/perf/core/summary.js +174 -1
- package/dist/native/bridge/perf/core/traceExport.js +240 -1
- package/dist/native/bridge/perf/core/waterfalls.js +146 -1
- package/dist/native/bridge/perf/index.js +359 -38
- package/dist/native/bridge/safeArea.js +53 -5
- package/dist/native/bridge/standardizedHooks.js +595 -82
- package/dist/native/bridge/useBaseHook.js +274 -38
- package/dist/native/bridge/utils/CameraUtils.js +201 -56
- package/dist/native/bridge/utils/FileObjectConverter.js +129 -18
- package/dist/native/bridge/utils/NativeBridge.js +425 -141
- package/dist/native/buildAndroid/assets.js +510 -13
- package/dist/native/buildAndroid/build.js +296 -19
- package/dist/native/buildAndroid/config.js +87 -1
- package/dist/native/buildAndroid/index.js +374 -1
- package/dist/native/buildAppAndroid.js +34 -2
- package/dist/native/buildAppIos.js +62 -2
- package/dist/native/buildIos/assets.js +609 -8
- package/dist/native/buildIos/build.js +639 -20
- package/dist/native/buildIos/config.js +294 -12
- package/dist/native/buildIos/index.js +343 -6
- package/dist/native/buildIos/plugins.js +343 -16
- package/dist/native/internal-plugins/device-info-plugin/android/DeviceInfoPlugin.kt +43 -0
- package/dist/native/internal-plugins/device-info-plugin/ios/DeviceInfoPlugin.swift +28 -0
- package/dist/native/internal-plugins/device-info-plugin/manifest.json +19 -0
- package/dist/native/internalPluginUtils.js +232 -7
- package/dist/native/package.json +3 -0
- package/dist/native/plugin-bridge/PluginBridge.js +227 -1
- package/dist/native/pluginComposerAndroid.js +407 -23
- package/dist/native/pluginComposerIos.js +435 -11
- package/dist/native/renameAndroidProject.js +1094 -88
- package/dist/native/setupEmulatorIos.js +289 -22
- package/dist/native/setupServer.js +160 -19
- package/dist/native/terminalProgress.js +199 -11
- package/dist/native/utils.js +193 -15
- package/dist/offline/catalyst-sw.js +145 -1
- package/dist/offline/registerServiceWorker.js +33 -1
- package/dist/otel.js +375 -46
- package/dist/router/ClientRouter.js +14 -2
- package/dist/router/ServerRouter.js +9 -1
- package/dist/router.js +1 -1
- package/dist/scripts/build.js +112 -3
- package/dist/scripts/checkVersion.js +3 -1
- package/dist/scripts/cleanCache.js +30 -1
- package/dist/scripts/generateOfflineManifest.js +116 -1
- package/dist/scripts/loadEnvironmentVariables.js +32 -6
- package/dist/scripts/plugins.js +309 -1
- package/dist/scripts/preServerInit.js +13 -0
- package/dist/scripts/scriptUtils.js +54 -3
- package/dist/scripts/serve.js +51 -4
- package/dist/scripts/start.js +47 -10
- package/dist/scripts/validator.js +149 -1
- package/dist/sentry.cjs +127 -0
- package/dist/sentry.js +125 -5
- package/dist/server/expressServer.js +250 -5
- package/dist/server/manifestCache.js +36 -0
- package/dist/server/renderer/ChunkExtractor.js +144 -0
- package/dist/server/renderer/document/Body.jsx +59 -0
- package/dist/server/renderer/document/FastRefresh.jsx +20 -0
- package/dist/server/renderer/document/Head.jsx +60 -0
- package/dist/server/renderer/document/index.jsx +2 -0
- package/dist/server/renderer/extract.js +149 -31
- package/dist/server/renderer/handler.jsx +433 -0
- package/dist/server/renderer/index.js +8 -1
- package/dist/server/renderer/render.js +47 -0
- package/dist/server/utils/botDetectionMiddleware.js +29 -0
- package/dist/server/utils/cjsRequire.js +10 -0
- package/dist/server/utils/userAgentUtil.js +87 -9
- package/dist/server/utils/validator.js +164 -1
- package/dist/vite/FastRefresh.jsx +20 -0
- package/dist/vite/inject-cache-key-plugin.js +276 -0
- package/dist/vite/loadCustomViteConfig.js +22 -0
- package/dist/vite/manifest-categorization-plugin.js +455 -0
- package/dist/vite/node-loader.mjs +458 -0
- package/dist/vite/scssParams.js +21 -0
- package/dist/vite/vite.config.client.js +130 -0
- package/dist/vite/vite.config.js +422 -0
- package/dist/vite/vite.config.server.js +84 -0
- package/dist/web-router/components/MetaTag.jsx +34 -0
- package/dist/web-router/components/RouterDataProvider.jsx +332 -0
- package/dist/web-router/components/Split.jsx +200 -0
- package/dist/web-router/components/SplitInview.jsx +106 -0
- package/dist/web-router/components/SsrRequestContext.jsx +14 -0
- package/dist/web-router/context.jsx +12 -0
- package/dist/web-router/hooks.jsx +72 -0
- package/dist/web-router/types/components/MetaTag.d.ts +2 -0
- package/dist/web-router/types/components/RouterDataProvider.d.ts +95 -0
- package/dist/web-router/types/context.d.ts +14 -0
- package/dist/web-router/types/hooks.d.ts +1 -0
- package/dist/web-router/types/index.d.ts +3 -0
- package/dist/web-router/types/utils/metaDataUtils.d.ts +24 -0
- package/dist/web-router/utils/metaDataUtils.jsx +119 -0
- package/mcp_v2/conversion-tasks.json +35 -17
- package/mcp_v2/knowledge-base.json +124 -13
- package/mcp_v2/lib/helpers.js +10 -0
- package/mcp_v2/mcp.js +4 -4
- package/mcp_v2/package.json +1 -0
- package/mcp_v2/tools/build.js +116 -20
- package/mcp_v2/tools/conversion.js +106 -5
- package/mcp_v2/tools/tasks.js +18 -14
- package/package.json +35 -68
- package/babel.config.js +0 -32
- package/dist/index.js +0 -1
- package/dist/scripts/devBuild.js +0 -3
- package/dist/scripts/devServe.js +0 -3
- package/dist/scripts/loadScriptsBeforeServerStarts.js +0 -4
- package/dist/scripts/registerAliases.js +0 -6
- package/dist/server/renderer/document/Body.js +0 -11
- package/dist/server/renderer/document/Head.js +0 -9
- package/dist/server/renderer/document/index.js +0 -1
- package/dist/server/renderer/handler.js +0 -47
- package/dist/server/startServer.js +0 -57
- package/dist/webpack/babel-plugins/remove-client.plugin.js +0 -5
- package/dist/webpack/babel-plugins/remove-ssr.plugin.js +0 -5
- package/dist/webpack/babel.config.client.js +0 -1
- package/dist/webpack/babel.config.ssr.js +0 -1
- package/dist/webpack/base.babel.js +0 -7
- package/dist/webpack/development.client.babel.js +0 -10
- package/dist/webpack/production.client.babel.js +0 -4
- package/dist/webpack/production.ssr.babel.js +0 -8
- package/dist/webpack/scssParams.js +0 -9
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";var _fs=_interopRequireDefault(require("fs"));var _net=_interopRequireDefault(require("net"));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};}/**
|
|
2
|
-
* Entry point for the Catalyst Node.js server process.
|
|
3
|
-
*
|
|
4
|
-
* Dev hot-reload strategy:
|
|
5
|
-
* - loadable-stats.json change → clear require cache (picks up new client chunks)
|
|
6
|
-
* - /server file change → clear require cache + full Express restart
|
|
7
|
-
*
|
|
8
|
-
* EADDRINUSE prevention: restartServer() nulls `serverInstance` before close() so
|
|
9
|
-
* concurrent watcher events only schedule one startServer() on the closing socket.
|
|
10
|
-
*/const env=process.env.NODE_ENV||"development";// Run any app-defined pre-start hook (e.g. seed config, connect to DB)
|
|
11
|
-
(0,_validator.safeCall)(_index.preServerInit);// ─── Process-level error handlers ────────────────────────────────────────────
|
|
12
|
-
process.on("uncaughtException",(err,origin)=>{console.log(process.stderr.fd);console.log(`Caught exception: ${err}\n`+`Exception origin: ${origin}`);});process.on("uncaughtExceptionMonitor",(err,origin)=>{console.log(err,origin);});process.on("unhandledRejection",err=>console.log("unhandledRejection in Catalyst",safeStringify(err)));process.on("SIGINT",function(data){console.log("SIGINT");console.log(data);process.exit(0);});// Parent process can send "shutdown" to trigger a clean exit (used by cluster managers)
|
|
13
|
-
process.on("message",function(msg){if(msg=="shutdown"){console.log("Closing all connections...");setTimeout(function(){console.log("Finished closing connections");process.exit(0);},1500);}});// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
14
|
-
function safeStringify(err){try{return JSON.stringify(err);}catch(e){console.log("error in safeStringify",e);return err;}}// ─── Configuration ────────────────────────────────────────────────────────────
|
|
15
|
-
const port=process.env.NODE_SERVER_PORT??3005;const host=process.env.NODE_SERVER_HOSTNAME??"localhost";// loadable-stats.json is emitted by webpack (@loadable/webpack-plugin) after every
|
|
16
|
-
// successful client-side build. Its presence signals that at least one build has
|
|
17
|
-
// completed and the server can safely start serving SSR responses.
|
|
18
|
-
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`);}// Watcher on loadable-stats.json — used to detect completed webpack rebuilds
|
|
19
|
-
const watcher=_chokidar.default.watch(statsPath,{persistent:true});// Holds the active http.Server instance. Kept at module scope so restartServer()
|
|
20
|
-
// can close the old instance before creating a new one.
|
|
21
|
-
let serverInstance=null;// ─── Cache management ─────────────────────────────────────────────────────────
|
|
22
|
-
/**
|
|
23
|
-
* Purges all app and framework modules from Node's require cache.
|
|
24
|
-
* Called after every webpack rebuild so that the next require("./expressServer")
|
|
25
|
-
* loads the freshly compiled server bundle instead of the stale cached version.
|
|
26
|
-
* node_modules are intentionally left in cache to avoid re-evaluating them on
|
|
27
|
-
* every hot reload.
|
|
28
|
-
*/const clearServerCache=(filePath="")=>{const projectPath=process.env.src_path;Object.keys(require.cache).forEach(key=>{if(key.startsWith(projectPath)||key.includes("catalyst-core")||key.includes(filePath)){delete require.cache[key];}});};// ─── Server lifecycle ─────────────────────────────────────────────────────────
|
|
29
|
-
/**
|
|
30
|
-
* Safely restarts the Express server.
|
|
31
|
-
*
|
|
32
|
-
* Nulls out `serverInstance` before calling close() so that any watcher events
|
|
33
|
-
* that fire concurrently (e.g. an editor writing multiple files on save) hit the
|
|
34
|
-
* `!serverInstance` guard and schedule a single startServer() — rather than each
|
|
35
|
-
* queuing their own close() callback that would all call startServer() once the
|
|
36
|
-
* socket finally closes, causing EADDRINUSE on the second and later attempts.
|
|
37
|
-
*/const restartServer=()=>{if(!serverInstance){startServer();return;}const closing=serverInstance;serverInstance=null;closing.close(()=>startServer());};/**
|
|
38
|
-
* Requires and starts the Express server.
|
|
39
|
-
* expressServer.js is re-required on every call so that, combined with
|
|
40
|
-
* clearServerCache(), hot-reloaded changes are always picked up.
|
|
41
|
-
*/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);(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%20and%20Production/deployment\n"));});};// ─── Port check ───────────────────────────────────────────────────────────────
|
|
42
|
-
/**
|
|
43
|
-
* Verifies the target port is free before we attempt to bind.
|
|
44
|
-
* Probing with a temporary server gives a clear, actionable error message
|
|
45
|
-
* instead of a cryptic EADDRINUSE from Express.
|
|
46
|
-
*/const checkPortAvailability=(port,host)=>{return new Promise((resolve,reject)=>{const tester=_net.default.createServer().once("error",err=>{tester.close(()=>{if(err.code==="EADDRINUSE"){reject(new Error(`Port ${port} is already in use on ${host}. Please free the port or set a different NODE_SERVER_PORT.`));}else{reject(err);}});}).once("listening",()=>{tester.close(()=>resolve());}).listen(port,host);});};// ─── Startup ──────────────────────────────────────────────────────────────────
|
|
47
|
-
checkPortAvailability(port,host).then(()=>{if(process.env.NODE_ENV==="development"){if(_fs.default.existsSync(statsPath)){// loadable-stats.json already exists (e.g. dev server restarted mid-session):
|
|
48
|
-
// start immediately and clear the module cache on every subsequent webpack rebuild
|
|
49
|
-
// so SSR always uses the latest client chunks.
|
|
50
|
-
watcher.on("change",()=>{clearServerCache();});startServer();}else{// First boot — webpack hasn't finished the initial build yet.
|
|
51
|
-
// Wait for loadable-stats.json to be created before starting the server,
|
|
52
|
-
// otherwise @loadable/server would fail trying to read chunk metadata.
|
|
53
|
-
watcher.on("add",()=>{startServer();});}// Watch the app's /server directory for source changes.
|
|
54
|
-
// Any modification, addition, or deletion of a server-side file triggers
|
|
55
|
-
// a full server restart so the new code is loaded via a fresh require().
|
|
56
|
-
const serverPath=_path.default.join(process.env.src_path,"server");const serverWatcher=_chokidar.default.watch(serverPath,{persistent:true,ignoreInitial:true,// Don't trigger on initial scan
|
|
57
|
-
ignored:/node_modules/});serverWatcher.on("change",filePath=>{clearServerCache(filePath);restartServer();});serverWatcher.on("add",()=>restartServer());serverWatcher.on("unlink",()=>restartServer());}else{startServer();}}).catch(err=>{console.error(`\n[Catalyst] Server startup failed: ${err.message}\n`);process.exit(1);});
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=removeClientCodePlugin;/**
|
|
2
|
-
* @description babel plugin used to remove unwanted code from the build.
|
|
3
|
-
* @return babel plugin object
|
|
4
|
-
*/function removeClientCodePlugin(){return{name:"ast-transform",// not required
|
|
5
|
-
visitor:{ImportDefaultSpecifier(path){path.parentPath.parent.body=path.parentPath.parent.body.map(astStructure=>{if(astStructure.type==="VariableDeclaration"){if(astStructure.declarations[0]?.init?.type==="ArrowFunctionExpression"&&astStructure.declarations[0]?.init?.body?.body?.length>0){astStructure.declarations[0].init.body.body=astStructure.declarations[0].init.body.body.filter(node=>!(node?.type==="ExpressionStatement"&&node?.expression?.callee?.name==="useEffect"));}}if(astStructure?.type==="FunctionDeclaration"&&astStructure?.body?.body?.length>0){astStructure.body.body=astStructure.body.body.filter(node=>!(node?.type==="ExpressionStatement"&&node?.expression?.callee?.name==="useEffect"));}return astStructure;});}}};}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=removeSsrCodePlugin;/**
|
|
2
|
-
* @description babel plugin used to remove unwanted code from the build.
|
|
3
|
-
* @return babel plugin object
|
|
4
|
-
*/function removeSsrCodePlugin(){return{name:"ast-transform",// not required
|
|
5
|
-
visitor:{ImportDefaultSpecifier(path){path.parentPath.parent.body=path.parentPath.parent.body.filter(val=>val?.expression?.left?.property?.name!=="serverSideFunction"&&val?.expression?.left?.property?.name!=="serverFetcher");}}};}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const isCompilerEnabled=!!_webpackConfig.default.reactCompiler;const reactCompilerOptions=typeof _webpackConfig.default.reactCompiler==="object"?_webpackConfig.default.reactCompiler:{target:"19"};var _default=exports.default={babelrc:false,presets:[["@babel/preset-typescript",{isTSX:true,allExtensions:true}],["@babel/preset-env",{targets:{browsers:"last 2 versions"}}],["@babel/preset-react",{runtime:"automatic"}]],plugins:[...(isCompilerEnabled?[["babel-plugin-react-compiler",reactCompilerOptions]]:[]),"@loadable/babel-plugin"],env:{production:{plugins:[require("./babel-plugins/remove-ssr.plugin").default]},test:{presets:["@babel/preset-react"]},development:{plugins:["react-refresh/babel"]}},ignore:["__TEST__"]};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const isCompilerEnabled=!!_webpackConfig.default.reactCompiler;const reactCompilerOptions=typeof _webpackConfig.default.reactCompiler==="object"?_webpackConfig.default.reactCompiler:{target:"19"};var _default=exports.default={babelrc:false,presets:[["@babel/preset-typescript",{isTSX:true,allExtensions:true}],["@babel/preset-env",{targets:{node:"current"}}],["@babel/preset-react",{runtime:"automatic"}]],plugins:[...(isCompilerEnabled?[["babel-plugin-react-compiler",reactCompilerOptions]]:[]),"@loadable/babel-plugin"],env:{development:{plugins:["react-refresh/babel"]},production:{plugins:[require("./babel-plugins/remove-client.plugin").default]}},ignore:["__TEST__"]};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.basePlugins=void 0;var _path=_interopRequireDefault(require("path"));var _webpack=_interopRequireDefault(require("webpack"));var _miniCssExtractPlugin=_interopRequireDefault(require("mini-css-extract-plugin"));var _webpackBundleAnalyzer=require("webpack-bundle-analyzer");var _config=_interopRequireDefault(require("@catalyst/root/config.json"));var _package=require("@catalyst/template/package.json");var _scssParams=require("@catalyst/webpack/scssParams");var _babelConfig=_interopRequireDefault(require("@catalyst/webpack/babel.config.ssr"));var _babelConfig2=_interopRequireDefault(require("@catalyst/webpack/babel.config.client"));var _loadEnvironmentVariables=_interopRequireDefault(require("@catalyst/scripts/loadEnvironmentVariables"));var _config2=require("@catalyst/template/config/config.json");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}(0,_loadEnvironmentVariables.default)();const isDev=process.env.NODE_ENV==="development";const isSSR=!!process.env.SSR||false;const basePlugins=exports.basePlugins=[// Expose only the whitelisted env vars to the client bundle
|
|
2
|
-
new _webpack.default.DefinePlugin({"process.env":([..._config2.CLIENT_ENV_VARIABLES,"BUILD_OUTPUT_PATH","NODE_ENV","PUBLIC_STATIC_ASSET_PATH","PUBLIC_STATIC_ASSET_URL","src_path","PWD","SENTRY_CONFIG"]||[]).reduce((clientEnvMap,env)=>{clientEnvMap[env]=JSON.stringify(process.env[env]);return clientEnvMap;},{})}),_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
|
|
3
|
-
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",// Use filesystem cache to reduce memory pressure and improve rebuild performance
|
|
4
|
-
cache:isDev?{type:"filesystem",buildDependencies:{config:[__filename]},cacheDirectory:_path.default.join(process.env.src_path,"node_modules/catalyst-core/.cache/webpack")}:false,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)=>{// nosemgrep
|
|
5
|
-
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}},{// CSS Modules for component-scoped styles; excludes node_modules and global base styles
|
|
6
|
-
test:/\.scss$/,exclude:[_path.default.resolve(process.env.src_path,"./node_modules"),_path.default.resolve(process.env.src_path,"./src/static/css/base")],use:[!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")]}}]},{// Global styles (node_modules + base CSS): not modularized, served by dev-server in dev / inlined by server in prod
|
|
7
|
-
test:/\.scss$/,include:[_path.default.resolve(process.env.src_path,"./node_modules"),_path.default.resolve(process.env.src_path,"./src/static/css/base")],use:[!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"]},{test:/\.(ttf|eot|woff2?)$/,use:[{loader:"url-loader",options:{limit:10240,outputPath:[_path.default.resolve(process.env.src_path,"./src/static/fonts/")]}},"file-loader"]},{test:/\.html$/,use:[{loader:"html-loader",options:{minimize:{minifyJS:true,minifyCSS:true,removeComments:false,collapseWhitespace:true}}}]}]}};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";var _net=_interopRequireDefault(require("net"));var _webpack=_interopRequireDefault(require("webpack"));var _webpackMerge=_interopRequireDefault(require("webpack-merge"));var _webpackDevServer=_interopRequireDefault(require("webpack-dev-server"));var _webpackPlugin=_interopRequireDefault(require("@loadable/webpack-plugin"));var _miniCssExtractPlugin=_interopRequireDefault(require("mini-css-extract-plugin"));var _reactRefreshWebpackPlugin=_interopRequireDefault(require("@pmmmwh/react-refresh-webpack-plugin"));var _path=_interopRequireDefault(require("path"));var _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 webpackClientConfig=(0,_webpackMerge.default)(_baseBabel.default,{// eval-cheap-module-source-map: faster rebuilds and lower memory than inline-source-map
|
|
2
|
-
devtool:"inline-source-map",stats:"none",infrastructureLogging:{level:"none"},plugins:[// writeToDisk is required because the Node server runs in a separate process
|
|
3
|
-
// and cannot access webpack's in-memory filesystem to read loadable-stats.json.
|
|
4
|
-
new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..")}}),new _reactRefreshWebpackPlugin.default({overlay:{entry:false}}),new _miniCssExtractPlugin.default({filename:_config.default.cssChunkFileName,ignoreOrder:true}),..._webpackConfig.default.developmentPlugins].filter(Boolean),optimization:{runtimeChunk:"single",moduleIds:"deterministic",splitChunks:_webpackConfig.default.splitChunksConfig?_webpackConfig.default.splitChunksConfig:{cacheGroups:{commonVendor:{test:/[\\/]node_modules[\\/](react|react-dom|react-redux|react-router|react-router-dom|redux|redux-thunk|axios|react-loadable-visibility|react-helmet-async|react-fast-compare|react-async-script|babel|@loadable\/component|catalyst)[\\/]/,name:"commonVendor",minSize:30000},utilityVendor:{maxInitialRequests:Infinity,chunks:"all",// minSize: 0, // Enable to replicate stand alone chunking for all packages
|
|
5
|
-
reuseExistingChunk:true,// Disable to replicate stand alone chunking for all packages
|
|
6
|
-
minRemainingSize:1000,// Disable to replicate stand alone chunking for all packages
|
|
7
|
-
test:/[\\/]node_modules[\\/]/,name(module){const moduleFileName=module.identifier().split("node_modules")?.[1]?.split("/").reverse().slice(0,3).reduce((item,current)=>{item=current+"."+item;return item;},[]);return`npm.${moduleFileName}`;}}}}}});// SSR compiler runs in a separate process; this process handles client-side HMR only
|
|
8
|
-
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));const checkPortAvailability=(port,host)=>{return new Promise((resolve,reject)=>{const tester=_net.default.createServer().once("error",err=>{tester.close(()=>{if(err.code==="EADDRINUSE"){reject(new Error(`Port ${port} is already in use on ${host}. Please free the port or set a different WEBPACK_DEV_SERVER_PORT.`));}else{reject(err);}});}).once("listening",()=>{tester.close(()=>resolve());}).listen(port,host);});};checkPortAvailability(WEBPACK_DEV_SERVER_PORT,WEBPACK_DEV_SERVER_HOSTNAME).then(()=>{devServer.start().then(()=>{console.log("Catalyst is compiling your files.");console.log("Please wait until bundling is finished.\n");}).catch(err=>{console.error("Failed to start webpack-dev-server:",err);process.exit(1);});}).catch(err=>{console.error(`\n[Catalyst] Dev server startup failed: ${err.message}\n`);process.exit(1);});const cleanup=()=>{console.log("[Client] Shutting down client dev server...");devServer.stop().then(()=>{process.exit();});};// Handle various ways the process might exit
|
|
9
|
-
process.on("SIGINT",cleanup);// Ctrl+C
|
|
10
|
-
process.on("SIGTERM",cleanup);// kill
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _registerAliases2=require("../scripts/registerAliases.js");require("../scripts/loadScriptsBeforeServerStarts.js");var _path=_interopRequireDefault(require("path"));var _webpackPlugin=_interopRequireDefault(require("@loadable/webpack-plugin"));var _miniCssExtractPlugin=_interopRequireDefault(require("mini-css-extract-plugin"));var _webpackMerge=require("webpack-merge");var _base=_interopRequireDefault(require("@catalyst/webpack/base.babel"));var _config=_interopRequireDefault(require("@catalyst/root/config.json"));var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}/* eslint-disable */const clientConfig=(0,_webpackMerge.mergeWithCustomize)({customizeArray:(0,_webpackMerge.customizeArray)({entry:"prepend",plugins:"append",module:"prepend"}),customizeObject:(0,_webpackMerge.customizeObject)({entry:"prepend",plugins:"append",module:"prepend"})})(_base.default,{mode:"production",devtool:"source-map",stats:"errors-only",resolve:{alias:_registerAliases2.catalystResultMap},optimization:{runtimeChunk:"single",moduleIds:"deterministic",splitChunks:_webpackConfig.default.splitChunksConfig?_webpackConfig.default.splitChunksConfig:{cacheGroups:{commonVendor:{chunks:"all",test:/[\\/]node_modules[\\/](react|react-dom|react-redux|react-router|react-router-dom|redux|redux-thunk|axios|react-loadable-visibility|react-helmet-async|react-fast-compare|react-async-script|babel|@loadable\/component|catalyst)[\\/]/,name:"commonVendor",minSize:400000,maxSize:400000},utilityVendor:{maxInitialRequests:Infinity,chunks:"all",// minSize: 0, // Enable to replicate stand alone chunking for all packages
|
|
2
|
-
reuseExistingChunk:true,// Disable to replicate stand alone chunking for all packages
|
|
3
|
-
minRemainingSize:1000,// Disable to replicate stand alone chunking for all packages
|
|
4
|
-
minSize:1000,maxSize:120000,test:/[\\/]node_modules[\\/]/,name(module){const moduleFileName=module.identifier().split("/").reverse().slice(0,3).reduce((item,current)=>{item=current+"."+item;return item;},[]);return`npm.${moduleFileName}`;}}},chunks:"all",name(module){const moduleFileName=module.identifier().split("/").reverse().slice(0,3).reduce((item,current)=>{item=current+"."+item;return item;},[]);return`npm.${moduleFileName}`;}}},plugins:[new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..")}}),new _miniCssExtractPlugin.default({filename:_config.default.cssChunkFileName,ignoreOrder:true}),..._webpackConfig.default.clientPlugins]});var _default=exports.default=clientConfig;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _registerAliases2=require("../scripts/registerAliases.js");require("../scripts/loadScriptsBeforeServerStarts.js");var _path=_interopRequireDefault(require("path"));var _webpackNodeExternals=_interopRequireDefault(require("webpack-node-externals"));var _webpackPlugin=_interopRequireDefault(require("@loadable/webpack-plugin"));var _appRootPath=_interopRequireDefault(require("app-root-path"));var _base=_interopRequireDefault(require("@catalyst/webpack/base.babel"));var _config=_interopRequireDefault(require("@catalyst/root/config.json"));var _webpackConfig=_interopRequireDefault(require("@catalyst/template/webpackConfig.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}/* eslint-disable */const{mergeWithCustomize,customizeArray,customizeObject}=require("webpack-merge");const ssrConfig=mergeWithCustomize({customizeArray:customizeArray({entry:"replace",optimization:"replace",plugins:"prepend"}),customizeObject:customizeObject({entry:"replace",optimization:"replace",plugins:"prepend"})})(_base.default,{mode:"production",stats:"errors-only",optimization:{splitChunks:{chunks:"all",minSize:10000000,name:false}},resolve:{alias:_registerAliases2.catalystResultMap},plugins:[..._webpackConfig.default.ssrPlugins,new _webpackPlugin.default({filename:"loadable-stats.json",writeToDisk:{filename:_path.default.join(__dirname,"../..")}})],target:"node",entry:{handler:_path.default.resolve(__dirname,"..","./server/renderer/handler.js")},externals:[// images are handled by isomorphic webpack.
|
|
2
|
-
// html files are required directly
|
|
3
|
-
/\.(html|png|gif|jpg)$/,// OpenTelemetry is an opt-in peer dependency that may not be installed.
|
|
4
|
-
// Always treat it (and @grpc/grpc-js, pulled in by the gRPC exporters) as
|
|
5
|
-
// external so the build never tries to resolve it; the lazy import() in
|
|
6
|
-
// src/otel.js then only requires it at runtime when OTEL_ENABLE=true.
|
|
7
|
-
/^@opentelemetry\//,"@grpc/grpc-js",// treat all node modules as external to keep this bundle small
|
|
8
|
-
(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;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.imageUrl=exports.fontUrl=void 0;/**
|
|
2
|
-
* @description generate assets url according to enviorment
|
|
3
|
-
* @returns returns path required for loading assets according to enviorment
|
|
4
|
-
*/const imageUrl=()=>{const{PUBLIC_STATIC_ASSET_URL,PUBLIC_STATIC_ASSET_PATH,IS_DEV_COMMAND,NODE_SERVER_HOSTNAME,NODE_SERVER_PORT}=process.env;let publicPath=`${PUBLIC_STATIC_ASSET_URL}${PUBLIC_STATIC_ASSET_PATH}`;// serves assets from localhost on running devBuild and devServe command
|
|
5
|
-
if(IS_DEV_COMMAND==="true"){publicPath=`http://${NODE_SERVER_HOSTNAME}:${NODE_SERVER_PORT}/${PUBLIC_STATIC_ASSET_PATH}`;}const imagePath=JSON.stringify(`${publicPath}images/`);return imagePath;};/**
|
|
6
|
-
* @description generate assets font url according to enviorment
|
|
7
|
-
* @returns returns path required for loading fonts according to enviorment
|
|
8
|
-
*/exports.imageUrl=imageUrl;const fontUrl=()=>{const{PUBLIC_STATIC_ASSET_URL,PUBLIC_STATIC_ASSET_PATH,IS_DEV_COMMAND,NODE_SERVER_HOSTNAME,NODE_SERVER_PORT}=process.env;let publicPath=`${PUBLIC_STATIC_ASSET_URL}${PUBLIC_STATIC_ASSET_PATH}`;// serves assets from localhost on running devBuild and devServe command
|
|
9
|
-
if(IS_DEV_COMMAND==="true"){publicPath=`http://${NODE_SERVER_HOSTNAME}:${NODE_SERVER_PORT}/${PUBLIC_STATIC_ASSET_PATH}`;}const fontPath=JSON.stringify(`${publicPath}fonts/`);return fontPath;};exports.fontUrl=fontUrl;
|