feat(frontend): add API client, layout, and routing
- Create Axios-based API client with sources, jobs, and dashboard endpoints - Add responsive Layout component with navigation sidebar - Set up React Router with Dashboard, Backups, and Settings routes - Configure TanStack Query provider with default options - Use lucide-react for navigation icons
This commit is contained in:
+29
@@ -0,0 +1,29 @@
|
||||
import { truncate } from './helpers'
|
||||
|
||||
const stringEscapeChars = new RegExp(
|
||||
"['\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5" +
|
||||
'\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]',
|
||||
'g'
|
||||
)
|
||||
|
||||
const escapeCharacters = {
|
||||
'\b': '\\b',
|
||||
'\t': '\\t',
|
||||
'\n': '\\n',
|
||||
'\f': '\\f',
|
||||
'\r': '\\r',
|
||||
"'": "\\'",
|
||||
'\\': '\\\\',
|
||||
}
|
||||
const hex = 16
|
||||
const unicodeLength = 4
|
||||
function escape(char) {
|
||||
return escapeCharacters[char] || `\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`
|
||||
}
|
||||
|
||||
export default function inspectString(string, options) {
|
||||
if (stringEscapeChars.test(string)) {
|
||||
string = string.replace(stringEscapeChars, escape)
|
||||
}
|
||||
return options.stylize(`'${truncate(string, options.truncate - 2)}'`, 'string')
|
||||
}
|
||||
Reference in New Issue
Block a user