topkat-utils 1.1.13 → 1.1.14
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/dist/index.d.ts +36 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/src/array-utils.d.ts +56 -0
- package/dist/src/array-utils.js +160 -0
- package/dist/src/array-utils.js.map +1 -0
- package/dist/src/config.d.ts +44 -0
- package/dist/src/config.js +66 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/date-utils.d.ts +100 -0
- package/dist/src/date-utils.js +407 -0
- package/dist/src/date-utils.js.map +1 -0
- package/dist/src/env-utils.d.ts +8 -0
- package/dist/src/env-utils.js +38 -0
- package/dist/src/env-utils.js.map +1 -0
- package/dist/src/error-utils.d.ts +8 -0
- package/dist/src/error-utils.js +135 -0
- package/dist/src/error-utils.js.map +1 -0
- package/dist/src/is-empty.d.ts +1 -0
- package/dist/src/is-empty.js +13 -0
- package/dist/src/is-empty.js.map +1 -0
- package/dist/src/is-object.d.ts +2 -0
- package/dist/src/is-object.js +7 -0
- package/dist/src/is-object.js.map +1 -0
- package/dist/src/isset.d.ts +1 -0
- package/dist/src/isset.js +12 -0
- package/dist/src/isset.js.map +1 -0
- package/dist/src/logger-utils.d.ts +76 -0
- package/dist/src/logger-utils.js +484 -0
- package/dist/src/logger-utils.js.map +1 -0
- package/dist/src/loop-utils.d.ts +40 -0
- package/dist/src/loop-utils.js +182 -0
- package/dist/src/loop-utils.js.map +1 -0
- package/dist/src/math-utils.d.ts +23 -0
- package/dist/src/math-utils.js +59 -0
- package/dist/src/math-utils.js.map +1 -0
- package/dist/src/mongo-utils.d.ts +11 -0
- package/dist/src/mongo-utils.js +63 -0
- package/dist/src/mongo-utils.js.map +1 -0
- package/dist/src/object-utils.d.ts +96 -0
- package/dist/src/object-utils.js +409 -0
- package/dist/src/object-utils.js.map +1 -0
- package/dist/src/private/config.d.ts +44 -0
- package/dist/src/private/config.js +66 -0
- package/dist/src/private/config.js.map +1 -0
- package/dist/src/private/error-handler.d.ts +10 -0
- package/dist/src/private/error-handler.js +46 -0
- package/dist/src/private/error-handler.js.map +1 -0
- package/dist/src/private/types.d.ts +5 -0
- package/dist/src/private/types.js +3 -0
- package/dist/src/private/types.js.map +1 -0
- package/dist/src/regexp-utils.d.ts +12 -0
- package/dist/src/regexp-utils.js +45 -0
- package/dist/src/regexp-utils.js.map +1 -0
- package/dist/src/remove-circular-json-stringify.d.ts +1 -0
- package/dist/src/remove-circular-json-stringify.js +21 -0
- package/dist/src/remove-circular-json-stringify.js.map +1 -0
- package/dist/src/string-utils.d.ts +77 -0
- package/dist/src/string-utils.js +267 -0
- package/dist/src/string-utils.js.map +1 -0
- package/dist/src/tests-utils.d.ts +21 -0
- package/dist/src/tests-utils.js +80 -0
- package/dist/src/tests-utils.js.map +1 -0
- package/dist/src/timer-utils.d.ts +16 -0
- package/dist/src/timer-utils.js +146 -0
- package/dist/src/timer-utils.js.map +1 -0
- package/dist/src/transaction-utils.d.ts +14 -0
- package/dist/src/transaction-utils.js +157 -0
- package/dist/src/transaction-utils.js.map +1 -0
- package/dist/src/validation-utils.d.ts +80 -0
- package/dist/src/validation-utils.js +249 -0
- package/dist/src/validation-utils.js.map +1 -0
- package/dist/src/wtf-utils.d.ts +7 -0
- package/dist/src/wtf-utils.js +88 -0
- package/dist/src/wtf-utils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
+
if (ar || !(i in from)) {
|
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
+
ar[i] = from[i];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.unflattenObject = exports.flattenObject = exports.mergeDeepConfigurable = exports.mergeDeepOverrideArrays = exports.mergeDeep = exports.ensureObjectProp = exports.sortObjKeyAccordingToValue = exports.objFilterUndefinedRecursive = exports.readOnlyForAll = exports.reassignForbidden = exports.readOnly = exports.objFilterUndefined = exports.deleteByAddress = exports.filterKeys = exports.deepClone = exports.cloneObject = exports.mergeMixins = exports.objForceWriteIfNotSet = exports.objForceWrite = exports.findByAddressAll = exports.findByAddress = exports.has = exports.simpleObjectMaskOrSelect = void 0;
|
|
13
|
+
var error_utils_1 = require("./error-utils");
|
|
14
|
+
var loop_utils_1 = require("./loop-utils");
|
|
15
|
+
var isset_1 = require("./isset");
|
|
16
|
+
var is_object_1 = require("./is-object");
|
|
17
|
+
var error_handler_1 = require("./private/error-handler");
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param {Object} object main object
|
|
21
|
+
* @param {String[]} maskedOrSelectedFields array of fields
|
|
22
|
+
* @param {Boolean} isMask default: true; determine the behavior of the function. If is mask, selected fields will not appear in the resulting object. If it's a select, only selected fields will appear.
|
|
23
|
+
* @param {Boolean} deleteKeysInsteadOfReturningAnewObject default:false; modify the existing object instead of creating a new instance
|
|
24
|
+
*/
|
|
25
|
+
function simpleObjectMaskOrSelect(object, maskedOrSelectedFields, isMask, deleteKeysInsteadOfReturningAnewObject) {
|
|
26
|
+
if (isMask === void 0) { isMask = true; }
|
|
27
|
+
if (deleteKeysInsteadOfReturningAnewObject === void 0) { deleteKeysInsteadOfReturningAnewObject = false; }
|
|
28
|
+
var allKeys = Object.keys(object);
|
|
29
|
+
var keysToMask = allKeys.filter(function (keyName) {
|
|
30
|
+
if (isMask)
|
|
31
|
+
return maskedOrSelectedFields.includes(keyName);
|
|
32
|
+
else
|
|
33
|
+
return !maskedOrSelectedFields.includes(keyName);
|
|
34
|
+
});
|
|
35
|
+
if (deleteKeysInsteadOfReturningAnewObject) {
|
|
36
|
+
keysToMask.forEach(function (keyNameToDelete) { return delete object[keyNameToDelete]; });
|
|
37
|
+
return object;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return allKeys.reduce(function (newObject, key) {
|
|
41
|
+
if (!keysToMask.includes(key))
|
|
42
|
+
newObject[key] = object[key];
|
|
43
|
+
return newObject;
|
|
44
|
+
}, {});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.simpleObjectMaskOrSelect = simpleObjectMaskOrSelect;
|
|
48
|
+
/**
|
|
49
|
+
* check if **object OR array** has property Safely (avoid cannot read property x of null and such)
|
|
50
|
+
* @param {Object} obj object to test against
|
|
51
|
+
* @param {string} addr `a.b.c.0.1` will test if myObject has props a that has prop b. Work wit arrays as well (like `arr.0`)
|
|
52
|
+
*/
|
|
53
|
+
function has(obj, addr) {
|
|
54
|
+
if (!(0, isset_1.isset)(obj) || typeof obj !== 'object')
|
|
55
|
+
return;
|
|
56
|
+
var propsArr = addr.replace(/\.?\[(\d+)\]/g, '.$1').split('.'); // replace a[3] => a.3;
|
|
57
|
+
var objChain = obj;
|
|
58
|
+
return propsArr.every(function (prop) {
|
|
59
|
+
objChain = objChain[prop];
|
|
60
|
+
return (0, isset_1.isset)(objChain);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
exports.has = has;
|
|
64
|
+
/** Find address in an object "a.b.c" IN { a : { b : {c : 'blah' }}} RETURNS 'blah'
|
|
65
|
+
* @param obj
|
|
66
|
+
* @param addr accept syntax like "obj.subItem.[0].sub2" OR "obj.subItem.0.sub2" OR "obj.subItem[0].sub2"
|
|
67
|
+
* @returns the last item of the chain OR undefined if not found
|
|
68
|
+
*/
|
|
69
|
+
function findByAddress(obj, addr) {
|
|
70
|
+
if (addr === '')
|
|
71
|
+
return obj;
|
|
72
|
+
if (!(0, isset_1.isset)(obj) || typeof obj !== 'object')
|
|
73
|
+
return console.warn('Main object in `findByAddress` function is undefined or has the wrong type');
|
|
74
|
+
var propsArr = addr.replace(/\.?\[(\d+)\]/g, '.$1').split('.'); // replace .[4] AND [4] TO .4
|
|
75
|
+
var objRef = propsArr.reduce(function (objChain, prop) {
|
|
76
|
+
if (!(0, isset_1.isset)(objChain) || typeof objChain !== 'object' || !(0, isset_1.isset)(objChain[prop]))
|
|
77
|
+
return;
|
|
78
|
+
else
|
|
79
|
+
return objChain[prop];
|
|
80
|
+
}, obj);
|
|
81
|
+
return objRef;
|
|
82
|
+
}
|
|
83
|
+
exports.findByAddress = findByAddress;
|
|
84
|
+
function findByAddressAll(obj, addr, returnAddresses) {
|
|
85
|
+
if (returnAddresses === void 0) { returnAddresses = false; }
|
|
86
|
+
(0, error_utils_1.err500IfNotSet)({ obj: obj, addr: addr });
|
|
87
|
+
if (addr === '')
|
|
88
|
+
return obj;
|
|
89
|
+
var addrRegexp = new RegExp('^' + addr
|
|
90
|
+
.replace(/\.?\[(\d+)\]/g, '.$1') // replace .[4] AND [4] TO .4
|
|
91
|
+
.replace(/\./g, '\\.')
|
|
92
|
+
.replace(/\.\*/g, '.[^.]+') // replace * by [^. (all but a point)]
|
|
93
|
+
+ '$');
|
|
94
|
+
var matchingItems = [];
|
|
95
|
+
(0, loop_utils_1.recursiveGenericFunctionSync)(obj, function (item, address) {
|
|
96
|
+
if (addrRegexp.test(address))
|
|
97
|
+
matchingItems.push(returnAddresses ? [address, item] : item);
|
|
98
|
+
});
|
|
99
|
+
return matchingItems;
|
|
100
|
+
}
|
|
101
|
+
exports.findByAddressAll = findByAddressAll;
|
|
102
|
+
/** Enforce writing subItems. Eg: user.name.blah will ensure all are set until the writing of the last item
|
|
103
|
+
* NOTE: doesn't work with arrays
|
|
104
|
+
*/
|
|
105
|
+
function objForceWrite(obj, addr, item) {
|
|
106
|
+
var chunks = addr.replace(/\.?\[(\d+)\]/g, '.[$1').split('.');
|
|
107
|
+
var lastItem = obj;
|
|
108
|
+
chunks.forEach(function (chunkRaw, i) {
|
|
109
|
+
var chunk = chunkRaw.replace(/^\[/, '');
|
|
110
|
+
if (i === chunks.length - 1)
|
|
111
|
+
lastItem[chunk] = item;
|
|
112
|
+
else if (!(0, isset_1.isset)(lastItem[chunk])) {
|
|
113
|
+
var nextChunk = chunks[i + 1];
|
|
114
|
+
if ((0, isset_1.isset)(nextChunk) && nextChunk.startsWith('['))
|
|
115
|
+
lastItem[chunk] = [];
|
|
116
|
+
else
|
|
117
|
+
lastItem[chunk] = {};
|
|
118
|
+
}
|
|
119
|
+
else if (typeof lastItem[chunk] !== 'object')
|
|
120
|
+
throw new error_handler_1.dataValidationUtilErrorHandler("itemNotTypeObjectOrArrayInAddrChainForObjForceWrite", 500, { origin: 'Validator', chunks: chunks, actualValueOfItem: lastItem[chunk], actualChunk: chunk });
|
|
121
|
+
lastItem = lastItem[chunk];
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
exports.objForceWrite = objForceWrite;
|
|
125
|
+
/** Enforce writing subItems, only if obj.addr is empty.
|
|
126
|
+
* Eg: user.name.blah will ensure all are set until the writing of the last item
|
|
127
|
+
* if user.name.blah has a value it will not change it.
|
|
128
|
+
* NOTE: doesn't work with arrays
|
|
129
|
+
*/
|
|
130
|
+
function objForceWriteIfNotSet(obj, addr, item) {
|
|
131
|
+
if (!(0, isset_1.isset)(findByAddress(obj, addr)))
|
|
132
|
+
return objForceWrite(obj, addr, item);
|
|
133
|
+
}
|
|
134
|
+
exports.objForceWriteIfNotSet = objForceWriteIfNotSet;
|
|
135
|
+
/** Merge mixins into class. Use it in the constructor like: mergeMixins(this, {myMixin: true}) */
|
|
136
|
+
function mergeMixins(that) {
|
|
137
|
+
var mixins = [];
|
|
138
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
139
|
+
mixins[_i - 1] = arguments[_i];
|
|
140
|
+
}
|
|
141
|
+
mixins.forEach(function (mixin) {
|
|
142
|
+
for (var method in mixin) {
|
|
143
|
+
that[method] = mixin[method];
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
exports.mergeMixins = mergeMixins;
|
|
148
|
+
function cloneObject(o) {
|
|
149
|
+
return JSON.parse(JSON.stringify(o));
|
|
150
|
+
}
|
|
151
|
+
exports.cloneObject = cloneObject;
|
|
152
|
+
/** Deep clone. WILL REMOVE circular references */
|
|
153
|
+
function deepClone(obj, cache) {
|
|
154
|
+
if (cache === void 0) { cache = []; }
|
|
155
|
+
var copy;
|
|
156
|
+
// usefull to not modify 1st level objet by lower levels
|
|
157
|
+
// this is required for the same object to be referenced not in a redundant way
|
|
158
|
+
var newCache = __spreadArray([], cache, true);
|
|
159
|
+
if (obj instanceof Date)
|
|
160
|
+
return new Date(obj);
|
|
161
|
+
// Handle Array
|
|
162
|
+
if (Array.isArray(obj)) {
|
|
163
|
+
if (newCache.includes(obj))
|
|
164
|
+
return [];
|
|
165
|
+
newCache.push(obj);
|
|
166
|
+
copy = [];
|
|
167
|
+
for (var i = 0, len = obj.length; i < len; i++) {
|
|
168
|
+
copy[i] = deepClone(obj[i], newCache);
|
|
169
|
+
}
|
|
170
|
+
return copy;
|
|
171
|
+
}
|
|
172
|
+
if (typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype) {
|
|
173
|
+
if (newCache.includes(obj))
|
|
174
|
+
return {};
|
|
175
|
+
newCache.push(obj);
|
|
176
|
+
copy = {};
|
|
177
|
+
for (var key in obj) {
|
|
178
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
179
|
+
copy[key] = deepClone(obj[key], newCache);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return copy;
|
|
183
|
+
}
|
|
184
|
+
return obj; // number, string...
|
|
185
|
+
}
|
|
186
|
+
exports.deepClone = deepClone;
|
|
187
|
+
/**
|
|
188
|
+
* @param {Object} obj the object on which we want to filter the keys
|
|
189
|
+
* @param {function} filterFunc function that returns true if the key match the wanted criteria
|
|
190
|
+
*/
|
|
191
|
+
function filterKeys(obj, filter) {
|
|
192
|
+
var clone = cloneObject(obj);
|
|
193
|
+
(0, loop_utils_1.recursiveGenericFunctionSync)(obj, function (item, addr, lastElementKey) {
|
|
194
|
+
if (!filter(lastElementKey))
|
|
195
|
+
deleteByAddress(clone, addr.split('.'));
|
|
196
|
+
});
|
|
197
|
+
return clone;
|
|
198
|
+
}
|
|
199
|
+
exports.filterKeys = filterKeys;
|
|
200
|
+
/**
|
|
201
|
+
* @param {Object} obj the object on which we want to delete a property
|
|
202
|
+
* @param {Array} addr addressArray on which to delete the property
|
|
203
|
+
*/
|
|
204
|
+
function deleteByAddress(obj, addr) {
|
|
205
|
+
var current = obj;
|
|
206
|
+
for (var i = 0; i < addr.length - 2; i++)
|
|
207
|
+
current = current[addr[i]];
|
|
208
|
+
delete current[addr[addr.length - 1]];
|
|
209
|
+
}
|
|
210
|
+
exports.deleteByAddress = deleteByAddress;
|
|
211
|
+
/** Remove all key/values pair if value is undefined */
|
|
212
|
+
function objFilterUndefined(o) {
|
|
213
|
+
Object.keys(o).forEach(function (k) { return !(0, isset_1.isset)(o[k]) && delete o[k]; });
|
|
214
|
+
return o;
|
|
215
|
+
}
|
|
216
|
+
exports.objFilterUndefined = objFilterUndefined;
|
|
217
|
+
/** Lock all 1st level props of an object to read only */
|
|
218
|
+
function readOnly(o) {
|
|
219
|
+
var throwErr = function () { throw new error_handler_1.dataValidationUtilErrorHandler('Cannot modify object that is read only', 500); };
|
|
220
|
+
return new Proxy(o, {
|
|
221
|
+
set: throwErr,
|
|
222
|
+
defineProperty: throwErr,
|
|
223
|
+
deleteProperty: throwErr,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
exports.readOnly = readOnly;
|
|
227
|
+
/** Fields of the object can be created BUT NOT reassignated */
|
|
228
|
+
function reassignForbidden(o) {
|
|
229
|
+
return new Proxy(o, {
|
|
230
|
+
defineProperty: function (that, key, value) {
|
|
231
|
+
if (key in that)
|
|
232
|
+
throw new error_handler_1.dataValidationUtilErrorHandler("Cannot reassign the property ".concat(key.toString(), " of this object"), 500);
|
|
233
|
+
else {
|
|
234
|
+
that[key] = value;
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
deleteProperty: function (_, key) {
|
|
239
|
+
throw new error_handler_1.dataValidationUtilErrorHandler("Cannot delete the property ".concat(key.toString(), " of this object"), 500);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
exports.reassignForbidden = reassignForbidden;
|
|
244
|
+
/** All fileds and subFields of the object will become readOnly */
|
|
245
|
+
function readOnlyForAll(object) {
|
|
246
|
+
(0, loop_utils_1.recursiveGenericFunctionSync)(object, function (item, _, lastElementKey, parent) {
|
|
247
|
+
if (typeof item === 'object')
|
|
248
|
+
parent[lastElementKey] = readOnly(item);
|
|
249
|
+
});
|
|
250
|
+
return object;
|
|
251
|
+
}
|
|
252
|
+
exports.readOnlyForAll = readOnlyForAll;
|
|
253
|
+
function objFilterUndefinedRecursive(obj) {
|
|
254
|
+
if (obj) {
|
|
255
|
+
var flattenedObj_1 = flattenObject(obj);
|
|
256
|
+
Object.keys(flattenedObj_1).forEach(function (key) {
|
|
257
|
+
if (!(0, isset_1.isset)(flattenedObj_1[key])) {
|
|
258
|
+
delete flattenedObj_1[key];
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
return unflattenObject(flattenedObj_1);
|
|
262
|
+
}
|
|
263
|
+
else
|
|
264
|
+
return obj;
|
|
265
|
+
}
|
|
266
|
+
exports.objFilterUndefinedRecursive = objFilterUndefinedRecursive;
|
|
267
|
+
function sortObjKeyAccordingToValue(unorderedObj, ascending) {
|
|
268
|
+
if (ascending === void 0) { ascending = true; }
|
|
269
|
+
var orderedObj = {};
|
|
270
|
+
var sortingConst = ascending ? 1 : -1;
|
|
271
|
+
Object.keys(unorderedObj)
|
|
272
|
+
.sort(function (keyA, keyB) { return unorderedObj[keyA] < unorderedObj[keyB] ? sortingConst : -sortingConst; })
|
|
273
|
+
.forEach(function (key) { orderedObj[key] = unorderedObj[key]; });
|
|
274
|
+
return orderedObj;
|
|
275
|
+
}
|
|
276
|
+
exports.sortObjKeyAccordingToValue = sortObjKeyAccordingToValue;
|
|
277
|
+
/**
|
|
278
|
+
* Make default value if object key do not exist
|
|
279
|
+
* @param {object} obj
|
|
280
|
+
* @param {string} addr
|
|
281
|
+
* @param {any} defaultValue
|
|
282
|
+
* @param {function} callback (obj[addr]) => processValue. Eg: myObjAddr => myObjAddr.push('bikou')
|
|
283
|
+
* @return obj[addr] eventually processed by the callback
|
|
284
|
+
*/
|
|
285
|
+
function ensureObjectProp(obj, addr, defaultValue, callback) {
|
|
286
|
+
if (callback === void 0) { callback = function (o) { return o; }; }
|
|
287
|
+
(0, error_utils_1.err500IfNotSet)({ obj: obj, addr: addr, defaultValue: defaultValue, callback: callback });
|
|
288
|
+
if (!(0, isset_1.isset)(obj[addr]))
|
|
289
|
+
obj[addr] = defaultValue;
|
|
290
|
+
callback(obj[addr]);
|
|
291
|
+
return obj[addr];
|
|
292
|
+
}
|
|
293
|
+
exports.ensureObjectProp = ensureObjectProp;
|
|
294
|
+
/** object and array merge
|
|
295
|
+
* @warn /!\ Array will be merged and duplicate values will be deleted /!\
|
|
296
|
+
* @return {Object} new object result from merge
|
|
297
|
+
* NOTE: objects in params will NOT be modified*/
|
|
298
|
+
function mergeDeep() {
|
|
299
|
+
var objects = [];
|
|
300
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
301
|
+
objects[_i] = arguments[_i];
|
|
302
|
+
}
|
|
303
|
+
return mergeDeepConfigurable.apply(void 0, __spreadArray([function (previousVal, currentVal) { return __spreadArray(__spreadArray([], previousVal, true), currentVal, true).filter(function (elm, i, arr) { return arr.indexOf(elm) === i; }); },
|
|
304
|
+
function (previousVal, currentVal) { return mergeDeep(previousVal, currentVal); },
|
|
305
|
+
undefined], objects, false));
|
|
306
|
+
}
|
|
307
|
+
exports.mergeDeep = mergeDeep;
|
|
308
|
+
/** object and array merge
|
|
309
|
+
* @warn /!\ Array will be replaced by the latest object /!\
|
|
310
|
+
* @return {Object} new object result from merge
|
|
311
|
+
* NOTE: objects in params will NOT be modified */
|
|
312
|
+
function mergeDeepOverrideArrays() {
|
|
313
|
+
var objects = [];
|
|
314
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
315
|
+
objects[_i] = arguments[_i];
|
|
316
|
+
}
|
|
317
|
+
return mergeDeepConfigurable.apply(void 0, __spreadArray([undefined,
|
|
318
|
+
function (previousVal, currentVal) { return mergeDeepOverrideArrays(previousVal, currentVal); },
|
|
319
|
+
undefined], objects, false));
|
|
320
|
+
}
|
|
321
|
+
exports.mergeDeepOverrideArrays = mergeDeepOverrideArrays;
|
|
322
|
+
/** object and array merge
|
|
323
|
+
* @param {Function} replacerForArrays item[key] = (prevValue, currentVal) => () When 2 values are arrays,
|
|
324
|
+
* @param {Function} replacerForObjects item[key] = (prevValue, currentVal) => () When 2 values are objects,
|
|
325
|
+
* @param {Function} replacerDefault item[key] = (prevValue, currentVal) => () For all other values
|
|
326
|
+
* @param {...Object} objects
|
|
327
|
+
* @return {Object} new object result from merge
|
|
328
|
+
* NOTE: objects in params will NOT be modified
|
|
329
|
+
*/
|
|
330
|
+
function mergeDeepConfigurable(replacerForArrays, replacerForObjects, replacerDefault) {
|
|
331
|
+
if (replacerForArrays === void 0) { replacerForArrays = function (prev, curr) { return curr; }; }
|
|
332
|
+
if (replacerDefault === void 0) { replacerDefault = function (prev, curr) { return curr; }; }
|
|
333
|
+
var objects = [];
|
|
334
|
+
for (var _i = 3; _i < arguments.length; _i++) {
|
|
335
|
+
objects[_i - 3] = arguments[_i];
|
|
336
|
+
}
|
|
337
|
+
return objects.reduce(function (actuallyMerged, obj) {
|
|
338
|
+
Object.keys(obj).forEach(function (key) {
|
|
339
|
+
var previousVal = actuallyMerged[key];
|
|
340
|
+
var currentVal = obj[key];
|
|
341
|
+
if (Array.isArray(previousVal) && Array.isArray(currentVal)) {
|
|
342
|
+
actuallyMerged[key] = replacerForArrays(previousVal, currentVal);
|
|
343
|
+
}
|
|
344
|
+
else if ((0, is_object_1.isObject)(previousVal) && (0, is_object_1.isObject)(currentVal)) {
|
|
345
|
+
actuallyMerged[key] = replacerForObjects(previousVal, currentVal);
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
actuallyMerged[key] = replacerDefault(previousVal, currentVal);
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
return actuallyMerged;
|
|
352
|
+
}, {});
|
|
353
|
+
}
|
|
354
|
+
exports.mergeDeepConfigurable = mergeDeepConfigurable;
|
|
355
|
+
/** { a: {b:2}} => {'a.b':2} useful for translations
|
|
356
|
+
* NOTE: will remove circular references
|
|
357
|
+
*/
|
|
358
|
+
function flattenObject(data, config) {
|
|
359
|
+
if (config === void 0) { config = {}; }
|
|
360
|
+
var _a = config.withoutArraySyntax, withoutArraySyntax = _a === void 0 ? false : _a, _b = config.withArraySyntaxMinified, withArraySyntaxMinified = _b === void 0 ? false : _b;
|
|
361
|
+
var result = {};
|
|
362
|
+
var seenObjects = []; // avoidCircular reference to infinite loop
|
|
363
|
+
var recurse = function (cur, prop) {
|
|
364
|
+
if (Array.isArray(cur)) {
|
|
365
|
+
var l = cur.length;
|
|
366
|
+
var i = 0;
|
|
367
|
+
if (withoutArraySyntax)
|
|
368
|
+
recurse(cur[0], prop);
|
|
369
|
+
else {
|
|
370
|
+
for (; i < l; i++)
|
|
371
|
+
recurse(cur[i], prop + (withArraySyntaxMinified ? ".".concat(i) : "[".concat(i, "]")));
|
|
372
|
+
if (l == 0)
|
|
373
|
+
result[prop] = [];
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
else if ((0, is_object_1.isObject)(cur)) { // is object
|
|
377
|
+
try {
|
|
378
|
+
if (seenObjects.includes(cur))
|
|
379
|
+
cur = deepClone(cur); // avoid circular ref but allow duplicate objects
|
|
380
|
+
else
|
|
381
|
+
seenObjects.push(cur);
|
|
382
|
+
var isEmpty = Object.keys(cur).length === 0;
|
|
383
|
+
for (var p in cur)
|
|
384
|
+
recurse(cur[p], (prop ? prop + '.' : '') + p.replace(/\./g, '%')); // allow prop to contain special chars like points);
|
|
385
|
+
if (isEmpty && prop)
|
|
386
|
+
result[prop] = {};
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
console.warn('Circular reference in flattenObject, impossible to parse');
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
else
|
|
393
|
+
result[prop] = cur;
|
|
394
|
+
};
|
|
395
|
+
recurse(data, '');
|
|
396
|
+
return result;
|
|
397
|
+
}
|
|
398
|
+
exports.flattenObject = flattenObject;
|
|
399
|
+
/** {'a.b':2} => { a: {b:2}} */
|
|
400
|
+
function unflattenObject(data) {
|
|
401
|
+
var newO = {};
|
|
402
|
+
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
|
403
|
+
var _b = _a[_i], addr = _b[0], value = _b[1];
|
|
404
|
+
objForceWrite(newO, addr, value);
|
|
405
|
+
}
|
|
406
|
+
return newO;
|
|
407
|
+
}
|
|
408
|
+
exports.unflattenObject = unflattenObject;
|
|
409
|
+
//# sourceMappingURL=object-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-utils.js","sourceRoot":"","sources":["../../src/object-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Color } from './types';
|
|
2
|
+
export declare type Config = {
|
|
3
|
+
env: string;
|
|
4
|
+
isProd: boolean;
|
|
5
|
+
nbOfLogsToKeep: number;
|
|
6
|
+
customTypes: object;
|
|
7
|
+
preprocessLog?: Function;
|
|
8
|
+
terminal: {
|
|
9
|
+
noColor: boolean;
|
|
10
|
+
theme: {
|
|
11
|
+
primary: Color;
|
|
12
|
+
shade1: Color;
|
|
13
|
+
shade2: Color;
|
|
14
|
+
bgColor?: Color;
|
|
15
|
+
paddingX: number;
|
|
16
|
+
paddingY: number;
|
|
17
|
+
fontColor?: Color;
|
|
18
|
+
pageWidth: number;
|
|
19
|
+
debugModeColor: Color;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
/** Allow dynamic changing of config */
|
|
24
|
+
export declare function configFn(): Config;
|
|
25
|
+
/** Register custom config
|
|
26
|
+
* @param {object} customConfig { 'email': email => /.+@.+/.test(email), type2 : myTestFunction() }
|
|
27
|
+
* * env: 'development',
|
|
28
|
+
* * customTypes: {},
|
|
29
|
+
* * terminal: {
|
|
30
|
+
* * noColor: false, // disable colored escape sequences like /mOO35...etc
|
|
31
|
+
* * theme: {
|
|
32
|
+
* * primary: [61, 167, 32], // main color (title font)
|
|
33
|
+
* * shade1: [127, 192, 39], // gradient shade 1
|
|
34
|
+
* * shade2: [194, 218, 47], // gradient shade 2
|
|
35
|
+
* * bgColor: false, // background color
|
|
36
|
+
* * paddingX: 2, // nb spaces added before an outputted str
|
|
37
|
+
* * paddingY: 2, //
|
|
38
|
+
* * fontColor: false, // default font color
|
|
39
|
+
* * pageWidth: 53, // page size in character
|
|
40
|
+
* * debugModeColor: [147, 212, 6], // usually orange
|
|
41
|
+
* * }
|
|
42
|
+
* * },
|
|
43
|
+
*/
|
|
44
|
+
export declare function registerConfig(customConfig: any): void;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.registerConfig = exports.configFn = void 0;
|
|
15
|
+
var isset_1 = require("../isset");
|
|
16
|
+
var config = {
|
|
17
|
+
env: 'development',
|
|
18
|
+
isProd: false,
|
|
19
|
+
nbOfLogsToKeep: 25,
|
|
20
|
+
customTypes: {},
|
|
21
|
+
terminal: {
|
|
22
|
+
noColor: false,
|
|
23
|
+
theme: {
|
|
24
|
+
primary: [0, 149, 250],
|
|
25
|
+
shade1: [0, 90, 250],
|
|
26
|
+
shade2: [0, 208, 245],
|
|
27
|
+
paddingX: 2,
|
|
28
|
+
paddingY: 2,
|
|
29
|
+
pageWidth: 53,
|
|
30
|
+
debugModeColor: [201, 27, 169],
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
/** Allow dynamic changing of config */
|
|
35
|
+
function configFn() { return config; }
|
|
36
|
+
exports.configFn = configFn;
|
|
37
|
+
/** Register custom config
|
|
38
|
+
* @param {object} customConfig { 'email': email => /.+@.+/.test(email), type2 : myTestFunction() }
|
|
39
|
+
* * env: 'development',
|
|
40
|
+
* * customTypes: {},
|
|
41
|
+
* * terminal: {
|
|
42
|
+
* * noColor: false, // disable colored escape sequences like /mOO35...etc
|
|
43
|
+
* * theme: {
|
|
44
|
+
* * primary: [61, 167, 32], // main color (title font)
|
|
45
|
+
* * shade1: [127, 192, 39], // gradient shade 1
|
|
46
|
+
* * shade2: [194, 218, 47], // gradient shade 2
|
|
47
|
+
* * bgColor: false, // background color
|
|
48
|
+
* * paddingX: 2, // nb spaces added before an outputted str
|
|
49
|
+
* * paddingY: 2, //
|
|
50
|
+
* * fontColor: false, // default font color
|
|
51
|
+
* * pageWidth: 53, // page size in character
|
|
52
|
+
* * debugModeColor: [147, 212, 6], // usually orange
|
|
53
|
+
* * }
|
|
54
|
+
* * },
|
|
55
|
+
*/
|
|
56
|
+
function registerConfig(customConfig) {
|
|
57
|
+
if (!(0, isset_1.isset)(customConfig.terminal))
|
|
58
|
+
customConfig.terminal = {};
|
|
59
|
+
var newconfig = __assign(__assign({}, config), customConfig);
|
|
60
|
+
newconfig.terminal = __assign(__assign({}, config.terminal), customConfig.terminal);
|
|
61
|
+
newconfig.terminal.theme = __assign(__assign({}, config.terminal.theme), (customConfig.terminal.theme || {}));
|
|
62
|
+
config = newconfig;
|
|
63
|
+
config.isProd = config.env.includes('prod');
|
|
64
|
+
}
|
|
65
|
+
exports.registerConfig = registerConfig;
|
|
66
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/private/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,kCAAgC;AAwBhC,IAAI,MAAM,GAAW;IACjB,GAAG,EAAE,aAAa;IAClB,MAAM,EAAE,KAAK;IACb,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE;QACN,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACH,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;YACtB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;YACrB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,EAAE;YACb,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;SACjC;KACJ;CACJ,CAAA;AAED,uCAAuC;AACvC,SAAgB,QAAQ,KAAK,OAAO,MAAM,CAAA,CAAC,CAAC;AAA5C,4BAA4C;AAG5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,cAAc,CAAC,YAAY;IACvC,IAAI,CAAC,IAAA,aAAK,EAAC,YAAY,CAAC,QAAQ,CAAC;QAAE,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAA;IAC7D,IAAM,SAAS,yBACR,MAAM,GACN,YAAY,CAClB,CAAA;IACD,SAAS,CAAC,QAAQ,yBACX,MAAM,CAAC,QAAQ,GACf,YAAY,CAAC,QAAQ,CAC3B,CAAA;IACD,SAAS,CAAC,QAAQ,CAAC,KAAK,yBACjB,MAAM,CAAC,QAAQ,CAAC,KAAK,GACrB,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CACzC,CAAA;IACD,MAAM,GAAG,SAAS,CAAA;IAElB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC/C,CAAC;AAjBD,wCAiBC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.dataValidationUtilErrorHandler = void 0;
|
|
30
|
+
var dataValidationUtilErrorHandler = /** @class */ (function (_super) {
|
|
31
|
+
__extends(dataValidationUtilErrorHandler, _super);
|
|
32
|
+
function dataValidationUtilErrorHandler(msg, code, extraInfos) {
|
|
33
|
+
var _this = _super.call(this, msg) || this;
|
|
34
|
+
_this.message = msg;
|
|
35
|
+
_this.msg = msg;
|
|
36
|
+
_this.name = "".concat(code, " ").concat(msg);
|
|
37
|
+
_this.fromDataValidation = true; // will be catched by express error handler
|
|
38
|
+
_this.code = code;
|
|
39
|
+
_this.extraInfos = extraInfos;
|
|
40
|
+
_this.errorDescription = __assign({ msg: msg, code: code }, extraInfos);
|
|
41
|
+
return _this;
|
|
42
|
+
}
|
|
43
|
+
return dataValidationUtilErrorHandler;
|
|
44
|
+
}(Error));
|
|
45
|
+
exports.dataValidationUtilErrorHandler = dataValidationUtilErrorHandler;
|
|
46
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/private/error-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;IAAoD,kDAAK;IAMrD,wCAAY,GAAG,EAAE,IAAI,EAAE,UAAW;QAAlC,YACI,kBAAM,GAAG,CAAC,SAYb;QAXG,KAAI,CAAC,OAAO,GAAG,GAAG,CAAA;QAClB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,KAAI,CAAC,IAAI,GAAG,UAAG,IAAI,cAAI,GAAG,CAAE,CAAA;QAC5B,KAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA,CAAC,2CAA2C;QAC1E,KAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,KAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,KAAI,CAAC,gBAAgB,cACjB,GAAG,KAAA,EACH,IAAI,MAAA,IACD,UAAU,CAChB,CAAA;;IACL,CAAC;IACL,qCAAC;AAAD,CAAC,AApBD,CAAoD,KAAK,GAoBxD;AApBY,wEAA8B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/private/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function escapeRegexp(str: string, config?: {
|
|
2
|
+
parseStarChar?: boolean;
|
|
3
|
+
}): string;
|
|
4
|
+
/** Get first match of the first capturing group of regexp
|
|
5
|
+
* Eg: const basePath = firstMatch(apiFile, /basePath = '(.*?)'/); will get what is inside quotes
|
|
6
|
+
*/
|
|
7
|
+
export declare function firstMatch(str: string, regExp: RegExp): string | undefined;
|
|
8
|
+
/** Get all matches from regexp with g flag
|
|
9
|
+
* Eg: [ [full, match1, m2], [f, m1, m2]... ]
|
|
10
|
+
* NOTE: the G flag will be appended to regexp
|
|
11
|
+
*/
|
|
12
|
+
export declare function allMatches(str: string, reg: RegExp): string[];
|