@leav/utils 0.0.1

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 (84) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/MIMEByExtension.json +806 -0
  3. package/dist/cjs/constants.d.ts +2 -0
  4. package/dist/cjs/constants.js +9 -0
  5. package/dist/cjs/constants.js.map +1 -0
  6. package/dist/cjs/index.d.ts +11 -0
  7. package/dist/cjs/index.js +31 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/types/applications.d.ts +1 -0
  10. package/dist/cjs/types/applications.js +8 -0
  11. package/dist/cjs/types/applications.js.map +1 -0
  12. package/dist/cjs/types/attributes.d.ts +7 -0
  13. package/dist/cjs/types/attributes.js +12 -0
  14. package/dist/cjs/types/attributes.js.map +1 -0
  15. package/dist/cjs/types/errors.d.ts +5 -0
  16. package/dist/cjs/types/errors.js +13 -0
  17. package/dist/cjs/types/errors.js.map +1 -0
  18. package/dist/cjs/types/events.d.ts +75 -0
  19. package/dist/cjs/types/events.js +37 -0
  20. package/dist/cjs/types/events.js.map +1 -0
  21. package/dist/cjs/types/files.d.ts +16 -0
  22. package/dist/cjs/types/files.js +15 -0
  23. package/dist/cjs/types/files.js.map +1 -0
  24. package/dist/cjs/types/forms.d.ts +50 -0
  25. package/dist/cjs/types/forms.js +28 -0
  26. package/dist/cjs/types/forms.js.map +1 -0
  27. package/dist/cjs/types/helpers.d.ts +14 -0
  28. package/dist/cjs/types/helpers.js +3 -0
  29. package/dist/cjs/types/helpers.js.map +1 -0
  30. package/dist/cjs/types/logs.d.ts +2 -0
  31. package/dist/cjs/types/logs.js +3 -0
  32. package/dist/cjs/types/logs.js.map +1 -0
  33. package/dist/cjs/types/previews.d.ts +5 -0
  34. package/dist/cjs/types/previews.js +13 -0
  35. package/dist/cjs/types/previews.js.map +1 -0
  36. package/dist/cjs/types/values.d.ts +4 -0
  37. package/dist/cjs/types/values.js +3 -0
  38. package/dist/cjs/types/values.js.map +1 -0
  39. package/dist/cjs/utils.d.ts +68 -0
  40. package/dist/cjs/utils.js +322 -0
  41. package/dist/cjs/utils.js.map +1 -0
  42. package/dist/esm/MIMEByExtension.json +806 -0
  43. package/dist/esm/constants.d.ts +2 -0
  44. package/dist/esm/constants.js +6 -0
  45. package/dist/esm/constants.js.map +1 -0
  46. package/dist/esm/index.d.ts +11 -0
  47. package/dist/esm/index.js +15 -0
  48. package/dist/esm/index.js.map +1 -0
  49. package/dist/esm/types/applications.d.ts +1 -0
  50. package/dist/esm/types/applications.js +5 -0
  51. package/dist/esm/types/applications.js.map +1 -0
  52. package/dist/esm/types/attributes.d.ts +7 -0
  53. package/dist/esm/types/attributes.js +9 -0
  54. package/dist/esm/types/attributes.js.map +1 -0
  55. package/dist/esm/types/errors.d.ts +5 -0
  56. package/dist/esm/types/errors.js +10 -0
  57. package/dist/esm/types/errors.js.map +1 -0
  58. package/dist/esm/types/events.d.ts +75 -0
  59. package/dist/esm/types/events.js +34 -0
  60. package/dist/esm/types/events.js.map +1 -0
  61. package/dist/esm/types/files.d.ts +16 -0
  62. package/dist/esm/types/files.js +12 -0
  63. package/dist/esm/types/files.js.map +1 -0
  64. package/dist/esm/types/forms.d.ts +50 -0
  65. package/dist/esm/types/forms.js +25 -0
  66. package/dist/esm/types/forms.js.map +1 -0
  67. package/dist/esm/types/helpers.d.ts +14 -0
  68. package/dist/esm/types/helpers.js +2 -0
  69. package/dist/esm/types/helpers.js.map +1 -0
  70. package/dist/esm/types/logs.d.ts +2 -0
  71. package/dist/esm/types/logs.js +2 -0
  72. package/dist/esm/types/logs.js.map +1 -0
  73. package/dist/esm/types/previews.d.ts +5 -0
  74. package/dist/esm/types/previews.js +10 -0
  75. package/dist/esm/types/previews.js.map +1 -0
  76. package/dist/esm/types/values.d.ts +4 -0
  77. package/dist/esm/types/values.js +2 -0
  78. package/dist/esm/types/values.js.map +1 -0
  79. package/dist/esm/utils.d.ts +68 -0
  80. package/dist/esm/utils.js +272 -0
  81. package/dist/esm/utils.js.map +1 -0
  82. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  83. package/dist/tsconfig.tsbuildinfo +1 -0
  84. package/package.json +38 -0
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.omit = exports.isTypeStandard = exports.isTypeLink = exports.waitFor = exports.getLogsIndexName = exports.getFlagByLang = exports.simpleStringHash = exports.slugifyString = exports._getInitialEngine = exports.getInitials = exports.getCallStack = exports.getFileType = exports.nameValArrayToObj = exports.objectToNameValueArray = exports.extractArgsFromString = exports.getInvertColor = exports.stringToColor = exports.localizedTranslation = exports.isFileAllowed = exports.getGraphqlQueryNameFromLibraryName = exports.getGraphqlTypeFromLibraryName = void 0;
30
+ // Copyright LEAV Solutions 2017
31
+ // This file is released under LGPL V3
32
+ // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
33
+ const camelCase_1 = __importDefault(require("lodash/camelCase"));
34
+ const flow_1 = __importDefault(require("lodash/flow"));
35
+ const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
36
+ const partialRight_1 = __importDefault(require("lodash/partialRight"));
37
+ const trimEnd_1 = __importDefault(require("lodash/trimEnd"));
38
+ const upperFirst_1 = __importDefault(require("lodash/upperFirst"));
39
+ const minimatch_1 = __importDefault(require("minimatch"));
40
+ const extensions = __importStar(require("./MIMEByExtension.json"));
41
+ const attributes_1 = require("./types/attributes");
42
+ const files_1 = require("./types/files");
43
+ const getGraphqlTypeFromLibraryName = (library) => {
44
+ return (0, flow_1.default)([camelCase_1.default, upperFirst_1.default, trimEnd_1.default, (0, partialRight_1.default)(trimEnd_1.default, 's')])(library);
45
+ };
46
+ exports.getGraphqlTypeFromLibraryName = getGraphqlTypeFromLibraryName;
47
+ const getGraphqlQueryNameFromLibraryName = (library) => {
48
+ return (0, flow_1.default)([camelCase_1.default, trimEnd_1.default])(library);
49
+ };
50
+ exports.getGraphqlQueryNameFromLibraryName = getGraphqlQueryNameFromLibraryName;
51
+ const isFileAllowed = (fsPath, allowList, ignoreList, filePath) => {
52
+ // if allowPatterns is empty it's an implicit allow of all files
53
+ if (!allowList.length) {
54
+ allowList = ['**'];
55
+ }
56
+ const isAllowed = allowList.some(pattern => (0, minimatch_1.default)(filePath, `${fsPath}/${pattern}`));
57
+ const isIgnored = ignoreList.some(pattern => (0, minimatch_1.default)(filePath, `${fsPath}/${pattern}`));
58
+ return !isIgnored && isAllowed;
59
+ };
60
+ exports.isFileAllowed = isFileAllowed;
61
+ const localizedTranslation = (translations, availableLanguages) => {
62
+ if (!translations) {
63
+ return '';
64
+ }
65
+ const userLang = availableLanguages[0];
66
+ const fallbackLang = availableLanguages[1] ? availableLanguages[1] : '';
67
+ return translations[userLang] || translations[fallbackLang] || translations[Object.keys(translations)[0]] || '';
68
+ };
69
+ exports.localizedTranslation = localizedTranslation;
70
+ /**
71
+ *
72
+ * @param str
73
+ * @param format 'hsl' || 'rgb' || 'hex'
74
+ * @param saturation in percent, default to 30
75
+ * @param luminosity in percent, default to 80
76
+ */
77
+ const stringToColor = (str = '', format = 'hsl', saturation = 30, luminosity = 80) => {
78
+ let hash = 0;
79
+ for (let i = 0; i < (str !== null && str !== void 0 ? str : '').length; i++) {
80
+ // eslint-disable-next-line no-bitwise
81
+ hash = str.charCodeAt(i) + ((hash << 5) - hash);
82
+ }
83
+ const hue = hash % 360;
84
+ switch (format) {
85
+ case 'hex':
86
+ return _hslToHex(hue, saturation, luminosity);
87
+ case 'rgb':
88
+ const [r, g, b] = _hslToRgb(hue, saturation, luminosity);
89
+ return `rgb(${r},${g},${b})`;
90
+ case 'hsl':
91
+ return `hsl(${hue}, ${saturation}%, ${luminosity}%)`;
92
+ default:
93
+ return `hsl(${hue}, ${saturation}%, ${luminosity}%)`;
94
+ }
95
+ };
96
+ exports.stringToColor = stringToColor;
97
+ const _hue2rgb = (p, q, t) => {
98
+ if (t < 0) {
99
+ t += 1;
100
+ }
101
+ if (t > 1) {
102
+ t -= 1;
103
+ }
104
+ if (t < 1 / 6) {
105
+ return p + (q - p) * 6 * t;
106
+ }
107
+ if (t < 1 / 2) {
108
+ return q;
109
+ }
110
+ if (t < 2 / 3) {
111
+ return p + (q - p) * (2 / 3 - t) * 6;
112
+ }
113
+ return p;
114
+ };
115
+ const _hslToHex = (h, s, l) => {
116
+ const [r, g, b] = _hslToRgb(h, s, l);
117
+ const _toHex = (x) => {
118
+ const hex = x.toString(16);
119
+ return hex.length === 1 ? '0' + hex : hex;
120
+ };
121
+ return `#${_toHex(r)}${_toHex(g)}${_toHex(b)}`;
122
+ };
123
+ const _hslToRgb = (h, s, l) => {
124
+ h /= 360;
125
+ s /= 100;
126
+ l /= 100;
127
+ let r;
128
+ let g;
129
+ let b;
130
+ if (s === 0) {
131
+ r = g = b = l; // achromatic
132
+ }
133
+ else {
134
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
135
+ const p = 2 * l - q;
136
+ r = _hue2rgb(p, q, h + 1 / 3);
137
+ g = _hue2rgb(p, q, h);
138
+ b = _hue2rgb(p, q, h - 1 / 3);
139
+ }
140
+ return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
141
+ };
142
+ const getInvertColor = (color) => {
143
+ const hexcolor = color.replace(/#/g, '');
144
+ const r = parseInt(hexcolor.substr(0, 2), 16);
145
+ const g = parseInt(hexcolor.substr(2, 2), 16);
146
+ const b = parseInt(hexcolor.substr(4, 2), 16);
147
+ const yiq = (r * 299 + g * 587 + b * 114) / 1000;
148
+ return yiq >= 128 ? '#000000' : '#FFFFFF';
149
+ };
150
+ exports.getInvertColor = getInvertColor;
151
+ /**
152
+ * Parse string to extract args.
153
+ * Arg is a string with format:
154
+ * -[argName] argValue
155
+ *
156
+ * eg. "-library product -type link" => {library: product, type: link}
157
+ * @param mapping
158
+ */
159
+ const extractArgsFromString = (mapping) => {
160
+ const args = mapping
161
+ .split('-')
162
+ .slice(1)
163
+ .map(e => e.replace(/\s+/g, ' ').trim().split(' '));
164
+ return args.reduce((acc, value) => { var _a; return (Object.assign(Object.assign({}, acc), { [value[0]]: (_a = value[1]) !== null && _a !== void 0 ? _a : true })); }, {});
165
+ };
166
+ exports.extractArgsFromString = extractArgsFromString;
167
+ const objectToNameValueArray = (obj) => {
168
+ return Object.keys(obj !== null && obj !== void 0 ? obj : {}).map(key => ({ name: key, value: obj[key] }));
169
+ };
170
+ exports.objectToNameValueArray = objectToNameValueArray;
171
+ const nameValArrayToObj = (arr = [], keyFieldName = 'name', valueFieldName = 'value') => {
172
+ return Array.isArray(arr) && arr.length
173
+ ? arr.reduce((formattedElem, elem) => {
174
+ formattedElem[elem[keyFieldName]] = elem[valueFieldName];
175
+ return formattedElem;
176
+ }, {})
177
+ : null;
178
+ };
179
+ exports.nameValArrayToObj = nameValArrayToObj;
180
+ const getFileType = (fileName) => {
181
+ if (!fileName) {
182
+ return null;
183
+ }
184
+ const extension = fileName.slice(fileName.lastIndexOf('.') + 1).toLowerCase();
185
+ if (!extensions[extension]) {
186
+ return files_1.FileType.OTHER;
187
+ }
188
+ const type = extensions[extension].type;
189
+ return type;
190
+ };
191
+ exports.getFileType = getFileType;
192
+ /**
193
+ * Return a simplified call stack (for the function who called this function, not this one, obviously)
194
+ *
195
+ * @param depth Number of calls to return
196
+ */
197
+ const getCallStack = (depth = 2) => {
198
+ const callersStartDepth = 3;
199
+ const callers = new Error().stack.split('\n').slice(callersStartDepth, callersStartDepth + depth);
200
+ return callers.map(c => c.trim().split(' ').splice(1).join(' @ '));
201
+ };
202
+ exports.getCallStack = getCallStack;
203
+ const getInitials = (label, length = 2) => {
204
+ if (typeof label !== 'string' || (0, isEmpty_1.default)(label.trim()) || length < 1) {
205
+ return '?';
206
+ }
207
+ const words = label.split(' ');
208
+ /* Setting up the list of word by using a regex according to the label sent
209
+ if the label contains letters & numbers, filter only on these letters
210
+ if the label contains only numbers, filter only on these numbers
211
+ symbols are ignored by the regex
212
+ if both list filtered by the regex are null, using the basic filter and split the label by space
213
+ */
214
+ const letterRegex = new RegExp(/[A-Za-z]+/g);
215
+ const numberRegex = new RegExp(/[1-9]+/g);
216
+ const wordsRegex = label.match(letterRegex) ? label.match(letterRegex) : label.match(numberRegex);
217
+ return wordsRegex !== null ? (0, exports._getInitialEngine)(wordsRegex, length) : (0, exports._getInitialEngine)(words, length);
218
+ };
219
+ exports.getInitials = getInitials;
220
+ const _getInitialEngine = (words, length) => {
221
+ let initials = '';
222
+ if (words.length === 1) {
223
+ initials = words[0].slice(0, length);
224
+ }
225
+ else {
226
+ //the number of initial to display cannot exceed the number of words filtered
227
+ if (words.length < length) {
228
+ length = words.length;
229
+ }
230
+ for (let index = 0; index < length; index++) {
231
+ initials = initials + words[index].charAt(0);
232
+ }
233
+ }
234
+ return initials.toUpperCase();
235
+ };
236
+ exports._getInitialEngine = _getInitialEngine;
237
+ /**
238
+ * Format an ID: remove accents, any special characters, replace spaces by underscore and make sure there is no double underscore
239
+ *
240
+ * @param id
241
+ * @returns formatted ID
242
+ */
243
+ const slugifyString = (id, separator = '_') => {
244
+ return id
245
+ .normalize('NFD') // Decompose the string in the base and the accents
246
+ .toLowerCase() // Lowercase the string
247
+ .replace(/[\u0300-\u036f]/g, '') // Remove accents
248
+ .replace(/[^a-zA-Z0-9\s]/g, separator) // Transform any special character into an underscore
249
+ .trim() // Remove spaces at the beginning and the end
250
+ .replace(/\s/g, separator) // Replace spaces by underscore
251
+ .replace(new RegExp(`${separator}${separator}+`, 'g'), separator) // Remove double underscores
252
+ .replace(new RegExp(`${separator}$`, 'g'), '') // Remove separator at the end
253
+ .replace(new RegExp(`^${separator}`, 'g'), ''); // Remove underscore at the beginning
254
+ };
255
+ exports.slugifyString = slugifyString;
256
+ /**
257
+ * Returns a hash code from a string
258
+ * @param {String} str The string to hash.
259
+ * @return {Number} A 32bit integer
260
+ */
261
+ const simpleStringHash = (str) => {
262
+ let hash = 0;
263
+ for (let i = 0, len = str.length; i < len; i++) {
264
+ const chr = str.charCodeAt(i);
265
+ // eslint-disable-next-line no-bitwise
266
+ hash = (hash << 5) - hash + chr;
267
+ // eslint-disable-next-line no-bitwise
268
+ hash |= 0; // Convert to 32bit integer
269
+ }
270
+ return Math.abs(hash);
271
+ };
272
+ exports.simpleStringHash = simpleStringHash;
273
+ const getFlagByLang = (lang) => {
274
+ var _a;
275
+ const flagsByLang = {
276
+ en: '🇬🇧',
277
+ es: '🇪🇸',
278
+ fr: '🇫🇷',
279
+ de: '🇩🇪',
280
+ zh: '🇨🇳',
281
+ ru: '🇷🇺',
282
+ pt: '🇵🇹',
283
+ ja: '🇯🇵',
284
+ ko: '🇰🇷' // Korean
285
+ };
286
+ return (_a = flagsByLang[lang]) !== null && _a !== void 0 ? _a : '';
287
+ };
288
+ exports.getFlagByLang = getFlagByLang;
289
+ const getLogsIndexName = (instanceId) => {
290
+ return `logs-${instanceId}`;
291
+ };
292
+ exports.getLogsIndexName = getLogsIndexName;
293
+ const waitFor = async (predicate, options = {}) => {
294
+ const { timeout = 5000, interval = 250 } = options;
295
+ const startTime = Date.now();
296
+ while (!(await predicate())) {
297
+ if (Date.now() - startTime > timeout) {
298
+ throw new Error('Timeout expired');
299
+ }
300
+ await new Promise(resolve => setTimeout(resolve, interval));
301
+ }
302
+ return true;
303
+ };
304
+ exports.waitFor = waitFor;
305
+ const isTypeLink = (type) => {
306
+ return type === attributes_1.AttributeType.simple_link || type === attributes_1.AttributeType.advanced_link;
307
+ };
308
+ exports.isTypeLink = isTypeLink;
309
+ const isTypeStandard = (type) => {
310
+ return type === attributes_1.AttributeType.simple || type === attributes_1.AttributeType.advanced;
311
+ };
312
+ exports.isTypeStandard = isTypeStandard;
313
+ /**
314
+ * Return a new object without the keys passed in parameter
315
+ */
316
+ const omit = (obj, ...keys) => {
317
+ const result = Object.assign({}, obj);
318
+ keys.forEach(key => delete result[key]);
319
+ return result;
320
+ };
321
+ exports.omit = omit;
322
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}