You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/server/lib/utils.ts

73 lines
1.6 KiB
TypeScript

import randomString from 'crypto-random-string';
import _ from 'lodash';
/**
*
* @param email
* @returns
*/
export function getEmailAddress(email: string) {
return email.split('@')[0];
}
/**
*
* @param length
*/
export function generateRandomStr(length = 10): string {
return randomString({ length });
}
export function generateRandomNumStr(length = 6) {
return randomString({
length,
type: 'numeric',
});
}
/**
*
*
*/
export function isValidStr(str: unknown): str is string {
return typeof str == 'string' && str !== '';
}
/**
*
*/
export function isValidStaticAssetsUrl(str: unknown): str is string {
if (typeof str !== 'string') {
return false;
}
const filename = _.last(str.split('/'));
if (filename.indexOf('.') === -1) {
return false;
}
return true;
}
/**
*
*/
export function sleep(ms: number): Promise<void> {
return new Promise((resolve) =>
setTimeout(() => {
resolve();
}, ms)
);
}
/**
* url
*/
export function checkPathMatch(urlList: string[], url: string): boolean {
const fuzzList = urlList.map((url) => url.replaceAll('/', '.'));
const fuzzUrl = url.split('?')[0].replaceAll('/', '.');
// 考虑到serviceName中间可能会有. 且注册的时候不可能把所有情况都列出来,因此进行模糊处理
return fuzzList.includes(fuzzUrl);
}