@faisalrmdhn08/allin-cli
Version:
A modern full-stack CLI tool based on Typescript designed to accelerate your app development process — setup your entire stack in one seamless command.
79 lines • 2.42 kB
JavaScript
export const __titleCase = (s) => (s.charAt(0).toLocaleUpperCase('en-US') +
s.slice(1).toLocaleLowerCase('en-US'));
export const __renewProjectName = (s) => {
const trimmed = s.trim().replace(/^[^a-zA-Z0-9]+/, '');
const result = trimmed.includes(' ')
? trimmed.toLocaleLowerCase('en-US').split(' ').join('-')
: trimmed
.split(/(?=[A-Z])|[.\-_]/)
.filter(Boolean)
.join('-')
.toLocaleLowerCase('en-US');
return result;
};
export const __detectProjectTypeFromInput = (s) => {
const words = s
.toLowerCase()
.split(/(?=[A-Z])|[.\-_\s]/)
.filter(Boolean);
if (words.includes('backend'))
return 'backend';
if (words.includes('frontend'))
return 'frontend';
return null;
};
export const __renewStringIntoTitleCase = (s) => {
return s
.split(' ')
.map((a) => __titleCase(a))
.join(' ');
};
export const __renewStringsIntoTitleCase = (s) => {
return s.map((a) => {
return a
.split(' ')
.map((b) => __titleCase(b))
.join(' ');
});
};
export function __sanitizeProjectName(raw, maxLen = 70) {
if (!raw)
return '';
let str = raw.normalize('NFKC').trim();
str = str.replace(/[\x00-\x1F\x7F]/g, '');
str = str.replace(/\s+/g, '-');
str = str.toLowerCase().slice(0, maxLen);
str = str.replace(/[^a-z0-9_-]+/g, '');
str = str.replace(/^[^a-z0-9]+|[^a-z0-9]+$/g, '');
return str;
}
export function __isValidProjectName(name, minLen = 1, maxLen = 70) {
if (!name)
return false;
if (name.length < minLen || name.length > maxLen)
return false;
return /^[a-z][a-z0-9_-]{0,69}$/.test(name);
}
export function __isLookLikePath(raw) {
if (!raw)
return false;
const s = raw.trim();
if (!s)
return false;
if (s.startsWith('/') || s.startsWith('\\') || s.startsWith('~'))
return true;
if (/^[a-zA-Z]:[\\/]/.test(s))
return true;
if (s.includes('/') ||
s.includes('\\') ||
s.includes('..') ||
s.includes('./') ||
s.includes('../'))
return true;
return false;
}
export function __isContainHarassmentWords(value, words) {
const _isContainDirtyWord = words.some((e) => value.includes(e));
return _isContainDirtyWord;
}
//# sourceMappingURL=string.js.map