create-catalyst-app 0.0.1-beta.1 → 0.0.1-beta.10
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/{readme.md → Readme.md} +7 -4
- package/codemod/new-route/index.js +98 -0
- package/codemod/new-route/template.js +119 -0
- package/codemod/new-route/transformers/createReducer.js +38 -0
- package/codemod/new-route/transformers/createRoute.js +33 -0
- package/codemod/new-route/utils.js +90 -0
- package/license +10 -0
- package/package.json +18 -18
- package/scripts/cli.cjs +259 -0
- package/templates/common/.eslintignore +1 -6
- package/templates/common/.eslintrc +13 -38
- package/templates/common/README.md +16 -20
- package/templates/common/api.js +12 -25
- package/templates/common/client/styles.js +1 -13
- package/templates/common/config/config.json +10 -16
- package/templates/common/public/favicon.ico +0 -0
- package/templates/{redux-js → common}/server/document.js +2 -4
- package/templates/common/server/index.js +2 -0
- package/templates/common/server/server.js +8 -0
- package/templates/common/src/js/containers/Home/Home.js +23 -40
- package/templates/common/src/js/containers/Home/Home.scss +34 -0
- package/templates/common/src/js/routes/index.js +9 -48
- package/templates/common/src/static/css/base/index.scss +0 -7
- package/templates/common/src/static/css/base/styles.scss +0 -160
- package/templates/common/src/static/css/resources/_variables.scss +0 -172
- package/templates/{redux-js → common}/webpackConfig.js +2 -2
- package/templates/none-js/client/index.js +8 -12
- package/templates/none-js/package.json +13 -36
- package/templates/none-js/src/js/containers/App/index.js +12 -36
- package/templates/none-js/src/js/routes/utils.js +42 -0
- package/templates/redux-js/client/index.js +6 -5
- package/templates/redux-js/package.json +16 -36
- package/templates/redux-js/src/js/containers/App/actions.js +1 -4
- package/templates/redux-js/src/js/containers/App/index.js +12 -38
- package/templates/redux-js/src/js/containers/App/reducer.js +15 -17
- package/templates/redux-js/src/js/routes/utils.js +42 -0
- package/templates/redux-js/src/js/store/index.js +17 -68
- package/templates/rtk-js/client/index.js +6 -5
- package/templates/rtk-js/package.json +16 -36
- package/templates/rtk-js/src/js/containers/App/index.js +12 -38
- package/templates/rtk-js/src/js/containers/App/reducer.js +1 -9
- package/templates/rtk-js/src/js/routes/utils.js +42 -0
- package/templates/rtk-js/src/js/store/index.js +12 -6
- package/scripts/cli.mjs +0 -266
- package/templates/common/.babelrc +0 -26
- package/templates/common/.editorconfig +0 -12
- package/templates/common/.stylelintrc +0 -35
- package/templates/common/checkVersion.js +0 -3
- package/templates/common/client/index.js +0 -39
- package/templates/common/config/config_template.json +0 -18
- package/templates/common/config/index.js +0 -77
- package/templates/common/package.json +0 -57
- package/templates/common/server/CustomDocument.js +0 -14
- package/templates/common/server/customIndex.js +0 -3
- package/templates/common/server/customServer.js +0 -16
- package/templates/common/src/js/containers/App/actions.js +0 -20
- package/templates/common/src/js/containers/App/index.js +0 -46
- package/templates/common/src/js/containers/App/reducer.js +0 -21
- package/templates/common/src/js/containers/PDP/PDP.js +0 -37
- package/templates/common/src/js/reducer/index.js +0 -80
- package/templates/common/src/js/stateManager/stateProvider.js +0 -34
- package/templates/common/src/js/store/index.js +0 -77
- package/templates/common/src/static/css/base/_overrides.scss +0 -81
- package/templates/common/src/static/css/base/animations.js +0 -38
- package/templates/common/src/static/css/base/layout.scss +0 -242
- package/templates/common/src/static/css/base/typography.scss +0 -285
- package/templates/common/src/static/css/resources/_mixins.scss +0 -196
- package/templates/common/src/static/css/resources/_vendors.scss +0 -1
- package/templates/common/src/static/fonts/.gitkeep +0 -0
- package/templates/common/src/static/fonts/Inter-Bold-Subset.otf +0 -0
- package/templates/common/src/static/fonts/Inter-Italic-Subset.otf +0 -0
- package/templates/common/src/static/fonts/Inter-Light-Subset.otf +0 -0
- package/templates/common/src/static/fonts/Inter-Medium-Subset.otf +0 -0
- package/templates/common/src/static/fonts/Inter-Regular-Subset.otf +0 -0
- package/templates/common/src/static/fonts/Inter-SemiBold-Subset.otf +0 -0
- package/templates/common/src/static/fonts/Poppins-Bold-Subset.woff2 +0 -0
- package/templates/common/src/static/fonts/Poppins-Italic-Subset.woff2 +0 -0
- package/templates/common/src/static/fonts/Poppins-Light-Subset.woff2 +0 -0
- package/templates/common/src/static/fonts/Poppins-Medium-Subset.woff2 +0 -0
- package/templates/common/src/static/fonts/Poppins-Regular-Subset.woff2 +0 -0
- package/templates/common/src/static/fonts/Poppins-SemiBold-Subset.woff2 +0 -0
- package/templates/none-js/.babelrc +0 -26
- package/templates/none-js/.eslintignore +0 -6
- package/templates/none-js/.eslintrc +0 -53
- package/templates/none-js/.prettierrc.json +0 -7
- package/templates/none-js/.stylelintrc +0 -35
- package/templates/none-js/README.md +0 -22
- package/templates/none-js/api.js +0 -29
- package/templates/none-js/checkVersion.js +0 -3
- package/templates/none-js/client/styles.js +0 -15
- package/templates/none-js/config/config.json +0 -15
- package/templates/none-js/config/config_template.json +0 -18
- package/templates/none-js/config/index.js +0 -44
- package/templates/none-js/server/document.js +0 -14
- package/templates/none-js/server/index.js +0 -3
- package/templates/none-js/server/server.js +0 -16
- package/templates/none-js/src/js/containers/DemoPage/DemoPage.js +0 -39
- package/templates/none-js/src/js/containers/DemoPage/DemoPage.scss +0 -3
- package/templates/none-js/src/js/containers/Home/Home.js +0 -27
- package/templates/none-js/src/js/containers/Home/Home.scss +0 -36
- package/templates/none-js/src/js/routes/index.js +0 -49
- package/templates/none-js/src/js/stateManager/stateProvider.js +0 -19
- package/templates/none-js/src/js/store/index.js +0 -6
- package/templates/none-js/src/static/css/base/index.scss +0 -3
- package/templates/none-js/src/static/css/base/styles.scss +0 -11
- package/templates/none-js/src/static/css/base/typography.scss +0 -53
- package/templates/none-js/src/static/css/resources/_variables.scss +0 -1
- package/templates/none-js/src/static/fonts/.gitkeep +0 -0
- package/templates/none-js/src/static/fonts/Inter-Bold-Subset.otf +0 -0
- package/templates/none-js/src/static/fonts/Inter-Italic-Subset.otf +0 -0
- package/templates/none-js/src/static/fonts/Inter-Light-Subset.otf +0 -0
- package/templates/none-js/src/static/fonts/Inter-Medium-Subset.otf +0 -0
- package/templates/none-js/src/static/fonts/Inter-Regular-Subset.otf +0 -0
- package/templates/none-js/src/static/fonts/Inter-SemiBold-Subset.otf +0 -0
- package/templates/none-js/src/static/fonts/Poppins-Bold-Subset.woff2 +0 -0
- package/templates/none-js/src/static/fonts/Poppins-Italic-Subset.woff2 +0 -0
- package/templates/none-js/src/static/fonts/Poppins-Medium-Subset.woff2 +0 -0
- package/templates/none-js/src/static/fonts/Poppins-Regular-Subset.woff2 +0 -0
- package/templates/none-js/src/static/fonts/Poppins-SemiBold-Subset.woff2 +0 -0
- package/templates/none-js/webpackConfig.js +0 -5
- package/templates/redux-js/.babelrc +0 -26
- package/templates/redux-js/.eslintignore +0 -6
- package/templates/redux-js/.eslintrc +0 -53
- package/templates/redux-js/.prettierrc.json +0 -7
- package/templates/redux-js/.stylelintrc +0 -35
- package/templates/redux-js/README.md +0 -22
- package/templates/redux-js/api.js +0 -29
- package/templates/redux-js/checkVersion.js +0 -3
- package/templates/redux-js/client/styles.js +0 -15
- package/templates/redux-js/config/config.json +0 -15
- package/templates/redux-js/config/config_template.json +0 -18
- package/templates/redux-js/config/index.js +0 -44
- package/templates/redux-js/server/index.js +0 -3
- package/templates/redux-js/server/server.js +0 -16
- package/templates/redux-js/src/js/containers/DemoPage/DemoPage.js +0 -39
- package/templates/redux-js/src/js/containers/DemoPage/DemoPage.scss +0 -3
- package/templates/redux-js/src/js/containers/Home/Home.js +0 -27
- package/templates/redux-js/src/js/containers/Home/Home.scss +0 -36
- package/templates/redux-js/src/js/reducer/index.js +0 -80
- package/templates/redux-js/src/js/routes/index.js +0 -49
- package/templates/redux-js/src/js/stateManager/stateProvider.js +0 -34
- package/templates/redux-js/src/static/css/base/index.scss +0 -3
- package/templates/redux-js/src/static/css/base/styles.scss +0 -11
- package/templates/redux-js/src/static/css/base/typography.scss +0 -53
- package/templates/redux-js/src/static/css/resources/_variables.scss +0 -1
- package/templates/redux-js/src/static/fonts/.gitkeep +0 -0
- package/templates/redux-js/src/static/fonts/Inter-Bold-Subset.otf +0 -0
- package/templates/redux-js/src/static/fonts/Inter-Italic-Subset.otf +0 -0
- package/templates/redux-js/src/static/fonts/Inter-Light-Subset.otf +0 -0
- package/templates/redux-js/src/static/fonts/Inter-Medium-Subset.otf +0 -0
- package/templates/redux-js/src/static/fonts/Inter-Regular-Subset.otf +0 -0
- package/templates/redux-js/src/static/fonts/Inter-SemiBold-Subset.otf +0 -0
- package/templates/redux-js/src/static/fonts/Poppins-Bold-Subset.woff2 +0 -0
- package/templates/redux-js/src/static/fonts/Poppins-Italic-Subset.woff2 +0 -0
- package/templates/redux-js/src/static/fonts/Poppins-Medium-Subset.woff2 +0 -0
- package/templates/redux-js/src/static/fonts/Poppins-Regular-Subset.woff2 +0 -0
- package/templates/redux-js/src/static/fonts/Poppins-SemiBold-Subset.woff2 +0 -0
- package/templates/rtk-js/.babelrc +0 -26
- package/templates/rtk-js/.eslintignore +0 -6
- package/templates/rtk-js/.eslintrc +0 -53
- package/templates/rtk-js/.prettierrc.json +0 -7
- package/templates/rtk-js/.stylelintrc +0 -35
- package/templates/rtk-js/README.md +0 -23
- package/templates/rtk-js/api.js +0 -29
- package/templates/rtk-js/checkVersion.js +0 -3
- package/templates/rtk-js/client/styles.js +0 -15
- package/templates/rtk-js/config/config.json +0 -15
- package/templates/rtk-js/config/config_template.json +0 -18
- package/templates/rtk-js/config/index.js +0 -44
- package/templates/rtk-js/server/document.js +0 -14
- package/templates/rtk-js/server/index.js +0 -3
- package/templates/rtk-js/server/server.js +0 -16
- package/templates/rtk-js/src/js/containers/DemoPage/DemoPage.js +0 -39
- package/templates/rtk-js/src/js/containers/DemoPage/DemoPage.scss +0 -3
- package/templates/rtk-js/src/js/containers/Home/Home.js +0 -27
- package/templates/rtk-js/src/js/containers/Home/Home.scss +0 -36
- package/templates/rtk-js/src/js/reducer/index.js +0 -80
- package/templates/rtk-js/src/js/routes/index.js +0 -49
- package/templates/rtk-js/src/js/stateManager/stateProvider.js +0 -34
- package/templates/rtk-js/src/static/css/base/index.scss +0 -3
- package/templates/rtk-js/src/static/css/base/styles.scss +0 -11
- package/templates/rtk-js/src/static/css/base/typography.scss +0 -53
- package/templates/rtk-js/src/static/css/resources/_variables.scss +0 -1
- package/templates/rtk-js/src/static/fonts/.gitkeep +0 -0
- package/templates/rtk-js/src/static/fonts/Inter-Bold-Subset.otf +0 -0
- package/templates/rtk-js/src/static/fonts/Inter-Italic-Subset.otf +0 -0
- package/templates/rtk-js/src/static/fonts/Inter-Light-Subset.otf +0 -0
- package/templates/rtk-js/src/static/fonts/Inter-Medium-Subset.otf +0 -0
- package/templates/rtk-js/src/static/fonts/Inter-Regular-Subset.otf +0 -0
- package/templates/rtk-js/src/static/fonts/Inter-SemiBold-Subset.otf +0 -0
- package/templates/rtk-js/src/static/fonts/Poppins-Bold-Subset.woff2 +0 -0
- package/templates/rtk-js/src/static/fonts/Poppins-Italic-Subset.woff2 +0 -0
- package/templates/rtk-js/src/static/fonts/Poppins-Medium-Subset.woff2 +0 -0
- package/templates/rtk-js/src/static/fonts/Poppins-Regular-Subset.woff2 +0 -0
- package/templates/rtk-js/src/static/fonts/Poppins-SemiBold-Subset.woff2 +0 -0
- package/templates/rtk-js/webpackConfig.js +0 -5
- /package/{templates/common/.prettierrc.json → .prettierrc.json} +0 -0
|
@@ -1,42 +1,16 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import {
|
|
3
|
-
useLocation,
|
|
4
|
-
useOutlet,
|
|
5
|
-
UNSAFE_LocationContext,
|
|
6
|
-
} from "react-router-dom";
|
|
7
|
-
import {reduxTest} from "./actions"
|
|
8
|
-
import "@css/base/index.scss";
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { Outlet } from "@tata1mg/router"
|
|
9
3
|
|
|
10
|
-
|
|
11
|
-
export const BaseOutlet = () => {
|
|
12
|
-
const o = useOutlet();
|
|
13
|
-
const [outlet] = useState(o);
|
|
14
|
-
|
|
15
|
-
return <>{outlet}</>;
|
|
16
|
-
};
|
|
17
4
|
const App = () => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
</UNSAFE_LocationContext.Provider>
|
|
25
|
-
</div>
|
|
26
|
-
);
|
|
27
|
-
return (
|
|
28
|
-
<div className={"flexColumn"}>
|
|
29
|
-
<>
|
|
30
|
-
{/* <ShellLocusHeader /> */}
|
|
31
|
-
</>
|
|
32
|
-
<div>{page}</div>
|
|
33
|
-
</div>
|
|
34
|
-
);
|
|
35
|
-
};
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<Outlet />
|
|
8
|
+
</>
|
|
9
|
+
)
|
|
10
|
+
}
|
|
36
11
|
|
|
37
|
-
App.serverSideFunction = (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
12
|
+
App.serverSideFunction = () => {
|
|
13
|
+
return new Promise((resolve) => resolve())
|
|
14
|
+
}
|
|
41
15
|
|
|
42
|
-
export default App
|
|
16
|
+
export default App
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import { ShellActions } from "./actions"
|
|
1
|
+
import { ShellActions } from "./actions"
|
|
2
2
|
|
|
3
3
|
export const defaultState = {
|
|
4
|
-
|
|
5
|
-
}
|
|
4
|
+
testActionDispatched: false,
|
|
5
|
+
}
|
|
6
6
|
|
|
7
|
-
const shellReducer = (state = defaultState, action) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
default:
|
|
17
|
-
return state;
|
|
18
|
-
}
|
|
19
|
-
};
|
|
7
|
+
export const shellReducer = (state = defaultState, action) => {
|
|
8
|
+
switch (action.type) {
|
|
9
|
+
case ShellActions.REDUX_TEST: {
|
|
10
|
+
return {
|
|
11
|
+
...state,
|
|
12
|
+
testActionDispatched: true,
|
|
13
|
+
}
|
|
14
|
+
}
|
|
20
15
|
|
|
21
|
-
|
|
16
|
+
default:
|
|
17
|
+
return state
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { RouterDataProvider, MetaTag } from "@tata1mg/router"
|
|
3
|
+
import App from "@containers/App"
|
|
4
|
+
import routes from "./index.js"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Making the routes array compatible with the format accepted by createBrowserRouter
|
|
8
|
+
* API on the client side
|
|
9
|
+
* https://reactrouter.com/en/main/routers/create-browser-router
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export const preparedRoutes = ({ store, routerInitialState }) => {
|
|
13
|
+
const getPreparedRoutes = (routes) => {
|
|
14
|
+
return routes.map((route, index) => {
|
|
15
|
+
const Component = route.component
|
|
16
|
+
const routeToRender = {
|
|
17
|
+
...route,
|
|
18
|
+
element: <Component key={index} />,
|
|
19
|
+
}
|
|
20
|
+
if (route.children) {
|
|
21
|
+
routeToRender.children = getPreparedRoutes(route.children)
|
|
22
|
+
}
|
|
23
|
+
return routeToRender
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return [
|
|
28
|
+
{
|
|
29
|
+
element: (
|
|
30
|
+
<RouterDataProvider config={{}} initialState={routerInitialState} fetcherArgs={{ store }}>
|
|
31
|
+
<MetaTag />
|
|
32
|
+
<App />
|
|
33
|
+
</RouterDataProvider>
|
|
34
|
+
),
|
|
35
|
+
children: getPreparedRoutes(routes),
|
|
36
|
+
},
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const getRoutes = () => {
|
|
41
|
+
return routes
|
|
42
|
+
}
|
|
@@ -1,79 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import createReducerManager from "../reducer/index.js"
|
|
7
|
-
import fetchInstance from "../../../api.js"
|
|
1
|
+
import { configureStore as createStore } from "@reduxjs/toolkit"
|
|
2
|
+
import { combineReducers } from "redux"
|
|
3
|
+
import { shellReducer } from "@containers/App/reducer.js"
|
|
4
|
+
import fetchInstance from "@api"
|
|
5
|
+
|
|
8
6
|
/**
|
|
9
7
|
* Function that initializes the store with the initialstate and adds middlewares that can be used during action dispatch
|
|
10
8
|
* @param {object} initialState Default state
|
|
11
|
-
* @param {object}
|
|
12
|
-
* @
|
|
13
|
-
* @return {object} the store itself
|
|
9
|
+
* @param {object} request Request object that we recieve on server, this is only recieved when store is initialized on the server.
|
|
10
|
+
* @return {object} The store itself
|
|
14
11
|
*/
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export default function configureStore(initialState, request) {
|
|
19
|
-
|
|
20
|
-
// The variable defined below acts as a flag when the store is initialized on the client side
|
|
21
|
-
// Reason being that for the first time we need to actually need to forcefully set the reducer for which we have the initial data
|
|
22
|
-
let initializeClient = true
|
|
23
|
-
|
|
24
|
-
const reducerManager = createReducerManager()
|
|
25
|
-
|
|
26
|
-
// FRAMEWORK COMMENT. This should be exposed to user.
|
|
13
|
+
const configureStore = (initialState) => {
|
|
27
14
|
const api = fetchInstance
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
// disable redux-logger in server - https://github.com/LogRocket/redux-logger/issues/6
|
|
31
|
-
const reduxLogger = createLogger({
|
|
32
|
-
predicate: () => typeof window !== "undefined",
|
|
33
|
-
})
|
|
34
|
-
const addReducer = (reducer) => {
|
|
35
|
-
// Only executed once when for the first run in client - side
|
|
36
|
-
if (initializeClient) {
|
|
37
|
-
initializeClient = false
|
|
38
|
-
return store.replaceReducer(reducerManager.add(reducer))
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// This blocks check if the reducer is already added or not in store
|
|
42
|
-
// If not then it only add the missing reducers
|
|
43
|
-
// And if the required reducers are already present then we simply return without performing any change
|
|
44
|
-
let reducerToAdd = {}
|
|
45
|
-
const currentState = store.getState()
|
|
46
|
-
for (let key in reducer) {
|
|
47
|
-
if (!currentState[key]) {
|
|
48
|
-
reducerToAdd[key] = reducer[key]
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if (Object.keys(reducerToAdd).length > 0) {
|
|
52
|
-
return store.replaceReducer(reducerManager.add(reducerToAdd))
|
|
53
|
-
}
|
|
54
|
-
return
|
|
55
|
-
}
|
|
56
|
-
let middleware = [thunk.withExtraArgument({ api, addReducer })]
|
|
57
|
-
if(process.env.NODE_ENV !== "production"){
|
|
58
|
-
middleware = [...middleware,reduxLogger]
|
|
59
|
-
}
|
|
60
|
-
// Add universal enhancers here
|
|
61
|
-
let enhancers = []
|
|
62
|
-
|
|
63
|
-
const composeEnhancers = process.env.NODE_ENV === "production" && (typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose
|
|
64
|
-
const enhancer = composeEnhancers(...[applyMiddleware(...middleware), ...enhancers])
|
|
65
|
-
|
|
66
|
-
// create store with enhancers, middleware, reducers, and initialState
|
|
67
|
-
// When the store is initialized on the client side, we are passing a function that just returns the initial State from the server
|
|
68
|
-
// This is way we are able to maintain the initial state from the server on the client side and then add the relevant reducers
|
|
69
|
-
// Which then consumes the initial state
|
|
70
15
|
const store = createStore({
|
|
71
|
-
reducer:combineReducers({shellReducer}),
|
|
72
|
-
|
|
16
|
+
reducer: combineReducers({ shellReducer }),
|
|
17
|
+
middleware: (getDefaultMiddleware) =>
|
|
18
|
+
getDefaultMiddleware({
|
|
19
|
+
thunk: {
|
|
20
|
+
extraArgument: { api },
|
|
21
|
+
},
|
|
22
|
+
}),
|
|
23
|
+
preloadedState: initialState,
|
|
73
24
|
})
|
|
74
|
-
|
|
75
|
-
|
|
76
25
|
return store
|
|
77
26
|
}
|
|
78
27
|
|
|
79
|
-
|
|
28
|
+
export default configureStore
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import React from "react"
|
|
2
|
+
import "./styles"
|
|
2
3
|
import { hydrateRoot } from "react-dom/client"
|
|
3
4
|
import { loadableReady } from "@loadable/component"
|
|
4
5
|
import { Provider } from "react-redux"
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import configureStore from "
|
|
8
|
-
import "./styles"
|
|
6
|
+
import { RouterProvider } from "@tata1mg/router"
|
|
7
|
+
import clientRouter from "catalyst-core/router/ClientRouter"
|
|
8
|
+
import configureStore from "@store"
|
|
9
9
|
|
|
10
10
|
window.addEventListener("load", () => {
|
|
11
11
|
loadableReady(() => {
|
|
12
12
|
const { __ROUTER_INITIAL_DATA__: routerInitialData, __INITIAL_STATE__ } = window
|
|
13
13
|
const store = configureStore(__INITIAL_STATE__ || {})
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
const router = clientRouter({ store, routerInitialState: routerInitialData })
|
|
15
16
|
|
|
16
17
|
const Application = (
|
|
17
18
|
<Provider store={store} serverState={__INITIAL_STATE__}>
|
|
@@ -1,53 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-catalyst-app-starter",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"description": "This README would normally document whatever steps are necessary to get your application up and running.",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"bin": "scripts/cli.mjs",
|
|
7
4
|
"scripts": {
|
|
8
5
|
"start": "catalyst start",
|
|
9
6
|
"build": "catalyst build",
|
|
10
|
-
"serve": "catalyst serve"
|
|
7
|
+
"serve": "catalyst serve",
|
|
8
|
+
"lint": "eslint .",
|
|
9
|
+
"devBuild": "catalyst devBuild",
|
|
10
|
+
"devServe": "catalyst devServe"
|
|
11
11
|
},
|
|
12
12
|
"_moduleAliases": {
|
|
13
|
+
"@api": "api.js",
|
|
13
14
|
"@containers": "src/js/containers",
|
|
14
|
-
"@
|
|
15
|
-
"$server": "server",
|
|
16
|
-
"@constants": "src/js/constants",
|
|
15
|
+
"@server": "server",
|
|
17
16
|
"@config": "config",
|
|
18
|
-
"@
|
|
19
|
-
"@
|
|
20
|
-
|
|
21
|
-
"repository": {
|
|
22
|
-
"type": "git",
|
|
23
|
-
"url": "https://github.com/tata1mg/catalyst"
|
|
17
|
+
"@css": "src/static/css",
|
|
18
|
+
"@routes": "src/js/routes/",
|
|
19
|
+
"@store": "src/js/store/index.js"
|
|
24
20
|
},
|
|
25
21
|
"dependencies": {
|
|
26
22
|
"@loadable/component": "^5.16.3",
|
|
27
|
-
"@tata1mg/router": "^0.0.1-
|
|
28
|
-
"catalyst-core":"0.0.1-beta.
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"framer-motion": "^10.18.0",
|
|
32
|
-
"isomorphic-dompurify": "^2.2.0",
|
|
33
|
-
"normalize.css": "^8.0.1",
|
|
34
|
-
"prop-types": "^15.8.1",
|
|
35
|
-
"pwa": "git+git@bitbucket.org:tata1mg/catalyst.git#framework-scaffolding",
|
|
36
|
-
"react-dfp": "^0.21.0",
|
|
37
|
-
"react-helmet-async":"^1.3.0",
|
|
38
|
-
"react-intersection-observer": "^9.5.3",
|
|
39
|
-
"react-loadable-visibility": "^3.0.2",
|
|
40
|
-
"react-redux": "^8.1.3",
|
|
41
|
-
"@reduxjs/toolkit": "1.9.3"
|
|
42
|
-
},
|
|
43
|
-
"author": "",
|
|
44
|
-
"license": "ISC",
|
|
45
|
-
"bugs": {
|
|
46
|
-
"url": "https://github.com/tata1mg/catalyst/issues"
|
|
23
|
+
"@tata1mg/router": "^0.0.1-beta.6",
|
|
24
|
+
"catalyst-core": "^0.0.1-beta.9",
|
|
25
|
+
"@reduxjs/toolkit": "1.9.3",
|
|
26
|
+
"react-redux": "^8.1.3"
|
|
47
27
|
},
|
|
48
|
-
"homepage": "https://github.com/tata1mg/catalyst#readme",
|
|
49
28
|
"devDependencies": {
|
|
50
|
-
"
|
|
51
|
-
"
|
|
29
|
+
"eslint": "^8.26.0",
|
|
30
|
+
"eslint-plugin-react": "^7.34.1",
|
|
31
|
+
"eslint-plugin-react-hooks": "^4.6.0"
|
|
52
32
|
}
|
|
53
33
|
}
|
|
@@ -1,42 +1,16 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import {
|
|
3
|
-
useLocation,
|
|
4
|
-
useOutlet,
|
|
5
|
-
UNSAFE_LocationContext,
|
|
6
|
-
} from "react-router-dom";
|
|
7
|
-
import {reduxTest} from "./reducer.js"
|
|
8
|
-
import "@css/base/index.scss";
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { Outlet } from "@tata1mg/router"
|
|
9
3
|
|
|
10
|
-
|
|
11
|
-
export const BaseOutlet = () => {
|
|
12
|
-
const o = useOutlet();
|
|
13
|
-
const [outlet] = useState(o);
|
|
14
|
-
|
|
15
|
-
return <>{outlet}</>;
|
|
16
|
-
};
|
|
17
4
|
const App = () => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
</UNSAFE_LocationContext.Provider>
|
|
25
|
-
</div>
|
|
26
|
-
);
|
|
27
|
-
return (
|
|
28
|
-
<div className={"flexColumn"}>
|
|
29
|
-
<>
|
|
30
|
-
{/* <ShellLocusHeader /> */}
|
|
31
|
-
</>
|
|
32
|
-
<div>{page}</div>
|
|
33
|
-
</div>
|
|
34
|
-
);
|
|
35
|
-
};
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<Outlet />
|
|
8
|
+
</>
|
|
9
|
+
)
|
|
10
|
+
}
|
|
36
11
|
|
|
37
|
-
App.serverSideFunction = (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
12
|
+
App.serverSideFunction = () => {
|
|
13
|
+
return new Promise((resolve) => resolve())
|
|
14
|
+
}
|
|
41
15
|
|
|
42
|
-
export default App
|
|
16
|
+
export default App
|
|
@@ -8,7 +8,7 @@ export const appSlice = createSlice({
|
|
|
8
8
|
name: "shellReducer",
|
|
9
9
|
initialState: initialState,
|
|
10
10
|
reducers: {
|
|
11
|
-
reduxTest: (state
|
|
11
|
+
reduxTest: (state) => {
|
|
12
12
|
state.testActionDispatched = true
|
|
13
13
|
},
|
|
14
14
|
},
|
|
@@ -16,11 +16,3 @@ export const appSlice = createSlice({
|
|
|
16
16
|
|
|
17
17
|
export const { reduxTest } = appSlice.actions
|
|
18
18
|
export const shellReducer = appSlice.reducer
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { RouterDataProvider, MetaTag } from "@tata1mg/router"
|
|
3
|
+
import App from "@containers/App"
|
|
4
|
+
import routes from "./index.js"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Making the routes array compatible with the format accepted by createBrowserRouter
|
|
8
|
+
* API on the client side
|
|
9
|
+
* https://reactrouter.com/en/main/routers/create-browser-router
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export const preparedRoutes = ({ store, routerInitialState }) => {
|
|
13
|
+
const getPreparedRoutes = (routes) => {
|
|
14
|
+
return routes.map((route, index) => {
|
|
15
|
+
const Component = route.component
|
|
16
|
+
const routeToRender = {
|
|
17
|
+
...route,
|
|
18
|
+
element: <Component key={index} />,
|
|
19
|
+
}
|
|
20
|
+
if (route.children) {
|
|
21
|
+
routeToRender.children = getPreparedRoutes(route.children)
|
|
22
|
+
}
|
|
23
|
+
return routeToRender
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return [
|
|
28
|
+
{
|
|
29
|
+
element: (
|
|
30
|
+
<RouterDataProvider config={{}} initialState={routerInitialState} fetcherArgs={{ store }}>
|
|
31
|
+
<MetaTag />
|
|
32
|
+
<App />
|
|
33
|
+
</RouterDataProvider>
|
|
34
|
+
),
|
|
35
|
+
children: getPreparedRoutes(routes),
|
|
36
|
+
},
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const getRoutes = () => {
|
|
41
|
+
return routes
|
|
42
|
+
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { configureStore as createStore } from "@reduxjs/toolkit"
|
|
2
|
-
import {combineReducers} from "redux"
|
|
3
|
-
import {shellReducer} from "@containers/App/reducer.js"
|
|
4
|
-
import fetchInstance from "
|
|
2
|
+
import { combineReducers } from "redux"
|
|
3
|
+
import { shellReducer } from "@containers/App/reducer.js"
|
|
4
|
+
import fetchInstance from "@api"
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Function that initializes the store with the initialstate and adds middlewares that can be used during action dispatch
|
|
8
|
+
* @param {object} initialState Default state
|
|
9
|
+
* @param {object} request Request object that we recieve on server, this is only recieved when store is initialized on the server.
|
|
10
|
+
* @return {object} The store itself
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const configureStore = (initialState) => {
|
|
7
14
|
const api = fetchInstance
|
|
8
15
|
const store = createStore({
|
|
9
|
-
reducer: combineReducers({shellReducer}),
|
|
16
|
+
reducer: combineReducers({ shellReducer }),
|
|
10
17
|
middleware: (getDefaultMiddleware) =>
|
|
11
18
|
getDefaultMiddleware({
|
|
12
19
|
thunk: {
|
|
@@ -18,5 +25,4 @@ const configureStore = (initialState,request) => {
|
|
|
18
25
|
return store
|
|
19
26
|
}
|
|
20
27
|
|
|
21
|
-
|
|
22
28
|
export default configureStore
|