diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index d3f66fa..662e316 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -1,3 +1,4 @@ [ - "obsidian-git" + "obsidian-git", + "novel-word-count" ] \ No newline at end of file diff --git a/.obsidian/plugins/novel-word-count/data.json b/.obsidian/plugins/novel-word-count/data.json new file mode 100644 index 0000000..70d9ff3 --- /dev/null +++ b/.obsidian/plugins/novel-word-count/data.json @@ -0,0 +1,7804 @@ +{ + "settings": { + "useAdvancedFormatting": false, + "countType": "word", + "countConfig": { + "customSuffix": "w", + "$sessionCountType": "word" + }, + "countType2": "linebreak", + "countConfig2": { + "$sessionCountType": "word", + "customSuffix": "ΒΆ" + }, + "countType3": "none", + "countConfig3": { + "$sessionCountType": "word" + }, + "pipeSeparator": "|", + "abbreviateDescriptions": false, + "alignment": "inline", + "showSameCountsOnFolders": true, + "folderCountType": "word", + "folderCountConfig": { + "customSuffix": "w", + "$sessionCountType": "word" + }, + "folderCountType2": "none", + "folderCountConfig2": { + "$sessionCountType": "word" + }, + "folderCountType3": "none", + "folderCountConfig3": { + "$sessionCountType": "word" + }, + "folderPipeSeparator": "|", + "folderAbbreviateDescriptions": false, + "folderAlignment": "inline", + "showSameCountsOnRoot": true, + "rootCountType": "word", + "rootCountConfig": { + "customSuffix": "w", + "$sessionCountType": "word" + }, + "rootCountType2": "none", + "rootCountConfig2": { + "$sessionCountType": "word" + }, + "rootCountType3": "none", + "rootCountConfig3": { + "$sessionCountType": "word" + }, + "rootPipeSeparator": "|", + "rootAbbreviateDescriptions": false, + "showAdvanced": false, + "labelOpacity": 0.75, + "wordsPerMinute": 265, + "charsPerMinute": 500, + "wordsPerPage": 300, + "charsPerPage": 1500, + "charsPerPageIncludesWhitespace": false, + "characterCountType": "AllCharacters", + "pageCountType": "ByWords", + "includeDirectories": "", + "excludeComments": false, + "excludeCodeBlocks": false, + "excludeNonVisibleLinkPortions": false, + "excludeFootnotes": false, + "momentDateFormat": "", + "debugMode": false + }, + "cachedCounts": { + "2025/vve-piet-heinstate-notulen-2025-05-20.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1747802357877, + "modifiedDate": 1747803469721, + "sizeInBytes": 142872, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/xg-infra.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 14, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.04666666666666667, + "characterCount": 302, + "nonWhitespaceCharacterCount": 206, + "newlineCount": 7, + "readingTimeInMinutes": 0.052830188679245285, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1745423455206, + "modifiedDate": 1745423604745, + "sizeInBytes": 302, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.04666666666666667, + "wordCount": 14, + "characterCount": 302, + "nonWhitespaceCharacterCount": 206, + "newlineCount": 7 + } + }, + "2025/xg-infra-vorke-upgrade-2025.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 47, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.15666666666666668, + "characterCount": 738, + "nonWhitespaceCharacterCount": 658, + "newlineCount": 27, + "readingTimeInMinutes": 0.17735849056603772, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1744038043973, + "modifiedDate": 1744038043973, + "sizeInBytes": 775, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.15666666666666668, + "wordCount": 47, + "characterCount": 738, + "nonWhitespaceCharacterCount": 658, + "newlineCount": 27 + }, + "frontmatter": { + "tags": [ + "freebsd", + "homelab" + ] + } + }, + "2025/xg-infra-nas-upgrade-2025.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 606, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 2.02, + "characterCount": 6846, + "nonWhitespaceCharacterCount": 5988, + "newlineCount": 198, + "readingTimeInMinutes": 2.2867924528301886, + "linkCount": 5, + "embedCount": 0, + "aliases": null, + "createdDate": 1744044983247, + "modifiedDate": 1744044983247, + "sizeInBytes": 6883, + "sessionStart": { + "noteCount": 1, + "pageCount": 2.02, + "wordCount": 606, + "characterCount": 6846, + "nonWhitespaceCharacterCount": 5988, + "newlineCount": 198 + }, + "frontmatter": { + "tags": [ + "freebsd", + "homelab" + ] + } + }, + "2025/xg-infra-guava.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 110, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.36666666666666664, + "characterCount": 1343, + "nonWhitespaceCharacterCount": 1009, + "newlineCount": 37, + "readingTimeInMinutes": 0.41509433962264153, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1745426759487, + "modifiedDate": 1745430791948, + "sizeInBytes": 1343, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.36666666666666664, + "wordCount": 110, + "characterCount": 1343, + "nonWhitespaceCharacterCount": 1009, + "newlineCount": 37 + } + }, + "2025/vtv-bestuurs-notulen-14-04-2025.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 66, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.22, + "characterCount": 548, + "nonWhitespaceCharacterCount": 467, + "newlineCount": 11, + "readingTimeInMinutes": 0.2490566037735849, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1744896790627, + "modifiedDate": 1744897584026, + "sizeInBytes": 548, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.22, + "wordCount": 66, + "characterCount": 548, + "nonWhitespaceCharacterCount": 467, + "newlineCount": 11 + } + }, + "2025/freepik-randy-37-jaar-ecard-202507221949326aqr.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1753213773697, + "modifiedDate": 1753213774664, + "sizeInBytes": 13718613, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/vacation-yoga-retreat-weekend-limburg-w32-8to19-aug.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 155, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.5166666666666667, + "characterCount": 1229, + "nonWhitespaceCharacterCount": 1001, + "newlineCount": 63, + "readingTimeInMinutes": 0.5849056603773585, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1744892496921, + "modifiedDate": 1744892771716, + "sizeInBytes": 1234, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.5166666666666667, + "wordCount": 155, + "characterCount": 1229, + "nonWhitespaceCharacterCount": 1001, + "newlineCount": 63 + } + }, + "2025/vacation-texel-weekend-w23-6to8-june-2025.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 86, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2866666666666667, + "characterCount": 1638, + "nonWhitespaceCharacterCount": 1487, + "newlineCount": 48, + "readingTimeInMinutes": 0.32452830188679244, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1744890286412, + "modifiedDate": 1744895896652, + "sizeInBytes": 1638, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2866666666666667, + "wordCount": 86, + "characterCount": 1638, + "nonWhitespaceCharacterCount": 1487, + "newlineCount": 48 + } + }, + "2025/uitnodiging-jerry-maria-verjaardag-dinnerparty-2025.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737191466257, + "modifiedDate": 1737191466257, + "sizeInBytes": 767663, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/pyrotechny.eu infrastructure and notes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 32, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.10666666666666667, + "characterCount": 506, + "nonWhitespaceCharacterCount": 458, + "newlineCount": 13, + "readingTimeInMinutes": 0.12075471698113208, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1750581011706, + "modifiedDate": 1750581176619, + "sizeInBytes": 506, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.10666666666666667, + "wordCount": 32, + "characterCount": 506, + "nonWhitespaceCharacterCount": 458, + "newlineCount": 13 + } + }, + "2025/new Apple mac computers.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 148, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.49333333333333335, + "characterCount": 1047, + "nonWhitespaceCharacterCount": 870, + "newlineCount": 39, + "readingTimeInMinutes": 0.5584905660377358, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1744176503417, + "modifiedDate": 1752829514466, + "sizeInBytes": 1058, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.49333333333333335, + "wordCount": 148, + "characterCount": 1047, + "nonWhitespaceCharacterCount": 870, + "newlineCount": 39 + } + }, + "2025/macos-old-installer-links.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 22, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.07333333333333333, + "characterCount": 568, + "nonWhitespaceCharacterCount": 533, + "newlineCount": 9, + "readingTimeInMinutes": 0.0830188679245283, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1747893163291, + "modifiedDate": 1747893183139, + "sizeInBytes": 568, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.07333333333333333, + "wordCount": 22, + "characterCount": 568, + "nonWhitespaceCharacterCount": 533, + "newlineCount": 9 + } + }, + "2025/macOS homebrew notes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 5, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.016666666666666666, + "characterCount": 131, + "nonWhitespaceCharacterCount": 121, + "newlineCount": 5, + "readingTimeInMinutes": 0.018867924528301886, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1744176202538, + "modifiedDate": 1744176265857, + "sizeInBytes": 131, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.016666666666666666, + "wordCount": 5, + "characterCount": 131, + "nonWhitespaceCharacterCount": 121, + "newlineCount": 5 + } + }, + "2025/macOS automount network share.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 70, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.23333333333333334, + "characterCount": 502, + "nonWhitespaceCharacterCount": 411, + "newlineCount": 12, + "readingTimeInMinutes": 0.2641509433962264, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1749971104583, + "modifiedDate": 1749971558442, + "sizeInBytes": 502, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.23333333333333334, + "wordCount": 70, + "characterCount": 502, + "nonWhitespaceCharacterCount": 411, + "newlineCount": 12 + } + }, + "2025/macOS autodetect USB.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 23, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.07666666666666666, + "characterCount": 192, + "nonWhitespaceCharacterCount": 160, + "newlineCount": 9, + "readingTimeInMinutes": 0.08679245283018867, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1753604437269, + "modifiedDate": 1753605195365, + "sizeInBytes": 192, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.07666666666666666, + "wordCount": 23, + "characterCount": 192, + "nonWhitespaceCharacterCount": 160, + "newlineCount": 9 + } + }, + "2025/images/Screenshot 2025-01-02 at 21.36.20.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1744302051284, + "modifiedDate": 1744302051285, + "sizeInBytes": 546086, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/goede-voornemens-2025.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 43, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.14333333333333334, + "characterCount": 308, + "nonWhitespaceCharacterCount": 254, + "newlineCount": 13, + "readingTimeInMinutes": 0.16226415094339622, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1737711001915, + "modifiedDate": 1737711001915, + "sizeInBytes": 308, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.14333333333333334, + "wordCount": 43, + "characterCount": 308, + "nonWhitespaceCharacterCount": 254, + "newlineCount": 13 + } + }, + "2025/ggz-poh/Activiteitenregistratie – Behandelhulp.nl - https-::behandelhulp.nl:.webloc": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1745336784658, + "modifiedDate": 1745336784660, + "sizeInBytes": 271, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/ggz-poh/Voorbeeld-activiteitenregistratie-ingevuld.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1745335986302, + "modifiedDate": 1745335986302, + "sizeInBytes": 187094, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/ggz-poh/Activiteitenregistratieformulier-2.doc": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1745335951128, + "modifiedDate": 1745335951156, + "sizeInBytes": 304128, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/ggz-poh/Activiteitenregistratie.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1745335963319, + "modifiedDate": 1745335963320, + "sizeInBytes": 180533, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/ggz-poh/2025-04-10-Mijn Positieve Gezondheid - https___vragenlijsten.mijnpositievegezondheid.nl_.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1744268013122, + "modifiedDate": 1744268013124, + "sizeInBytes": 2755469, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/VvE Piet Heinlaan – Notulen Bestuursvergadering 2025-05-20.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1747979701261, + "modifiedDate": 1747979701299, + "sizeInBytes": 52183, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/VvE Piet Heinlaan – Notulen Bestuursvergadering 2025-05-20.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 196, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6533333333333333, + "characterCount": 1381, + "nonWhitespaceCharacterCount": 1153, + "newlineCount": 30, + "readingTimeInMinutes": 0.7396226415094339, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1747804124352, + "modifiedDate": 1747804124353, + "sizeInBytes": 1385, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6533333333333333, + "wordCount": 196, + "characterCount": 1381, + "nonWhitespaceCharacterCount": 1153, + "newlineCount": 30 + } + }, + "2025/Verkoop macBookPro11,1 Marktplaats.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 428, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.4266666666666667, + "characterCount": 3331, + "nonWhitespaceCharacterCount": 2782, + "newlineCount": 80, + "readingTimeInMinutes": 1.6150943396226416, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1743957676649, + "modifiedDate": 1744355361429, + "sizeInBytes": 3333, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.4266666666666667, + "wordCount": 428, + "characterCount": 3331, + "nonWhitespaceCharacterCount": 2782, + "newlineCount": 80 + } + }, + "2025/Verkoop macBookPro11,1 Marktplaats/system-info.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1743924302439, + "modifiedDate": 1743924302439, + "sizeInBytes": 249531, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/Verkoop macBookPro11,1 Marktplaats/battery-information.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1743924166043, + "modifiedDate": 1743924166043, + "sizeInBytes": 71044, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/Tuinhuis specs.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 22, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.07333333333333333, + "characterCount": 297, + "nonWhitespaceCharacterCount": 270, + "newlineCount": 8, + "readingTimeInMinutes": 0.0830188679245283, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1743836078523, + "modifiedDate": 1743836078523, + "sizeInBytes": 301, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.07333333333333333, + "wordCount": 22, + "characterCount": 297, + "nonWhitespaceCharacterCount": 270, + "newlineCount": 8 + } + }, + "2025/Todoist + gcal timeblocking-daytheming.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 37, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.12333333333333334, + "characterCount": 505, + "nonWhitespaceCharacterCount": 438, + "newlineCount": 26, + "readingTimeInMinutes": 0.13962264150943396, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1753619237784, + "modifiedDate": 1753621570859, + "sizeInBytes": 505, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.12333333333333334, + "wordCount": 37, + "characterCount": 505, + "nonWhitespaceCharacterCount": 438, + "newlineCount": 26 + } + }, + "2025/Standup 1 april grap ik vertrek bij Adimec.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1743472003000, + "modifiedDate": 1743472003000, + "sizeInBytes": 288632, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/Signaleringsplan jerry jacobs bipolair 1 versie 5 FINAL.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1744965406587, + "modifiedDate": 1744965406587, + "sizeInBytes": 835371, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/Signaleringsplan jerry jacobs bipolair 1 versie 5 FINAL (18-03-2025).pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1744965428361, + "modifiedDate": 1744965428361, + "sizeInBytes": 106257, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2025/Secure erase under macOS + reinstall.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 463, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.5433333333333332, + "characterCount": 3339, + "nonWhitespaceCharacterCount": 2833, + "newlineCount": 43, + "readingTimeInMinutes": 1.7471698113207548, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1744108113775, + "modifiedDate": 1744263253301, + "sizeInBytes": 3373, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.5433333333333332, + "wordCount": 463, + "characterCount": 3339, + "nonWhitespaceCharacterCount": 2833, + "newlineCount": 43 + } + }, + "2025/OpenSSH FIDO-U2F support.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 2, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.006666666666666667, + "characterCount": 92, + "nonWhitespaceCharacterCount": 89, + "newlineCount": 2, + "readingTimeInMinutes": 0.007547169811320755, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1753446417649, + "modifiedDate": 1753446474099, + "sizeInBytes": 92, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.006666666666666667, + "wordCount": 2, + "characterCount": 92, + "nonWhitespaceCharacterCount": 89, + "newlineCount": 2 + } + }, + "2025/Hop inventory 2025-03-07.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 53, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.17666666666666667, + "characterCount": 841, + "nonWhitespaceCharacterCount": 587, + "newlineCount": 9, + "readingTimeInMinutes": 0.2, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1741370933653, + "modifiedDate": 1741370933653, + "sizeInBytes": 841, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.17666666666666667, + "wordCount": 53, + "characterCount": 841, + "nonWhitespaceCharacterCount": 587, + "newlineCount": 9 + } + }, + "2025/FreeBSD.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 10, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.03333333333333333, + "characterCount": 227, + "nonWhitespaceCharacterCount": 211, + "newlineCount": 5, + "readingTimeInMinutes": 0.03773584905660377, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1741464984891, + "modifiedDate": 1741464984891, + "sizeInBytes": 227, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.03333333333333333, + "wordCount": 10, + "characterCount": 227, + "nonWhitespaceCharacterCount": 211, + "newlineCount": 5 + } + }, + "2025/FreeBSD notable changes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 15, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.05, + "characterCount": 98, + "nonWhitespaceCharacterCount": 83, + "newlineCount": 1, + "readingTimeInMinutes": 0.05660377358490566, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1753447461522, + "modifiedDate": 1753447468870, + "sizeInBytes": 98, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.05, + "wordCount": 15, + "characterCount": 98, + "nonWhitespaceCharacterCount": 83, + "newlineCount": 1 + } + }, + "2025/FreeBSD libcxxrt broken.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 31, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.10333333333333333, + "characterCount": 406, + "nonWhitespaceCharacterCount": 369, + "newlineCount": 11, + "readingTimeInMinutes": 0.1169811320754717, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1739918528769, + "modifiedDate": 1739918528769, + "sizeInBytes": 406, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.10333333333333333, + "wordCount": 31, + "characterCount": 406, + "nonWhitespaceCharacterCount": 369, + "newlineCount": 11 + } + }, + "2025/FreeBSD 14.2-RELEASE on a Scaleway Dedibox server (Online.net) with root on ZFS.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 229, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.7633333333333333, + "characterCount": 2220, + "nonWhitespaceCharacterCount": 1937, + "newlineCount": 60, + "readingTimeInMinutes": 0.8641509433962264, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1741452508956, + "modifiedDate": 1741452508956, + "sizeInBytes": 2253, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.7633333333333333, + "wordCount": 229, + "characterCount": 2220, + "nonWhitespaceCharacterCount": 1937, + "newlineCount": 60 + } + }, + "2025/Brewlog 2025.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 118, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.3933333333333333, + "characterCount": 760, + "nonWhitespaceCharacterCount": 608, + "newlineCount": 40, + "readingTimeInMinutes": 0.44528301886792454, + "linkCount": 0, + "embedCount": 1, + "aliases": null, + "createdDate": 1744301751932, + "modifiedDate": 1750612429101, + "sizeInBytes": 760, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.3933333333333333, + "wordCount": 118, + "characterCount": 760, + "nonWhitespaceCharacterCount": 608, + "newlineCount": 40 + } + }, + "2025/Backups on macOS.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 50, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.16666666666666666, + "characterCount": 767, + "nonWhitespaceCharacterCount": 649, + "newlineCount": 21, + "readingTimeInMinutes": 0.18867924528301888, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1753944657723, + "modifiedDate": 1754040506620, + "sizeInBytes": 767, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.16666666666666666, + "wordCount": 50, + "characterCount": 767, + "nonWhitespaceCharacterCount": 649, + "newlineCount": 21 + } + }, + "2024/wepik-minimalist-gradient-new-years-eve-celebration-invitation-202410171902269urR.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703501761, + "modifiedDate": 1737703501761, + "sizeInBytes": 592775, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/verjaardagskaart-pap-59-met-jerry-erbij/Tekst pap kaart 59 jaar.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 53, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.17666666666666667, + "characterCount": 304, + "nonWhitespaceCharacterCount": 250, + "newlineCount": 3, + "readingTimeInMinutes": 0.2, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1711907088187, + "modifiedDate": 1711907088187, + "sizeInBytes": 304, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.17666666666666667, + "wordCount": 53, + "characterCount": 304, + "nonWhitespaceCharacterCount": 250, + "newlineCount": 3 + } + }, + "2024/verjaardagskaart-pap-59-met-jerry-erbij/IMG_0736.JPG": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703501745, + "modifiedDate": 1737703501745, + "sizeInBytes": 2584233, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/verjaardagskaart-pap-59-met-jerry-erbij/IMG_0725.JPG": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703501409, + "modifiedDate": 1737703501409, + "sizeInBytes": 1861827, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/verjaardagskaart-pap-59-met-jerry-erbij/DSC07975.JPG": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703501376, + "modifiedDate": 1737703501376, + "sizeInBytes": 1636677, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/verjaardagskaart-pap-59-met-jerry-erbij/DSC03175.JPG": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703501343, + "modifiedDate": 1737703501343, + "sizeInBytes": 1644213, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/verjaardagskaart-pap-59-met-jerry-erbij/20240331_102549_jerry_leon.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703501115, + "modifiedDate": 1737703501115, + "sizeInBytes": 7982379, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/verjaardags-feest-35-jaar-in-breugel.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 695, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 2.316666666666667, + "characterCount": 3838, + "nonWhitespaceCharacterCount": 3069, + "newlineCount": 143, + "readingTimeInMinutes": 2.6226415094339623, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1710498992752, + "modifiedDate": 1710498992752, + "sizeInBytes": 3840, + "sessionStart": { + "noteCount": 1, + "pageCount": 2.316666666666667, + "wordCount": 695, + "characterCount": 3838, + "nonWhitespaceCharacterCount": 3069, + "newlineCount": 143 + } + }, + "2024/verjaardag-uitnodiging-jerry-35j-23-mrt-2024.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703500388, + "modifiedDate": 1737703500388, + "sizeInBytes": 3832974, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/teledyne-cybersecurity-mail-ssh-traffic-20240815-unenc.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703499754, + "modifiedDate": 1737703499754, + "sizeInBytes": 3811184, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/piet-hein-state-gebouwbeheer.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 286, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.9533333333333334, + "characterCount": 2321, + "nonWhitespaceCharacterCount": 1972, + "newlineCount": 84, + "readingTimeInMinutes": 1.079245283018868, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1749885774924, + "modifiedDate": 1754037055326, + "sizeInBytes": 2321, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.9533333333333334, + "wordCount": 286, + "characterCount": 2321, + "nonWhitespaceCharacterCount": 1972, + "newlineCount": 84 + } + }, + "2024/photoprism.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 28, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.09333333333333334, + "characterCount": 390, + "nonWhitespaceCharacterCount": 355, + "newlineCount": 5, + "readingTimeInMinutes": 0.10566037735849057, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1728028110191, + "modifiedDate": 1728028110191, + "sizeInBytes": 390, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.09333333333333334, + "wordCount": 28, + "characterCount": 390, + "nonWhitespaceCharacterCount": 355, + "newlineCount": 5 + } + }, + "2024/nye-party-2025-at-breugel.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703499341, + "modifiedDate": 1737703499341, + "sizeInBytes": 628806, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/macos-markdown-editors-2024-review.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 78, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.26, + "characterCount": 1494, + "nonWhitespaceCharacterCount": 1362, + "newlineCount": 34, + "readingTimeInMinutes": 0.2943396226415094, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1705734200348, + "modifiedDate": 1705734200348, + "sizeInBytes": 1494, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.26, + "wordCount": 78, + "characterCount": 1494, + "nonWhitespaceCharacterCount": 1362, + "newlineCount": 34 + } + }, + "2024/mac-reinstall-notes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 233, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.7766666666666666, + "characterCount": 2171, + "nonWhitespaceCharacterCount": 1803, + "newlineCount": 68, + "readingTimeInMinutes": 0.879245283018868, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1713093306381, + "modifiedDate": 1713093306381, + "sizeInBytes": 2171, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.7766666666666666, + "wordCount": 233, + "characterCount": 2171, + "nonWhitespaceCharacterCount": 1803, + "newlineCount": 68 + } + }, + "2024/just-in-case-als-er-iets-gebeurd-2024.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703499321, + "modifiedDate": 1737703499321, + "sizeInBytes": 219494, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/just-in-case-als-er-iets-gebeurd-2024-01-20.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703499315, + "modifiedDate": 1737703499315, + "sizeInBytes": 79959, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/happy-holidays-nye-2024-kaart/wishes-jerry-nero-2025.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703499290, + "modifiedDate": 1737703499290, + "sizeInBytes": 1777791, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/happy-holidays-nye-2024-kaart/jerry-nero-cutout-cosy-holidays-2024-center-round.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703499187, + "modifiedDate": 1737703499187, + "sizeInBytes": 2761069, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/happy-holidays-nye-2024-kaart/IMG_E7695.HEIC": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1728220557000, + "modifiedDate": 1728220557000, + "sizeInBytes": 885423, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/gyros-kruiden-jacobus.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 66, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.22, + "characterCount": 537, + "nonWhitespaceCharacterCount": 449, + "newlineCount": 13, + "readingTimeInMinutes": 0.2490566037735849, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1707057157767, + "modifiedDate": 1707057157767, + "sizeInBytes": 559, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.22, + "wordCount": 66, + "characterCount": 537, + "nonWhitespaceCharacterCount": 449, + "newlineCount": 13 + } + }, + "2024/git-svn mirror.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 3, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.01, + "characterCount": 14, + "nonWhitespaceCharacterCount": 12, + "newlineCount": 1, + "readingTimeInMinutes": 0.011320754716981131, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1723205662655, + "modifiedDate": 1723205662655, + "sizeInBytes": 14, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.01, + "wordCount": 3, + "characterCount": 14, + "nonWhitespaceCharacterCount": 12, + "newlineCount": 1 + } + }, + "2024/ggz-poh-mijnpositievegezondheid.net/Mijn Positieve Gezondheid - 2024-11-08.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703499057, + "modifiedDate": 1737703499057, + "sizeInBytes": 2904797, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd-notes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 1181, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 3.9366666666666665, + "characterCount": 10912, + "nonWhitespaceCharacterCount": 9003, + "newlineCount": 410, + "readingTimeInMinutes": 4.456603773584906, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1735039291317, + "modifiedDate": 1735039291317, + "sizeInBytes": 10953, + "sessionStart": { + "noteCount": 1, + "pageCount": 3.9366666666666665, + "wordCount": 1181, + "characterCount": 10912, + "nonWhitespaceCharacterCount": 9003, + "newlineCount": 410 + }, + "frontmatter": { + "tags": [ + "freebsd", + "homelab" + ] + } + }, + "2024/freebsd-jail-vanilla.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 60, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2, + "characterCount": 632, + "nonWhitespaceCharacterCount": 557, + "newlineCount": 21, + "readingTimeInMinutes": 0.22641509433962265, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1734801672441, + "modifiedDate": 1734801672441, + "sizeInBytes": 669, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2, + "wordCount": 60, + "characterCount": 632, + "nonWhitespaceCharacterCount": 557, + "newlineCount": 21 + }, + "frontmatter": { + "tags": [ + "freebsd", + "homelab" + ] + } + }, + "2024/freebsd/nginx remove header from upstream - Server Fault - https___serverfault.com_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1724353213291, + "modifiedDate": 1724353213291, + "sizeInBytes": 1942871, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd/Solved - Howto save freebsd-update, portsnap, and pkg files to a fresh installation_ _ The FreeBSD Forums - https___forums.freebsd.org_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1724353109479, + "modifiedDate": 1724353109479, + "sizeInBytes": 814483, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd/Setting Up a Package Mirror on FreeBSD _ lastsummer.de - https___lastsummer.de_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1724352807636, + "modifiedDate": 1724352807636, + "sizeInBytes": 1219368, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd/Proxmox vs FreeBSD_ Which Virtualization Host Performs Better_ - IT Notes - https___it-notes.dragas.net_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498779, + "modifiedDate": 1737703498779, + "sizeInBytes": 530488, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd/Nginx pkg cache help _ The FreeBSD Forums - https___forums.freebsd.org_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1724353175214, + "modifiedDate": 1724353175214, + "sizeInBytes": 671606, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd/FreeBSD Jail Creation - Personal Site - https___omussell.github.io_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1724354285064, + "modifiedDate": 1724354285064, + "sizeInBytes": 189314, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd/Caching freebsd-update and pkg files - Personal Site - https___omussell.github.io_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1724354153580, + "modifiedDate": 1724354153580, + "sizeInBytes": 189805, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/freebsd/Bhyve VM Creation - Personal Site - https___omussell.github.io_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1724354340415, + "modifiedDate": 1724354340415, + "sizeInBytes": 197220, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/fire-fascinated-friend-kkk-for-pyros.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498756, + "modifiedDate": 1737703498756, + "sizeInBytes": 51666, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/elbo-urmet-intercom/2voiceappv-5803.apk": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1660030665143, + "modifiedDate": 1660030665143, + "sizeInBytes": 2210270, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/doelen-2024.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 180, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6, + "characterCount": 1240, + "nonWhitespaceCharacterCount": 1008, + "newlineCount": 29, + "readingTimeInMinutes": 0.6792452830188679, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1708788902291, + "modifiedDate": 1708788902291, + "sizeInBytes": 1242, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6, + "wordCount": 180, + "characterCount": 1240, + "nonWhitespaceCharacterCount": 1008, + "newlineCount": 29 + } + }, + "2024/chlorate-cell.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 29, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.09666666666666666, + "characterCount": 581, + "nonWhitespaceCharacterCount": 523, + "newlineCount": 17, + "readingTimeInMinutes": 0.10943396226415095, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1705264736069, + "modifiedDate": 1705264736069, + "sizeInBytes": 581, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.09666666666666666, + "wordCount": 29, + "characterCount": 581, + "nonWhitespaceCharacterCount": 523, + "newlineCount": 17 + } + }, + "2024/april-training-mental-physical-goede-voornemens.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 46, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.15333333333333332, + "characterCount": 334, + "nonWhitespaceCharacterCount": 274, + "newlineCount": 11, + "readingTimeInMinutes": 0.17358490566037735, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1711986707413, + "modifiedDate": 1711986707413, + "sizeInBytes": 334, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.15333333333333332, + "wordCount": 46, + "characterCount": 334, + "nonWhitespaceCharacterCount": 274, + "newlineCount": 11 + } + }, + "2024/Why I am tasting colors?.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 58, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.19333333333333333, + "characterCount": 299, + "nonWhitespaceCharacterCount": 241, + "newlineCount": 3, + "readingTimeInMinutes": 0.2188679245283019, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1713388888915, + "modifiedDate": 1713388888915, + "sizeInBytes": 303, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.19333333333333333, + "wordCount": 58, + "characterCount": 299, + "nonWhitespaceCharacterCount": 241, + "newlineCount": 3 + } + }, + "2024/So you wanna do FreeBSD 14.1 and native Home Assistant?.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 1742, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 5.806666666666667, + "characterCount": 19829, + "nonWhitespaceCharacterCount": 16808, + "newlineCount": 398, + "readingTimeInMinutes": 6.573584905660377, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1737703498725, + "modifiedDate": 1737703498725, + "sizeInBytes": 19999, + "sessionStart": { + "noteCount": 1, + "pageCount": 5.806666666666667, + "wordCount": 1742, + "characterCount": 19829, + "nonWhitespaceCharacterCount": 16808, + "newlineCount": 398 + }, + "frontmatter": { + "tags": [ + "freebsd", + "homelab", + "selfhosting" + ] + } + }, + "2024/Screenshot 2024-04-10 at 11.17.04 - courage - FRVO.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498696, + "modifiedDate": 1737703498696, + "sizeInBytes": 387290, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/Postgres and ZFS snapshots/postgres.go": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1734274318483, + "modifiedDate": 1734274318483, + "sizeInBytes": 5345, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/Postgres and ZFS snapshots/postgres (1).go": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1734274358969, + "modifiedDate": 1734274358969, + "sizeInBytes": 48750, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/Postgres Backups and ZFS snapshots.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 89, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2966666666666667, + "characterCount": 1230, + "nonWhitespaceCharacterCount": 1091, + "newlineCount": 26, + "readingTimeInMinutes": 0.33584905660377357, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1734274561242, + "modifiedDate": 1749829710202, + "sizeInBytes": 1230, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2966666666666667, + "wordCount": 89, + "characterCount": 1230, + "nonWhitespaceCharacterCount": 1091, + "newlineCount": 26 + } + }, + "2024/POP gesprek 2024-Q1.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 310, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.0333333333333334, + "characterCount": 2002, + "nonWhitespaceCharacterCount": 1677, + "newlineCount": 26, + "readingTimeInMinutes": 1.169811320754717, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1706974697882, + "modifiedDate": 1706974697882, + "sizeInBytes": 2011, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.0333333333333334, + "wordCount": 310, + "characterCount": 2002, + "nonWhitespaceCharacterCount": 1677, + "newlineCount": 26 + } + }, + "2024/Neways introductie interview voorbereiding.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 117, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.39, + "characterCount": 845, + "nonWhitespaceCharacterCount": 702, + "newlineCount": 21, + "readingTimeInMinutes": 0.44150943396226416, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1707154959990, + "modifiedDate": 1707154959990, + "sizeInBytes": 845, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.39, + "wordCount": 117, + "characterCount": 845, + "nonWhitespaceCharacterCount": 702, + "newlineCount": 21 + } + }, + "2024/Gmail - Persoonlijke verdieping therapie gevraagd, en uitgebreide introductie over mijzelf - https___mail.google.com_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1712499095884, + "modifiedDate": 1712499095884, + "sizeInBytes": 10933, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2024/Github multiple users and keys.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 89, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2966666666666667, + "characterCount": 954, + "nonWhitespaceCharacterCount": 845, + "newlineCount": 31, + "readingTimeInMinutes": 0.33584905660377357, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1743958556741, + "modifiedDate": 1743958556741, + "sizeInBytes": 954, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2966666666666667, + "wordCount": 89, + "characterCount": 954, + "nonWhitespaceCharacterCount": 845, + "newlineCount": 31 + } + }, + "2024/Gitea build on FreeBSD 14.2.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 135, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.45, + "characterCount": 1654, + "nonWhitespaceCharacterCount": 1475, + "newlineCount": 50, + "readingTimeInMinutes": 0.5094339622641509, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1734618123389, + "modifiedDate": 1734618123389, + "sizeInBytes": 1655, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.45, + "wordCount": 135, + "characterCount": 1654, + "nonWhitespaceCharacterCount": 1475, + "newlineCount": 50 + } + }, + "2024/Gezonde routines boek review & notes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 11, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.03666666666666667, + "characterCount": 70, + "nonWhitespaceCharacterCount": 56, + "newlineCount": 2, + "readingTimeInMinutes": 0.04150943396226415, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1709406712019, + "modifiedDate": 1709406712019, + "sizeInBytes": 70, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.03666666666666667, + "wordCount": 11, + "characterCount": 70, + "nonWhitespaceCharacterCount": 56, + "newlineCount": 2 + } + }, + "2024/Brouwsels 2024.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 83, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.27666666666666667, + "characterCount": 492, + "nonWhitespaceCharacterCount": 359, + "newlineCount": 21, + "readingTimeInMinutes": 0.3132075471698113, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1707058757032, + "modifiedDate": 1707058757032, + "sizeInBytes": 492, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.27666666666666667, + "wordCount": 83, + "characterCount": 492, + "nonWhitespaceCharacterCount": 359, + "newlineCount": 21 + } + }, + "2024/Batterij apparaten voor opladen.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 13, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.043333333333333335, + "characterCount": 117, + "nonWhitespaceCharacterCount": 97, + "newlineCount": 8, + "readingTimeInMinutes": 0.04905660377358491, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1722773903577, + "modifiedDate": 1722773903577, + "sizeInBytes": 117, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.043333333333333335, + "wordCount": 13, + "characterCount": 117, + "nonWhitespaceCharacterCount": 97, + "newlineCount": 8 + } + }, + "2024/1gabba.pw-links.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 28, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.09333333333333334, + "characterCount": 3765, + "nonWhitespaceCharacterCount": 3706, + "newlineCount": 31, + "readingTimeInMinutes": 0.10566037735849057, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1724350569844, + "modifiedDate": 1724350569844, + "sizeInBytes": 3765, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.09333333333333334, + "wordCount": 28, + "characterCount": 3765, + "nonWhitespaceCharacterCount": 3706, + "newlineCount": 31 + } + }, + "2023/woorden-cloud-bloem-imct-jerryjacobs.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498583, + "modifiedDate": 1737703498583, + "sizeInBytes": 223835, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/the-digital-afterlife.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 377, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.2566666666666666, + "characterCount": 2641, + "nonWhitespaceCharacterCount": 2202, + "newlineCount": 43, + "readingTimeInMinutes": 1.4226415094339622, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1693143005524, + "modifiedDate": 1693143005524, + "sizeInBytes": 2641, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.2566666666666666, + "wordCount": 377, + "characterCount": 2641, + "nonWhitespaceCharacterCount": 2202, + "newlineCount": 43 + } + }, + "2023/reflectie-2023.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 64, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.21333333333333335, + "characterCount": 494, + "nonWhitespaceCharacterCount": 418, + "newlineCount": 13, + "readingTimeInMinutes": 0.24150943396226415, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1703882260993, + "modifiedDate": 1703882260993, + "sizeInBytes": 494, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.21333333333333335, + "wordCount": 64, + "characterCount": 494, + "nonWhitespaceCharacterCount": 418, + "newlineCount": 13 + } + }, + "2023/pyro-polite-inval-visco-yourpyro/Klantenlijst leidt politie naar grote hoeveelheden illegaal vuurwerk _ Tech _ NU.nl - https___www.nu.nl_.mhtml": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1688896698239, + "modifiedDate": 1688896698239, + "sizeInBytes": 304763, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/pyro-polite-inval-visco-yourpyro/Handelaar en koper visco-lont aangepakt _ politie.nl - https___www.politie.nl_.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498552, + "modifiedDate": 1737703498552, + "sizeInBytes": 261857, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/pyro-polite-inval-visco-yourpyro/Handelaar en koper visco-lont aangepakt _ politie.nl - https___www.politie.nl_.mht": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1688878920482, + "modifiedDate": 1688878920482, + "sizeInBytes": 1406521, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/pineapple NAS.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 22, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.07333333333333333, + "characterCount": 331, + "nonWhitespaceCharacterCount": 300, + "newlineCount": 15, + "readingTimeInMinutes": 0.0830188679245283, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1677830809554, + "modifiedDate": 1677830809554, + "sizeInBytes": 331, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.07333333333333333, + "wordCount": 22, + "characterCount": 331, + "nonWhitespaceCharacterCount": 300, + "newlineCount": 15 + } + }, + "2023/oplaad-apperatuur.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 15, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.05, + "characterCount": 143, + "nonWhitespaceCharacterCount": 118, + "newlineCount": 11, + "readingTimeInMinutes": 0.05660377358490566, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1700771167272, + "modifiedDate": 1700771167272, + "sizeInBytes": 143, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.05, + "wordCount": 15, + "characterCount": 143, + "nonWhitespaceCharacterCount": 118, + "newlineCount": 11 + } + }, + "2023/november-2023-beer-recipe.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 72, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.24, + "characterCount": 747, + "nonWhitespaceCharacterCount": 666, + "newlineCount": 30, + "readingTimeInMinutes": 0.27169811320754716, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1699711490791, + "modifiedDate": 1699711490791, + "sizeInBytes": 747, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.24, + "wordCount": 72, + "characterCount": 747, + "nonWhitespaceCharacterCount": 666, + "newlineCount": 30 + } + }, + "2023/ketjap-knoflook-roerei-recept.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 176, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.5866666666666667, + "characterCount": 1006, + "nonWhitespaceCharacterCount": 816, + "newlineCount": 33, + "readingTimeInMinutes": 0.6641509433962264, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1704824060794, + "modifiedDate": 1704824060794, + "sizeInBytes": 1006, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.5866666666666667, + "wordCount": 176, + "characterCount": 1006, + "nonWhitespaceCharacterCount": 816, + "newlineCount": 33 + } + }, + "2023/just-in-case-als-er-iets-gebeurd.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498543, + "modifiedDate": 1737703498543, + "sizeInBytes": 219539, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/jerry-volkstuin-sabbatical-2023.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 312, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.04, + "characterCount": 2120, + "nonWhitespaceCharacterCount": 1747, + "newlineCount": 40, + "readingTimeInMinutes": 1.1773584905660377, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1704824061027, + "modifiedDate": 1704824061027, + "sizeInBytes": 2120, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.04, + "wordCount": 312, + "characterCount": 2120, + "nonWhitespaceCharacterCount": 1747, + "newlineCount": 40 + } + }, + "2023/jerry-newyear-card-2024.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498515, + "modifiedDate": 1737703498515, + "sizeInBytes": 1969170, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/happy-new-year-2024.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498174, + "modifiedDate": 1737703498174, + "sizeInBytes": 2820810, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/golang-talk-han-jan-23/workshop-brainstorm-notes.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 332, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.1066666666666667, + "characterCount": 2821, + "nonWhitespaceCharacterCount": 2409, + "newlineCount": 89, + "readingTimeInMinutes": 1.2528301886792452, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1668532414284, + "modifiedDate": 1668532414284, + "sizeInBytes": 2821, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.1066666666666667, + "wordCount": 332, + "characterCount": 2821, + "nonWhitespaceCharacterCount": 2409, + "newlineCount": 89 + } + }, + "2023/golang-talk-han-jan-23/src/solution.go": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1668353775206, + "modifiedDate": 1668353775206, + "sizeInBytes": 4145, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/golang-talk-han-jan-23/slides/golang-talk-han-jan-23.slide": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1668333060528, + "modifiedDate": 1668333060528, + "sizeInBytes": 421, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/golang-talk-han-jan-23/notes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 82, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2733333333333333, + "characterCount": 765, + "nonWhitespaceCharacterCount": 664, + "newlineCount": 30, + "readingTimeInMinutes": 0.30943396226415093, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1668332668749, + "modifiedDate": 1668332668749, + "sizeInBytes": 765, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2733333333333333, + "wordCount": 82, + "characterCount": 765, + "nonWhitespaceCharacterCount": 664, + "newlineCount": 30 + } + }, + "2023/beer-recipe-single-malt-ipa-dec-2023.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 62, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.20666666666666667, + "characterCount": 303, + "nonWhitespaceCharacterCount": 234, + "newlineCount": 23, + "readingTimeInMinutes": 0.2339622641509434, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1702122570697, + "modifiedDate": 1702122570697, + "sizeInBytes": 303, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.20666666666666667, + "wordCount": 62, + "characterCount": 303, + "nonWhitespaceCharacterCount": 234, + "newlineCount": 23 + } + }, + "2023/Yoga retraite zomer 2023.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 37, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.12333333333333334, + "characterCount": 810, + "nonWhitespaceCharacterCount": 759, + "newlineCount": 21, + "readingTimeInMinutes": 0.13962264150943396, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1676920532012, + "modifiedDate": 1676920532012, + "sizeInBytes": 811, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.12333333333333334, + "wordCount": 37, + "characterCount": 810, + "nonWhitespaceCharacterCount": 759, + "newlineCount": 21 + } + }, + "2023/Verjaardags feest 34 Son.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 129, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.43, + "characterCount": 741, + "nonWhitespaceCharacterCount": 599, + "newlineCount": 31, + "readingTimeInMinutes": 0.4867924528301887, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1679930878212, + "modifiedDate": 1679930878212, + "sizeInBytes": 741, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.43, + "wordCount": 129, + "characterCount": 741, + "nonWhitespaceCharacterCount": 599, + "newlineCount": 31 + } + }, + "2023/Untitled Note.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 459, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.53, + "characterCount": 2845, + "nonWhitespaceCharacterCount": 2376, + "newlineCount": 20, + "readingTimeInMinutes": 1.7320754716981133, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1688972170745, + "modifiedDate": 1688972170745, + "sizeInBytes": 2849, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.53, + "wordCount": 459, + "characterCount": 2845, + "nonWhitespaceCharacterCount": 2376, + "newlineCount": 20 + } + }, + "2023/Untitled Note 3.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 401, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.3366666666666667, + "characterCount": 2523, + "nonWhitespaceCharacterCount": 2100, + "newlineCount": 29, + "readingTimeInMinutes": 1.5132075471698114, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1692989569001, + "modifiedDate": 1692989569001, + "sizeInBytes": 2523, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.3366666666666667, + "wordCount": 401, + "characterCount": 2523, + "nonWhitespaceCharacterCount": 2100, + "newlineCount": 29 + } + }, + "2023/Untitled Note 2.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 19, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.06333333333333334, + "characterCount": 160, + "nonWhitespaceCharacterCount": 136, + "newlineCount": 15, + "readingTimeInMinutes": 0.07169811320754717, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1689074495257, + "modifiedDate": 1689074495257, + "sizeInBytes": 160, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.06333333333333334, + "wordCount": 19, + "characterCount": 160, + "nonWhitespaceCharacterCount": 136, + "newlineCount": 15 + } + }, + "2023/Therapie GGzE iMCT 30 Jan 2023.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 190, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6333333333333333, + "characterCount": 1076, + "nonWhitespaceCharacterCount": 870, + "newlineCount": 12, + "readingTimeInMinutes": 0.7169811320754716, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1676919542026, + "modifiedDate": 1676919542026, + "sizeInBytes": 1084, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6333333333333333, + "wordCount": 190, + "characterCount": 1076, + "nonWhitespaceCharacterCount": 870, + "newlineCount": 12 + } + }, + "2023/Signaleringsplan jerry jacobs bipolair 1 versie 4 DRAFT.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498123, + "modifiedDate": 1737703498123, + "sizeInBytes": 812290, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/Signaleringsplan jerry jacobs bipolair 1 versie 4 DRAFT praatgroep.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498100, + "modifiedDate": 1737703498100, + "sizeInBytes": 799737, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/Signaleringsplan bipolair 1 ingevuld versie 3 draft.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498069, + "modifiedDate": 1737703498069, + "sizeInBytes": 812135, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/Oproep online praatgroep bipolair.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 182, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6066666666666667, + "characterCount": 1122, + "nonWhitespaceCharacterCount": 926, + "newlineCount": 21, + "readingTimeInMinutes": 0.6867924528301886, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1677420114039, + "modifiedDate": 1677420114039, + "sizeInBytes": 1122, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6066666666666667, + "wordCount": 182, + "characterCount": 1122, + "nonWhitespaceCharacterCount": 926, + "newlineCount": 21 + } + }, + "2023/Notities vtv 19 januari vergadering.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 63, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.21, + "characterCount": 422, + "nonWhitespaceCharacterCount": 354, + "newlineCount": 7, + "readingTimeInMinutes": 0.23773584905660378, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1676919468013, + "modifiedDate": 1676919468013, + "sizeInBytes": 422, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.21, + "wordCount": 63, + "characterCount": 422, + "nonWhitespaceCharacterCount": 354, + "newlineCount": 7 + } + }, + "2023/Learn Python Programming Masterclass.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 904, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 3.013333333333333, + "characterCount": 7564, + "nonWhitespaceCharacterCount": 6323, + "newlineCount": 303, + "readingTimeInMinutes": 3.4113207547169813, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1704824060891, + "modifiedDate": 1704824060891, + "sizeInBytes": 7564, + "sessionStart": { + "noteCount": 1, + "pageCount": 3.013333333333333, + "wordCount": 904, + "characterCount": 7564, + "nonWhitespaceCharacterCount": 6323, + "newlineCount": 303 + } + }, + "2023/Kast maten.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 20, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.06666666666666667, + "characterCount": 115, + "nonWhitespaceCharacterCount": 93, + "newlineCount": 12, + "readingTimeInMinutes": 0.07547169811320754, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1704824060784, + "modifiedDate": 1704824060784, + "sizeInBytes": 115, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.06666666666666667, + "wordCount": 20, + "characterCount": 115, + "nonWhitespaceCharacterCount": 93, + "newlineCount": 12 + } + }, + "2023/IMG_4107 iMCT GGz Whiteboard.JPG": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1669020824000, + "modifiedDate": 1669020824000, + "sizeInBytes": 2016108, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2023/Gesprek GGzE iMCT 23 jan 2023.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 239, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.7966666666666666, + "characterCount": 1323, + "nonWhitespaceCharacterCount": 1075, + "newlineCount": 13, + "readingTimeInMinutes": 0.9018867924528302, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1704824061070, + "modifiedDate": 1704824061070, + "sizeInBytes": 1327, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.7966666666666666, + "wordCount": 239, + "characterCount": 1323, + "nonWhitespaceCharacterCount": 1075, + "newlineCount": 13 + } + }, + "2023/Boodschappenlijst verjaardag.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 56, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.18666666666666668, + "characterCount": 383, + "nonWhitespaceCharacterCount": 317, + "newlineCount": 35, + "readingTimeInMinutes": 0.21132075471698114, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1680245983884, + "modifiedDate": 1680245983884, + "sizeInBytes": 383, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.18666666666666668, + "wordCount": 56, + "characterCount": 383, + "nonWhitespaceCharacterCount": 317, + "newlineCount": 35 + } + }, + "2023/Beer ingredients & Hop inventory.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 49, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.16333333333333333, + "characterCount": 455, + "nonWhitespaceCharacterCount": 391, + "newlineCount": 13, + "readingTimeInMinutes": 0.18490566037735848, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1702720713020, + "modifiedDate": 1702720713020, + "sizeInBytes": 455, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.16333333333333333, + "wordCount": 49, + "characterCount": 455, + "nonWhitespaceCharacterCount": 391, + "newlineCount": 13 + } + }, + "2023/Afvuursysteem-componenten-tinytronics.nl.numbers": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1689402064445, + "modifiedDate": 1689402064445, + "sizeInBytes": 164981, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/todoist-wallpapers/yir-2021-wallpaper-iPhone8.jpeg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1641631235000, + "modifiedDate": 1641631235000, + "sizeInBytes": 589323, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/todoist-wallpapers/yir-2021-wallpaper-desktop.jpeg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1641631229179, + "modifiedDate": 1641631229179, + "sizeInBytes": 2938945, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/todoist-recurring-routine.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703498029, + "modifiedDate": 1737703498029, + "sizeInBytes": 45324, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/recept Kipragout met champignons zelf maken _ Eef Kookt Zo - https___www.eefkooktzo.nl_.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497969, + "modifiedDate": 1737703497969, + "sizeInBytes": 9431986, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/pyroforum-purechemical-profiel-2009-aangemaakt.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497526, + "modifiedDate": 1737703497526, + "sizeInBytes": 307172, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/punten-praatgroep-sept-2022.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 300, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1, + "characterCount": 1765, + "nonWhitespaceCharacterCount": 1449, + "newlineCount": 12, + "readingTimeInMinutes": 1.1320754716981132, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667339759882, + "modifiedDate": 1667339759882, + "sizeInBytes": 1771, + "sessionStart": { + "noteCount": 1, + "pageCount": 1, + "wordCount": 300, + "characterCount": 1765, + "nonWhitespaceCharacterCount": 1449, + "newlineCount": 12 + } + }, + "2022/praatgroep-thema-sociale-druk/word-cloud.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497519, + "modifiedDate": 1737703497519, + "sizeInBytes": 18263, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/praatgroep-thema-geestelijke-struggels.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 240, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.8, + "characterCount": 1386, + "nonWhitespaceCharacterCount": 1133, + "newlineCount": 19, + "readingTimeInMinutes": 0.9056603773584906, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1654611605666, + "modifiedDate": 1654611605666, + "sizeInBytes": 1386, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.8, + "wordCount": 240, + "characterCount": 1386, + "nonWhitespaceCharacterCount": 1133, + "newlineCount": 19 + } + }, + "2022/praatgroep-bericht-stoppen-zelfhulpnetwerk.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 233, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.7766666666666666, + "characterCount": 1374, + "nonWhitespaceCharacterCount": 1135, + "newlineCount": 13, + "readingTimeInMinutes": 0.879245283018868, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667339505601, + "modifiedDate": 1667339505601, + "sizeInBytes": 1374, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.7766666666666666, + "wordCount": 233, + "characterCount": 1374, + "nonWhitespaceCharacterCount": 1135, + "newlineCount": 13 + } + }, + "2022/macbook-pro-retina-10.1-gpu-issue.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 119, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.39666666666666667, + "characterCount": 2383, + "nonWhitespaceCharacterCount": 2250, + "newlineCount": 34, + "readingTimeInMinutes": 0.4490566037735849, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1670596579939, + "modifiedDate": 1670596579939, + "sizeInBytes": 2383, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.39666666666666667, + "wordCount": 119, + "characterCount": 2383, + "nonWhitespaceCharacterCount": 2250, + "newlineCount": 34 + } + }, + "2022/linux-mint-wifi-rtl8723be.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 45, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.15, + "characterCount": 420, + "nonWhitespaceCharacterCount": 365, + "newlineCount": 18, + "readingTimeInMinutes": 0.16981132075471697, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667339590718, + "modifiedDate": 1667339590718, + "sizeInBytes": 420, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.15, + "wordCount": 45, + "characterCount": 420, + "nonWhitespaceCharacterCount": 365, + "newlineCount": 18 + } + }, + "2022/laptop-asus-pap-fedora.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 9, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.03, + "characterCount": 111, + "nonWhitespaceCharacterCount": 100, + "newlineCount": 5, + "readingTimeInMinutes": 0.033962264150943396, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667416647176, + "modifiedDate": 1667416647176, + "sizeInBytes": 111, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.03, + "wordCount": 9, + "characterCount": 111, + "nonWhitespaceCharacterCount": 100, + "newlineCount": 5 + } + }, + "2022/knoflook-bio-behandeling-tegen-schimmel-artikel.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 371, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.2366666666666666, + "characterCount": 3003, + "nonWhitespaceCharacterCount": 2597, + "newlineCount": 50, + "readingTimeInMinutes": 1.4, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1663592490577, + "modifiedDate": 1663592490577, + "sizeInBytes": 3003, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.2366666666666666, + "wordCount": 371, + "characterCount": 3003, + "nonWhitespaceCharacterCount": 2597, + "newlineCount": 50 + } + }, + "2022/grandioze-donatie-aan-erowid-bevestigng.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497514, + "modifiedDate": 1737703497514, + "sizeInBytes": 184955, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/github-archievement.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497494, + "modifiedDate": 1737703497494, + "sizeInBytes": 551744, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/gesprek-nino-14-sept-2022.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 172, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.5733333333333334, + "characterCount": 1007, + "nonWhitespaceCharacterCount": 824, + "newlineCount": 11, + "readingTimeInMinutes": 0.6490566037735849, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667340351733, + "modifiedDate": 1667340351733, + "sizeInBytes": 1010, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.5733333333333334, + "wordCount": 172, + "characterCount": 1007, + "nonWhitespaceCharacterCount": 824, + "newlineCount": 11 + } + }, + "2022/gesprek-jules-2023-in-psychose-en-waan.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 356, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.1866666666666668, + "characterCount": 2006, + "nonWhitespaceCharacterCount": 1626, + "newlineCount": 43, + "readingTimeInMinutes": 1.3433962264150943, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667339870271, + "modifiedDate": 1667339870271, + "sizeInBytes": 2020, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.1866666666666668, + "wordCount": 356, + "characterCount": 2006, + "nonWhitespaceCharacterCount": 1626, + "newlineCount": 43 + } + }, + "2022/even-bijpraten-met-nino-geen-pop-feb-22.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 329, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.0966666666666667, + "characterCount": 2002, + "nonWhitespaceCharacterCount": 1650, + "newlineCount": 24, + "readingTimeInMinutes": 1.241509433962264, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1659268842030, + "modifiedDate": 1659268842030, + "sizeInBytes": 2014, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.0966666666666667, + "wordCount": 329, + "characterCount": 2002, + "nonWhitespaceCharacterCount": 1650, + "newlineCount": 24 + } + }, + "2022/gesprek-jules-16-sept-2022.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 121, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.4033333333333333, + "characterCount": 803, + "nonWhitespaceCharacterCount": 654, + "newlineCount": 15, + "readingTimeInMinutes": 0.45660377358490567, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1670875333278, + "modifiedDate": 1670875333278, + "sizeInBytes": 817, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.4033333333333333, + "wordCount": 121, + "characterCount": 803, + "nonWhitespaceCharacterCount": 654, + "newlineCount": 15 + } + }, + "2022/euro-dollar-koers-20220908_04_45-manic-hypomanie.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497471, + "modifiedDate": 1737703497471, + "sizeInBytes": 163538, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/erowid-donation-100dollar-sept-22.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497455, + "modifiedDate": 1737703497455, + "sizeInBytes": 76648, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/erowid-donatie-creditcard-sync-bewijs-20220908.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 24, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.08, + "characterCount": 482, + "nonWhitespaceCharacterCount": 458, + "newlineCount": 10, + "readingTimeInMinutes": 0.09056603773584905, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1662604929368, + "modifiedDate": 1662604929368, + "sizeInBytes": 482, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.08, + "wordCount": 24, + "characterCount": 482, + "nonWhitespaceCharacterCount": 458, + "newlineCount": 10 + } + }, + "2022/different kinds of voltages.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 316, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.0533333333333332, + "characterCount": 1985, + "nonWhitespaceCharacterCount": 1628, + "newlineCount": 29, + "readingTimeInMinutes": 1.1924528301886792, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643949271979, + "modifiedDate": 1643949271979, + "sizeInBytes": 2075, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.0533333333333332, + "wordCount": 316, + "characterCount": 1985, + "nonWhitespaceCharacterCount": 1628, + "newlineCount": 29 + } + }, + "2022/dewandeldate-profile-20220810.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497412, + "modifiedDate": 1737703497412, + "sizeInBytes": 294651, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/computers-and-machines.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 880, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 2.933333333333333, + "characterCount": 10418, + "nonWhitespaceCharacterCount": 8379, + "newlineCount": 248, + "readingTimeInMinutes": 3.3207547169811322, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1688909381812, + "modifiedDate": 1688909381812, + "sizeInBytes": 10501, + "sessionStart": { + "noteCount": 1, + "pageCount": 2.933333333333333, + "wordCount": 880, + "characterCount": 10418, + "nonWhitespaceCharacterCount": 8379, + "newlineCount": 248 + }, + "frontmatter": { + "title": "Computers and Machines", + "date": "2022-01-09T11:03:51+01:00", + "draft": true + } + }, + "2022/christmas-card-jerry-nero-2023.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497287, + "modifiedDate": 1737703497287, + "sizeInBytes": 1504148, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/chilli-hot-sauce-ingredients.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703497178, + "modifiedDate": 1737703497178, + "sizeInBytes": 259314, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/apc-forum-donate-copyleft-symbool-dat-is-gek.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703496917, + "modifiedDate": 1737703496917, + "sizeInBytes": 147697, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/aanvraag-therapie-ggze-nino.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 378, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.26, + "characterCount": 2070, + "nonWhitespaceCharacterCount": 1678, + "newlineCount": 22, + "readingTimeInMinutes": 1.4264150943396225, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1668325085588, + "modifiedDate": 1668325085588, + "sizeInBytes": 2070, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.26, + "wordCount": 378, + "characterCount": 2070, + "nonWhitespaceCharacterCount": 1678, + "newlineCount": 22 + } + }, + "2022/Verhaaltje bipolair praatgroep wat heeft bipolair jouw gebracht.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 185, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6166666666666667, + "characterCount": 1037, + "nonWhitespaceCharacterCount": 845, + "newlineCount": 15, + "readingTimeInMinutes": 0.6981132075471698, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1650832043498, + "modifiedDate": 1650832043498, + "sizeInBytes": 1037, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6166666666666667, + "wordCount": 185, + "characterCount": 1037, + "nonWhitespaceCharacterCount": 845, + "newlineCount": 15 + } + }, + "2022/Untitled Note.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 24, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.08, + "characterCount": 194, + "nonWhitespaceCharacterCount": 165, + "newlineCount": 12, + "readingTimeInMinutes": 0.09056603773584905, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1654263312576, + "modifiedDate": 1654263312576, + "sizeInBytes": 194, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.08, + "wordCount": 24, + "characterCount": 194, + "nonWhitespaceCharacterCount": 165, + "newlineCount": 12 + } + }, + "2022/Untitled Note 7.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 49, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.16333333333333333, + "characterCount": 321, + "nonWhitespaceCharacterCount": 263, + "newlineCount": 10, + "readingTimeInMinutes": 0.18490566037735848, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1659268806190, + "modifiedDate": 1659268806190, + "sizeInBytes": 323, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.16333333333333333, + "wordCount": 49, + "characterCount": 321, + "nonWhitespaceCharacterCount": 263, + "newlineCount": 10 + } + }, + "2022/Untitled Note 6.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 240, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.8, + "characterCount": 1385, + "nonWhitespaceCharacterCount": 1133, + "newlineCount": 18, + "readingTimeInMinutes": 0.9056603773584906, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1659268792123, + "modifiedDate": 1659268792123, + "sizeInBytes": 1385, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.8, + "wordCount": 240, + "characterCount": 1385, + "nonWhitespaceCharacterCount": 1133, + "newlineCount": 18 + } + }, + "2022/Untitled Note 5.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 360, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.2, + "characterCount": 2000, + "nonWhitespaceCharacterCount": 1627, + "newlineCount": 23, + "readingTimeInMinutes": 1.3584905660377358, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1659268777958, + "modifiedDate": 1659268777958, + "sizeInBytes": 2012, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.2, + "wordCount": 360, + "characterCount": 2000, + "nonWhitespaceCharacterCount": 1627, + "newlineCount": 23 + } + }, + "2022/Untitled Note 4.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 174, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.58, + "characterCount": 1991, + "nonWhitespaceCharacterCount": 1806, + "newlineCount": 38, + "readingTimeInMinutes": 0.6566037735849056, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1663249717477, + "modifiedDate": 1663249717477, + "sizeInBytes": 1992, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.58, + "wordCount": 174, + "characterCount": 1991, + "nonWhitespaceCharacterCount": 1806, + "newlineCount": 38 + } + }, + "2022/Untitled Note 3.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 6, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.02, + "characterCount": 121, + "nonWhitespaceCharacterCount": 111, + "newlineCount": 5, + "readingTimeInMinutes": 0.022641509433962263, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667593979288, + "modifiedDate": 1667593979288, + "sizeInBytes": 121, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.02, + "wordCount": 6, + "characterCount": 121, + "nonWhitespaceCharacterCount": 111, + "newlineCount": 5 + } + }, + "2022/Untitled Note 11.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 23, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.07666666666666666, + "characterCount": 134, + "nonWhitespaceCharacterCount": 109, + "newlineCount": 5, + "readingTimeInMinutes": 0.08679245283018867, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1670873775999, + "modifiedDate": 1670873775999, + "sizeInBytes": 134, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.07666666666666666, + "wordCount": 23, + "characterCount": 134, + "nonWhitespaceCharacterCount": 109, + "newlineCount": 5 + } + }, + "2022/Therapie sessie imCT 12 dec 2022.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 285, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.95, + "characterCount": 1847, + "nonWhitespaceCharacterCount": 1507, + "newlineCount": 59, + "readingTimeInMinutes": 1.0754716981132075, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1676919414468, + "modifiedDate": 1676919414468, + "sizeInBytes": 1852, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.95, + "wordCount": 285, + "characterCount": 1847, + "nonWhitespaceCharacterCount": 1507, + "newlineCount": 59 + } + }, + "2022/Syncthing notes.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 79, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2633333333333333, + "characterCount": 608, + "nonWhitespaceCharacterCount": 526, + "newlineCount": 7, + "readingTimeInMinutes": 0.2981132075471698, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644310583083, + "modifiedDate": 1644310583083, + "sizeInBytes": 608, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2633333333333333, + "wordCount": 79, + "characterCount": 608, + "nonWhitespaceCharacterCount": 526, + "newlineCount": 7 + } + }, + "2022/Sleep Quality Scale (SQS).pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703496894, + "modifiedDate": 1737703496894, + "sizeInBytes": 408737, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/Screenshot 2022-12-17 at 17.06.37.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703496884, + "modifiedDate": 1737703496884, + "sizeInBytes": 155147, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/Roll-een-verhaal spel praatgroep bipolar spel - https___docs.google.com_ - https___docs.google.com_.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703496864, + "modifiedDate": 1737703496864, + "sizeInBytes": 54871, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/PythonMasterClass-Slides-v1.034-04August2021-YTPBIk.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703496612, + "modifiedDate": 1737703496612, + "sizeInBytes": 115936636, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/Praatgroep BiPolair Thema β€œSociale Druk” v2.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491712, + "modifiedDate": 1737703491712, + "sizeInBytes": 75890, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/Pizza recipe.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 551, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.8366666666666667, + "characterCount": 2872, + "nonWhitespaceCharacterCount": 2302, + "newlineCount": 41, + "readingTimeInMinutes": 2.079245283018868, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1657813380331, + "modifiedDate": 1657813380331, + "sizeInBytes": 2882, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.8366666666666667, + "wordCount": 551, + "characterCount": 2872, + "nonWhitespaceCharacterCount": 2302, + "newlineCount": 41 + } + }, + "2022/Ouderwetse limburgse koud schotel.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 38, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.12666666666666668, + "characterCount": 285, + "nonWhitespaceCharacterCount": 233, + "newlineCount": 16, + "readingTimeInMinutes": 0.14339622641509434, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643831993429, + "modifiedDate": 1643831993429, + "sizeInBytes": 285, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.12666666666666668, + "wordCount": 38, + "characterCount": 285, + "nonWhitespaceCharacterCount": 233, + "newlineCount": 16 + } + }, + "2022/Nino planning week 50.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 38, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.12666666666666668, + "characterCount": 206, + "nonWhitespaceCharacterCount": 168, + "newlineCount": 3, + "readingTimeInMinutes": 0.14339622641509434, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1676919582185, + "modifiedDate": 1676919582185, + "sizeInBytes": 206, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.12666666666666668, + "wordCount": 38, + "characterCount": 206, + "nonWhitespaceCharacterCount": 168, + "newlineCount": 3 + } + }, + "2022/Moodswings.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 71, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.23666666666666666, + "characterCount": 368, + "nonWhitespaceCharacterCount": 293, + "newlineCount": 7, + "readingTimeInMinutes": 0.2679245283018868, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644127959116, + "modifiedDate": 1644127959116, + "sizeInBytes": 368, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.23666666666666666, + "wordCount": 71, + "characterCount": 368, + "nonWhitespaceCharacterCount": 293, + "newlineCount": 7 + } + }, + "2022/Mijn profiel _ De Wandeldate - https___www.dewandeldate.nl_20220809.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491627, + "modifiedDate": 1737703491627, + "sizeInBytes": 293775, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/Meststoffen uit de winkel.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 160, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.5333333333333333, + "characterCount": 2222, + "nonWhitespaceCharacterCount": 2034, + "newlineCount": 53, + "readingTimeInMinutes": 0.6037735849056604, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1645300571385, + "modifiedDate": 1645300571385, + "sizeInBytes": 2222, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.5333333333333333, + "wordCount": 160, + "characterCount": 2222, + "nonWhitespaceCharacterCount": 2034, + "newlineCount": 53 + } + }, + "2022/Knoflook-2023.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 165, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.55, + "characterCount": 2060, + "nonWhitespaceCharacterCount": 1861, + "newlineCount": 47, + "readingTimeInMinutes": 0.6226415094339622, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1659270976423, + "modifiedDate": 1659270976423, + "sizeInBytes": 2060, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.55, + "wordCount": 165, + "characterCount": 2060, + "nonWhitespaceCharacterCount": 1861, + "newlineCount": 47 + } + }, + "2022/Hoe omgaan met een bipolaire stoornis op het werk.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 431, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.4366666666666668, + "characterCount": 2491, + "nonWhitespaceCharacterCount": 2044, + "newlineCount": 32, + "readingTimeInMinutes": 1.6264150943396227, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644579173780, + "modifiedDate": 1644579173780, + "sizeInBytes": 2492, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.4366666666666668, + "wordCount": 431, + "characterCount": 2491, + "nonWhitespaceCharacterCount": 2044, + "newlineCount": 32 + } + }, + "2022/Gesprek Jules Bipolare Episode 3.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 755, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 2.5166666666666666, + "characterCount": 4446, + "nonWhitespaceCharacterCount": 3652, + "newlineCount": 37, + "readingTimeInMinutes": 2.849056603773585, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644412632252, + "modifiedDate": 1644412632252, + "sizeInBytes": 4446, + "sessionStart": { + "noteCount": 1, + "pageCount": 2.5166666666666666, + "wordCount": 755, + "characterCount": 4446, + "nonWhitespaceCharacterCount": 3652, + "newlineCount": 37 + } + }, + "2022/Fermenteren de vergeten bewaarmethode.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 1271, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 4.236666666666666, + "characterCount": 8303, + "nonWhitespaceCharacterCount": 6990, + "newlineCount": 53, + "readingTimeInMinutes": 4.796226415094339, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644770946459, + "modifiedDate": 1644770946459, + "sizeInBytes": 8311, + "sessionStart": { + "noteCount": 1, + "pageCount": 4.236666666666666, + "wordCount": 1271, + "characterCount": 8303, + "nonWhitespaceCharacterCount": 6990, + "newlineCount": 53 + } + }, + "2022/Computers and machines private info.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 57, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.19, + "characterCount": 1111, + "nonWhitespaceCharacterCount": 765, + "newlineCount": 28, + "readingTimeInMinutes": 0.21509433962264152, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1680275090708, + "modifiedDate": 1680275090708, + "sizeInBytes": 1111, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.19, + "wordCount": 57, + "characterCount": 1111, + "nonWhitespaceCharacterCount": 765, + "newlineCount": 28 + } + }, + "2022/Cold brew coffee.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 53, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.17666666666666667, + "characterCount": 363, + "nonWhitespaceCharacterCount": 302, + "newlineCount": 13, + "readingTimeInMinutes": 0.2, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1645301365574, + "modifiedDate": 1645301365574, + "sizeInBytes": 363, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.17666666666666667, + "wordCount": 53, + "characterCount": 363, + "nonWhitespaceCharacterCount": 302, + "newlineCount": 13 + } + }, + "2022/Brochure - Heggenstraat 10 - Landgraaf.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491376, + "modifiedDate": 1737703491376, + "sizeInBytes": 8687792, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2022/BFEF13D3-4071-400B-B1B5-5C06473BC5F8.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 305, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.0166666666666666, + "characterCount": 2071, + "nonWhitespaceCharacterCount": 1706, + "newlineCount": 53, + "readingTimeInMinutes": 1.150943396226415, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644604148823, + "modifiedDate": 1644604148823, + "sizeInBytes": 2073, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.0166666666666666, + "wordCount": 305, + "characterCount": 2071, + "nonWhitespaceCharacterCount": 1706, + "newlineCount": 53 + } + }, + "2022/Adimec R D Software Quality Working Group.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 205, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6833333333333333, + "characterCount": 1476, + "nonWhitespaceCharacterCount": 1234, + "newlineCount": 36, + "readingTimeInMinutes": 0.7735849056603774, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1645351650127, + "modifiedDate": 1645351650127, + "sizeInBytes": 1476, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6833333333333333, + "wordCount": 205, + "characterCount": 1476, + "nonWhitespaceCharacterCount": 1234, + "newlineCount": 36 + } + }, + "2022/A423C88B-BEE9-4327-BEF0-E698B83E1201.markdown": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 89, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2966666666666667, + "characterCount": 934, + "nonWhitespaceCharacterCount": 820, + "newlineCount": 17, + "readingTimeInMinutes": 0.33584905660377357, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643441325270, + "modifiedDate": 1643441325270, + "sizeInBytes": 934, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2966666666666667, + "wordCount": 89, + "characterCount": 934, + "nonWhitespaceCharacterCount": 820, + "newlineCount": 17 + } + }, + "2022/A dark therapy experiment with blue blocking glasses for managing bipolar disorder hypomanic episodes.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491084, + "modifiedDate": 1737703491084, + "sizeInBytes": 57549, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/zfs-snapshots.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 70, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.23333333333333334, + "characterCount": 1224, + "nonWhitespaceCharacterCount": 1015, + "newlineCount": 37, + "readingTimeInMinutes": 0.2641509433962264, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1734817646897, + "modifiedDate": 1734817646897, + "sizeInBytes": 1224, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.23333333333333334, + "wordCount": 70, + "characterCount": 1224, + "nonWhitespaceCharacterCount": 1015, + "newlineCount": 37 + } + }, + "2021/webinar-luisteren-nationale-nederlanden.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 607, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 2.0233333333333334, + "characterCount": 4187, + "nonWhitespaceCharacterCount": 3498, + "newlineCount": 62, + "readingTimeInMinutes": 2.290566037735849, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1633456283882, + "modifiedDate": 1633456283882, + "sizeInBytes": 4187, + "sessionStart": { + "noteCount": 1, + "pageCount": 2.0233333333333334, + "wordCount": 607, + "characterCount": 4187, + "nonWhitespaceCharacterCount": 3498, + "newlineCount": 62 + } + }, + "2021/vakantie-liefde-op-terschelling-zomer-2019.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 1559, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 5.196666666666666, + "characterCount": 8329, + "nonWhitespaceCharacterCount": 6737, + "newlineCount": 42, + "readingTimeInMinutes": 5.8830188679245285, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1612735038098, + "modifiedDate": 1612735038098, + "sizeInBytes": 8333, + "sessionStart": { + "noteCount": 1, + "pageCount": 5.196666666666666, + "wordCount": 1559, + "characterCount": 8329, + "nonWhitespaceCharacterCount": 6737, + "newlineCount": 42 + } + }, + "2021/social.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 178, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.5933333333333334, + "characterCount": 1284, + "nonWhitespaceCharacterCount": 1086, + "newlineCount": 26, + "readingTimeInMinutes": 0.6716981132075471, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643832142019, + "modifiedDate": 1643832142019, + "sizeInBytes": 1291, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.5933333333333334, + "wordCount": 178, + "characterCount": 1284, + "nonWhitespaceCharacterCount": 1086, + "newlineCount": 26 + } + }, + "2021/profiel-wandeldate.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491065, + "modifiedDate": 1737703491065, + "sizeInBytes": 246693, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/notities Livestream Landelijke dag- Slaap 18-12-2021.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 255, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.85, + "characterCount": 2103, + "nonWhitespaceCharacterCount": 1812, + "newlineCount": 33, + "readingTimeInMinutes": 0.9622641509433962, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1639825098445, + "modifiedDate": 1639825098445, + "sizeInBytes": 2103, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.85, + "wordCount": 255, + "characterCount": 2103, + "nonWhitespaceCharacterCount": 1812, + "newlineCount": 33 + } + }, + "2021/macOS issues and fixes and tricks.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 86, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2866666666666667, + "characterCount": 974, + "nonWhitespaceCharacterCount": 869, + "newlineCount": 30, + "readingTimeInMinutes": 0.32452830188679244, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644565673930, + "modifiedDate": 1644565673930, + "sizeInBytes": 974, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2866666666666667, + "wordCount": 86, + "characterCount": 974, + "nonWhitespaceCharacterCount": 869, + "newlineCount": 30 + } + }, + "2021/macOS (re)install.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 5, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.016666666666666666, + "characterCount": 143, + "nonWhitespaceCharacterCount": 137, + "newlineCount": 5, + "readingTimeInMinutes": 0.018867924528301886, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1689337392102, + "modifiedDate": 1689337392102, + "sizeInBytes": 143, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.016666666666666666, + "wordCount": 5, + "characterCount": 143, + "nonWhitespaceCharacterCount": 137, + "newlineCount": 5 + } + }, + "2021/mac-software.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 27, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.09, + "characterCount": 472, + "nonWhitespaceCharacterCount": 417, + "newlineCount": 28, + "readingTimeInMinutes": 0.1018867924528302, + "linkCount": 1, + "embedCount": 0, + "aliases": null, + "createdDate": 1663395545057, + "modifiedDate": 1663395545057, + "sizeInBytes": 472, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.09, + "wordCount": 27, + "characterCount": 472, + "nonWhitespaceCharacterCount": 417, + "newlineCount": 28 + } + }, + "2021/linux container mess.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 209, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6966666666666667, + "characterCount": 1753, + "nonWhitespaceCharacterCount": 1496, + "newlineCount": 39, + "readingTimeInMinutes": 0.7886792452830189, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1640601385938, + "modifiedDate": 1640601385938, + "sizeInBytes": 1757, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6966666666666667, + "wordCount": 209, + "characterCount": 1753, + "nonWhitespaceCharacterCount": 1496, + "newlineCount": 39 + } + }, + "2021/kerstkaarten.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 19, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.06333333333333334, + "characterCount": 564, + "nonWhitespaceCharacterCount": 544, + "newlineCount": 17, + "readingTimeInMinutes": 0.07169811320754717, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1634057322671, + "modifiedDate": 1634057322671, + "sizeInBytes": 564, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.06333333333333334, + "wordCount": 19, + "characterCount": 564, + "nonWhitespaceCharacterCount": 544, + "newlineCount": 17 + } + }, + "2021/kerstkaart-2021-jerry-nero.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491054, + "modifiedDate": 1737703491054, + "sizeInBytes": 832601, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/kerstkaart-2021-jerry-nero.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491030, + "modifiedDate": 1737703491030, + "sizeInBytes": 484431, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/innovative-software-images/nvidia-kernel-module-compilation.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703491022, + "modifiedDate": 1737703491022, + "sizeInBytes": 33714, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/gir_ride_a_pig_by_sparxyz_d75th8v.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490978, + "modifiedDate": 1737703490978, + "sizeInBytes": 769116, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/gedichten-praatgroep.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 126, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.42, + "characterCount": 790, + "nonWhitespaceCharacterCount": 649, + "newlineCount": 44, + "readingTimeInMinutes": 0.47547169811320755, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1630830853767, + "modifiedDate": 1630830853767, + "sizeInBytes": 791, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.42, + "wordCount": 126, + "characterCount": 790, + "nonWhitespaceCharacterCount": 649, + "newlineCount": 44 + } + }, + "2021/bookmarks_15_11_2021.html": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1636988100437, + "modifiedDate": 1636988100437, + "sizeInBytes": 58186, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/beer recipe.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 95, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.31666666666666665, + "characterCount": 597, + "nonWhitespaceCharacterCount": 476, + "newlineCount": 36, + "readingTimeInMinutes": 0.3584905660377358, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643832014252, + "modifiedDate": 1643832014252, + "sizeInBytes": 597, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.31666666666666665, + "wordCount": 95, + "characterCount": 597, + "nonWhitespaceCharacterCount": 476, + "newlineCount": 36 + } + }, + "2021/ZFS cheatsheet.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 47, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.15666666666666668, + "characterCount": 358, + "nonWhitespaceCharacterCount": 291, + "newlineCount": 26, + "readingTimeInMinutes": 0.17735849056603772, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1705422579488, + "modifiedDate": 1705422579488, + "sizeInBytes": 358, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.15666666666666668, + "wordCount": 47, + "characterCount": 358, + "nonWhitespaceCharacterCount": 291, + "newlineCount": 26 + } + }, + "2021/Tagliatelle-Bolognese.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 260, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.8666666666666667, + "characterCount": 1595, + "nonWhitespaceCharacterCount": 1318, + "newlineCount": 32, + "readingTimeInMinutes": 0.9811320754716981, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1709406620914, + "modifiedDate": 1709406620914, + "sizeInBytes": 1595, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.8666666666666667, + "wordCount": 260, + "characterCount": 1595, + "nonWhitespaceCharacterCount": 1318, + "newlineCount": 32 + } + }, + "2021/Screenshot 2021-12-18 at 11.47.53.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490803, + "modifiedDate": 1737703490803, + "sizeInBytes": 654982, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/Screenshot 2021-12-18 at 10.58.01.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490708, + "modifiedDate": 1737703490708, + "sizeInBytes": 629306, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/Screenshot 2021-12-18 at 10.57.21.png": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490687, + "modifiedDate": 1737703490687, + "sizeInBytes": 429146, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/Sate babi.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 209, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.6966666666666667, + "characterCount": 1524, + "nonWhitespaceCharacterCount": 1291, + "newlineCount": 45, + "readingTimeInMinutes": 0.7886792452830189, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1642769575419, + "modifiedDate": 1755537044913, + "sizeInBytes": 1524, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.6966666666666667, + "wordCount": 209, + "characterCount": 1524, + "nonWhitespaceCharacterCount": 1291, + "newlineCount": 45 + } + }, + "2021/Reflectie 2021.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 150, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.5, + "characterCount": 1060, + "nonWhitespaceCharacterCount": 895, + "newlineCount": 16, + "readingTimeInMinutes": 0.5660377358490566, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1703882297858, + "modifiedDate": 1703882297858, + "sizeInBytes": 1060, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.5, + "wordCount": 150, + "characterCount": 1060, + "nonWhitespaceCharacterCount": 895, + "newlineCount": 16 + } + }, + "2021/Never ever mix strong benzos.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 358, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.1933333333333334, + "characterCount": 1913, + "nonWhitespaceCharacterCount": 1544, + "newlineCount": 19, + "readingTimeInMinutes": 1.350943396226415, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643831972189, + "modifiedDate": 1643831972189, + "sizeInBytes": 1913, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.1933333333333334, + "wordCount": 358, + "characterCount": 1913, + "nonWhitespaceCharacterCount": 1544, + "newlineCount": 19 + } + }, + "2021/Mijn profiel _ De Wandeldate - https___www.dewandeldate.nl_.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490677, + "modifiedDate": 1737703490677, + "sizeInBytes": 263862, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/Hop voorraad 2021.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 36, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.12, + "characterCount": 582, + "nonWhitespaceCharacterCount": 540, + "newlineCount": 14, + "readingTimeInMinutes": 0.13584905660377358, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1645275655148, + "modifiedDate": 1645275655148, + "sizeInBytes": 582, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.12, + "wordCount": 36, + "characterCount": 582, + "nonWhitespaceCharacterCount": 540, + "newlineCount": 14 + } + }, + "2021/LinkedIn notes.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 3, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.01, + "characterCount": 109, + "nonWhitespaceCharacterCount": 104, + "newlineCount": 3, + "readingTimeInMinutes": 0.011320754716981131, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1640771939010, + "modifiedDate": 1640771939010, + "sizeInBytes": 109, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.01, + "wordCount": 3, + "characterCount": 109, + "nonWhitespaceCharacterCount": 104, + "newlineCount": 3 + } + }, + "2021/Jerry _ 32 _ Son en Breugel _ OkCupid - https___www.okcupid.com_.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490660, + "modifiedDate": 1737703490660, + "sizeInBytes": 650444, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/stress-responsie.jpeg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1617550475484, + "modifiedDate": 1617550475484, + "sizeInBytes": 85721, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/poetry.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 18, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.06, + "characterCount": 532, + "nonWhitespaceCharacterCount": 513, + "newlineCount": 12, + "readingTimeInMinutes": 0.06792452830188679, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643832078898, + "modifiedDate": 1643832078898, + "sizeInBytes": 532, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.06, + "wordCount": 18, + "characterCount": 532, + "nonWhitespaceCharacterCount": 513, + "newlineCount": 12 + } + }, + "2021/GGzE/gesprek-marieke-psycholoog.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 933, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 3.11, + "characterCount": 5329, + "nonWhitespaceCharacterCount": 4351, + "newlineCount": 48, + "readingTimeInMinutes": 3.520754716981132, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1627223177631, + "modifiedDate": 1627223177631, + "sizeInBytes": 5329, + "sessionStart": { + "noteCount": 1, + "pageCount": 3.11, + "wordCount": 933, + "characterCount": 5329, + "nonWhitespaceCharacterCount": 4351, + "newlineCount": 48 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/signaleringsplan_bipolaire_stoornis_jerry.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490652, + "modifiedDate": 1737703490652, + "sizeInBytes": 239952, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/signaleringsplan_bipolaire_stoornis.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490572, + "modifiedDate": 1737703490572, + "sizeInBytes": 244389, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/reflection.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 32, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.10666666666666667, + "characterCount": 637, + "nonWhitespaceCharacterCount": 598, + "newlineCount": 33, + "readingTimeInMinutes": 0.12075471698113208, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643832121914, + "modifiedDate": 1643832121914, + "sizeInBytes": 637, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.10666666666666667, + "wordCount": 32, + "characterCount": 637, + "nonWhitespaceCharacterCount": 598, + "newlineCount": 33 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/cursus-module-paniek.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 89, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2966666666666667, + "characterCount": 844, + "nonWhitespaceCharacterCount": 752, + "newlineCount": 12, + "readingTimeInMinutes": 0.33584905660377357, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1615965598360, + "modifiedDate": 1615965598360, + "sizeInBytes": 844, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.2966666666666667, + "wordCount": 89, + "characterCount": 844, + "nonWhitespaceCharacterCount": 752, + "newlineCount": 12 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan jerry jacobs bipolair 1 versie 3.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490318, + "modifiedDate": 1737703490318, + "sizeInBytes": 106944, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan jerry jacobs bipolair 1 versie 3 definitief.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490313, + "modifiedDate": 1737703490313, + "sizeInBytes": 107033, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan jerry jacobs bipolair 1 versie 3 definitief.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490307, + "modifiedDate": 1737703490307, + "sizeInBytes": 804509, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan bipolair 1 ingevuld versie 2021-02-19.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490285, + "modifiedDate": 1737703490285, + "sizeInBytes": 799154, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan bipolair 1 ingevuld versie 2 jerry.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490261, + "modifiedDate": 1737703490261, + "sizeInBytes": 801638, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan bipolair 1 ingevuld versie 2 definitief.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490253, + "modifiedDate": 1737703490253, + "sizeInBytes": 106916, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan bipolair 1 ingevuld versie 2 definitief.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490220, + "modifiedDate": 1737703490220, + "sizeInBytes": 801638, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan bipolair 1 ingevuld jerry.pages": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703490110, + "modifiedDate": 1737703490110, + "sizeInBytes": 832786, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Signaleringsplan Jerry Jacobs bipolair 1 ingevuld versie 2.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703489967, + "modifiedDate": 1737703489967, + "sizeInBytes": 100125, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Opdrachten & Huiswerk/Paniek-Oefeningen.txt": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 395, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.3166666666666667, + "characterCount": 2187, + "nonWhitespaceCharacterCount": 1772, + "newlineCount": 55, + "readingTimeInMinutes": 1.490566037735849, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1617617466020, + "modifiedDate": 1617617466020, + "sizeInBytes": 2188, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.3166666666666667, + "wordCount": 395, + "characterCount": 2187, + "nonWhitespaceCharacterCount": 1772, + "newlineCount": 55 + } + }, + "2021/GGzE/Hulp contact gevraagd Afbouwen tot 0mg olanzapine verloop tot nu toe.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703489916, + "modifiedDate": 1737703489916, + "sizeInBytes": 3702709, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/GGzE Cursusmap Zelfmanagementtraining voor Clienten met een bipolaire stoornis - grip op je stemmingsschommelingen.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703489588, + "modifiedDate": 1737703489588, + "sizeInBytes": 22816329, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Episode #3 hulpvragen en gesprek Jules.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 264, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.88, + "characterCount": 1970, + "nonWhitespaceCharacterCount": 1610, + "newlineCount": 34, + "readingTimeInMinutes": 0.9962264150943396, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1640787526175, + "modifiedDate": 1640787526175, + "sizeInBytes": 1971, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.88, + "wordCount": 264, + "characterCount": 1970, + "nonWhitespaceCharacterCount": 1610, + "newlineCount": 34 + } + }, + "2021/GGzE/Documenten/sociale_cirkel_bipolaire_stoornis_psycho_educatie.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703488733, + "modifiedDate": 1737703488733, + "sizeInBytes": 81033, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/Werkboek zelfmanagementtraining (sept 2018).docx": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1610125062000, + "modifiedDate": 1610125062000, + "sizeInBytes": 138577, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/Signaleringsplan bipolair 2 leeg nieuw user alta.docx": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1610114020000, + "modifiedDate": 1610114020000, + "sizeInBytes": 24976, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/Signaleringsplan bipolair 1 leeg nieuw user alta.docx": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1610114020000, + "modifiedDate": 1610114020000, + "sizeInBytes": 22767, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/PE bijeenkomst 4 zelfmanagement deel 2 avond leefstijl.pptx": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703488544, + "modifiedDate": 1737703488544, + "sizeInBytes": 2562919, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/PE bijeenkomst 3 zelfmanagement deel 1 september 2017.pptx": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703488262, + "modifiedDate": 1737703488262, + "sizeInBytes": 1320408, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/LCM-C-prosp-1maand.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703488203, + "modifiedDate": 1737703488203, + "sizeInBytes": 13755, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210212_171424.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703488163, + "modifiedDate": 1737703488163, + "sizeInBytes": 3414573, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210212_171405.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703487859, + "modifiedDate": 1737703487859, + "sizeInBytes": 2924589, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210212_171349.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703487646, + "modifiedDate": 1737703487646, + "sizeInBytes": 3058081, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210205_170656.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703487330, + "modifiedDate": 1737703487330, + "sizeInBytes": 3349614, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210205_170640.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703486993, + "modifiedDate": 1737703486993, + "sizeInBytes": 3165950, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210205_170620.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703486916, + "modifiedDate": 1737703486916, + "sizeInBytes": 3229542, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210205_170600.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703486307, + "modifiedDate": 1737703486307, + "sizeInBytes": 3438957, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210129_164953.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703486111, + "modifiedDate": 1737703486111, + "sizeInBytes": 3452581, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210129_164929.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703485795, + "modifiedDate": 1737703485795, + "sizeInBytes": 2993184, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210129_160944.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703485516, + "modifiedDate": 1737703485516, + "sizeInBytes": 3124140, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210129_160913.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703485282, + "modifiedDate": 1737703485282, + "sizeInBytes": 2025472, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210122_171100.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703485051, + "modifiedDate": 1737703485051, + "sizeInBytes": 2992067, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210122_171046.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703484899, + "modifiedDate": 1737703484899, + "sizeInBytes": 2986706, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210122_171027.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703484642, + "modifiedDate": 1737703484642, + "sizeInBytes": 2980465, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/IMG_20210122_171007.jpg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703484307, + "modifiedDate": 1737703484307, + "sizeInBytes": 2909256, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/GGzE/Documenten/Behandelplanbespreking GGzE 1 dec 2020.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703484226, + "modifiedDate": 1737703484226, + "sizeInBytes": 207789, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/Er schuilt een beest in mij.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 349, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.1633333333333333, + "characterCount": 1894, + "nonWhitespaceCharacterCount": 1531, + "newlineCount": 25, + "readingTimeInMinutes": 1.3169811320754716, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1689337423912, + "modifiedDate": 1689337423912, + "sizeInBytes": 1900, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.1633333333333333, + "wordCount": 349, + "characterCount": 1894, + "nonWhitespaceCharacterCount": 1531, + "newlineCount": 25 + } + }, + "2021/Donkere december.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 308, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.0266666666666666, + "characterCount": 1650, + "nonWhitespaceCharacterCount": 1340, + "newlineCount": 5, + "readingTimeInMinutes": 1.1622641509433962, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1689337347564, + "modifiedDate": 1689337347564, + "sizeInBytes": 1650, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.0266666666666666, + "wordCount": 308, + "characterCount": 1650, + "nonWhitespaceCharacterCount": 1340, + "newlineCount": 5 + } + }, + "2021/Doelen 2022.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 54, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.18, + "characterCount": 420, + "nonWhitespaceCharacterCount": 350, + "newlineCount": 14, + "readingTimeInMinutes": 0.2037735849056604, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1644243932530, + "modifiedDate": 1644243932530, + "sizeInBytes": 420, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.18, + "wordCount": 54, + "characterCount": 420, + "nonWhitespaceCharacterCount": 350, + "newlineCount": 14 + } + }, + "2021/Datum prikker mail fam mam.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 26, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.08666666666666667, + "characterCount": 613, + "nonWhitespaceCharacterCount": 578, + "newlineCount": 14, + "readingTimeInMinutes": 0.09811320754716982, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1635179810714, + "modifiedDate": 1635179810714, + "sizeInBytes": 613, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.08666666666666667, + "wordCount": 26, + "characterCount": 613, + "nonWhitespaceCharacterCount": 578, + "newlineCount": 14 + } + }, + "2021/Cocktail of downers.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 434, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 1.4466666666666668, + "characterCount": 2480, + "nonWhitespaceCharacterCount": 2033, + "newlineCount": 27, + "readingTimeInMinutes": 1.6377358490566039, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1643832067924, + "modifiedDate": 1643832067924, + "sizeInBytes": 2480, + "sessionStart": { + "noteCount": 1, + "pageCount": 1.4466666666666668, + "wordCount": 434, + "characterCount": 2480, + "nonWhitespaceCharacterCount": 2033, + "newlineCount": 27 + } + }, + "2021/DRAFT Innovative software comes with a price tag.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703484220, + "modifiedDate": 1737703484220, + "sizeInBytes": 66146, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2021/CICD/cicd-terminology.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 9, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.03, + "characterCount": 77, + "nonWhitespaceCharacterCount": 59, + "newlineCount": 18, + "readingTimeInMinutes": 0.033962264150943396, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1635798231139, + "modifiedDate": 1635798231139, + "sizeInBytes": 77, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.03, + "wordCount": 9, + "characterCount": 77, + "nonWhitespaceCharacterCount": 59, + "newlineCount": 18 + } + }, + "2021/CICD/cicd-platforms-and-software.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 158, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.5266666666666666, + "characterCount": 5432, + "nonWhitespaceCharacterCount": 2258, + "newlineCount": 29, + "readingTimeInMinutes": 0.5962264150943396, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1705654162280, + "modifiedDate": 1705654162280, + "sizeInBytes": 5433, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.5266666666666666, + "wordCount": 158, + "characterCount": 5432, + "nonWhitespaceCharacterCount": 2258, + "newlineCount": 29 + } + }, + "2021/CICD/cicd-agent.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 26, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.08666666666666667, + "characterCount": 522, + "nonWhitespaceCharacterCount": 253, + "newlineCount": 11, + "readingTimeInMinutes": 0.09811320754716982, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1635798077430, + "modifiedDate": 1635798077430, + "sizeInBytes": 522, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.08666666666666667, + "wordCount": 26, + "characterCount": 522, + "nonWhitespaceCharacterCount": 253, + "newlineCount": 11 + } + }, + "2021/A tale about open-source software experience.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 1318, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 4.3933333333333335, + "characterCount": 9483, + "nonWhitespaceCharacterCount": 8137, + "newlineCount": 46, + "readingTimeInMinutes": 4.973584905660378, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1734281187291, + "modifiedDate": 1734281187291, + "sizeInBytes": 9483, + "sessionStart": { + "noteCount": 1, + "pageCount": 4.3933333333333335, + "wordCount": 1318, + "characterCount": 9483, + "nonWhitespaceCharacterCount": 8137, + "newlineCount": 46 + } + }, + "2021/A dark therapy experiment with blue light blocking glasses for m.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 1770, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 5.9, + "characterCount": 13150, + "nonWhitespaceCharacterCount": 11224, + "newlineCount": 160, + "readingTimeInMinutes": 6.679245283018868, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1689337382800, + "modifiedDate": 1689337382800, + "sizeInBytes": 13176, + "sessionStart": { + "noteCount": 1, + "pageCount": 5.9, + "wordCount": 1770, + "characterCount": 13150, + "nonWhitespaceCharacterCount": 11224, + "newlineCount": 160 + } + }, + "2021/2021 ASSERTIEF handout.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703484195, + "modifiedDate": 1737703484195, + "sizeInBytes": 1860826, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2020/golf-4-koppeling-nota.jpeg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1617277303396, + "modifiedDate": 1617277303396, + "sizeInBytes": 97854, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2020/golf-4-distributieriem-nota.jpeg": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1617270649051, + "modifiedDate": 1617270649051, + "sizeInBytes": 98239, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2020/golf-4-aantekeningen.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 24, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.08, + "characterCount": 541, + "nonWhitespaceCharacterCount": 500, + "newlineCount": 10, + "readingTimeInMinutes": 0.09056603773584905, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1617521324606, + "modifiedDate": 1617521324606, + "sizeInBytes": 541, + "sessionStart": { + "noteCount": 1, + "pageCount": 0.08, + "wordCount": 24, + "characterCount": 541, + "nonWhitespaceCharacterCount": 500, + "newlineCount": 10 + } + }, + "2020/2020-03-05_zelfreflectie_psychose_adhd.rtf": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 2043, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 6.81, + "characterCount": 12989, + "nonWhitespaceCharacterCount": 10881, + "newlineCount": 82, + "readingTimeInMinutes": 7.709433962264151, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1612729631537, + "modifiedDate": 1612729631537, + "sizeInBytes": 12989, + "sessionStart": { + "noteCount": 1, + "pageCount": 6.81, + "wordCount": 2043, + "characterCount": 12989, + "nonWhitespaceCharacterCount": 10881, + "newlineCount": 82 + } + }, + "2019/Nieuwsbrief #24 - knoflook kweken.pdf": { + "isCountable": false, + "targetNodeType": "file", + "noteCount": 0, + "wordCount": 0, + "wordCountTowardGoal": 0, + "wordGoal": 0, + "pageCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0, + "readingTimeInMinutes": 0, + "linkCount": 0, + "embedCount": 0, + "aliases": [], + "createdDate": 1737703483706, + "modifiedDate": 1737703483706, + "sizeInBytes": 53546701, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + }, + "2018/yoga-terschelling-vakantie-met-aaltje-2018.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 885, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 2.95, + "characterCount": 4984, + "nonWhitespaceCharacterCount": 4086, + "newlineCount": 42, + "readingTimeInMinutes": 3.339622641509434, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1667338933318, + "modifiedDate": 1667338933318, + "sizeInBytes": 5007, + "sessionStart": { + "noteCount": 1, + "pageCount": 2.95, + "wordCount": 885, + "characterCount": 4984, + "nonWhitespaceCharacterCount": 4086, + "newlineCount": 42 + } + }, + "2025/review-niora-aug-2025-draft.md": { + "isCountable": true, + "targetNodeType": "file", + "noteCount": 1, + "wordCount": 60, + "wordCountTowardGoal": 0, + "wordGoal": null, + "pageCount": 0.2, + "characterCount": 397, + "nonWhitespaceCharacterCount": 333, + "newlineCount": 13, + "readingTimeInMinutes": 0.22641509433962265, + "linkCount": 0, + "embedCount": 0, + "aliases": null, + "createdDate": 1755753440010, + "modifiedDate": 1755753762695, + "sizeInBytes": 397, + "sessionStart": { + "noteCount": 0, + "pageCount": 0, + "wordCount": 0, + "characterCount": 0, + "nonWhitespaceCharacterCount": 0, + "newlineCount": 0 + } + } + } +} \ No newline at end of file diff --git a/.obsidian/plugins/novel-word-count/main.js b/.obsidian/plugins/novel-word-count/main.js new file mode 100644 index 0000000..a4d4035 --- /dev/null +++ b/.obsidian/plugins/novel-word-count/main.js @@ -0,0 +1,2064 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// main.ts +var main_exports = {}; +__export(main_exports, { + default: () => NovelWordCountPlugin +}); +module.exports = __toCommonJS(main_exports); + +// logic/debug.ts +var DebugHelper = class { + constructor() { + this.debugMode = false; + this.idCounter = 0; + } + setDebugMode(debug) { + this.debugMode = debug; + } + debug(...args) { + if (!this.debugMode) { + return; + } + console.log("novel-word-count:", ...args); + } + error(message) { + if (!this.debugMode) { + return; + } + console.error(message); + } + debugStart(name) { + if (!this.debugMode) { + return () => { + }; + } + var qualifiedName = `novel-word-count|${name} (${++this.idCounter})`; + console.time(qualifiedName); + return () => console.timeEnd(qualifiedName); + } +}; + +// logic/event.ts +var import_obsidian = require("obsidian"); + +// logic/cancellation.ts +var CANCEL = Symbol("Cancel"); +var CancellationToken = class { + constructor() { + this._isCancelled = false; + } + get isCancelled() { + return this._isCancelled; + } + [CANCEL]() { + this._isCancelled = true; + } +}; +var CancellationTokenSource = class { + constructor() { + this.token = new CancellationToken(); + } + cancel() { + this.token[CANCEL](); + } +}; + +// logic/event.ts +var EventHelper = class { + constructor(plugin, app, debugHelper, fileHelper) { + this.plugin = plugin; + this.app = app; + this.debugHelper = debugHelper; + this.fileHelper = fileHelper; + this.cancellationSources = []; + } + async handleEvents() { + const debouncedFileModified = (0, import_obsidian.debounce)(async (file) => { + const countToken = this.registerNewCountToken(); + await this.fileHelper.updateFileCounts( + file, + this.plugin.savedData.cachedCounts, + countToken.token + ); + this.cancelToken(countToken); + await this.plugin.updateDisplayedCounts(file); + this.plugin.saveSettingsDebounced(); + }, 500); + this.plugin.registerEvent( + this.app.metadataCache.on("changed", async (file) => { + this.debugHelper.debug( + "[changed] metadataCache hook fired, scheduling file for analysis", + file.path + ); + debouncedFileModified(file); + }) + ); + this.app.workspace.onLayoutReady(() => { + this.plugin.registerEvent( + this.app.vault.on("create", async (file) => { + this.debugHelper.debug( + "[create] vault hook fired, analyzing file", + file.path + ); + const countToken = this.registerNewCountToken(); + await this.fileHelper.updateFileCounts( + file, + this.plugin.savedData.cachedCounts, + countToken.token + ); + this.cancelToken(countToken); + await this.plugin.updateDisplayedCounts(file); + await this.plugin.saveSettings(); + }) + ); + this.plugin.registerEvent( + this.app.vault.on("modify", async (file) => { + this.debugHelper.debug( + "[modify] vault hook fired, scheduling file for analysis", + file.path + ); + debouncedFileModified(file); + }) + ); + }); + this.plugin.registerEvent( + this.app.vault.on("delete", async (file) => { + this.debugHelper.debug( + "[delete] vault hook fired, forgetting file", + file.path + ); + this.fileHelper.removeFileCounts( + file.path, + this.plugin.savedData.cachedCounts + ); + await this.plugin.updateDisplayedCounts(file); + await this.plugin.saveSettings(); + }) + ); + this.plugin.registerEvent( + this.app.vault.on("rename", async (file, oldPath) => { + if (file instanceof import_obsidian.TFolder) { + return; + } + this.debugHelper.debug( + "[rename] vault hook fired, recounting file", + file.path + ); + this.fileHelper.removeFileCounts( + oldPath, + this.plugin.savedData.cachedCounts + ); + const countToken = this.registerNewCountToken(); + await this.fileHelper.updateFileCounts( + file, + this.plugin.savedData.cachedCounts, + countToken.token + ); + this.cancelToken(countToken); + await this.plugin.updateDisplayedCounts(file); + await this.plugin.saveSettings(); + }) + ); + const reshowCountsIfNeeded = async (hookName) => { + this.debugHelper.debug(`[${hookName}] hook fired`); + const fileExplorerLeaf = await this.plugin.getFileExplorerLeaf(); + if (this.isContainerTouched(fileExplorerLeaf)) { + this.debugHelper.debug( + "container already touched, skipping display update" + ); + return; + } + this.debugHelper.debug("container is clean, updating display"); + await this.plugin.updateDisplayedCounts(); + }; + this.plugin.registerEvent( + this.app.workspace.on( + "layout-change", + (0, import_obsidian.debounce)(reshowCountsIfNeeded.bind(this, "layout-change"), 1e3) + ) + ); + } + isContainerTouched(leaf) { + const container = leaf.view.containerEl; + return container.className.includes("novel-word-count--"); + } + async reinitializeAllCounts() { + this.cancelAllCountTokens(); + const countToken = this.registerNewCountToken(); + this.debugHelper.debug("refreshAllCounts"); + this.plugin.savedData.cachedCounts = await this.fileHelper.initializeAllFileCounts( + countToken.token + ); + this.cancelToken(countToken); + await this.plugin.saveSettings(); + } + /* + CANCELLATION HANDLING + */ + registerNewCountToken() { + const cancellationSource = new CancellationTokenSource(); + this.cancellationSources.push(cancellationSource); + return cancellationSource; + } + cancelToken(source) { + source.cancel(); + if (this.cancellationSources.includes(source)) { + this.cancellationSources.splice( + this.cancellationSources.indexOf(source), + 1 + ); + } + } + cancelAllCountTokens() { + for (const source of this.cancellationSources) { + source.cancel(); + } + this.cancellationSources = []; + } +}; + +// logic/file.ts +var import_obsidian2 = require("obsidian"); + +// logic/settings.ts +var $CountType = /* @__PURE__ */ (($CountType2) => { + $CountType2["None"] = "none"; + $CountType2["Word"] = "word"; + $CountType2["Page"] = "page"; + $CountType2["PageDecimal"] = "pagedecimal"; + $CountType2["Linebreak"] = "linebreak"; + $CountType2["ReadTime"] = "readtime"; + $CountType2["PercentGoal"] = "percentgoal"; + $CountType2["Note"] = "note"; + $CountType2["Character"] = "character"; + $CountType2["Link"] = "link"; + $CountType2["Embed"] = "embed"; + $CountType2["Alias"] = "alias"; + $CountType2["Created"] = "created"; + $CountType2["Modified"] = "modified"; + $CountType2["FileSize"] = "filesize"; + $CountType2["FrontmatterKey"] = "frontmatterKey"; + $CountType2["TrackSession"] = "tracksession"; + return $CountType2; +})($CountType || {}); +var COUNT_TYPES = Object.values($CountType); +var SESSION_COUNT_TYPES = [ + "word" /* Word */, + "page" /* Page */, + "pagedecimal" /* PageDecimal */, + "linebreak" /* Linebreak */, + "note" /* Note */, + "character" /* Character */ +]; +var COUNT_TYPE_DISPLAY_STRINGS = { + ["none" /* None */]: "None", + ["word" /* Word */]: "Word Count", + ["page" /* Page */]: "Page Count", + ["pagedecimal" /* PageDecimal */]: "Page Count (decimal)", + ["linebreak" /* Linebreak */]: "Line Break Count", + ["readtime" /* ReadTime */]: "Reading Time", + ["percentgoal" /* PercentGoal */]: "% of Word Goal", + ["note" /* Note */]: "Note Count", + ["character" /* Character */]: "Character Count", + ["link" /* Link */]: "Link Count", + ["embed" /* Embed */]: "Embed Count", + ["alias" /* Alias */]: "First Alias", + ["created" /* Created */]: "Created Date", + ["modified" /* Modified */]: "Last Updated Date", + ["filesize" /* FileSize */]: "File Size", + ["frontmatterKey" /* FrontmatterKey */]: "Frontmatter Key", + ["tracksession" /* TrackSession */]: "Track Session" +}; +var COUNT_TYPE_DESCRIPTIONS = { + ["none" /* None */]: "Hidden.", + ["word" /* Word */]: "Total words.", + ["page" /* Page */]: "Total pages, rounded up.", + ["pagedecimal" /* PageDecimal */]: "Total pages, precise to 2 digits after the decimal.", + ["linebreak" /* Linebreak */]: "Newlines (\xB6), including empty lines.", + ["readtime" /* ReadTime */]: "Estimated time to read the note.", + ["percentgoal" /* PercentGoal */]: "Set a word goal by adding the 'word-goal' property to a note.", + ["note" /* Note */]: "Total notes.", + ["character" /* Character */]: "Total characters (letters, symbols, numbers, and spaces).", + ["link" /* Link */]: "Total links to other notes.", + ["embed" /* Embed */]: "Total embedded images, files, and notes.", + ["alias" /* Alias */]: "The first alias property of each note.", + ["created" /* Created */]: "Creation date. (On folders: earliest creation date of any note.)", + ["modified" /* Modified */]: "Date of last edit. (On folders: latest edit date of any note.)", + ["filesize" /* FileSize */]: "Total size on hard drive.", + ["frontmatterKey" /* FrontmatterKey */]: "Key in the frontmatter block.", + ["tracksession" /* TrackSession */]: "Track progress since last Obsidian startup, plugin init, settings change, or recount" +}; +var UNFORMATTABLE_COUNT_TYPES = [ + "none" /* None */, + "alias" /* Alias */, + "filesize" /* FileSize */, + "readtime" /* ReadTime */ +]; +var COUNT_TYPE_DEFAULT_SHORT_SUFFIXES = { + ["word" /* Word */]: "w", + ["page" /* Page */]: "p", + ["pagedecimal" /* PageDecimal */]: "p", + ["linebreak" /* Linebreak */]: "\xB6", + ["percentgoal" /* PercentGoal */]: "%", + ["note" /* Note */]: "n", + ["character" /* Character */]: "ch", + ["link" /* Link */]: "x", + ["embed" /* Embed */]: "em", + ["created" /* Created */]: "/c", + ["modified" /* Modified */]: "/u", + ["frontmatterKey" /* FrontmatterKey */]: "", + ["tracksession" /* TrackSession */]: "/s" +}; +function getDescription(countType) { + return `[${COUNT_TYPE_DISPLAY_STRINGS[countType]}] ${COUNT_TYPE_DESCRIPTIONS[countType]}`; +} +var ALIGNMENT_TYPES = [ + "inline" /* Inline */, + "right" /* Right */, + "below" /* Below */ +]; +var DEFAULT_SETTINGS = { + // FORMATTING + useAdvancedFormatting: false, + // NOTES + countType: "word" /* Word */, + countConfig: { + customSuffix: "w", + $sessionCountType: "word" /* Word */ + }, + countType2: "none" /* None */, + countConfig2: { + $sessionCountType: "word" /* Word */ + }, + countType3: "none" /* None */, + countConfig3: { + $sessionCountType: "word" /* Word */ + }, + pipeSeparator: "|", + abbreviateDescriptions: false, + alignment: "inline" /* Inline */, + // FOLDERS + showSameCountsOnFolders: true, + folderCountType: "word" /* Word */, + folderCountConfig: { + customSuffix: "w", + $sessionCountType: "word" /* Word */ + }, + folderCountType2: "none" /* None */, + folderCountConfig2: { + $sessionCountType: "word" /* Word */ + }, + folderCountType3: "none" /* None */, + folderCountConfig3: { + $sessionCountType: "word" /* Word */ + }, + folderPipeSeparator: "|", + folderAbbreviateDescriptions: false, + folderAlignment: "inline" /* Inline */, + // ROOT + showSameCountsOnRoot: true, + rootCountType: "word" /* Word */, + rootCountConfig: { + customSuffix: "w", + $sessionCountType: "word" /* Word */ + }, + rootCountType2: "none" /* None */, + rootCountConfig2: { + $sessionCountType: "word" /* Word */ + }, + rootCountType3: "none" /* None */, + rootCountConfig3: { + $sessionCountType: "word" /* Word */ + }, + rootPipeSeparator: "|", + rootAbbreviateDescriptions: false, + // ADVANCED + showAdvanced: false, + labelOpacity: 0.75, + wordsPerMinute: 265, + charsPerMinute: 500, + wordsPerPage: 300, + charsPerPage: 1500, + charsPerPageIncludesWhitespace: false, + characterCountType: "AllCharacters" /* StringLength */, + pageCountType: "ByWords" /* ByWords */, + includeDirectories: "", + excludeComments: false, + excludeCodeBlocks: false, + excludeNonVisibleLinkPortions: false, + excludeFootnotes: false, + momentDateFormat: "", + debugMode: false +}; + +// logic/parser.ts +var cjkRegex = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/gu; +var allSymbolsRegex = /[\p{S}\p{P}]/gu; +function countMarkdown(content, config) { + content = removeNonCountedContent(content, config); + let wordSequences = content.replace(cjkRegex, " ").replace(allSymbolsRegex, "").trim().split(/\s+/); + if (wordSequences.length === 1 && wordSequences[0] === "") { + wordSequences = []; + } + let lineSequences = content.split("\n"); + if (lineSequences.length === 1 && lineSequences[0] === "") { + lineSequences = []; + } + const result = { + charCount: content.length, + nonWhitespaceCharCount: countNonWhitespaceCharacters(content), + spaceDelimitedWordCount: wordSequences.length, + cjkWordCount: (content.match(cjkRegex) || []).length, + newlineCount: lineSequences.length + }; + return result; +} +var whitespaceRegex = /\s/g; +function countNonWhitespaceCharacters(content) { + return content.replace(whitespaceRegex, "").length; +} +function removeNonCountedContent(content, config) { + if (config.excludeCodeBlocks) { + content = content.replace(/(```.+?```)/gims, ""); + } + if (config.excludeComments) { + content = content.replace(/(%%.+?%%|)/gims, ""); + } + if (config.excludeNonVisibleLinkPortions) { + content = content.replace(/\[([^\]]*?)\]\([^\)]*?\)/gim, "$1"); + content = content.replace(/\[\[(.*?)\]\]/gim, (_, $1) => { + return !$1 ? "" : $1.includes("|") ? $1.slice($1.indexOf("|") + 1) : $1; + }); + } + if (config.excludeFootnotes) { + content = content.replace(/\[\^.+?\]: .*/gim, ""); + content = content.replace(/\[\^.+?\]/gim, ""); + } + return content; +} + +// logic/canvas.ts +var CanvasHelper = class { + constructor(debug) { + this.debug = debug; + } + getCanvasText(file, content) { + try { + const canvas = JSON.parse(content); + const texts = canvas.nodes.map((node) => node.text).filter((text) => !!text); + return texts.join("\n"); + } catch (ex) { + this.debug.error(`Unable to parse canvas file [${file.name}]: ${ex}`); + return ""; + } + } +}; + +// logic/file.ts +var FileHelper = class { + constructor(app, plugin) { + this.app = app; + this.plugin = plugin; + this.debugHelper = new DebugHelper(); + this.canvasHelper = new CanvasHelper(this.debugHelper); + this.pathIncludeMatchers = []; + this.pathExcludeMatchers = []; + this.FileTypeAllowlist = /* @__PURE__ */ new Set([ + "", + // Markdown extensions + "markdown", + "md", + "mdml", + "mdown", + "mdtext", + "mdtxt", + "mdwn", + "mkd", + "mkdn", + // Obsidian canvas + "canvas", + // Text files + "txt", + "text", + "rtf", + // MD with embedded code + "qmd", + "rmd", + // MD for screenwriters + "fountain", + // LaTeX files + "tex" + ]); + } + get settings() { + return this.plugin.settings; + } + get vault() { + return this.app.vault; + } + async initializeAllFileCounts(cancellationToken) { + const debugEnd = this.debugHelper.debugStart("getAllFileCounts"); + const files = this.vault.getFiles(); + if (typeof this.plugin.settings.includeDirectories === "string" && this.plugin.settings.includeDirectories.trim() !== "*" && this.plugin.settings.includeDirectories.trim() !== "") { + const allMatchers = this.plugin.settings.includeDirectories.trim().split(",").map((matcher) => matcher.trim()); + const includeMatchers = allMatchers.filter( + (matcher) => !matcher.startsWith("!") + ); + const excludeMatchers = allMatchers.filter((matcher) => matcher.startsWith("!")).map((matcher) => matcher.slice(1)); + const matchedFiles = files.filter( + (file) => (includeMatchers.length === 0 ? true : includeMatchers.some((matcher) => file.path.includes(matcher))) && !excludeMatchers.some((matcher) => file.path.includes(matcher)) + ); + if (matchedFiles.length > 0) { + this.pathIncludeMatchers = includeMatchers; + this.pathExcludeMatchers = excludeMatchers; + } else { + this.pathIncludeMatchers = []; + this.pathExcludeMatchers = []; + this.debugHelper.debug( + "No files matched by includeDirectories setting. Defaulting to all files." + ); + } + } + const counts = {}; + for (const file of files) { + if (cancellationToken.isCancelled) { + break; + } + this.setCounts(counts, file, true); + } + debugEnd(); + return counts; + } + getCachedDataForPath(counts, path) { + if (counts.hasOwnProperty(path)) { + return counts[path]; + } + const childPaths = this.getChildPaths(counts, path); + const directoryDefault = { + isCountable: false, + targetNodeType: this.isRoot(path) ? "root" /* Root */ : "directory" /* Directory */, + noteCount: 0, + wordCount: 0, + wordCountTowardGoal: 0, + wordGoal: 0, + pageCount: 0, + characterCount: 0, + nonWhitespaceCharacterCount: 0, + newlineCount: 0, + readingTimeInMinutes: 0, + linkCount: 0, + embedCount: 0, + aliases: null, + createdDate: 0, + modifiedDate: 0, + sizeInBytes: 0, + sessionStart: { + noteCount: 0, + pageCount: 0, + wordCount: 0, + characterCount: 0, + nonWhitespaceCharacterCount: 0, + newlineCount: 0 + } + }; + return childPaths.reduce((total, childPath) => { + const childCount = this.getCachedDataForPath(counts, childPath); + return { + isCountable: total.isCountable || childCount.isCountable, + targetNodeType: total.targetNodeType, + noteCount: total.noteCount + childCount.noteCount, + linkCount: total.linkCount + childCount.linkCount, + embedCount: total.embedCount + childCount.embedCount, + aliases: [], + wordCount: total.wordCount + childCount.wordCount, + wordCountTowardGoal: total.wordCountTowardGoal + childCount.wordCountTowardGoal, + wordGoal: total.wordGoal + childCount.wordGoal, + pageCount: total.pageCount + childCount.pageCount, + characterCount: total.characterCount + childCount.characterCount, + nonWhitespaceCharacterCount: total.nonWhitespaceCharacterCount + childCount.nonWhitespaceCharacterCount, + newlineCount: total.newlineCount + childCount.newlineCount, + readingTimeInMinutes: total.readingTimeInMinutes + childCount.readingTimeInMinutes, + createdDate: total.createdDate === 0 ? childCount.createdDate : Math.min(total.createdDate, childCount.createdDate), + modifiedDate: Math.max(total.modifiedDate, childCount.modifiedDate), + sizeInBytes: total.sizeInBytes + childCount.sizeInBytes, + sessionStart: { + noteCount: total.sessionStart.noteCount + childCount.sessionStart.noteCount, + pageCount: total.sessionStart.pageCount + childCount.sessionStart.pageCount, + wordCount: total.sessionStart.wordCount + childCount.sessionStart.wordCount, + characterCount: total.sessionStart.characterCount + childCount.sessionStart.characterCount, + nonWhitespaceCharacterCount: total.sessionStart.nonWhitespaceCharacterCount + childCount.sessionStart.nonWhitespaceCharacterCount, + newlineCount: total.sessionStart.newlineCount + childCount.sessionStart.newlineCount + } + }; + }, directoryDefault); + } + setDebugMode(debug) { + this.debugHelper.setDebugMode(debug); + } + removeFileCounts(path, counts) { + this.removeCounts(counts, path); + for (const childPath of this.getChildPaths(counts, path)) { + this.removeCounts(counts, childPath); + } + } + async updateFileCounts(abstractFile, counts, cancellationToken) { + if (abstractFile instanceof import_obsidian2.TFolder) { + for (const child of abstractFile.children) { + await this.updateFileCounts(child, counts, cancellationToken); + } + return; + } + if (abstractFile instanceof import_obsidian2.TFile) { + await this.setCounts(counts, abstractFile, false); + } + } + countEmbeds(metadata) { + var _a, _b; + return (_b = (_a = metadata == null ? void 0 : metadata.embeds) == null ? void 0 : _a.length) != null ? _b : 0; + } + countLinks(metadata) { + var _a, _b; + return (_b = (_a = metadata == null ? void 0 : metadata.links) == null ? void 0 : _a.length) != null ? _b : 0; + } + getChildPaths(counts, path) { + const childPaths = Object.keys(counts).filter( + (countPath) => path === "/" || countPath.startsWith(path + "/") + ); + return childPaths; + } + isRoot(path) { + return !path || path === "/"; + } + removeCounts(counts, path) { + delete counts[path]; + } + async setCounts(counts, file, startNewSession) { + var _a, _b; + const metadata = this.app.metadataCache.getFileCache( + file + ); + const shouldCountFile = this.shouldCountFile(file, metadata); + const existingSession = (_a = counts[file.path]) == null ? void 0 : _a.sessionStart; + counts[file.path] = { + isCountable: shouldCountFile, + targetNodeType: "file" /* File */, + noteCount: 0, + wordCount: 0, + wordCountTowardGoal: 0, + wordGoal: 0, + pageCount: 0, + characterCount: 0, + nonWhitespaceCharacterCount: 0, + newlineCount: 0, + readingTimeInMinutes: 0, + linkCount: 0, + embedCount: 0, + aliases: [], + createdDate: file.stat.ctime, + modifiedDate: file.stat.mtime, + sizeInBytes: file.stat.size, + sessionStart: startNewSession || !existingSession ? { + noteCount: 0, + pageCount: 0, + wordCount: 0, + characterCount: 0, + nonWhitespaceCharacterCount: 0, + newlineCount: 0 + } : existingSession + }; + if (!shouldCountFile) { + return; + } + let content = await this.vault.cachedRead(file); + if (file.extension.toLowerCase() === "canvas") { + content = this.canvasHelper.getCanvasText(file, content); + } else { + content = this.trimFrontmatter(content, metadata); + } + const countResult = countMarkdown(content, { + excludeCodeBlocks: this.settings.excludeCodeBlocks, + excludeComments: this.settings.excludeComments, + excludeNonVisibleLinkPortions: this.settings.excludeNonVisibleLinkPortions, + excludeFootnotes: this.settings.excludeFootnotes + }); + const combinedWordCount = countResult.cjkWordCount + countResult.spaceDelimitedWordCount; + const wordGoal = this.getWordGoal(metadata); + const cjkReadingTime = countResult.cjkWordCount / (this.settings.charsPerMinute || 500); + const spaceDelimitedReadingTime = countResult.spaceDelimitedWordCount / (this.settings.wordsPerMinute || 265); + const readingTimeInMinutes = cjkReadingTime + spaceDelimitedReadingTime; + let pageCount = 0; + if (this.settings.pageCountType === "ByWords" /* ByWords */) { + const wordsPerPage = Number(this.settings.wordsPerPage); + const wordsPerPageValid = !isNaN(wordsPerPage) && wordsPerPage > 0; + pageCount = combinedWordCount / (wordsPerPageValid ? wordsPerPage : 300); + } else if (this.settings.pageCountType === "ByChars" /* ByChars */ && !this.settings.charsPerPageIncludesWhitespace) { + const charsPerPage = Number(this.settings.charsPerPage); + const charsPerPageValid = !isNaN(charsPerPage) && charsPerPage > 0; + pageCount = countResult.nonWhitespaceCharCount / (charsPerPageValid ? charsPerPage : 1500); + } else if (this.settings.pageCountType === "ByChars" /* ByChars */ && this.settings.charsPerPageIncludesWhitespace) { + const charsPerPage = Number(this.settings.charsPerPage); + const charsPerPageValid = !isNaN(charsPerPage) && charsPerPage > 0; + pageCount = countResult.charCount / (charsPerPageValid ? charsPerPage : 1500); + } + Object.assign(counts[file.path], { + noteCount: 1, + wordCount: combinedWordCount, + wordCountTowardGoal: wordGoal !== null ? combinedWordCount : 0, + wordGoal, + pageCount, + characterCount: countResult.charCount, + nonWhitespaceCharacterCount: countResult.nonWhitespaceCharCount, + newlineCount: countResult.newlineCount, + readingTimeInMinutes, + linkCount: this.countLinks(metadata), + embedCount: this.countEmbeds(metadata), + aliases: (0, import_obsidian2.parseFrontMatterAliases)(metadata == null ? void 0 : metadata.frontmatter), + frontmatter: metadata == null ? void 0 : metadata.frontmatter, + sessionStart: { + ...(_b = counts[file.path]) == null ? void 0 : _b.sessionStart, + ...startNewSession ? { + noteCount: 1, + pageCount, + wordCount: combinedWordCount, + characterCount: countResult.charCount, + nonWhitespaceCharacterCount: countResult.nonWhitespaceCharCount, + newlineCount: countResult.newlineCount + } : {} + } + }); + } + getWordGoal(metadata) { + const goal = metadata && metadata.frontmatter && metadata.frontmatter["word-goal"]; + if (!goal || isNaN(Number(goal))) { + return null; + } + return Number(goal); + } + trimFrontmatter(content, metadata) { + let meaningfulContent = content; + const hasFrontmatter = !!metadata && !!metadata.frontmatter; + if (hasFrontmatter) { + const frontmatterPos = metadata.frontmatterPosition || metadata.frontmatter.position; + meaningfulContent = frontmatterPos && frontmatterPos.start && frontmatterPos.end ? meaningfulContent.slice(0, frontmatterPos.start.offset) + meaningfulContent.slice(frontmatterPos.end.offset) : meaningfulContent; + } + return meaningfulContent; + } + shouldCountFile(file, metadata) { + if (this.pathIncludeMatchers.length > 0 && !this.pathIncludeMatchers.some((matcher) => file.path.includes(matcher))) { + return false; + } + if (this.pathExcludeMatchers.length > 0 && this.pathExcludeMatchers.some((matcher) => file.path.includes(matcher))) { + return false; + } + if (!this.FileTypeAllowlist.has(file.extension.toLowerCase())) { + return false; + } + if (!metadata) { + return true; + } + if (metadata.frontmatter && metadata.frontmatter.hasOwnProperty("wordcount") && (metadata.frontmatter.wordcount === null || metadata.frontmatter.wordcount === false || metadata.frontmatter.wordcount === "false")) { + return false; + } + const tags = (0, import_obsidian2.getAllTags)(metadata).map((tag) => tag.toLowerCase()); + if (tags.length && (tags.includes("#excalidraw") || tags.filter((tag) => tag.startsWith("#exclude")).map((tag) => tag.replace(/[-_]/g, "")).includes("#excludefromwordcount"))) { + return false; + } + return true; + } +}; + +// logic/locale_format.ts +var locales = [...navigator.languages, "en-US"]; +var NumberFormatDefault = new Intl.NumberFormat(locales); +var NumberFormatDecimal = new Intl.NumberFormat(locales, { + minimumFractionDigits: 1, + maximumFractionDigits: 2 +}); +var NumberFormatFileSize = new Intl.NumberFormat(locales, { + minimumFractionDigits: 0, + maximumFractionDigits: 2 +}); + +// logic/filesize.ts +var formatThresholds = [{ + suffix: "B", + suffixLong: " B", + divisor: 1 +}, { + suffix: "kB", + suffixLong: " kB", + divisor: 1e3 +}, { + suffix: "MB", + suffixLong: " MB", + divisor: 1e6 +}, { + suffix: "GB", + suffixLong: " GB", + divisor: 1e9 +}, { + suffix: "TB", + suffixLong: " TB", + divisor: 1e12 +}]; +var FileSizeHelper = class { + formatFileSize(bytes, shouldAbbreviate) { + const largestThreshold = formatThresholds.last(); + for (const formatThreshold of formatThresholds) { + if (bytes < formatThreshold.divisor * 1e3 || formatThreshold === largestThreshold) { + const units = bytes / formatThreshold.divisor; + const suffix = shouldAbbreviate ? formatThreshold.suffix : formatThreshold.suffixLong; + return `${NumberFormatFileSize.format(units)}${suffix}`; + } + } + return `?B`; + } +}; + +// logic/readtime.ts +var ReadTimeHelper = class { + formatReadTime(minutes, shouldAbbreviate) { + const final = shouldAbbreviate ? "" : " read"; + if (minutes * 60 < 1) { + return `0m${final}`; + } + if (minutes < 1) { + const seconds = Math.round(minutes * 60); + return `${seconds}s${final}`; + } + if (minutes < 60) { + return `${Math.round(minutes)}m${final}`; + } + const hours = NumberFormatDefault.format(Math.floor(minutes / 60)); + const remainder = Math.floor(minutes) % 60; + return remainder === 0 ? `${hours}h${final}` : `${hours}h${remainder}m${final}`; + } +}; + +// logic/node_label.ts +var import_obsidian3 = require("obsidian"); +var NodeLabelHelper = class { + constructor(plugin) { + this.plugin = plugin; + this.fileSizeHelper = new FileSizeHelper(); + this.readTimeHelper = new ReadTimeHelper(); + this.unconditionalCountTypes = [ + "created" /* Created */, + "filesize" /* FileSize */, + "modified" /* Modified */ + ]; + } + get settings() { + return this.plugin.settings; + } + getNodeLabel(counts) { + let countTypes; + let abbreviateDescriptions; + let separator; + const noteCountTypes = [ + this.getCountTypeWithSuffix( + this.settings.countType, + this.settings.countConfig + ), + this.getCountTypeWithSuffix( + this.settings.countType2, + this.settings.countConfig2 + ), + this.getCountTypeWithSuffix( + this.settings.countType3, + this.settings.countConfig3 + ) + ]; + const noteAbbreviateDescriptions = this.settings.abbreviateDescriptions; + const noteSeparator = this.settings.useAdvancedFormatting ? this.settings.pipeSeparator : "|"; + switch (counts.targetNodeType) { + case "root" /* Root */: + if (this.settings.showSameCountsOnRoot) { + countTypes = noteCountTypes; + abbreviateDescriptions = noteAbbreviateDescriptions; + separator = noteSeparator; + break; + } + countTypes = [ + this.getCountTypeWithSuffix( + this.settings.rootCountType, + this.settings.rootCountConfig + ), + this.getCountTypeWithSuffix( + this.settings.rootCountType2, + this.settings.rootCountConfig2 + ), + this.getCountTypeWithSuffix( + this.settings.rootCountType3, + this.settings.rootCountConfig3 + ) + ]; + abbreviateDescriptions = this.settings.rootAbbreviateDescriptions; + separator = this.settings.useAdvancedFormatting ? this.settings.rootPipeSeparator : noteSeparator; + break; + case "directory" /* Directory */: + if (this.settings.showSameCountsOnFolders) { + countTypes = noteCountTypes; + abbreviateDescriptions = noteAbbreviateDescriptions; + separator = noteSeparator; + break; + } + countTypes = [ + this.getCountTypeWithSuffix( + this.settings.folderCountType, + this.settings.folderCountConfig + ), + this.getCountTypeWithSuffix( + this.settings.folderCountType2, + this.settings.folderCountConfig2 + ), + this.getCountTypeWithSuffix( + this.settings.folderCountType3, + this.settings.folderCountConfig3 + ) + ]; + abbreviateDescriptions = this.settings.folderAbbreviateDescriptions; + separator = this.settings.useAdvancedFormatting ? this.settings.folderPipeSeparator : noteSeparator; + break; + default: + countTypes = noteCountTypes; + abbreviateDescriptions = noteAbbreviateDescriptions; + separator = noteSeparator; + break; + } + return countTypes.filter((ct) => ct.$countType !== "none" /* None */).map( + (ct) => this.getDataTypeLabel( + counts, + ct, + abbreviateDescriptions + ) + ).filter((display) => display !== null).join(` ${separator} `); + } + getCountTypeWithSuffix($countType, countConfig) { + return { + $countType, + customSuffix: this.settings.useAdvancedFormatting ? countConfig.customSuffix : null, + frontmatterKey: countConfig.frontmatterKey, + $sessionCountType: countConfig.$sessionCountType + }; + } + getBasicCountString(config) { + var _a; + const defaultSuffix = config.abbreviateDescriptions ? config.abbreviatedNoun : ` ${config.noun}${config.count == "1" ? "" : "s"}`; + const suffix = (_a = config.customSuffix) != null ? _a : defaultSuffix; + return `${config.count}${suffix}`; + } + getDataTypeLabel(counts, config, abbreviateDescriptions) { + var _a, _b; + if (!counts || typeof counts.wordCount !== "number") { + return null; + } + if (!counts.isCountable && !this.unconditionalCountTypes.includes(config.$countType)) { + return null; + } + switch (config.$countType) { + case "none" /* None */: + return null; + case "word" /* Word */: + return this.getBasicCountString({ + count: NumberFormatDefault.format(Math.ceil(counts.wordCount)), + noun: "word", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["word" /* Word */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + case "page" /* Page */: + return this.getBasicCountString({ + count: NumberFormatDefault.format(Math.ceil(counts.pageCount)), + noun: "page", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["page" /* Page */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + case "pagedecimal" /* PageDecimal */: + return this.getBasicCountString({ + count: NumberFormatDecimal.format(counts.pageCount), + noun: "page", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["pagedecimal" /* PageDecimal */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + case "linebreak" /* Linebreak */: + return this.getBasicCountString({ + count: NumberFormatDefault.format(counts.newlineCount), + noun: "line", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["linebreak" /* Linebreak */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + case "percentgoal" /* PercentGoal */: { + if (counts.wordGoal <= 0) { + return null; + } + const fraction = counts.wordCountTowardGoal / counts.wordGoal; + const percent = NumberFormatDefault.format(Math.round(fraction * 100)); + const defaultSuffix = abbreviateDescriptions ? "%" : `% of ${NumberFormatDefault.format(counts.wordGoal)}`; + const suffix = (_a = config.customSuffix) != null ? _a : defaultSuffix; + return `${percent}${suffix}`; + } + case "note" /* Note */: + return this.getBasicCountString({ + count: NumberFormatDefault.format(counts.noteCount), + noun: "note", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["note" /* Note */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + case "character" /* Character */: { + const characterCount = this.settings.characterCountType === "ExcludeWhitespace" /* ExcludeWhitespace */ ? counts.nonWhitespaceCharacterCount : counts.characterCount; + return this.getBasicCountString({ + count: NumberFormatDefault.format(characterCount), + noun: "character", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["character" /* Character */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + } + case "readtime" /* ReadTime */: + return this.readTimeHelper.formatReadTime( + counts.readingTimeInMinutes, + abbreviateDescriptions + ); + case "link" /* Link */: + if (counts.linkCount === 0) { + return null; + } + return this.getBasicCountString({ + count: NumberFormatDefault.format(counts.linkCount), + noun: "link", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["link" /* Link */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + case "embed" /* Embed */: + if (counts.embedCount === 0) { + return null; + } + return this.getBasicCountString({ + count: NumberFormatDefault.format(counts.embedCount), + noun: "embed", + abbreviatedNoun: COUNT_TYPE_DEFAULT_SHORT_SUFFIXES["embed" /* Embed */], + abbreviateDescriptions, + customSuffix: config.customSuffix + }); + case "alias" /* Alias */: + if (!counts.aliases || !Array.isArray(counts.aliases) || !counts.aliases.length) { + return null; + } + return abbreviateDescriptions ? `${counts.aliases[0]}` : `alias: ${counts.aliases[0]}${counts.aliases.length > 1 ? ` +${counts.aliases.length - 1}` : ""}`; + case "created" /* Created */: { + if (counts.createdDate === 0) { + return null; + } + const cDate = (0, import_obsidian3.moment)(counts.createdDate).format(this.settings.momentDateFormat || "YYYY/MM/DD"); + if (config.customSuffix !== null) { + return `${cDate}${config.customSuffix}`; + } + return abbreviateDescriptions ? `${cDate}/c` : `Created ${cDate}`; + } + case "modified" /* Modified */: { + if (counts.modifiedDate === 0) { + return null; + } + const uDate = (0, import_obsidian3.moment)(counts.modifiedDate).format(this.settings.momentDateFormat || "YYYY/MM/DD"); + if (config.customSuffix !== null) { + return `${uDate}${config.customSuffix}`; + } + return abbreviateDescriptions ? `${uDate}/u` : `Updated ${uDate}`; + } + case "filesize" /* FileSize */: + return this.fileSizeHelper.formatFileSize( + counts.sizeInBytes, + abbreviateDescriptions + ); + case "frontmatterKey" /* FrontmatterKey */: { + if (!config.frontmatterKey) { + return null; + } + const value = (_b = counts == null ? void 0 : counts.frontmatter) == null ? void 0 : _b[config.frontmatterKey]; + if (value === void 0 || value === null) { + return null; + } + if (config.customSuffix !== null) { + return `${value}${config.customSuffix}`; + } + return value; + } + case "tracksession" /* TrackSession */: { + if (!config.$sessionCountType) { + return null; + } + const quantity = this.getSessionQuantity(counts, config.$sessionCountType); + if (config.customSuffix !== null) { + return `${quantity}${config.customSuffix}`; + } + return abbreviateDescriptions ? `${quantity}/s` : `Session: ${quantity}`; + } + } + return null; + } + getSessionQuantity(counts, $countType) { + switch ($countType) { + case "word" /* Word */: + return NumberFormatDefault.format(Math.ceil(counts.wordCount - counts.sessionStart.wordCount)); + case "page" /* Page */: + return NumberFormatDefault.format(Math.ceil(counts.pageCount - counts.sessionStart.pageCount)); + case "pagedecimal" /* PageDecimal */: + return NumberFormatDecimal.format(counts.pageCount - counts.sessionStart.pageCount); + case "linebreak" /* Linebreak */: + return NumberFormatDefault.format(counts.newlineCount - counts.sessionStart.newlineCount); + case "note" /* Note */: + return NumberFormatDefault.format(counts.noteCount - counts.sessionStart.noteCount); + case "character" /* Character */: { + const characterCount = this.settings.characterCountType === "ExcludeWhitespace" /* ExcludeWhitespace */ ? counts.nonWhitespaceCharacterCount : counts.characterCount; + const startingCharacterCount = this.settings.characterCountType === "ExcludeWhitespace" /* ExcludeWhitespace */ ? counts.sessionStart.nonWhitespaceCharacterCount : counts.sessionStart.characterCount; + return NumberFormatDefault.format(characterCount - startingCharacterCount); + } + } + } +}; + +// logic/saved_data.ts +var SavedDataHelper = class { + constructor(plugin) { + this.plugin = plugin; + } + async getSavedData() { + const loaded = await this.plugin.loadData(); + const denulled = Object.assign({}, loaded); + denulled.settings = Object.assign({}, DEFAULT_SETTINGS, denulled.settings); + const migrated = migrateSavedData(denulled); + return migrated; + } +}; +function migrateSavedData(saved) { + const migrations = [ + overwriteInvalidCountTypes, + migrateToCountConfigurationObject + ]; + for (const migrate of migrations) { + saved = migrate(saved); + } + return saved; +} +var overwriteInvalidCountTypes = (saved) => { + var _a; + if (!((_a = saved == null ? void 0 : saved.settings) == null ? void 0 : _a.countType)) { + return; + } + const fieldsToCheck = [ + "countType", + "countType2", + "countType3", + "folderCountType", + "folderCountType2", + "folderCountType3", + "rootCountType", + "rootCountType2", + "rootCountType3" + ]; + for (const field of fieldsToCheck) { + if (!COUNT_TYPES.includes(saved.settings[field])) { + saved.settings[field] = field === "countType" ? "word" /* Word */ : "none" /* None */; + } + } + return saved; +}; +var migrateToCountConfigurationObject = (saved) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _i; + const settings = saved.settings; + const oldSettings = saved.settings; + (_a = settings.countConfig) != null ? _a : settings.countConfig = {}; + if (typeof oldSettings.countTypeSuffix === "string") { + settings.countConfig.customSuffix = oldSettings.countTypeSuffix; + delete oldSettings.countTypeSuffix; + } + if (typeof oldSettings.frontmatterKey === "string") { + settings.countConfig.frontmatterKey = oldSettings.frontmatterKey; + delete oldSettings.frontmatterKey; + } + (_b = settings.countConfig2) != null ? _b : settings.countConfig2 = {}; + if (typeof oldSettings.countType2Suffix === "string") { + settings.countConfig2.customSuffix = oldSettings.countType2Suffix; + delete oldSettings.countType2Suffix; + } + if (typeof oldSettings.frontmatterKey2 === "string") { + settings.countConfig2.frontmatterKey = oldSettings.frontmatterKey2; + delete oldSettings.frontmatterKey2; + } + (_c = settings.countConfig3) != null ? _c : settings.countConfig3 = {}; + if (typeof oldSettings.countType3Suffix === "string") { + settings.countConfig3.customSuffix = oldSettings.countType3Suffix; + delete oldSettings.countType3Suffix; + } + if (typeof oldSettings.frontmatterKey3 === "string") { + settings.countConfig3.frontmatterKey = oldSettings.frontmatterKey3; + delete oldSettings.frontmatterKey3; + } + (_d = settings.folderCountConfig) != null ? _d : settings.folderCountConfig = {}; + if (typeof oldSettings.folderCountTypeSuffix === "string") { + settings.folderCountConfig.customSuffix = oldSettings.folderCountTypeSuffix; + delete oldSettings.folderCountTypeSuffix; + } + (_e = settings.folderCountConfig2) != null ? _e : settings.folderCountConfig2 = {}; + if (typeof oldSettings.folderCountType2Suffix === "string") { + settings.folderCountConfig2.customSuffix = oldSettings.folderCountType2Suffix; + delete oldSettings.folderCountType2Suffix; + } + (_f = settings.folderCountConfig3) != null ? _f : settings.folderCountConfig3 = {}; + if (typeof oldSettings.folderCountType3Suffix === "string") { + settings.folderCountConfig3.customSuffix = oldSettings.folderCountType3Suffix; + delete oldSettings.folderCountType3Suffix; + } + (_g = settings.rootCountConfig) != null ? _g : settings.rootCountConfig = {}; + if (typeof oldSettings.rootCountTypeSuffix === "string") { + settings.rootCountConfig.customSuffix = oldSettings.rootCountTypeSuffix; + delete oldSettings.rootCountTypeSuffix; + } + (_h = settings.rootCountConfig2) != null ? _h : settings.rootCountConfig2 = {}; + if (typeof oldSettings.rootCountType2Suffix === "string") { + settings.rootCountConfig2.customSuffix = oldSettings.rootCountType2Suffix; + delete oldSettings.rootCountType2Suffix; + } + (_i = settings.rootCountConfig3) != null ? _i : settings.rootCountConfig3 = {}; + if (typeof oldSettings.rootCountType3Suffix === "string") { + settings.rootCountConfig3.customSuffix = oldSettings.rootCountType3Suffix; + delete oldSettings.rootCountType3Suffix; + } + return saved; +}; + +// logic/settings.tab.ts +var import_obsidian4 = require("obsidian"); +var NovelWordCountSettingTab = class extends import_obsidian4.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + this.renderNoteSettings(containerEl); + this.renderFolderSettings(containerEl); + this.renderRootSettings(containerEl); + this.renderAdvancedSettings(containerEl); + this.renderReanalyzeButton(containerEl); + this.renderDonationButton(containerEl); + } + // + // NOTES + // + renderNoteSettings(containerEl) { + const mainHeader = containerEl.createEl("div", { + cls: [ + "setting-item", + "setting-item-heading", + "novel-word-count-settings-header" + ] + }); + mainHeader.createEl("div", { text: "Notes" }); + mainHeader.createEl("div", { + text: "You can display up to three data types side by side.", + cls: "setting-item-description" + }); + new import_obsidian4.Setting(containerEl).setDesc("Use advanced formatting").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.useAdvancedFormatting).onChange(async (value) => { + this.plugin.settings.useAdvancedFormatting = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + this.display(); + }) + ); + this.renderCountTypeSetting(containerEl, { + name: "1st data type to show", + oldCountType: this.plugin.settings.countType, + setNewCountType: (value) => { + this.plugin.settings.countType = value; + this.plugin.settings.countConfig.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.countType]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.countType, + oldCountType: this.plugin.settings.countConfig.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.countConfig.$sessionCountType = value; + } + }); + this.renderFrontmatterKeySetting(containerEl, { + countType: this.plugin.settings.countType, + oldKey: this.plugin.settings.countConfig.frontmatterKey, + setNewKey: (value) => this.plugin.settings.countConfig.frontmatterKey = value + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.countType, + oldSuffix: this.plugin.settings.countConfig.customSuffix, + setNewSuffix: (value) => this.plugin.settings.countConfig.customSuffix = value + }); + this.renderCountTypeSetting(containerEl, { + name: "2nd data type to show", + oldCountType: this.plugin.settings.countType2, + setNewCountType: (value) => { + this.plugin.settings.countType2 = value; + this.plugin.settings.countConfig2.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.countType2]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.countType2, + oldCountType: this.plugin.settings.countConfig2.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.countConfig2.$sessionCountType = value; + } + }); + this.renderFrontmatterKeySetting(containerEl, { + countType: this.plugin.settings.countType2, + oldKey: this.plugin.settings.countConfig2.frontmatterKey, + setNewKey: (value) => this.plugin.settings.countConfig2.frontmatterKey = value + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.countType2, + oldSuffix: this.plugin.settings.countConfig2.customSuffix, + setNewSuffix: (value) => this.plugin.settings.countConfig2.customSuffix = value + }); + this.renderCountTypeSetting(containerEl, { + name: "3rd data type to show", + oldCountType: this.plugin.settings.countType3, + setNewCountType: (value) => { + this.plugin.settings.countType3 = value; + this.plugin.settings.countConfig3.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.countType3]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.countType3, + oldCountType: this.plugin.settings.countConfig3.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.countConfig3.$sessionCountType = value; + } + }); + this.renderFrontmatterKeySetting(containerEl, { + countType: this.plugin.settings.countType3, + oldKey: this.plugin.settings.countConfig3.frontmatterKey, + setNewKey: (value) => this.plugin.settings.countConfig3.frontmatterKey = value + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.countType3, + oldSuffix: this.plugin.settings.countConfig3.customSuffix, + setNewSuffix: (value) => this.plugin.settings.countConfig3.customSuffix = value + }); + if (this.plugin.settings.useAdvancedFormatting) { + new import_obsidian4.Setting(containerEl).setName("Data type separator").addText( + (text) => text.setValue(this.plugin.settings.pipeSeparator).onChange(async (value) => { + this.plugin.settings.pipeSeparator = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + if (!this.plugin.settings.useAdvancedFormatting) { + new import_obsidian4.Setting(containerEl).setName("Abbreviate descriptions").setDesc("E.g. show '120w' instead of '120 words'").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.abbreviateDescriptions).onChange(async (value) => { + this.plugin.settings.abbreviateDescriptions = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + new import_obsidian4.Setting(containerEl).setName("Alignment").setDesc( + "Show data inline with file/folder names, right-aligned, or underneath" + ).addDropdown((drop) => { + drop.addOption("inline" /* Inline */, "Inline").addOption("right" /* Right */, "Right-aligned").addOption("below" /* Below */, "Below").setValue(this.plugin.settings.alignment).onChange(async (value) => { + this.plugin.settings.alignment = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }); + }); + } + renderFolderSettings(containerEl) { + this.renderSeparator(containerEl); + new import_obsidian4.Setting(containerEl).setHeading().setName("Folders: Same data as Notes").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.showSameCountsOnFolders).onChange(async (value) => { + this.plugin.settings.showSameCountsOnFolders = value; + await this.plugin.saveSettings(); + this.display(); + await this.plugin.updateDisplayedCounts(); + }) + ); + if (!this.plugin.settings.showSameCountsOnFolders) { + this.renderCountTypeSetting(containerEl, { + name: "1st data type to show", + oldCountType: this.plugin.settings.folderCountType, + setNewCountType: (value) => { + this.plugin.settings.folderCountType = value; + this.plugin.settings.folderCountConfig.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.folderCountType]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.folderCountType, + oldCountType: this.plugin.settings.folderCountConfig.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.folderCountConfig.$sessionCountType = value; + } + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.folderCountType, + oldSuffix: this.plugin.settings.folderCountConfig.customSuffix, + setNewSuffix: (value) => this.plugin.settings.folderCountConfig.customSuffix = value + }); + this.renderCountTypeSetting(containerEl, { + name: "2nd data type to show", + oldCountType: this.plugin.settings.folderCountType2, + setNewCountType: (value) => { + this.plugin.settings.folderCountType2 = value; + this.plugin.settings.folderCountConfig2.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.folderCountType2]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.folderCountType2, + oldCountType: this.plugin.settings.folderCountConfig2.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.folderCountConfig2.$sessionCountType = value; + } + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.folderCountType2, + oldSuffix: this.plugin.settings.folderCountConfig2.customSuffix, + setNewSuffix: (value) => this.plugin.settings.folderCountConfig2.customSuffix = value + }); + this.renderCountTypeSetting(containerEl, { + name: "3rd data type to show", + oldCountType: this.plugin.settings.folderCountType3, + setNewCountType: (value) => { + this.plugin.settings.folderCountType3 = value; + this.plugin.settings.folderCountConfig3.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.folderCountType3]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.folderCountType3, + oldCountType: this.plugin.settings.folderCountConfig3.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.folderCountConfig3.$sessionCountType = value; + } + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.folderCountType3, + oldSuffix: this.plugin.settings.folderCountConfig3.customSuffix, + setNewSuffix: (value) => this.plugin.settings.folderCountConfig3.customSuffix = value + }); + if (this.plugin.settings.useAdvancedFormatting) { + new import_obsidian4.Setting(containerEl).setName("Data type separator").addText( + (text) => text.setValue(this.plugin.settings.folderPipeSeparator).onChange(async (value) => { + this.plugin.settings.folderPipeSeparator = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + if (!this.plugin.settings.useAdvancedFormatting) { + new import_obsidian4.Setting(containerEl).setName("Abbreviate descriptions").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.folderAbbreviateDescriptions).onChange(async (value) => { + this.plugin.settings.folderAbbreviateDescriptions = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + new import_obsidian4.Setting(containerEl).setName("Alignment").addDropdown((drop) => { + drop.addOption("inline" /* Inline */, "Inline").addOption("right" /* Right */, "Right-aligned").addOption("below" /* Below */, "Below").setValue(this.plugin.settings.folderAlignment).onChange(async (value) => { + this.plugin.settings.folderAlignment = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }); + }); + } + } + renderRootSettings(containerEl) { + this.renderSeparator(containerEl); + new import_obsidian4.Setting(containerEl).setHeading().setName("Root: Same data as Notes").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.showSameCountsOnRoot).onChange(async (value) => { + this.plugin.settings.showSameCountsOnRoot = value; + await this.plugin.saveSettings(); + this.display(); + await this.plugin.updateDisplayedCounts(); + }) + ); + if (!this.plugin.settings.showSameCountsOnRoot) { + this.renderCountTypeSetting(containerEl, { + name: "1st data type to show", + oldCountType: this.plugin.settings.rootCountType, + setNewCountType: (value) => { + this.plugin.settings.rootCountType = value; + this.plugin.settings.rootCountConfig.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.rootCountType]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.rootCountType, + oldCountType: this.plugin.settings.rootCountConfig.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.rootCountConfig.$sessionCountType = value; + } + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.rootCountType, + oldSuffix: this.plugin.settings.rootCountConfig.customSuffix, + setNewSuffix: (value) => this.plugin.settings.rootCountConfig.customSuffix = value + }); + this.renderCountTypeSetting(containerEl, { + name: "2nd data type to show", + oldCountType: this.plugin.settings.rootCountType2, + setNewCountType: (value) => { + this.plugin.settings.rootCountType2 = value; + this.plugin.settings.rootCountConfig2.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.rootCountType2]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.rootCountType2, + oldCountType: this.plugin.settings.rootCountConfig2.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.rootCountConfig2.$sessionCountType = value; + } + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.rootCountType2, + oldSuffix: this.plugin.settings.rootCountConfig2.customSuffix, + setNewSuffix: (value) => this.plugin.settings.rootCountConfig2.customSuffix = value + }); + this.renderCountTypeSetting(containerEl, { + name: "3rd data type to show", + oldCountType: this.plugin.settings.rootCountType3, + setNewCountType: (value) => { + this.plugin.settings.rootCountType3 = value; + this.plugin.settings.rootCountConfig3.customSuffix = COUNT_TYPE_DEFAULT_SHORT_SUFFIXES[this.plugin.settings.rootCountType3]; + } + }); + this.renderSessionCountTypeSetting(containerEl, { + parentCountType: this.plugin.settings.rootCountType3, + oldCountType: this.plugin.settings.rootCountConfig3.$sessionCountType, + setNewCountType: (value) => { + this.plugin.settings.rootCountConfig3.$sessionCountType = value; + } + }); + this.renderCustomFormatSetting(containerEl, { + countType: this.plugin.settings.rootCountType3, + oldSuffix: this.plugin.settings.rootCountConfig3.customSuffix, + setNewSuffix: (value) => this.plugin.settings.rootCountConfig3.customSuffix = value + }); + if (this.plugin.settings.useAdvancedFormatting) { + new import_obsidian4.Setting(containerEl).setName("Data type separator").addText( + (text) => text.setValue(this.plugin.settings.rootPipeSeparator).onChange(async (value) => { + this.plugin.settings.rootPipeSeparator = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + if (!this.plugin.settings.useAdvancedFormatting) { + new import_obsidian4.Setting(containerEl).setName("Abbreviate descriptions").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.rootAbbreviateDescriptions).onChange(async (value) => { + this.plugin.settings.rootAbbreviateDescriptions = value; + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + } + } + renderAdvancedSettings(containerEl) { + this.renderSeparator(containerEl); + new import_obsidian4.Setting(containerEl).setHeading().setName("Show advanced options").setDesc("Language compatibility and fine-tuning").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.showAdvanced).onChange(async (value) => { + this.plugin.settings.showAdvanced = value; + await this.plugin.saveSettings(); + this.display(); + }) + ); + if (this.plugin.settings.showAdvanced) { + const opacityChanged = async (value) => { + this.plugin.settings.labelOpacity = Math.clamp(value, 0, 1); + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }; + new import_obsidian4.Setting(containerEl).setName("Label opacity").setDesc("Increase this value to make all count labels in the File Explorer more visible.").addSlider((slider) => { + slider.setLimits(0, 1, 0.05).setDynamicTooltip().setValue(this.plugin.settings.labelOpacity).onChange((0, import_obsidian4.debounce)(opacityChanged.bind(this), 500)); + }); + const includePathsChanged = async (txt, value) => { + this.plugin.settings.includeDirectories = value; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }; + new import_obsidian4.Setting(containerEl).setName("Include file/folder names").setDesc( + "Only count paths matching the indicated term(s). Case-sensitive, comma-separated. Defaults to all files. Any term starting with ! will be excluded instead of included." + ).addText((txt) => { + txt.setPlaceholder("").setValue(this.plugin.settings.includeDirectories).onChange((0, import_obsidian4.debounce)(includePathsChanged.bind(this, txt), 1e3)); + }); + new import_obsidian4.Setting(containerEl).setName("Exclude comments").setDesc( + "Exclude %%Obsidian%% and comments from counts. May affect performance on large vaults." + ).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.excludeComments).onChange(async (value) => { + this.plugin.settings.excludeComments = value; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Exclude code blocks").setDesc( + "Exclude ```code blocks``` (e.g. DataView snippets) from all counts. May affect performance on large vaults." + ).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.excludeCodeBlocks).onChange(async (value) => { + this.plugin.settings.excludeCodeBlocks = value; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Exclude non-visible portions of links").setDesc( + "For external links, exclude the URI from all counts. For internal links with aliases, only count the alias. May affect performance on large vaults." + ).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.excludeNonVisibleLinkPortions).onChange(async (value) => { + this.plugin.settings.excludeNonVisibleLinkPortions = value; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Exclude footnotes").setDesc( + "Exclude footnotes[^1] from counts. May affect performance on large vaults." + ).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.excludeFootnotes).onChange(async (value) => { + this.plugin.settings.excludeFootnotes = value; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }) + ); + new import_obsidian4.Setting(containerEl).setName("Character count method").setDesc("For language compatibility").addDropdown((drop) => { + drop.addOption("AllCharacters" /* StringLength */, "All characters").addOption( + "ExcludeWhitespace" /* ExcludeWhitespace */, + "Exclude whitespace" + ).setValue(this.plugin.settings.characterCountType).onChange(async (value) => { + this.plugin.settings.characterCountType = value; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }); + }); + new import_obsidian4.Setting(containerEl).setName("Page count method").setDesc("For language compatibility").addDropdown((drop) => { + drop.addOption("ByWords" /* ByWords */, "Words per page").addOption("ByChars" /* ByChars */, "Characters per page").setValue(this.plugin.settings.pageCountType).onChange(async (value) => { + this.plugin.settings.pageCountType = value; + await this.plugin.saveSettings(); + this.display(); + await this.plugin.updateDisplayedCounts(); + }); + }); + const wordsPerMinuteChanged = async (txt, value) => { + const asNumber = Number(value); + const isValid = !isNaN(asNumber) && asNumber > 0; + txt.inputEl.style.borderColor = isValid ? null : "red"; + this.plugin.settings.wordsPerMinute = isValid ? Number(value) : 265; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }; + new import_obsidian4.Setting(containerEl).setName("Words per minute").setDesc( + "Used to calculate Reading Time. 265 is the average speed of an English-speaking adult." + ).addText((txt) => { + txt.setPlaceholder("265").setValue(this.plugin.settings.wordsPerMinute.toString()).onChange((0, import_obsidian4.debounce)(wordsPerMinuteChanged.bind(this, txt), 1e3)); + }); + const charsPerMinuteChanged = async (txt, value) => { + const asNumber = Number(value); + const isValid = !isNaN(asNumber) && asNumber > 0; + txt.inputEl.style.borderColor = isValid ? null : "red"; + this.plugin.settings.charsPerMinute = isValid ? Number(value) : 500; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }; + new import_obsidian4.Setting(containerEl).setName("CJK characters per minute").setDesc( + "Used to calculate Reading Time. 500 is the average speed for CJK texts." + ).addText((txt) => { + txt.setPlaceholder("500").setValue(this.plugin.settings.charsPerMinute.toString()).onChange((0, import_obsidian4.debounce)(charsPerMinuteChanged.bind(this, txt), 1e3)); + }); + if (this.plugin.settings.pageCountType === "ByWords" /* ByWords */) { + const wordsPerPageChanged = async (txt, value) => { + const asNumber = Number(value); + const isValid = !isNaN(asNumber) && asNumber > 0; + txt.inputEl.style.borderColor = isValid ? null : "red"; + this.plugin.settings.wordsPerPage = isValid ? Number(value) : 300; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }; + new import_obsidian4.Setting(containerEl).setName("Words per page").setDesc( + "Used for page count. 300 is standard in English language publishing." + ).addText((txt) => { + txt.setPlaceholder("300").setValue(this.plugin.settings.wordsPerPage.toString()).onChange((0, import_obsidian4.debounce)(wordsPerPageChanged.bind(this, txt), 1e3)); + }); + } + if (this.plugin.settings.pageCountType === "ByChars" /* ByChars */) { + new import_obsidian4.Setting(containerEl).setName("Include whitespace characters in page count").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.charsPerPageIncludesWhitespace).onChange(async (value) => { + this.plugin.settings.charsPerPageIncludesWhitespace = value; + await this.plugin.saveSettings(); + this.display(); + await this.plugin.initialize(); + }) + ); + const charsPerPageChanged = async (txt, value) => { + const asNumber = Number(value); + const isValid = !isNaN(asNumber) && asNumber > 0; + txt.inputEl.style.borderColor = isValid ? null : "red"; + const defaultCharsPerPage = 1500; + this.plugin.settings.charsPerPage = isValid ? Number(value) : defaultCharsPerPage; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }; + new import_obsidian4.Setting(containerEl).setName("Characters per page").setDesc( + `Used for page count. ${this.plugin.settings.charsPerPageIncludesWhitespace ? "2400 is common in Danish." : "1500 is common in German (Normseite)."}` + ).addText((txt) => { + txt.setPlaceholder("1500").setValue(this.plugin.settings.charsPerPage.toString()).onChange((0, import_obsidian4.debounce)(charsPerPageChanged.bind(this, txt), 1e3)); + }); + } + const dateFormatChanged = async (txt, value) => { + const isValid = typeof value === "string" && !!value.trim(); + this.plugin.settings.momentDateFormat = isValid ? value : ""; + await this.plugin.saveSettings(); + await this.plugin.initialize(); + }; + new import_obsidian4.Setting(containerEl).setName("Date format").setDesc("MomentJS date format to use for date strings").addText((txt) => { + txt.setPlaceholder("YYYY/MM/DD").setValue(this.plugin.settings.momentDateFormat).onChange((0, import_obsidian4.debounce)(dateFormatChanged.bind(this, txt), 1e3)); + }); + new import_obsidian4.Setting(containerEl).setName("Debug mode").setDesc("Log debugging information to the developer console").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.debugMode).onChange(async (value) => { + this.plugin.settings.debugMode = value; + this.plugin.debugHelper.setDebugMode(value); + this.plugin.fileHelper.setDebugMode(value); + await this.plugin.saveSettings(); + }) + ); + } + } + renderReanalyzeButton(containerEl) { + this.renderSeparator(containerEl); + new import_obsidian4.Setting(containerEl).setHeading().setName("Recount all documents").setDesc( + "If changes have occurred outside of Obsidian, you may need to trigger a manual recount" + ).addButton( + (button) => button.setButtonText("Recount").setCta().onClick(async () => { + button.disabled = true; + await this.plugin.initialize(); + button.setButtonText("Done"); + button.removeCta(); + setTimeout(() => { + button.setButtonText("Recount"); + button.setCta(); + button.disabled = false; + }, 1e3); + }) + ); + } + renderDonationButton(containerEl) { + this.renderSeparator(containerEl); + const label = containerEl.createEl("div", { + cls: [ + "setting-item", + "setting-item-heading", + "novel-word-count-settings-header", + "novel-word-count-donation-line" + ] + }); + label.createEl("div", { + text: "Enjoying this plugin? Want more features?" + }); + const button = label.createEl("div"); + button.innerHTML = `Buy Me a Coffee at ko-fi.com`; + } + renderCountTypeSetting(containerEl, config) { + new import_obsidian4.Setting(containerEl).setName(config.name).setDesc(getDescription(config.oldCountType)).addDropdown((drop) => { + for (const countType of COUNT_TYPES) { + drop.addOption(countType, COUNT_TYPE_DISPLAY_STRINGS[countType]); + } + drop.setValue(config.oldCountType).onChange(async (value) => { + config.setNewCountType(value); + await this.plugin.saveSettings(); + this.display(); + await this.plugin.updateDisplayedCounts(); + }); + }); + } + renderSessionCountTypeSetting(containerEl, config) { + if (config.parentCountType !== "tracksession" /* TrackSession */) { + return; + } + new import_obsidian4.Setting(containerEl).setDesc("[Track Session] Session count type").addDropdown((drop) => { + for (const countType of SESSION_COUNT_TYPES) { + drop.addOption(countType, COUNT_TYPE_DISPLAY_STRINGS[countType]); + } + drop.setValue(config.oldCountType).onChange(async (value) => { + config.setNewCountType(value); + await this.plugin.saveSettings(); + this.display(); + await this.plugin.updateDisplayedCounts(); + }); + }); + } + renderCustomFormatSetting(containerEl, config) { + if (!this.plugin.settings.useAdvancedFormatting || config.countType === "none" /* None */) { + return; + } + if (UNFORMATTABLE_COUNT_TYPES.includes(config.countType)) { + new import_obsidian4.Setting(containerEl).setDesc( + `[${COUNT_TYPE_DISPLAY_STRINGS[config.countType]}] can't be formatted.` + ); + } else { + new import_obsidian4.Setting(containerEl).setDesc( + `[${COUNT_TYPE_DISPLAY_STRINGS[config.countType]}] Custom suffix` + ).addText( + (text) => text.setValue(config.oldSuffix).onChange(async (value) => { + config.setNewSuffix(value); + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + } + renderFrontmatterKeySetting(containerEl, config) { + if (config.countType !== "frontmatterKey" /* FrontmatterKey */) { + return; + } + new import_obsidian4.Setting(containerEl).setDesc( + `[${COUNT_TYPE_DISPLAY_STRINGS["frontmatterKey" /* FrontmatterKey */]}] Key name` + ).addText( + (text) => text.setValue(config.oldKey).onChange(async (value) => { + config.setNewKey(value); + await this.plugin.saveSettings(); + await this.plugin.updateDisplayedCounts(); + }) + ); + } + renderSeparator(containerEl) { + containerEl.createEl("hr", { + cls: "novel-word-count-hr" + }); + } +}; + +// main.ts +var import_obsidian5 = require("obsidian"); +var NovelWordCountPlugin = class extends import_obsidian5.Plugin { + constructor(app, manifest) { + super(app, manifest); + this.debugHelper = new DebugHelper(); + this.FIVE_MINUTES = 5 * 60 * 1e3; + this.saveSettingsDebounced = (0, import_obsidian5.debounce)(this.saveSettings, this.FIVE_MINUTES, false); + this.fileHelper = new FileHelper(this.app, this); + this.eventHelper = new EventHelper( + this, + app, + this.debugHelper, + this.fileHelper + ); + this.nodeLabelHelper = new NodeLabelHelper(this); + this.savedDataHelper = new SavedDataHelper(this); + } + get settings() { + return this.savedData.settings; + } + // LIFECYCLE + async onload() { + this.savedData = await this.savedDataHelper.getSavedData(); + this.fileHelper.setDebugMode(this.savedData.settings.debugMode); + this.debugHelper.setDebugMode(this.savedData.settings.debugMode); + this.debugHelper.debug(`Detected locales: [${navigator.languages}]`); + this.debugHelper.debug("onload lifecycle hook"); + this.addSettingTab(new NovelWordCountSettingTab(this.app, this)); + this.addCommand({ + id: "recount-vault", + name: "Recount all notes / Reset session", + callback: async () => { + this.debugHelper.debug("[Recount] command triggered"); + await this.initialize(); + } + }); + this.addCommand({ + id: "cycle-count-type", + name: "Show next data type (1st position)", + callback: async () => { + this.debugHelper.debug("[Cycle next data type] command triggered"); + this.settings.countType = COUNT_TYPES[(COUNT_TYPES.indexOf(this.settings.countType) + 1) % COUNT_TYPES.length]; + await this.saveSettings(); + this.updateDisplayedCounts(); + } + }); + this.addCommand({ + id: "toggle-abbreviate", + name: "Toggle abbreviation on Notes", + callback: async () => { + this.debugHelper.debug( + "[Toggle abbrevation - Notes] command triggered" + ); + this.settings.abbreviateDescriptions = !this.settings.abbreviateDescriptions; + await this.saveSettings(); + this.updateDisplayedCounts(); + } + }); + for (const countType of COUNT_TYPES) { + this.addCommand({ + id: `set-count-type-${countType}`, + name: `Show ${COUNT_TYPE_DISPLAY_STRINGS[countType]} (1st position)`, + callback: async () => { + this.debugHelper.debug( + `[Set count type to ${countType}] command triggered` + ); + this.settings.countType = countType; + await this.saveSettings(); + this.updateDisplayedCounts(); + } + }); + } + this.eventHelper.handleEvents(); + this.initialize(); + } + async onunload() { + await this.saveSettings(); + } + // SETTINGS + async saveSettings() { + this.debugHelper.debug("Saving to data.json."); + await this.saveData(this.savedData); + } + // PUBLIC + /** + Called with (true) when the plugin initializes or the user clicks Reanalyze. + Called with (false) every second while waiting for the file explorer to load. + */ + async initialize(reinitializeAllCounts = true) { + this.debugHelper.debug("initialize"); + this.app.workspace.onLayoutReady(async () => { + if (reinitializeAllCounts) { + await this.eventHelper.reinitializeAllCounts(); + } + try { + await this.getFileExplorerLeaf(); + await this.updateDisplayedCounts(); + } catch (err) { + this.debugHelper.debug("Error while updating displayed counts"); + this.debugHelper.error(err); + setTimeout(() => { + this.initialize(false); + }, 1e3); + } + }); + } + async updateDisplayedCounts(file = null) { + var _a, _b; + const debugEnd = this.debugHelper.debugStart( + `updateDisplayedCounts [${file == null ? "ALL" : file.path}]` + ); + if (!Object.keys(this.savedData.cachedCounts).length) { + this.debugHelper.debug("No cached data found; skipping update."); + return; + } + let fileExplorerLeaf; + try { + fileExplorerLeaf = await this.getFileExplorerLeaf(); + } catch (err) { + this.debugHelper.debug("File explorer leaf not found; skipping update."); + return; + } + this.setContainerClass(fileExplorerLeaf); + const fileExplorerView = fileExplorerLeaf.view; + const fileItems = fileExplorerView.fileItems; + if ((_a = fileExplorerView == null ? void 0 : fileExplorerView.headerDom) == null ? void 0 : _a.navButtonsEl) { + const counts = this.fileHelper.getCachedDataForPath( + this.savedData.cachedCounts, + "/" + ); + fileExplorerView.headerDom.navButtonsEl.setAttribute( + "data-novel-word-count-plugin", + this.nodeLabelHelper.getNodeLabel(counts) + ); + document.documentElement.style.setProperty("--novel-word-count-opacity", `${this.settings.labelOpacity}`); + } + if (file) { + const relevantItems = Object.keys(fileItems).filter( + (path) => file.path.includes(path) + ); + this.debugHelper.debug( + "Setting display counts for", + relevantItems.length, + "fileItems matching path", + file.path + ); + } else { + this.debugHelper.debug( + `Setting display counts for ${Object.keys(fileItems).length} fileItems` + ); + } + for (const path in fileItems) { + if (file && (!file.path.includes(path) || file.path === "/")) { + continue; + } + const counts = this.fileHelper.getCachedDataForPath( + this.savedData.cachedCounts, + path + ); + const item = fileItems[path]; + ((_b = item.titleEl) != null ? _b : item.selfEl).setAttribute( + "data-novel-word-count-plugin", + this.nodeLabelHelper.getNodeLabel(counts) + ); + } + debugEnd(); + } + // FUNCTIONALITY + async getFileExplorerLeaf() { + return new Promise((resolve, reject) => { + let foundLeaf = null; + this.app.workspace.iterateAllLeaves((leaf) => { + if (foundLeaf) { + return; + } + const view = leaf.view; + if (!view || !view.fileItems) { + return; + } + foundLeaf = leaf; + resolve(foundLeaf); + }); + if (!foundLeaf) { + reject(Error("Could not find file explorer leaf.")); + } + }); + } + setContainerClass(leaf) { + const container = leaf.view.containerEl; + container.toggleClass(`novel-word-count--active`, true); + const notePrefix = `novel-word-count--note-`; + const folderPrefix = `novel-word-count--folder-`; + const alignmentClasses = ALIGNMENT_TYPES.map((at) => notePrefix + at).concat(ALIGNMENT_TYPES.map((at) => folderPrefix + at)); + for (const ac of alignmentClasses) { + container.toggleClass(ac, false); + } + container.toggleClass(notePrefix + this.settings.alignment, true); + const folderAlignment = this.settings.showSameCountsOnFolders ? this.settings.alignment : this.settings.folderAlignment; + container.toggleClass(folderPrefix + folderAlignment, true); + } +}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/novel-word-count/manifest.json b/.obsidian/plugins/novel-word-count/manifest.json new file mode 100644 index 0000000..b07c5f1 --- /dev/null +++ b/.obsidian/plugins/novel-word-count/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "novel-word-count", + "name": "Novel word count", + "version": "4.5.0", + "minAppVersion": "0.13.31", + "description": "Displays a word count (and more!) for each file, folder and vault in the File Explorer pane.", + "author": "Isaac Lyman", + "authorUrl": "https://isaaclyman.com", + "isDesktopOnly": false, + "fundingUrl": "https://ko-fi.com/isaaclyman" +} \ No newline at end of file diff --git a/.obsidian/plugins/novel-word-count/styles.css b/.obsidian/plugins/novel-word-count/styles.css new file mode 100644 index 0000000..d6d24e1 --- /dev/null +++ b/.obsidian/plugins/novel-word-count/styles.css @@ -0,0 +1,121 @@ +.novel-word-count--active .nav-header .nav-buttons-container { + flex-wrap: wrap !important; +} +.novel-word-count--active .nav-header .nav-buttons-container::after { + content: attr(data-novel-word-count-plugin); + display: block; + font-size: 0.8em; + max-width: calc(100% - 20px); + min-width: 0; + opacity: var(--novel-word-count-opacity); + overflow: hidden; + padding: 0 4px; + position: relative; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} + +.novel-word-count--active .nav-files-container .nav-file-title { + align-items: baseline; +} +.novel-word-count--active .nav-files-container .nav-file-title::after { + content: attr(data-novel-word-count-plugin); + flex: 1 0 auto; + font-size: 0.8em; + max-width: calc(100% - 20px); + min-width: 0; + opacity: var(--novel-word-count-opacity); + order: 1; + overflow: hidden; + padding: 0 4px; + position: relative; + text-overflow: ellipsis; + white-space: nowrap; +} +.novel-word-count--active .nav-files-container .nav-file-title-content { + min-width: 20px; +} +.novel-word-count--note-right .nav-files-container .nav-file-title-content { + flex: 1 1 0; +} +.novel-word-count--note-right .nav-files-container .nav-file-title::after { + flex: none; + order: 6; + overflow: hidden; +} +.novel-word-count--note-below .nav-files-container .nav-file-title { + flex-wrap: wrap; +} +.novel-word-count--note-below .nav-files-container .nav-file-title-content { + flex: 100%; +} +.novel-word-count--note-below .nav-files-container .nav-file-title::after { + display: inline-block; + margin-top: -2px; + max-width: 100%; + overflow: hidden; + padding: 0; + text-overflow: ellipsis; + white-space: nowrap; +} +.novel-word-count--active .nav-files-container .nav-folder-title { + align-items: baseline; +} +.novel-word-count--active .nav-files-container .nav-folder-title::after { + content: attr(data-novel-word-count-plugin); + flex: 1 0 auto; + font-size: 0.8em; + max-width: calc(100% - 20px); + min-width: 0; + opacity: var(--novel-word-count-opacity); + order: 1; + overflow: hidden; + padding: 0 4px; + position: relative; + text-overflow: ellipsis; + white-space: nowrap; +} +.novel-word-count--active .nav-files-container .nav-folder-title-content { + min-width: 20px; +} +.novel-word-count--folder-right .nav-files-container .nav-folder-title-content { + flex: 1 1 0; +} +.novel-word-count--folder-right .nav-files-container .nav-folder-title::after { + flex: none; + order: 6; + overflow: hidden; +} +.novel-word-count--folder-below .nav-files-container .nav-folder-title { + flex-wrap: wrap; +} +.novel-word-count--folder-below .nav-files-container .nav-folder-title-content { + flex: 100%; +} +.novel-word-count--folder-below .nav-files-container .nav-folder-title::after { + display: inline-block; + margin-top: -2px; + max-width: 100%; + overflow: hidden; + padding: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.novel-word-count-settings-header { + align-items: baseline; +} + +.novel-word-count-donation-line { + align-items: center; + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.novel-word-count-hr { + border-color: #ccc; + margin: 1rem 0; +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 973d33c..09fd21f 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "2025/review-niora-aug-2025.md", + "file": "2025/review-niora-aug-2025-draft.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "review-niora-aug-2025" + "title": "review-niora-aug-2025-draft" } } ] @@ -78,7 +78,7 @@ } ], "direction": "horizontal", - "width": 300 + "width": 448.5 }, "right": { "id": "e30ab937380a4672", @@ -163,18 +163,20 @@ "canvas:Create new canvas": false, "daily-notes:Open today's daily note": false, "templates:Insert template": false, - "command-palette:Open command palette": false + "command-palette:Open command palette": false, + "obsidian-git:Open Git source control": false } }, "active": "a0e3a8c10d55aaec", "lastOpenFiles": [ + "2025/macOS automount network share.md", + "2025/macOS autodetect USB.md", + "2025/review-niora-aug-2025-draft.md", "2021/Sate babi.md", - "2025/review-niora-aug-2025.md", "2025/Todoist + gcal timeblocking-daytheming.md", "2025/Tuinhuis specs.md", "2025/vacation-yoga-retreat-weekend-limburg-w32-8to19-aug.md", "2025/Verkoop macBookPro11,1 Marktplaats.md", - "2025/macOS autodetect USB.md", "2025/Backups on macOS.md", "2025/Brewlog 2025.md", "2025/freepik-randy-37-jaar-ecard-202507221949326aqr.png", @@ -191,7 +193,6 @@ "2025/images/Screenshot 2025-01-02 at 21.36.20.png", "2025/goede-voornemens-2025.md", "2025/Hop inventory 2025-03-07.md", - "2025/macOS automount network share.md", "2025/macOS homebrew notes.md", "2025/macos-old-installer-links.md", "2025/Signaleringsplan jerry jacobs bipolair 1 versie 5 FINAL (18-03-2025).pdf", diff --git a/2025/review-niora-aug-2025.md b/2025/review-niora-aug-2025-draft.md similarity index 100% rename from 2025/review-niora-aug-2025.md rename to 2025/review-niora-aug-2025-draft.md