Electron / Intermédiaire / 15 min de lecture
Notion : comment une application Electron copie-t-elle du texte enrichi ?
Suivez avec REA le chemin documenté du presse-papiers de Notion, du rendu via IPC jusqu’au système. Appliquez la méthode à votre application Electron.
Sur cette page
Un schéma étayé par le code montrant les données texte et HTML, la frontière entre processus et l’écriture dans le presse-papiers.
Il vous faudraREA, une application Electron que vous pouvez inspecter, et son app.asar ou son JavaScript extrait. Aucun moteur natif n’est nécessaire.
01. Partez des données copiées, pas de toute l’application
Copier du texte en gras semble être une seule opération. Dans Electron, l’éditeur, le pont exposé à la page web et le processus autorisé à écrire dans le système peuvent être des morceaux de code distincts. Votre travail consiste à les relier.
L’investigation officielle de Notion portait sur Desktop 7.6.1. Le chemin décrit transmet le texte et le HTML via une API de presse-papiers et un récepteur IPC. Le graphe seul n’a pas résolu tout le parcours : la lecture directe du code intermédiaire a fourni les liens manquants. Ce tutoriel applique cette méthode ; il ne constitue pas une nouvelle capture de Notion.
Utilise REA pour inspecter /absolute/path/app.asar. Analyse uniquement la copie de texte enrichi. Trouve l’appel du processus de rendu, le pont preload, le canal IPC, le gestionnaire récepteur et l’écriture finale dans le presse-papiers. Pour chaque étape, indique le fichier et les lignes correspondantes. Marque les liens dynamiques ou manquants comme non résolus. N’exécute pas l’application.02. Trouvez les points d’entrée livrés
Travaillez sur une copie des fichiers de l’application. Sous macOS, les paquets Electron placent souvent app.asar dans Contents/Resources ; sous Windows et Linux, ils utilisent généralement un dossier resources. Vérifiez le chemin sans supposer que toutes les applications ont la même structure.
Conservez tout dossier compagnon app.asar.unpacked à côté de l’archive. Vérifiez les erreurs d’analyse, les fichiers ignorés et le point d’entrée principal découvert avant de vous fier au schéma. Un inventaire incomplet peut masquer le récepteur recherché.
npx -y [email protected] analyze-javascript-application "/absolute/path/app.asar" --json > app-analysis.json03. Passez du processus de rendu au processus principal
Demandez à l’agent d’inspecter le code réel autour des références contextBridge, clipboard et ipcRenderer.invoke renvoyées par l’analyse. Un pont peut exposer une fonction générique dont le canal est transmis par une variable. Rechercher le nom littéral du canal dans le graphe peut ne rien renvoyer alors qu’il figure dans le code intermédiaire.
Le rapport Notion du projet a identifié le canal notion:clipboard:write en lisant l’objet API livré, puis relié son récepteur à clipboard.write d’Electron. Notez les noms équivalents de votre version ; ne collez pas des positions issues d’une ancienne analyse dans une version différente.
- Rendu : quel événement construit les données à copier ?
- Preload : quelle API publique les transmet et comment le canal est-il fourni ?
- Processus principal : quel gestionnaire les reçoit et comment l’émetteur est-il vérifié ?
- Destination : quels champs texte, HTML ou personnalisés arrivent à l’API du presse-papiers ?
04. Testez une fonction de mise en forme
Dans un document temporaire, copiez une courte phrase avec un mot en gras. Collez-la dans un éditeur de texte enrichi puis dans un éditeur de texte brut. Notez les deux sorties. Recommencez avec un lien, un saut de ligne et des caractères non ASCII. Ces tests distinguent le repli en texte brut de la conservation de la mise en forme.
Un parcours cohérent dans le code ne prouve pas que votre système a accepté chaque format. L’investigation d’origine utilisait aussi des modules web mis en cache séparément ; elle n’a pas enregistré une copie dans l’application de bureau de même version. Gardez cette distinction dans votre rapport.
Construis pour mon application une petite fonction de préparation des données à copier à partir du comportement établi. Sépare le texte brut et le HTML. Ajoute des tests pour le gras, les liens, les sauts de ligne et Unicode. Liste les formats personnalisés du presse-papiers qui restent inexpliqués ; ne revendique pas une compatibilité complète avec Notion.05. Quand le suivi s’arrête à une fonction intermédiaire
Inspectez ensemble la définition de la fonction intermédiaire et son site d’appel. Si le nom du canal est assemblé à l’exécution, notez l’expression au lieu d’inventer une valeur littérale. Si une extension native effectue l’écriture, l’analyse JavaScript s’arrête à cette frontière.
Votre résultat final doit être un court parcours étayé à chaque étape, accompagné des tests de mise en forme réellement exécutés. Cela suffit à reconstruire une fonction de copie utile sans prétendre recréer l’éditeur.
Commandes vérifiées avec REA 6.4.0. Les résultats propres à une cible dépendent du fichier et du moteur utilisés. Lire la source du projet et le périmètre →
Vous découvrez l’outil ? Qu’est-ce que REA ? · Comment nous vérifions nos guides