@bigbinary/neeto-commons-frontend 0.0.1 → 0.0.2
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 +41 -9
- package/initializers.cjs.js +438 -0
- package/initializers.d.ts +59 -0
- package/initializers.js +307 -74
- package/package.json +26 -7
- package/pure.cjs.js +418 -0
- package/pure.d.ts +186 -0
- package/pure.js +78 -99
- package/{react.js → react-utils.cjs.js} +228 -65
- package/react-utils.d.ts +99 -0
- package/react-utils.js +1309 -0
- package/utils.cjs.js +2781 -0
- package/utils.d.ts +43 -0
- package/utils.js +2203 -46
package/initializers.js
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import { Toastr } from '@bigbinary/neetoui';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import i18next from 'i18next';
|
|
4
|
+
import { values, evolve, omit, modify, mergeDeepLeft, either, isEmpty, isNil } from 'ramda';
|
|
5
|
+
import { initReactI18next } from 'react-i18next';
|
|
6
|
+
import mixpanel from 'mixpanel-browser';
|
|
2
7
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var ramda = require('ramda');
|
|
6
|
-
var mixpanel = require('mixpanel-browser');
|
|
7
|
-
var i18n = require('i18next');
|
|
8
|
-
var reactI18next = require('react-i18next');
|
|
8
|
+
function _typeof(obj) {
|
|
9
|
+
"@babel/helpers - typeof";
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var _document$getElements, _document$getElements2;
|
|
17
|
-
window.globalProps = objects.keysToCamelCase(JSON.parse(((_document$getElements = document.getElementsByClassName("root-container")[0]) === null || _document$getElements === void 0 ? void 0 : (_document$getElements2 = _document$getElements.dataset) === null || _document$getElements2 === void 0 ? void 0 : _document$getElements2.reactProps) || "{}"));
|
|
18
|
-
objects.deepFreezeObject(window.globalProps);
|
|
11
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
12
|
+
return typeof obj;
|
|
13
|
+
} : function (obj) {
|
|
14
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
15
|
+
}, _typeof(obj);
|
|
16
|
+
}
|
|
19
17
|
|
|
20
18
|
function _defineProperty(obj, key, value) {
|
|
21
19
|
if (key in obj) {
|
|
@@ -32,6 +30,124 @@ function _defineProperty(obj, key, value) {
|
|
|
32
30
|
return obj;
|
|
33
31
|
}
|
|
34
32
|
|
|
33
|
+
function _arrayWithHoles(arr) {
|
|
34
|
+
if (Array.isArray(arr)) return arr;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function _iterableToArrayLimit(arr, i) {
|
|
38
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
39
|
+
|
|
40
|
+
if (_i == null) return;
|
|
41
|
+
var _arr = [];
|
|
42
|
+
var _n = true;
|
|
43
|
+
var _d = false;
|
|
44
|
+
|
|
45
|
+
var _s, _e;
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
49
|
+
_arr.push(_s.value);
|
|
50
|
+
|
|
51
|
+
if (i && _arr.length === i) break;
|
|
52
|
+
}
|
|
53
|
+
} catch (err) {
|
|
54
|
+
_d = true;
|
|
55
|
+
_e = err;
|
|
56
|
+
} finally {
|
|
57
|
+
try {
|
|
58
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
59
|
+
} finally {
|
|
60
|
+
if (_d) throw _e;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return _arr;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function _arrayLikeToArray(arr, len) {
|
|
68
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
69
|
+
|
|
70
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
71
|
+
arr2[i] = arr[i];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return arr2;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
78
|
+
if (!o) return;
|
|
79
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
80
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
81
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
82
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
83
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function _nonIterableRest() {
|
|
87
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function _slicedToArray(arr, i) {
|
|
91
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
var snakeToCamelCase = function snakeToCamelCase(string) {
|
|
95
|
+
return string.replace(/(_\w)/g, function (letter) {
|
|
96
|
+
return letter[1].toUpperCase();
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
var camelToSnakeCase = function camelToSnakeCase(string) {
|
|
100
|
+
return string.replace(/[A-Z]/g, function (letter) {
|
|
101
|
+
return "_".concat(letter.toLowerCase());
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var transformObjectDeep = function transformObjectDeep(object, keyValueTransformer) {
|
|
106
|
+
var objectPreProcessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
107
|
+
|
|
108
|
+
if (objectPreProcessor && typeof objectPreProcessor === "function") {
|
|
109
|
+
object = objectPreProcessor(object);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (Array.isArray(object)) {
|
|
113
|
+
return object.map(function (obj) {
|
|
114
|
+
return transformObjectDeep(obj, keyValueTransformer, objectPreProcessor);
|
|
115
|
+
});
|
|
116
|
+
} else if (object === null || _typeof(object) !== "object") {
|
|
117
|
+
return object;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return Object.fromEntries(Object.entries(object).map(function (_ref3) {
|
|
121
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
122
|
+
key = _ref4[0],
|
|
123
|
+
value = _ref4[1];
|
|
124
|
+
|
|
125
|
+
return keyValueTransformer(key, transformObjectDeep(value, keyValueTransformer, objectPreProcessor));
|
|
126
|
+
}));
|
|
127
|
+
};
|
|
128
|
+
var keysToCamelCase = function keysToCamelCase(object) {
|
|
129
|
+
return transformObjectDeep(object, function (key, value) {
|
|
130
|
+
return [snakeToCamelCase(key), value];
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
var serializeKeysToSnakeCase = function serializeKeysToSnakeCase(object) {
|
|
134
|
+
return transformObjectDeep(object, function (key, value) {
|
|
135
|
+
return [camelToSnakeCase(key), value];
|
|
136
|
+
}, function (object) {
|
|
137
|
+
return typeof (object === null || object === void 0 ? void 0 : object.toJSON) === "function" ? object.toJSON() : object;
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
var deepFreezeObject = function deepFreezeObject(object) {
|
|
141
|
+
if (object && _typeof(object) === "object" && !Object.isFrozen(object)) {
|
|
142
|
+
Object.keys(object).forEach(function (property) {
|
|
143
|
+
return deepFreezeObject(object[property]);
|
|
144
|
+
});
|
|
145
|
+
Object.freeze(object);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return object;
|
|
149
|
+
};
|
|
150
|
+
|
|
35
151
|
var HEADERS_KEYS = {
|
|
36
152
|
xAuthEmail: "X-Auth-Email",
|
|
37
153
|
xAuthToken: "X-Auth-Token",
|
|
@@ -39,21 +155,19 @@ var HEADERS_KEYS = {
|
|
|
39
155
|
};
|
|
40
156
|
|
|
41
157
|
var resetAuthTokens = function resetAuthTokens() {
|
|
42
|
-
|
|
43
|
-
delete
|
|
158
|
+
values(HEADERS_KEYS).forEach(function (header) {
|
|
159
|
+
delete axios.defaults.headers[header];
|
|
44
160
|
});
|
|
45
161
|
};
|
|
46
162
|
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
setAuthHeaders();
|
|
50
|
-
registerIntercepts();
|
|
163
|
+
var shouldNot = function shouldNot(skip) {
|
|
164
|
+
return _typeof(skip) === "object" || !skip;
|
|
51
165
|
};
|
|
52
166
|
|
|
53
167
|
var setAuthHeaders = function setAuthHeaders() {
|
|
54
168
|
var _globalProps$user, _globalProps$user2;
|
|
55
169
|
|
|
56
|
-
|
|
170
|
+
axios.defaults.headers = _defineProperty({
|
|
57
171
|
Accept: "application/json",
|
|
58
172
|
"Content-Type": "application/json"
|
|
59
173
|
}, HEADERS_KEYS.xCsrfToken, document.querySelector('[name="csrf-token"]').getAttribute("content"));
|
|
@@ -61,46 +175,118 @@ var setAuthHeaders = function setAuthHeaders() {
|
|
|
61
175
|
var email = (_globalProps$user2 = globalProps.user) === null || _globalProps$user2 === void 0 ? void 0 : _globalProps$user2.email;
|
|
62
176
|
|
|
63
177
|
if (token && email) {
|
|
64
|
-
|
|
65
|
-
|
|
178
|
+
axios.defaults.headers[HEADERS_KEYS.xAuthEmail] = email;
|
|
179
|
+
axios.defaults.headers[HEADERS_KEYS.xAuthToken] = token;
|
|
66
180
|
}
|
|
181
|
+
}; // pipe function from ramda doesn't accept array of functions.
|
|
182
|
+
// We can't use spread operator too. So this is a workaround.
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
var createPipe = function createPipe(functions) {
|
|
186
|
+
return function (data) {
|
|
187
|
+
return functions.reduce(function (acc, fn) {
|
|
188
|
+
return fn(acc);
|
|
189
|
+
}, data);
|
|
190
|
+
};
|
|
67
191
|
};
|
|
68
192
|
|
|
69
|
-
var
|
|
70
|
-
var _response$config = response.config,
|
|
71
|
-
_response$config$tran
|
|
72
|
-
transformResponseCase = _response$config$tran === void 0 ? true : _response$config$tran,
|
|
73
|
-
_response$config$incl = _response$config.includeMetadataInResponse,
|
|
74
|
-
includeMetadataInResponse = _response$config$incl === void 0 ? false : _response$config$incl;
|
|
193
|
+
var transformKeysToCamelCase = function transformKeysToCamelCase(response) {
|
|
194
|
+
var _response$config$tran = response.config.transformResponseCase,
|
|
195
|
+
transformResponseCase = _response$config$tran === void 0 ? true : _response$config$tran;
|
|
75
196
|
|
|
76
|
-
if (
|
|
77
|
-
response.data =
|
|
197
|
+
if (response.data && transformResponseCase) {
|
|
198
|
+
response.data = keysToCamelCase(response.data);
|
|
78
199
|
}
|
|
79
200
|
|
|
201
|
+
return response;
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
var showSuccessToastr = function showSuccessToastr(response) {
|
|
205
|
+
var _response$config$show = response.config.showToastr,
|
|
206
|
+
showToastr = _response$config$show === void 0 ? true : _response$config$show;
|
|
207
|
+
|
|
208
|
+
if (showToastr && typeof response.data.notice === "string") {
|
|
209
|
+
Toastr.success(response.data.notice);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return response;
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
var pullDataFromResponse = function pullDataFromResponse(response) {
|
|
216
|
+
var _response$config$incl = response.config.includeMetadataInResponse,
|
|
217
|
+
includeMetadataInResponse = _response$config$incl === void 0 ? false : _response$config$incl;
|
|
80
218
|
return includeMetadataInResponse ? response : response.data;
|
|
81
219
|
};
|
|
82
220
|
|
|
83
|
-
var
|
|
84
|
-
var
|
|
221
|
+
var buildSuccessResponseHandler = function buildSuccessResponseHandler(skip) {
|
|
222
|
+
var interceptors = [];
|
|
223
|
+
if (!(skip !== null && skip !== void 0 && skip.transformCase)) interceptors.push(transformKeysToCamelCase);
|
|
224
|
+
if (!(skip !== null && skip !== void 0 && skip.showToastr)) interceptors.push(showSuccessToastr);
|
|
225
|
+
if (!(skip !== null && skip !== void 0 && skip.pullDataFromResponse)) interceptors.push(pullDataFromResponse);
|
|
226
|
+
return createPipe(interceptors);
|
|
227
|
+
};
|
|
85
228
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
229
|
+
var handleUnauthorizedErrorResponse = function handleUnauthorizedErrorResponse(error) {
|
|
230
|
+
var _error$response;
|
|
231
|
+
|
|
232
|
+
if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) !== 401) return error;
|
|
233
|
+
resetAuthTokens();
|
|
234
|
+
var _error$config$redirec = error.config.redirectOnError,
|
|
235
|
+
redirectOnError = _error$config$redirec === void 0 ? true : _error$config$redirec;
|
|
236
|
+
|
|
237
|
+
if (redirectOnError) {
|
|
90
238
|
setTimeout(function () {
|
|
91
239
|
var redirectTo = window.location.pathname === "/login" ? "/login" : "/login?redirect_uri=".concat(encodeURIComponent(window.location.href));
|
|
92
240
|
window.location.href = redirectTo;
|
|
93
241
|
}, 300);
|
|
94
242
|
}
|
|
95
243
|
|
|
96
|
-
return
|
|
244
|
+
return error;
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
var showErrorToastr = function showErrorToastr(error) {
|
|
248
|
+
var _error$config$showToa = error.config.showToastr,
|
|
249
|
+
showToastr = _error$config$showToa === void 0 ? true : _error$config$showToa;
|
|
250
|
+
if (!showToastr) return error;
|
|
251
|
+
|
|
252
|
+
if (axios.isCancel(error)) {
|
|
253
|
+
Toastr.error(i18next.t("neetoCommons.toastr.error.requestCanceled"));
|
|
254
|
+
} else if (error.message === "Network Error") {
|
|
255
|
+
Toastr.error(i18next.t("neetoCommons.toastr.error.networkError"));
|
|
256
|
+
} else {
|
|
257
|
+
Toastr.error(error);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return error;
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
var redirect404 = function redirect404(error) {
|
|
264
|
+
var _error$response2;
|
|
265
|
+
|
|
266
|
+
var _error$config$redirec2 = error.config.redirectOnError,
|
|
267
|
+
redirectOnError = _error$config$redirec2 === void 0 ? true : _error$config$redirec2;
|
|
268
|
+
|
|
269
|
+
if (redirectOnError && ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.status) === 404) {
|
|
270
|
+
window.location.href = "/page-not-found";
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return error;
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
var buildErrorResponseHandler = function buildErrorResponseHandler(skip) {
|
|
277
|
+
var interceptors = [];
|
|
278
|
+
if (!(skip !== null && skip !== void 0 && skip.redirectOn404)) interceptors.push(redirect404);
|
|
279
|
+
if (!(skip !== null && skip !== void 0 && skip.logoutOn401)) interceptors.push(handleUnauthorizedErrorResponse);
|
|
280
|
+
if (!(skip !== null && skip !== void 0 && skip.showToastr)) interceptors.push(showErrorToastr);
|
|
281
|
+
interceptors.push(Promise.reject.bind(Promise));
|
|
282
|
+
return createPipe(interceptors);
|
|
97
283
|
};
|
|
98
284
|
|
|
99
285
|
var cleanupCredentialsForCrossOrigin = function cleanupCredentialsForCrossOrigin(request) {
|
|
100
286
|
if (!request.url.includes("://")) return request;
|
|
101
287
|
if (request.url.includes(window.location.hostname)) return request;
|
|
102
|
-
return
|
|
103
|
-
headers:
|
|
288
|
+
return evolve({
|
|
289
|
+
headers: omit(values(HEADERS_KEYS))
|
|
104
290
|
})(request);
|
|
105
291
|
};
|
|
106
292
|
|
|
@@ -108,36 +294,39 @@ var transformDataToSnakeCase = function transformDataToSnakeCase(request) {
|
|
|
108
294
|
var _request$transformReq = request.transformRequestCase,
|
|
109
295
|
transformRequestCase = _request$transformReq === void 0 ? true : _request$transformReq;
|
|
110
296
|
if (!transformRequestCase || !request.data) return request;
|
|
111
|
-
return
|
|
112
|
-
data: objects.keysToSnakeCase
|
|
113
|
-
})(request);
|
|
297
|
+
return modify("data", serializeKeysToSnakeCase, request);
|
|
114
298
|
};
|
|
115
299
|
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
|
|
300
|
+
var addRequestInterceptors = function addRequestInterceptors(skip) {
|
|
301
|
+
if (!(skip !== null && skip !== void 0 && skip.cleanCredentialsForCrossOrigin)) {
|
|
302
|
+
axios.interceptors.request.use(cleanupCredentialsForCrossOrigin);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (!(skip !== null && skip !== void 0 && skip.transformCase)) {
|
|
306
|
+
axios.interceptors.request.use(transformDataToSnakeCase);
|
|
307
|
+
}
|
|
119
308
|
};
|
|
120
309
|
|
|
121
|
-
|
|
310
|
+
var addResponseInterceptors = function addResponseInterceptors(skip) {
|
|
311
|
+
axios.interceptors.response.use(buildSuccessResponseHandler(skip), buildErrorResponseHandler(skip));
|
|
312
|
+
};
|
|
122
313
|
|
|
123
|
-
var
|
|
124
|
-
|
|
125
|
-
|
|
314
|
+
var registerIntercepts = function registerIntercepts(skip) {
|
|
315
|
+
if (shouldNot(skip === null || skip === void 0 ? void 0 : skip.request)) addRequestInterceptors(skip === null || skip === void 0 ? void 0 : skip.request);
|
|
316
|
+
if (shouldNot(skip === null || skip === void 0 ? void 0 : skip.response)) addResponseInterceptors(skip === null || skip === void 0 ? void 0 : skip.response);
|
|
317
|
+
};
|
|
126
318
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
prevent mixpanel library from throwing an error when we use mixpanel.track() method in react components.
|
|
139
|
-
*/
|
|
140
|
-
mixpanel__default["default"].init("TEST_TOKEN");
|
|
319
|
+
function initializeAxios(skip) {
|
|
320
|
+
if (!(skip !== null && skip !== void 0 && skip.baseURL)) axios.defaults.baseURL = "/";
|
|
321
|
+
if (!(skip !== null && skip !== void 0 && skip.authHeaders)) setAuthHeaders();
|
|
322
|
+
if (shouldNot(skip === null || skip === void 0 ? void 0 : skip.interceptors)) registerIntercepts(skip === null || skip === void 0 ? void 0 : skip.interceptors);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function initializeGlobalProps() {
|
|
326
|
+
var _document$getElements, _document$getElements2;
|
|
327
|
+
|
|
328
|
+
window.globalProps = keysToCamelCase(JSON.parse(((_document$getElements = document.getElementsByClassName("root-container")[0]) === null || _document$getElements === void 0 ? void 0 : (_document$getElements2 = _document$getElements.dataset) === null || _document$getElements2 === void 0 ? void 0 : _document$getElements2.reactProps) || "{}"));
|
|
329
|
+
deepFreezeObject(window.globalProps);
|
|
141
330
|
}
|
|
142
331
|
|
|
143
332
|
var neetoCommons = {
|
|
@@ -145,9 +334,14 @@ var neetoCommons = {
|
|
|
145
334
|
pageDoesNotExist: "Page does not exist.",
|
|
146
335
|
goToHome: "Go home"
|
|
147
336
|
},
|
|
337
|
+
fallbackComponent: {
|
|
338
|
+
somethingWentWrong: "Sorry, something went wrong.",
|
|
339
|
+
tryReloading: "Please try reloading the page.",
|
|
340
|
+
reload: "Reload"
|
|
341
|
+
},
|
|
148
342
|
sidebar: {
|
|
149
|
-
|
|
150
|
-
|
|
343
|
+
myProfile: "My Profile",
|
|
344
|
+
myOrganization: "My Organization",
|
|
151
345
|
logout: "Logout",
|
|
152
346
|
help: "Help"
|
|
153
347
|
},
|
|
@@ -160,6 +354,10 @@ var neetoCommons = {
|
|
|
160
354
|
toastr: {
|
|
161
355
|
success: {
|
|
162
356
|
copiedToClipboard: "Copied to clipboard!"
|
|
357
|
+
},
|
|
358
|
+
error: {
|
|
359
|
+
requestCanceled: "Request cancelled",
|
|
360
|
+
networkError: "No Internet Connection"
|
|
163
361
|
}
|
|
164
362
|
},
|
|
165
363
|
notice: {
|
|
@@ -171,8 +369,8 @@ var en = {
|
|
|
171
369
|
};
|
|
172
370
|
|
|
173
371
|
var initializeI18n = function initializeI18n(resources) {
|
|
174
|
-
|
|
175
|
-
resources:
|
|
372
|
+
i18next.use(initReactI18next).init({
|
|
373
|
+
resources: mergeDeepLeft({
|
|
176
374
|
en: {
|
|
177
375
|
translation: en
|
|
178
376
|
}
|
|
@@ -186,10 +384,45 @@ var initializeI18n = function initializeI18n(resources) {
|
|
|
186
384
|
});
|
|
187
385
|
};
|
|
188
386
|
|
|
189
|
-
|
|
387
|
+
function initializeMixPanel() {
|
|
388
|
+
var isProduction = process.env.NODE_ENV === "production";
|
|
389
|
+
var isTokenPresent = !!process.env.MIXPANEL_TOKEN;
|
|
390
|
+
var isUserLoggedIn = !either(isEmpty, isNil)(globalProps.user);
|
|
391
|
+
|
|
392
|
+
if (isProduction && isTokenPresent && isUserLoggedIn) {
|
|
393
|
+
mixpanel.init(process.env.MIXPANEL_TOKEN || "");
|
|
394
|
+
mixpanel.people.set({
|
|
395
|
+
$email: globalProps.user.email,
|
|
396
|
+
$fist_name: globalProps.user.firstName,
|
|
397
|
+
$last_name: globalProps.user.lastName
|
|
398
|
+
});
|
|
399
|
+
mixpanel.identify(globalProps.user.email);
|
|
400
|
+
} else {
|
|
401
|
+
/*
|
|
402
|
+
We need to initialize mixpanel with a bogus token in development and test environment to
|
|
403
|
+
prevent mixpanel library from throwing an error when we use mixpanel.track() method in react components.
|
|
404
|
+
*/
|
|
405
|
+
mixpanel.init("TEST_TOKEN");
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
var globalProps$1 = {};
|
|
190
410
|
function initializeApplication(_ref) {
|
|
191
|
-
var translationResources = _ref.translationResources
|
|
192
|
-
|
|
411
|
+
var translationResources = _ref.translationResources,
|
|
412
|
+
skip = _ref.skip;
|
|
413
|
+
|
|
414
|
+
if (!(skip !== null && skip !== void 0 && skip.globalProps)) {
|
|
415
|
+
initializeGlobalProps();
|
|
416
|
+
globalProps$1 = window.globalProps;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
if (!(skip !== null && skip !== void 0 && skip.mixpanel)) initializeMixPanel();
|
|
420
|
+
|
|
421
|
+
if (_typeof(skip === null || skip === void 0 ? void 0 : skip.axios) === "object" || !(skip !== null && skip !== void 0 && skip.axios)) {
|
|
422
|
+
initializeAxios(skip === null || skip === void 0 ? void 0 : skip.axios);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
if (!(skip !== null && skip !== void 0 && skip.i18n)) initializeI18n(translationResources);
|
|
193
426
|
}
|
|
194
427
|
|
|
195
|
-
|
|
428
|
+
export { initializeApplication as default, globalProps$1 as globalProps };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-commons-frontend",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-commons-frontend.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
|
@@ -13,23 +13,41 @@
|
|
|
13
13
|
"watch": "rollup -c rollup.config.js --watch"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
-
"initializers
|
|
17
|
-
"react
|
|
18
|
-
"utils
|
|
19
|
-
"pure
|
|
16
|
+
"initializers.*",
|
|
17
|
+
"react-utils.*",
|
|
18
|
+
"utils.*",
|
|
19
|
+
"pure.*"
|
|
20
20
|
],
|
|
21
21
|
"lint-staged": {
|
|
22
22
|
"**/*.{js,jsx,json}": [
|
|
23
23
|
".scripts/fix-lints.sh"
|
|
24
24
|
]
|
|
25
25
|
},
|
|
26
|
+
"exports": {
|
|
27
|
+
"./react-utils": {
|
|
28
|
+
"import": "./react-utils.js",
|
|
29
|
+
"require": "./react-utils.cjs.js"
|
|
30
|
+
},
|
|
31
|
+
"./utils": {
|
|
32
|
+
"import": "./utils.js",
|
|
33
|
+
"require": "./utils.cjs.js"
|
|
34
|
+
},
|
|
35
|
+
"./pure": {
|
|
36
|
+
"import": "./pure.js",
|
|
37
|
+
"require": "./pure.cjs.js"
|
|
38
|
+
},
|
|
39
|
+
"./initializers": {
|
|
40
|
+
"import": "./initializers.js",
|
|
41
|
+
"require": "./initializers.cjs.js"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
26
44
|
"devDependencies": {
|
|
27
45
|
"@babel/eslint-parser": "^7.18.2",
|
|
28
46
|
"@babel/plugin-transform-runtime": "^7.18.5",
|
|
29
47
|
"@babel/preset-env": "^7.17.10",
|
|
30
48
|
"@babel/preset-react": "^7.16.7",
|
|
31
49
|
"@bigbinary/neeto-icons": "^1.8.35",
|
|
32
|
-
"@bigbinary/neetoui": "^3.5.
|
|
50
|
+
"@bigbinary/neetoui": "^3.5.16",
|
|
33
51
|
"@honeybadger-io/react": "2.0.1",
|
|
34
52
|
"@rollup/plugin-alias": "^3.1.9",
|
|
35
53
|
"@rollup/plugin-babel": "^5.3.1",
|
|
@@ -63,6 +81,7 @@
|
|
|
63
81
|
"lint-staged": "^12.3.7",
|
|
64
82
|
"mixpanel-browser": "^2.45.0",
|
|
65
83
|
"prettier": "^2.6.2",
|
|
84
|
+
"qs": "^6.11.0",
|
|
66
85
|
"ramda": "^0.28.0",
|
|
67
86
|
"react": "^17.0.2",
|
|
68
87
|
"react-dom": "17.0.2",
|
|
@@ -77,7 +96,7 @@
|
|
|
77
96
|
"dependencies": {},
|
|
78
97
|
"peerDependencies": {
|
|
79
98
|
"@bigbinary/neeto-icons": "^1.8.35",
|
|
80
|
-
"@bigbinary/neetoui": "^3.5.
|
|
99
|
+
"@bigbinary/neetoui": "^3.5.16",
|
|
81
100
|
"@honeybadger-io/react": "2.0.1",
|
|
82
101
|
"axios": "^0.27.2",
|
|
83
102
|
"dayjs": "1.11.1",
|