Features: - Full RBAC with 3 roles (superadmin/manager/contributor) - Ownership tracking on posts, tasks, campaigns, projects - Task system: assign to anyone, filter combobox, visibility scoping - Team members merged into users table (single source of truth) - Post thumbnails on kanban cards from attachments - Publication link validation before publishing - Interactive onboarding tutorial with Settings restart - Full Arabic/English i18n with RTL layout support - Language toggle in sidebar, IBM Plex Sans Arabic font - Brand-based visibility filtering for non-superadmins - Manager can only create contributors - Profile completion flow for new users - Cookie-based sessions (express-session + SQLite)
14 lines
394 B
JavaScript
14 lines
394 B
JavaScript
// warning: extremely hot code path.
|
|
// This has been meticulously optimized for use
|
|
// within npm install on large package trees.
|
|
// Do not edit without careful benchmarking.
|
|
module.exports = str => {
|
|
let i = str.length - 1
|
|
let slashesStart = -1
|
|
while (i > -1 && str.charAt(i) === '/') {
|
|
slashesStart = i
|
|
i--
|
|
}
|
|
return slashesStart === -1 ? str : str.slice(0, slashesStart)
|
|
}
|