catalyst-core 0.0.1-beta.4 → 0.0.1-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/babel.config.json +1 -0
  2. package/bin/catalyst.js +2 -5
  3. package/changelog.md +14 -22
  4. package/dist/caching.js +1 -0
  5. package/dist/index.js +1 -0
  6. package/dist/logger.js +10 -0
  7. package/dist/router/ClientRouter.js +3 -0
  8. package/dist/router/ServerRouter.js +1 -0
  9. package/dist/router.js +1 -0
  10. package/dist/scripts/build.js +10 -0
  11. package/dist/scripts/centralImport.js +1 -0
  12. package/dist/scripts/checkVersion.js +1 -0
  13. package/dist/scripts/devBuild.js +10 -0
  14. package/dist/scripts/devServe.js +5 -0
  15. package/dist/scripts/loadEnvironmentVariables.js +5 -0
  16. package/dist/scripts/loadScriptsBeforeServerStarts.js +4 -0
  17. package/dist/scripts/registerAliases.js +2 -0
  18. package/dist/scripts/scriptUtils.js +2 -0
  19. package/dist/scripts/serve.js +5 -0
  20. package/dist/scripts/start.js +6 -0
  21. package/dist/scripts/validator.js +1 -0
  22. package/dist/server/expressServer.js +9 -0
  23. package/dist/server/renderer/document/Body.js +14 -0
  24. package/dist/server/renderer/document/Head.js +9 -0
  25. package/dist/server/renderer/document/index.js +1 -0
  26. package/dist/server/renderer/extract.js +21 -0
  27. package/dist/server/renderer/handler.js +17 -0
  28. package/dist/server/renderer/index.js +1 -0
  29. package/dist/server/renderer/render.js +21 -0
  30. package/dist/server/startServer.js +6 -0
  31. package/dist/server/utils/userAgentUtil.js +9 -0
  32. package/dist/server/utils/validator.js +1 -0
  33. package/dist/webpack/babel-plugins/remove-client.plugin.js +5 -0
  34. package/dist/webpack/babel-plugins/remove-ssr.plugin.js +5 -0
  35. package/dist/webpack/babel.config.client.js +1 -0
  36. package/dist/webpack/babel.config.ssr.js +1 -0
  37. package/dist/webpack/base.babel.js +8 -0
  38. package/dist/webpack/development.client.babel.js +4 -0
  39. package/dist/webpack/production.client.babel.js +4 -0
  40. package/dist/webpack/production.ssr.babel.js +4 -0
  41. package/dist/webpack/scssParams.js +9 -0
  42. package/package.json +109 -87
  43. package/.eslintignore +0 -9
  44. package/.eslintrc +0 -92
  45. package/caching.js +0 -16
  46. package/index.js +0 -16
  47. package/logger.js +0 -99
  48. package/router/ClientRouter.js +0 -19
  49. package/router/ServerRouter.js +0 -19
  50. package/router/index.js +0 -32
  51. package/router.js +0 -16
  52. package/scripts/build.js +0 -42
  53. package/scripts/checkVersion.js +0 -5
  54. package/scripts/devBuild.js +0 -42
  55. package/scripts/devServe.js +0 -43
  56. package/scripts/loadEnvironmentVariables.js +0 -24
  57. package/scripts/loadScriptsBeforeServerStarts.js +0 -47
  58. package/scripts/prepare.js +0 -19
  59. package/scripts/registerAliases.js +0 -30
  60. package/scripts/serve.js +0 -43
  61. package/scripts/start.js +0 -35
  62. package/scripts/validator.js +0 -127
  63. package/server/expressServer.js +0 -50
  64. package/server/mainIndex.js +0 -65
  65. package/server/mainServer.js +0 -70
  66. package/server/renderer/document/Body.js +0 -36
  67. package/server/renderer/document/Head.js +0 -43
  68. package/server/renderer/document/index.js +0 -27
  69. package/server/renderer/extract.js +0 -87
  70. package/server/renderer/handler.js +0 -240
  71. package/server/renderer/index.js +0 -12
  72. package/server/renderer/render.js +0 -84
  73. package/server/renderer/userAgentUtil.js +0 -55
  74. package/server/startServer.js +0 -66
  75. package/server/utils/metaTags.js +0 -13
  76. package/server/utils/userAgentUtil.js +0 -51
  77. package/server/utils/validator.js +0 -127
  78. package/tsconfig.json +0 -110
  79. package/webpack/babel-plugins/remove-client.plugin.js +0 -31
  80. package/webpack/babel-plugins/remove-ssr.plugin.js +0 -21
  81. package/webpack/babel.config.client.js +0 -24
  82. package/webpack/babel.config.js +0 -20
  83. package/webpack/babel.config.ssr.js +0 -24
  84. package/webpack/base.babel.js +0 -175
  85. package/webpack/development.client.babel.js +0 -85
  86. package/webpack/plugins/mime-types.js +0 -82
  87. package/webpack/plugins/route-manifest-copy.js +0 -122
  88. package/webpack/plugins/route-manifest-plugin.js +0 -122
  89. package/webpack/plugins/upload-assets-plugin.js +0 -181
  90. package/webpack/production.client.babel.js +0 -78
  91. package/webpack/production.ssr.babel.js +0 -61
  92. package/webpack/scssParams.js +0 -51
