catalyst-core 0.0.1-beta.2 → 0.0.1-beta.3
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 +26 -13
- package/bin/catalyst.js +2 -3
- package/config.json +0 -1
- package/{LICENSE → license} +2 -1
- package/{logger/index.js → logger.js} +10 -10
- package/package.json +17 -19
- package/packages/create-framework-app/templates/redux-js/node_modules/catalyst/src/router.js +1 -0
- package/router/ClientRouter.js +10 -6
- package/router/ServerRouter.js +2 -11
- package/scripts/build.js +10 -4
- package/scripts/checkVersion.js +5 -0
- package/scripts/loadEnvironmentVariables.js +8 -21
- package/scripts/loadScriptsBeforeServerStarts.js +12 -20
- package/scripts/serve.js +11 -4
- package/scripts/start.js +2 -4
- package/scripts/validator.js +40 -11
- package/server/expressServer.js +50 -0
- package/server/renderer/document/Body.js +17 -18
- package/server/renderer/document/Head.js +6 -7
- package/server/renderer/document/index.js +2 -0
- package/server/renderer/extract.js +25 -24
- package/server/renderer/handler.js +212 -188
- package/server/renderer/index.js +6 -7
- package/server/renderer/render.js +21 -19
- package/server/startServer.js +65 -0
- package/server/utils/userAgentUtil.js +55 -0
- package/server/utils/validator.js +40 -10
- package/webpack/babel-plugins/remove-client.plugin.js +1 -1
- package/webpack/babel-plugins/remove-ssr.plugin.js +1 -1
- package/webpack/babel.config.client.js +2 -2
- package/webpack/base.babel.js +29 -36
- package/webpack/development.client.babel.js +11 -8
- package/webpack/production.client.babel.js +1 -2
- package/webpack/production.ssr.babel.js +3 -3
- package/webpack/scssParams.js +19 -15
- package/.prettierignore +0 -2
- package/.prettierrc.json +0 -7
- package/checkVersion.js +0 -3
- package/config/config.js +0 -24
- package/packages/create-framework-app/node_modules/.package-lock.json +0 -249
- package/reducer/index.js +0 -88
- package/reducer/loadableConfigReducer.js +0 -19
- package/store/index.dev.js +0 -73
- package/store/index.js +0 -25
- package/store/index.prod.js +0 -66
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"lockfileVersion": 3,
|
|
3
|
-
"requires": true,
|
|
4
|
-
"packages": {
|
|
5
|
-
"../..": {
|
|
6
|
-
"version": "0.0.1",
|
|
7
|
-
"license": "ISC",
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"@babel/cli": "^7.23.0",
|
|
10
|
-
"@babel/core": "^7.23.2",
|
|
11
|
-
"@babel/node": "^7.22.19",
|
|
12
|
-
"@babel/plugin-proposal-object-rest-spread": "^7.20.7",
|
|
13
|
-
"@babel/plugin-transform-react-jsx": "^7.22.15",
|
|
14
|
-
"@babel/preset-env": "^7.23.2",
|
|
15
|
-
"@babel/preset-react": "^7.22.15",
|
|
16
|
-
"@babel/register": "^7.22.15",
|
|
17
|
-
"@loadable/babel-plugin": "^5.16.1",
|
|
18
|
-
"@loadable/component": "^5.15.3",
|
|
19
|
-
"@loadable/server": "^5.16.1",
|
|
20
|
-
"@loadable/webpack-plugin": "^5.15.2",
|
|
21
|
-
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
|
|
22
|
-
"@svgr/webpack": "^8.1.0",
|
|
23
|
-
"@tata1mg/router": "^0.0.1-alpha.13",
|
|
24
|
-
"acorn-loose": "^8.4.0",
|
|
25
|
-
"aws-sdk": "^2.1490.0",
|
|
26
|
-
"axios": "^0.19.2",
|
|
27
|
-
"babel-loader": "^9.1.3",
|
|
28
|
-
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
29
|
-
"babel-plugin-syntax-dynamic-import": "^6.18.0",
|
|
30
|
-
"babel-plugin-transform-class-properties": "^6.24.1",
|
|
31
|
-
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
|
|
32
|
-
"babel-plugin-transform-export-extensions": "^6.22.0",
|
|
33
|
-
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
|
|
34
|
-
"body-parser": "^1.20.2",
|
|
35
|
-
"compression": "^1.7.4",
|
|
36
|
-
"cookie-parser": "^1.4.6",
|
|
37
|
-
"css-hot-loader": "^1.4.4",
|
|
38
|
-
"css-loader": "^6.8.1",
|
|
39
|
-
"css-modules-require-hook": "^4.2.3",
|
|
40
|
-
"dotenv-webpack": "^8.0.1",
|
|
41
|
-
"esm-module-alias": "^2.0.3",
|
|
42
|
-
"express": "^4.18.2",
|
|
43
|
-
"express-static-gzip": "^2.1.7",
|
|
44
|
-
"file-loader": "^6.2.0",
|
|
45
|
-
"helmet": "^7.0.0",
|
|
46
|
-
"html-loader": "^4.2.0",
|
|
47
|
-
"img-loader": "^4.0.0",
|
|
48
|
-
"isomorphic-dompurify": "^1.13.0",
|
|
49
|
-
"lodash.template": "^4.5.0",
|
|
50
|
-
"mini-css-extract-plugin": "^2.7.6",
|
|
51
|
-
"module-alias": "^2.2.3",
|
|
52
|
-
"node-dev": "^7.4.3",
|
|
53
|
-
"postcss-loader": "^7.3.3",
|
|
54
|
-
"react": "^18.2.0",
|
|
55
|
-
"react-dom": "^18.2.0",
|
|
56
|
-
"react-redux": "^8.1.3",
|
|
57
|
-
"react-refresh": "^0.14.0",
|
|
58
|
-
"react-router-dom": "^6.16.0",
|
|
59
|
-
"redux": "^4.2.1",
|
|
60
|
-
"redux-logger": "^3.0.6",
|
|
61
|
-
"redux-thunk": "^2.4.2",
|
|
62
|
-
"sass": "^1.69.5",
|
|
63
|
-
"sass-loader": "^13.3.2",
|
|
64
|
-
"sass-resources-loader": "^2.2.5",
|
|
65
|
-
"ua-parser-js": "^1.0.37",
|
|
66
|
-
"url-loader": "^4.1.1",
|
|
67
|
-
"webpack": "^5.88.2",
|
|
68
|
-
"webpack-bundle-analyzer": "^4.9.1",
|
|
69
|
-
"webpack-cli": "^5.1.4",
|
|
70
|
-
"webpack-dev-server": "^4.15.1",
|
|
71
|
-
"webpack-merge": "^5.9.0",
|
|
72
|
-
"webpack-node-externals": "^3.0.0",
|
|
73
|
-
"winston": "^3.11.0",
|
|
74
|
-
"winston-daily-rotate-file": "^5.0.0"
|
|
75
|
-
},
|
|
76
|
-
"bin": {
|
|
77
|
-
"catalyst": "bin/catalyst.js",
|
|
78
|
-
"framework": "bin/framework.js"
|
|
79
|
-
},
|
|
80
|
-
"devDependencies": {
|
|
81
|
-
"@babel/cli": "^7.23.0",
|
|
82
|
-
"@babel/core": "^7.23.2",
|
|
83
|
-
"@babel/node": "^7.22.19",
|
|
84
|
-
"@babel/plugin-proposal-object-rest-spread": "^7.20.7",
|
|
85
|
-
"@babel/plugin-transform-react-jsx": "^7.22.15",
|
|
86
|
-
"@babel/preset-env": "^7.23.2",
|
|
87
|
-
"@babel/preset-react": "^7.22.15",
|
|
88
|
-
"@babel/register": "^7.22.15",
|
|
89
|
-
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
|
|
90
|
-
"babel-loader": "^9.1.3",
|
|
91
|
-
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
92
|
-
"babel-plugin-syntax-dynamic-import": "^6.18.0",
|
|
93
|
-
"babel-plugin-transform-class-properties": "^6.24.1",
|
|
94
|
-
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
|
|
95
|
-
"babel-plugin-transform-export-extensions": "^6.22.0",
|
|
96
|
-
"body-parser": "^1.20.2",
|
|
97
|
-
"compression": "^1.7.4",
|
|
98
|
-
"cookie-parser": "^1.4.6",
|
|
99
|
-
"css-loader": "^6.8.1",
|
|
100
|
-
"css-modules-require-hook": "^4.2.3",
|
|
101
|
-
"dotenv-webpack": "^8.0.1",
|
|
102
|
-
"express": "^4.18.2",
|
|
103
|
-
"express-static-gzip": "^2.1.7",
|
|
104
|
-
"helmet": "^7.0.0",
|
|
105
|
-
"mini-css-extract-plugin": "^2.7.6",
|
|
106
|
-
"node-dev": "^7.4.3",
|
|
107
|
-
"react-refresh": "^0.14.0",
|
|
108
|
-
"redux-logger": "^3.0.6",
|
|
109
|
-
"webpack": "^5.88.2",
|
|
110
|
-
"webpack-bundle-analyzer": "^4.9.1",
|
|
111
|
-
"webpack-cli": "^5.1.4",
|
|
112
|
-
"webpack-dev-server": "^4.15.1",
|
|
113
|
-
"webpack-merge": "^5.9.0"
|
|
114
|
-
},
|
|
115
|
-
"peerDependencies": {
|
|
116
|
-
"isomorphic-dompurify": "^1.9.0",
|
|
117
|
-
"react": "^18.2.0",
|
|
118
|
-
"react-dom": "^18.2.0",
|
|
119
|
-
"react-helmet-async": "^1.3.0",
|
|
120
|
-
"react-redux": "^8.0.4",
|
|
121
|
-
"react-router-dom": "^6.22.0"
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
"node_modules/ansi-regex": {
|
|
125
|
-
"extraneous": true
|
|
126
|
-
},
|
|
127
|
-
"node_modules/catalyst": {
|
|
128
|
-
"resolved": "../..",
|
|
129
|
-
"link": true
|
|
130
|
-
},
|
|
131
|
-
"node_modules/chalk": {
|
|
132
|
-
"extraneous": true
|
|
133
|
-
},
|
|
134
|
-
"node_modules/chownr": {
|
|
135
|
-
"extraneous": true
|
|
136
|
-
},
|
|
137
|
-
"node_modules/cli-cursor": {
|
|
138
|
-
"extraneous": true
|
|
139
|
-
},
|
|
140
|
-
"node_modules/cli-spinners": {
|
|
141
|
-
"extraneous": true
|
|
142
|
-
},
|
|
143
|
-
"node_modules/commander": {
|
|
144
|
-
"extraneous": true
|
|
145
|
-
},
|
|
146
|
-
"node_modules/data-uri-to-buffer": {
|
|
147
|
-
"extraneous": true
|
|
148
|
-
},
|
|
149
|
-
"node_modules/emoji-regex": {
|
|
150
|
-
"extraneous": true
|
|
151
|
-
},
|
|
152
|
-
"node_modules/fetch-blob": {
|
|
153
|
-
"extraneous": true
|
|
154
|
-
},
|
|
155
|
-
"node_modules/formdata-polyfill": {
|
|
156
|
-
"extraneous": true
|
|
157
|
-
},
|
|
158
|
-
"node_modules/fs": {
|
|
159
|
-
"extraneous": true
|
|
160
|
-
},
|
|
161
|
-
"node_modules/fs-minipass": {
|
|
162
|
-
"extraneous": true
|
|
163
|
-
},
|
|
164
|
-
"node_modules/fs-minipass/node_modules/minipass": {
|
|
165
|
-
"extraneous": true
|
|
166
|
-
},
|
|
167
|
-
"node_modules/get-east-asian-width": {
|
|
168
|
-
"extraneous": true
|
|
169
|
-
},
|
|
170
|
-
"node_modules/https": {
|
|
171
|
-
"extraneous": true
|
|
172
|
-
},
|
|
173
|
-
"node_modules/is-interactive": {
|
|
174
|
-
"extraneous": true
|
|
175
|
-
},
|
|
176
|
-
"node_modules/is-unicode-supported": {
|
|
177
|
-
"extraneous": true
|
|
178
|
-
},
|
|
179
|
-
"node_modules/kleur": {
|
|
180
|
-
"extraneous": true
|
|
181
|
-
},
|
|
182
|
-
"node_modules/log-symbols": {
|
|
183
|
-
"extraneous": true
|
|
184
|
-
},
|
|
185
|
-
"node_modules/log-symbols/node_modules/is-unicode-supported": {
|
|
186
|
-
"extraneous": true
|
|
187
|
-
},
|
|
188
|
-
"node_modules/mimic-fn": {
|
|
189
|
-
"extraneous": true
|
|
190
|
-
},
|
|
191
|
-
"node_modules/minipass": {
|
|
192
|
-
"extraneous": true
|
|
193
|
-
},
|
|
194
|
-
"node_modules/minizlib": {
|
|
195
|
-
"extraneous": true
|
|
196
|
-
},
|
|
197
|
-
"node_modules/minizlib/node_modules/minipass": {
|
|
198
|
-
"extraneous": true
|
|
199
|
-
},
|
|
200
|
-
"node_modules/mkdirp": {
|
|
201
|
-
"extraneous": true
|
|
202
|
-
},
|
|
203
|
-
"node_modules/node-domexception": {
|
|
204
|
-
"extraneous": true
|
|
205
|
-
},
|
|
206
|
-
"node_modules/node-fetch": {
|
|
207
|
-
"extraneous": true
|
|
208
|
-
},
|
|
209
|
-
"node_modules/onetime": {
|
|
210
|
-
"extraneous": true
|
|
211
|
-
},
|
|
212
|
-
"node_modules/ora": {
|
|
213
|
-
"extraneous": true
|
|
214
|
-
},
|
|
215
|
-
"node_modules/picocolors": {
|
|
216
|
-
"extraneous": true
|
|
217
|
-
},
|
|
218
|
-
"node_modules/prompts": {
|
|
219
|
-
"extraneous": true
|
|
220
|
-
},
|
|
221
|
-
"node_modules/restore-cursor": {
|
|
222
|
-
"extraneous": true
|
|
223
|
-
},
|
|
224
|
-
"node_modules/signal-exit": {
|
|
225
|
-
"extraneous": true
|
|
226
|
-
},
|
|
227
|
-
"node_modules/sisteransi": {
|
|
228
|
-
"extraneous": true
|
|
229
|
-
},
|
|
230
|
-
"node_modules/stdin-discarder": {
|
|
231
|
-
"extraneous": true
|
|
232
|
-
},
|
|
233
|
-
"node_modules/string-width": {
|
|
234
|
-
"extraneous": true
|
|
235
|
-
},
|
|
236
|
-
"node_modules/strip-ansi": {
|
|
237
|
-
"extraneous": true
|
|
238
|
-
},
|
|
239
|
-
"node_modules/tar": {
|
|
240
|
-
"extraneous": true
|
|
241
|
-
},
|
|
242
|
-
"node_modules/web-streams-polyfill": {
|
|
243
|
-
"extraneous": true
|
|
244
|
-
},
|
|
245
|
-
"node_modules/yallist": {
|
|
246
|
-
"extraneous": true
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
package/reducer/index.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _redux = require("redux");
|
|
8
|
-
var _reducer = _interopRequireDefault(require("@containers/App/reducer"));
|
|
9
|
-
var _loadableConfigReducer = _interopRequireDefault(require("./loadableConfigReducer"));
|
|
10
|
-
var _validator = require("../scripts/validator");
|
|
11
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
16
|
-
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
17
|
-
// Import your reducers here
|
|
18
|
-
/**
|
|
19
|
-
* @description A 'Reducer Manager' object, which keeps track of all the registered reducers and exposes a reduce() function. For detailed info :- https://redux.js.org/usage/code-splitting#using-a-reducer-manager
|
|
20
|
-
*/
|
|
21
|
-
function createReducerManager() {
|
|
22
|
-
// FRAMEWORK COMMENT THIS SHOULD BE EXPOSED TO USER
|
|
23
|
-
// Create an object which maps keys to reducers
|
|
24
|
-
|
|
25
|
-
// Create the initial combinedReducer
|
|
26
|
-
const reducers = {
|
|
27
|
-
shellReducer: (0, _validator.validateReducerFunction)(_reducer.default) && _reducer.default,
|
|
28
|
-
loadableConfigReducer: _loadableConfigReducer.default
|
|
29
|
-
};
|
|
30
|
-
let reducerObj = (0, _redux.combineReducers)(reducers);
|
|
31
|
-
|
|
32
|
-
// An array which is used to delete state keys when reducers are removed
|
|
33
|
-
let keysToRemove = [];
|
|
34
|
-
return {
|
|
35
|
-
getReducerMap: () => (0, _redux.combineReducers)(reducers),
|
|
36
|
-
// The root reducer function exposed by this object
|
|
37
|
-
|
|
38
|
-
// This will be passed to the store
|
|
39
|
-
reduce: (state, action) => {
|
|
40
|
-
// If any reducers have been removed, clean up their state first
|
|
41
|
-
if (keysToRemove.length > 0) {
|
|
42
|
-
state = _objectSpread({}, state);
|
|
43
|
-
for (let key of keysToRemove) {
|
|
44
|
-
delete state[key];
|
|
45
|
-
}
|
|
46
|
-
keysToRemove = [];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Delegate to the combined reducer
|
|
50
|
-
return reducerObj(state, action);
|
|
51
|
-
},
|
|
52
|
-
// Adds a new reducer with the specified key
|
|
53
|
-
add: reducer => {
|
|
54
|
-
for (let key in reducer) {
|
|
55
|
-
if (!key) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// We will skip a step if the reducer is already present
|
|
60
|
-
if (reducers[key]) {
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Add the reducer to the reducer mapping
|
|
65
|
-
reducers[key] = reducer[key];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Generate a new combined reducer
|
|
69
|
-
return (0, _redux.combineReducers)(reducers);
|
|
70
|
-
},
|
|
71
|
-
// Removes a reducer with the specified key
|
|
72
|
-
remove: key => {
|
|
73
|
-
if (!key || !reducers[key]) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Remove it from the reducer mapping
|
|
78
|
-
delete reducers[key];
|
|
79
|
-
|
|
80
|
-
// Add the key to the list of keys to clean up
|
|
81
|
-
keysToRemove.push(key);
|
|
82
|
-
|
|
83
|
-
// Generate a new combined reducer
|
|
84
|
-
return (0, _redux.combineReducers)(reducers);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
var _default = exports.default = createReducerManager;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
const defaultState = {
|
|
8
|
-
SERVER_SIDE_RENDER: true,
|
|
9
|
-
CLIENT_ONLY_RENDER: false
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
/** loads loadable config reducer
|
|
13
|
-
* @param {object} defaultState - default state in reducer
|
|
14
|
-
* @return {object} reducer default state
|
|
15
|
-
*/
|
|
16
|
-
const loadableConfigReducer = (state = defaultState) => {
|
|
17
|
-
return state;
|
|
18
|
-
};
|
|
19
|
-
var _default = exports.default = loadableConfigReducer;
|
package/store/index.dev.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = configureStore;
|
|
7
|
-
var _redux = require("redux");
|
|
8
|
-
var _reduxThunk = _interopRequireDefault(require("redux-thunk"));
|
|
9
|
-
var _reduxLogger = require("redux-logger");
|
|
10
|
-
var _index = _interopRequireDefault(require("../reducer/index.js"));
|
|
11
|
-
var _api = require("@lib/api.js");
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
/**
|
|
14
|
-
* Function that initializes the store with the initialstate and adds middlewares that can be used during action dispatch
|
|
15
|
-
* @param {object} initialState Default state
|
|
16
|
-
* @param {object} cookies additional headers if needed
|
|
17
|
-
* @param {object} requestObj additional information
|
|
18
|
-
* @return {object} the store itself
|
|
19
|
-
*/
|
|
20
|
-
function configureStore(initialState, cookies, requestObj, customHeaders) {
|
|
21
|
-
// The variable defined below acts as a flag when the store is initialized on the client side
|
|
22
|
-
// Reason being that for the first time we need to actually need to forcefully set the reducer for which we have the initial data
|
|
23
|
-
let initializeClient = true;
|
|
24
|
-
const reducerManager = (0, _index.default)();
|
|
25
|
-
const api = (0, _api.directAxiosInstance)(cookies, requestObj, customHeaders);
|
|
26
|
-
const labsApi = (0, _api.labsAxiosInstance)(cookies, requestObj, customHeaders);
|
|
27
|
-
|
|
28
|
-
// FRAMEWORK COMMENT. This should be exposed to user.
|
|
29
|
-
|
|
30
|
-
// disable redux-logger in server - https://github.com/LogRocket/redux-logger/issues/6
|
|
31
|
-
const reduxLogger = (0, _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 = [_reduxThunk.default.withExtraArgument({
|
|
57
|
-
addReducer,
|
|
58
|
-
api,
|
|
59
|
-
labsApi
|
|
60
|
-
}), reduxLogger];
|
|
61
|
-
|
|
62
|
-
// Add universal enhancers here
|
|
63
|
-
let enhancers = [];
|
|
64
|
-
const composeEnhancers = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || _redux.compose;
|
|
65
|
-
const enhancer = composeEnhancers(...[(0, _redux.applyMiddleware)(...middleware), ...enhancers]);
|
|
66
|
-
|
|
67
|
-
// create store with enhancers, middleware, reducers, and initialState
|
|
68
|
-
// When the store is initialized on the client side, we are passing a function that just returns the initial State from the server
|
|
69
|
-
// This is way we are able to maintain the initial state from the server on the client side and then add the relevant reducers
|
|
70
|
-
// Which then consumes the initial state
|
|
71
|
-
const store = (0, _redux.createStore)(Object.keys(initialState).length === 0 ? reducerManager.getReducerMap() : () => initialState, initialState, enhancer);
|
|
72
|
-
return store;
|
|
73
|
-
}
|
package/store/index.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _indexProd = _interopRequireDefault(require("./index.prod.js"));
|
|
8
|
-
var _indexDev = _interopRequireDefault(require("./index.dev.js"));
|
|
9
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
-
/**
|
|
11
|
-
* Function that initializes the store with the initialstate and adds middlewares that can be used during action dispatch
|
|
12
|
-
* It returns different store based on NODE_ENV for eg: production store and development store.
|
|
13
|
-
* @param {object} initialState Default state
|
|
14
|
-
* @param {object} cookies additional headers if needed
|
|
15
|
-
* @param {object} requestObj additional information
|
|
16
|
-
* @param {object} customHeaders custom headers which needs to be used in axios instance
|
|
17
|
-
* @return {object} redux configured store
|
|
18
|
-
*/
|
|
19
|
-
const configureStore = (initialState, cookies, requestObj, customHeaders) => {
|
|
20
|
-
if (process.env.NODE_ENV === "production") {
|
|
21
|
-
return (0, _indexProd.default)(initialState, cookies, requestObj, customHeaders);
|
|
22
|
-
}
|
|
23
|
-
return (0, _indexDev.default)(initialState, cookies, requestObj, customHeaders);
|
|
24
|
-
};
|
|
25
|
-
var _default = exports.default = configureStore;
|
package/store/index.prod.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = configureStore;
|
|
7
|
-
var _redux = require("redux");
|
|
8
|
-
var _reduxThunk = _interopRequireDefault(require("redux-thunk"));
|
|
9
|
-
var _index = _interopRequireDefault(require("../reducer/index.js"));
|
|
10
|
-
var _api = require("@lib/api.js");
|
|
11
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
-
/**
|
|
13
|
-
* Function that initializes the store with the initialstate and adds middlewares that can be used during action dispatch
|
|
14
|
-
* @param {object} initialState Default state
|
|
15
|
-
* @param {object} cookies additional headers if needed
|
|
16
|
-
* @param {object} requestObj additional information
|
|
17
|
-
* @return {object} the store itself
|
|
18
|
-
*/
|
|
19
|
-
function configureStore(initialState, cookies, requestObj, customHeaders) {
|
|
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
|
-
const reducerManager = (0, _index.default)();
|
|
24
|
-
// FRAMEWORK COMMENT. This should be exposed to user.
|
|
25
|
-
const api = (0, _api.directAxiosInstance)(cookies, requestObj, customHeaders);
|
|
26
|
-
const labsApi = (0, _api.labsAxiosInstance)(cookies, requestObj, customHeaders);
|
|
27
|
-
const addReducer = reducer => {
|
|
28
|
-
// Only executed once when for the first run in client - side
|
|
29
|
-
if (initializeClient) {
|
|
30
|
-
initializeClient = false;
|
|
31
|
-
return store.replaceReducer(reducerManager.add(reducer));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// This blocks check if the reducer is already added or not in store
|
|
35
|
-
// If not then it only add the missing reducers
|
|
36
|
-
// And if the required reducers are already present then we simply return without performing any change
|
|
37
|
-
let reducerToAdd = {};
|
|
38
|
-
const currentState = store.getState();
|
|
39
|
-
for (let key in reducer) {
|
|
40
|
-
if (!currentState[key]) {
|
|
41
|
-
reducerToAdd[key] = reducer[key];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
if (Object.keys(reducerToAdd).length > 0) {
|
|
45
|
-
return store.replaceReducer(reducerManager.add(reducerToAdd));
|
|
46
|
-
}
|
|
47
|
-
return;
|
|
48
|
-
};
|
|
49
|
-
// FRAMEWORK COMMENT THIS WILL NOT BE PART OF FRAMEWORK. NEED TO GENERALISE IT
|
|
50
|
-
let middleware = [_reduxThunk.default.withExtraArgument({
|
|
51
|
-
api,
|
|
52
|
-
labsApi,
|
|
53
|
-
addReducer
|
|
54
|
-
})];
|
|
55
|
-
|
|
56
|
-
// Add universal enhancers here
|
|
57
|
-
let enhancers = [];
|
|
58
|
-
const enhancer = (0, _redux.compose)(...[(0, _redux.applyMiddleware)(...middleware), ...enhancers]);
|
|
59
|
-
|
|
60
|
-
// create store with enhancers, middleware, reducers, and initialState
|
|
61
|
-
// When the store is initialized on the client side, we are passing a function that just returns the initial State from the server
|
|
62
|
-
// This is way we are able to maintain the initial state from the server on the client side and then add the relevant reducers
|
|
63
|
-
// Which then consumes the initial state
|
|
64
|
-
const store = (0, _redux.createStore)(Object.keys(initialState).length === 0 ? reducerManager.getReducerMap() : () => initialState, initialState, enhancer);
|
|
65
|
-
return store;
|
|
66
|
-
}
|