| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import crypto from 'crypto'
- const StringUtils = {
- /**
- * Normalise une chaine de caractères en retirant la casse et les caractères spéciaux, à des fins de recherche
- * par exemple
- * @param s
- */
- normalize(s: string): string {
- return s
- .toLowerCase()
- .replace(/[éèẽëêēĕėęě]/g, 'e')
- .replace(/[çćĉċč]/g, 'c')
- .replace(/[îïĩìíīĭ]/g, 'i')
- .replace(/[àãâåáäāăą]/g, 'a')
- .replace(/[ĝğġģ]/g, 'g')
- .replace(/[ħĥ]/g, 'h')
- .replace(/[öôõó]/g, 'o')
- .replace(/[ûüũùú]/g, 'u')
- .replace(/[š]/g, 's')
- .replace(/[ÿý]/g, 'y')
- .replace(/[ž]/g, 'z')
- .replace(/-/g, ' ')
- .trim()
- },
- /**
- * Convertit le paramètre d'entrée en entier
- * A la différence de parseInt, cette méthode accepte aussi les nombres.
- * @param s
- */
- parseInt(s: string | number) {
- return typeof s === 'number' ? s : parseInt(s)
- },
- /**
- * Hash une chaine de caractères avec l'algorithme demandé
- *
- * @param input
- * @param algorithm
- */
- async hash(input: string, algorithm: string = 'SHA-256') {
- const textAsBuffer = new TextEncoder().encode(input)
- const isNode =
- typeof process !== 'undefined' &&
- process.versions != null &&
- process.versions.node != null
- const cryptoLib = isNode ? crypto : window.crypto
- const hashBuffer = await cryptoLib.subtle.digest(algorithm, textAsBuffer)
- const hashArray = Array.from(new Uint8Array(hashBuffer))
- return hashArray.map((item) => item.toString(16).padStart(2, '0')).join('')
- }
- }
- export default StringUtils
|