@bigbinary/neeto-commons-frontend 2.0.1 → 2.0.4
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 +1 -1
- package/initializers.cjs.js +452 -0
- package/initializers.d.ts +59 -0
- package/initializers.js +187 -119
- package/package.json +20 -1
- package/pure.cjs.js +409 -0
- package/pure.d.ts +183 -0
- package/pure.js +61 -90
- package/react-utils.cjs.js +1260 -0
- package/react-utils.d.ts +87 -0
- package/react-utils.js +124 -165
- package/utils.cjs.js +1325 -0
- package/utils.d.ts +43 -0
- package/utils.js +725 -44
package/initializers.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import { curry, isNil, values, evolve, omit, modify, either, isEmpty, mergeDeepLeft } from 'ramda';
|
|
2
|
+
import { Toastr } from '@bigbinary/neetoui';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import i18next from 'i18next';
|
|
5
|
+
import mixpanel from 'mixpanel-browser';
|
|
6
|
+
import { initReactI18next } from 'react-i18next';
|
|
2
7
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var axios = require('axios');
|
|
6
|
-
var i18next = require('i18next');
|
|
7
|
-
var mixpanel = require('mixpanel-browser');
|
|
8
|
-
var reactI18next = require('react-i18next');
|
|
9
|
-
|
|
10
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
function _typeof(obj) {
|
|
9
|
+
"@babel/helpers - typeof";
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
+
}
|
|
15
17
|
|
|
16
18
|
function _arrayWithHoles(arr) {
|
|
17
19
|
if (Array.isArray(arr)) return arr;
|
|
@@ -74,16 +76,6 @@ function _slicedToArray(arr, i) {
|
|
|
74
76
|
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
function _typeof(obj) {
|
|
78
|
-
"@babel/helpers - typeof";
|
|
79
|
-
|
|
80
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
81
|
-
return typeof obj;
|
|
82
|
-
} : function (obj) {
|
|
83
|
-
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
84
|
-
}, _typeof(obj);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
79
|
var snakeToCamelCase = function snakeToCamelCase(string) {
|
|
88
80
|
return string.replace(/(_\w)/g, function (letter) {
|
|
89
81
|
return letter[1].toUpperCase();
|
|
@@ -117,6 +109,22 @@ var keysToCamelCase = function keysToCamelCase(object) {
|
|
|
117
109
|
return [snakeToCamelCase(key), value];
|
|
118
110
|
});
|
|
119
111
|
};
|
|
112
|
+
var serializeKeysToSnakeCase = function serializeKeysToSnakeCase(object) {
|
|
113
|
+
if (Array.isArray(object)) {
|
|
114
|
+
return object.map(serializeKeysToSnakeCase);
|
|
115
|
+
} else if (object === null || _typeof(object) !== "object") {
|
|
116
|
+
return object;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return Object.fromEntries(Object.entries(object).map(function (_ref3) {
|
|
120
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
121
|
+
key = _ref4[0],
|
|
122
|
+
value = _ref4[1];
|
|
123
|
+
|
|
124
|
+
var val = typeof (value === null || value === void 0 ? void 0 : value.toJSON) === "function" ? value.toJSON() : value;
|
|
125
|
+
return [camelToSnakeCase(key), serializeKeysToSnakeCase(val)];
|
|
126
|
+
}));
|
|
127
|
+
};
|
|
120
128
|
var deepFreezeObject = function deepFreezeObject(object) {
|
|
121
129
|
if (object && _typeof(object) === "object" && !Object.isFrozen(object)) {
|
|
122
130
|
Object.keys(object).forEach(function (property) {
|
|
@@ -127,25 +135,28 @@ var deepFreezeObject = function deepFreezeObject(object) {
|
|
|
127
135
|
|
|
128
136
|
return object;
|
|
129
137
|
};
|
|
130
|
-
var matches =
|
|
138
|
+
var matches = curry(function (pattern, object) {
|
|
131
139
|
var __parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : object;
|
|
132
140
|
|
|
133
141
|
if (object === pattern) return true;
|
|
134
142
|
if (typeof pattern === "function" && pattern(object, __parent)) return true;
|
|
135
|
-
if (
|
|
143
|
+
if (isNil(pattern) || isNil(object)) return false;
|
|
136
144
|
if (_typeof(pattern) !== "object") return false;
|
|
137
|
-
return Object.entries(pattern).every(function (
|
|
138
|
-
var
|
|
139
|
-
key =
|
|
140
|
-
value =
|
|
145
|
+
return Object.entries(pattern).every(function (_ref5) {
|
|
146
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
147
|
+
key = _ref6[0],
|
|
148
|
+
value = _ref6[1];
|
|
141
149
|
|
|
142
150
|
return matches(value, object[key], __parent);
|
|
143
151
|
});
|
|
144
152
|
});
|
|
145
153
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
154
|
+
function initializeGlobalProps() {
|
|
155
|
+
var _document$getElements, _document$getElements2;
|
|
156
|
+
|
|
157
|
+
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) || "{}"));
|
|
158
|
+
deepFreezeObject(window.globalProps);
|
|
159
|
+
}
|
|
149
160
|
|
|
150
161
|
function _defineProperty(obj, key, value) {
|
|
151
162
|
if (key in obj) {
|
|
@@ -169,21 +180,19 @@ var HEADERS_KEYS = {
|
|
|
169
180
|
};
|
|
170
181
|
|
|
171
182
|
var resetAuthTokens = function resetAuthTokens() {
|
|
172
|
-
|
|
173
|
-
delete
|
|
183
|
+
values(HEADERS_KEYS).forEach(function (header) {
|
|
184
|
+
delete axios.defaults.headers[header];
|
|
174
185
|
});
|
|
175
186
|
};
|
|
176
187
|
|
|
177
|
-
var
|
|
178
|
-
|
|
179
|
-
setAuthHeaders();
|
|
180
|
-
registerIntercepts();
|
|
188
|
+
var shouldNot = function shouldNot(skip) {
|
|
189
|
+
return _typeof(skip) === "object" || !skip;
|
|
181
190
|
};
|
|
182
191
|
|
|
183
192
|
var setAuthHeaders = function setAuthHeaders() {
|
|
184
193
|
var _globalProps$user, _globalProps$user2;
|
|
185
194
|
|
|
186
|
-
|
|
195
|
+
axios.defaults.headers = _defineProperty({
|
|
187
196
|
Accept: "application/json",
|
|
188
197
|
"Content-Type": "application/json"
|
|
189
198
|
}, HEADERS_KEYS.xCsrfToken, document.querySelector('[name="csrf-token"]').getAttribute("content"));
|
|
@@ -191,123 +200,169 @@ var setAuthHeaders = function setAuthHeaders() {
|
|
|
191
200
|
var email = (_globalProps$user2 = globalProps.user) === null || _globalProps$user2 === void 0 ? void 0 : _globalProps$user2.email;
|
|
192
201
|
|
|
193
202
|
if (token && email) {
|
|
194
|
-
|
|
195
|
-
|
|
203
|
+
axios.defaults.headers[HEADERS_KEYS.xAuthEmail] = email;
|
|
204
|
+
axios.defaults.headers[HEADERS_KEYS.xAuthToken] = token;
|
|
196
205
|
}
|
|
206
|
+
}; // pipe function from ramda doesn't accept array of functions.
|
|
207
|
+
// We can't use spread operator too. So this is a workaround.
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
var createPipe = function createPipe(functions) {
|
|
211
|
+
return function (data) {
|
|
212
|
+
return functions.reduce(function (acc, fn) {
|
|
213
|
+
return fn(acc);
|
|
214
|
+
}, data);
|
|
215
|
+
};
|
|
197
216
|
};
|
|
198
217
|
|
|
199
|
-
var
|
|
200
|
-
var _response$config = response.config,
|
|
201
|
-
_response$config$tran
|
|
202
|
-
transformResponseCase = _response$config$tran === void 0 ? true : _response$config$tran,
|
|
203
|
-
_response$config$incl = _response$config.includeMetadataInResponse,
|
|
204
|
-
includeMetadataInResponse = _response$config$incl === void 0 ? false : _response$config$incl,
|
|
205
|
-
_response$config$show = _response$config.showToastr,
|
|
206
|
-
showToastr = _response$config$show === void 0 ? true : _response$config$show;
|
|
218
|
+
var transformKeysToCamelCase = function transformKeysToCamelCase(response) {
|
|
219
|
+
var _response$config$tran = response.config.transformResponseCase,
|
|
220
|
+
transformResponseCase = _response$config$tran === void 0 ? true : _response$config$tran;
|
|
207
221
|
|
|
208
|
-
if (response.data) {
|
|
209
|
-
|
|
222
|
+
if (response.data && transformResponseCase) {
|
|
223
|
+
response.data = keysToCamelCase(response.data);
|
|
224
|
+
}
|
|
210
225
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
226
|
+
return response;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
var showSuccessToastr = function showSuccessToastr(response) {
|
|
230
|
+
var _response$config$show = response.config.showToastr,
|
|
231
|
+
showToastr = _response$config$show === void 0 ? true : _response$config$show;
|
|
232
|
+
|
|
233
|
+
if (showToastr && typeof response.data.notice === "string") {
|
|
234
|
+
Toastr.success(response.data.notice);
|
|
214
235
|
}
|
|
215
236
|
|
|
237
|
+
return response;
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
var pullDataFromResponse = function pullDataFromResponse(response) {
|
|
241
|
+
var _response$config$incl = response.config.includeMetadataInResponse,
|
|
242
|
+
includeMetadataInResponse = _response$config$incl === void 0 ? false : _response$config$incl;
|
|
216
243
|
return includeMetadataInResponse ? response : response.data;
|
|
217
244
|
};
|
|
218
245
|
|
|
219
|
-
var
|
|
246
|
+
var buildSuccessResponseHandler = function buildSuccessResponseHandler(skip) {
|
|
247
|
+
var interceptors = [];
|
|
248
|
+
if (!(skip !== null && skip !== void 0 && skip.transformCase)) interceptors.push(transformKeysToCamelCase);
|
|
249
|
+
if (!(skip !== null && skip !== void 0 && skip.showToastr)) interceptors.push(showSuccessToastr);
|
|
250
|
+
if (!(skip !== null && skip !== void 0 && skip.pullDataFromResponse)) interceptors.push(pullDataFromResponse);
|
|
251
|
+
return createPipe(interceptors);
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
var handleUnauthorizedErrorResponse = function handleUnauthorizedErrorResponse(error) {
|
|
255
|
+
var _error$response;
|
|
256
|
+
|
|
257
|
+
if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) !== 401) return error;
|
|
220
258
|
resetAuthTokens();
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
259
|
+
var _error$config$redirec = error.config.redirectOnError,
|
|
260
|
+
redirectOnError = _error$config$redirec === void 0 ? true : _error$config$redirec;
|
|
261
|
+
|
|
262
|
+
if (redirectOnError) {
|
|
263
|
+
setTimeout(function () {
|
|
264
|
+
var redirectTo = window.location.pathname === "/login" ? "/login" : "/login?redirect_uri=".concat(encodeURIComponent(window.location.href));
|
|
265
|
+
window.location.href = redirectTo;
|
|
266
|
+
}, 300);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return error;
|
|
225
270
|
};
|
|
226
271
|
|
|
227
272
|
var showErrorToastr = function showErrorToastr(error) {
|
|
228
|
-
if (
|
|
229
|
-
|
|
273
|
+
if (axios.isCancel(error)) {
|
|
274
|
+
Toastr.error(i18next.t("neetoCommons.toastr.error.requestCanceled"));
|
|
230
275
|
} else if (error.message === "Network Error") {
|
|
231
|
-
|
|
276
|
+
Toastr.error(i18next.t("neetoCommons.toastr.error.networkError"));
|
|
232
277
|
} else {
|
|
233
|
-
|
|
278
|
+
Toastr.error(error);
|
|
234
279
|
}
|
|
280
|
+
|
|
281
|
+
return error;
|
|
235
282
|
};
|
|
236
283
|
|
|
237
|
-
var
|
|
238
|
-
var _error$
|
|
284
|
+
var redirect404 = function redirect404(error) {
|
|
285
|
+
var _error$response2;
|
|
239
286
|
|
|
240
|
-
var _error$config$
|
|
241
|
-
|
|
287
|
+
var _error$config$redirec2 = error.config.redirectOnError,
|
|
288
|
+
redirectOnError = _error$config$redirec2 === void 0 ? true : _error$config$redirec2;
|
|
242
289
|
|
|
243
|
-
if (((_error$
|
|
290
|
+
if (redirectOnError && ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.status) === 404) {
|
|
244
291
|
window.location.href = "/page-not-found";
|
|
245
|
-
} else if (((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.status) === 401) {
|
|
246
|
-
handleUnauthorizedErrorResponse();
|
|
247
|
-
} else if (showToastr) {
|
|
248
|
-
showErrorToastr(error);
|
|
249
292
|
}
|
|
250
293
|
|
|
251
|
-
return
|
|
294
|
+
return error;
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
var buildErrorResponseHandler = function buildErrorResponseHandler(skip) {
|
|
298
|
+
var interceptors = [];
|
|
299
|
+
if (!(skip !== null && skip !== void 0 && skip.redirectOn404)) interceptors.push(redirect404);
|
|
300
|
+
if (!(skip !== null && skip !== void 0 && skip.logoutOn401)) interceptors.push(handleUnauthorizedErrorResponse);
|
|
301
|
+
if (!(skip !== null && skip !== void 0 && skip.showToastr)) interceptors.push(showErrorToastr);
|
|
302
|
+
interceptors.push(Promise.reject.bind(Promise));
|
|
303
|
+
return createPipe(interceptors);
|
|
252
304
|
};
|
|
253
305
|
|
|
254
306
|
var cleanupCredentialsForCrossOrigin = function cleanupCredentialsForCrossOrigin(request) {
|
|
255
307
|
if (!request.url.includes("://")) return request;
|
|
256
308
|
if (request.url.includes(window.location.hostname)) return request;
|
|
257
|
-
return
|
|
258
|
-
headers:
|
|
309
|
+
return evolve({
|
|
310
|
+
headers: omit(values(HEADERS_KEYS))
|
|
259
311
|
})(request);
|
|
260
312
|
};
|
|
261
313
|
|
|
262
|
-
var serializeKeysToSnakeCase = function serializeKeysToSnakeCase(object) {
|
|
263
|
-
if (Array.isArray(object)) {
|
|
264
|
-
return object.map(serializeKeysToSnakeCase);
|
|
265
|
-
} else if (object === null || _typeof(object) !== "object") {
|
|
266
|
-
return object;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
return Object.fromEntries(Object.entries(object).map(function (_ref) {
|
|
270
|
-
var _ref2 = _slicedToArray(_ref, 2),
|
|
271
|
-
key = _ref2[0],
|
|
272
|
-
value = _ref2[1];
|
|
273
|
-
|
|
274
|
-
var val = typeof (value === null || value === void 0 ? void 0 : value.toJSON) === "function" ? value.toJSON() : value;
|
|
275
|
-
return [camelToSnakeCase(key), serializeKeysToSnakeCase(val)];
|
|
276
|
-
}));
|
|
277
|
-
};
|
|
278
|
-
|
|
279
314
|
var transformDataToSnakeCase = function transformDataToSnakeCase(request) {
|
|
280
315
|
var _request$transformReq = request.transformRequestCase,
|
|
281
316
|
transformRequestCase = _request$transformReq === void 0 ? true : _request$transformReq;
|
|
282
317
|
if (!transformRequestCase || !request.data) return request;
|
|
283
|
-
return
|
|
318
|
+
return modify("data", serializeKeysToSnakeCase, request);
|
|
284
319
|
};
|
|
285
320
|
|
|
286
|
-
var
|
|
287
|
-
|
|
288
|
-
|
|
321
|
+
var addRequestInterceptors = function addRequestInterceptors(skip) {
|
|
322
|
+
if (!(skip !== null && skip !== void 0 && skip.cleanCredentialsForCrossOrigin)) {
|
|
323
|
+
axios.interceptors.request.use(cleanupCredentialsForCrossOrigin);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (!(skip !== null && skip !== void 0 && skip.transformCase)) {
|
|
327
|
+
axios.interceptors.request.use(transformDataToSnakeCase);
|
|
328
|
+
}
|
|
289
329
|
};
|
|
290
330
|
|
|
291
|
-
|
|
331
|
+
var addResponseInterceptors = function addResponseInterceptors(skip) {
|
|
332
|
+
axios.interceptors.response.use(buildSuccessResponseHandler(skip), buildErrorResponseHandler(skip));
|
|
333
|
+
};
|
|
292
334
|
|
|
293
|
-
var
|
|
294
|
-
|
|
295
|
-
|
|
335
|
+
var registerIntercepts = function registerIntercepts(skip) {
|
|
336
|
+
if (shouldNot(skip === null || skip === void 0 ? void 0 : skip.request)) addRequestInterceptors(skip === null || skip === void 0 ? void 0 : skip.request);
|
|
337
|
+
if (shouldNot(skip === null || skip === void 0 ? void 0 : skip.response)) addResponseInterceptors(skip === null || skip === void 0 ? void 0 : skip.response);
|
|
338
|
+
};
|
|
296
339
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
340
|
+
function initializeAxios(skip) {
|
|
341
|
+
if (!(skip !== null && skip !== void 0 && skip.baseURL)) axios.defaults.baseURL = "/";
|
|
342
|
+
if (!(skip !== null && skip !== void 0 && skip.authHeaders)) setAuthHeaders();
|
|
343
|
+
if (shouldNot(skip === null || skip === void 0 ? void 0 : skip.interceptors)) registerIntercepts(skip === null || skip === void 0 ? void 0 : skip.interceptors);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
function initializeMixPanel() {
|
|
347
|
+
var isProduction = process.env.NODE_ENV === "production";
|
|
348
|
+
var isTokenPresent = !!process.env.MIXPANEL_TOKEN;
|
|
349
|
+
var isUserLoggedIn = !either(isEmpty, isNil)(globalProps.user);
|
|
350
|
+
|
|
351
|
+
if (isProduction && isTokenPresent && isUserLoggedIn) {
|
|
352
|
+
mixpanel.init(process.env.MIXPANEL_TOKEN || "");
|
|
353
|
+
mixpanel.people.set({
|
|
354
|
+
$email: globalProps.user.email,
|
|
355
|
+
$fist_name: globalProps.user.firstName,
|
|
356
|
+
$last_name: globalProps.user.lastName
|
|
357
|
+
});
|
|
358
|
+
mixpanel.identify(globalProps.user.email);
|
|
359
|
+
} else {
|
|
360
|
+
/*
|
|
361
|
+
We need to initialize mixpanel with a bogus token in development and test environment to
|
|
362
|
+
prevent mixpanel library from throwing an error when we use mixpanel.track() method in react components.
|
|
363
|
+
*/
|
|
364
|
+
mixpanel.init("TEST_TOKEN");
|
|
365
|
+
}
|
|
311
366
|
}
|
|
312
367
|
|
|
313
368
|
var neetoCommons = {
|
|
@@ -350,8 +405,8 @@ var en = {
|
|
|
350
405
|
};
|
|
351
406
|
|
|
352
407
|
var initializeI18n = function initializeI18n(resources) {
|
|
353
|
-
|
|
354
|
-
resources:
|
|
408
|
+
i18next.use(initReactI18next).init({
|
|
409
|
+
resources: mergeDeepLeft({
|
|
355
410
|
en: {
|
|
356
411
|
translation: en
|
|
357
412
|
}
|
|
@@ -365,10 +420,23 @@ var initializeI18n = function initializeI18n(resources) {
|
|
|
365
420
|
});
|
|
366
421
|
};
|
|
367
422
|
|
|
368
|
-
|
|
423
|
+
var globalProps$1 = {};
|
|
369
424
|
function initializeApplication(_ref) {
|
|
370
|
-
var translationResources = _ref.translationResources
|
|
371
|
-
|
|
425
|
+
var translationResources = _ref.translationResources,
|
|
426
|
+
skip = _ref.skip;
|
|
427
|
+
|
|
428
|
+
if (!(skip !== null && skip !== void 0 && skip.globalProps)) {
|
|
429
|
+
initializeGlobalProps();
|
|
430
|
+
globalProps$1 = window.globalProps;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
if (!(skip !== null && skip !== void 0 && skip.mixpanel)) initializeMixPanel();
|
|
434
|
+
|
|
435
|
+
if (_typeof(skip === null || skip === void 0 ? void 0 : skip.axios) === "object" || !(skip !== null && skip !== void 0 && skip.axios)) {
|
|
436
|
+
initializeAxios(skip === null || skip === void 0 ? void 0 : skip.axios);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
if (!(skip !== null && skip !== void 0 && skip.i18n)) initializeI18n(translationResources);
|
|
372
440
|
}
|
|
373
441
|
|
|
374
|
-
|
|
442
|
+
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": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
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>",
|
|
@@ -23,6 +23,24 @@
|
|
|
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",
|
|
@@ -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
|
+
"query-string": "^7.1.1",
|
|
66
85
|
"ramda": "^0.28.0",
|
|
67
86
|
"react": "^17.0.2",
|
|
68
87
|
"react-dom": "17.0.2",
|