UNPKG

@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
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