// Une table d'analyse envoie vers l'editeur de document la page ou revenir une // fois l'enregistrement termine, filtres compris. Cette destination arrive par // l'URL : elle est donc fabricable par n'importe qui, et n'est suivie que si // elle designe une page de l'application. /** * La destination de retour portee par une query, ou `repli` si elle manque ou * ne designe pas un chemin interne. * * Sont refuses tout ce qui peut sortir du site : une URL absolue * (`https://ailleurs`), un chemin protocol-relatif (`//ailleurs`) que le * navigateur traite comme un domaine, et les contre-slashs dont certains * navigateurs font des slashs. */ export function cheminRetour(brut, repli = '/documents') { const valeur = Array.isArray(brut) ? brut[0] : brut if (typeof valeur !== 'string' || valeur === '') return repli if (!valeur.startsWith('/')) return repli if (valeur.startsWith('//')) return repli if (valeur.includes('\\')) return repli return valeur }