@@ -1,87 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.cacheCSS = cacheCSS;
7
- exports.cacheJS = cacheJS;
8
- exports.default = _default;
9
- var _path = _interopRequireDefault(require("path"));
10
- var _fs = _interopRequireDefault(require("fs"));
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- /**
13
- * Stores css chunks styles into cache in string format
14
- * @param {string} key - router path
15
- * @param {object} data - css elements array extracted through loadable chunk extracter
16
- */
17
- function cacheCSS(key, data) {
18
- if (!process.cssCache) {
19
- process.cssCache = {};
20
- }
21
- let pageCss = "";
22
- if (Array.isArray(data)) {
23
- try {
24
- data.map(assetChunk => {
25
- const assetPathArr = assetChunk.key.split("/");
26
- const assetName = assetPathArr[assetPathArr.length - 1];
27
- const ext = _path.default.extname(assetName);
28
- if (ext === ".css") pageCss += _fs.default.readFileSync(_path.default.resolve(process.env.src_path, `${process.env.BUILD_OUTPUT_PATH}/public`, assetName));
29
- });
30
- } catch (error) {
31
- if (process.env.NODE_ENV == "development") {
32
- console.log("Error While Extracting The Chunk: ", _path.default.resolve(process.env.src_path, `${process.env.BUILD_OUTPUT_PATH}/public`, assetName));
33
- }
34
- }
35
- }
36
- process.cssCache[key] = pageCss;
37
- }
38
-
39
- /**
40
- * Stores javascript into cache
41
- * @param {string} key - router path
42
- * @param {object} data - js elements array extracted through loadable chunk extracter
43
- */
44
- function cacheJS(key, data) {
45
- if (!process.jsCache) {
46
- process.jsCache = {};
47
- }
48
- process.jsCache[key] = data;
49
- }
50
-
51
- /**
52
- * returns cached css
53
- * @param {string} key - router path
54
- * @return {string} - cached css
55
- */
56
- function fetchCachedCSS(key) {
57
- return process.cssCache && process.cssCache[key] ? process.cssCache[key] : null;
58
- }
59
-
60
- /**
61
- * returns cached js
62
- * @param {string} key - router path
63
- * @return {string} - cached js
64
- */
65
- function fetchCachedJS(key) {
66
- return process.jsCache && process.jsCache[key] ? process.jsCache[key] : null;
67
- }
68
-
69
- /**
70
- * stores css and js in cache
71
- * @param {object} res - response object
72
- * @param {string} route - route path
73
- */
74
- function _default(res, route) {
75
- try {
76
- const requestPath = route.path;
77
- const cachedCss = fetchCachedCSS(requestPath);
78
- const cachedJS = fetchCachedJS(requestPath);
79
- if (cachedCss || cachedJS) {
80
- res.locals.pageJS = cachedJS;
81
- res.locals.pageCss = cachedCss;
82
- return;
83
- }
84
- } catch (error) {
85
- console.log("Error while caching your assets.");
86
- }
87
- }
@@ -1,240 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = _default;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _path = _interopRequireDefault(require("path"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _render = _interopRequireDefault(require("./render"));
11
- var _App = _interopRequireDefault(require("@containers/App"));
12
- var _extract = _interopRequireDefault(require("./extract"));
13
- var _reactRedux = require("react-redux");
14
- var _document = require("./document");
15
- var _server = require("react-router-dom/server");
16
- var _ServerRouter = _interopRequireDefault(require("../../router/ServerRouter.js"));
17
- var _userAgentUtil = require("../utils/userAgentUtil");
18
- var _router = require("@tata1mg/router");
19
- var _server2 = require("@loadable/server");
20
- var _server3 = require("react-dom/server");
21
- var _validator = require("../utils/validator");
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
- const {
24
- getRoutes
25
- } = require(`${process.env.src_path}/src/js/routes/utils.js`);
26
- const {
27
- default: CustomDocument
28
- } = require(`${process.env.src_path}/server/document.js`);
29
- const storePath = _path.default.resolve(`${process.env.src_path}/src/js/store/index.js`);
30
- let createStore;
31
- if (_fs.default.existsSync(storePath)) {
32
- try {
33
- const {
34
- default: configureStore
35
- } = require(`${process.env.src_path}/src/js/store/index.js`);
36
- createStore = configureStore;
37
- } catch (error) {
38
- createStore = () => {
39
- return {
40
- getState: () => {}
41
- };
42
- };
43
- }
44
- } else {
45
- createStore = () => {
46
- return {
47
- getState: () => {}
48
- };
49
- };
50
- }
51
- const isProduction = process.env.NODE_ENV === "production";
52
- let webStats = _path.default.join(__dirname, "../..", `loadable-stats.json`);
53
- if (isProduction) {
54
- webStats = _path.default.join(process.env.src_path, `${process.env.BUILD_OUTPUT_PATH}/public/loadable-stats.json`);
55
- }
56
- const webExtractor = new _server2.ChunkExtractor({
57
- statsFile: webStats,
58
- entrypoints: ["app"]
59
- });
60
-
61
- // matches request route with routes defined in the application.
62
- const getMatchRoutes = (routes, req, res, store, context, fetcherData, basePath = "") => {
63
- return routes.reduce((matches, route) => {
64
- const {
65
- path
66
- } = route;
67
- const match = (0, _router.matchPath)({
68
- path: `${basePath}/${path}`,
69
- caseSensitive: false,
70
- end: true
71
- }, req.baseUrl || "/");
72
- if (match) {
73
- if (isProduction && !res.locals.pageCss && !res.locals.pageJS && !res.locals.routePath) {
74
- (0, _extract.default)(res, route);
75
- }
76
- if (!res.locals.pageCss && !res.locals.pageJS && !res.locals.routePath) {
77
- res.locals.routePath = path;
78
- //moving routing logic outside of the App and using ServerRoutes for creating routes on server instead
79
- (0, _server3.renderToString)( /*#__PURE__*/_react.default.createElement(_server2.ChunkExtractorManager, {
80
- extractor: webExtractor
81
- }, /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
82
- store: store
83
- }, /*#__PURE__*/_react.default.createElement(_server.StaticRouter, {
84
- context: context,
85
- location: req.originalUrl
86
- }, /*#__PURE__*/_react.default.createElement(_ServerRouter.default, {
87
- store: store,
88
- intialData: fetcherData
89
- })))));
90
- }
91
- const wc = route.component;
92
- matches.push({
93
- route,
94
- match,
95
- serverSideFunction: wc && wc.serverSideFunction || (() => Promise.resolve())
96
- });
97
- }
98
- if (!match && route.children) {
99
- // recursively try to match nested routes
100
- const nested = getMatchRoutes(route.children, req, res, store, context, fetcherData, `${basePath}/${path}`);
101
- if (nested.length) {
102
- matches = matches.concat(nested);
103
- }
104
- }
105
- return matches;
106
- }, []);
107
- };
108
-
109
- // Preloads chunks required for rendering document
110
- const getComponent = (store, context, req, fetcherData) => {
111
- return /*#__PURE__*/_react.default.createElement("div", {
112
- id: "app"
113
- }, /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
114
- store: store
115
- }, /*#__PURE__*/_react.default.createElement(_server.StaticRouter, {
116
- context: context,
117
- location: req.originalUrl
118
- }, /*#__PURE__*/_react.default.createElement(_ServerRouter.default, {
119
- store: store,
120
- intialData: fetcherData
121
- }))));
122
- };
123
- // sends document after rendering
124
- const renderMarkUp = async (errorCode, req, res, metaTags, fetcherData, store, matches, context) => {
125
- const deviceDetails = (0, _userAgentUtil.getUserAgentDetails)(req.headers["user-agent"] || "");
126
- const isBot = deviceDetails.googleBot ? true : false;
127
-
128
- // Transforms Head Props
129
- const shellStart = await _render.default.renderStart(res.locals.pageCss, res.locals.pageJS, metaTags, isBot, fetcherData);
130
- let state = store.getState();
131
- const jsx = webExtractor.collectChunks(getComponent(store, context, req, fetcherData));
132
-
133
- // Transforms Body Props
134
- const shellEnd = _render.default.renderEnd(webExtractor, state, res, jsx, errorCode, fetcherData);
135
- const finalProps = {
136
- ...shellStart,
137
- ...shellEnd,
138
- jsx: jsx,
139
- req,
140
- res
141
- };
142
- let CompleteDocument = () => {
143
- if ((0, _validator.validateCustomDocument)(CustomDocument)) {
144
- return CustomDocument(finalProps);
145
- } else {
146
- return /*#__PURE__*/_react.default.createElement("html", {
147
- lang: finalProps.lang
148
- }, /*#__PURE__*/_react.default.createElement(_document.Head, {
149
- isBot: finalProps.isBot,
150
- pageJS: finalProps.pageJS,
151
- pageCss: finalProps.pageCss,
152
- fetcherData: finalProps.fetcherData,
153
- metaTags: finalProps.metaTags,
154
- publicAssetPath: finalProps.publicAssetPath
155
- }), /*#__PURE__*/_react.default.createElement(_document.Body, {
156
- initialState: finalProps.initialState,
157
- firstFoldCss: finalProps.firstFoldCss,
158
- firstFoldJS: finalProps.firstFoldJS,
159
- jsx: finalProps.jsx,
160
- statusCode: finalProps.statusCode,
161
- fetcherData: finalProps.fetcherData
162
- }));
163
- }
164
- };
165
- try {
166
- let status = matches.length && matches[0].match.path === "*" ? 404 : 200;
167
- res.set({
168
- "content-type": "text/html; charset=utf-8"
169
- });
170
- res.status(status);
171
- const {
172
- pipe
173
- } = (0, _server3.renderToPipeableStream)( /*#__PURE__*/_react.default.createElement(CompleteDocument, null), {
174
- onShellReady() {
175
- res.setHeader("content-type", "text/html");
176
- pipe(res);
177
- res.end();
178
- },
179
- onError(error) {
180
- logger.error({
181
- message: `\n Error while renderToPipeableStream : ${error.toString()}`
182
- });
183
- }
184
- });
185
- } catch (error) {
186
- logger.error("Error in rendering document on server:" + error);
187
- }
188
- };
189
-
190
- /**
191
- * middleware for document handling
192
- * @param {object} req - request object
193
- * @param {object} res - response object
194
- */
195
- async function _default(req, res) {
196
- try {
197
- let context = {};
198
- let fetcherData = {};
199
-
200
- // creates store
201
- const store = (0, _validator.validateConfigureStore)(createStore) ? createStore({}, req) : null;
202
-
203
- // user defined routes
204
- const routes = (0, _validator.validateGetRoutes)(getRoutes) ? getRoutes() : [];
205
-
206
- // Matches req url with routes
207
- const matches = getMatchRoutes(routes, req, res, store, context, fetcherData);
208
- const allMatches = (0, _router.matchRoutes)(getRoutes(), req.baseUrl);
209
- let allTags = [];
210
-
211
- // Executing app server side function
212
- _App.default.serverSideFunction({
213
- store,
214
- req,
215
- res
216
- })
217
- // Executing serverFetcher functions with serverDataFetcher provided by router and returning document
218
- .then(() => {
219
- (0, _router.serverDataFetcher)({
220
- routes: routes,
221
- req,
222
- res,
223
- url: req.originalUrl
224
- }, {
225
- store
226
- }).then(res => {
227
- fetcherData = res;
228
- allTags = (0, _router.getMetaData)(allMatches, fetcherData);
229
- }).then(async () => await renderMarkUp(null, req, res, allTags, fetcherData, store, matches, context)).catch(async error => {
230
- logger.error("Error in executing serverFetcher functions: " + error);
231
- await renderMarkUp(404, req, res, allTags, fetcherData, store, matches, context);
232
- });
233
- }).catch(error => {
234
- logger.error("Error in executing serverSideFunction inside App: " + error);
235
- renderMarkUp(error.status_code, req, res, allTags, fetcherData, store, matches, context);
236
- });
237
- } catch (error) {
238
- logger.error("Error in handling document request: " + error.toString());
239
- }
240
- }
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _express = _interopRequireDefault(require("express"));
8
- var _handler = _interopRequireDefault(require("./handler"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- const router = _express.default.Router();
11
- router.use(_handler.default);
12
- var _default = exports.default = router;
@@ -1,84 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _extract = require("./extract");
8
- /**
9
- * returns data which will be used in Head component for page rendering
10
- * @param {string} pageCss - cached styles for page
11
- * @param {string} pageJS - cached javscript elements for page
12
- * @param {function} metaTagFunction - user defined function which returns meta tags in array
13
- * @param {boolean} isBot - checks if request is made by bot
14
- * @param {object} fetcherData - router fetched data
15
- */
16
- const renderStart = (pageCss, pageJS, metaTags, isBot, fetcherData) => {
17
- const {
18
- IS_DEV_COMMAND,
19
- WEBPACK_DEV_SERVER_HOSTNAME,
20
- WEBPACK_DEV_SERVER_PORT
21
- } = process.env;
22
- let publicAssetPath = `${process.env.PUBLIC_STATIC_ASSET_URL}${process.env.PUBLIC_STATIC_ASSET_PATH}`;
23
-
24
- // serves assets from localhost on running devBuild and devServe command
25
- if (JSON.parse(IS_DEV_COMMAND)) {
26
- publicAssetPath = `http://${WEBPACK_DEV_SERVER_HOSTNAME}:${WEBPACK_DEV_SERVER_PORT}/assets/`;
27
- }
28
- return {
29
- pageCss,
30
- pageJS,
31
- metaTags,
32
- isBot,
33
- publicAssetPath,
34
- fetcherData
35
- };
36
- };
37
-
38
- /**
39
- * returns data which will be used in body component for page rendering
40
- * @param {object} webExtractor - loadable object which holds chunking function
41
- * @param {string} initialState - reducer initial state
42
- * @param {function} res - response object
43
- * @param {boolean} jsx - jsx which needs to be render on server side
44
- * @param {string|number|null} errorCode - error code
45
- * @param {object} fetcherData - router fetched data
46
- */
47
- const renderEnd = (webExtractor, initialState = {}, res, jsx, errorCode, fetcherData) => {
48
- // For bot first fold css and js would become complete page css and js
49
- let firstFoldCss = "";
50
- let firstFoldJS = "";
51
- const isProd = process.env.NODE_ENV === "production";
52
- const {
53
- routePath,
54
- pageCss,
55
- pageJS
56
- } = res.locals;
57
-
58
- // Development: Extracts styles and javascript elements for injecting in Body Component.
59
- // NOTE: Caching of styles and javascript is not enabled in development.
60
- if (!isProd) {
61
- firstFoldCss = webExtractor.getStyleElements();
62
- firstFoldJS = webExtractor.getScriptElements();
63
- }
64
-
65
- // Production: Extract styles and javscript elements if they are not found in cache and stores them in cache.
66
- if (isProd && routePath && (!pageCss || !pageJS)) {
67
- firstFoldCss = webExtractor.getStyleElements();
68
- firstFoldJS = webExtractor.getScriptElements();
69
- (0, _extract.cacheCSS)(routePath, webExtractor.getLinkElements());
70
- (0, _extract.cacheJS)(routePath, webExtractor.getScriptElements());
71
- }
72
- return {
73
- initialState,
74
- firstFoldCss,
75
- firstFoldJS,
76
- jsx,
77
- errorCode,
78
- fetcherData
79
- };
80
- };
81
- var _default = exports.default = {
82
- renderStart,
83
- renderEnd
84
- };
@@ -1,55 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getUserAgentDetails = undefined;
7
- var _uaParserJs = require("ua-parser-js");
8
- var _uaParserJs2 = _interopRequireDefault(_uaParserJs);
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- 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; }
11
- 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; }
12
- 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; }
13
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
14
- 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); }
15
- const googleBots = {
16
- "APIs-Google": "APIs-Google",
17
- AdSense: "Mediapartners-Google",
18
- "AdsBot Mobile Web Android": "AdsBot-Google-Mobile",
19
- "AdsBot Mobile Web": "AdsBot-Google-Mobile",
20
- AdsBot: "AdsBot-Google",
21
- "Mobile AdSense": "Mediapartners-Google",
22
- "Mobile Apps Android": "AdsBot-Google-Mobile-Apps",
23
- Feedfetcher: "FeedFetcher-Google",
24
- "Google Read Aloud": "Google-Read-Aloud",
25
- "Duplex on the Web": "DuplexWeb-Google",
26
- "Google Favicon": "Google Favicon",
27
- "Web Light": "googleweblight",
28
- "Amp crawler": "Google-AMPHTM",
29
- Googlebot: "Googlebot"
30
- };
31
-
32
- /**
33
- * check if user agent contains bot data
34
- * @param {string} ua - user agent
35
- * @return {string|null}
36
- */
37
- const getGoogleBot = ua => {
38
- for (let key in googleBots) {
39
- if (ua.includes(googleBots[key])) return key;
40
- }
41
- return null;
42
- };
43
-
44
- /**
45
- * returns object which contains google bot and user-agent info
46
- * @param {string} ua - user agent
47
- * @return {object} - returns user agent
48
- */
49
- const getUserAgentDetails = exports.getUserAgentDetails = ua => {
50
- const agentDetails = (0, _uaParserJs2.default)(ua);
51
- const googleBot = getGoogleBot(ua);
52
- return _objectSpread(_objectSpread({}, agentDetails), {}, {
53
- googleBot
54
- });
55
- };
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- var _expressServer = _interopRequireDefault(require("./expressServer.js"));
4
- var _chokidar = _interopRequireDefault(require("chokidar"));
5
- var _path = _interopRequireDefault(require("path"));
6
- var _index = require("@server/index.js");
7
- var _validator = require("./utils/validator.js");
8
- var _picocolors = _interopRequireDefault(require("picocolors"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- const env = process.env.NODE_ENV || "development";
11
-
12
- // function defined by user which needs to run before server starts
13
- if ((0, _validator.validatePreInitServer)(_index.preServerInit)) (0, _index.preServerInit)();
14
- process.on("uncaughtException", (err, origin) => {
15
- console.log(process.stderr.fd);
16
- console.log(`Caught exception: ${err}\n` + `Exception origin: ${origin}`);
17
- });
18
- process.on("SIGINT", function (data) {
19
- console.log("SIGINT");
20
- console.log(data);
21
- process.exit(0);
22
- });
23
- process.on("uncaughtExceptionMonitor", (err, origin) => {
24
- console.log(err, origin);
25
- });
26
- process.on("message", function (msg) {
27
- if (msg == "shutdown") {
28
- console.log("Closing all connections...");
29
- setTimeout(function () {
30
- console.log("Finished closing connections");
31
- process.exit(0);
32
- }, 1500);
33
- }
34
- });
35
- if (env === "development") {
36
- // Add better stack tracing for promises in dev mode
37
- process.on("unhandledRejection", r => console.debug(r));
38
- }
39
- const port = process.env.NODE_SERVER_PORT ?? 3005;
40
- const host = process.env.NODE_SERVER_HOSTNAME ?? "localhost";
41
- let statsPath = _path.default.join(__dirname, `../`, "loadable-stats.json");
42
- if (env === "production") {
43
- statsPath = _path.default.join(process.env.src_path, `${process.env.BUILD_OUTPUT_PATH}/public/loadable-stats.json`);
44
- }
45
- const watcher = _chokidar.default.watch(statsPath, {
46
- persistent: true
47
- });
48
- console.log(`Waiting for chunks. Application server will be mounted when your assets are compiled.`);
49
- watcher.on("all", (event, path) => {
50
- if (event === "add") {
51
- if (env == "production") {
52
- watcher.close();
53
- }
54
- console.log("Starting Application Server...");
55
- _expressServer.default.listen({
56
- port,
57
- host
58
- }, error => {
59
- if (error) {
60
- console.log("An error occured while starting the Application server : ", error);
61
- } else {
62
- console.log(_picocolors.default.cyan(_picocolors.default.bold(`Application server is mounted on ${_picocolors.default.yellow(`http://${host}:${port}`)}.`)));
63
- }
64
- });
65
- }
66
- });
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.mergeMetaTags = void 0;
7
- const mergeMetaTags = (parentTags, childTags) => {};
8
- exports.mergeMetaTags = mergeMetaTags;
9
- const typesOfMeta = {};
10
-
11
- // type
12
- // props
13
- // children
@@ -1,51 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getUserAgentDetails = void 0;
7
- var _uaParserJs = _interopRequireDefault(require("ua-parser-js"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- const googleBots = {
10
- "APIs-Google": "APIs-Google",
11
- AdSense: "Mediapartners-Google",
12
- "AdsBot Mobile Web Android": "AdsBot-Google-Mobile",
13
- "AdsBot Mobile Web": "AdsBot-Google-Mobile",
14
- AdsBot: "AdsBot-Google",
15
- "Mobile AdSense": "Mediapartners-Google",
16
- "Mobile Apps Android": "AdsBot-Google-Mobile-Apps",
17
- Feedfetcher: "FeedFetcher-Google",
18
- "Google Read Aloud": "Google-Read-Aloud",
19
- "Duplex on the Web": "DuplexWeb-Google",
20
- "Google Favicon": "Google Favicon",
21
- "Web Light": "googleweblight",
22
- "Amp crawler": "Google-AMPHTM",
23
- Googlebot: "Googlebot"
24
- };
25
-
26
- /**
27
- * check if user agent contains bot data
28
- * @param {string} ua - user agent
29
- * @return {string|null}
30
- */
31
- const getGoogleBot = ua => {
32
- for (let key in googleBots) {
33
- if (ua.includes(googleBots[key])) return key;
34
- }
35
- return null;
36
- };
37
-
38
- /**
39
- * returns object which contains google bot and user-agent info
40
- * @param {string} ua - user agent
41
- * @return {object} - returns user agent
42
- */
43
- const getUserAgentDetails = ua => {
44
- const agentDetails = (0, _uaParserJs.default)(ua);
45
- const googleBot = getGoogleBot(ua);
46
- return {
47
- ...agentDetails,
48
- googleBot
49
- };
50
- };
51
- exports.getUserAgentDetails = getUserAgentDetails;