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)
32 lines
705 B
JavaScript
32 lines
705 B
JavaScript
'use strict'
|
|
class FetchError extends Error {
|
|
constructor (message, type, systemError) {
|
|
super(message)
|
|
this.code = 'FETCH_ERROR'
|
|
|
|
// pick up code, expected, path, ...
|
|
if (systemError)
|
|
Object.assign(this, systemError)
|
|
|
|
this.errno = this.code
|
|
|
|
// override anything the system error might've clobbered
|
|
this.type = this.code === 'EBADSIZE' && this.found > this.expect
|
|
? 'max-size' : type
|
|
this.message = message
|
|
Error.captureStackTrace(this, this.constructor)
|
|
}
|
|
|
|
get name () {
|
|
return 'FetchError'
|
|
}
|
|
|
|
// don't allow name to be overwritten
|
|
set name (n) {}
|
|
|
|
get [Symbol.toStringTag] () {
|
|
return 'FetchError'
|
|
}
|
|
}
|
|
module.exports = FetchError
|