aztec
Version:
Node Js Framework for creating API Services
107 lines (95 loc) • 2.21 kB
text/typescript
import { last } from 'lodash';
import { Handler } from '../handler.class';
/**
* @example ( //user to /user ) or ( /user/ to /user )
* @param url
* @return {string}
*/
export function slashValid(url: string): string {
if (url[0] === '/' && url[1] === '/') url = url.slice(1);
if (url.length > 1 && last(url) === '/') {
return url.substring(0, url.length - 1);
} else {
return url;
}
}
/**
* @example ( /user to user ) or ( user/ to user )
* @param url
* @return {string}
*/
export function slashUnwrap(url: string): string {
return url.replace('/', '');
}
/**
* @example ( /user to /user/ ) or ( user/ to /user/ )
* @param url
* @return {string}
*/
export function slashWrap(url: string): string {
if (url[0] !== '/' && last(url) === '/') {
return `/${url}`;
} else if (url[0] === '/' && last(url) !== '/') {
return `${url}/`;
}
return url;
}
/**
* @example ( user to /user ) or ( user/ to /user )
* @param url
* @return {string}
*/
export function slashAdd(url: string): string {
let pattern = `/${url}`;
if (url.indexOf('/') && last(url) === '/') {
return pattern;
} else if (url.indexOf('/')) {
return pattern;
} else {
return url;
}
}
/**
* @description wait for all components
* @param description
* @param callback
* @param delay
*/
export function wait(description: string, callback: any, delay: number = 0): string {
setTimeout(() => {
callback();
}, delay);
return description;
}
/**
* @example "73453021571897729"
* @return {string}
*/
export function generateId(): string {
return Math.random().toString().slice(2);
}
/**
* @description try to require default
* @param path
* @return {any}
*/
export function tryDefault(path: string) {
try {
return require(path).default;
} catch(err) {
Handler.warning(`${path} has no export default. Require without "default" can lead to errors.`);
return require(path);
}
}
/**
* @description drop if not exists "export default"
* @param path
* @return {any}
*/
export function dropIfNotDefault(path: string) {
try {
return require(path).default;
} catch(err) {
Handler.error(`${path} has no "export default".`);
}
}