mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	Compare commits
	
		
			1154 Commits
		
	
	
		
			v0.32.0-be
			...
			v0.41.5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | a86177bb59 | ||
|  | 9f1b3cc892 | ||
|  | 8473f72ec8 | ||
|  | 666d202a3a | ||
|  | 988fae50cb | ||
|  | 98bbd17920 | ||
|  | dadcc93ae3 | ||
|  | 48e19d0149 | ||
|  | f97c9e3619 | ||
|  | 61167f6646 | ||
|  | 29cec8112e | ||
|  | 48aadc8309 | ||
|  | b2508db9af | ||
|  | 87510fd72b | ||
|  | 339f212e4c | ||
|  | 3c311cd2a4 | ||
|  | b5bf581bd9 | ||
|  | 242f139be4 | ||
|  | 6c76d862d2 | ||
|  | 62bc05134e | ||
|  | 50d3928dd5 | ||
|  | 44d641617e | ||
|  | f3b84e5185 | ||
|  | 34b8979016 | ||
|  | 6c188982b3 | ||
|  | 1175a8ee49 | ||
|  | 9c04ef9fb7 | ||
|  | 6cc3e3cdf6 | ||
|  | f8bd55374f | ||
|  | 3ccb1c6ac1 | ||
|  | d34d265d01 | ||
|  | c063f75f48 | ||
|  | 2d1f3b7633 | ||
|  | 3772d97dfa | ||
|  | 5c0355718f | ||
|  | 081693f263 | ||
|  | 8d312515dd | ||
|  | 7bd05415fa | ||
|  | 8d7687f354 | ||
|  | 42128c007f | ||
|  | dfb97d64f7 | ||
|  | b1bed18331 | ||
|  | ae50c9847d | ||
|  | 6201dd70a0 | ||
|  | 451c408063 | ||
|  | 3bbb213f82 | ||
|  | bab657e43d | ||
|  | 4b24d9562c | ||
|  | a73739d03e | ||
|  | 4485650cbc | ||
|  | 58f610b2c6 | ||
|  | 5024454914 | ||
|  | ca0e36ea81 | ||
|  | c9b2ff05e9 | ||
|  | 0973498fe9 | ||
|  | 189202b1f6 | ||
|  | cc298b1e7a | ||
|  | f8bd6183bf | ||
|  | ef60cb5395 | ||
|  | b10c083560 | ||
|  | 8eeb395523 | ||
|  | 084882a50e | ||
|  | 7c04521e9c | ||
|  | 0a0de7312c | ||
|  | 37255243f7 | ||
|  | b4b22d9353 | ||
|  | d3eb640aa2 | ||
|  | 78d431387b | ||
|  | c4bc53da59 | ||
|  | 34de8fb874 | ||
|  | 5a6ab68144 | ||
|  | c4e5b35187 | ||
|  | 2e55d544f1 | ||
|  | b778985b5e | ||
|  | f9a79fa00f | ||
|  | ef61e22f1f | ||
|  | 8a92786012 | ||
|  | a856463173 | ||
|  | cb168218fb | ||
|  | 978575498c | ||
|  | 8584de27ab | ||
|  | a36d6bf9be | ||
|  | 9b17e9976e | ||
|  | d927865cbd | ||
|  | 6de0b19569 | ||
|  | 84d7097b1a | ||
|  | 8ccc48c25d | ||
|  | 438da7cfbb | ||
|  | af5c4b5859 | ||
|  | 04360381b6 | ||
|  | 45e2dc96fb | ||
|  | ff426fc1fc | ||
|  | 6dfc2755e7 | ||
|  | 789f12ac8f | ||
|  | 9a1a76605a | ||
|  | debce78c7f | ||
|  | 48c57c7ce7 | ||
|  | 4a89df7ebf | ||
|  | 6295a1825d | ||
|  | 280955b3a2 | ||
|  | 72cc54a83f | ||
|  | c3b44b9a91 | ||
|  | 8a9875ecfa | ||
|  | 9230b07adb | ||
|  | 5a6066dcd1 | ||
|  | d4d54c5f01 | ||
|  | 141d4593ca | ||
|  | a7ddc33b6d | ||
|  | 173030e02e | ||
|  | 8ae78a9e23 | ||
|  | babc27f824 | ||
|  | 2c7eb723d5 | ||
|  | 40247a591e | ||
|  | 3a4d32f163 | ||
|  | 7f2c859b94 | ||
|  | a5764c269f | ||
|  | 6a1bfdeab9 | ||
|  | 6de0f75931 | ||
|  | fcf72262bd | ||
|  | 114017147f | ||
|  | a717ee00fb | ||
|  | f5e27278ab | ||
|  | 2cc0442ef2 | ||
|  | 687a466a35 | ||
|  | 20c24e26cc | ||
|  | 3bafc396fc | ||
|  | 08606f7d88 | ||
|  | 3fa3e912a4 | ||
|  | 44219e7ccc | ||
|  | 48abd765c6 | ||
|  | 2d38706ba8 | ||
|  | 8d45662bee | ||
|  | dc4024b6de | ||
|  | 5b67854cbe | ||
|  | 72745aca29 | ||
|  | e6e41adad0 | ||
|  | bcbf1b79c3 | ||
|  | 1d78432df4 | ||
|  | c6d912dcb7 | ||
|  | eb287917c1 | ||
|  | da53c1eaa8 | ||
|  | c67613a557 | ||
|  | 0ca107ff48 | ||
|  | 73bf2dcb02 | ||
|  | 719f10981e | ||
|  | 1774f48d07 | ||
|  | deb67d6275 | ||
|  | bafd829ff6 | ||
|  | e7aa84435b | ||
|  | 493d088d80 | ||
|  | 5f4d963580 | ||
|  | 5114f3f782 | ||
|  | 53f5df4e88 | ||
|  | e4039ea5e1 | ||
|  | 95fef8d2e5 | ||
|  | 7105b61aab | ||
|  | 78a50be663 | ||
|  | 3d3ad3b99b | ||
|  | 0d9cdcac85 | ||
|  | c4f7bb37db | ||
|  | 81ec85083a | ||
|  | 62da383623 | ||
|  | 8513e0201c | ||
|  | abd60581be | ||
|  | aff02184f8 | ||
|  | 8909d175d0 | ||
|  | 091eb8f791 | ||
|  | e10d23289e | ||
|  | 26599f057c | ||
|  | 4e0e2e8926 | ||
|  | 9c631e4398 | ||
|  | 687539cc95 | ||
|  | 03e0c98066 | ||
|  | 77f358b846 | ||
|  | 4c82e882e0 | ||
|  | 0f4ba43463 | ||
|  | f15239c006 | ||
|  | ed1b5e3843 | ||
|  | 607bdfef92 | ||
|  | 4f744564f2 | ||
|  | f64b343d8d | ||
|  | 47b803920b | ||
|  | 8888d04878 | ||
|  | 49398f5374 | ||
|  | 95d1952896 | ||
|  | 3ab2b41e8c | ||
|  | e5155130e7 | ||
|  | 724ba352e6 | ||
|  | 1239293435 | ||
|  | 16f42dd4ab | ||
|  | 350331e2ef | ||
|  | a2d6a5c3e9 | ||
|  | cb35284d37 | ||
|  | 2af37640d8 | ||
|  | 4bd298a55b | ||
|  | cd4b1235a7 | ||
|  | 5e3c85f891 | ||
|  | b2a3e1cc04 | ||
|  | d71763aedb | ||
|  | 368d0c55da | ||
|  | 637010577b | ||
|  | 7bcae9981b | ||
|  | 3752cf8cba | ||
|  | 7270bf287d | ||
|  | d821ea4095 | ||
|  | 41d1d83dc2 | ||
|  | a2fe110400 | ||
|  | fdc99bb6f9 | ||
|  | 36eac6badd | ||
|  | 7cac2521ef | ||
|  | e8a9e49e9e | ||
|  | fb55cdaea6 | ||
|  | b9b2cc8364 | ||
|  | 8dfdd090f5 | ||
|  | fe7705524a | ||
|  | 8e77d729e5 | ||
|  | 2b1b7774f8 | ||
|  | 2d58019d6e | ||
|  | fe31f08c0d | ||
|  | d9fb36a9a6 | ||
|  | 52f4876f2d | ||
|  | ad7a55d305 | ||
|  | 2e3534dfb7 | ||
|  | d288c1b052 | ||
|  | f2cf361acf | ||
|  | e7af24c139 | ||
|  | 9797942b8e | ||
|  | 32d60a7eb9 | ||
|  | 4330dc47a0 | ||
|  | 8ca9ad3497 | ||
|  | a679fedb58 | ||
|  | 880f4ad711 | ||
|  | e000fb4579 | ||
|  | 22c042e21f | ||
|  | 2c3f07521d | ||
|  | e06f3ef97e | ||
|  | 7e41a2750c | ||
|  | b2a48a1f3a | ||
|  | e1bf4dcbc9 | ||
|  | 6d847d22d3 | ||
|  | 9337564075 | ||
|  | 2fa41b44c5 | ||
|  | 8d2c2202fa | ||
|  | 380bb0cd01 | ||
|  | 789f62267c | ||
|  | 25553c9e67 | ||
|  | 81a54cd4a0 | ||
|  | 1d2fc773c2 | ||
|  | 7767edd82f | ||
|  | 99ea238c3f | ||
|  | 826c434630 | ||
|  | 4401a8e1e8 | ||
|  | 4ce4ac9584 | ||
|  | 88bd65c679 | ||
|  | 9eab3026bb | ||
|  | 7abaedbf31 | ||
|  | 402718d293 | ||
|  | 990a84c202 | ||
|  | d8e181a828 | ||
|  | 4ec671d199 | ||
|  | 9f4a514562 | ||
|  | 18ee239362 | ||
|  | 08687b76ea | ||
|  | 60d07a6871 | ||
|  | 81f4966a1a | ||
|  | 9acf723a9a | ||
|  | 47f7f5f4d9 | ||
|  | 14d6372bd8 | ||
|  | 6d912c4897 | ||
|  | 62e1284790 | ||
|  | d79ae261e1 | ||
|  | 92f6558e55 | ||
|  | 8d49249ed7 | ||
|  | d1bb62c40e | ||
|  | 42017fde5f | ||
|  | 786bbbc160 | ||
|  | 0cc013c13f | ||
|  | c5475765e5 | ||
|  | 9ea91f821c | ||
|  | b757dfcf79 | ||
|  | 44ddcdd852 | ||
|  | 66204811cf | ||
|  | 822a8509b3 | ||
|  | 9f62490a75 | ||
|  | b63ecba695 | ||
|  | d5ae3802d1 | ||
|  | 7c6cd63a53 | ||
|  | 62a80ef016 | ||
|  | 27ab55d26a | ||
|  | 34150e7177 | ||
|  | b946599320 | ||
|  | 3cd4be4e48 | ||
|  | 96e2b9bc18 | ||
|  | adb8caa8a2 | ||
|  | 0054a32dc7 | ||
|  | 513ce1a183 | ||
|  | 9f38ea6ee7 | ||
|  | 0e13678f7c | ||
|  | f0cbca2838 | ||
|  | f6f7836b8e | ||
|  | 7651c53363 | ||
|  | 0f25c8a95f | ||
|  | 1a49894adf | ||
|  | bd8c078fb9 | ||
|  | 6e060b87b8 | ||
|  | 2375b170ba | ||
|  | eeedb91ef7 | ||
|  | 05b51c0f68 | ||
|  | 8bf794f13b | ||
|  | 48b401164a | ||
|  | b65631be7e | ||
|  | 439b45b0b8 | ||
|  | 976b2aa6f5 | ||
|  | 88213c1bbd | ||
|  | d2e3aedf7f | ||
|  | 368d3b1b97 | ||
|  | 9301679707 | ||
|  | 865f7e1ee1 | ||
|  | c243d2e85c | ||
|  | 97a35d6fba | ||
|  | 3f0974d3d2 | ||
|  | 48a7c0235f | ||
|  | ac7d5f2e81 | ||
|  | 516e6c35da | ||
|  | 7cad386a56 | ||
|  | 60c908cd63 | ||
|  | 52a907651e | ||
|  | 3254b551d8 | ||
|  | 7a62d1636b | ||
|  | 7d9b720ea8 | ||
|  | ba500a3a80 | ||
|  | 606d5afcab | ||
|  | 4b66765cc1 | ||
|  | 8651e47118 | ||
|  | 34bc02965f | ||
|  | eacefeb08b | ||
|  | 11a61325f9 | ||
|  | 370c63986d | ||
|  | d103b16d9a | ||
|  | c63bb7ce8a | ||
|  | af5c623671 | ||
|  | 55d1f9e9f0 | ||
|  | 96a7b4e45e | ||
|  | c83ca78565 | ||
|  | c5eac8f438 | ||
|  | 9bc1f5af45 | ||
|  | 423a70d102 | ||
|  | 562c729ed6 | ||
|  | 0760dc742b | ||
|  | 1098d75ce0 | ||
|  | bd8e5f255b | ||
|  | 8da094cd3c | ||
|  | 44dc3c28de | ||
|  | 828cce0d78 | ||
|  | 49c0d3199d | ||
|  | 416d733510 | ||
|  | 6de4914ea6 | ||
|  | 9f1e777e6d | ||
|  | adb9ce5e93 | ||
|  | 746181689f | ||
|  | a99c016818 | ||
|  | 37f279fab0 | ||
|  | ab535bf147 | ||
|  | 1876664dfb | ||
|  | 1690248e24 | ||
|  | cbeb8ea17e | ||
|  | e355b449c4 | ||
|  | 4fdea77c57 | ||
|  | 9a13edd490 | ||
|  | 6d276582cb | ||
|  | 493730dff6 | ||
|  | b00a9f4415 | ||
|  | b25c1d6fa8 | ||
|  | c9113ae752 | ||
|  | 0ec11d29ba | ||
|  | a6cd25071e | ||
|  | 97b13ae91d | ||
|  | 0178232f26 | ||
|  | cc138ef9f8 | ||
|  | 1552c3804d | ||
|  | 7963de0abc | ||
|  | f98a20928c | ||
|  | 209b1610f6 | ||
|  | bd0f7d3680 | ||
|  | f852e1de81 | ||
|  | c9770573b2 | ||
|  | 23701219e1 | ||
|  | c9bc4ad108 | ||
|  | 8b9c235465 | ||
|  | 20fdeee048 | ||
|  | 657d01da95 | ||
|  | 17e2627a34 | ||
|  | bf7541bfb9 | ||
|  | 9d81bf030d | ||
|  | f25d735b9d | ||
|  | 4d16018f6c | ||
|  | 5e11840137 | ||
|  | 61474defff | ||
|  | b12e38c231 | ||
|  | d1f679ab90 | ||
|  | 0f8a7bad06 | ||
|  | 9e031dcd60 | ||
|  | 51c3f98dde | ||
|  | a79a063d17 | ||
|  | 5e91b1b5e0 | ||
|  | 7877443fb4 | ||
|  | 759e47bfcf | ||
|  | 67bdffb27b | ||
|  | 3386dace3b | ||
|  | f3a2e2cbde | ||
|  | 3cf3fc13b9 | ||
|  | 2b69abf8ab | ||
|  | 3e49a7dbfa | ||
|  | 4c7c3105e8 | ||
|  | f782d2bef9 | ||
|  | ccaa9eae3a | ||
|  | 24c5388e0c | ||
|  | 1cd2711097 | ||
|  | f0dfe7d552 | ||
|  | 3b8b4da149 | ||
|  | 2150619d62 | ||
|  | acb76e0630 | ||
|  | fdb46f9329 | ||
|  | ca587cccf6 | ||
|  | 571772069a | ||
|  | 79e7762c72 | ||
|  | d025cfee1b | ||
|  | 7793552443 | ||
|  | f377a84fa1 | ||
|  | b8f2797abf | ||
|  | 54d89a9f47 | ||
|  | 1699646b39 | ||
|  | 94a0a31f17 | ||
|  | 10219fb9dd | ||
|  | 50431dd55a | ||
|  | 17b23d92ef | ||
|  | 14f3c783f2 | ||
|  | c1d0a1e07b | ||
|  | 1d3608b7bf | ||
|  | d0c655f66a | ||
|  | ac75fd2ca3 | ||
|  | 3b98428c8c | ||
|  | 7d877d0fef | ||
|  | cb79f2c7eb | ||
|  | 547a5714ae | ||
|  | 82420fe5f6 | ||
|  | 395913d1bb | ||
|  | f3a29b55ba | ||
|  | 232321f3a4 | ||
|  | 51dddb0bbb | ||
|  | 8b9bf6e46f | ||
|  | 631a75deec | ||
|  | 3f1d0e5872 | ||
|  | 0fe91d0184 | ||
|  | 2f711a12f8 | ||
|  | 64f32ba38f | ||
|  | 7db4859fb9 | ||
|  | eee9fcae5c | ||
|  | 9c4a976342 | ||
|  | e4a09c6207 | ||
|  | d467db2227 | ||
|  | b8d6ff0542 | ||
|  | a9b8e65c9b | ||
|  | bb8b563ece | ||
|  | 05a8ffb944 | ||
|  | 2502646a64 | ||
|  | 3d95d69f80 | ||
|  | df751f5d67 | ||
|  | 4f06b6de78 | ||
|  | d2177cd517 | ||
|  | 0affcf5ad2 | ||
|  | 7a416b107b | ||
|  | 1ff124dab7 | ||
|  | 4cb511bad0 | ||
|  | 73c8d145fa | ||
|  | ab79f24729 | ||
|  | cec71f65b3 | ||
|  | f75c008154 | ||
|  | 474baa7d95 | ||
|  | a155b6e8d5 | ||
|  | 229974e543 | ||
|  | 6fc19bfb93 | ||
|  | ccaa108faa | ||
|  | 0a72383495 | ||
|  | d389100611 | ||
|  | ea7257a5b2 | ||
|  | 0ebc947fbd | ||
|  | c89514f9bb | ||
|  | e0368e395c | ||
|  | 6986c201dd | ||
|  | bcf163f8a1 | ||
|  | 15aaead7b9 | ||
|  | d29c5c4758 | ||
|  | 81e2baeee5 | ||
|  | 4cececafc9 | ||
|  | 7c8e7a3f4b | ||
|  | 613d5f93e8 | ||
|  | 4f5b23fbf8 | ||
|  | a37b9cfc7b | ||
|  | 2bc18bc214 | ||
|  | f31a998c5d | ||
|  | 5552917533 | ||
|  | a9702aa6a2 | ||
|  | d1941cc650 | ||
|  | f98fa4098f | ||
|  | 5350496ed4 | ||
|  | b62d79044a | ||
|  | 0db3722ec2 | ||
|  | d47403c0e7 | ||
|  | 77311954a1 | ||
|  | b7cf4fe96b | ||
|  | 6d9b702d4c | ||
|  | 6e4c30571c | ||
|  | 5988776b7e | ||
|  | 384da60953 | ||
|  | 21fab412cb | ||
|  | eb4dfbad92 | ||
|  | aff9ce97ee | ||
|  | b0a3f828fb | ||
|  | 76f5736255 | ||
|  | a82066d899 | ||
|  | 45c5287d53 | ||
|  | dce54c7af3 | ||
|  | ee15db0ae1 | ||
|  | c48dbb0913 | ||
|  | 882ebdbd8f | ||
|  | 6f32d6fabe | ||
|  | 1e123f2390 | ||
|  | b29155775e | ||
|  | b821ed28fc | ||
|  | fdb8959aa1 | ||
|  | 7554cb057b | ||
|  | fab959539a | ||
|  | afe44a6fe8 | ||
|  | 7ed526beb7 | ||
|  | af695802e3 | ||
|  | 156f040880 | ||
|  | cf6f04defb | ||
|  | a890b91079 | ||
|  | e0aabe4f9c | ||
|  | 01cd9d8fb3 | ||
|  | af10f0f52a | ||
|  | aa5ede5039 | ||
|  | 21e77c83fc | ||
|  | b0310e34e2 | ||
|  | 9812b9c272 | ||
|  | 92d5f91aa6 | ||
|  | b0368c7f17 | ||
|  | 8e1f8c869b | ||
|  | 4688cda493 | ||
|  | 761c51069a | ||
|  | 4dc285d84f | ||
|  | 0e2f8b5734 | ||
|  | a1402c7c66 | ||
|  | 6ba3e5ab7f | ||
|  | f740e52ebf | ||
|  | e9454e4db7 | ||
|  | 749bb90713 | ||
|  | eb8c296e62 | ||
|  | dc063983ea | ||
|  | 2595c3ac31 | ||
|  | 9cb8bc5dd8 | ||
|  | 3b690f5456 | ||
|  | 7ef2e7769f | ||
|  | 4c07ac4c4c | ||
|  | 35cd7f3261 | ||
|  | 8c3e2e5eb7 | ||
|  | d57caee0d3 | ||
|  | 6e83980784 | ||
|  | 295af1f43e | ||
|  | ed2afe5c20 | ||
|  | bfc7570e14 | ||
|  | d9b9d730bb | ||
|  | ba8a8dca7b | ||
|  | 29eb5a8435 | ||
|  | 5de92171a7 | ||
|  | 29c5e394ab | ||
|  | 07b3d11fe5 | ||
|  | 67663fba50 | ||
|  | 995ebbf577 | ||
|  | d0e6be3e0c | ||
|  | 01370a5968 | ||
|  | 6c561b5764 | ||
|  | 2953f1bdb8 | ||
|  | 1c057cac75 | ||
|  | 0415efd33b | ||
|  | e58dc829f5 | ||
|  | 90d10c1ff3 | ||
|  | 5b30291601 | ||
|  | 5193f073e9 | ||
|  | 6c7d8a9667 | ||
|  | 5e9bedd903 | ||
|  | e712990c03 | ||
|  | 91487b338a | ||
|  | 3ff24d53e5 | ||
|  | 94c904fb40 | ||
|  | 5f258fbbbf | ||
|  | 56c7b7f5bd | ||
|  | bf9ad976b9 | ||
|  | 19206d1e0d | ||
|  | 420be6d8c6 | ||
|  | dbd2040bee | ||
|  | 1e979d71c7 | ||
|  | 6bbd4c59bc | ||
|  | 3a54d00e2b | ||
|  | 499c9a7381 | ||
|  | cd139bdd76 | ||
|  | 60c3b5cccc | ||
|  | 540f9f933a | ||
|  | a59943094e | ||
|  | c400a7143c | ||
|  | 1f37d00e42 | ||
|  | d21e824343 | ||
|  | ff3f0ee0a0 | ||
|  | 01ff34b5d4 | ||
|  | 0cde7ede24 | ||
|  | 92cb723d0c | ||
|  | e4bec265c1 | ||
|  | 434d8ef48c | ||
|  | c8ba07a4ae | ||
|  | 4da6234911 | ||
|  | 38e7649ac3 | ||
|  | ff0245f05f | ||
|  | 7a2c7edd7e | ||
|  | 98c81faedb | ||
|  | cfb850acb2 | ||
|  | a16aaf7a81 | ||
|  | 465c3b87a7 | ||
|  | 0e5028acd3 | ||
|  | 00c295e4bf | ||
|  | 7084ed4fb1 | ||
|  | 587134c2f8 | ||
|  | 5fac2c7633 | ||
|  | 08a518479b | ||
|  | 522f71cb91 | ||
|  | bcdfb47939 | ||
|  | 667471e7bb | ||
|  | d357943ebb | ||
|  | 07043fb177 | ||
|  | 3c4ec7fe1a | ||
|  | 1f8d382b1f | ||
|  | 4bd7438fca | ||
|  | 0ae9c8da17 | ||
|  | 61e8cbbcba | ||
|  | 86c5dd6494 | ||
|  | f921562346 | ||
|  | c5acb7fc9b | ||
|  | 643d9077fc | ||
|  | b4709e8ee5 | ||
|  | a1181623b7 | ||
|  | 73a6c66379 | ||
|  | 1d5daa8dfd | ||
|  | 834e1f7253 | ||
|  | c141f4b2c0 | ||
|  | 1a87190f43 | ||
|  | a1262aaaf3 | ||
|  | 1838f097e5 | ||
|  | 95d0ad1cad | ||
|  | 767aaa18f4 | ||
|  | 8a7228146c | ||
|  | f9b5e473f2 | ||
|  | 3d294c5163 | ||
|  | 60231de0ed | ||
|  | 35e9df6170 | ||
|  | 13c0411533 | ||
|  | c5e040c4a4 | ||
|  | e00ab5dbf9 | ||
|  | 95c37cfdd1 | ||
|  | de02e9e889 | ||
|  | e143becb7a | ||
|  | c0eb30472e | ||
|  | 8b320bb85f | ||
|  | d93b9b8a23 | ||
|  | 69b53fdfb3 | ||
|  | 920d71a5a6 | ||
|  | d4a277321c | ||
|  | 4068691078 | ||
|  | 86d7e139a4 | ||
|  | 44add751b2 | ||
|  | c49c69f824 | ||
|  | 7bd1d8feb4 | ||
|  | 4ba7e74b58 | ||
|  | 4cda661c1b | ||
|  | 5b4a2bd71c | ||
|  | a808e12d31 | ||
|  | 1f3f9a4037 | ||
|  | 77ac8df1e6 | ||
|  | b53e2a3570 | ||
|  | 7539e6a616 | ||
|  | b5a0cadcf4 | ||
|  | b8db842788 | ||
|  | dea5195223 | ||
|  | c3ea2ae1b3 | ||
|  | 1fddd6f318 | ||
|  | 466a4802b6 | ||
|  | 8f2d2b189c | ||
|  | 0837cabb41 | ||
|  | 5646218be8 | ||
|  | 169551c6a8 | ||
|  | 3a1c80c189 | ||
|  | 31bcc037f1 | ||
|  | 179d530ea9 | ||
|  | da92809299 | ||
|  | c2ebd4b308 | ||
|  | 9b24ae0600 | ||
|  | 7cd75cebfc | ||
|  | 664485ccd5 | ||
|  | 60ac1a04f4 | ||
|  | 7c7beb5502 | ||
|  | 5aa5ec3af1 | ||
|  | 58a857cf79 | ||
|  | 712f67e983 | ||
|  | 3149dff880 | ||
|  | d58e98e361 | ||
|  | 744855d4f5 | ||
|  | 8a9f2ff1d8 | ||
|  | f539aedd25 | ||
|  | 05547845cb | ||
|  | 9b905563c3 | ||
|  | 894c888d87 | ||
|  | 34d4274032 | ||
|  | b685d7ffb5 | ||
|  | d87c469fbb | ||
|  | d8730f1722 | ||
|  | 72fda89360 | ||
|  | 7075842954 | ||
|  | a2c78e2c5c | ||
|  | 9c9ef1c7b4 | ||
|  | df40accdd4 | ||
|  | b67aa99b86 | ||
|  | 5ecb881cec | ||
|  | fcb6a06d68 | ||
|  | 5b5ab0b044 | ||
|  | ab04bde5fb | ||
|  | c9e4261930 | ||
|  | 9ea8209d4e | ||
|  | 56e50cc850 | ||
|  | fc87bcf10c | ||
|  | b471d51cb4 | ||
|  | b7b583ff04 | ||
|  | 475fddeec1 | ||
|  | 2af86927b0 | ||
|  | 2e58e32112 | ||
|  | 5c05963bd9 | ||
|  | 4e5e3e4675 | ||
|  | f7c59700a5 | ||
|  | f1a7fce277 | ||
|  | cf53cbf1dd | ||
|  | 1a182d1b58 | ||
|  | 8bd52f349a | ||
|  | 68faa47c6f | ||
|  | 2f2a14d4b8 | ||
|  | a2a53deb94 | ||
|  | d50e072ea4 | ||
|  | 904eb25f64 | ||
|  | 205081c804 | ||
|  | c4d5060a0b | ||
|  | 5bba18191f | ||
|  | 5e3538669d | ||
|  | 23c449ca0c | ||
|  | b7344329f4 | ||
|  | e04845335b | ||
|  | 86a330c8c3 | ||
|  | f82e99b5ed | ||
|  | bdf42749f3 | ||
|  | 7ccbf45569 | ||
|  | c0b30e603a | ||
|  | d3c957768f | ||
|  | ed9ecf2a57 | ||
|  | 22d48b0586 | ||
|  | edc23940d0 | ||
|  | c72ea2ed60 | ||
|  | 4570319517 | ||
|  | 69d739400c | ||
|  | ec7c0f0723 | ||
|  | 3de124748d | ||
|  | 41d47c5d33 | ||
|  | 132360b46b | ||
|  | f0496cb42c | ||
|  | 1522297700 | ||
|  | 2a5ab3a5e1 | ||
|  | 358fd13c8d | ||
|  | 2305ad7405 | ||
|  | 78f5b7b288 | ||
|  | 1903c59163 | ||
|  | b16c2d19b6 | ||
|  | 00bb1236ce | ||
|  | 82bbf4173b | ||
|  | 9f4ca279aa | ||
|  | b890859025 | ||
|  | 56e4f4f5ac | ||
|  | 157bd3816d | ||
|  | 21588829c7 | ||
|  | 9689029c4b | ||
|  | 992d174b23 | ||
|  | 8886e95847 | ||
|  | 6d5762fac8 | ||
|  | e9ab044e46 | ||
|  | fda219d070 | ||
|  | 2be1aca2f3 | ||
|  | 1b318d6a30 | ||
|  | 22c4859d42 | ||
|  | 80a6361cf1 | ||
|  | 8439effeeb | ||
|  | fafab95a07 | ||
|  | 24c8e8fc2b | ||
|  | 1923bf7dda | ||
|  | 2ee94a3a69 | ||
|  | 2fb3a3eff9 | ||
|  | bcbbf4dc3e | ||
|  | 7dc793920f | ||
|  | 0b43eceb2d | ||
|  | 85f736139b | ||
|  | 98a6670cb4 | ||
|  | a15be82f00 | ||
|  | 6c3809e1db | ||
|  | 33a2cd21a3 | ||
|  | 3eebce22e7 | ||
|  | adae0625b9 | ||
|  | 5063cfb979 | ||
|  | 0835930a8a | ||
|  | c9432990b7 | ||
|  | 9ad521822d | ||
|  | 824fb08511 | ||
|  | cc4c15daf0 | ||
|  | 7718778013 | ||
|  | a25260353d | ||
|  | c1e8a4b384 | ||
|  | 3f2229d9e1 | ||
|  | 8561227622 | ||
|  | 8859e2ac40 | ||
|  | 7423b2f4fd | ||
|  | d23e9f1bc4 | ||
|  | 516277a478 | ||
|  | cbc7710d81 | ||
|  | ea71e96f72 | ||
|  | 59d1cb1833 | ||
|  | 7c54ba63ce | ||
|  | 5892b5b851 | ||
|  | 02eb737b9d | ||
|  | 144e75da9e | ||
|  | 8d14a0d687 | ||
|  | dec2c218f7 | ||
|  | dd147a7209 | ||
|  | c3fabcb666 | ||
|  | 35e825b376 | ||
|  | 334a38c493 | ||
|  | 8ec01c73cd | ||
|  | 0ef6634d41 | ||
|  | f6fc24d11d | ||
|  | ed24e32305 | ||
|  | 86df60bb74 | ||
|  | 42cf02e9a4 | ||
|  | 3add997b49 | ||
|  | 649862b01c | ||
|  | f5228f87f0 | ||
|  | 76f3e87790 | ||
|  | 30c56cd8af | ||
|  | 16be0c1014 | ||
|  | c82de8b6b2 | ||
|  | d3f2b71803 | ||
|  | f3955bcbdc | ||
|  | 90afb2a1ee | ||
|  | 2dae9b9621 | ||
|  | 521a9b0b2c | ||
|  | 2cfe9b3c03 | ||
|  | 45ee959c11 | ||
|  | 3bf8546d51 | ||
|  | ca8b603bd9 | ||
|  | faae11f070 | ||
|  | b069436039 | ||
|  | e828ef370d | ||
|  | 50a0400616 | ||
|  | 0226b1e9a8 | ||
|  | 135102d2b5 | ||
|  | a17b8a053e | ||
|  | fdc86bab50 | ||
|  | f885388bf7 | ||
|  | aa96b33bc2 | ||
|  | e36d636f93 | ||
|  | 2e05cb1764 | ||
|  | 9404e27cba | ||
|  | 494ec0b051 | ||
|  | 36b575c286 | ||
|  | d1992b061c | ||
|  | a79aec85b5 | ||
|  | 76dce5197f | ||
|  | 5d80df398b | ||
|  | a6f57d7761 | ||
|  | a981df6282 | ||
|  | ae8a2bfb1b | ||
|  | 15a2fe2570 | ||
|  | 8dadc7e518 | ||
|  | c614bc3263 | ||
|  | 1e50d88166 | ||
|  | c9cc2cb4f3 | ||
|  | c8a5c71ec2 | ||
|  | 55356963dd | ||
|  | 0e867a995f | ||
|  | 3ca37b2f42 | ||
|  | 0c78fda531 | ||
|  | 7c60080772 | ||
|  | bf5a31dcdb | ||
|  | a5e38165ef | ||
|  | fe6f19e611 | ||
|  | 576a07bcb7 | ||
|  | 4be7ac7ae1 | ||
|  | a81b00e130 | ||
|  | d4e27c1b76 | ||
|  | be477f178b | ||
|  | de95b92f90 | ||
|  | 89ed9027da | ||
|  | 1c0b55e422 | ||
|  | 10d089240a | ||
|  | 84b1f1f24e | ||
|  | c8f59ea547 | ||
|  | 9d958e1860 | ||
|  | ec06b940f4 | ||
|  | f331172c7d | ||
|  | 650d9e0b27 | ||
|  | ff1d312a43 | ||
|  | a4acbf3aea | ||
|  | 242bea236f | ||
|  | ca2f14a2d0 | ||
|  | 48a654630f | ||
|  | cf5c1c1be1 | ||
|  | 0558c30b56 | ||
|  | 36c87b7fa0 | ||
|  | d039a5f24e | ||
|  | 3e3d111d76 | ||
|  | ecb485c8bc | ||
|  | 02ab59c9e0 | ||
|  | 8e4e0bd543 | ||
|  | bbe0e9e425 | ||
|  | 24a3f814ed | ||
|  | 233a50dbb7 | ||
|  | 6d8f11d533 | ||
|  | 4e4beb26c6 | ||
|  | 1f092c2656 | ||
|  | 9622b046e0 | ||
|  | f9abea83f3 | ||
|  | b84542064c | ||
|  | 8ab2c924c4 | ||
|  | 4b9415a619 | ||
|  | c11479de58 | ||
|  | dddb02a286 | ||
|  | fab4c59f9b | ||
|  | b818f020a7 | ||
|  | 9888850c22 | ||
|  | 04209182c1 | ||
|  | 02c9dabcff | ||
|  | c9d0b8cc40 | ||
|  | 3cb421143f | ||
|  | fd9b79e115 | ||
|  | 53c4bb8a94 | ||
|  | 723fc42d88 | ||
|  | 1882b089ab | ||
|  | ad7a6c4d79 | ||
|  | 48e0e797da | ||
|  | fbb77d3e55 | ||
|  | d1d8e54d20 | ||
|  | f259c60b54 | ||
|  | aa981d3cd4 | ||
|  | f8118444f9 | ||
|  | 59da25ef55 | ||
|  | 61520bc3b3 | ||
|  | 5406b09f3a | ||
|  | 90f1bfb3e4 | ||
|  | f30eec7737 | ||
|  | 493cd1a7e0 | ||
|  | dfa1ab65c6 | ||
|  | 963ed32ce4 | ||
|  | de4733e848 | ||
|  | bfbc124e78 | ||
|  | fcd87b3e2d | ||
|  | 7bee93bb73 | ||
|  | c0c36d10e5 | ||
|  | 6e260ee563 | ||
|  | b1075d956f | ||
|  | 4dd6352aec | ||
|  | 6fe8bde720 | ||
|  | 0556ab5e66 | ||
|  | 7060700225 | ||
|  | 385b79ad34 | ||
|  | b8509c487d | ||
|  | 083dee9bdd | ||
|  | 0c2dd6aa35 | ||
|  | 743c15aacc | ||
|  | 263bff903c | ||
|  | 741dfaf2de | ||
|  | e4e4f73638 | ||
|  | 85e4bd817b | ||
|  | 78ffac8232 | ||
|  | b488adc330 | ||
|  | a06bd877c9 | ||
|  | b3834324f6 | ||
|  | d351134b75 | ||
|  | ea0835561c | ||
|  | b0c0c5f56b | ||
|  | 849fad0421 | ||
|  | eb28a3b0c9 | ||
|  | 5283b489dc | ||
|  | d54f848572 | ||
|  | 1ac0c4f874 | ||
|  | 3850f52401 | ||
|  | 6d5f8e0562 | ||
|  | 04633bdf3a | ||
|  | 97219aa12e | ||
|  | e825abf893 | ||
|  | 63b655cff4 | ||
|  | 0524942d11 | ||
|  | b5d75f183a | ||
|  | 706fc647ff | ||
|  | 13e9f9f9e7 | ||
|  | a76dcb44ae | ||
|  | b9373806cf | ||
|  | 9de2927304 | ||
|  | c3e1126489 | ||
|  | 3413c9ed64 | ||
|  | dcebcb0e73 | ||
|  | 3d7a5f20e7 | ||
|  | 6a99af64a8 | ||
|  | 7d57961ab2 | ||
|  | 95a773e5c9 | ||
|  | a912b2f23d | ||
|  | 36b581489c | ||
|  | 976684a3a8 | ||
|  | 093dfb4a39 | ||
|  | ddf381f92d | ||
|  | 2b44f3bc76 | ||
|  | 7b1fdfabf8 | ||
|  | 070e8d9647 | ||
|  | bf3360572a | ||
|  | e5036318af | ||
|  | 6d2394a9da | ||
|  | 427a266c57 | ||
|  | 196264b8c2 | ||
|  | afe24866f0 | ||
|  | d18a20cc06 | ||
|  | e94669de03 | ||
|  | 9c91b0459e | ||
|  | b161db064e | ||
|  | ec4abe0d81 | ||
|  | af21dd4463 | ||
|  | ef46727870 | ||
|  | 1ea0d283de | ||
|  | ed380e09c9 | ||
|  | b5daa83d69 | ||
|  | c4b957427d | ||
|  | 2f3b256272 | ||
|  | 6e3d8472e1 | ||
|  | 2a9f36a027 | ||
|  | cf3726289c | ||
|  | c8e4a5c9e7 | ||
|  | 3851bedb57 | ||
|  | a3951f1cce | ||
|  | 7c77ae758b | ||
|  | 20d3d61cec | ||
|  | 1b831f94a9 | ||
|  | 3f241553aa | ||
|  | 8624c83108 | ||
|  | d49cae9cea | ||
|  | 174128447b | ||
|  | 5d213eea7e | ||
|  | f45e25172b | ||
|  | ec87856ef4 | ||
|  | 6feb7ad1d5 | ||
|  | 6833e84d55 | ||
|  | 154a575701 | ||
|  | 504b2e2c4a | ||
|  | 2c5292222f | ||
|  | 989da8877b | ||
|  | 70591eadd5 | ||
|  | fead3cd7ad | ||
|  | a7cf3cdf05 | ||
|  | 5372f71faa | ||
|  | 3b76939f17 | ||
|  | c827d38f39 | ||
|  | 1e7586fae4 | ||
|  | ee89111bfb | ||
|  | 288b3077b2 | ||
|  | 5c1922ac9f | ||
|  | 93f1d46104 | ||
|  | c5daaf541a | ||
|  | 12b17b1e9e | ||
|  | ad46ba7d0f | ||
|  | 44f592c6cb | ||
|  | 943b35fb7d | ||
|  | f1967fd466 | ||
|  | ce2404b18a | ||
|  | cdd53a39f1 | ||
|  | c646019536 | ||
|  | c8049f0efe | ||
|  | f2c497049b | ||
|  | d713274ae2 | ||
|  | a72eeb9a98 | ||
|  | 41cdd5c640 | ||
|  | 4cde65d171 | ||
|  | 27659805f6 | ||
|  | 8ab081a3fd | ||
|  | ccbb2e2e12 | ||
|  | 2bf2ec5a6c | ||
|  | 4329675c60 | ||
|  | 412b0377e9 | ||
|  | 69e48ff4d7 | ||
|  | 4cacd1dfa2 | ||
|  | 0c8ad1b46e | ||
|  | d3ac7b0939 | ||
|  | e0306d4ad7 | ||
|  | 1f3d726048 | ||
|  | f3ed7e936d | ||
|  | 547ad7221d | ||
|  | 97a258c0c6 | ||
|  | 19a154c2f4 | ||
|  | b389ec5ea3 | ||
|  | 412375e92f | ||
|  | 4b96ada781 | ||
|  | 87b16f3325 | ||
|  | 0a0663be69 | ||
|  | 7eed076674 | ||
|  | b5143c152b | ||
|  | 6ef8a4c018 | ||
|  | ebd26f85bd | ||
|  | fbfb7b3b30 | ||
|  | cfb313b60e | ||
|  | 54e37dea20 | ||
|  | 5b14358620 | ||
|  | c4669cbaa3 | ||
|  | 74b41c9911 | ||
|  | d08a36174d | ||
|  | e845b80e10 | ||
|  | b0303ef529 | ||
|  | 68f67ec6ee | ||
|  | 20ae67f510 | ||
|  | 237749e4af | ||
|  | 15f4782947 | ||
|  | d48efd1925 | ||
|  | 883d726622 | ||
|  | 0a0cac5f41 | ||
|  | 012a18be00 | ||
|  | 890c00d4ba | ||
|  | bb43014230 | ||
|  | 53a995fecb | ||
|  | 8d3262d232 | ||
|  | 373ec4ac50 | ||
|  | 3fdecee95f | ||
|  | 86b9f5a8b0 | ||
|  | 873b60b00d | ||
|  | fc58086f6e | ||
|  | 40cec31099 | ||
|  | 33733d3ab7 | ||
|  | f08bf0be15 | ||
|  | 296cb7236f | ||
|  | f9f4148e8c | 
							
								
								
									
										3
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | # These are supported funding model platforms | ||||||
|  |  | ||||||
|  | github: [zadam] | ||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +1,11 @@ | |||||||
| .DS_Store | .DS_Store | ||||||
| node_modules/ | node_modules/ | ||||||
| dist/ | dist/ | ||||||
|  | src/public/app-dist/ | ||||||
| npm-debug.log | npm-debug.log | ||||||
| yarn-error.log | yarn-error.log | ||||||
| *.db | *.db | ||||||
| config.ini | config.ini | ||||||
| cert.key | cert.key | ||||||
| cert.crt | cert.crt | ||||||
|  | server-package.json | ||||||
							
								
								
									
										15
									
								
								.gitpod.dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.gitpod.dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | FROM gitpod/workspace-full | ||||||
|  |  | ||||||
|  | RUN sudo apt-get update \ | ||||||
|  |     && sudo apt-get install -yq --no-install-recommends \ | ||||||
|  |         libpng16-16 \ | ||||||
|  |         libpng-dev \ | ||||||
|  |         pkg-config \ | ||||||
|  |         autoconf \ | ||||||
|  |         libtool \ | ||||||
|  |         build-essential \ | ||||||
|  |         nasm \ | ||||||
|  |         libx11-dev \ | ||||||
|  |         libxkbfile-dev \ | ||||||
|  |     && sudo rm -rf /var/lib/apt/lists/* | ||||||
|  |  | ||||||
| @@ -1,7 +1,11 @@ | |||||||
|  | image: | ||||||
|  |   file: .gitpod.dockerfile | ||||||
|  |  | ||||||
| tasks: | tasks: | ||||||
|     - before: nvm install 10 && nvm use 10 |     - before: nvm install 10 && nvm use 10 | ||||||
|       init: npm install |       init: npm install | ||||||
|       command: npm run start |       command: npm run start-server | ||||||
|  |  | ||||||
| ports: | ports: | ||||||
|     - port: 8080 |     - port: 8080 | ||||||
|       onOpen: open-preview |       onOpen: open-preview | ||||||
							
								
								
									
										6
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | # Default ignored files | ||||||
|  | /workspace.xml | ||||||
|  |  | ||||||
|  | # Datasource local storage ignored files | ||||||
|  | /dataSources.local.xml | ||||||
|  | /dataSources/ | ||||||
							
								
								
									
										3
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
								
							| @@ -6,5 +6,8 @@ | |||||||
|         <option name="TAB_SIZE" value="2" /> |         <option name="TAB_SIZE" value="2" /> | ||||||
|       </value> |       </value> | ||||||
|     </option> |     </option> | ||||||
|  |     <JSCodeStyleSettings version="0"> | ||||||
|  |       <option name="USE_EXPLICIT_JS_EXTENSION" value="TRUE" /> | ||||||
|  |     </JSCodeStyleSettings> | ||||||
|   </code_scheme> |   </code_scheme> | ||||||
| </component> | </component> | ||||||
							
								
								
									
										5
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
								
							| @@ -5,10 +5,7 @@ | |||||||
|       <driver-ref>sqlite.xerial</driver-ref> |       <driver-ref>sqlite.xerial</driver-ref> | ||||||
|       <synchronize>true</synchronize> |       <synchronize>true</synchronize> | ||||||
|       <jdbc-driver>org.sqlite.JDBC</jdbc-driver> |       <jdbc-driver>org.sqlite.JDBC</jdbc-driver> | ||||||
|       <jdbc-url>jdbc:sqlite:$PROJECT_DIR$/../trilium-data/document.db</jdbc-url> |       <jdbc-url>jdbc:sqlite:$USER_HOME$/trilium-data/document.db</jdbc-url> | ||||||
|       <driver-properties> |  | ||||||
|         <property name="enable_load_extension" value="true" /> |  | ||||||
|       </driver-properties> |  | ||||||
|     </data-source> |     </data-source> | ||||||
|   </component> |   </component> | ||||||
| </project> | </project> | ||||||
| @@ -1,12 +1,11 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <dataSource name="document.db"> | <dataSource name="document.db"> | ||||||
|   <database-model serializer="dbm" dbms="SQLITE" family-id="SQLITE" format-version="4.15"> |   <database-model serializer="dbm" dbms="SQLITE" family-id="SQLITE" format-version="4.17"> | ||||||
|     <root id="1"> |     <root id="1"> | ||||||
|       <ServerVersion>3.25.1</ServerVersion> |       <ServerVersion>3.25.1</ServerVersion> | ||||||
|     </root> |     </root> | ||||||
|     <schema id="2" parent="1" name="main"> |     <schema id="2" parent="1" name="main"> | ||||||
|       <Current>1</Current> |       <Current>1</Current> | ||||||
|       <Visible>1</Visible> |  | ||||||
|     </schema> |     </schema> | ||||||
|     <collation id="3" parent="1" name="BINARY"/> |     <collation id="3" parent="1" name="BINARY"/> | ||||||
|     <collation id="4" parent="1" name="NOCASE"/> |     <collation id="4" parent="1" name="NOCASE"/> | ||||||
| @@ -14,113 +13,117 @@ | |||||||
|     <table id="6" parent="2" name="api_tokens"/> |     <table id="6" parent="2" name="api_tokens"/> | ||||||
|     <table id="7" parent="2" name="attributes"/> |     <table id="7" parent="2" name="attributes"/> | ||||||
|     <table id="8" parent="2" name="branches"/> |     <table id="8" parent="2" name="branches"/> | ||||||
|     <table id="9" parent="2" name="event_log"/> |     <table id="9" parent="2" name="note_contents"/> | ||||||
|     <table id="10" parent="2" name="links"/> |     <table id="10" parent="2" name="note_revision_contents"/> | ||||||
|     <table id="11" parent="2" name="note_contents"/> |     <table id="11" parent="2" name="note_revisions"/> | ||||||
|     <table id="12" parent="2" name="note_revisions"/> |     <table id="12" parent="2" name="notes"/> | ||||||
|     <table id="13" parent="2" name="notes"/> |     <table id="13" parent="2" name="options"/> | ||||||
|     <table id="14" parent="2" name="options"/> |     <table id="14" parent="2" name="recent_notes"/> | ||||||
|     <table id="15" parent="2" name="recent_notes"/> |     <table id="15" parent="2" name="source_ids"/> | ||||||
|     <table id="16" parent="2" name="source_ids"/> |     <table id="16" parent="2" name="sqlite_master"> | ||||||
|     <table id="17" parent="2" name="sqlite_master"> |  | ||||||
|       <System>1</System> |       <System>1</System> | ||||||
|     </table> |     </table> | ||||||
|     <table id="18" parent="2" name="sqlite_sequence"> |     <table id="17" parent="2" name="sqlite_sequence"> | ||||||
|       <System>1</System> |       <System>1</System> | ||||||
|     </table> |     </table> | ||||||
|     <table id="19" parent="2" name="sync"/> |     <table id="18" parent="2" name="sync"/> | ||||||
|     <column id="20" parent="6" name="apiTokenId"> |     <column id="19" parent="6" name="apiTokenId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="21" parent="6" name="token"> |     <column id="20" parent="6" name="token"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="22" parent="6" name="utcDateCreated"> |     <column id="21" parent="6" name="utcDateCreated"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="23" parent="6" name="isDeleted"> |     <column id="22" parent="6" name="isDeleted"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>INT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="24" parent="6" name="hash"> |     <column id="23" parent="6" name="hash"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>""</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <index id="25" parent="6" name="sqlite_autoindex_api_tokens_1"> |     <index id="24" parent="6" name="sqlite_autoindex_api_tokens_1"> | ||||||
|       <NameSurrogate>1</NameSurrogate> |       <NameSurrogate>1</NameSurrogate> | ||||||
|       <ColNames>apiTokenId</ColNames> |       <ColNames>apiTokenId</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <key id="26" parent="6"> |     <key id="25" parent="6"> | ||||||
|       <ColNames>apiTokenId</ColNames> |       <ColNames>apiTokenId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_api_tokens_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_api_tokens_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="27" parent="7" name="attributeId"> |     <column id="26" parent="7" name="attributeId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="28" parent="7" name="noteId"> |     <column id="27" parent="7" name="noteId"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="29" parent="7" name="type"> |     <column id="28" parent="7" name="type"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="30" parent="7" name="name"> |     <column id="29" parent="7" name="name"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="31" parent="7" name="value"> |     <column id="30" parent="7" name="value"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>''</DefaultExpression> |       <DefaultExpression>''</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="32" parent="7" name="position"> |     <column id="31" parent="7" name="position"> | ||||||
|       <Position>6</Position> |       <Position>6</Position> | ||||||
|       <DataType>INT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="33" parent="7" name="utcDateCreated"> |     <column id="32" parent="7" name="utcDateCreated"> | ||||||
|       <Position>7</Position> |       <Position>7</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="34" parent="7" name="utcDateModified"> |     <column id="33" parent="7" name="utcDateModified"> | ||||||
|       <Position>8</Position> |       <Position>8</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="35" parent="7" name="isDeleted"> |     <column id="34" parent="7" name="isDeleted"> | ||||||
|       <Position>9</Position> |       <Position>9</Position> | ||||||
|       <DataType>INT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="36" parent="7" name="hash"> |     <column id="35" parent="7" name="deleteId"> | ||||||
|       <Position>10</Position> |       <Position>10</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <DefaultExpression>NULL</DefaultExpression> | ||||||
|  |     </column> | ||||||
|  |     <column id="36" parent="7" name="hash"> | ||||||
|  |       <Position>11</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>""</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="37" parent="7" name="isInheritable"> |     <column id="37" parent="7" name="isInheritable"> | ||||||
|       <Position>11</Position> |       <Position>12</Position> | ||||||
|       <DataType>int|0s</DataType> |       <DataType>int|0s</DataType> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
| @@ -136,65 +139,69 @@ | |||||||
|       <ColNames>name |       <ColNames>name | ||||||
| value</ColNames> | value</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <index id="41" parent="7" name="IDX_attributes_name_index"> |     <index id="41" parent="7" name="IDX_attributes_value_index"> | ||||||
|       <ColNames>name</ColNames> |  | ||||||
|     </index> |  | ||||||
|     <index id="42" parent="7" name="IDX_attributes_value_index"> |  | ||||||
|       <ColNames>value</ColNames> |       <ColNames>value</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <key id="43" parent="7"> |     <key id="42" parent="7"> | ||||||
|       <ColNames>attributeId</ColNames> |       <ColNames>attributeId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_attributes_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_attributes_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="44" parent="8" name="branchId"> |     <column id="43" parent="8" name="branchId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="45" parent="8" name="noteId"> |     <column id="44" parent="8" name="noteId"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="46" parent="8" name="parentNoteId"> |     <column id="45" parent="8" name="parentNoteId"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="47" parent="8" name="notePosition"> |     <column id="46" parent="8" name="notePosition"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>INTEGER|0s</DataType> |       <DataType>INTEGER|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="48" parent="8" name="prefix"> |     <column id="47" parent="8" name="prefix"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="49" parent="8" name="isExpanded"> |     <column id="48" parent="8" name="isExpanded"> | ||||||
|       <Position>6</Position> |       <Position>6</Position> | ||||||
|       <DataType>BOOLEAN|0s</DataType> |       <DataType>INTEGER|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="50" parent="8" name="isDeleted"> |     <column id="49" parent="8" name="isDeleted"> | ||||||
|       <Position>7</Position> |       <Position>7</Position> | ||||||
|       <DataType>INTEGER|0s</DataType> |       <DataType>INTEGER|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="51" parent="8" name="utcDateModified"> |     <column id="50" parent="8" name="deleteId"> | ||||||
|       <Position>8</Position> |       <Position>8</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <DefaultExpression>NULL</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="52" parent="8" name="utcDateCreated"> |     <column id="51" parent="8" name="utcDateModified"> | ||||||
|       <Position>9</Position> |       <Position>9</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="53" parent="8" name="hash"> |     <column id="52" parent="8" name="utcDateCreated"> | ||||||
|       <Position>10</Position> |       <Position>10</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|  |     </column> | ||||||
|  |     <column id="53" parent="8" name="hash"> | ||||||
|  |       <Position>11</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>""</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <index id="54" parent="8" name="sqlite_autoindex_branches_1"> |     <index id="54" parent="8" name="sqlite_autoindex_branches_1"> | ||||||
| @@ -206,443 +213,448 @@ value</ColNames> | |||||||
|       <ColNames>noteId |       <ColNames>noteId | ||||||
| parentNoteId</ColNames> | parentNoteId</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <index id="56" parent="8" name="IDX_branches_noteId"> |     <index id="56" parent="8" name="IDX_branches_parentNoteId"> | ||||||
|       <ColNames>noteId</ColNames> |  | ||||||
|     </index> |  | ||||||
|     <index id="57" parent="8" name="IDX_branches_parentNoteId"> |  | ||||||
|       <ColNames>parentNoteId</ColNames> |       <ColNames>parentNoteId</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <key id="58" parent="8"> |     <key id="57" parent="8"> | ||||||
|       <ColNames>branchId</ColNames> |       <ColNames>branchId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_branches_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_branches_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="59" parent="9" name="eventId"> |     <column id="58" parent="9" name="noteId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="60" parent="9" name="noteId"> |     <column id="59" parent="9" name="content"> | ||||||
|       <Position>2</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|     </column> |  | ||||||
|     <column id="61" parent="9" name="comment"> |  | ||||||
|       <Position>3</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|     </column> |  | ||||||
|     <column id="62" parent="9" name="utcDateCreated"> |  | ||||||
|       <Position>4</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <index id="63" parent="9" name="sqlite_autoindex_event_log_1"> |  | ||||||
|       <NameSurrogate>1</NameSurrogate> |  | ||||||
|       <ColNames>eventId</ColNames> |  | ||||||
|       <Unique>1</Unique> |  | ||||||
|     </index> |  | ||||||
|     <key id="64" parent="9"> |  | ||||||
|       <ColNames>eventId</ColNames> |  | ||||||
|       <Primary>1</Primary> |  | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_event_log_1</UnderlyingIndexName> |  | ||||||
|     </key> |  | ||||||
|     <column id="65" parent="10" name="linkId"> |  | ||||||
|       <Position>1</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <column id="66" parent="10" name="noteId"> |  | ||||||
|       <Position>2</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <column id="67" parent="10" name="targetNoteId"> |  | ||||||
|       <Position>3</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <column id="68" parent="10" name="type"> |  | ||||||
|       <Position>4</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <column id="69" parent="10" name="hash"> |  | ||||||
|       <Position>5</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|       <DefaultExpression>""</DefaultExpression> |  | ||||||
|     </column> |  | ||||||
|     <column id="70" parent="10" name="isDeleted"> |  | ||||||
|       <Position>6</Position> |  | ||||||
|       <DataType>INTEGER|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|       <DefaultExpression>0</DefaultExpression> |  | ||||||
|     </column> |  | ||||||
|     <column id="71" parent="10" name="utcDateCreated"> |  | ||||||
|       <Position>7</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <column id="72" parent="10" name="utcDateModified"> |  | ||||||
|       <Position>8</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <index id="73" parent="10" name="sqlite_autoindex_links_1"> |  | ||||||
|       <NameSurrogate>1</NameSurrogate> |  | ||||||
|       <ColNames>linkId</ColNames> |  | ||||||
|       <Unique>1</Unique> |  | ||||||
|     </index> |  | ||||||
|     <index id="74" parent="10" name="IDX_links_noteId_index"> |  | ||||||
|       <ColNames>noteId</ColNames> |  | ||||||
|     </index> |  | ||||||
|     <index id="75" parent="10" name="IDX_links_targetNoteId_index"> |  | ||||||
|       <ColNames>targetNoteId</ColNames> |  | ||||||
|     </index> |  | ||||||
|     <key id="76" parent="10"> |  | ||||||
|       <ColNames>linkId</ColNames> |  | ||||||
|       <Primary>1</Primary> |  | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_links_1</UnderlyingIndexName> |  | ||||||
|     </key> |  | ||||||
|     <column id="77" parent="11" name="noteId"> |  | ||||||
|       <Position>1</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <column id="78" parent="11" name="content"> |  | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <DefaultExpression>NULL</DefaultExpression> |       <DefaultExpression>NULL</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="79" parent="11" name="hash"> |     <column id="60" parent="9" name="hash"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>""</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="80" parent="11" name="utcDateModified"> |     <column id="61" parent="9" name="utcDateModified"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <index id="81" parent="11" name="sqlite_autoindex_note_contents_1"> |     <index id="62" parent="9" name="sqlite_autoindex_note_contents_1"> | ||||||
|       <NameSurrogate>1</NameSurrogate> |       <NameSurrogate>1</NameSurrogate> | ||||||
|       <ColNames>noteId</ColNames> |       <ColNames>noteId</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <key id="82" parent="11"> |     <key id="63" parent="9"> | ||||||
|       <ColNames>noteId</ColNames> |       <ColNames>noteId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_note_contents_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_note_contents_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="83" parent="12" name="noteRevisionId"> |     <column id="64" parent="10" name="noteRevisionId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="84" parent="12" name="noteId"> |     <column id="65" parent="10" name="content"> | ||||||
|  |       <Position>2</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |     </column> | ||||||
|  |     <column id="66" parent="10" name="hash"> | ||||||
|  |       <Position>3</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |       <DefaultExpression>''</DefaultExpression> | ||||||
|  |     </column> | ||||||
|  |     <column id="67" parent="10" name="utcDateModified"> | ||||||
|  |       <Position>4</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |     </column> | ||||||
|  |     <index id="68" parent="10" name="sqlite_autoindex_note_revision_contents_1"> | ||||||
|  |       <NameSurrogate>1</NameSurrogate> | ||||||
|  |       <ColNames>noteRevisionId</ColNames> | ||||||
|  |       <Unique>1</Unique> | ||||||
|  |     </index> | ||||||
|  |     <key id="69" parent="10"> | ||||||
|  |       <ColNames>noteRevisionId</ColNames> | ||||||
|  |       <Primary>1</Primary> | ||||||
|  |       <UnderlyingIndexName>sqlite_autoindex_note_revision_contents_1</UnderlyingIndexName> | ||||||
|  |     </key> | ||||||
|  |     <column id="70" parent="11" name="noteRevisionId"> | ||||||
|  |       <Position>1</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |     </column> | ||||||
|  |     <column id="71" parent="11" name="noteId"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="85" parent="12" name="title"> |     <column id="72" parent="11" name="title"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="86" parent="12" name="content"> |     <column id="73" parent="11" name="contentLength"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="87" parent="12" name="isProtected"> |     <column id="74" parent="11" name="isErased"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|       <DataType>INT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="88" parent="12" name="utcDateModifiedFrom"> |     <column id="75" parent="11" name="isProtected"> | ||||||
|       <Position>6</Position> |       <Position>6</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|  |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="89" parent="12" name="utcDateModifiedTo"> |     <column id="76" parent="11" name="utcDateLastEdited"> | ||||||
|       <Position>7</Position> |       <Position>7</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="90" parent="12" name="dateModifiedFrom"> |     <column id="77" parent="11" name="utcDateCreated"> | ||||||
|       <Position>8</Position> |       <Position>8</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="91" parent="12" name="dateModifiedTo"> |     <column id="78" parent="11" name="utcDateModified"> | ||||||
|       <Position>9</Position> |       <Position>9</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="92" parent="12" name="type"> |     <column id="79" parent="11" name="dateLastEdited"> | ||||||
|       <Position>10</Position> |       <Position>10</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>''</DefaultExpression> |  | ||||||
|     </column> |     </column> | ||||||
|     <column id="93" parent="12" name="mime"> |     <column id="80" parent="11" name="dateCreated"> | ||||||
|       <Position>11</Position> |       <Position>11</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>''</DefaultExpression> |  | ||||||
|     </column> |     </column> | ||||||
|     <column id="94" parent="12" name="hash"> |     <column id="81" parent="11" name="type"> | ||||||
|       <Position>12</Position> |       <Position>12</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>''</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <index id="95" parent="12" name="sqlite_autoindex_note_revisions_1"> |     <column id="82" parent="11" name="mime"> | ||||||
|  |       <Position>13</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |       <DefaultExpression>''</DefaultExpression> | ||||||
|  |     </column> | ||||||
|  |     <column id="83" parent="11" name="hash"> | ||||||
|  |       <Position>14</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |       <DefaultExpression>''</DefaultExpression> | ||||||
|  |     </column> | ||||||
|  |     <index id="84" parent="11" name="sqlite_autoindex_note_revisions_1"> | ||||||
|       <NameSurrogate>1</NameSurrogate> |       <NameSurrogate>1</NameSurrogate> | ||||||
|       <ColNames>noteRevisionId</ColNames> |       <ColNames>noteRevisionId</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <index id="96" parent="12" name="IDX_note_revisions_noteId"> |     <index id="85" parent="11" name="IDX_note_revisions_noteId"> | ||||||
|       <ColNames>noteId</ColNames> |       <ColNames>noteId</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <index id="97" parent="12" name="IDX_note_revisions_dateModifiedFrom"> |     <index id="86" parent="11" name="IDX_note_revisions_utcDateLastEdited"> | ||||||
|       <ColNames>utcDateModifiedFrom</ColNames> |       <ColNames>utcDateLastEdited</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <index id="98" parent="12" name="IDX_note_revisions_dateModifiedTo"> |     <index id="87" parent="11" name="IDX_note_revisions_utcDateCreated"> | ||||||
|       <ColNames>utcDateModifiedTo</ColNames> |       <ColNames>utcDateCreated</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <key id="99" parent="12"> |     <index id="88" parent="11" name="IDX_note_revisions_dateLastEdited"> | ||||||
|  |       <ColNames>dateLastEdited</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <index id="89" parent="11" name="IDX_note_revisions_dateCreated"> | ||||||
|  |       <ColNames>dateCreated</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <key id="90" parent="11"> | ||||||
|       <ColNames>noteRevisionId</ColNames> |       <ColNames>noteRevisionId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_note_revisions_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_note_revisions_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="100" parent="13" name="noteId"> |     <column id="91" parent="12" name="noteId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="101" parent="13" name="title"> |     <column id="92" parent="12" name="title"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>"note"</DefaultExpression> |       <DefaultExpression>"note"</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="102" parent="13" name="isProtected"> |     <column id="93" parent="12" name="contentLength"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>INT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|  |     </column> | ||||||
|  |     <column id="94" parent="12" name="isProtected"> | ||||||
|  |       <Position>4</Position> | ||||||
|  |       <DataType>INT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="103" parent="13" name="type"> |     <column id="95" parent="12" name="type"> | ||||||
|       <Position>4</Position> |       <Position>5</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>'text'</DefaultExpression> |       <DefaultExpression>'text'</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="104" parent="13" name="mime"> |     <column id="96" parent="12" name="mime"> | ||||||
|       <Position>5</Position> |       <Position>6</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>'text/html'</DefaultExpression> |       <DefaultExpression>'text/html'</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="105" parent="13" name="hash"> |     <column id="97" parent="12" name="hash"> | ||||||
|       <Position>6</Position> |       <Position>7</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>""</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="106" parent="13" name="isDeleted"> |     <column id="98" parent="12" name="isDeleted"> | ||||||
|       <Position>7</Position> |       <Position>8</Position> | ||||||
|       <DataType>INT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="107" parent="13" name="dateCreated"> |     <column id="99" parent="12" name="deleteId"> | ||||||
|       <Position>8</Position> |  | ||||||
|       <DataType>TEXT|0s</DataType> |  | ||||||
|       <NotNull>1</NotNull> |  | ||||||
|     </column> |  | ||||||
|     <column id="108" parent="13" name="dateModified"> |  | ||||||
|       <Position>9</Position> |       <Position>9</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <DefaultExpression>NULL</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="109" parent="13" name="utcDateCreated"> |     <column id="100" parent="12" name="isErased"> | ||||||
|       <Position>10</Position> |       <Position>10</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|  |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="110" parent="13" name="utcDateModified"> |     <column id="101" parent="12" name="dateCreated"> | ||||||
|       <Position>11</Position> |       <Position>11</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <index id="111" parent="13" name="sqlite_autoindex_notes_1"> |     <column id="102" parent="12" name="dateModified"> | ||||||
|  |       <Position>12</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |     </column> | ||||||
|  |     <column id="103" parent="12" name="utcDateCreated"> | ||||||
|  |       <Position>13</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |     </column> | ||||||
|  |     <column id="104" parent="12" name="utcDateModified"> | ||||||
|  |       <Position>14</Position> | ||||||
|  |       <DataType>TEXT|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |     </column> | ||||||
|  |     <index id="105" parent="12" name="sqlite_autoindex_notes_1"> | ||||||
|       <NameSurrogate>1</NameSurrogate> |       <NameSurrogate>1</NameSurrogate> | ||||||
|       <ColNames>noteId</ColNames> |       <ColNames>noteId</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <key id="112" parent="13"> |     <index id="106" parent="12" name="IDX_notes_title"> | ||||||
|  |       <ColNames>title</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <index id="107" parent="12" name="IDX_notes_type"> | ||||||
|  |       <ColNames>type</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <index id="108" parent="12" name="IDX_notes_isDeleted"> | ||||||
|  |       <ColNames>isDeleted</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <index id="109" parent="12" name="IDX_notes_dateCreated"> | ||||||
|  |       <ColNames>dateCreated</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <index id="110" parent="12" name="IDX_notes_dateModified"> | ||||||
|  |       <ColNames>dateModified</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <index id="111" parent="12" name="IDX_notes_utcDateCreated"> | ||||||
|  |       <ColNames>utcDateCreated</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <index id="112" parent="12" name="IDX_notes_utcDateModified"> | ||||||
|  |       <ColNames>utcDateModified</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <key id="113" parent="12"> | ||||||
|       <ColNames>noteId</ColNames> |       <ColNames>noteId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_notes_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_notes_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="113" parent="14" name="name"> |     <column id="114" parent="13" name="name"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="114" parent="14" name="value"> |     <column id="115" parent="13" name="value"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="115" parent="14" name="isSynced"> |     <column id="116" parent="13" name="isSynced"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>INTEGER|0s</DataType> |       <DataType>INTEGER|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>0</DefaultExpression> |       <DefaultExpression>0</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="116" parent="14" name="hash"> |     <column id="117" parent="13" name="hash"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>""</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="117" parent="14" name="utcDateCreated"> |     <column id="118" parent="13" name="utcDateCreated"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="118" parent="14" name="utcDateModified"> |     <column id="119" parent="13" name="utcDateModified"> | ||||||
|       <Position>6</Position> |       <Position>6</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <index id="119" parent="14" name="sqlite_autoindex_options_1"> |     <index id="120" parent="13" name="sqlite_autoindex_options_1"> | ||||||
|       <NameSurrogate>1</NameSurrogate> |       <NameSurrogate>1</NameSurrogate> | ||||||
|       <ColNames>name</ColNames> |       <ColNames>name</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <key id="120" parent="14"> |     <key id="121" parent="13"> | ||||||
|       <ColNames>name</ColNames> |       <ColNames>name</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_options_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_options_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="121" parent="15" name="branchId"> |     <column id="122" parent="14" name="noteId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="122" parent="15" name="notePath"> |     <column id="123" parent="14" name="notePath"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="123" parent="15" name="hash"> |     <column id="124" parent="14" name="hash"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <DefaultExpression>""</DefaultExpression> |       <DefaultExpression>""</DefaultExpression> | ||||||
|     </column> |     </column> | ||||||
|     <column id="124" parent="15" name="utcDateCreated"> |     <column id="125" parent="14" name="utcDateCreated"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="125" parent="15" name="isDeleted"> |     <column id="126" parent="14" name="isDeleted"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|       <DataType>INT|0s</DataType> |       <DataType>INT|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <index id="126" parent="15" name="sqlite_autoindex_recent_notes_1"> |     <index id="127" parent="14" name="sqlite_autoindex_recent_notes_1"> | ||||||
|       <NameSurrogate>1</NameSurrogate> |       <NameSurrogate>1</NameSurrogate> | ||||||
|       <ColNames>branchId</ColNames> |       <ColNames>noteId</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <key id="127" parent="15"> |     <key id="128" parent="14"> | ||||||
|       <ColNames>branchId</ColNames> |       <ColNames>noteId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_recent_notes_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_recent_notes_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="128" parent="16" name="sourceId"> |     <column id="129" parent="15" name="sourceId"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="129" parent="16" name="utcDateCreated"> |     <column id="130" parent="15" name="utcDateCreated"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <index id="130" parent="16" name="sqlite_autoindex_source_ids_1"> |     <index id="131" parent="15" name="sqlite_autoindex_source_ids_1"> | ||||||
|       <NameSurrogate>1</NameSurrogate> |       <NameSurrogate>1</NameSurrogate> | ||||||
|       <ColNames>sourceId</ColNames> |       <ColNames>sourceId</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <key id="131" parent="16"> |     <index id="132" parent="15" name="IDX_source_ids_utcDateCreated"> | ||||||
|  |       <ColNames>utcDateCreated</ColNames> | ||||||
|  |     </index> | ||||||
|  |     <key id="133" parent="15"> | ||||||
|       <ColNames>sourceId</ColNames> |       <ColNames>sourceId</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|       <UnderlyingIndexName>sqlite_autoindex_source_ids_1</UnderlyingIndexName> |       <UnderlyingIndexName>sqlite_autoindex_source_ids_1</UnderlyingIndexName> | ||||||
|     </key> |     </key> | ||||||
|     <column id="132" parent="17" name="type"> |     <column id="134" parent="16" name="type"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>text|0s</DataType> |       <DataType>text|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="133" parent="17" name="name"> |     <column id="135" parent="16" name="name"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>text|0s</DataType> |       <DataType>text|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="134" parent="17" name="tbl_name"> |     <column id="136" parent="16" name="tbl_name"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>text|0s</DataType> |       <DataType>text|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="135" parent="17" name="rootpage"> |     <column id="137" parent="16" name="rootpage"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>int|0s</DataType> |       <DataType>int|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="136" parent="17" name="sql"> |     <column id="138" parent="16" name="sql"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|       <DataType>text|0s</DataType> |       <DataType>text|0s</DataType> | ||||||
|     </column> |     </column> | ||||||
|     <column id="137" parent="18" name="name"> |     <column id="139" parent="17" name="name"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|     </column> |     </column> | ||||||
|     <column id="138" parent="18" name="seq"> |     <column id="140" parent="17" name="seq"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|     </column> |     </column> | ||||||
|     <column id="139" parent="19" name="id"> |     <column id="141" parent="18" name="id"> | ||||||
|       <Position>1</Position> |       <Position>1</Position> | ||||||
|       <DataType>INTEGER|0s</DataType> |       <DataType>INTEGER|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|       <SequenceIdentity>1</SequenceIdentity> |       <SequenceIdentity>1</SequenceIdentity> | ||||||
|     </column> |     </column> | ||||||
|     <column id="140" parent="19" name="entityName"> |     <column id="142" parent="18" name="entityName"> | ||||||
|       <Position>2</Position> |       <Position>2</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="141" parent="19" name="entityId"> |     <column id="143" parent="18" name="entityId"> | ||||||
|       <Position>3</Position> |       <Position>3</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="142" parent="19" name="sourceId"> |     <column id="144" parent="18" name="sourceId"> | ||||||
|       <Position>4</Position> |       <Position>4</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <column id="143" parent="19" name="utcSyncDate"> |     <column id="145" parent="18" name="isSynced"> | ||||||
|       <Position>5</Position> |       <Position>5</Position> | ||||||
|  |       <DataType>INTEGER|0s</DataType> | ||||||
|  |       <NotNull>1</NotNull> | ||||||
|  |       <DefaultExpression>0</DefaultExpression> | ||||||
|  |     </column> | ||||||
|  |     <column id="146" parent="18" name="utcSyncDate"> | ||||||
|  |       <Position>6</Position> | ||||||
|       <DataType>TEXT|0s</DataType> |       <DataType>TEXT|0s</DataType> | ||||||
|       <NotNull>1</NotNull> |       <NotNull>1</NotNull> | ||||||
|     </column> |     </column> | ||||||
|     <index id="144" parent="19" name="IDX_sync_entityName_entityId"> |     <index id="147" parent="18" name="IDX_sync_entityName_entityId"> | ||||||
|       <ColNames>entityName |       <ColNames>entityName | ||||||
| entityId</ColNames> | entityId</ColNames> | ||||||
|       <Unique>1</Unique> |       <Unique>1</Unique> | ||||||
|     </index> |     </index> | ||||||
|     <index id="145" parent="19" name="IDX_sync_utcSyncDate"> |     <index id="148" parent="18" name="IDX_sync_utcSyncDate"> | ||||||
|       <ColNames>utcSyncDate</ColNames> |       <ColNames>utcSyncDate</ColNames> | ||||||
|     </index> |     </index> | ||||||
|     <key id="146" parent="19"> |     <key id="149" parent="18"> | ||||||
|       <ColNames>id</ColNames> |       <ColNames>id</ColNames> | ||||||
|       <Primary>1</Primary> |       <Primary>1</Primary> | ||||||
|     </key> |     </key> | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.idea/jsLibraryMappings.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/jsLibraryMappings.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="JavaScriptLibraryMappings"> | ||||||
|  |     <file url="PROJECT" libraries="{@types/jquery}" /> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
| @@ -1,11 +1,9 @@ | |||||||
| FROM node:10.15.3-alpine | FROM node:12.16.2-alpine | ||||||
|  |  | ||||||
| # Create app directory | # Create app directory | ||||||
| WORKDIR /usr/src/app | WORKDIR /usr/src/app | ||||||
|  |  | ||||||
| # Copy both package.json and package-lock.json | COPY server-package.json package.json | ||||||
| # where available (npm@5+) |  | ||||||
| COPY package.json package-lock.json ./ |  | ||||||
|  |  | ||||||
| # Install app dependencies | # Install app dependencies | ||||||
| RUN set -x \ | RUN set -x \ | ||||||
| @@ -18,6 +16,7 @@ RUN set -x \ | |||||||
|         make \ |         make \ | ||||||
|         nasm \ |         nasm \ | ||||||
|         libpng-dev \ |         libpng-dev \ | ||||||
|  |         python \ | ||||||
|     && npm install --production \ |     && npm install --production \ | ||||||
|     && apk del .build-dependencies |     && apk del .build-dependencies | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							| @@ -8,23 +8,24 @@ Trilium Notes is a hierarchical note taking application with focus on building l | |||||||
| ## Features | ## Features | ||||||
|  |  | ||||||
| * Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes)) | * Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes)) | ||||||
| * Rich WYSIWYG note editing including e.g. tables and images with markdown [autoformat](https://github.com/zadam/trilium/wiki/Text-editor#autoformat) | * Rich WYSIWYG note editing including e.g. tables and images with markdown [autoformat](https://github.com/zadam/trilium/wiki/Text-notes#autoformat) | ||||||
| * Support for editing [notes with source code](https://github.com/zadam/trilium/wiki/Code-notes), including syntax highlighting | * Support for editing [notes with source code](https://github.com/zadam/trilium/wiki/Code-notes), including syntax highlighting | ||||||
| * Fast and easy [navigation between notes](https://github.com/zadam/trilium/wiki/Note-navigation), full text search and [note hoisting](https://github.com/zadam/trilium/wiki/Note-hoisting) | * Fast and easy [navigation between notes](https://github.com/zadam/trilium/wiki/Note-navigation), full text search and [note hoisting](https://github.com/zadam/trilium/wiki/Note-hoisting) | ||||||
| * Seamless [note versioning](https://github.com/zadam/trilium/wiki/Note-revisions) | * Seamless [note versioning](https://github.com/zadam/trilium/wiki/Note-revisions) | ||||||
| * Note [attributes](https://github.com/zadam/trilium/wiki/Attributes) can be used for note organization, querying and advanced [scripting](https://github.com/zadam/trilium/wiki/Scripts) | * Note [attributes](https://github.com/zadam/trilium/wiki/Attributes) can be used for note organization, querying and advanced [scripting](https://github.com/zadam/trilium/wiki/Scripts) | ||||||
| * [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization) with self-hosted sync server | * [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization) with self-hosted sync server | ||||||
| * Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes) with per-note granularity | * Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes) with per-note granularity | ||||||
| * [Relation maps](https://github.com/zadam/trilium/wiki/Relation-map) for visualizing notes and their relations | * [Relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map) for visualizing notes and their relations | ||||||
| * [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - see [Advanced showcases](https://github.com/zadam/trilium/wiki/Advanced-showcases) | * [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - see [Advanced showcases](https://github.com/zadam/trilium/wiki/Advanced-showcases) | ||||||
| * Scales well in both usability and performance upwards of 100 000 notes | * Scales well in both usability and performance upwards of 100 000 notes | ||||||
| * Touch optimized [mobile frontend](https://github.com/zadam/trilium/wiki/Mobile-frontend) for smartphones and tablets | * Touch optimized [mobile frontend](https://github.com/zadam/trilium/wiki/Mobile-frontend) for smartphones and tablets | ||||||
| * [Night theme](https://github.com/zadam/trilium/wiki/Themes) | * [Night theme](https://github.com/zadam/trilium/wiki/Themes) | ||||||
| * [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) and [Markdown import & export](https://github.com/zadam/trilium/wiki/Markdown) | * [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) and [Markdown import & export](https://github.com/zadam/trilium/wiki/Markdown) | ||||||
|  | * [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) for easy saving of web content | ||||||
|  |  | ||||||
| ## Builds | ## Builds | ||||||
|  |  | ||||||
| Trilium is provided as either desktop application (Linux, Windows, Mac) or web application hosted on your server (Linux). | Trilium is provided as either desktop application (Linux and Windows) or web application hosted on your server (Linux). Mac OS desktop build is available, but it is [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support). | ||||||
|  |  | ||||||
| * If you want to use Trilium on the desktop, download binary release for your platform from [latest release](https://github.com/zadam/trilium/releases/latest), unzip the package and run ```trilium``` executable. | * If you want to use Trilium on the desktop, download binary release for your platform from [latest release](https://github.com/zadam/trilium/releases/latest), unzip the package and run ```trilium``` executable. | ||||||
| * If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Server-installation). | * If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Server-installation). | ||||||
| @@ -45,5 +46,12 @@ Use a browser based dev environment | |||||||
| Or clone locally and run | Or clone locally and run | ||||||
| ``` | ``` | ||||||
| npm install | npm install | ||||||
| npm run start | npm run start-server | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | ## Shoutouts | ||||||
|  |  | ||||||
|  | * [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team | ||||||
|  | * [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it. | ||||||
|  | * [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages | ||||||
|  | * [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map) | ||||||
| @@ -3,6 +3,8 @@ | |||||||
| VERSION=`jq -r ".version" package.json` | VERSION=`jq -r ".version" package.json` | ||||||
| SERIES=${VERSION:0:4}-latest | SERIES=${VERSION:0:4}-latest | ||||||
|  |  | ||||||
|  | cat package.json | grep -v electron > server-package.json | ||||||
|  |  | ||||||
| sudo docker build -t zadam/trilium:$VERSION -t zadam/trilium:$SERIES . | sudo docker build -t zadam/trilium:$VERSION -t zadam/trilium:$SERIES . | ||||||
|  |  | ||||||
| if [[ $VERSION != *"beta"* ]]; then | if [[ $VERSION != *"beta"* ]]; then | ||||||
|   | |||||||
| @@ -1,14 +1,27 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | SRC_DIR=./dist/trilium-linux-x64-src | ||||||
|  |  | ||||||
|  | if [ "$1" != "DONTCOPY" ] | ||||||
|  | then | ||||||
|  |     ./bin/copy-trilium.sh $SRC_DIR | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | echo "Copying required linux-x64 binaries" | ||||||
|  |  | ||||||
|  | rm -r $SRC_DIR/node_modules/sqlite3/lib/binding/* | ||||||
|  | rm -r $SRC_DIR/node_modules/pngquant-bin/vendor/* | ||||||
|  |  | ||||||
|  | rm -r $SRC_DIR/src/public/app-dist/*.mobile.* | ||||||
|  |  | ||||||
|  | cp -r bin/deps/linux-x64/sqlite/* $SRC_DIR/node_modules/sqlite3/lib/binding/ | ||||||
|  | cp bin/deps/linux-x64/image/pngquant $SRC_DIR/node_modules/pngquant-bin/vendor/ | ||||||
|  |  | ||||||
|  | ./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=linux --arch=x64 --overwrite | ||||||
|  |  | ||||||
| BUILD_DIR=./dist/trilium-linux-x64 | BUILD_DIR=./dist/trilium-linux-x64 | ||||||
| rm -rf $BUILD_DIR | rm -rf $BUILD_DIR | ||||||
|  |  | ||||||
| rm -r node_modules/sqlite3/lib/binding/* |  | ||||||
|  |  | ||||||
| cp -r bin/deps/linux-x64/sqlite/* node_modules/sqlite3/lib/binding/ |  | ||||||
|  |  | ||||||
| ./node_modules/.bin/electron-packager . --asar --out=dist --executable-name=trilium --platform=linux --arch=x64 --overwrite |  | ||||||
|  |  | ||||||
| mv "./dist/Trilium Notes-linux-x64" $BUILD_DIR | mv "./dist/Trilium Notes-linux-x64" $BUILD_DIR | ||||||
|  |  | ||||||
| cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png | cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png | ||||||
| @@ -22,3 +35,7 @@ VERSION=`jq -r ".version" package.json` | |||||||
| cd dist | cd dist | ||||||
|  |  | ||||||
| tar cJf trilium-linux-x64-${VERSION}.tar.xz trilium-linux-x64 | tar cJf trilium-linux-x64-${VERSION}.tar.xz trilium-linux-x64 | ||||||
|  |  | ||||||
|  | cd .. | ||||||
|  |  | ||||||
|  | bin/build-debian.sh | ||||||
| @@ -1,27 +1,34 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | SRC_DIR=./dist/trilium-mac-x64-src | ||||||
|  |  | ||||||
|  | if [ "$1" != "DONTCOPY" ] | ||||||
|  | then | ||||||
|  |     ./bin/copy-trilium.sh $SRC_DIR | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | echo "Copying required mac binaries" | ||||||
|  |  | ||||||
|  | rm -r $SRC_DIR/node_modules/sqlite3/lib/binding/* | ||||||
|  | rm -r $SRC_DIR/node_modules/mozjpeg/vendor/* | ||||||
|  | rm -r $SRC_DIR/node_modules/pngquant-bin/vendor/* | ||||||
|  | rm -r $SRC_DIR/node_modules/giflossy/vendor/* | ||||||
|  |  | ||||||
|  | cp -r bin/deps/mac-x64/sqlite/* $SRC_DIR/node_modules/sqlite3/lib/binding/ | ||||||
|  | cp bin/deps/mac-x64/image/cjpeg $SRC_DIR/node_modules/mozjpeg/vendor/ | ||||||
|  | cp bin/deps/mac-x64/image/pngquant $SRC_DIR/node_modules/pngquant-bin/vendor/ | ||||||
|  | cp bin/deps/mac-x64/image/gifsicle $SRC_DIR/node_modules/giflossy/vendor/ | ||||||
|  |  | ||||||
|  | rm -r $SRC_DIR/src/public/app-dist/*.mobile.* | ||||||
|  |  | ||||||
|  | ./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=darwin --arch=x64 --overwrite --icon=images/app-icons/mac/icon.icns | ||||||
|  |  | ||||||
| BUILD_DIR=./dist/trilium-mac-x64 | BUILD_DIR=./dist/trilium-mac-x64 | ||||||
| rm -rf $BUILD_DIR | rm -rf $BUILD_DIR | ||||||
|  |  | ||||||
| echo "Copying required mac binaries" |  | ||||||
|  |  | ||||||
| rm -r node_modules/sqlite3/lib/binding/* |  | ||||||
| rm -r node_modules/mozjpeg/vendor/* |  | ||||||
| rm -r node_modules/pngquant-bin/vendor/* |  | ||||||
| rm -r node_modules/giflossy/vendor/* |  | ||||||
|  |  | ||||||
| cp -r bin/deps/mac-x64/sqlite/* node_modules/sqlite3/lib/binding/ |  | ||||||
| cp bin/deps/mac-x64/image/cjpeg node_modules/mozjpeg/vendor/ |  | ||||||
| cp bin/deps/mac-x64/image/pngquant node_modules/pngquant-bin/vendor/ |  | ||||||
| cp bin/deps/mac-x64/image/gifsicle node_modules/giflossy/vendor/ |  | ||||||
|  |  | ||||||
| ./node_modules/.bin/electron-packager . --asar --out=dist --executable-name=trilium --platform=darwin --arch=x64 --overwrite --icon=images/app-icons/mac/icon.icns |  | ||||||
|  |  | ||||||
| # Mac build has by default useless directory level | # Mac build has by default useless directory level | ||||||
| mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR | mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR | ||||||
|  |  | ||||||
| ./bin/reset-local.sh |  | ||||||
|  |  | ||||||
| echo "Zipping mac x64 electron distribution..." | echo "Zipping mac x64 electron distribution..." | ||||||
|  |  | ||||||
| VERSION=`jq -r ".version" package.json` | VERSION=`jq -r ".version" package.json` | ||||||
|   | |||||||
| @@ -1,40 +1,32 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
|  |  | ||||||
| PKG_DIR=dist/trilium-linux-x64-server | PKG_DIR=dist/trilium-linux-x64-server | ||||||
| NODE_VERSION=10.15.3 | NODE_VERSION=12.16.2 | ||||||
|  |  | ||||||
| rm -r $PKG_DIR | if [ "$1" != "DONTCOPY" ] | ||||||
| mkdir $PKG_DIR | then | ||||||
| cd $PKG_DIR |     ./bin/copy-trilium.sh $PKG_DIR | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | cd dist | ||||||
| wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz | wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz | ||||||
| tar xvfJ node-v${NODE_VERSION}-linux-x64.tar.xz | tar xvfJ node-v${NODE_VERSION}-linux-x64.tar.xz | ||||||
| rm node-v${NODE_VERSION}-linux-x64.tar.xz | rm node-v${NODE_VERSION}-linux-x64.tar.xz | ||||||
|  |  | ||||||
| mv node-v${NODE_VERSION}-linux-x64 node |  | ||||||
|  |  | ||||||
| cp -r ../../node_modules/ ./ |  | ||||||
| cp -r ../../images/ ./ |  | ||||||
| cp -r ../../libraries/ ./ |  | ||||||
| cp -r ../../src/ ./ |  | ||||||
| cp -r ../../db/ ./ |  | ||||||
| cp -r ../../package.json ./ |  | ||||||
| cp -r ../../package-lock.json ./ |  | ||||||
| cp -r ../../README.md ./ |  | ||||||
| cp -r ../../LICENSE ./ |  | ||||||
| cp -r ../../config-sample.ini ./ |  | ||||||
|  |  | ||||||
| rm -r ./node_modules/electron* |  | ||||||
|  |  | ||||||
| rm -r ./node_modules/sqlite3/lib/binding/* |  | ||||||
|  |  | ||||||
| cp -r ../../bin/deps/linux-x64/sqlite/node* ./node_modules/sqlite3/lib/binding/ |  | ||||||
|  |  | ||||||
| printf "#/bin/sh\n./node/bin/node src/www" > trilium.sh |  | ||||||
| chmod 755 trilium.sh |  | ||||||
|  |  | ||||||
| cd .. | cd .. | ||||||
|  |  | ||||||
| VERSION=`jq -r ".version" ../package.json` | mv dist/node-v${NODE_VERSION}-linux-x64 $PKG_DIR/node | ||||||
|  |  | ||||||
|  | rm -r $PKG_DIR/node_modules/electron* | ||||||
|  |  | ||||||
|  | rm -r $PKG_DIR/node_modules/sqlite3/lib/binding/* | ||||||
|  |  | ||||||
|  | cp -r ./bin/deps/linux-x64/sqlite/node* $PKG_DIR/node_modules/sqlite3/lib/binding/ | ||||||
|  |  | ||||||
|  | printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh | ||||||
|  | chmod 755 $PKG_DIR/trilium.sh | ||||||
|  |  | ||||||
|  | VERSION=`jq -r ".version" package.json` | ||||||
|  |  | ||||||
|  | cd dist | ||||||
|  |  | ||||||
| tar cJf trilium-linux-x64-server-${VERSION}.tar.xz trilium-linux-x64-server | tar cJf trilium-linux-x64-server-${VERSION}.tar.xz trilium-linux-x64-server | ||||||
| @@ -1,29 +1,36 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
|  |  | ||||||
| BUILD_DIR=./dist/trilium-windows-x64 | SRC_DIR=./dist/trilium-windows-x64-src | ||||||
| rm -rf $BUILD_DIR |  | ||||||
|  | if [ "$1" != "DONTCOPY" ] | ||||||
|  | then | ||||||
|  |     ./bin/copy-trilium.sh $SRC_DIR | ||||||
|  | fi | ||||||
|  |  | ||||||
| echo "Copying required windows binaries" | echo "Copying required windows binaries" | ||||||
|  |  | ||||||
| rm -r node_modules/sqlite3/lib/binding/* | rm -r $SRC_DIR/node_modules/sqlite3/lib/binding/* | ||||||
| rm -r node_modules/mozjpeg/vendor/* | rm -r $SRC_DIR/node_modules/mozjpeg/vendor/* | ||||||
| rm -r node_modules/pngquant-bin/vendor/* | rm -r $SRC_DIR/node_modules/pngquant-bin/vendor/* | ||||||
| rm -r node_modules/giflossy/vendor/* | rm -r $SRC_DIR/node_modules/giflossy/vendor/* | ||||||
|  |  | ||||||
| cp -r bin/deps/win-x64/sqlite/* node_modules/sqlite3/lib/binding/ | cp -r bin/deps/win-x64/sqlite/* $SRC_DIR/node_modules/sqlite3/lib/binding/ | ||||||
| cp bin/deps/win-x64/image/cjpeg.exe node_modules/mozjpeg/vendor/ | cp bin/deps/win-x64/image/cjpeg.exe $SRC_DIR/node_modules/mozjpeg/vendor/ | ||||||
| cp bin/deps/win-x64/image/pngquant.exe node_modules/pngquant-bin/vendor/ | cp bin/deps/win-x64/image/pngquant.exe $SRC_DIR/node_modules/pngquant-bin/vendor/ | ||||||
| cp bin/deps/win-x64/image/gifsicle.exe node_modules/giflossy/vendor/ | cp bin/deps/win-x64/image/gifsicle.exe $SRC_DIR/node_modules/giflossy/vendor/ | ||||||
|  |  | ||||||
| ./node_modules/.bin/electron-packager . --asar --out=dist --executable-name=trilium --platform=win32  --arch=x64 --overwrite --icon=images/app-icons/win/icon.ico | rm -r $SRC_DIR/src/public/app-dist/*.mobile.* | ||||||
|  |  | ||||||
|  | ./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=win32  --arch=x64 --overwrite --icon=images/app-icons/win/icon.ico | ||||||
|  |  | ||||||
|  | BUILD_DIR=./dist/trilium-windows-x64 | ||||||
|  | rm -rf $BUILD_DIR | ||||||
|  |  | ||||||
| mv "./dist/Trilium Notes-win32-x64" $BUILD_DIR | mv "./dist/Trilium Notes-win32-x64" $BUILD_DIR | ||||||
|  |  | ||||||
| # removing software WebGL binaries because they are pretty huge and not necessary | # removing software WebGL binaries because they are pretty huge and not necessary | ||||||
| rm -r $BUILD_DIR/swiftshader | rm -r $BUILD_DIR/swiftshader | ||||||
|  |  | ||||||
| ./bin/reset-local.sh |  | ||||||
|  |  | ||||||
| echo "Zipping windows x64 electron distribution..." | echo "Zipping windows x64 electron distribution..." | ||||||
| VERSION=`jq -r ".version" package.json` | VERSION=`jq -r ".version" package.json` | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								bin/build.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								bin/build.sh
									
									
									
									
									
								
							| @@ -1,21 +1,23 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
|  |  | ||||||
| rm -r node_modules |  | ||||||
|  |  | ||||||
| npm install |  | ||||||
|  |  | ||||||
| echo "Deleting existing builds" | echo "Deleting existing builds" | ||||||
|  |  | ||||||
| rm -r dist/* | rm -rf dist/* | ||||||
|  |  | ||||||
| bin/build-win-x64.sh | SRC_DIR=dist/trilium-src | ||||||
|  |  | ||||||
| bin/build-mac-x64.sh | bin/copy-trilium.sh $SRC_DIR | ||||||
|  |  | ||||||
| # building X64 linux as the last so electron-rebuild will prepare X64 binaries for local development | # we'll just copy the same SRC dir to all the builds so we don't have to do npm install in each separately | ||||||
| bin/build-linux-x64.sh | cp -r $SRC_DIR ./dist/trilium-linux-x64-src | ||||||
|  | cp -r $SRC_DIR ./dist/trilium-linux-x64-server | ||||||
|  | cp -r $SRC_DIR ./dist/trilium-windows-x64-src | ||||||
|  | cp -r $SRC_DIR ./dist/trilium-mac-x64-src | ||||||
|  |  | ||||||
| # this needs to be run after linux build | bin/build-win-x64.sh DONTCOPY | ||||||
| bin/build-debian.sh |  | ||||||
|  |  | ||||||
| bin/build-server.sh | bin/build-mac-x64.sh DONTCOPY | ||||||
|  |  | ||||||
|  | bin/build-linux-x64.sh DONTCOPY | ||||||
|  |  | ||||||
|  | bin/build-server.sh DONTCOPY | ||||||
|   | |||||||
							
								
								
									
										35
									
								
								bin/copy-trilium.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								bin/copy-trilium.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | if [[ $# -eq 0 ]] ; then | ||||||
|  |     echo "Missing argument of target directory" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | DIR=$1 | ||||||
|  |  | ||||||
|  | rm -rf $DIR | ||||||
|  | mkdir $DIR | ||||||
|  |  | ||||||
|  | echo "Copying Trilium to build directory $DIR" | ||||||
|  |  | ||||||
|  | cp -r images $DIR/ | ||||||
|  | cp -r libraries $DIR/ | ||||||
|  | cp -r src $DIR/ | ||||||
|  | cp -r db $DIR/ | ||||||
|  | cp -r package.json $DIR/ | ||||||
|  | cp -r package-lock.json $DIR/ | ||||||
|  | cp -r README.md $DIR/ | ||||||
|  | cp -r LICENSE $DIR/ | ||||||
|  | cp -r config-sample.ini $DIR/ | ||||||
|  | cp -r electron.js $DIR/ | ||||||
|  | cp webpack-* $DIR/ | ||||||
|  |  | ||||||
|  | # run in subshell (so we return to original dir) | ||||||
|  | (cd $DIR && npm install --only=prod && npm run webpack) | ||||||
|  |  | ||||||
|  | find $DIR/libraries -name "*.map" -type f -delete | ||||||
|  |  | ||||||
|  | rm -r $DIR/src/public/app | ||||||
|  |  | ||||||
|  | sed -i -e 's/app\/desktop.js/app-dist\/desktop.js/g' $DIR/src/views/desktop.ejs | ||||||
|  | sed -i -e 's/app\/mobile.js/app-dist\/mobile.js/g' $DIR/src/views/mobile.ejs | ||||||
							
								
								
									
										
											BIN
										
									
								
								bin/deps/linux-x64/image/pngquant
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/deps/linux-x64/image/pngquant
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/deps/linux-x64/sqlite/electron-v9.0-linux-x64/node_sqlite3.node
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/deps/linux-x64/sqlite/electron-v9.0-linux-x64/node_sqlite3.node
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/deps/linux-x64/sqlite/node-v72-linux-x64/node_sqlite3.node
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/deps/linux-x64/sqlite/node-v72-linux-x64/node_sqlite3.node
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								bin/deps/mac-x64/image/pngquant
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								bin/deps/mac-x64/image/pngquant
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								bin/deps/win-x64/image/pngquant.exe
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								bin/deps/win-x64/image/pngquant.exe
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/deps/win-x64/sqlite/electron-v9.0-win32-x64/node_sqlite3.node
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/deps/win-x64/sqlite/electron-v9.0-win32-x64/node_sqlite3.node
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -12,5 +12,4 @@ fi | |||||||
| mkdir -p "$DIR" | mkdir -p "$DIR" | ||||||
| cd "$DIR" | cd "$DIR" | ||||||
|  |  | ||||||
| openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 2000 -nodes | openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out cert.crt -keyout key.key | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,7 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | export GITHUB_REPO=trilium | ||||||
|  |  | ||||||
| if [[ $# -eq 0 ]] ; then | if [[ $# -eq 0 ]] ; then | ||||||
|     echo "Missing argument of new version" |     echo "Missing argument of new version" | ||||||
|     exit 1 |     exit 1 | ||||||
|   | |||||||
| @@ -1,3 +0,0 @@ | |||||||
| #!/usr/bin/env bash |  | ||||||
|  |  | ||||||
| ./node_modules/.bin/electron-rebuild --arch=x64 |  | ||||||
| @@ -2,8 +2,13 @@ | |||||||
| # Instance name can be used to distinguish between different instances | # Instance name can be used to distinguish between different instances | ||||||
| instanceName= | instanceName= | ||||||
|  |  | ||||||
|  | # Disable automatically generating desktop icon | ||||||
|  | # noDesktopIcon=true | ||||||
|  |  | ||||||
| [Network] | [Network] | ||||||
| # port setting is relevant only for web deployments, desktop builds run on random free port | # host setting is relevant only for web deployments - set the host on which the server will listen | ||||||
|  | # host=0.0.0.0 | ||||||
|  | # port setting is relevant only for web deployments, desktop builds run on a fixed port (changeable with TRILIUM_PORT environment variable) | ||||||
| port=8080 | port=8080 | ||||||
| # true for TLS/SSL/HTTPS (secure), false for HTTP (unsecure). | # true for TLS/SSL/HTTPS (secure), false for HTTP (unsecure). | ||||||
| https=false | https=false | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								db/demo.tar
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								db/demo.tar
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								db/demo.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								db/demo.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										10
									
								
								db/migrations/0137__links_to_attributes.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								db/migrations/0137__links_to_attributes.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | UPDATE links SET type = 'internal-link' WHERE type = 'hyper'; | ||||||
|  | UPDATE links SET type = 'image-link' WHERE type = 'image'; | ||||||
|  | UPDATE links SET type = 'relation-map-link' WHERE type = 'relation-map'; | ||||||
|  |  | ||||||
|  | INSERT INTO attributes (attributeId, noteId, type, name, value, position, utcDateCreated, utcDateModified, isDeleted, hash, isInheritable) | ||||||
|  | SELECT linkId, noteId, 'relation', type, targetNoteId, 0, utcDateCreated, utcDateModified, isDeleted, hash, 0 FROM links; | ||||||
|  |  | ||||||
|  | UPDATE sync SET entityName = 'attributes' WHERE entityName = 'links'; | ||||||
|  |  | ||||||
|  | DROP TABLE links; | ||||||
							
								
								
									
										5
									
								
								db/migrations/0138__sidebar_sizing.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								db/migrations/0138__sidebar_sizing.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('sidebarMinWidth', '350', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
|  |  | ||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('sidebarWidthPercent', '25', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
							
								
								
									
										2
									
								
								db/migrations/0139__show_sidebar_in_new_tab.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								db/migrations/0139__show_sidebar_in_new_tab.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('showSidebarInNewTab', 'true', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
							
								
								
									
										14
									
								
								db/migrations/0140__widget_config.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								db/migrations/0140__widget_config.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('noteInfoWidget', '{"enabled":true,"expanded":true,"position":100}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
|  |  | ||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('attributesWidget', '{"enabled":true,"expanded":true,"position":200}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
|  |  | ||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('linkMapWidget', '{"enabled":true,"expanded":true,"position":300}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
|  |  | ||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('noteRevisionsWidget', '{"enabled":true,"expanded":true,"position":400}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
|  |  | ||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('whatLinksHereWidget', '{"enabled":false,"expanded":true,"position":500}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
							
								
								
									
										5
									
								
								db/migrations/0141__add_code_note_mime_types.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								db/migrations/0141__add_code_note_mime_types.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('codeNotesMimeTypes', '["text/x-csrc","text/x-c++src","text/x-csharp","text/css","text/x-go","text/x-groovy","text/x-haskell","text/html","message/http","text/x-java","application/javascript;env=frontend","application/javascript;env=backend","application/json","text/x-kotlin","text/x-markdown","text/x-perl","text/x-php","text/x-python","text/x-ruby",null,"text/x-sql","text/x-swift","text/xml","text/x-yaml"]', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 1); | ||||||
|  |  | ||||||
|  | INSERT INTO sync (entityName, entityId, sourceId, utcSyncDate) | ||||||
|  | VALUES ('options' ,'codeNotesMimeTypes', 'SYNC_FILL', '2018-01-01T00:00:00.000Z'); | ||||||
							
								
								
									
										2
									
								
								db/migrations/0142__similar_notes_widget.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								db/migrations/0142__similar_notes_widget.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('similarNotesWidget', '{"enabled":true,"expanded":true,"position":600}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
							
								
								
									
										1
									
								
								db/migrations/0143__drop_event_log.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								db/migrations/0143__drop_event_log.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | DROP TABLE event_log; | ||||||
							
								
								
									
										2
									
								
								db/migrations/0144__edited_notes_widget.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								db/migrations/0144__edited_notes_widget.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('editedNotesWidget', '{"enabled":true,"expanded":true,"position":50}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
							
								
								
									
										2
									
								
								db/migrations/0145__calendar_widget.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								db/migrations/0145__calendar_widget.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('calendarWidget', '{"enabled":true,"expanded":true,"position":20}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
							
								
								
									
										5
									
								
								db/migrations/0146__add_spell_check_options.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								db/migrations/0146__add_spell_check_options.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('spellCheckEnabled', 'true', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
|  |  | ||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | VALUES ('spellCheckLanguageCode', 'en-US', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) | ||||||
|  | SELECT 'hideTabRowForOneTab', 'false', '2019-05-01T18:31:00.874Z', '2019-05-01T18:31:00.874Z', 0 | ||||||
|  | WHERE NOT EXISTS(SELECT 1 FROM options WHERE name = 'hideTabRowForOneTab'); | ||||||
							
								
								
									
										22
									
								
								db/migrations/0148__make_isExpanded_not_null.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								db/migrations/0148__make_isExpanded_not_null.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | CREATE TABLE IF NOT EXISTS "mig_branches" ( | ||||||
|  |                                           `branchId`	TEXT NOT NULL, | ||||||
|  |                                           `noteId`	TEXT NOT NULL, | ||||||
|  |                                           `parentNoteId`	TEXT NOT NULL, | ||||||
|  |                                           `notePosition`	INTEGER NOT NULL, | ||||||
|  |                                           `prefix`	TEXT, | ||||||
|  |                                           `isExpanded`	INTEGER NOT NULL DEFAULT 0, | ||||||
|  |                                           `isDeleted`	INTEGER NOT NULL DEFAULT 0, | ||||||
|  |                                           `utcDateModified`	TEXT NOT NULL, | ||||||
|  |                                           utcDateCreated TEXT NOT NULL, | ||||||
|  |                                           hash TEXT DEFAULT "" NOT NULL, | ||||||
|  |                                           PRIMARY KEY(`branchId`)); | ||||||
|  |  | ||||||
|  | INSERT INTO mig_branches (branchId, noteId, parentNoteId, notePosition, prefix, isExpanded, isDeleted, utcDateModified, utcDateCreated, hash) | ||||||
|  | SELECT branchId, noteId, parentNoteId, notePosition, prefix, COALESCE(isExpanded, 0), isDeleted, utcDateModified, utcDateCreated, hash FROM branches; | ||||||
|  |  | ||||||
|  | DROP TABLE branches; | ||||||
|  | ALTER TABLE mig_branches RENAME TO branches; | ||||||
|  |  | ||||||
|  | CREATE INDEX `IDX_branches_noteId` ON `branches` (`noteId`); | ||||||
|  | CREATE INDEX `IDX_branches_noteId_parentNoteId` ON `branches` (`noteId`,`parentNoteId`); | ||||||
|  | CREATE INDEX IDX_branches_parentNoteId ON branches (parentNoteId); | ||||||
							
								
								
									
										2
									
								
								db/migrations/0149__space_out_positions.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								db/migrations/0149__space_out_positions.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | UPDATE branches SET notePosition = notePosition * 10; | ||||||
|  | UPDATE attributes SET position = position * 10; | ||||||
							
								
								
									
										36
									
								
								db/migrations/0150__note_revision_contents.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								db/migrations/0150__note_revision_contents.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | CREATE TABLE IF NOT EXISTS "note_revisions_mig" (`noteRevisionId`	TEXT NOT NULL PRIMARY KEY, | ||||||
|  |                                                 `noteId`	TEXT NOT NULL, | ||||||
|  |                                                 `title`	TEXT, | ||||||
|  |                                                 `contentLength`	INT NOT NULL, | ||||||
|  |                                                 `isProtected`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                                 `utcDateLastEdited` TEXT NOT NULL, | ||||||
|  |                                                 `utcDateCreated` TEXT NOT NULL, | ||||||
|  |                                                 `utcDateModified` TEXT NOT NULL, | ||||||
|  |                                                 `dateLastEdited` TEXT NOT NULL, | ||||||
|  |                                                 `dateCreated` TEXT NOT NULL, | ||||||
|  |                                                 type TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                 mime TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                 hash TEXT DEFAULT '' NOT NULL); | ||||||
|  |  | ||||||
|  | CREATE TABLE IF NOT EXISTS "note_revision_contents" (`noteRevisionId`	TEXT NOT NULL PRIMARY KEY, | ||||||
|  |                                                  `content`	TEXT, | ||||||
|  |                                                  hash TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                  `utcDateModified` TEXT NOT NULL); | ||||||
|  |  | ||||||
|  | INSERT INTO note_revision_contents (noteRevisionId, content, hash, utcDateModified) | ||||||
|  | SELECT noteRevisionId, content, hash, utcDateModifiedTo FROM note_revisions; | ||||||
|  |  | ||||||
|  | INSERT INTO note_revisions_mig (noteRevisionId, noteId, title, contentLength, isProtected, utcDateLastEdited, utcDateCreated, utcDateModified, dateLastEdited, dateCreated, type, mime, hash) | ||||||
|  | SELECT noteRevisionId, noteId, title, COALESCE(LENGTH(content), 0), isProtected, utcDateModifiedFrom, utcDateModifiedTo, utcDateModifiedTo, dateModifiedFrom, dateModifiedTo, type, mime, hash FROM note_revisions; | ||||||
|  |  | ||||||
|  | DROP TABLE note_revisions; | ||||||
|  | ALTER TABLE note_revisions_mig RENAME TO note_revisions; | ||||||
|  |  | ||||||
|  | CREATE INDEX `IDX_note_revisions_noteId` ON `note_revisions` (`noteId`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_utcDateCreated` ON `note_revisions` (`utcDateCreated`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_utcDateLastEdited` ON `note_revisions` (`utcDateLastEdited`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_dateCreated` ON `note_revisions` (`dateCreated`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_dateLastEdited` ON `note_revisions` (`dateLastEdited`); | ||||||
|  |  | ||||||
|  | INSERT INTO sync (entityName, entityId, sourceId, utcSyncDate) | ||||||
|  | SELECT 'note_revision_contents', entityId, sourceId, utcSyncDate FROM sync WHERE entityName = 'note_revisions'; | ||||||
							
								
								
									
										31
									
								
								db/migrations/0151__add_isErased_to_note.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								db/migrations/0151__add_isErased_to_note.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | CREATE TABLE IF NOT EXISTS "notes_mig" ( | ||||||
|  |                                        `noteId`	TEXT NOT NULL, | ||||||
|  |                                        `title`	TEXT NOT NULL DEFAULT "note", | ||||||
|  |                                        `isProtected`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                        `type` TEXT NOT NULL DEFAULT 'text', | ||||||
|  |                                        `mime` TEXT NOT NULL DEFAULT 'text/html', | ||||||
|  |                                        `hash` TEXT DEFAULT "" NOT NULL, | ||||||
|  |                                        `isDeleted`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                        `isErased`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                        `dateCreated`	TEXT NOT NULL, | ||||||
|  |                                        `dateModified`	TEXT NOT NULL, | ||||||
|  |                                        `utcDateCreated`	TEXT NOT NULL, | ||||||
|  |                                        `utcDateModified`	TEXT NOT NULL, | ||||||
|  |                                        PRIMARY KEY(`noteId`)); | ||||||
|  |  | ||||||
|  | INSERT INTO notes_mig (noteId, title, isProtected, type, mime, hash, isDeleted, isErased, dateCreated, dateModified, utcDateCreated, utcDateModified) | ||||||
|  | SELECT noteId, title, isProtected, type, mime, hash, isDeleted, 0, dateCreated, dateModified, utcDateCreated, utcDateModified FROM notes; | ||||||
|  |  | ||||||
|  | DROP TABLE notes; | ||||||
|  | ALTER TABLE notes_mig RENAME TO notes; | ||||||
|  |  | ||||||
|  | UPDATE notes SET isErased = 1 WHERE isDeleted = 1 | ||||||
|  | AND 1=(SELECT CASE WHEN content IS NULL THEN 1 ELSE 0 END FROM note_contents WHERE note_contents.noteId = notes.noteId); | ||||||
|  |  | ||||||
|  | CREATE INDEX `IDX_notes_isDeleted` ON `notes` (`isDeleted`); | ||||||
|  | CREATE INDEX `IDX_notes_title` ON `notes` (`title`); | ||||||
|  | CREATE INDEX `IDX_notes_type` ON `notes` (`type`); | ||||||
|  | CREATE INDEX `IDX_notes_dateCreated` ON `notes` (`dateCreated`); | ||||||
|  | CREATE INDEX `IDX_notes_dateModified` ON `notes` (`dateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateModified` ON `notes` (`utcDateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateCreated` ON `notes` (`utcDateCreated`); | ||||||
							
								
								
									
										34
									
								
								db/migrations/0152__add_contentLength_to_note.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								db/migrations/0152__add_contentLength_to_note.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | CREATE TABLE IF NOT EXISTS "notes_mig" ( | ||||||
|  |                                            `noteId`	TEXT NOT NULL, | ||||||
|  |                                            `title`	TEXT NOT NULL DEFAULT "note", | ||||||
|  |                                            `contentLength`	INT NOT NULL, | ||||||
|  |                                            `isProtected`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `type` TEXT NOT NULL DEFAULT 'text', | ||||||
|  |                                            `mime` TEXT NOT NULL DEFAULT 'text/html', | ||||||
|  |                                            `hash` TEXT DEFAULT "" NOT NULL, | ||||||
|  |                                            `isDeleted`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `isErased`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `dateCreated`	TEXT NOT NULL, | ||||||
|  |                                            `dateModified`	TEXT NOT NULL, | ||||||
|  |                                            `utcDateCreated`	TEXT NOT NULL, | ||||||
|  |                                            `utcDateModified`	TEXT NOT NULL, | ||||||
|  |                                            PRIMARY KEY(`noteId`)); | ||||||
|  |  | ||||||
|  | INSERT INTO notes_mig (noteId, title, contentLength, isProtected, type, mime, hash, isDeleted, isErased, dateCreated, dateModified, utcDateCreated, utcDateModified) | ||||||
|  | SELECT noteId, title, -1, isProtected, type, mime, hash, isDeleted, isErased, dateCreated, dateModified, utcDateCreated, utcDateModified FROM notes; | ||||||
|  |  | ||||||
|  | DROP TABLE notes; | ||||||
|  | ALTER TABLE notes_mig RENAME TO notes; | ||||||
|  |  | ||||||
|  | UPDATE notes SET contentLength = COALESCE((SELECT COALESCE(LENGTH(content), 0) FROM note_contents WHERE note_contents.noteId = notes.noteId), -1); | ||||||
|  |  | ||||||
|  | CREATE INDEX `IDX_notes_isDeleted` ON `notes` (`isDeleted`); | ||||||
|  | CREATE INDEX `IDX_notes_title` ON `notes` (`title`); | ||||||
|  | CREATE INDEX `IDX_notes_type` ON `notes` (`type`); | ||||||
|  | CREATE INDEX `IDX_notes_dateCreated` ON `notes` (`dateCreated`); | ||||||
|  | CREATE INDEX `IDX_notes_dateModified` ON `notes` (`dateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateModified` ON `notes` (`utcDateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateCreated` ON `notes` (`utcDateCreated`); | ||||||
|  |  | ||||||
|  | -- should be OK since sync protocol changes so all instances must upgrade | ||||||
|  | UPDATE attributes SET isDeleted = 1 WHERE name = 'fileSize'; | ||||||
							
								
								
									
										28
									
								
								db/migrations/0153__add_isErased_to_note_revision.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								db/migrations/0153__add_isErased_to_note_revision.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | CREATE TABLE IF NOT EXISTS "note_revisions_mig" (`noteRevisionId`	TEXT NOT NULL PRIMARY KEY, | ||||||
|  |                                                  `noteId`	TEXT NOT NULL, | ||||||
|  |                                                  `title`	TEXT, | ||||||
|  |                                                  `contentLength`	INT NOT NULL, | ||||||
|  |                                                  `isErased`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                                  `isProtected`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                                  `utcDateLastEdited` TEXT NOT NULL, | ||||||
|  |                                                  `utcDateCreated` TEXT NOT NULL, | ||||||
|  |                                                  `utcDateModified` TEXT NOT NULL, | ||||||
|  |                                                  `dateLastEdited` TEXT NOT NULL, | ||||||
|  |                                                  `dateCreated` TEXT NOT NULL, | ||||||
|  |                                                  type TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                  mime TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                  hash TEXT DEFAULT '' NOT NULL); | ||||||
|  |  | ||||||
|  | INSERT INTO note_revisions_mig (noteRevisionId, noteId, title, contentLength, isErased, isProtected, utcDateLastEdited, utcDateCreated, utcDateModified, dateLastEdited, dateCreated, type, mime, hash) | ||||||
|  | SELECT noteRevisionId, noteId, title, contentLength, 0, isProtected, utcDateLastEdited, utcDateCreated, utcDateModified, dateLastEdited, dateCreated, type, mime, hash FROM note_revisions; | ||||||
|  |  | ||||||
|  | DROP TABLE note_revisions; | ||||||
|  | ALTER TABLE note_revisions_mig RENAME TO note_revisions; | ||||||
|  |  | ||||||
|  | UPDATE note_revisions SET isErased = (SELECT isErased FROM notes WHERE notes.noteId = note_revisions.noteId); | ||||||
|  |  | ||||||
|  | CREATE INDEX `IDX_note_revisions_noteId` ON `note_revisions` (`noteId`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_utcDateCreated` ON `note_revisions` (`utcDateCreated`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_utcDateLastEdited` ON `note_revisions` (`utcDateLastEdited`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_dateCreated` ON `note_revisions` (`dateCreated`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_dateLastEdited` ON `note_revisions` (`dateLastEdited`); | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | UPDATE attributes SET name = 'internalLink' WHERE name = 'internal-link'; | ||||||
|  | UPDATE attributes SET name = 'imageLink' WHERE name = 'image-link'; | ||||||
|  | UPDATE attributes SET name = 'relationMapLink' WHERE name = 'relation-map-link'; | ||||||
							
								
								
									
										5
									
								
								db/migrations/0155__indexes.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								db/migrations/0155__indexes.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | DROP INDEX IF EXISTS IDX_attributes_name_index; | ||||||
|  | DROP INDEX IF EXISTS IDX_branches_noteId; | ||||||
|  |  | ||||||
|  | CREATE INDEX IDX_source_ids_utcDateCreated | ||||||
|  |     on source_ids (utcDateCreated); | ||||||
							
								
								
									
										81
									
								
								db/migrations/0156__add_deleteId.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								db/migrations/0156__add_deleteId.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | |||||||
|  | CREATE TABLE IF NOT EXISTS "notes_mig" ( | ||||||
|  |                                            `noteId`	TEXT NOT NULL, | ||||||
|  |                                            `title`	TEXT NOT NULL DEFAULT "note", | ||||||
|  |                                            `contentLength`	INT NOT NULL, | ||||||
|  |                                            `isProtected`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `type` TEXT NOT NULL DEFAULT 'text', | ||||||
|  |                                            `mime` TEXT NOT NULL DEFAULT 'text/html', | ||||||
|  |                                            `hash` TEXT DEFAULT "" NOT NULL, | ||||||
|  |                                            `isDeleted`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `deleteId`   TEXT DEFAULT NULL, | ||||||
|  |                                            `isErased`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `dateCreated`	TEXT NOT NULL, | ||||||
|  |                                            `dateModified`	TEXT NOT NULL, | ||||||
|  |                                            `utcDateCreated`	TEXT NOT NULL, | ||||||
|  |                                            `utcDateModified`	TEXT NOT NULL, | ||||||
|  |                                            PRIMARY KEY(`noteId`)); | ||||||
|  |  | ||||||
|  | INSERT INTO notes_mig (noteId, title, contentLength, isProtected, type, mime, hash, isDeleted, isErased, dateCreated, dateModified, utcDateCreated, utcDateModified) | ||||||
|  | SELECT noteId, title, -1, isProtected, type, mime, hash, isDeleted, isErased, dateCreated, dateModified, utcDateCreated, utcDateModified FROM notes; | ||||||
|  |  | ||||||
|  | DROP TABLE notes; | ||||||
|  | ALTER TABLE notes_mig RENAME TO notes; | ||||||
|  |  | ||||||
|  | CREATE INDEX `IDX_notes_isDeleted` ON `notes` (`isDeleted`); | ||||||
|  | CREATE INDEX `IDX_notes_title` ON `notes` (`title`); | ||||||
|  | CREATE INDEX `IDX_notes_type` ON `notes` (`type`); | ||||||
|  | CREATE INDEX `IDX_notes_dateCreated` ON `notes` (`dateCreated`); | ||||||
|  | CREATE INDEX `IDX_notes_dateModified` ON `notes` (`dateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateModified` ON `notes` (`utcDateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateCreated` ON `notes` (`utcDateCreated`); | ||||||
|  |  | ||||||
|  | CREATE TABLE IF NOT EXISTS "branches_mig" ( | ||||||
|  |                                           `branchId`	TEXT NOT NULL, | ||||||
|  |                                           `noteId`	TEXT NOT NULL, | ||||||
|  |                                           `parentNoteId`	TEXT NOT NULL, | ||||||
|  |                                           `notePosition`	INTEGER NOT NULL, | ||||||
|  |                                           `prefix`	TEXT, | ||||||
|  |                                           `isExpanded`	INTEGER NOT NULL DEFAULT 0, | ||||||
|  |                                           `isDeleted`	INTEGER NOT NULL DEFAULT 0, | ||||||
|  |                                           `deleteId`    TEXT DEFAULT NULL, | ||||||
|  |                                           `utcDateModified`	TEXT NOT NULL, | ||||||
|  |                                           utcDateCreated TEXT NOT NULL, | ||||||
|  |                                           hash TEXT DEFAULT "" NOT NULL, | ||||||
|  |                                           PRIMARY KEY(`branchId`)); | ||||||
|  |  | ||||||
|  | INSERT INTO branches_mig (branchId, noteId, parentNoteId, notePosition, prefix, isExpanded, isDeleted, utcDateModified, utcDateCreated, hash) | ||||||
|  |     SELECT branchId, noteId, parentNoteId, notePosition, prefix, isExpanded, isDeleted, utcDateModified, utcDateCreated, hash FROM branches; | ||||||
|  |  | ||||||
|  | DROP TABLE branches; | ||||||
|  | ALTER TABLE branches_mig RENAME TO branches; | ||||||
|  |  | ||||||
|  | CREATE INDEX `IDX_branches_noteId_parentNoteId` ON `branches` (`noteId`,`parentNoteId`); | ||||||
|  | CREATE INDEX IDX_branches_parentNoteId ON branches (parentNoteId); | ||||||
|  |  | ||||||
|  | CREATE TABLE IF NOT EXISTS "attributes_mig" | ||||||
|  | ( | ||||||
|  |     attributeId      TEXT not null primary key, | ||||||
|  |     noteId       TEXT not null, | ||||||
|  |     type         TEXT not null, | ||||||
|  |     name         TEXT not null, | ||||||
|  |     value        TEXT default '' not null, | ||||||
|  |     position     INT  default 0 not null, | ||||||
|  |     utcDateCreated  TEXT not null, | ||||||
|  |     utcDateModified TEXT not null, | ||||||
|  |     isDeleted    INT  not null, | ||||||
|  |     `deleteId`    TEXT DEFAULT NULL, | ||||||
|  |     hash         TEXT default "" not null, | ||||||
|  |     isInheritable int DEFAULT 0 NULL); | ||||||
|  |  | ||||||
|  | INSERT INTO attributes_mig (attributeId, noteId, type, name, value, position, utcDateCreated, utcDateModified, isDeleted, hash, isInheritable) | ||||||
|  | SELECT attributeId, noteId, type, name, value, position, utcDateCreated, utcDateModified, isDeleted, hash, isInheritable FROM attributes; | ||||||
|  |  | ||||||
|  | DROP TABLE attributes; | ||||||
|  | ALTER TABLE attributes_mig RENAME TO attributes; | ||||||
|  |  | ||||||
|  | CREATE INDEX IDX_attributes_name_value | ||||||
|  |     on attributes (name, value); | ||||||
|  | CREATE INDEX IDX_attributes_noteId_index | ||||||
|  |     on attributes (noteId); | ||||||
|  | CREATE INDEX IDX_attributes_value_index | ||||||
|  |     on attributes (value); | ||||||
							
								
								
									
										1
									
								
								db/migrations/0157__fix_contentLength.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								db/migrations/0157__fix_contentLength.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | UPDATE notes SET contentLength = COALESCE((SELECT COALESCE(LENGTH(content), 0) FROM note_contents WHERE note_contents.noteId = notes.noteId), -1); | ||||||
							
								
								
									
										22
									
								
								db/migrations/0158__add_isSynced_to_sync.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								db/migrations/0158__add_isSynced_to_sync.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | CREATE TABLE IF NOT EXISTS "sync_mig" ( | ||||||
|  |                                           `id`	INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, | ||||||
|  |                                           `entityName`	TEXT NOT NULL, | ||||||
|  |                                           `entityId`	TEXT NOT NULL, | ||||||
|  |                                           `sourceId` TEXT NOT NULL, | ||||||
|  |                                           `isSynced` INTEGER default 0 not null, | ||||||
|  |                                           `utcSyncDate`	TEXT NOT NULL); | ||||||
|  |  | ||||||
|  | INSERT INTO sync_mig (id, entityName, entityId, sourceId, isSynced, utcSyncDate) | ||||||
|  | SELECT id, entityName, entityId, sourceId, 1, utcSyncDate FROM sync; | ||||||
|  |  | ||||||
|  | DROP TABLE sync; | ||||||
|  |  | ||||||
|  | ALTER TABLE sync_mig RENAME TO sync; | ||||||
|  |  | ||||||
|  | CREATE UNIQUE INDEX `IDX_sync_entityName_entityId` ON `sync` ( | ||||||
|  |                                                               `entityName`, | ||||||
|  |                                                               `entityId` | ||||||
|  |     ); | ||||||
|  | CREATE INDEX `IDX_sync_utcSyncDate` ON `sync` ( | ||||||
|  |                                                `utcSyncDate` | ||||||
|  |     ); | ||||||
							
								
								
									
										224
									
								
								db/schema.sql
									
									
									
									
									
								
							
							
						
						
									
										224
									
								
								db/schema.sql
									
									
									
									
									
								
							| @@ -1,27 +1,8 @@ | |||||||
| CREATE TABLE IF NOT EXISTS "sync" ( |  | ||||||
|                                     `id`	INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, |  | ||||||
|                                     `entityName`	TEXT NOT NULL, |  | ||||||
|                                     `entityId`	TEXT NOT NULL, |  | ||||||
|                                     `sourceId` TEXT NOT NULL, |  | ||||||
|                                     `utcSyncDate`	TEXT NOT NULL); |  | ||||||
| CREATE TABLE IF NOT EXISTS "source_ids" ( | CREATE TABLE IF NOT EXISTS "source_ids" ( | ||||||
|                                           `sourceId`	TEXT NOT NULL, |                                           `sourceId`	TEXT NOT NULL, | ||||||
|                                           `utcDateCreated`	TEXT NOT NULL, |                                           `utcDateCreated`	TEXT NOT NULL, | ||||||
|                                           PRIMARY KEY(`sourceId`) |                                           PRIMARY KEY(`sourceId`) | ||||||
| ); | ); | ||||||
| CREATE TABLE IF NOT EXISTS "note_revisions" ( |  | ||||||
|                                               `noteRevisionId`	TEXT NOT NULL PRIMARY KEY, |  | ||||||
|                                               `noteId`	TEXT NOT NULL, |  | ||||||
|                                               `title`	TEXT, |  | ||||||
|                                               `content`	TEXT, |  | ||||||
|                                               `isProtected`	INT NOT NULL DEFAULT 0, |  | ||||||
|                                               `utcDateModifiedFrom` TEXT NOT NULL, |  | ||||||
|                                               `utcDateModifiedTo` TEXT NOT NULL, |  | ||||||
|                                               `dateModifiedFrom` TEXT NOT NULL, |  | ||||||
|                                               `dateModifiedTo` TEXT NOT NULL, |  | ||||||
|                                               type TEXT DEFAULT '' NOT NULL, |  | ||||||
|                                               mime TEXT DEFAULT '' NOT NULL, |  | ||||||
|                                               hash TEXT DEFAULT "" NOT NULL); |  | ||||||
| CREATE TABLE IF NOT EXISTS "api_tokens" | CREATE TABLE IF NOT EXISTS "api_tokens" | ||||||
| ( | ( | ||||||
|   apiTokenId TEXT PRIMARY KEY NOT NULL, |   apiTokenId TEXT PRIMARY KEY NOT NULL, | ||||||
| @@ -29,32 +10,6 @@ CREATE TABLE IF NOT EXISTS "api_tokens" | |||||||
|   utcDateCreated TEXT NOT NULL, |   utcDateCreated TEXT NOT NULL, | ||||||
|   isDeleted INT NOT NULL DEFAULT 0, |   isDeleted INT NOT NULL DEFAULT 0, | ||||||
|   hash TEXT DEFAULT "" NOT NULL); |   hash TEXT DEFAULT "" NOT NULL); | ||||||
| CREATE TABLE IF NOT EXISTS "branches" ( |  | ||||||
|                                         `branchId`	TEXT NOT NULL, |  | ||||||
|                                         `noteId`	TEXT NOT NULL, |  | ||||||
|                                         `parentNoteId`	TEXT NOT NULL, |  | ||||||
|                                         `notePosition`	INTEGER NOT NULL, |  | ||||||
|                                         `prefix`	TEXT, |  | ||||||
|                                         `isExpanded`	BOOLEAN, |  | ||||||
|                                         `isDeleted`	INTEGER NOT NULL DEFAULT 0, |  | ||||||
|                                         `utcDateModified`	TEXT NOT NULL, |  | ||||||
|                                         utcDateCreated TEXT NOT NULL, |  | ||||||
|                                         hash TEXT DEFAULT "" NOT NULL, |  | ||||||
|                                         PRIMARY KEY(`branchId`) |  | ||||||
| ); |  | ||||||
| CREATE TABLE IF NOT EXISTS "recent_notes" ( |  | ||||||
|                                             `branchId` TEXT NOT NULL PRIMARY KEY, |  | ||||||
|                                             `notePath` TEXT NOT NULL, |  | ||||||
|                                             hash TEXT DEFAULT "" NOT NULL, |  | ||||||
|                                             `utcDateCreated` TEXT NOT NULL, |  | ||||||
|                                             isDeleted INT |  | ||||||
| ); |  | ||||||
| CREATE TABLE IF NOT EXISTS "event_log" ( |  | ||||||
|                                          `eventId`	TEXT NOT NULL PRIMARY KEY, |  | ||||||
|                                          `noteId`	TEXT, |  | ||||||
|                                          `comment`	TEXT, |  | ||||||
|                                          `utcDateCreated`	TEXT NOT NULL |  | ||||||
| ); |  | ||||||
| CREATE TABLE IF NOT EXISTS "options" | CREATE TABLE IF NOT EXISTS "options" | ||||||
| ( | ( | ||||||
|   name TEXT not null PRIMARY KEY, |   name TEXT not null PRIMARY KEY, | ||||||
| @@ -64,80 +19,6 @@ CREATE TABLE IF NOT EXISTS "options" | |||||||
|   utcDateCreated TEXT not null, |   utcDateCreated TEXT not null, | ||||||
|   utcDateModified TEXT NOT NULL |   utcDateModified TEXT NOT NULL | ||||||
| ); | ); | ||||||
| CREATE TABLE IF NOT EXISTS "attributes" |  | ||||||
| ( |  | ||||||
|   attributeId      TEXT not null primary key, |  | ||||||
|   noteId       TEXT not null, |  | ||||||
|   type         TEXT not null, |  | ||||||
|   name         TEXT not null, |  | ||||||
|   value        TEXT default '' not null, |  | ||||||
|   position     INT  default 0 not null, |  | ||||||
|   utcDateCreated  TEXT not null, |  | ||||||
|   utcDateModified TEXT not null, |  | ||||||
|   isDeleted    INT  not null, |  | ||||||
|   hash         TEXT default "" not null, |  | ||||||
|   isInheritable int DEFAULT 0 NULL); |  | ||||||
| CREATE TABLE IF NOT EXISTS "links" ( |  | ||||||
|                                      `linkId`	TEXT NOT NULL, |  | ||||||
|                                      `noteId`	TEXT NOT NULL, |  | ||||||
|                                      `targetNoteId`	TEXT NOT NULL, |  | ||||||
|                                      `type` TEXT NOT NULL, |  | ||||||
|                                      `hash` TEXT DEFAULT "" NOT NULL, |  | ||||||
|                                      `isDeleted`	INTEGER NOT NULL DEFAULT 0, |  | ||||||
|                                      `utcDateCreated`	TEXT NOT NULL, |  | ||||||
|                                      `utcDateModified`	TEXT NOT NULL, |  | ||||||
|                                      PRIMARY KEY(`linkId`) |  | ||||||
| ); |  | ||||||
| CREATE TABLE IF NOT EXISTS "notes" ( |  | ||||||
|                                      `noteId`	TEXT NOT NULL, |  | ||||||
|                                      `title`	TEXT NOT NULL DEFAULT "note", |  | ||||||
|                                      `isProtected`	INT NOT NULL DEFAULT 0, |  | ||||||
|                                      `type` TEXT NOT NULL DEFAULT 'text', |  | ||||||
|                                      `mime` TEXT NOT NULL DEFAULT 'text/html', |  | ||||||
|                                      `hash` TEXT DEFAULT "" NOT NULL, |  | ||||||
|                                      `isDeleted`	INT NOT NULL DEFAULT 0, |  | ||||||
|                                      `dateCreated`	TEXT NOT NULL, |  | ||||||
|                                      `dateModified`	TEXT NOT NULL, |  | ||||||
|                                      `utcDateCreated`	TEXT NOT NULL, |  | ||||||
|                                      `utcDateModified`	TEXT NOT NULL, |  | ||||||
|                                      PRIMARY KEY(`noteId`) |  | ||||||
| ); |  | ||||||
| CREATE UNIQUE INDEX `IDX_sync_entityName_entityId` ON `sync` ( |  | ||||||
|                                                               `entityName`, |  | ||||||
|                                                               `entityId` |  | ||||||
|   ); |  | ||||||
| CREATE INDEX `IDX_sync_utcSyncDate` ON `sync` ( |  | ||||||
|                                             `utcSyncDate` |  | ||||||
|   ); |  | ||||||
| CREATE INDEX `IDX_note_revisions_noteId` ON `note_revisions` ( |  | ||||||
|                                                               `noteId` |  | ||||||
|   ); |  | ||||||
| CREATE INDEX `IDX_note_revisions_dateModifiedFrom` ON `note_revisions` ( |  | ||||||
|                                                                         `utcDateModifiedFrom` |  | ||||||
|   ); |  | ||||||
| CREATE INDEX `IDX_note_revisions_dateModifiedTo` ON `note_revisions` ( |  | ||||||
|                                                                       `utcDateModifiedTo` |  | ||||||
|   ); |  | ||||||
| CREATE INDEX `IDX_branches_noteId` ON `branches` ( |  | ||||||
|                                                   `noteId` |  | ||||||
|   ); |  | ||||||
| CREATE INDEX `IDX_branches_noteId_parentNoteId` ON `branches` ( |  | ||||||
|                                                                `noteId`, |  | ||||||
|                                                                `parentNoteId` |  | ||||||
|   ); |  | ||||||
| CREATE INDEX IDX_branches_parentNoteId ON branches (parentNoteId); |  | ||||||
| CREATE INDEX IDX_attributes_name_value |  | ||||||
|   on attributes (name, value); |  | ||||||
| CREATE INDEX IDX_links_noteId_index |  | ||||||
|   on links (noteId); |  | ||||||
| CREATE INDEX IDX_links_targetNoteId_index |  | ||||||
|   on links (targetNoteId); |  | ||||||
| CREATE INDEX IDX_attributes_name_index |  | ||||||
|   on attributes (name); |  | ||||||
| CREATE INDEX IDX_attributes_noteId_index |  | ||||||
|   on attributes (noteId); |  | ||||||
| CREATE INDEX IDX_attributes_value_index |  | ||||||
|   on attributes (value); |  | ||||||
| CREATE TABLE IF NOT EXISTS "note_contents" ( | CREATE TABLE IF NOT EXISTS "note_contents" ( | ||||||
|                                                    `noteId`	TEXT NOT NULL, |                                                    `noteId`	TEXT NOT NULL, | ||||||
|                                                    `content`	TEXT NULL DEFAULT NULL, |                                                    `content`	TEXT NULL DEFAULT NULL, | ||||||
| @@ -145,3 +26,108 @@ CREATE TABLE IF NOT EXISTS "note_contents" ( | |||||||
|                                                    `utcDateModified` TEXT NOT NULL, |                                                    `utcDateModified` TEXT NOT NULL, | ||||||
|                                                    PRIMARY KEY(`noteId`) |                                                    PRIMARY KEY(`noteId`) | ||||||
| ); | ); | ||||||
|  | CREATE TABLE recent_notes | ||||||
|  | ( | ||||||
|  |     noteId TEXT not null primary key, | ||||||
|  |     notePath TEXT not null, | ||||||
|  |     hash TEXT default "" not null, | ||||||
|  |     utcDateCreated TEXT not null, | ||||||
|  |     isDeleted INT | ||||||
|  | ); | ||||||
|  | CREATE TABLE IF NOT EXISTS "note_revision_contents" (`noteRevisionId`	TEXT NOT NULL PRIMARY KEY, | ||||||
|  |                                                  `content`	TEXT, | ||||||
|  |                                                  hash TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                  `utcDateModified` TEXT NOT NULL); | ||||||
|  | CREATE TABLE IF NOT EXISTS "note_revisions" (`noteRevisionId`	TEXT NOT NULL PRIMARY KEY, | ||||||
|  |                                                  `noteId`	TEXT NOT NULL, | ||||||
|  |                                                  `title`	TEXT, | ||||||
|  |                                                  `contentLength`	INT NOT NULL, | ||||||
|  |                                                  `isErased`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                                  `isProtected`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                                  `utcDateLastEdited` TEXT NOT NULL, | ||||||
|  |                                                  `utcDateCreated` TEXT NOT NULL, | ||||||
|  |                                                  `utcDateModified` TEXT NOT NULL, | ||||||
|  |                                                  `dateLastEdited` TEXT NOT NULL, | ||||||
|  |                                                  `dateCreated` TEXT NOT NULL, | ||||||
|  |                                                  type TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                  mime TEXT DEFAULT '' NOT NULL, | ||||||
|  |                                                  hash TEXT DEFAULT '' NOT NULL); | ||||||
|  | CREATE INDEX `IDX_note_revisions_noteId` ON `note_revisions` (`noteId`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_utcDateCreated` ON `note_revisions` (`utcDateCreated`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_utcDateLastEdited` ON `note_revisions` (`utcDateLastEdited`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_dateCreated` ON `note_revisions` (`dateCreated`); | ||||||
|  | CREATE INDEX `IDX_note_revisions_dateLastEdited` ON `note_revisions` (`dateLastEdited`); | ||||||
|  | CREATE INDEX IDX_source_ids_utcDateCreated | ||||||
|  |     on source_ids (utcDateCreated); | ||||||
|  | CREATE TABLE IF NOT EXISTS "notes" ( | ||||||
|  |                                            `noteId`	TEXT NOT NULL, | ||||||
|  |                                            `title`	TEXT NOT NULL DEFAULT "note", | ||||||
|  |                                            `contentLength`	INT NOT NULL, | ||||||
|  |                                            `isProtected`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `type` TEXT NOT NULL DEFAULT 'text', | ||||||
|  |                                            `mime` TEXT NOT NULL DEFAULT 'text/html', | ||||||
|  |                                            `hash` TEXT DEFAULT "" NOT NULL, | ||||||
|  |                                            `isDeleted`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `deleteId`   TEXT DEFAULT NULL, | ||||||
|  |                                            `isErased`	INT NOT NULL DEFAULT 0, | ||||||
|  |                                            `dateCreated`	TEXT NOT NULL, | ||||||
|  |                                            `dateModified`	TEXT NOT NULL, | ||||||
|  |                                            `utcDateCreated`	TEXT NOT NULL, | ||||||
|  |                                            `utcDateModified`	TEXT NOT NULL, | ||||||
|  |                                            PRIMARY KEY(`noteId`)); | ||||||
|  | CREATE INDEX `IDX_notes_isDeleted` ON `notes` (`isDeleted`); | ||||||
|  | CREATE INDEX `IDX_notes_title` ON `notes` (`title`); | ||||||
|  | CREATE INDEX `IDX_notes_type` ON `notes` (`type`); | ||||||
|  | CREATE INDEX `IDX_notes_dateCreated` ON `notes` (`dateCreated`); | ||||||
|  | CREATE INDEX `IDX_notes_dateModified` ON `notes` (`dateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateModified` ON `notes` (`utcDateModified`); | ||||||
|  | CREATE INDEX `IDX_notes_utcDateCreated` ON `notes` (`utcDateCreated`); | ||||||
|  | CREATE TABLE IF NOT EXISTS "branches" ( | ||||||
|  |                                           `branchId`	TEXT NOT NULL, | ||||||
|  |                                           `noteId`	TEXT NOT NULL, | ||||||
|  |                                           `parentNoteId`	TEXT NOT NULL, | ||||||
|  |                                           `notePosition`	INTEGER NOT NULL, | ||||||
|  |                                           `prefix`	TEXT, | ||||||
|  |                                           `isExpanded`	INTEGER NOT NULL DEFAULT 0, | ||||||
|  |                                           `isDeleted`	INTEGER NOT NULL DEFAULT 0, | ||||||
|  |                                           `deleteId`    TEXT DEFAULT NULL, | ||||||
|  |                                           `utcDateModified`	TEXT NOT NULL, | ||||||
|  |                                           utcDateCreated TEXT NOT NULL, | ||||||
|  |                                           hash TEXT DEFAULT "" NOT NULL, | ||||||
|  |                                           PRIMARY KEY(`branchId`)); | ||||||
|  | CREATE INDEX `IDX_branches_noteId_parentNoteId` ON `branches` (`noteId`,`parentNoteId`); | ||||||
|  | CREATE INDEX IDX_branches_parentNoteId ON branches (parentNoteId); | ||||||
|  | CREATE TABLE IF NOT EXISTS "attributes" | ||||||
|  | ( | ||||||
|  |     attributeId      TEXT not null primary key, | ||||||
|  |     noteId       TEXT not null, | ||||||
|  |     type         TEXT not null, | ||||||
|  |     name         TEXT not null, | ||||||
|  |     value        TEXT default '' not null, | ||||||
|  |     position     INT  default 0 not null, | ||||||
|  |     utcDateCreated  TEXT not null, | ||||||
|  |     utcDateModified TEXT not null, | ||||||
|  |     isDeleted    INT  not null, | ||||||
|  |     `deleteId`    TEXT DEFAULT NULL, | ||||||
|  |     hash         TEXT default "" not null, | ||||||
|  |     isInheritable int DEFAULT 0 NULL); | ||||||
|  | CREATE INDEX IDX_attributes_name_value | ||||||
|  |     on attributes (name, value); | ||||||
|  | CREATE INDEX IDX_attributes_noteId_index | ||||||
|  |     on attributes (noteId); | ||||||
|  | CREATE INDEX IDX_attributes_value_index | ||||||
|  |     on attributes (value); | ||||||
|  | CREATE TABLE IF NOT EXISTS "sync" ( | ||||||
|  |     `id`	INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, | ||||||
|  |     `entityName`	TEXT NOT NULL, | ||||||
|  |     `entityId`	TEXT NOT NULL, | ||||||
|  |     `sourceId` TEXT NOT NULL, | ||||||
|  |     `isSynced` INTEGER default 0 not null, | ||||||
|  |     `utcSyncDate`	TEXT NOT NULL); | ||||||
|  | CREATE UNIQUE INDEX `IDX_sync_entityName_entityId` ON `sync` ( | ||||||
|  |                                                               `entityName`, | ||||||
|  |                                                               `entityId` | ||||||
|  |     ); | ||||||
|  | CREATE INDEX `IDX_sync_utcSyncDate` ON `sync` ( | ||||||
|  |                                                `utcSyncDate` | ||||||
|  |     ); | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ | |||||||
|  |  | ||||||
| <header> | <header> | ||||||
|      |      | ||||||
|         <h2><span class="attribs"><span class="type-signature"></span></span>ApiToken<span class="signature">(apiTokenId, token, isDeleted, utcDateCreated)</span><span class="type-signature"></span></h2> |         <h2><span class="attribs"><span class="type-signature"></span></span>ApiToken<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|          |          | ||||||
|             <div class="class-description">ApiToken is an entity representing token used to authenticate against Trilium API from client applications. Currently used only by Trilium Sender.</div> |             <div class="class-description">ApiToken is an entity representing token used to authenticate against Trilium API from client applications. Currently used only by Trilium Sender.</div> | ||||||
|          |          | ||||||
| @@ -45,7 +45,7 @@ | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|     <h4 class="name" id="ApiToken"><span class="type-signature"></span>new ApiToken<span class="signature">(apiTokenId, token, isDeleted, utcDateCreated)</span><span class="type-signature"></span></h4> |     <h4 class="name" id="ApiToken"><span class="type-signature"></span>new ApiToken<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -60,10 +60,15 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <h5>Parameters:</h5> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <table class="params"> |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|     <thead> |     <thead> | ||||||
|     <tr> |     <tr> | ||||||
|          |          | ||||||
| @@ -180,8 +185,6 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <dl class="details"> | <dl class="details"> | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -239,6 +242,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -282,13 +287,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ | |||||||
|  |  | ||||||
| <header> | <header> | ||||||
|      |      | ||||||
|         <h2><span class="attribs"><span class="type-signature"></span></span>Attribute<span class="signature">(attributeId, noteId, type, name, value, position, isInheritable, isDeleted, utcDateCreated, utcDateModified)</span><span class="type-signature"></span></h2> |         <h2><span class="attribs"><span class="type-signature"></span></span>Attribute<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|          |          | ||||||
|             <div class="class-description">Attribute is key value pair owned by a note.</div> |             <div class="class-description">Attribute is key value pair owned by a note.</div> | ||||||
|          |          | ||||||
| @@ -45,7 +45,7 @@ | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|     <h4 class="name" id="Attribute"><span class="type-signature"></span>new Attribute<span class="signature">(attributeId, noteId, type, name, value, position, isInheritable, isDeleted, utcDateCreated, utcDateModified)</span><span class="type-signature"></span></h4> |     <h4 class="name" id="Attribute"><span class="type-signature"></span>new Attribute<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -60,10 +60,15 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <h5>Parameters:</h5> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <table class="params"> |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|     <thead> |     <thead> | ||||||
|     <tr> |     <tr> | ||||||
|          |          | ||||||
| @@ -267,6 +272,32 @@ | |||||||
|  |  | ||||||
|      |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>deleteId</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  | | | ||||||
|  |  | ||||||
|  | <span class="param-type">null</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">ID identifying delete transaction</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|         <tr> |         <tr> | ||||||
|              |              | ||||||
|                 <td class="name"><code>utcDateCreated</code></td> |                 <td class="name"><code>utcDateCreated</code></td> | ||||||
| @@ -318,8 +349,6 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <dl class="details"> | <dl class="details"> | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -349,7 +378,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line24">line 24</a> |         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line30">line 30</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -377,6 +406,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -462,7 +493,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line46">line 46</a> |         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line47">line 47</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -485,6 +516,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h5>Returns:</h5> | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|          |          | ||||||
| @@ -562,7 +595,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line57">line 57</a> |         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line54">line 54</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -585,6 +618,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h5>Returns:</h5> | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|          |          | ||||||
| @@ -662,7 +697,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line76">line 76</a> |         <a href="entities_attribute.js.html">entities/attribute.js</a>, <a href="entities_attribute.js.html#line69">line 69</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -685,6 +720,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h5>Returns:</h5> | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|          |          | ||||||
| @@ -724,13 +761,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -28,7 +28,7 @@ | |||||||
|  |  | ||||||
| <header> | <header> | ||||||
|      |      | ||||||
|         <h2><span class="attribs"><span class="type-signature"></span></span>Branch<span class="signature">(branchId, noteId, parentNoteId, notePosition, prefix, isExpanded, isDeleted, utcDateModified, utcDateCreated)</span><span class="type-signature"></span></h2> |         <h2><span class="attribs"><span class="type-signature"></span></span>Branch<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|          |          | ||||||
|             <div class="class-description">Branch represents note's placement in the tree - it's essentially pair of noteId and parentNoteId. |             <div class="class-description">Branch represents note's placement in the tree - it's essentially pair of noteId and parentNoteId. | ||||||
| Each note can have multiple (at least one) branches, meaning it can be placed into multiple places in the tree.</div> | Each note can have multiple (at least one) branches, meaning it can be placed into multiple places in the tree.</div> | ||||||
| @@ -46,7 +46,7 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|     <h4 class="name" id="Branch"><span class="type-signature"></span>new Branch<span class="signature">(branchId, noteId, parentNoteId, notePosition, prefix, isExpanded, isDeleted, utcDateModified, utcDateCreated)</span><span class="type-signature"></span></h4> |     <h4 class="name" id="Branch"><span class="type-signature"></span>new Branch<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -61,10 +61,15 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <h5>Parameters:</h5> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <table class="params"> |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|     <thead> |     <thead> | ||||||
|     <tr> |     <tr> | ||||||
|          |          | ||||||
| @@ -245,6 +250,32 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|  |  | ||||||
|      |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>deleteId</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  | | | ||||||
|  |  | ||||||
|  | <span class="param-type">null</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">ID identifying delete transaction</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|         <tr> |         <tr> | ||||||
|              |              | ||||||
|                 <td class="name"><code>utcDateModified</code></td> |                 <td class="name"><code>utcDateModified</code></td> | ||||||
| @@ -296,8 +327,6 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <dl class="details"> | <dl class="details"> | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -327,7 +356,7 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line24">line 24</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line25">line 25</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -355,6 +384,8 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -392,7 +423,7 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|     <h4 class="name" id="getNote"><span class="type-signature">(async) </span>getNote<span class="signature">()</span><span class="type-signature"> → {<a href="Note.html">Note</a>|null}</span></h4> |     <h4 class="name" id="getNote"><span class="type-signature">(async) </span>getNote<span class="signature">()</span><span class="type-signature"> → {Promise.<(<a href="Note.html">Note</a>|null)>}</span></h4> | ||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -440,7 +471,7 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line38">line 38</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line32">line 32</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -463,6 +494,8 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h5>Returns:</h5> | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|          |          | ||||||
| @@ -474,10 +507,109 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
|     </dt> |     </dt> | ||||||
|     <dd> |     <dd> | ||||||
|          |          | ||||||
| <span class="param-type"><a href="Note.html">Note</a></span> | <span class="param-type">Promise.<(<a href="Note.html">Note</a>|null)></span> | ||||||
| | |  | ||||||
|  |  | ||||||
| <span class="param-type">null</span> |  | ||||||
|  |     </dd> | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="getParentNote"><span class="type-signature">(async) </span>getParentNote<span class="signature">()</span><span class="type-signature"> → {Promise.<(<a href="Note.html">Note</a>|null)>}</span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line37">line 37</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl> | ||||||
|  |     <dt> | ||||||
|  |         Type | ||||||
|  |     </dt> | ||||||
|  |     <dd> | ||||||
|  |          | ||||||
|  | <span class="param-type">Promise.<(<a href="Note.html">Note</a>|null)></span> | ||||||
|  |  | ||||||
|  |  | ||||||
|     </dd> |     </dd> | ||||||
| @@ -505,13 +637,13 @@ Each note can have multiple (at least one) branches, meaning it can be placed in | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -178,6 +178,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -210,13 +212,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -28,7 +28,7 @@ | |||||||
|  |  | ||||||
| <header> | <header> | ||||||
|      |      | ||||||
|         <h2><span class="attribs"><span class="type-signature"></span></span>NoteRevision<span class="signature">(noteRevisionId, noteId, type, mime, title, content, isProtected, dateModifiedFrom, dateModifiedTo, utcDateModifiedFrom, utcDateModifiedTo)</span><span class="type-signature"></span></h2> |         <h2><span class="attribs"><span class="type-signature"></span></span>NoteRevision<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|          |          | ||||||
|             <div class="class-description">NoteRevision represents snapshot of note's title and content at some point in the past. It's used for seamless note versioning.</div> |             <div class="class-description">NoteRevision represents snapshot of note's title and content at some point in the past. It's used for seamless note versioning.</div> | ||||||
|          |          | ||||||
| @@ -45,7 +45,7 @@ | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|     <h4 class="name" id="NoteRevision"><span class="type-signature"></span>new NoteRevision<span class="signature">(noteRevisionId, noteId, type, mime, title, content, isProtected, dateModifiedFrom, dateModifiedTo, utcDateModifiedFrom, utcDateModifiedTo)</span><span class="type-signature"></span></h4> |     <h4 class="name" id="NoteRevision"><span class="type-signature"></span>new NoteRevision<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -60,10 +60,15 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <h5>Parameters:</h5> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <table class="params"> |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|     <thead> |     <thead> | ||||||
|     <tr> |     <tr> | ||||||
|          |          | ||||||
| @@ -200,13 +205,36 @@ | |||||||
|  |  | ||||||
|         <tr> |         <tr> | ||||||
|              |              | ||||||
|                 <td class="name"><code>content</code></td> |                 <td class="name"><code>contentLength</code></td> | ||||||
|              |              | ||||||
|  |  | ||||||
|             <td class="type"> |             <td class="type"> | ||||||
|              |              | ||||||
|                  |                  | ||||||
| <span class="param-type">string</span> | <span class="param-type">int</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last"></td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>isErased</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">boolean</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|              |              | ||||||
| @@ -229,7 +257,7 @@ | |||||||
|             <td class="type"> |             <td class="type"> | ||||||
|              |              | ||||||
|                  |                  | ||||||
| <span class="param-type">string</span> | <span class="param-type">boolean</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|              |              | ||||||
| @@ -246,7 +274,7 @@ | |||||||
|  |  | ||||||
|         <tr> |         <tr> | ||||||
|              |              | ||||||
|                 <td class="name"><code>dateModifiedFrom</code></td> |                 <td class="name"><code>dateLastEdited</code></td> | ||||||
|              |              | ||||||
|  |  | ||||||
|             <td class="type"> |             <td class="type"> | ||||||
| @@ -269,7 +297,7 @@ | |||||||
|  |  | ||||||
|         <tr> |         <tr> | ||||||
|              |              | ||||||
|                 <td class="name"><code>dateModifiedTo</code></td> |                 <td class="name"><code>dateCreated</code></td> | ||||||
|              |              | ||||||
|  |  | ||||||
|             <td class="type"> |             <td class="type"> | ||||||
| @@ -292,7 +320,7 @@ | |||||||
|  |  | ||||||
|         <tr> |         <tr> | ||||||
|              |              | ||||||
|                 <td class="name"><code>utcDateModifiedFrom</code></td> |                 <td class="name"><code>utcDateLastEdited</code></td> | ||||||
|              |              | ||||||
|  |  | ||||||
|             <td class="type"> |             <td class="type"> | ||||||
| @@ -315,7 +343,30 @@ | |||||||
|  |  | ||||||
|         <tr> |         <tr> | ||||||
|              |              | ||||||
|                 <td class="name"><code>utcDateModifiedTo</code></td> |                 <td class="name"><code>utcDateCreated</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last"></td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>utcDateModified</code></td> | ||||||
|              |              | ||||||
|  |  | ||||||
|             <td class="type"> |             <td class="type"> | ||||||
| @@ -341,8 +392,6 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <dl class="details"> | <dl class="details"> | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -372,7 +421,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_note_revision.js.html">entities/note_revision.js</a>, <a href="entities_note_revision.js.html#line24">line 24</a> |         <a href="entities_note_revision.js.html">entities/note_revision.js</a>, <a href="entities_note_revision.js.html#line35">line 35</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -400,6 +449,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -429,6 +480,320 @@ | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|  |         <h3 class="subsection-title">Methods</h3> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="getContent"><span class="type-signature">(async) </span>getContent<span class="signature">()</span><span class="type-signature"> → {Promise.<*>}</span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_revision.js.html">entities/note_revision.js</a>, <a href="entities_note_revision.js.html#line69">line 69</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl> | ||||||
|  |     <dt> | ||||||
|  |         Type | ||||||
|  |     </dt> | ||||||
|  |     <dd> | ||||||
|  |          | ||||||
|  | <span class="param-type">Promise.<*></span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     </dd> | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="isStringNote"><span class="type-signature"></span>isStringNote<span class="signature">()</span><span class="type-signature"> → {boolean}</span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_revision.js.html">entities/note_revision.js</a>, <a href="entities_note_revision.js.html#line55">line 55</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|  |          | ||||||
|  | <div class="param-desc"> | ||||||
|  |     true if the note has string content (not binary) | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl> | ||||||
|  |     <dt> | ||||||
|  |         Type | ||||||
|  |     </dt> | ||||||
|  |     <dd> | ||||||
|  |          | ||||||
|  | <span class="param-type">boolean</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     </dd> | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="setContent"><span class="type-signature">(async) </span>setContent<span class="signature">()</span><span class="type-signature"> → {Promise}</span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_revision.js.html">entities/note_revision.js</a>, <a href="entities_note_revision.js.html#line105">line 105</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl> | ||||||
|  |     <dt> | ||||||
|  |         Type | ||||||
|  |     </dt> | ||||||
|  |     <dd> | ||||||
|  |          | ||||||
|  | <span class="param-type">Promise</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     </dd> | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |      | ||||||
|  |  | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -443,13 +808,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ | |||||||
|  |  | ||||||
| <header> | <header> | ||||||
|      |      | ||||||
|         <h2><span class="attribs"><span class="type-signature"></span></span>Option<span class="signature">(name, value, isSynced, utcDateModified, utcDateCreated)</span><span class="type-signature"></span></h2> |         <h2><span class="attribs"><span class="type-signature"></span></span>Option<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|          |          | ||||||
|             <div class="class-description">Option represents name-value pair, either directly configurable by the user or some system property.</div> |             <div class="class-description">Option represents name-value pair, either directly configurable by the user or some system property.</div> | ||||||
|          |          | ||||||
| @@ -45,7 +45,7 @@ | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|     <h4 class="name" id="Option"><span class="type-signature"></span>new Option<span class="signature">(name, value, isSynced, utcDateModified, utcDateCreated)</span><span class="type-signature"></span></h4> |     <h4 class="name" id="Option"><span class="type-signature"></span>new Option<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -60,10 +60,15 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <h5>Parameters:</h5> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <table class="params"> |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|     <thead> |     <thead> | ||||||
|     <tr> |     <tr> | ||||||
|          |          | ||||||
| @@ -203,8 +208,6 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <dl class="details"> | <dl class="details"> | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -234,7 +237,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_option.js.html">entities/option.js</a>, <a href="entities_option.js.html#line17">line 17</a> |         <a href="entities_option.js.html">entities/option.js</a>, <a href="entities_option.js.html#line22">line 22</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -262,6 +265,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -305,13 +310,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ | |||||||
|  |  | ||||||
| <header> | <header> | ||||||
|      |      | ||||||
|         <h2><span class="attribs"><span class="type-signature"></span></span>RecentNote<span class="signature">(noteId, notePath, isDeleted, utcDateModified)</span><span class="type-signature"></span></h2> |         <h2><span class="attribs"><span class="type-signature"></span></span>RecentNote<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|          |          | ||||||
|             <div class="class-description">RecentNote represents recently visited note.</div> |             <div class="class-description">RecentNote represents recently visited note.</div> | ||||||
|          |          | ||||||
| @@ -45,7 +45,7 @@ | |||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
|     <h4 class="name" id="RecentNote"><span class="type-signature"></span>new RecentNote<span class="signature">(noteId, notePath, isDeleted, utcDateModified)</span><span class="type-signature"></span></h4> |     <h4 class="name" id="RecentNote"><span class="type-signature"></span>new RecentNote<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|      |      | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -60,10 +60,15 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     <h5>Parameters:</h5> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <table class="params"> |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|     <thead> |     <thead> | ||||||
|     <tr> |     <tr> | ||||||
|          |          | ||||||
| @@ -180,8 +185,6 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <dl class="details"> | <dl class="details"> | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -239,6 +242,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -282,13 +287,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -34,10 +34,10 @@ const dateUtils = require('../services/date_utils'); | |||||||
| /** | /** | ||||||
|  * ApiToken is an entity representing token used to authenticate against Trilium API from client applications. Currently used only by Trilium Sender. |  * ApiToken is an entity representing token used to authenticate against Trilium API from client applications. Currently used only by Trilium Sender. | ||||||
|  * |  * | ||||||
|  * @param {string} apiTokenId - primary key |  * @property {string} apiTokenId - primary key | ||||||
|  * @param {string} token |  * @property {string} token | ||||||
|  * @param {boolean} isDeleted - true if API token is deleted |  * @property {boolean} isDeleted - true if API token is deleted | ||||||
|  * @param {string} utcDateCreated |  * @property {string} utcDateCreated | ||||||
|  * |  * | ||||||
|  * @extends Entity |  * @extends Entity | ||||||
|  */ |  */ | ||||||
| @@ -69,13 +69,13 @@ module.exports = ApiToken;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -36,16 +36,17 @@ const sql = require('../services/sql'); | |||||||
| /** | /** | ||||||
|  * Attribute is key value pair owned by a note. |  * Attribute is key value pair owned by a note. | ||||||
|  * |  * | ||||||
|  * @param {string} attributeId |  * @property {string} attributeId | ||||||
|  * @param {string} noteId |  * @property {string} noteId | ||||||
|  * @param {string} type |  * @property {string} type | ||||||
|  * @param {string} name |  * @property {string} name | ||||||
|  * @param {string} value |  * @property {string} value | ||||||
|  * @param {int} position |  * @property {int} position | ||||||
|  * @param {boolean} isInheritable |  * @property {boolean} isInheritable | ||||||
|  * @param {boolean} isDeleted |  * @property {boolean} isDeleted | ||||||
|  * @param {string} utcDateCreated |  * @property {string|null} deleteId - ID identifying delete transaction | ||||||
|  * @param {string} utcDateModified |  * @property {string} utcDateCreated | ||||||
|  |  * @property {string} utcDateModified | ||||||
|  * |  * | ||||||
|  * @extends Entity |  * @extends Entity | ||||||
|  */ |  */ | ||||||
| @@ -72,11 +73,7 @@ class Attribute extends Entity { | |||||||
|      * @returns {Promise<Note|null>} |      * @returns {Promise<Note|null>} | ||||||
|      */ |      */ | ||||||
|     async getNote() { |     async getNote() { | ||||||
|         if (!this.__note) { |         return await repository.getNote(this.noteId); | ||||||
|             this.__note = await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.noteId]); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return this.__note; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -91,11 +88,7 @@ class Attribute extends Entity { | |||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!this.__targetNote) { |         return await repository.getNote(this.value); | ||||||
|             this.__targetNote = await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.value]); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return this.__targetNote; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -107,6 +100,10 @@ class Attribute extends Entity { | |||||||
|  |  | ||||||
|     async beforeSaving() { |     async beforeSaving() { | ||||||
|         if (!this.value) { |         if (!this.value) { | ||||||
|  |             if (this.type === 'relation') { | ||||||
|  |                 throw new Error(`Cannot save relation ${this.name} since it does not target any note.`); | ||||||
|  |             } | ||||||
|  |  | ||||||
|             // null value isn't allowed |             // null value isn't allowed | ||||||
|             this.value = ""; |             this.value = ""; | ||||||
|         } |         } | ||||||
| @@ -137,6 +134,21 @@ class Attribute extends Entity { | |||||||
|     // cannot be static! |     // cannot be static! | ||||||
|     updatePojo(pojo) { |     updatePojo(pojo) { | ||||||
|         delete pojo.isOwned; |         delete pojo.isOwned; | ||||||
|  |         delete pojo.__note; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     createClone(type, name, value) { | ||||||
|  |         return new Attribute({ | ||||||
|  |             noteId: this.noteId, | ||||||
|  |             type: type, | ||||||
|  |             name: name, | ||||||
|  |             value: value, | ||||||
|  |             position: this.position, | ||||||
|  |             isInheritable: this.isInheritable, | ||||||
|  |             isDeleted: false, | ||||||
|  |             utcDateCreated: this.utcDateCreated, | ||||||
|  |             utcDateModified: this.utcDateModified | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -150,13 +162,13 @@ module.exports = Attribute;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -37,15 +37,16 @@ const sql = require('../services/sql'); | |||||||
|  * Branch represents note's placement in the tree - it's essentially pair of noteId and parentNoteId. |  * Branch represents note's placement in the tree - it's essentially pair of noteId and parentNoteId. | ||||||
|  * Each note can have multiple (at least one) branches, meaning it can be placed into multiple places in the tree. |  * Each note can have multiple (at least one) branches, meaning it can be placed into multiple places in the tree. | ||||||
|  * |  * | ||||||
|  * @param {string} branchId - primary key |  * @property {string} branchId - primary key | ||||||
|  * @param {string} noteId |  * @property {string} noteId | ||||||
|  * @param {string} parentNoteId |  * @property {string} parentNoteId | ||||||
|  * @param {int} notePosition |  * @property {int} notePosition | ||||||
|  * @param {string} prefix |  * @property {string} prefix | ||||||
|  * @param {boolean} isExpanded |  * @property {boolean} isExpanded | ||||||
|  * @param {boolean} isDeleted |  * @property {boolean} isDeleted | ||||||
|  * @param {string} utcDateModified |  * @property {string|null} deleteId - ID identifying delete transaction | ||||||
|  * @param {string} utcDateCreated |  * @property {string} utcDateModified | ||||||
|  |  * @property {string} utcDateCreated | ||||||
|  * |  * | ||||||
|  * @extends Entity |  * @extends Entity | ||||||
|  */ |  */ | ||||||
| @@ -53,24 +54,26 @@ class Branch extends Entity { | |||||||
|     static get entityName() { return "branches"; } |     static get entityName() { return "branches"; } | ||||||
|     static get primaryKeyName() { return "branchId"; } |     static get primaryKeyName() { return "branchId"; } | ||||||
|     // notePosition is not part of hash because it would produce a lot of updates in case of reordering |     // notePosition is not part of hash because it would produce a lot of updates in case of reordering | ||||||
|     static get hashedProperties() { return ["branchId", "noteId", "parentNoteId", "isDeleted", "prefix"]; } |     static get hashedProperties() { return ["branchId", "noteId", "parentNoteId", "isDeleted", "deleteId", "prefix"]; } | ||||||
|  |  | ||||||
|     constructor(row = {}) { |     /** @returns {Promise<Note|null>} */ | ||||||
|         super(row); |     async getNote() { | ||||||
|  |         return await repository.getNote(this.noteId); | ||||||
|         // used to detect move in note tree |  | ||||||
|         this.origParentNoteId = this.parentNoteId; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Note|null} */ |     /** @returns {Promise<Note|null>} */ | ||||||
|     async getNote() { |     async getParentNote() { | ||||||
|         return await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.noteId]); |         return await repository.getNote(this.parentNoteId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     async beforeSaving() { |     async beforeSaving() { | ||||||
|         if (this.notePosition === undefined) { |         if (this.notePosition === undefined) { | ||||||
|             const maxNotePos = await sql.getValue('SELECT MAX(notePosition) FROM branches WHERE parentNoteId = ? AND isDeleted = 0', [this.parentNoteId]); |             const maxNotePos = await sql.getValue('SELECT MAX(notePosition) FROM branches WHERE parentNoteId = ? AND isDeleted = 0', [this.parentNoteId]); | ||||||
|             this.notePosition = maxNotePos === null ? 0 : maxNotePos + 1; |             this.notePosition = maxNotePos === null ? 0 : maxNotePos + 10; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (!this.isExpanded) { | ||||||
|  |             this.isExpanded = false; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!this.isDeleted) { |         if (!this.isDeleted) { | ||||||
| @@ -88,9 +91,17 @@ class Branch extends Entity { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // cannot be static! |     createClone(parentNoteId, notePosition) { | ||||||
|     updatePojo(pojo) { |         return new Branch({ | ||||||
|         delete pojo.origParentNoteId; |             noteId: this.noteId, | ||||||
|  |             parentNoteId: parentNoteId, | ||||||
|  |             notePosition: notePosition, | ||||||
|  |             prefix: this.prefix, | ||||||
|  |             isExpanded: this.isExpanded, | ||||||
|  |             isDeleted: false, | ||||||
|  |             utcDateCreated: this.utcDateCreated, | ||||||
|  |             utcDateModified: this.utcDateModified | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -104,13 +115,13 @@ module.exports = Branch;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -96,13 +96,13 @@ module.exports = Entity;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -42,8 +42,6 @@ const LABEL_DEFINITION = 'label-definition'; | |||||||
| const RELATION = 'relation'; | const RELATION = 'relation'; | ||||||
| const RELATION_DEFINITION = 'relation-definition'; | const RELATION_DEFINITION = 'relation-definition'; | ||||||
|  |  | ||||||
| const STRING_MIME_TYPES = ["application/x-javascript"]; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * This represents a Note which is a central object in the Trilium Notes project. |  * This represents a Note which is a central object in the Trilium Notes project. | ||||||
|  * |  * | ||||||
| @@ -51,8 +49,11 @@ const STRING_MIME_TYPES = ["application/x-javascript"]; | |||||||
|  * @property {string} type - one of "text", "code", "file" or "render" |  * @property {string} type - one of "text", "code", "file" or "render" | ||||||
|  * @property {string} mime - MIME type, e.g. "text/html" |  * @property {string} mime - MIME type, e.g. "text/html" | ||||||
|  * @property {string} title - note title |  * @property {string} title - note title | ||||||
|  |  * @property {int} contentLength - length of content | ||||||
|  * @property {boolean} isProtected - true if note is protected |  * @property {boolean} isProtected - true if note is protected | ||||||
|  * @property {boolean} isDeleted - true if note is deleted |  * @property {boolean} isDeleted - true if note is deleted | ||||||
|  |  * @property {string|null} deleteId - ID identifying delete transaction | ||||||
|  |  * @property {boolean} isErased - true if note's content is erased after it has been deleted | ||||||
|  * @property {string} dateCreated - local date time (with offset) |  * @property {string} dateCreated - local date time (with offset) | ||||||
|  * @property {string} dateModified - local date time (with offset) |  * @property {string} dateModified - local date time (with offset) | ||||||
|  * @property {string} utcDateCreated |  * @property {string} utcDateCreated | ||||||
| @@ -63,7 +64,7 @@ const STRING_MIME_TYPES = ["application/x-javascript"]; | |||||||
| class Note extends Entity { | class Note extends Entity { | ||||||
|     static get entityName() { return "notes"; } |     static get entityName() { return "notes"; } | ||||||
|     static get primaryKeyName() { return "noteId"; } |     static get primaryKeyName() { return "noteId"; } | ||||||
|     static get hashedProperties() { return ["noteId", "title", "type", "isProtected", "isDeleted"]; } |     static get hashedProperties() { return ["noteId", "title", "type", "mime", "isProtected", "isDeleted", "deleteId"]; } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param row - object containing database row from "notes" table |      * @param row - object containing database row from "notes" table | ||||||
| @@ -72,7 +73,7 @@ class Note extends Entity { | |||||||
|         super(row); |         super(row); | ||||||
|  |  | ||||||
|         this.isProtected = !!this.isProtected; |         this.isProtected = !!this.isProtected; | ||||||
|         /* true if content (meaning any kind of potentially encrypted content) is either not encrypted |         /* true if content is either not encrypted | ||||||
|          * or encrypted, but with available protected session (so effectively decrypted) */ |          * or encrypted, but with available protected session (so effectively decrypted) */ | ||||||
|         this.isContentAvailable = true; |         this.isContentAvailable = true; | ||||||
|  |  | ||||||
| @@ -81,7 +82,7 @@ class Note extends Entity { | |||||||
|             this.isContentAvailable = protectedSessionService.isProtectedSessionAvailable(); |             this.isContentAvailable = protectedSessionService.isProtectedSessionAvailable(); | ||||||
|  |  | ||||||
|             if (this.isContentAvailable) { |             if (this.isContentAvailable) { | ||||||
|                 protectedSessionService.decryptNote(this); |                 this.title = protectedSessionService.decryptString(this.title); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 this.title = "[protected]"; |                 this.title = "[protected]"; | ||||||
| @@ -116,34 +117,46 @@ class Note extends Entity { | |||||||
|  |  | ||||||
|             if (this.isProtected) { |             if (this.isProtected) { | ||||||
|                 if (this.isContentAvailable) { |                 if (this.isContentAvailable) { | ||||||
|                     protectedSessionService.decryptNoteContent(this); |                     this.content = this.content === null ? null : protectedSessionService.decrypt(this.content); | ||||||
|                 } |                 } | ||||||
|                 else { |                 else { | ||||||
|                     this.content = ""; |                     this.content = ""; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (this.isStringNote()) { |  | ||||||
|                 this.content = this.content === null |  | ||||||
|                     ? "" |  | ||||||
|                     : this.content.toString("UTF-8"); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return this.content; |         if (this.isStringNote()) { | ||||||
|  |             return this.content === null | ||||||
|  |                 ? "" | ||||||
|  |                 : this.content.toString("UTF-8"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return this.content; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Promise<*>} */ |     /** @returns {Promise<*>} */ | ||||||
|     async getJsonContent() { |     async getJsonContent() { | ||||||
|         const content = await this.getContent(); |         const content = await this.getContent(); | ||||||
|  |  | ||||||
|  |         if (!content || !content.trim()) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return JSON.parse(content); |         return JSON.parse(content); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Promise} */ |     /** @returns {Promise} */ | ||||||
|     async setContent(content) { |     async setContent(content) { | ||||||
|         // force updating note itself so that dateChanged is represented correctly even for the content |         if (content === null || content === undefined) { | ||||||
|  |             throw new Error(`Cannot set null content to note ${this.noteId}`); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         content = Buffer.isBuffer(content) ? content : Buffer.from(content); | ||||||
|  |  | ||||||
|  |         // force updating note itself so that dateModified is represented correctly even for the content | ||||||
|         this.forcedChange = true; |         this.forcedChange = true; | ||||||
|  |         this.contentLength = content.byteLength; | ||||||
|         await this.save(); |         await this.save(); | ||||||
|  |  | ||||||
|         this.content = content; |         this.content = content; | ||||||
| @@ -152,12 +165,12 @@ class Note extends Entity { | |||||||
|             noteId: this.noteId, |             noteId: this.noteId, | ||||||
|             content: content, |             content: content, | ||||||
|             utcDateModified: dateUtils.utcNowDateTime(), |             utcDateModified: dateUtils.utcNowDateTime(), | ||||||
|             hash: utils.hash(this.noteId + "|" + content) |             hash: utils.hash(this.noteId + "|" + content.toString()) | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|         if (this.isProtected) { |         if (this.isProtected) { | ||||||
|             if (this.isContentAvailable) { |             if (this.isContentAvailable) { | ||||||
|                 protectedSessionService.encryptNoteContent(pojo); |                 pojo.content = protectedSessionService.encrypt(pojo.content); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 throw new Error(`Cannot update content of noteId=${this.noteId} since we're out of protected session.`); |                 throw new Error(`Cannot update content of noteId=${this.noteId} since we're out of protected session.`); | ||||||
| @@ -199,9 +212,7 @@ class Note extends Entity { | |||||||
|  |  | ||||||
|     /** @returns {boolean} true if the note has string content (not binary) */ |     /** @returns {boolean} true if the note has string content (not binary) */ | ||||||
|     isStringNote() { |     isStringNote() { | ||||||
|         return ["text", "code", "relation-map", "search"].includes(this.type) |         return utils.isStringNote(this.type, this.mime); | ||||||
|             || this.mime.startsWith('text/') |  | ||||||
|             || STRING_MIME_TYPES.includes(this.mime); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {string} JS script environment - either "frontend" or "backend" */ |     /** @returns {string} JS script environment - either "frontend" or "backend" */ | ||||||
| @@ -221,11 +232,47 @@ class Note extends Entity { | |||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     async loadOwnedAttributesToCache() { | ||||||
|  |         this.__ownedAttributeCache = await repository.getEntities(`SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ?`, [this.noteId]); | ||||||
|  |         return this.__ownedAttributeCache; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @returns {Promise<Attribute[]>} attributes belonging to this specific note (excludes inherited attributes) |      * This method is a faster variant of getAttributes() which looks for only owned attributes. | ||||||
|  |      * Use when inheritance is not needed and/or in batch/performance sensitive operations. | ||||||
|  |      * | ||||||
|  |      * @param {string} [type] - (optional) attribute type to filter | ||||||
|  |      * @param {string} [name] - (optional) attribute name to filter | ||||||
|  |      * @returns {Promise<Attribute[]>} note's "owned" attributes - excluding inherited ones | ||||||
|      */ |      */ | ||||||
|     async getOwnedAttributes() { |     async getOwnedAttributes(type, name) { | ||||||
|         return await repository.getEntities(`SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ?`, [this.noteId]); |         if (!this.__ownedAttributeCache) { | ||||||
|  |             await this.loadOwnedAttributesToCache(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (type && name) { | ||||||
|  |             return this.__ownedAttributeCache.filter(attr => attr.type === type && attr.name === name); | ||||||
|  |         } | ||||||
|  |         else if (type) { | ||||||
|  |             return this.__ownedAttributeCache.filter(attr => attr.type === type); | ||||||
|  |         } | ||||||
|  |         else if (name) { | ||||||
|  |             return this.__ownedAttributeCache.filter(attr => attr.name === name); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return this.__ownedAttributeCache.slice(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @returns {Promise<Attribute>} attribute belonging to this specific note (excludes inherited attributes) | ||||||
|  |      * | ||||||
|  |      * This method can be significantly faster than the getAttribute() | ||||||
|  |      */ | ||||||
|  |     async getOwnedAttribute(type, name) { | ||||||
|  |         const attrs = await this.getOwnedAttributes(type, name); | ||||||
|  |  | ||||||
|  |         return attrs.length > 0 ? attrs[0] : null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -236,19 +283,26 @@ class Note extends Entity { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} [name] - attribute name to filter |      * @param {string} [type] - (optional) attribute type to filter | ||||||
|  |      * @param {string} [name] - (optional) attribute name to filter | ||||||
|      * @returns {Promise<Attribute[]>} all note's attributes, including inherited ones |      * @returns {Promise<Attribute[]>} all note's attributes, including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getAttributes(name) { |     async getAttributes(type, name) { | ||||||
|         if (!this.__attributeCache) { |         if (!this.__attributeCache) { | ||||||
|             await this.loadAttributesToCache(); |             await this.loadAttributesToCache(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (name) { |         if (type && name) { | ||||||
|  |             return this.__attributeCache.filter(attr => attr.type === type && attr.name === name); | ||||||
|  |         } | ||||||
|  |         else if (type) { | ||||||
|  |             return this.__attributeCache.filter(attr => attr.type === type); | ||||||
|  |         } | ||||||
|  |         else if (name) { | ||||||
|             return this.__attributeCache.filter(attr => attr.name === name); |             return this.__attributeCache.filter(attr => attr.name === name); | ||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
|             return this.__attributeCache; |             return this.__attributeCache.slice(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -257,7 +311,15 @@ class Note extends Entity { | |||||||
|      * @returns {Promise<Attribute[]>} all note's labels (attributes with type label), including inherited ones |      * @returns {Promise<Attribute[]>} all note's labels (attributes with type label), including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getLabels(name) { |     async getLabels(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === LABEL); |         return await this.getAttributes(LABEL, name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} [name] - label name to filter | ||||||
|  |      * @returns {Promise<Attribute[]>} all note's labels (attributes with type label), excluding inherited ones | ||||||
|  |      */ | ||||||
|  |     async getOwnedLabels(name) { | ||||||
|  |         return await this.getOwnedAttributes(LABEL, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -265,7 +327,7 @@ class Note extends Entity { | |||||||
|      * @returns {Promise<Attribute[]>} all note's label definitions, including inherited ones |      * @returns {Promise<Attribute[]>} all note's label definitions, including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getLabelDefinitions(name) { |     async getLabelDefinitions(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === LABEL_DEFINITION); |         return await this.getAttributes(LABEL_DEFINITION, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -273,7 +335,30 @@ class Note extends Entity { | |||||||
|      * @returns {Promise<Attribute[]>} all note's relations (attributes with type relation), including inherited ones |      * @returns {Promise<Attribute[]>} all note's relations (attributes with type relation), including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getRelations(name) { |     async getRelations(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === RELATION); |         return await this.getAttributes(RELATION, name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} [name] - relation name to filter | ||||||
|  |      * @returns {Promise<Attribute[]>} all note's relations (attributes with type relation), excluding inherited ones | ||||||
|  |      */ | ||||||
|  |     async getOwnedRelations(name) { | ||||||
|  |         return await this.getOwnedAttributes(RELATION, name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} [name] - relation name to filter | ||||||
|  |      * @returns {Promise<Note[]>} | ||||||
|  |      */ | ||||||
|  |     async getRelationTargets(name) { | ||||||
|  |         const relations = await this.getRelations(name); | ||||||
|  |         const targets = []; | ||||||
|  |  | ||||||
|  |         for (const relation of relations) { | ||||||
|  |             targets.push(await relation.getTargetNote()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return targets; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -281,7 +366,7 @@ class Note extends Entity { | |||||||
|      * @returns {Promise<Attribute[]>} all note's relation definitions including inherited ones |      * @returns {Promise<Attribute[]>} all note's relation definitions including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getRelationDefinitions(name) { |     async getRelationDefinitions(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === RELATION_DEFINITION); |         return await this.getAttributes(RELATION_DEFINITION, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -290,6 +375,7 @@ class Note extends Entity { | |||||||
|      */ |      */ | ||||||
|     invalidateAttributeCache() { |     invalidateAttributeCache() { | ||||||
|         this.__attributeCache = null; |         this.__attributeCache = null; | ||||||
|  |         this.__ownedAttributeCache = null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Promise<void>} */ |     /** @returns {Promise<void>} */ | ||||||
| @@ -299,29 +385,33 @@ class Note extends Entity { | |||||||
|             tree(noteId, level) AS ( |             tree(noteId, level) AS ( | ||||||
|                 SELECT ?, 0 |                 SELECT ?, 0 | ||||||
|                 UNION |                 UNION | ||||||
|                 SELECT branches.parentNoteId, tree.level + 1 FROM branches |                 SELECT branches.parentNoteId, tree.level + 1  | ||||||
|  |                     FROM branches | ||||||
|                     JOIN tree ON branches.noteId = tree.noteId |                     JOIN tree ON branches.noteId = tree.noteId | ||||||
|                     JOIN notes ON notes.noteId = branches.parentNoteId |                 WHERE branches.isDeleted = 0 | ||||||
|                 WHERE notes.isDeleted = 0 |  | ||||||
|                   AND branches.isDeleted = 0 |  | ||||||
|             ), |             ), | ||||||
|             treeWithAttrs(noteId, level) AS ( |             treeWithAttrs(noteId, level) AS ( | ||||||
|                 SELECT * FROM tree |                 SELECT * FROM tree | ||||||
|                 UNION |                 UNION | ||||||
|                 SELECT attributes.value, treeWithAttrs.level + 1 FROM attributes |                 SELECT attributes.value, treeWithAttrs.level FROM attributes | ||||||
|                      JOIN treeWithAttrs ON treeWithAttrs.noteId = attributes.noteId |                      JOIN treeWithAttrs ON treeWithAttrs.noteId = attributes.noteId | ||||||
|                 WHERE attributes.isDeleted = 0 |                 WHERE attributes.isDeleted = 0 | ||||||
|                   AND attributes.type = 'relation' |                   AND attributes.type = 'relation' | ||||||
|                   AND attributes.name = 'template' |                   AND attributes.name = 'template' | ||||||
|                   AND (attributes.noteId = ? OR attributes.isInheritable = 1) |                   AND (treeWithAttrs.level = 0 OR attributes.isInheritable = 1) | ||||||
|                 ) |                 ) | ||||||
|             SELECT attributes.* FROM attributes JOIN treeWithAttrs ON attributes.noteId = treeWithAttrs.noteId |             SELECT attributes.* FROM attributes JOIN treeWithAttrs ON attributes.noteId = treeWithAttrs.noteId | ||||||
|             WHERE attributes.isDeleted = 0 AND (attributes.isInheritable = 1 OR attributes.noteId = ?) |             WHERE attributes.isDeleted = 0 AND (attributes.isInheritable = 1 OR treeWithAttrs.level = 0) | ||||||
|             ORDER BY level, noteId, position`, [this.noteId, this.noteId, this.noteId]); |             ORDER BY level, noteId, position`, [this.noteId]); | ||||||
|         // attributes are ordered so that "closest" attributes are first |         // attributes are ordered so that "closest" attributes are first | ||||||
|         // we order by noteId so that attributes from same note stay together. Actual noteId ordering doesn't matter. |         // we order by noteId so that attributes from same note stay together. Actual noteId ordering doesn't matter. | ||||||
|  |  | ||||||
|         const filteredAttributes = attributes.filter((attr, index) => { |         const filteredAttributes = attributes.filter((attr, index) => { | ||||||
|  |             // if this exact attribute already appears then don't include it (can happen via cloning) | ||||||
|  |             if (attributes.findIndex(it => it.attributeId === attr.attributeId) !== index) { | ||||||
|  |                 return false; | ||||||
|  |             } | ||||||
|  |  | ||||||
|             if (attr.isDefinition()) { |             if (attr.isDefinition()) { | ||||||
|                 const firstDefinitionIndex = attributes.findIndex(el => el.type === attr.type && el.name === attr.name); |                 const firstDefinitionIndex = attributes.findIndex(el => el.type === attr.type && el.name === attr.name); | ||||||
|  |  | ||||||
| @@ -365,6 +455,15 @@ class Note extends Entity { | |||||||
|         return !!await this.getAttribute(type, name); |         return !!await this.getAttribute(type, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|  |      * @param {string} name - attribute name | ||||||
|  |      * @returns {Promise<boolean>} true if note has an attribute with given type and name (excluding inherited) | ||||||
|  |      */ | ||||||
|  |     async hasOwnedAttribute(type, name) { | ||||||
|  |         return !!await this.getOwnedAttribute(type, name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} type - attribute type (label, relation, etc.) |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|      * @param {string} name - attribute name |      * @param {string} name - attribute name | ||||||
| @@ -379,7 +478,7 @@ class Note extends Entity { | |||||||
|     /** |     /** | ||||||
|      * @param {string} type - attribute type (label, relation, etc.) |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|      * @param {string} name - attribute name |      * @param {string} name - attribute name | ||||||
|      * @returns {Promise<string>} attribute value of given type and name or null if no such attribute exists. |      * @returns {Promise<string|null>} attribute value of given type and name or null if no such attribute exists. | ||||||
|      */ |      */ | ||||||
|     async getAttributeValue(type, name) { |     async getAttributeValue(type, name) { | ||||||
|         const attr = await this.getAttribute(type, name); |         const attr = await this.getAttribute(type, name); | ||||||
| @@ -387,6 +486,17 @@ class Note extends Entity { | |||||||
|         return attr ? attr.value : null; |         return attr ? attr.value : null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|  |      * @param {string} name - attribute name | ||||||
|  |      * @returns {Promise<string|null>} attribute value of given type and name or null if no such attribute exists. | ||||||
|  |      */ | ||||||
|  |     async getOwnedAttributeValue(type, name) { | ||||||
|  |         const attr = await this.getOwnedAttribute(type, name); | ||||||
|  |  | ||||||
|  |         return attr ? attr.value : null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Based on enabled, attribute is either set or removed. |      * Based on enabled, attribute is either set or removed. | ||||||
|      * |      * | ||||||
| @@ -406,7 +516,7 @@ class Note extends Entity { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Creates given attribute name-value pair if it doesn't exist. |      * Update's given attribute's value or creates it if it doesn't exist | ||||||
|      * |      * | ||||||
|      * @param {string} type - attribute type (label, relation, etc.) |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|      * @param {string} name - attribute name |      * @param {string} name - attribute name | ||||||
| @@ -414,10 +524,18 @@ class Note extends Entity { | |||||||
|      * @returns {Promise<void>} |      * @returns {Promise<void>} | ||||||
|      */ |      */ | ||||||
|     async setAttribute(type, name, value) { |     async setAttribute(type, name, value) { | ||||||
|         const attributes = await this.getOwnedAttributes(); |         const attributes = await this.loadOwnedAttributesToCache(); | ||||||
|         let attr = attributes.find(attr => attr.type === type && (value === undefined || attr.value === value)); |         let attr = attributes.find(attr => attr.type === type && attr.name === name); | ||||||
|  |  | ||||||
|         if (!attr) { |         if (attr) { | ||||||
|  |             if (attr.value !== value) { | ||||||
|  |                 attr.value = value; | ||||||
|  |                 await attr.save(); | ||||||
|  |  | ||||||
|  |                 this.invalidateAttributeCache(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|             attr = new Attribute({ |             attr = new Attribute({ | ||||||
|                 noteId: this.noteId, |                 noteId: this.noteId, | ||||||
|                 type: type, |                 type: type, | ||||||
| @@ -440,10 +558,10 @@ class Note extends Entity { | |||||||
|      * @returns {Promise<void>} |      * @returns {Promise<void>} | ||||||
|      */ |      */ | ||||||
|     async removeAttribute(type, name, value) { |     async removeAttribute(type, name, value) { | ||||||
|         const attributes = await this.getOwnedAttributes(); |         const attributes = await this.loadOwnedAttributesToCache(); | ||||||
|  |  | ||||||
|         for (const attribute of attributes) { |         for (const attribute of attributes) { | ||||||
|             if (attribute.type === type && (value === undefined || value === attribute.value)) { |             if (attribute.type === type && attribute.name === name && (value === undefined || value === attribute.value)) { | ||||||
|                 attribute.isDeleted = true; |                 attribute.isDeleted = true; | ||||||
|                 await attribute.save(); |                 await attribute.save(); | ||||||
|  |  | ||||||
| @@ -452,42 +570,104 @@ class Note extends Entity { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @return {Promise<Attribute>} | ||||||
|  |      */ | ||||||
|  |     async addAttribute(type, name, value = "") { | ||||||
|  |         const attr = new Attribute({ | ||||||
|  |             noteId: this.noteId, | ||||||
|  |             type: type, | ||||||
|  |             name: name, | ||||||
|  |             value: value | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         await attr.save(); | ||||||
|  |  | ||||||
|  |         this.invalidateAttributeCache(); | ||||||
|  |  | ||||||
|  |         return attr; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async addLabel(name, value = "") { | ||||||
|  |         return await this.addAttribute(LABEL, name, value); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async addRelation(name, targetNoteId) { | ||||||
|  |         return await this.addAttribute(RELATION, name, targetNoteId); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - label name |      * @param {string} name - label name | ||||||
|      * @returns {Promise<boolean>} true if label exists (including inherited) |      * @returns {Promise<boolean>} true if label exists (including inherited) | ||||||
|      */ |      */ | ||||||
|     async hasLabel(name) { return await this.hasAttribute(LABEL, name); } |     async hasLabel(name) { return await this.hasAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - label name | ||||||
|  |      * @returns {Promise<boolean>} true if label exists (excluding inherited) | ||||||
|  |      */ | ||||||
|  |     async hasOwnedLabel(name) { return await this.hasOwnedAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - relation name |      * @param {string} name - relation name | ||||||
|      * @returns {Promise<boolean>} true if relation exists (including inherited) |      * @returns {Promise<boolean>} true if relation exists (including inherited) | ||||||
|      */ |      */ | ||||||
|     async hasRelation(name) { return await this.hasAttribute(RELATION, name); } |     async hasRelation(name) { return await this.hasAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - relation name | ||||||
|  |      * @returns {Promise<boolean>} true if relation exists (excluding inherited) | ||||||
|  |      */ | ||||||
|  |     async hasOwnedRelation(name) { return await this.hasOwnedAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - label name |      * @param {string} name - label name | ||||||
|      * @returns {Promise<Attribute>} label if it exists, null otherwise |      * @returns {Promise<Attribute|null>} label if it exists, null otherwise | ||||||
|      */ |      */ | ||||||
|     async getLabel(name) { return await this.getAttribute(LABEL, name); } |     async getLabel(name) { return await this.getAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - label name | ||||||
|  |      * @returns {Promise<Attribute|null>} label if it exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     async getOwnedLabel(name) { return await this.getOwnedAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - relation name |      * @param {string} name - relation name | ||||||
|      * @returns {Promise<Attribute>} relation if it exists, null otherwise |      * @returns {Promise<Attribute|null>} relation if it exists, null otherwise | ||||||
|      */ |      */ | ||||||
|     async getRelation(name) { return await this.getAttribute(RELATION, name); } |     async getRelation(name) { return await this.getAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - relation name | ||||||
|  |      * @returns {Promise<Attribute|null>} relation if it exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     async getOwnedRelation(name) { return await this.getOwnedAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - label name |      * @param {string} name - label name | ||||||
|      * @returns {Promise<string>} label value if label exists, null otherwise |      * @returns {Promise<string|null>} label value if label exists, null otherwise | ||||||
|      */ |      */ | ||||||
|     async getLabelValue(name) { return await this.getAttributeValue(LABEL, name); } |     async getLabelValue(name) { return await this.getAttributeValue(LABEL, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - label name | ||||||
|  |      * @returns {Promise<string|null>} label value if label exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     async getOwnedLabelValue(name) { return await this.getOwnedAttributeValue(LABEL, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - relation name |      * @param {string} name - relation name | ||||||
|      * @returns {Promise<string>} relation value if relation exists, null otherwise |      * @returns {Promise<string|null>} relation value if relation exists, null otherwise | ||||||
|      */ |      */ | ||||||
|     async getRelationValue(name) { return await this.getAttributeValue(RELATION, name); } |     async getRelationValue(name) { return await this.getAttributeValue(RELATION, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - relation name | ||||||
|  |      * @returns {Promise<string|null>} relation value if relation exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     async getOwnedRelationValue(name) { return await this.getOwnedAttributeValue(RELATION, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name |      * @param {string} name | ||||||
|      * @returns {Promise<Note>|null} target note of the relation or null (if target is empty or note was not found) |      * @returns {Promise<Note>|null} target note of the relation or null (if target is empty or note was not found) | ||||||
| @@ -498,6 +678,16 @@ class Note extends Entity { | |||||||
|         return relation ? await repository.getNote(relation.value) : null; |         return relation ? await repository.getNote(relation.value) : null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name | ||||||
|  |      * @returns {Promise<Note>|null} target note of the relation or null (if target is empty or note was not found) | ||||||
|  |      */ | ||||||
|  |     async getOwnedRelationTarget(name) { | ||||||
|  |         const relation = await this.getOwnedRelation(name); | ||||||
|  |  | ||||||
|  |         return relation ? await repository.getNote(relation.value) : null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Based on enabled, label is either set or removed. |      * Based on enabled, label is either set or removed. | ||||||
|      * |      * | ||||||
| @@ -519,7 +709,7 @@ class Note extends Entity { | |||||||
|     async toggleRelation(enabled, name, value) { return await this.toggleAttribute(RELATION, enabled, name, value); } |     async toggleRelation(enabled, name, value) { return await this.toggleAttribute(RELATION, enabled, name, value); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Create label name-value pair if it doesn't exist yet. |      * Update's given label's value or creates it if it doesn't exist | ||||||
|      * |      * | ||||||
|      * @param {string} name - label name |      * @param {string} name - label name | ||||||
|      * @param {string} [value] - label value |      * @param {string} [value] - label value | ||||||
| @@ -528,7 +718,7 @@ class Note extends Entity { | |||||||
|     async setLabel(name, value) { return await this.setAttribute(LABEL, name, value); } |     async setLabel(name, value) { return await this.setAttribute(LABEL, name, value); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Create relation name-value pair if it doesn't exist yet. |      * Update's given relation's value or creates it if it doesn't exist | ||||||
|      * |      * | ||||||
|      * @param {string} name - relation name |      * @param {string} name - relation name | ||||||
|      * @param {string} [value] - relation value (noteId) |      * @param {string} [value] - relation value (noteId) | ||||||
| @@ -641,28 +831,17 @@ class Note extends Entity { | |||||||
|     /** |     /** | ||||||
|      * Get list of links coming out of this note. |      * Get list of links coming out of this note. | ||||||
|      * |      * | ||||||
|      * @returns {Promise<Link[]>} |      * @deprecated - not intended for general use | ||||||
|  |      * @returns {Promise<Attribute[]>} | ||||||
|      */ |      */ | ||||||
|     async getLinks() { |     async getLinks() { | ||||||
|         return await repository.getEntities("SELECT * FROM links WHERE noteId = ? AND isDeleted = 0", [this.noteId]); |         return await repository.getEntities(` | ||||||
|     } |             SELECT *  | ||||||
|  |             FROM attributes  | ||||||
|     /** |             WHERE noteId = ? AND  | ||||||
|      * Get list of links targetting this note. |                   isDeleted = 0 AND | ||||||
|      * |                   type = 'relation' AND | ||||||
|      * @returns {Promise<Link[]>} |                   name IN ('internalLink', 'imageLink', 'relationMapLink', 'includeNoteLink')`, [this.noteId]); | ||||||
|      */ |  | ||||||
|     async getTargetLinks() { |  | ||||||
|         return await repository.getEntities("SELECT * FROM links WHERE targetNoteId = ? AND isDeleted = 0", [this.noteId]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Return all links from this note, including deleted ones. |  | ||||||
|      * |  | ||||||
|      * @returns {Promise<Link[]>} |  | ||||||
|      */ |  | ||||||
|     async getLinksWithDeleted() { |  | ||||||
|         return await repository.getEntities("SELECT * FROM links WHERE noteId = ?", [this.noteId]); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -719,6 +898,36 @@ class Note extends Entity { | |||||||
|                 AND parent_notes.isDeleted = 0`, [this.noteId]); |                 AND parent_notes.isDeleted = 0`, [this.noteId]); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @return {Promise<string[][]>} - array of notePaths (each represented by array of noteIds constituting the particular note path) | ||||||
|  |      */ | ||||||
|  |     async getAllNotePaths() { | ||||||
|  |         if (this.noteId === 'root') { | ||||||
|  |             return [['root']]; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         const notePaths = []; | ||||||
|  |  | ||||||
|  |         for (const parentNote of await this.getParentNotes()) { | ||||||
|  |             for (const parentPath of await parentNote.getAllNotePaths()) { | ||||||
|  |                 parentPath.push(this.noteId); | ||||||
|  |                 notePaths.push(parentPath); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return notePaths; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param ancestorNoteId | ||||||
|  |      * @return {Promise<boolean>} - true if ancestorNoteId occurs in at least one of the note's paths | ||||||
|  |      */ | ||||||
|  |     async isDescendantOfNote(ancestorNoteId) { | ||||||
|  |         const notePaths = await this.getAllNotePaths(); | ||||||
|  |  | ||||||
|  |         return notePaths.some(path => path.includes(ancestorNoteId)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     beforeSaving() { |     beforeSaving() { | ||||||
|         if (!this.isDeleted) { |         if (!this.isDeleted) { | ||||||
|             this.isDeleted = false; |             this.isDeleted = false; | ||||||
| @@ -732,6 +941,10 @@ class Note extends Entity { | |||||||
|             this.utcDateCreated = dateUtils.utcNowDateTime(); |             this.utcDateCreated = dateUtils.utcNowDateTime(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (this.contentLength === undefined) { | ||||||
|  |             this.contentLength = -1; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         super.beforeSaving(); |         super.beforeSaving(); | ||||||
|  |  | ||||||
|         if (this.isChanged) { |         if (this.isChanged) { | ||||||
| @@ -744,7 +957,7 @@ class Note extends Entity { | |||||||
|     updatePojo(pojo) { |     updatePojo(pojo) { | ||||||
|         if (pojo.isProtected) { |         if (pojo.isProtected) { | ||||||
|             if (this.isContentAvailable) { |             if (this.isContentAvailable) { | ||||||
|                 protectedSessionService.encryptNote(pojo); |                 pojo.title = protectedSessionService.encrypt(pojo.title); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 // updating protected note outside of protected session means we will keep original ciphertexts |                 // updating protected note outside of protected session means we will keep original ciphertexts | ||||||
| @@ -754,7 +967,9 @@ class Note extends Entity { | |||||||
|  |  | ||||||
|         delete pojo.isContentAvailable; |         delete pojo.isContentAvailable; | ||||||
|         delete pojo.__attributeCache; |         delete pojo.__attributeCache; | ||||||
|  |         delete pojo.__ownedAttributeCache; | ||||||
|         delete pojo.content; |         delete pojo.content; | ||||||
|  |         /** zero references to contentHash, probably can be removed */ | ||||||
|         delete pojo.contentHash; |         delete pojo.contentHash; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -769,13 +984,13 @@ module.exports = Note;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -31,28 +31,34 @@ | |||||||
| const Entity = require('./entity'); | const Entity = require('./entity'); | ||||||
| const protectedSessionService = require('../services/protected_session'); | const protectedSessionService = require('../services/protected_session'); | ||||||
| const repository = require('../services/repository'); | const repository = require('../services/repository'); | ||||||
|  | const utils = require('../services/utils'); | ||||||
|  | const sql = require('../services/sql'); | ||||||
|  | const dateUtils = require('../services/date_utils'); | ||||||
|  | const syncTableService = require('../services/sync_table'); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * NoteRevision represents snapshot of note's title and content at some point in the past. It's used for seamless note versioning. |  * NoteRevision represents snapshot of note's title and content at some point in the past. It's used for seamless note versioning. | ||||||
|  * |  * | ||||||
|  * @param {string} noteRevisionId |  * @property {string} noteRevisionId | ||||||
|  * @param {string} noteId |  * @property {string} noteId | ||||||
|  * @param {string} type |  * @property {string} type | ||||||
|  * @param {string} mime |  * @property {string} mime | ||||||
|  * @param {string} title |  * @property {string} title | ||||||
|  * @param {string} content |  * @property {int} contentLength | ||||||
|  * @param {string} isProtected |  * @property {boolean} isErased | ||||||
|  * @param {string} dateModifiedFrom |  * @property {boolean} isProtected | ||||||
|  * @param {string} dateModifiedTo |  * @property {string} dateLastEdited | ||||||
|  * @param {string} utcDateModifiedFrom |  * @property {string} dateCreated | ||||||
|  * @param {string} utcDateModifiedTo |  * @property {string} utcDateLastEdited | ||||||
|  |  * @property {string} utcDateCreated | ||||||
|  |  * @property {string} utcDateModified | ||||||
|  * |  * | ||||||
|  * @extends Entity |  * @extends Entity | ||||||
|  */ |  */ | ||||||
| class NoteRevision extends Entity { | class NoteRevision extends Entity { | ||||||
|     static get entityName() { return "note_revisions"; } |     static get entityName() { return "note_revisions"; } | ||||||
|     static get primaryKeyName() { return "noteRevisionId"; } |     static get primaryKeyName() { return "noteRevisionId"; } | ||||||
|     static get hashedProperties() { return ["noteRevisionId", "noteId", "title", "content", "isProtected", "dateModifiedFrom", "dateModifiedTo", "utcDateModifiedFrom", "utcDateModifiedTo"]; } |     static get hashedProperties() { return ["noteRevisionId", "noteId", "title", "contentLength", "isErased", "isProtected", "dateLastEdited", "dateCreated", "utcDateLastEdited", "utcDateCreated", "utcDateModified"]; } | ||||||
|  |  | ||||||
|     constructor(row) { |     constructor(row) { | ||||||
|         super(row); |         super(row); | ||||||
| @@ -60,20 +66,120 @@ class NoteRevision extends Entity { | |||||||
|         this.isProtected = !!this.isProtected; |         this.isProtected = !!this.isProtected; | ||||||
|  |  | ||||||
|         if (this.isProtected) { |         if (this.isProtected) { | ||||||
|             protectedSessionService.decryptNoteRevision(this); |             if (protectedSessionService.isProtectedSessionAvailable()) { | ||||||
|  |                 this.title = protectedSessionService.decryptString(this.title); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 this.title = "[Protected]"; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     async getNote() { |     async getNote() { | ||||||
|         return await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.noteId]); |         return await repository.getNote(this.noteId); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** @returns {boolean} true if the note has string content (not binary) */ | ||||||
|  |     isStringNote() { | ||||||
|  |         return utils.isStringNote(this.type, this.mime); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* | ||||||
|  |      * Note revision content has quite special handling - it's not a separate entity, but a lazily loaded | ||||||
|  |      * part of NoteRevision entity with it's own sync. Reason behind this hybrid design is that | ||||||
|  |      * content can be quite large and it's not necessary to load it / fill memory for any note access even | ||||||
|  |      * if we don't need a content, especially for bulk operations like search. | ||||||
|  |      * | ||||||
|  |      * This is the same approach as is used for Note's content. | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |     /** @returns {Promise<*>} */ | ||||||
|  |     async getContent(silentNotFoundError = false) { | ||||||
|  |         if (this.content === undefined) { | ||||||
|  |             const res = await sql.getRow(`SELECT content, hash FROM note_revision_contents WHERE noteRevisionId = ?`, [this.noteRevisionId]); | ||||||
|  |  | ||||||
|  |             if (!res) { | ||||||
|  |                 if (silentNotFoundError) { | ||||||
|  |                     return undefined; | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     throw new Error("Cannot find note revision content for noteRevisionId=" + this.noteRevisionId); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             this.content = res.content; | ||||||
|  |  | ||||||
|  |             if (this.isProtected) { | ||||||
|  |                 if (protectedSessionService.isProtectedSessionAvailable()) { | ||||||
|  |                     this.content = protectedSessionService.decrypt(this.content); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     this.content = ""; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (this.isStringNote()) { | ||||||
|  |             return this.content === null | ||||||
|  |                 ? "" | ||||||
|  |                 : this.content.toString("UTF-8"); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             return this.content; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** @returns {Promise} */ | ||||||
|  |     async setContent(content) { | ||||||
|  |         // force updating note itself so that utcDateModified is represented correctly even for the content | ||||||
|  |         this.forcedChange = true; | ||||||
|  |         this.contentLength = content === null ? 0 : content.length; | ||||||
|  |         await this.save(); | ||||||
|  |  | ||||||
|  |         this.content = content; | ||||||
|  |  | ||||||
|  |         const pojo = { | ||||||
|  |             noteRevisionId: this.noteRevisionId, | ||||||
|  |             content: content, | ||||||
|  |             utcDateModified: dateUtils.utcNowDateTime(), | ||||||
|  |             hash: utils.hash(this.noteRevisionId + "|" + content) | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         if (this.isProtected) { | ||||||
|  |             if (protectedSessionService.isProtectedSessionAvailable()) { | ||||||
|  |                 pojo.content = protectedSessionService.encrypt(pojo.content); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 throw new Error(`Cannot update content of noteRevisionId=${this.noteRevisionId} since we're out of protected session.`); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         await sql.upsert("note_revision_contents", "noteRevisionId", pojo); | ||||||
|  |  | ||||||
|  |         await syncTableService.addNoteRevisionContentSync(this.noteRevisionId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     beforeSaving() { |     beforeSaving() { | ||||||
|         if (this.isProtected) { |         super.beforeSaving(); | ||||||
|             protectedSessionService.encryptNoteRevision(this); |  | ||||||
|  |         if (this.isChanged) { | ||||||
|  |             this.utcDateModified = dateUtils.utcNowDateTime(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // cannot be static! | ||||||
|  |     updatePojo(pojo) { | ||||||
|  |         if (pojo.isProtected) { | ||||||
|  |             if (protectedSessionService.isProtectedSessionAvailable()) { | ||||||
|  |                 pojo.title = protectedSessionService.encrypt(pojo.title); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 // updating protected note outside of protected session means we will keep original ciphertexts | ||||||
|  |                 delete pojo.title; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         super.beforeSaving(); |         delete pojo.content; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -87,13 +193,13 @@ module.exports = NoteRevision;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -34,11 +34,11 @@ const dateUtils = require('../services/date_utils'); | |||||||
| /** | /** | ||||||
|  * Option represents name-value pair, either directly configurable by the user or some system property. |  * Option represents name-value pair, either directly configurable by the user or some system property. | ||||||
|  * |  * | ||||||
|  * @param {string} name |  * @property {string} name | ||||||
|  * @param {string} value |  * @property {string} value | ||||||
|  * @param {boolean} isSynced |  * @property {boolean} isSynced | ||||||
|  * @param {string} utcDateModified |  * @property {string} utcDateModified | ||||||
|  * @param {string} utcDateCreated |  * @property {string} utcDateCreated | ||||||
|  * |  * | ||||||
|  * @extends Entity |  * @extends Entity | ||||||
|  */ |  */ | ||||||
| @@ -76,13 +76,13 @@ module.exports = Option;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -34,10 +34,10 @@ const dateUtils = require('../services/date_utils'); | |||||||
| /** | /** | ||||||
|  * RecentNote represents recently visited note. |  * RecentNote represents recently visited note. | ||||||
|  * |  * | ||||||
|  * @param {string} noteId |  * @property {string} noteId | ||||||
|  * @param {string} notePath |  * @property {string} notePath | ||||||
|  * @param {boolean} isDeleted |  * @property {boolean} isDeleted | ||||||
|  * @param {string} utcDateModified |  * @property {string} utcDateModified | ||||||
|  * |  * | ||||||
|  * @extends Entity |  * @extends Entity | ||||||
|  */ |  */ | ||||||
| @@ -69,13 +69,13 @@ module.exports = RecentNote;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -102,6 +102,313 @@ | |||||||
|  |  | ||||||
|          |          | ||||||
|                  |                  | ||||||
|  | <h4 class="name" id="CreateNewNoteParams">CreateNewNoteParams</h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <h5>Type:</h5> | ||||||
|  |     <ul> | ||||||
|  |         <li> | ||||||
|  |              | ||||||
|  | <span class="param-type">object</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         </li> | ||||||
|  |     </ul> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|  |     <thead> | ||||||
|  |     <tr> | ||||||
|  |          | ||||||
|  |         <th>Name</th> | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th>Type</th> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th class="last">Description</th> | ||||||
|  |     </tr> | ||||||
|  |     </thead> | ||||||
|  |  | ||||||
|  |     <tbody> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>parentNoteId</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">MANDATORY</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>title</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">MANDATORY</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>content</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  | | | ||||||
|  |  | ||||||
|  | <span class="param-type">buffer</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">MANDATORY</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>type</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">text, code, file, image, search, book, relation-map - MANDATORY</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>mime</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">value is derived from default mimes for type</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>isProtected</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">boolean</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">default is false</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>isExpanded</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">boolean</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">default is false</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>prefix</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">default is empty string</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>notePosition</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">int</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">default is last existing notePosition in a parent + 10</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     </tbody> | ||||||
|  | </table> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="services_backend_script_api.js.html">services/backend_script_api.js</a>, <a href="services_backend_script_api.js.html#line212">line 212</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |                  | ||||||
| <h4 class="name" id="CreateNoteAttribute">CreateNoteAttribute</h4> | <h4 class="name" id="CreateNoteAttribute">CreateNoteAttribute</h4> | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -290,6 +597,194 @@ | |||||||
|  |  | ||||||
|              |              | ||||||
|                  |                  | ||||||
|  | <h4 class="name" id="CreateNoteAttribute">CreateNoteAttribute</h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <h5>Type:</h5> | ||||||
|  |     <ul> | ||||||
|  |         <li> | ||||||
|  |              | ||||||
|  | <span class="param-type">object</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         </li> | ||||||
|  |     </ul> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|  |     <thead> | ||||||
|  |     <tr> | ||||||
|  |          | ||||||
|  |         <th>Name</th> | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th>Type</th> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |         <th>Attributes</th> | ||||||
|  |          | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th class="last">Description</th> | ||||||
|  |     </tr> | ||||||
|  |     </thead> | ||||||
|  |  | ||||||
|  |     <tbody> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>type</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |                 <td class="attributes"> | ||||||
|  |                  | ||||||
|  |  | ||||||
|  |                  | ||||||
|  |                 </td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">attribute type - label, relation etc.</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>name</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |                 <td class="attributes"> | ||||||
|  |                  | ||||||
|  |  | ||||||
|  |                  | ||||||
|  |                 </td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">attribute name</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |                 <td class="name"><code>value</code></td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |                 <td class="attributes"> | ||||||
|  |                  | ||||||
|  |                     <optional><br> | ||||||
|  |                  | ||||||
|  |  | ||||||
|  |                  | ||||||
|  |                 </td> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last">attribute value</td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     </tbody> | ||||||
|  | </table> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="services_backend_script_api.js.html">services/backend_script_api.js</a>, <a href="services_backend_script_api.js.html#line233">line 233</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |                  | ||||||
| <h4 class="name" id="CreateNoteExtraOptions">CreateNoteExtraOptions</h4> | <h4 class="name" id="CreateNoteExtraOptions">CreateNoteExtraOptions</h4> | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -558,7 +1053,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="services_backend_script_api.js.html">services/backend_script_api.js</a>, <a href="services_backend_script_api.js.html#line180">line 180</a> |         <a href="services_backend_script_api.js.html">services/backend_script_api.js</a>, <a href="services_backend_script_api.js.html#line240">line 240</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -588,13 +1083,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -50,13 +50,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -1,12 +1,12 @@ | |||||||
| /*global document */ | /*global document */ | ||||||
| (function() { | (() => { | ||||||
|     var source = document.getElementsByClassName('prettyprint source linenums'); |     const source = document.getElementsByClassName('prettyprint source linenums'); | ||||||
|     var i = 0; |     let i = 0; | ||||||
|     var lineNumber = 0; |     let lineNumber = 0; | ||||||
|     var lineId; |     let lineId; | ||||||
|     var lines; |     let lines; | ||||||
|     var totalLines; |     let totalLines; | ||||||
|     var anchorHash; |     let anchorHash; | ||||||
|  |  | ||||||
|     if (source && source[0]) { |     if (source && source[0]) { | ||||||
|         anchorHash = document.location.hash.substring(1); |         anchorHash = document.location.hash.substring(1); | ||||||
| @@ -15,7 +15,7 @@ | |||||||
|  |  | ||||||
|         for (; i < totalLines; i++) { |         for (; i < totalLines; i++) { | ||||||
|             lineNumber++; |             lineNumber++; | ||||||
|             lineId = 'line' + lineNumber; |             lineId = `line${lineNumber}`; | ||||||
|             lines[i].id = lineId; |             lines[i].id = lineId; | ||||||
|             if (lineId === anchorHash) { |             if (lineId === anchorHash) { | ||||||
|                 lines[i].className += ' selected'; |                 lines[i].className += ' selected'; | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ const repository = require('./repository'); | |||||||
| const axios = require('axios'); | const axios = require('axios'); | ||||||
| const dayjs = require('dayjs'); | const dayjs = require('dayjs'); | ||||||
| const cloningService = require('./cloning'); | const cloningService = require('./cloning'); | ||||||
| const messagingService = require('./messaging'); | const ws = require('./ws.js'); | ||||||
| const appInfo = require('./app_info'); | const appInfo = require('./app_info'); | ||||||
| const searchService = require('./search'); | const searchService = require('./search'); | ||||||
|  |  | ||||||
| @@ -198,6 +198,66 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|      */ |      */ | ||||||
|     this.toggleNoteInParent = cloningService.toggleNoteInParent; |     this.toggleNoteInParent = cloningService.toggleNoteInParent; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @typedef {object} CreateNoteAttribute | ||||||
|  |      * @property {string} type - attribute type - label, relation etc. | ||||||
|  |      * @property {string} name - attribute name | ||||||
|  |      * @property {string} [value] - attribute value | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Create text note. See also createNewNote() for more options. | ||||||
|  |      * | ||||||
|  |      * @param {string} parentNoteId | ||||||
|  |      * @param {string} title | ||||||
|  |      * @param {string} content | ||||||
|  |      * @return {Promise<{note: Note, branch: Branch}>} | ||||||
|  |      */ | ||||||
|  |     this.createTextNote = async (parentNoteId, title, content = '') => await noteService.createNewNote({ | ||||||
|  |         parentNoteId, | ||||||
|  |         title, | ||||||
|  |         content, | ||||||
|  |         type: 'text' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Create data note - data in this context means object serializable to JSON. Created note will be of type 'code' and | ||||||
|  |      * JSON MIME type. See also createNewNote() for more options. | ||||||
|  |      * | ||||||
|  |      * @param {string} parentNoteId | ||||||
|  |      * @param {string} title | ||||||
|  |      * @param {object} content | ||||||
|  |      * @return {Promise<{note: Note, branch: Branch}>} | ||||||
|  |      */ | ||||||
|  |     this.createDataNote = async (parentNoteId, title, content = {}) => await noteService.createNewNote({ | ||||||
|  |         parentNoteId, | ||||||
|  |         title, | ||||||
|  |         content: JSON.stringify(content, null, '\t'), | ||||||
|  |         type: 'code', | ||||||
|  |         mime: 'application/json' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @typedef {object} CreateNewNoteParams | ||||||
|  |      * @property {string} parentNoteId - MANDATORY | ||||||
|  |      * @property {string} title - MANDATORY | ||||||
|  |      * @property {string|buffer} content - MANDATORY | ||||||
|  |      * @property {string} type - text, code, file, image, search, book, relation-map - MANDATORY | ||||||
|  |      * @property {string} mime - value is derived from default mimes for type | ||||||
|  |      * @property {boolean} isProtected - default is false | ||||||
|  |      * @property {boolean} isExpanded - default is false | ||||||
|  |      * @property {string} prefix - default is empty string | ||||||
|  |      * @property {int} notePosition - default is last existing notePosition in a parent + 10 | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @method | ||||||
|  |      * | ||||||
|  |      * @param {CreateNewNoteParams} [params] | ||||||
|  |      * @returns {Promise<{note: Note, branch: Branch}>} object contains newly created entities note and branch | ||||||
|  |      */ | ||||||
|  |     this.createNewNote = noteService.createNewNote; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @typedef {object} CreateNoteAttribute |      * @typedef {object} CreateNoteAttribute | ||||||
|      * @property {string} type - attribute type - label, relation etc. |      * @property {string} type - attribute type - label, relation etc. | ||||||
| @@ -216,6 +276,7 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @method |      * @method | ||||||
|  |      * @deprecated please use createNote() API method instead | ||||||
|      * |      * | ||||||
|      * @param {string} parentNoteId - create new note under this parent |      * @param {string} parentNoteId - create new note under this parent | ||||||
|      * @param {string} title |      * @param {string} title | ||||||
| @@ -223,23 +284,38 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|      * @param {CreateNoteExtraOptions} [extraOptions={}] |      * @param {CreateNoteExtraOptions} [extraOptions={}] | ||||||
|      * @returns {Promise<{note: Note, branch: Branch}>} object contains newly created entities note and branch |      * @returns {Promise<{note: Note, branch: Branch}>} object contains newly created entities note and branch | ||||||
|      */ |      */ | ||||||
|     this.createNote = noteService.createNote; |     this.createNote = async (parentNoteId, title, content = "", extraOptions= {}) => { | ||||||
|  |         extraOptions.parentNoteId = parentNoteId; | ||||||
|  |         extraOptions.title = title; | ||||||
|  |  | ||||||
|     /** |         const parentNote = await repository.getNote(parentNoteId); | ||||||
|      * Creates new note according to given params and force all connected clients to refresh their tree. |  | ||||||
|      * |  | ||||||
|      * @method |  | ||||||
|      * |  | ||||||
|      * @param {string} parentNoteId - create new note under this parent |  | ||||||
|      * @param {string} title |  | ||||||
|      * @param {string} [content=""] |  | ||||||
|      * @param {CreateNoteExtraOptions} [extraOptions={}] |  | ||||||
|      * @returns {Promise<{note: Note, branch: Branch}>} object contains newly created entities note and branch |  | ||||||
|      */ |  | ||||||
|     this.createNoteAndRefresh = async function(parentNoteId, title, content, extraOptions) { |  | ||||||
|         await noteService.createNote(parentNoteId, title, content, extraOptions); |  | ||||||
|  |  | ||||||
|         messagingService.refreshTree(); |         // code note type can be inherited, otherwise text is default | ||||||
|  |         extraOptions.type = parentNote.type === 'code' ? 'code' : 'text'; | ||||||
|  |         extraOptions.mime = parentNote.type === 'code' ? parentNote.mime : 'text/html'; | ||||||
|  |  | ||||||
|  |         if (extraOptions.json) { | ||||||
|  |             extraOptions.content = JSON.stringify(content || {}, null, '\t'); | ||||||
|  |             extraOptions.type = 'code'; | ||||||
|  |             extraOptions.mime = 'application/json'; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             extraOptions.content = content; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         const {note, branch} = await noteService.createNewNote(extraOptions); | ||||||
|  |  | ||||||
|  |         for (const attr of extraOptions.attributes || []) { | ||||||
|  |             await attributeService.createAttribute({ | ||||||
|  |                 noteId: note.noteId, | ||||||
|  |                 type: attr.type, | ||||||
|  |                 name: attr.name, | ||||||
|  |                 value: attr.value, | ||||||
|  |                 isInheritable: !!attr.isInheritable | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return {note, branch}; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -266,6 +342,14 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|      */ |      */ | ||||||
|     this.getDateNote = dateNoteService.getDateNote; |     this.getDateNote = dateNoteService.getDateNote; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Returns today's day note. If such note doesn't exist, it is created. | ||||||
|  |      * | ||||||
|  |      * @method | ||||||
|  |      * @returns {Promise<Note|null>} | ||||||
|  |      */ | ||||||
|  |     this.getTodayNote = dateNoteService.getTodayNote; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns note for the first date of the week of the given date. |      * Returns note for the first date of the week of the given date. | ||||||
|      * |      * | ||||||
| @@ -308,9 +392,10 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|      * This method looks similar to toggleNoteInParent() but differs because we're looking up branch by prefix. |      * This method looks similar to toggleNoteInParent() but differs because we're looking up branch by prefix. | ||||||
|      * |      * | ||||||
|      * @method |      * @method | ||||||
|  |      * @deprecated - this method is pretty confusing and serves specialized purpose only | ||||||
|      * @param {string} noteId |      * @param {string} noteId | ||||||
|      * @param {string} prefix |      * @param {string} prefix | ||||||
|      * @param {string} [parentNoteId] |      * @param {string|null} parentNoteId | ||||||
|      */ |      */ | ||||||
|     this.setNoteToParent = treeService.setNoteToParent; |     this.setNoteToParent = treeService.setNoteToParent; | ||||||
|  |  | ||||||
| @@ -330,12 +415,10 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|     this.sql = sql; |     this.sql = sql; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Trigger tree refresh in all connected clients. This is required when some tree change happens in |      * @method | ||||||
|      * the backend. |      * @deprecated - this is now no-op since all the changes should be gracefully handled per widget | ||||||
|      * |  | ||||||
|      * @returns {Promise<void>} |  | ||||||
|      */ |      */ | ||||||
|     this.refreshTree = messagingService.refreshTree; |     this.refreshTree = () => {}; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version |      * @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version | ||||||
| @@ -343,7 +426,8 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|     this.getAppInfo = () => appInfo |     this.getAppInfo = () => appInfo | ||||||
| } | } | ||||||
|  |  | ||||||
| module.exports = BackendScriptApi;</code></pre> | module.exports = BackendScriptApi; | ||||||
|  | </code></pre> | ||||||
|         </article> |         </article> | ||||||
|     </section> |     </section> | ||||||
|  |  | ||||||
| @@ -353,13 +437,13 @@ module.exports = BackendScriptApi;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Link.html">Link</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="ApiToken.html">ApiToken</a></li><li><a href="Attribute.html">Attribute</a></li><li><a href="BackendScriptApi.html">BackendScriptApi</a></li><li><a href="Branch.html">Branch</a></li><li><a href="Entity.html">Entity</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteRevision.html">NoteRevision</a></li><li><a href="Option.html">Option</a></li><li><a href="RecentNote.html">RecentNote</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -273,7 +273,7 @@ tr > th:last-child { border-right: 1px solid #ddd; } | |||||||
|     margin: 0; |     margin: 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| .prettyprint | .source | ||||||
| { | { | ||||||
|     border: 1px solid #ddd; |     border: 1px solid #ddd; | ||||||
|     width: 80%; |     width: 80%; | ||||||
| @@ -284,7 +284,7 @@ tr > th:last-child { border-right: 1px solid #ddd; } | |||||||
|     width: inherit; |     width: inherit; | ||||||
| } | } | ||||||
|  |  | ||||||
| .prettyprint code | .source code | ||||||
| { | { | ||||||
|     font-size: 100%; |     font-size: 100%; | ||||||
|     line-height: 18px; |     line-height: 18px; | ||||||
|   | |||||||
| @@ -93,7 +93,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line2">line 2</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line3">line 3</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -121,6 +121,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -181,7 +183,65 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line6">line 6</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line11">line 11</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="isDeleted"><span class="type-signature"></span>isDeleted<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line23">line 23</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -239,7 +299,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line17">line 17</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line21">line 21</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -297,7 +357,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line8">line 8</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line13">line 13</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -355,7 +415,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line13">line 13</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line17">line 17</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -413,7 +473,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line11">line 11</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line15">line 15</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -471,7 +531,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line15">line 15</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line19">line 19</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -547,7 +607,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line21">line 21</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line27">line 27</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -570,6 +630,110 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl> | ||||||
|  |     <dt> | ||||||
|  |         Type | ||||||
|  |     </dt> | ||||||
|  |     <dd> | ||||||
|  |          | ||||||
|  | <span class="param-type"><a href="NoteShort.html">NoteShort</a></span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     </dd> | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="getParentNote"><span class="type-signature">(async) </span>getParentNote<span class="signature">()</span><span class="type-signature"> → {<a href="NoteShort.html">NoteShort</a>}</span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line32">line 32</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h5>Returns:</h5> | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|          |          | ||||||
| @@ -647,7 +811,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line26">line 26</a> |         <a href="entities_branch.js.html">entities/branch.js</a>, <a href="entities_branch.js.html#line37">line 37</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -670,6 +834,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <h5>Returns:</h5> | <h5>Returns:</h5> | ||||||
|  |  | ||||||
|          |          | ||||||
| @@ -713,13 +879,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2266
									
								
								docs/frontend_api/KeyboardAction.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2266
									
								
								docs/frontend_api/KeyboardAction.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										280
									
								
								docs/frontend_api/KeyboardActions.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								docs/frontend_api/KeyboardActions.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,280 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="utf-8"> | ||||||
|  |     <title>JSDoc: Class: KeyboardActions</title> | ||||||
|  |  | ||||||
|  |     <script src="scripts/prettify/prettify.js"> </script> | ||||||
|  |     <script src="scripts/prettify/lang-css.js"> </script> | ||||||
|  |     <!--[if lt IE 9]> | ||||||
|  |       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | ||||||
|  |     <![endif]--> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  | <div id="main"> | ||||||
|  |  | ||||||
|  |     <h1 class="page-title">Class: KeyboardActions</h1> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <section> | ||||||
|  |  | ||||||
|  | <header> | ||||||
|  |      | ||||||
|  |         <h2><span class="attribs"><span class="type-signature"></span></span>KeyboardActions<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|  |          | ||||||
|  |             <div class="class-description">blaa vlaa</div> | ||||||
|  |          | ||||||
|  |      | ||||||
|  | </header> | ||||||
|  |  | ||||||
|  | <article> | ||||||
|  |     <div class="container-overview"> | ||||||
|  |      | ||||||
|  |          | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h2>Constructor</h2> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="KeyboardActions"><span class="type-signature"></span>new KeyboardActions<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="services_keyboard_actions.js.html">services/keyboard_action.js</a>, <a href="services_keyboard_actions.js.html#line5">line 5</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |         <h3 class="subsection-title">Members</h3> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="JUMP_TO"><span class="type-signature"></span>JUMP_TO<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|  |     <thead> | ||||||
|  |     <tr> | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th>Type</th> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th class="last">Description</th> | ||||||
|  |     </tr> | ||||||
|  |     </thead> | ||||||
|  |  | ||||||
|  |     <tbody> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last"></td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     </tbody> | ||||||
|  | </table> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="services_keyboard_actions.js.html">services/keyboard_action.js</a>, <a href="services_keyboard_actions.js.html#line7">line 7</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </article> | ||||||
|  |  | ||||||
|  | </section> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <nav> | ||||||
|  |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="KeyboardActions.html">KeyboardActions</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
|  | </nav> | ||||||
|  |  | ||||||
|  | <br class="clear"> | ||||||
|  |  | ||||||
|  | <footer> | ||||||
|  |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.3</a> | ||||||
|  | </footer> | ||||||
|  |  | ||||||
|  | <script> prettyPrint(); </script> | ||||||
|  | <script src="scripts/linenumber.js"> </script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										522
									
								
								docs/frontend_api/NoteComplement.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										522
									
								
								docs/frontend_api/NoteComplement.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,522 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="utf-8"> | ||||||
|  |     <title>JSDoc: Class: NoteComplement</title> | ||||||
|  |  | ||||||
|  |     <script src="scripts/prettify/prettify.js"> </script> | ||||||
|  |     <script src="scripts/prettify/lang-css.js"> </script> | ||||||
|  |     <!--[if lt IE 9]> | ||||||
|  |       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | ||||||
|  |     <![endif]--> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  | <div id="main"> | ||||||
|  |  | ||||||
|  |     <h1 class="page-title">Class: NoteComplement</h1> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <section> | ||||||
|  |  | ||||||
|  | <header> | ||||||
|  |      | ||||||
|  |         <h2><span class="attribs"><span class="type-signature"></span></span>NoteComplement<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|  |          | ||||||
|  |             <div class="class-description">Complements the NoteShort with the main note content and other extra attributes</div> | ||||||
|  |          | ||||||
|  |      | ||||||
|  | </header> | ||||||
|  |  | ||||||
|  | <article> | ||||||
|  |     <div class="container-overview"> | ||||||
|  |      | ||||||
|  |          | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h2>Constructor</h2> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="NoteComplement"><span class="type-signature"></span>new NoteComplement<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line5">line 5</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |         <h3 class="subsection-title">Members</h3> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="content"><span class="type-signature"></span>content<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line10">line 10</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="dateCreated"><span class="type-signature"></span>dateCreated<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line13">line 13</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="dateModified"><span class="type-signature"></span>dateModified<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line16">line 16</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="noteId"><span class="type-signature"></span>noteId<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line7">line 7</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="utcDateCreated"><span class="type-signature"></span>utcDateCreated<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line19">line 19</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="utcDateModified"><span class="type-signature"></span>utcDateModified<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="entities_note_complement.js.html">entities/note_complement.js</a>, <a href="entities_note_complement.js.html#line22">line 22</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </article> | ||||||
|  |  | ||||||
|  | </section> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <nav> | ||||||
|  |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
|  | </nav> | ||||||
|  |  | ||||||
|  | <br class="clear"> | ||||||
|  |  | ||||||
|  | <footer> | ||||||
|  |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
|  | </footer> | ||||||
|  |  | ||||||
|  | <script> prettyPrint(); </script> | ||||||
|  | <script src="scripts/linenumber.js"> </script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
| @@ -93,7 +93,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="entities_note_full.js.html">entities/note_full.js</a>, <a href="entities_note_full.js.html#line6">line 6</a> |         <a href="entities_note_full.js.html">entities/note_full.js</a>, <a href="entities_note_full.js.html#line7">line 7</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -121,6 +121,8 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|      |      | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
| @@ -453,7 +455,7 @@ | |||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.3</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -29,6 +29,11 @@ | |||||||
|             <pre class="prettyprint source linenums"><code>class Attribute { |             <pre class="prettyprint source linenums"><code>class Attribute { | ||||||
|     constructor(treeCache, row) { |     constructor(treeCache, row) { | ||||||
|         this.treeCache = treeCache; |         this.treeCache = treeCache; | ||||||
|  |  | ||||||
|  |         this.update(row); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     update(row) { | ||||||
|         /** @param {string} attributeId */ |         /** @param {string} attributeId */ | ||||||
|         this.attributeId = row.attributeId; |         this.attributeId = row.attributeId; | ||||||
|         /** @param {string} noteId */ |         /** @param {string} noteId */ | ||||||
| @@ -43,12 +48,6 @@ | |||||||
|         this.position = row.position; |         this.position = row.position; | ||||||
|         /** @param {boolean} isInheritable */ |         /** @param {boolean} isInheritable */ | ||||||
|         this.isInheritable = row.isInheritable; |         this.isInheritable = row.isInheritable; | ||||||
|         /** @param {boolean} isDeleted */ |  | ||||||
|         this.isDeleted = row.isDeleted; |  | ||||||
|         /** @param {string} utcDateCreated */ |  | ||||||
|         this.utcDateCreated = row.utcDateCreated; |  | ||||||
|         /** @param {string} utcDateModified */ |  | ||||||
|         this.utcDateModified = row.utcDateModified; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {NoteShort} */ |     /** @returns {NoteShort} */ | ||||||
| @@ -56,8 +55,17 @@ | |||||||
|         return await this.treeCache.getNote(this.noteId); |         return await this.treeCache.getNote(this.noteId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     get jsonValue() { | ||||||
|  |         try { | ||||||
|  |             return JSON.parse(this.value); | ||||||
|  |         } | ||||||
|  |         catch (e) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     get toString() { |     get toString() { | ||||||
|         return `Attribute(attributeId=${this.attributeId}, type=${this.type}, name=${this.name})`; |         return `Attribute(attributeId=${this.attributeId}, type=${this.type}, name=${this.name}, value=${this.value})`; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -71,13 +79,13 @@ export default Attribute;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -30,11 +30,15 @@ | |||||||
| class Branch { | class Branch { | ||||||
|     constructor(treeCache, row) { |     constructor(treeCache, row) { | ||||||
|         this.treeCache = treeCache; |         this.treeCache = treeCache; | ||||||
|  |  | ||||||
|  |         this.update(row); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     update(row) { | ||||||
|         /** @param {string} primary key */ |         /** @param {string} primary key */ | ||||||
|         this.branchId = row.branchId; |         this.branchId = row.branchId; | ||||||
|         /** @param {string} */ |         /** @param {string} */ | ||||||
|         this.noteId = row.noteId; |         this.noteId = row.noteId; | ||||||
|         this.note = null; |  | ||||||
|         /** @param {string} */ |         /** @param {string} */ | ||||||
|         this.parentNoteId = row.parentNoteId; |         this.parentNoteId = row.parentNoteId; | ||||||
|         /** @param {int} */ |         /** @param {int} */ | ||||||
| @@ -43,11 +47,18 @@ class Branch { | |||||||
|         this.prefix = row.prefix; |         this.prefix = row.prefix; | ||||||
|         /** @param {boolean} */ |         /** @param {boolean} */ | ||||||
|         this.isExpanded = !!row.isExpanded; |         this.isExpanded = !!row.isExpanded; | ||||||
|  |         /** @param {boolean} */ | ||||||
|  |         this.isDeleted = !!row.isDeleted; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {NoteShort} */ |     /** @returns {NoteShort} */ | ||||||
|     async getNote() { |     async getNote() { | ||||||
|         return await this.treeCache.getNote(this.noteId); |         return this.treeCache.getNote(this.noteId); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** @returns {NoteShort} */ | ||||||
|  |     async getParentNote() { | ||||||
|  |         return this.treeCache.getNote(this.parentNoteId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {boolean} true if it's top level, meaning its parent is root note */ |     /** @returns {boolean} true if it's top level, meaning its parent is root note */ | ||||||
| @@ -70,13 +81,13 @@ export default Branch;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
							
								
								
									
										76
									
								
								docs/frontend_api/entities_note_complement.js.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								docs/frontend_api/entities_note_complement.js.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="utf-8"> | ||||||
|  |     <title>JSDoc: Source: entities/note_complement.js</title> | ||||||
|  |  | ||||||
|  |     <script src="scripts/prettify/prettify.js"> </script> | ||||||
|  |     <script src="scripts/prettify/lang-css.js"> </script> | ||||||
|  |     <!--[if lt IE 9]> | ||||||
|  |       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | ||||||
|  |     <![endif]--> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  | <div id="main"> | ||||||
|  |  | ||||||
|  |     <h1 class="page-title">Source: entities/note_complement.js</h1> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <section> | ||||||
|  |         <article> | ||||||
|  |             <pre class="prettyprint source linenums"><code>/** | ||||||
|  |  * Complements the NoteShort with the main note content and other extra attributes | ||||||
|  |  */ | ||||||
|  | class NoteComplement { | ||||||
|  |     constructor(row) { | ||||||
|  |         /** @param {string} */ | ||||||
|  |         this.noteId = row.noteId; | ||||||
|  |  | ||||||
|  |         /** @param {string} */ | ||||||
|  |         this.content = row.content; | ||||||
|  |  | ||||||
|  |         /** @param {string} */ | ||||||
|  |         this.dateCreated = row.dateCreated; | ||||||
|  |  | ||||||
|  |         /** @param {string} */ | ||||||
|  |         this.dateModified = row.dateModified; | ||||||
|  |  | ||||||
|  |         /** @param {string} */ | ||||||
|  |         this.utcDateCreated = row.utcDateCreated; | ||||||
|  |  | ||||||
|  |         /** @param {string} */ | ||||||
|  |         this.utcDateModified = row.utcDateModified; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export default NoteComplement;</code></pre> | ||||||
|  |         </article> | ||||||
|  |     </section> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <nav> | ||||||
|  |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
|  | </nav> | ||||||
|  |  | ||||||
|  | <br class="clear"> | ||||||
|  |  | ||||||
|  | <footer> | ||||||
|  |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
|  | </footer> | ||||||
|  |  | ||||||
|  | <script> prettyPrint(); </script> | ||||||
|  | <script src="scripts/linenumber.js"> </script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
| @@ -32,8 +32,8 @@ | |||||||
|  * Represents full note, specifically including note's content. |  * Represents full note, specifically including note's content. | ||||||
|  */ |  */ | ||||||
| class NoteFull extends NoteShort { | class NoteFull extends NoteShort { | ||||||
|     constructor(treeCache, row) { |     constructor(treeCache, row, noteShort) { | ||||||
|         super(treeCache, row); |         super(treeCache, row, []); | ||||||
|  |  | ||||||
|         /** @param {string} */ |         /** @param {string} */ | ||||||
|         this.content = row.content; |         this.content = row.content; | ||||||
| @@ -49,6 +49,12 @@ class NoteFull extends NoteShort { | |||||||
|  |  | ||||||
|         /** @param {string} */ |         /** @param {string} */ | ||||||
|         this.utcDateModified = row.utcDateModified; |         this.utcDateModified = row.utcDateModified; | ||||||
|  |  | ||||||
|  |         /* ugly */ | ||||||
|  |         this.parents = noteShort.parents; | ||||||
|  |         this.parentToBranch = noteShort.parentToBranch; | ||||||
|  |         this.children = noteShort.children; | ||||||
|  |         this.childToBranch = noteShort.childToBranch; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -68,7 +74,7 @@ export default NoteFull;</code></pre> | |||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.3</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -27,6 +27,7 @@ | |||||||
|     <section> |     <section> | ||||||
|         <article> |         <article> | ||||||
|             <pre class="prettyprint source linenums"><code>import server from '../services/server.js'; |             <pre class="prettyprint source linenums"><code>import server from '../services/server.js'; | ||||||
|  | import Attribute from './attribute.js'; | ||||||
|  |  | ||||||
| const LABEL = 'label'; | const LABEL = 'label'; | ||||||
| const LABEL_DEFINITION = 'label-definition'; | const LABEL_DEFINITION = 'label-definition'; | ||||||
| @@ -35,24 +36,74 @@ const RELATION_DEFINITION = 'relation-definition'; | |||||||
|  |  | ||||||
| /** | /** | ||||||
|  * This note's representation is used in note tree and is kept in TreeCache. |  * This note's representation is used in note tree and is kept in TreeCache. | ||||||
|  * Its notable omission is the note content. |  | ||||||
|  */ |  */ | ||||||
| class NoteShort { | class NoteShort { | ||||||
|  |     /** | ||||||
|  |      * @param {TreeCache} treeCache | ||||||
|  |      * @param {Object.<string, Object>} row | ||||||
|  |      */ | ||||||
|     constructor(treeCache, row) { |     constructor(treeCache, row) { | ||||||
|         this.treeCache = treeCache; |         this.treeCache = treeCache; | ||||||
|  |  | ||||||
|  |         /** @type {string[]} */ | ||||||
|  |         this.attributes = []; | ||||||
|  |  | ||||||
|  |         /** @type {string[]} */ | ||||||
|  |         this.targetRelations = []; | ||||||
|  |  | ||||||
|  |         /** @type {string[]} */ | ||||||
|  |         this.parents = []; | ||||||
|  |         /** @type {string[]} */ | ||||||
|  |         this.children = []; | ||||||
|  |  | ||||||
|  |         /** @type {Object.<string, string>} */ | ||||||
|  |         this.parentToBranch = {}; | ||||||
|  |  | ||||||
|  |         /** @type {Object.<string, string>} */ | ||||||
|  |         this.childToBranch = {}; | ||||||
|  |  | ||||||
|  |         this.update(row); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     update(row) { | ||||||
|         /** @param {string} */ |         /** @param {string} */ | ||||||
|         this.noteId = row.noteId; |         this.noteId = row.noteId; | ||||||
|         /** @param {string} */ |         /** @param {string} */ | ||||||
|         this.title = row.title; |         this.title = row.title; | ||||||
|  |         /** @param {int} */ | ||||||
|  |         this.contentLength = row.contentLength; | ||||||
|         /** @param {boolean} */ |         /** @param {boolean} */ | ||||||
|         this.isProtected = row.isProtected; |         this.isProtected = !!row.isProtected; | ||||||
|         /** @param {string} one of 'text', 'code', 'file' or 'render' */ |         /** @param {string} one of 'text', 'code', 'file' or 'render' */ | ||||||
|         this.type = row.type; |         this.type = row.type; | ||||||
|         /** @param {string} content-type, e.g. "application/json" */ |         /** @param {string} content-type, e.g. "application/json" */ | ||||||
|         this.mime = row.mime; |         this.mime = row.mime; | ||||||
|         /** @param {boolean} */ |         /** @param {boolean} */ | ||||||
|         this.archived = row.archived; |         this.isDeleted = row.isDeleted; | ||||||
|         this.cssClass = row.cssClass; |     } | ||||||
|  |  | ||||||
|  |     addParent(parentNoteId, branchId) { | ||||||
|  |         if (!this.parents.includes(parentNoteId)) { | ||||||
|  |             this.parents.push(parentNoteId); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         this.parentToBranch[parentNoteId] = branchId; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     addChild(childNoteId, branchId) { | ||||||
|  |         if (!this.children.includes(childNoteId)) { | ||||||
|  |             this.children.push(childNoteId); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         this.childToBranch[childNoteId] = branchId; | ||||||
|  |  | ||||||
|  |         const branchIdPos = {}; | ||||||
|  |  | ||||||
|  |         for (const branchId of Object.values(this.childToBranch)) { | ||||||
|  |             branchIdPos[branchId] = this.treeCache.getBranch(branchId).notePosition; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         this.children.sort((a, b) => branchIdPos[this.childToBranch[a]] < branchIdPos[this.childToBranch[b]] ? -1 : 1); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {boolean} */ |     /** @returns {boolean} */ | ||||||
| @@ -60,176 +111,341 @@ class NoteShort { | |||||||
|         return this.mime === "application/json"; |         return this.mime === "application/json"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Promise<Branch[]>} */ |     async getContent() { | ||||||
|     async getBranches() { |         // we're not caching content since these objects are in treeCache and as such pretty long lived | ||||||
|         const branchIds = this.treeCache.parents[this.noteId].map( |         const note = await server.get("notes/" + this.noteId); | ||||||
|             parentNoteId => this.treeCache.getBranchIdByChildParent(this.noteId, parentNoteId)); |  | ||||||
|  |         return note.content; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async getJsonContent() { | ||||||
|  |         const content = await this.getContent(); | ||||||
|  |  | ||||||
|  |         try { | ||||||
|  |             return JSON.parse(content); | ||||||
|  |         } | ||||||
|  |         catch (e) { | ||||||
|  |             console.log(`Cannot parse content of note ${this.noteId}: `, e.message); | ||||||
|  |  | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** @returns {string[]} */ | ||||||
|  |     getBranchIds() { | ||||||
|  |         return Object.values(this.parentToBranch); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** @returns {Branch[]} */ | ||||||
|  |     getBranches() { | ||||||
|  |         const branchIds = Object.values(this.parentToBranch); | ||||||
|  |  | ||||||
|         return this.treeCache.getBranches(branchIds); |         return this.treeCache.getBranches(branchIds); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {boolean} */ |     /** @returns {boolean} */ | ||||||
|     hasChildren() { |     hasChildren() { | ||||||
|         return this.treeCache.children[this.noteId] |         return this.children.length > 0; | ||||||
|             && this.treeCache.children[this.noteId].length > 0; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Promise<Branch[]>} */ |     /** @returns {Branch[]} */ | ||||||
|     async getChildBranches() { |     getChildBranches() { | ||||||
|         if (!this.treeCache.children[this.noteId]) { |         // don't use Object.values() to guarantee order | ||||||
|             return []; |         const branchIds = this.children.map(childNoteId => this.childToBranch[childNoteId]); | ||||||
|         } |  | ||||||
|  |  | ||||||
|         const branchIds = this.treeCache.children[this.noteId].map( |         return this.treeCache.getBranches(branchIds); | ||||||
|             childNoteId => this.treeCache.getBranchIdByChildParent(childNoteId, this.noteId)); |  | ||||||
|  |  | ||||||
|         return await this.treeCache.getBranches(branchIds); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {string[]} */ |     /** @returns {string[]} */ | ||||||
|     getParentNoteIds() { |     getParentNoteIds() { | ||||||
|         return this.treeCache.parents[this.noteId] || []; |         return this.parents; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Promise<NoteShort[]>} */ |     /** @returns {NoteShort[]} */ | ||||||
|     async getParentNotes() { |     getParentNotes() { | ||||||
|         return await this.treeCache.getNotes(this.getParentNoteIds()); |         return this.treeCache.getNotesFromCache(this.parents); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {string[]} */ |     /** @returns {string[]} */ | ||||||
|     getChildNoteIds() { |     getChildNoteIds() { | ||||||
|         return this.treeCache.children[this.noteId] || []; |         return this.children; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @returns {Promise<NoteShort[]>} */ |     /** @returns {Promise<NoteShort[]>} */ | ||||||
|     async getChildNotes() { |     async getChildNotes() { | ||||||
|         return await this.treeCache.getNotes(this.getChildNoteIds()); |         return await this.treeCache.getNotes(this.children); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} [name] - attribute name to filter |      * @param {string} [type] - (optional) attribute type to filter | ||||||
|      * @returns {Promise<Attribute[]>} |      * @param {string} [name] - (optional) attribute name to filter | ||||||
|  |      * @returns {Attribute[]} all note's attributes, including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getAttributes(name) { |     getOwnedAttributes(type, name) { | ||||||
|         if (!this.attributeCache) { |         const attrs = this.attributes | ||||||
|             this.attributeCache = await server.get('notes/' + this.noteId + '/attributes'); |             .map(attributeId => this.treeCache.attributes[attributeId]) | ||||||
|  |             .filter(attr => !!attr); | ||||||
|  |  | ||||||
|  |         return this.__filterAttrs(attrs, type, name) | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} [type] - (optional) attribute type to filter | ||||||
|  |      * @param {string} [name] - (optional) attribute name to filter | ||||||
|  |      * @returns {Attribute[]} all note's attributes, including inherited ones | ||||||
|  |      */ | ||||||
|  |     getAttributes(type, name) { | ||||||
|  |         const ownedAttributes = this.getOwnedAttributes(); | ||||||
|  |  | ||||||
|  |         const attrArrs = [ | ||||||
|  |             ownedAttributes | ||||||
|  |         ]; | ||||||
|  |  | ||||||
|  |         for (const templateAttr of ownedAttributes.filter(oa => oa.type === 'relation' && oa.name === 'template')) { | ||||||
|  |             const templateNote = this.treeCache.getNoteFromCache(templateAttr.value); | ||||||
|  |  | ||||||
|  |             if (templateNote) { | ||||||
|  |                 attrArrs.push(templateNote.getAttributes()); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (name) { |         if (this.noteId !== 'root') { | ||||||
|             return this.attributeCache.filter(attr => attr.name === name); |             for (const parentNote of this.getParentNotes()) { | ||||||
|  |                 // these virtual parent-child relationships are also loaded into frontend tree cache | ||||||
|  |                 if (parentNote.type !== 'search') { | ||||||
|  |                     attrArrs.push(parentNote.getInheritableAttributes()); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|         else { |  | ||||||
|             return this.attributeCache; |         const attributes = attrArrs.flat(); | ||||||
|  |  | ||||||
|  |         return this.__filterAttrs(attributes, type, name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     __filterAttrs(attributes, type, name) { | ||||||
|  |         if (type && name) { | ||||||
|  |             return attributes.filter(attr => attr.type === type && attr.name === name); | ||||||
|  |         } else if (type) { | ||||||
|  |             return attributes.filter(attr => attr.type === type); | ||||||
|  |         } else if (name) { | ||||||
|  |             return attributes.filter(attr => attr.name === name); | ||||||
|  |         } else { | ||||||
|  |             return attributes; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     getInheritableAttributes() { | ||||||
|  |         const attrs = this.getAttributes(); | ||||||
|  |  | ||||||
|  |         return attrs.filter(attr => attr.isInheritable); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} [name] - label name to filter |      * @param {string} [name] - label name to filter | ||||||
|      * @returns {Promise<Attribute[]>} all note's labels (attributes with type label), including inherited ones |      * @returns {Attribute[]} all note's labels (attributes with type label), including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getLabels(name) { |     getOwnedLabels(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === LABEL); |         return this.getOwnedAttributes(LABEL, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} [name] - label name to filter |      * @param {string} [name] - label name to filter | ||||||
|      * @returns {Promise<Attribute[]>} all note's label definitions, including inherited ones |      * @returns {Attribute[]} all note's labels (attributes with type label), including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getLabelDefinitions(name) { |     getLabels(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === LABEL_DEFINITION); |         return this.getAttributes(LABEL, name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} [name] - label name to filter | ||||||
|  |      * @returns {Attribute[]} all note's label definitions, including inherited ones | ||||||
|  |      */ | ||||||
|  |     getLabelDefinitions(name) { | ||||||
|  |         return this.getAttributes(LABEL_DEFINITION, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} [name] - relation name to filter |      * @param {string} [name] - relation name to filter | ||||||
|      * @returns {Promise<Attribute[]>} all note's relations (attributes with type relation), including inherited ones |      * @returns {Attribute[]} all note's relations (attributes with type relation), including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getRelations(name) { |     getOwnedRelations(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === RELATION); |         return this.getOwnedAttributes(RELATION, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} [name] - relation name to filter |      * @param {string} [name] - relation name to filter | ||||||
|      * @returns {Promise<Attribute[]>} all note's relation definitions including inherited ones |      * @returns {Attribute[]} all note's relations (attributes with type relation), including inherited ones | ||||||
|      */ |      */ | ||||||
|     async getRelationDefinitions(name) { |     getRelations(name) { | ||||||
|         return (await this.getAttributes(name)).filter(attr => attr.type === RELATION_DEFINITION); |         return this.getAttributes(RELATION, name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} [name] - relation name to filter | ||||||
|  |      * @returns {Attribute[]} all note's relation definitions including inherited ones | ||||||
|  |      */ | ||||||
|  |     getRelationDefinitions(name) { | ||||||
|  |         return this.getAttributes(RELATION_DEFINITION, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} type - attribute type (label, relation, etc.) |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|      * @param {string} name - attribute name |      * @param {string} name - attribute name | ||||||
|      * @returns {Promise<boolean>} true if note has an attribute with given type and name (including inherited) |      * @returns {boolean} true if note has an attribute with given type and name (including inherited) | ||||||
|      */ |      */ | ||||||
|     async hasAttribute(type, name) { |     hasAttribute(type, name) { | ||||||
|         return !!await this.getAttribute(type, name); |         return !!this.getAttribute(type, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} type - attribute type (label, relation, etc.) |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|      * @param {string} name - attribute name |      * @param {string} name - attribute name | ||||||
|      * @returns {Promise<Attribute>} attribute of given type and name. If there's more such attributes, first is  returned. Returns null if there's no such attribute belonging to this note. |      * @returns {boolean} true if note has an attribute with given type and name (including inherited) | ||||||
|      */ |      */ | ||||||
|     async getAttribute(type, name) { |     hasOwnedAttribute(type, name) { | ||||||
|         const attributes = await this.getAttributes(); |         return !!this.getOwnedAttribute(type, name); | ||||||
|  |  | ||||||
|         return attributes.find(attr => attr.type === type && attr.name === name); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} type - attribute type (label, relation, etc.) |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|      * @param {string} name - attribute name |      * @param {string} name - attribute name | ||||||
|      * @returns {Promise<string>} attribute value of given type and name or null if no such attribute exists. |      * @returns {Attribute} attribute of given type and name. If there's more such attributes, first is  returned. Returns null if there's no such attribute belonging to this note. | ||||||
|      */ |      */ | ||||||
|     async getAttributeValue(type, name) { |     getOwnedAttribute(type, name) { | ||||||
|         const attr = await this.getAttribute(type, name); |         const attributes = this.getOwnedAttributes(type, name); | ||||||
|  |  | ||||||
|  |         return attributes.length > 0 ? attributes[0] : 0; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|  |      * @param {string} name - attribute name | ||||||
|  |      * @returns {Attribute} attribute of given type and name. If there's more such attributes, first is  returned. Returns null if there's no such attribute belonging to this note. | ||||||
|  |      */ | ||||||
|  |     getAttribute(type, name) { | ||||||
|  |         const attributes = this.getAttributes(type, name); | ||||||
|  |  | ||||||
|  |         return attributes.length > 0 ? attributes[0] : 0; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|  |      * @param {string} name - attribute name | ||||||
|  |      * @returns {string} attribute value of given type and name or null if no such attribute exists. | ||||||
|  |      */ | ||||||
|  |     getOwnedAttributeValue(type, name) { | ||||||
|  |         const attr = this.getOwnedAttribute(type, name); | ||||||
|  |  | ||||||
|  |         return attr ? attr.value : null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} type - attribute type (label, relation, etc.) | ||||||
|  |      * @param {string} name - attribute name | ||||||
|  |      * @returns {string} attribute value of given type and name or null if no such attribute exists. | ||||||
|  |      */ | ||||||
|  |     getAttributeValue(type, name) { | ||||||
|  |         const attr = this.getAttribute(type, name); | ||||||
|  |  | ||||||
|         return attr ? attr.value : null; |         return attr ? attr.value : null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - label name |      * @param {string} name - label name | ||||||
|      * @returns {Promise<boolean>} true if label exists (including inherited) |      * @returns {boolean} true if label exists (excluding inherited) | ||||||
|      */ |      */ | ||||||
|     async hasLabel(name) { return await this.hasAttribute(LABEL, name); } |     hasOwnedLabel(name) { return this.hasOwnedAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @param {string} name - relation name |  | ||||||
|      * @returns {Promise<boolean>} true if relation exists (including inherited) |  | ||||||
|      */ |  | ||||||
|     async hasRelation(name) { return await this.hasAttribute(RELATION, name); } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - label name |      * @param {string} name - label name | ||||||
|      * @returns {Promise<Attribute>} label if it exists, null otherwise |      * @returns {boolean} true if label exists (including inherited) | ||||||
|      */ |      */ | ||||||
|     async getLabel(name) { return await this.getAttribute(LABEL, name); } |     hasLabel(name) { return this.hasAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - relation name |      * @param {string} name - relation name | ||||||
|      * @returns {Promise<Attribute>} relation if it exists, null otherwise |      * @returns {boolean} true if relation exists (excluding inherited) | ||||||
|      */ |      */ | ||||||
|     async getRelation(name) { return await this.getAttribute(RELATION, name); } |     hasOwnedRelation(name) { return this.hasOwnedAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - relation name | ||||||
|  |      * @returns {boolean} true if relation exists (including inherited) | ||||||
|  |      */ | ||||||
|  |     hasRelation(name) { return this.hasAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - label name |      * @param {string} name - label name | ||||||
|      * @returns {Promise<string>} label value if label exists, null otherwise |      * @returns {Attribute} label if it exists, null otherwise | ||||||
|      */ |      */ | ||||||
|     async getLabelValue(name) { return await this.getAttributeValue(LABEL, name); } |     getOwnedLabel(name) { return this.getOwnedAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - label name | ||||||
|  |      * @returns {Attribute} label if it exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     getLabel(name) { return this.getAttribute(LABEL, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name - relation name |      * @param {string} name - relation name | ||||||
|      * @returns {Promise<string>} relation value if relation exists, null otherwise |      * @returns {Attribute} relation if it exists, null otherwise | ||||||
|      */ |      */ | ||||||
|     async getRelationValue(name) { return await this.getAttributeValue(RELATION, name); } |     getOwnedRelation(name) { return this.getOwnedAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - relation name | ||||||
|  |      * @returns {Attribute} relation if it exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     getRelation(name) { return this.getAttribute(RELATION, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - label name | ||||||
|  |      * @returns {string} label value if label exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     getOwnedLabelValue(name) { return this.getOwnedAttributeValue(LABEL, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - label name | ||||||
|  |      * @returns {string} label value if label exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     getLabelValue(name) { return this.getAttributeValue(LABEL, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - relation name | ||||||
|  |      * @returns {string} relation value if relation exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     getOwnedRelationValue(name) { return this.getOwnedAttributeValue(RELATION, name); } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} name - relation name | ||||||
|  |      * @returns {string} relation value if relation exists, null otherwise | ||||||
|  |      */ | ||||||
|  |     getRelationValue(name) { return this.getAttributeValue(RELATION, name); } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} name |      * @param {string} name | ||||||
|      * @returns {Promise<Note>|null} target note of the relation or null (if target is empty or note was not found) |      * @returns {Promise<NoteShort>|null} target note of the relation or null (if target is empty or note was not found) | ||||||
|      */ |      */ | ||||||
|     async getRelationTarget(name) { |     async getRelationTarget(name) { | ||||||
|         const relation = await this.getRelation(name); |         const targets = await this.getRelationTargets(name); | ||||||
|  |  | ||||||
|         return relation ? await repository.getNote(relation.value) : null; |         return targets.length > 0 ? targets[0] : null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @param {string} [name] - relation name to filter | ||||||
|  |      * @returns {Promise<NoteShort[]>} | ||||||
|  |      */ | ||||||
|  |     async getRelationTargets(name) { | ||||||
|  |         const relations = this.getRelations(name); | ||||||
|  |         const targets = []; | ||||||
|  |  | ||||||
|  |         for (const relation of relations) { | ||||||
|  |             targets.push(await this.treeCache.getNote(relation.value)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return targets; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -237,7 +453,17 @@ class NoteShort { | |||||||
|      * Cache is note instance scoped. |      * Cache is note instance scoped. | ||||||
|      */ |      */ | ||||||
|     invalidateAttributeCache() { |     invalidateAttributeCache() { | ||||||
|         this.attributeCache = null; |         this.__attributeCache = null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Get relations which target this note | ||||||
|  |      * | ||||||
|  |      * @returns {Attribute[]} | ||||||
|  |      */ | ||||||
|  |     getTargetRelations() { | ||||||
|  |         return this.targetRelations | ||||||
|  |             .map(attributeId => this.treeCache.attributes[attributeId]); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     get toString() { |     get toString() { | ||||||
| @@ -247,11 +473,14 @@ class NoteShort { | |||||||
|     get dto() { |     get dto() { | ||||||
|         const dto = Object.assign({}, this); |         const dto = Object.assign({}, this); | ||||||
|         delete dto.treeCache; |         delete dto.treeCache; | ||||||
|         delete dto.archived; |  | ||||||
|         delete dto.attributeCache; |  | ||||||
|  |  | ||||||
|         return dto; |         return dto; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     getCssClass() { | ||||||
|  |         const labels = this.getLabels('cssClass'); | ||||||
|  |         return labels.map(l => l.value).join(' '); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| export default NoteShort;</code></pre> | export default NoteShort;</code></pre> | ||||||
| @@ -264,13 +493,13 @@ export default NoteShort;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -204,7 +204,7 @@ | |||||||
|  |  | ||||||
|              |              | ||||||
|  |  | ||||||
|             <td class="description last">name of the JAM icon to be used (e.g. "clock" for "jam-clock" icon)</td> |             <td class="description last">name of the boxicon to be used (e.g. "time" for "bx-time" icon)</td> | ||||||
|         </tr> |         </tr> | ||||||
|  |  | ||||||
|      |      | ||||||
| @@ -303,7 +303,7 @@ | |||||||
|      |      | ||||||
|     <dt class="tag-source">Source:</dt> |     <dt class="tag-source">Source:</dt> | ||||||
|     <dd class="tag-source"><ul class="dummy"><li> |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line56">line 56</a> |         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line76">line 76</a> | ||||||
|     </li></ul></dd> |     </li></ul></dd> | ||||||
|      |      | ||||||
|  |  | ||||||
| @@ -333,13 +333,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
| @@ -50,13 +50,13 @@ | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
							
								
								
									
										280
									
								
								docs/frontend_api/module.exports.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								docs/frontend_api/module.exports.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,280 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="utf-8"> | ||||||
|  |     <title>JSDoc: Class: exports</title> | ||||||
|  |  | ||||||
|  |     <script src="scripts/prettify/prettify.js"> </script> | ||||||
|  |     <script src="scripts/prettify/lang-css.js"> </script> | ||||||
|  |     <!--[if lt IE 9]> | ||||||
|  |       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | ||||||
|  |     <![endif]--> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  | <div id="main"> | ||||||
|  |  | ||||||
|  |     <h1 class="page-title">Class: exports</h1> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <section> | ||||||
|  |  | ||||||
|  | <header> | ||||||
|  |      | ||||||
|  |         <h2><span class="attribs"><span class="type-signature"></span></span>exports<span class="signature">()</span><span class="type-signature"></span></h2> | ||||||
|  |          | ||||||
|  |             <div class="class-description">blaa vlaa</div> | ||||||
|  |          | ||||||
|  |      | ||||||
|  | </header> | ||||||
|  |  | ||||||
|  | <article> | ||||||
|  |     <div class="container-overview"> | ||||||
|  |      | ||||||
|  |          | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h2>Constructor</h2> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <h4 class="name" id="exports"><span class="type-signature"></span>new exports<span class="signature">()</span><span class="type-signature"></span></h4> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="services_keyboard_actions.js.html">services/keyboard_action.js</a>, <a href="services_keyboard_actions.js.html#line5">line 5</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |         <h3 class="subsection-title">Members</h3> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |              | ||||||
|  | <h4 class="name" id="JUMP_TO"><span class="type-signature"></span>JUMP_TO<span class="type-signature"></span></h4> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <h5 class="subsection-title">Properties:</h5> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  | <table class="props"> | ||||||
|  |     <thead> | ||||||
|  |     <tr> | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th>Type</th> | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |          | ||||||
|  |  | ||||||
|  |         <th class="last">Description</th> | ||||||
|  |     </tr> | ||||||
|  |     </thead> | ||||||
|  |  | ||||||
|  |     <tbody> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |         <tr> | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="type"> | ||||||
|  |              | ||||||
|  |                  | ||||||
|  | <span class="param-type">string</span> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |              | ||||||
|  |             </td> | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |              | ||||||
|  |  | ||||||
|  |             <td class="description last"></td> | ||||||
|  |         </tr> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     </tbody> | ||||||
|  | </table> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <dl class="details"> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <dt class="tag-source">Source:</dt> | ||||||
|  |     <dd class="tag-source"><ul class="dummy"><li> | ||||||
|  |         <a href="services_keyboard_actions.js.html">services/keyboard_action.js</a>, <a href="services_keyboard_actions.js.html#line7">line 7</a> | ||||||
|  |     </li></ul></dd> | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </dl> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |          | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |      | ||||||
|  | </article> | ||||||
|  |  | ||||||
|  | </section> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <nav> | ||||||
|  |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="module.exports.html">exports</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
|  | </nav> | ||||||
|  |  | ||||||
|  | <br class="clear"> | ||||||
|  |  | ||||||
|  | <footer> | ||||||
|  |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.3</a> | ||||||
|  | </footer> | ||||||
|  |  | ||||||
|  | <script> prettyPrint(); </script> | ||||||
|  | <script src="scripts/linenumber.js"> </script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
| @@ -1,12 +1,12 @@ | |||||||
| /*global document */ | /*global document */ | ||||||
| (function() { | (() => { | ||||||
|     var source = document.getElementsByClassName('prettyprint source linenums'); |     const source = document.getElementsByClassName('prettyprint source linenums'); | ||||||
|     var i = 0; |     let i = 0; | ||||||
|     var lineNumber = 0; |     let lineNumber = 0; | ||||||
|     var lineId; |     let lineId; | ||||||
|     var lines; |     let lines; | ||||||
|     var totalLines; |     let totalLines; | ||||||
|     var anchorHash; |     let anchorHash; | ||||||
|  |  | ||||||
|     if (source && source[0]) { |     if (source && source[0]) { | ||||||
|         anchorHash = document.location.hash.substring(1); |         anchorHash = document.location.hash.substring(1); | ||||||
| @@ -15,7 +15,7 @@ | |||||||
|  |  | ||||||
|         for (; i < totalLines; i++) { |         for (; i < totalLines; i++) { | ||||||
|             lineNumber++; |             lineNumber++; | ||||||
|             lineId = 'line' + lineNumber; |             lineId = `line${lineNumber}`; | ||||||
|             lines[i].id = lineId; |             lines[i].id = lineId; | ||||||
|             if (lineId === anchorHash) { |             if (lineId === anchorHash) { | ||||||
|                 lines[i].className += ' selected'; |                 lines[i].className += ' selected'; | ||||||
|   | |||||||
| @@ -29,14 +29,19 @@ | |||||||
|             <pre class="prettyprint source linenums"><code>import treeService from './tree.js'; |             <pre class="prettyprint source linenums"><code>import treeService from './tree.js'; | ||||||
| import server from './server.js'; | import server from './server.js'; | ||||||
| import utils from './utils.js'; | import utils from './utils.js'; | ||||||
| import infoService from './info.js'; | import toastService from './toast.js'; | ||||||
| import linkService from './link.js'; | import linkService from './link.js'; | ||||||
| import treeCache from './tree_cache.js'; | import treeCache from './tree_cache.js'; | ||||||
| import noteDetailService from './note_detail.js'; |  | ||||||
| import noteTypeService from './note_type.js'; |  | ||||||
| import noteTooltipService from './note_tooltip.js'; | import noteTooltipService from './note_tooltip.js'; | ||||||
| import protectedSessionService from'./protected_session.js'; | import protectedSessionService from './protected_session.js'; | ||||||
| import dateNotesService from'./date_notes.js'; | import dateNotesService from './date_notes.js'; | ||||||
|  | import CollapsibleWidget from '../widgets/collapsible_widget.js'; | ||||||
|  | import ws from "./ws.js"; | ||||||
|  | import hoistedNoteService from "./hoisted_note.js"; | ||||||
|  | import appContext from "./app_context.js"; | ||||||
|  | import TabAwareWidget from "../widgets/tab_aware_widget.js"; | ||||||
|  | import TabCachingWidget from "../widgets/tab_caching_widget.js"; | ||||||
|  | import BasicWidget from "../widgets/basic_widget.js"; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * This is the main frontend API interface for scripts. It's published in the local "api" object. |  * This is the main frontend API interface for scripts. It's published in the local "api" object. | ||||||
| @@ -44,9 +49,12 @@ import dateNotesService from'./date_notes.js'; | |||||||
|  * @constructor |  * @constructor | ||||||
|  * @hideconstructor |  * @hideconstructor | ||||||
|  */ |  */ | ||||||
| function FrontendScriptApi(startNote, currentNote, originEntity = null, tabContext = null) { | function FrontendScriptApi(startNote, currentNote, originEntity = null, $container = null) { | ||||||
|     const $pluginButtons = $("#plugin-buttons"); |     const $pluginButtons = $("#plugin-buttons"); | ||||||
|  |  | ||||||
|  |     /** @property {jQuery} container of all the rendered script content */ | ||||||
|  |     this.$container = $container; | ||||||
|  |  | ||||||
|     /** @property {object} note where script started executing */ |     /** @property {object} note where script started executing */ | ||||||
|     this.startNote = startNote; |     this.startNote = startNote; | ||||||
|     /** @property {object} note where script is currently executing */ |     /** @property {object} note where script is currently executing */ | ||||||
| @@ -57,8 +65,17 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|     // to keep consistency with backend API |     // to keep consistency with backend API | ||||||
|     this.dayjs = dayjs; |     this.dayjs = dayjs; | ||||||
|  |  | ||||||
|     /** @property {TabContext|null} - experimental! */ |     /** @property {CollapsibleWidget} */ | ||||||
|     this.tabContext = tabContext; |     this.CollapsibleWidget = CollapsibleWidget; | ||||||
|  |  | ||||||
|  |     /** @property {TabAwareWidget} */ | ||||||
|  |     this.TabAwareWidget = TabAwareWidget; | ||||||
|  |  | ||||||
|  |     /** @property {TabCachingWidget} */ | ||||||
|  |     this.TabCachingWidget = TabCachingWidget; | ||||||
|  |  | ||||||
|  |     /** @property {BasicWidget} */ | ||||||
|  |     this.BasicWidget = BasicWidget; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Activates note in the tree and in the note detail. |      * Activates note in the tree and in the note detail. | ||||||
| @@ -67,24 +84,27 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|      * @param {string} notePath (or noteId) |      * @param {string} notePath (or noteId) | ||||||
|      * @returns {Promise<void>} |      * @returns {Promise<void>} | ||||||
|      */ |      */ | ||||||
|     this.activateNote = treeService.activateNote; |     this.activateNote = async notePath => { | ||||||
|  |         await appContext.tabManager.getActiveTabContext().setNote(notePath); | ||||||
|  |     }; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Activates newly created note. Compared to this.activateNote() also refreshes tree. |      * Activates newly created note. Compared to this.activateNote() also makes sure that frontend has been fully synced. | ||||||
|      * |      * | ||||||
|      * @param {string} notePath (or noteId) |      * @param {string} notePath (or noteId) | ||||||
|      * @return {Promise<void>} |      * @return {Promise<void>} | ||||||
|      */ |      */ | ||||||
|     this.activateNewNote = async notePath => { |     this.activateNewNote = async notePath => { | ||||||
|         await treeService.reload(); |         await ws.waitForMaxKnownSyncId(); | ||||||
|  |  | ||||||
|         await treeService.activateNote(notePath, noteDetailService.focusAndSelectTitle); |         await appContext.tabManager.getActiveTabContext().setNote(notePath); | ||||||
|  |         appContext.triggerEvent('focusAndSelectTitle'); | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @typedef {Object} ToolbarButtonOptions |      * @typedef {Object} ToolbarButtonOptions | ||||||
|      * @property {string} title |      * @property {string} title | ||||||
|      * @property {string} [icon] - name of the JAM icon to be used (e.g. "clock" for "jam-clock" icon) |      * @property {string} [icon] - name of the boxicon to be used (e.g. "time" for "bx-time" icon) | ||||||
|      * @property {function} action - callback handling the click on the button |      * @property {function} action - callback handling the click on the button | ||||||
|      * @property {string} [shortcut] - keyboard shortcut for the button, e.g. "alt+t" |      * @property {string} [shortcut] - keyboard shortcut for the button, e.g. "alt+t" | ||||||
|      */ |      */ | ||||||
| @@ -99,10 +119,10 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|  |  | ||||||
|         const button = $('<button>') |         const button = $('<button>') | ||||||
|             .addClass("btn btn-sm") |             .addClass("btn btn-sm") | ||||||
|             .click(opts.action); |             .on('click', opts.action); | ||||||
|  |  | ||||||
|         if (opts.icon) { |         if (opts.icon) { | ||||||
|             button.append($("<span>").addClass("jam jam-" + opts.icon)) |             button.append($("<span>").addClass("bx bx-" + opts.icon)) | ||||||
|                   .append("&nbsp;"); |                   .append("&nbsp;"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -115,7 +135,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (opts.shortcut) { |         if (opts.shortcut) { | ||||||
|             $(document).bind('keydown', opts.shortcut, opts.action); |             utils.bindGlobalShortcut(opts.shortcut, opts.action); | ||||||
|  |  | ||||||
|             button.attr("title", "Shortcut " + opts.shortcut); |             button.attr("title", "Shortcut " + opts.shortcut); | ||||||
|         } |         } | ||||||
| @@ -137,14 +157,14 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Executes given anonymous function on the server. |      * Executes given anonymous function on the backend. | ||||||
|      * Internally this serializes the anonymous function into string and sends it to backend via AJAX. |      * Internally this serializes the anonymous function into string and sends it to backend via AJAX. | ||||||
|      * |      * | ||||||
|      * @param {string} script - script to be executed on the backend |      * @param {string} script - script to be executed on the backend | ||||||
|      * @param {Array.<?>} params - list of parameters to the anonymous function to be send to backend |      * @param {Array.<?>} params - list of parameters to the anonymous function to be send to backend | ||||||
|      * @return {Promise<*>} return value of the executed function on the backend |      * @return {Promise<*>} return value of the executed function on the backend | ||||||
|      */ |      */ | ||||||
|     this.runOnServer = async (script, params = []) => { |     this.runOnBackend = async (script, params = []) => { | ||||||
|         if (typeof script === "function") { |         if (typeof script === "function") { | ||||||
|             script = script.toString(); |             script = script.toString(); | ||||||
|         } |         } | ||||||
| @@ -156,9 +176,12 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|             currentNoteId: currentNote.noteId, |             currentNoteId: currentNote.noteId, | ||||||
|             originEntityName: "notes", // currently there's no other entity on frontend which can trigger event |             originEntityName: "notes", // currently there's no other entity on frontend which can trigger event | ||||||
|             originEntityId: originEntity ? originEntity.noteId : null |             originEntityId: originEntity ? originEntity.noteId : null | ||||||
|         }); |         }, "script"); | ||||||
|  |  | ||||||
|         if (ret.success) { |         if (ret.success) { | ||||||
|  |             // wait until all the changes done in the script has been synced to frontend before continuing | ||||||
|  |             await ws.waitForSyncId(ret.maxSyncId); | ||||||
|  |  | ||||||
|             return ret.executionResult; |             return ret.executionResult; | ||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
| @@ -166,6 +189,12 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @deprecated new name of this API call is runOnBackend so use that | ||||||
|  |      * @method | ||||||
|  |      */ | ||||||
|  |     this.runOnServer = this.runOnBackend; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * This is a powerful search method - you can search by attributes and their values, e.g.: |      * This is a powerful search method - you can search by attributes and their values, e.g.: | ||||||
|      * "@dateModified =* MONTH AND @log". See full documentation for all options at: https://github.com/zadam/trilium/wiki/Search |      * "@dateModified =* MONTH AND @log". See full documentation for all options at: https://github.com/zadam/trilium/wiki/Search | ||||||
| @@ -219,16 +248,12 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|     this.getNotes = async (noteIds, silentNotFoundError = false) => await treeCache.getNotes(noteIds, silentNotFoundError); |     this.getNotes = async (noteIds, silentNotFoundError = false) => await treeCache.getNotes(noteIds, silentNotFoundError); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @param {string} noteId |      * Update frontend tree (note) cache from the backend. | ||||||
|  |      * | ||||||
|  |      * @param {string[]} noteIds | ||||||
|      * @method |      * @method | ||||||
|      */ |      */ | ||||||
|     this.reloadChildren = async noteId => await treeCache.reloadChildren(noteId); |     this.reloadNotes = async noteIds => await treeCache.reloadNotes(noteIds); | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @param {string} noteId |  | ||||||
|      * @method |  | ||||||
|      */ |  | ||||||
|     this.reloadParents = async noteId => await treeCache.reloadParents(noteId); |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Instance name identifies particular Trilium instance. It can be useful for scripts |      * Instance name identifies particular Trilium instance. It can be useful for scripts | ||||||
| @@ -258,7 +283,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|      * @method |      * @method | ||||||
|      * @param {string} message |      * @param {string} message | ||||||
|      */ |      */ | ||||||
|     this.showMessage = infoService.showMessage; |     this.showMessage = toastService.showMessage; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Show error message to the user. |      * Show error message to the user. | ||||||
| @@ -266,15 +291,13 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|      * @method |      * @method | ||||||
|      * @param {string} message |      * @param {string} message | ||||||
|      */ |      */ | ||||||
|     this.showError = infoService.showError; |     this.showError = toastService.showError; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Refresh tree |  | ||||||
|      * |  | ||||||
|      * @method |      * @method | ||||||
|      * @returns {Promise<void>} |      * @deprecated - this is now no-op since all the changes should be gracefully handled per widget | ||||||
|      */ |      */ | ||||||
|     this.refreshTree = treeService.reload; |     this.refreshTree = () => {}; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Create note link (jQuery object) for given note. |      * Create note link (jQuery object) for given note. | ||||||
| @@ -286,57 +309,32 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|     this.createNoteLink = linkService.createNoteLink; |     this.createNoteLink = linkService.createNoteLink; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  |      * Adds given text to the editor cursor | ||||||
|  |      * | ||||||
|  |      * @param {string} text - this must be clear text, HTML is not supported. | ||||||
|      * @method |      * @method | ||||||
|      * @returns {NoteFull} active note (loaded into right pane) |  | ||||||
|      */ |      */ | ||||||
|     this.getActiveNote = noteDetailService.getActiveNote; |     this.addTextToActiveTabEditor = text => appContext.triggerCommand('addTextToActiveEditor', {text}); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @method | ||||||
|  |      * @returns {NoteShort} active note (loaded into right pane) | ||||||
|  |      */ | ||||||
|  |     this.getActiveTabNote = () => appContext.tabManager.getActiveTabNote(); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * See https://ckeditor.com/docs/ckeditor5/latest/api/module_core_editor_editor-Editor.html for a documentation on the returned instance. | ||||||
|  |      * | ||||||
|  |      * @method | ||||||
|  |      * @param callback - method receiving "textEditor" instance | ||||||
|  |      */ | ||||||
|  |     this.getActiveTabTextEditor = callback => appContext.triggerCommand('executeInActiveEditor', {callback}); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @method |      * @method | ||||||
|      * @returns {Promise<string|null>} returns note path of active note or null if there isn't active note |      * @returns {Promise<string|null>} returns note path of active note or null if there isn't active note | ||||||
|      */ |      */ | ||||||
|     this.getActiveNotePath = () => { |     this.getActiveTabNotePath = () => appContext.tabManager.getActiveTabNotePath(); | ||||||
|         const activeTabContext = noteDetailService.getActiveTabContext(); |  | ||||||
|  |  | ||||||
|         return activeTabContext ? activeTabContext.notePath : null; |  | ||||||
|     }; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * This method checks whether user navigated away from the note from which the scripts has been started. |  | ||||||
|      * This is necessary because script execution is async and by the time it is finished, the user might have |  | ||||||
|      * already navigated away from this page - the end result would be that script might return data for the wrong |  | ||||||
|      * note. |  | ||||||
|      * |  | ||||||
|      * @method |  | ||||||
|      * @return {boolean} returns true if the original note is still loaded, false if user switched to another |  | ||||||
|      */ |  | ||||||
|     this.isNoteStillActive = () => { |  | ||||||
|         return this.originEntity.noteId === noteDetailService.getActiveNoteId(); |  | ||||||
|     }; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @method |  | ||||||
|      * @param {function} func - callback called on note change as user is typing (not necessarily tied to save event) |  | ||||||
|      */ |  | ||||||
|     this.onNoteChange = noteDetailService.onNoteChange; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @method |  | ||||||
|      * @returns {array} list of default code mime types |  | ||||||
|      */ |  | ||||||
|     this.getDefaultCodeMimeTypes = noteTypeService.getDefaultCodeMimeTypes; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @method |  | ||||||
|      * @returns {array} list of currently used code mime types |  | ||||||
|      */ |  | ||||||
|     this.getCodeMimeTypes = noteTypeService.getCodeMimeTypes; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @method |  | ||||||
|      * @param {array} types - list of mime types to be used |  | ||||||
|      */ |  | ||||||
|     this.setCodeMimeTypes = noteTypeService.setCodeMimeTypes; |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @method |      * @method | ||||||
| @@ -345,9 +343,32 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|     this.setupElementTooltip = noteTooltipService.setupElementTooltip; |     this.setupElementTooltip = noteTooltipService.setupElementTooltip; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  |      * @deprecated use protectNote and protectSubtree instead | ||||||
|      * @method |      * @method | ||||||
|      */ |      */ | ||||||
|     this.protectActiveNote = protectedSessionService.protectNoteAndSendToServer; |     this.protectActiveNote = async () => { | ||||||
|  |         const activeNote = appContext.tabManager.getActiveTabNote(); | ||||||
|  |  | ||||||
|  |         await protectedSessionService.protectNote(activeNote.noteId, true, false); | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @method | ||||||
|  |      * @param {string} noteId | ||||||
|  |      * @param {boolean} protect - true to protect note, false to unprotect | ||||||
|  |      */ | ||||||
|  |     this.protectNote = async (noteId, protect) => { | ||||||
|  |         await protectedSessionService.protectNote(noteId, protect, false); | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @method | ||||||
|  |      * @param {string} noteId | ||||||
|  |      * @param {boolean} protect - true to protect subtree, false to unprotect | ||||||
|  |      */ | ||||||
|  |     this.protectSubTree = async (noteId, protect) => { | ||||||
|  |         await protectedSessionService.protectNote(noteId, protect, true); | ||||||
|  |     }; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns date-note for today. If it doesn't exist, it is automatically created. |      * Returns date-note for today. If it doesn't exist, it is automatically created. | ||||||
| @@ -383,6 +404,33 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, tabConte | |||||||
|      * @return {Promise<NoteShort>} |      * @return {Promise<NoteShort>} | ||||||
|      */ |      */ | ||||||
|     this.getYearNote = dateNotesService.getYearNote; |     this.getYearNote = dateNotesService.getYearNote; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Hoist note. See https://github.com/zadam/trilium/wiki/Note-hoisting | ||||||
|  |      * | ||||||
|  |      * @method | ||||||
|  |      * @param {string} noteId - set hoisted note. 'root' will effectively unhoist | ||||||
|  |      * @return {Promise} | ||||||
|  |      */ | ||||||
|  |     this.setHoistedNoteId = hoistedNoteService.setHoistedNoteId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @method | ||||||
|  |      * @param {string} keyboardShortcut - e.g. "ctrl+shift+a" | ||||||
|  |      * @param {function} handler | ||||||
|  |      */ | ||||||
|  |     this.bindGlobalShortcut = utils.bindGlobalShortcut; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Trilium runs in backend and frontend process, when something is changed on the backend from script, | ||||||
|  |      * frontend will get asynchronously synchronized. | ||||||
|  |      * | ||||||
|  |      * This method returns a promise which resolves once all the backend -> frontend synchronization is finished. | ||||||
|  |      * Typical use case is when new note has been created, we should wait until it is synced into frontend and only then activate it. | ||||||
|  |      * | ||||||
|  |      * @method | ||||||
|  |      */ | ||||||
|  |     this.waitUntilSynced = ws.waitForMaxKnownSyncId; | ||||||
| } | } | ||||||
|  |  | ||||||
| export default FrontendScriptApi;</code></pre> | export default FrontendScriptApi;</code></pre> | ||||||
| @@ -395,13 +443,13 @@ export default FrontendScriptApi;</code></pre> | |||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <nav> | <nav> | ||||||
|     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="NoteComplement.html">NoteComplement</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
| </nav> | </nav> | ||||||
|  |  | ||||||
| <br class="clear"> | <br class="clear"> | ||||||
|  |  | ||||||
| <footer> | <footer> | ||||||
|     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.4</a> | ||||||
| </footer> | </footer> | ||||||
|  |  | ||||||
| <script> prettyPrint(); </script> | <script> prettyPrint(); </script> | ||||||
|   | |||||||
							
								
								
									
										280
									
								
								docs/frontend_api/services_keyboard_action.js.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								docs/frontend_api/services_keyboard_action.js.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,280 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="utf-8"> | ||||||
|  |     <title>JSDoc: Source: services/keyboard_action.js</title> | ||||||
|  |  | ||||||
|  |     <script src="scripts/prettify/prettify.js"> </script> | ||||||
|  |     <script src="scripts/prettify/lang-css.js"> </script> | ||||||
|  |     <!--[if lt IE 9]> | ||||||
|  |       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | ||||||
|  |     <![endif]--> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  | <div id="main"> | ||||||
|  |  | ||||||
|  |     <h1 class="page-title">Source: services/keyboard_action.js</h1> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <section> | ||||||
|  |         <article> | ||||||
|  |             <pre class="prettyprint source linenums"><code>/** | ||||||
|  |  * blaa vlaa | ||||||
|  |  */ | ||||||
|  | class KeyboardAction { | ||||||
|  |     constructor(params) { | ||||||
|  |         this.optionName = params.optionName; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Open "Jump to note" dialog | ||||||
|  |  * @static | ||||||
|  |  */ | ||||||
|  | KeyboardAction.JumpToNote = new KeyboardAction({ | ||||||
|  | 	optionName: "JumpToNote", | ||||||
|  | 	defaultShortcuts: "mod+j", | ||||||
|  | 	description: 'Open "Jump to note" dialog' | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.MarkdownToHTML = new KeyboardAction({ | ||||||
|  | 	optionName: "MarkdownToHTML", | ||||||
|  | 	defaultShortcuts: "mod+return" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.NewTab = new KeyboardAction({ | ||||||
|  | 	optionName: "NewTab", | ||||||
|  | 	defaultShortcuts: "mod+t" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.CloseTab = new KeyboardAction({ | ||||||
|  | 	optionName: "CloseTab", | ||||||
|  | 	defaultShortcuts: "mod+w" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.NextTab = new KeyboardAction({ | ||||||
|  | 	optionName: "NextTab", | ||||||
|  | 	defaultShortcuts: "mod+tab" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.PreviousTab = new KeyboardAction({ | ||||||
|  | 	optionName: "PreviousTab", | ||||||
|  | 	defaultShortcuts: "mod+shift+tab" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.CreateNoteAfter = new KeyboardAction({ | ||||||
|  | 	optionName: "CreateNoteAfter", | ||||||
|  | 	defaultShortcuts: "mod+o" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.CreateNoteInto = new KeyboardAction({ | ||||||
|  | 	optionName: "CreateNoteInto", | ||||||
|  | 	defaultShortcuts: "mod+p" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ScrollToActiveNote = new KeyboardAction({ | ||||||
|  | 	optionName: "ScrollToActiveNote", | ||||||
|  | 	defaultShortcuts: "mod+." | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.CollapseTree = new KeyboardAction({ | ||||||
|  | 	optionName: "CollapseTree", | ||||||
|  | 	defaultShortcuts: "alt+c" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.RunSQL = new KeyboardAction({ | ||||||
|  | 	optionName: "RunSQL", | ||||||
|  | 	defaultShortcuts: "mod+return" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.FocusNote = new KeyboardAction({ | ||||||
|  | 	optionName: "FocusNote", | ||||||
|  | 	defaultShortcuts: "return" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.RunCurrentNote = new KeyboardAction({ | ||||||
|  | 	optionName: "RunCurrentNote", | ||||||
|  | 	defaultShortcuts: "mod+return" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ClipboardCopy = new KeyboardAction({ | ||||||
|  | 	optionName: "ClipboardCopy", | ||||||
|  | 	defaultShortcuts: "mod+c" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ClipboardPaste = new KeyboardAction({ | ||||||
|  | 	optionName: "ClipboardPaste", | ||||||
|  | 	defaultShortcuts: "mod+v" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ClipboardCut = new KeyboardAction({ | ||||||
|  | 	optionName: "ClipboardCut", | ||||||
|  | 	defaultShortcuts: "mod+x" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.SelectAllNotesInParent = new KeyboardAction({ | ||||||
|  | 	optionName: "SelectAllNotesInParent", | ||||||
|  | 	defaultShortcuts: "mod+a" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.Undo = new KeyboardAction({ | ||||||
|  | 	optionName: "Undo", | ||||||
|  | 	defaultShortcuts: "mod+z" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.Redo = new KeyboardAction({ | ||||||
|  | 	optionName: "Redo", | ||||||
|  | 	defaultShortcuts: "mod+y" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.AddLinkToText = new KeyboardAction({ | ||||||
|  | 	optionName: "AddLinkToText", | ||||||
|  | 	defaultShortcuts: "mod+l" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.CloneNotesTo = new KeyboardAction({ | ||||||
|  | 	optionName: "CloneNotesTo", | ||||||
|  | 	defaultShortcuts: "mod+shift+c" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.MoveNotesTo = new KeyboardAction({ | ||||||
|  | 	optionName: "MoveNotesTo", | ||||||
|  | 	defaultShortcuts: "mod+shift+c" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.SearchNotes = new KeyboardAction({ | ||||||
|  | 	optionName: "SearchNotes", | ||||||
|  | 	defaultShortcuts: "mod+s" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ShowAttributes = new KeyboardAction({ | ||||||
|  | 	optionName: "ShowAttributes", | ||||||
|  | 	defaultShortcuts: "alt+a" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ShowHelp = new KeyboardAction({ | ||||||
|  | 	optionName: "ShowHelp", | ||||||
|  | 	defaultShortcuts: "f1" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.OpenSQLConsole = new KeyboardAction({ | ||||||
|  | 	optionName: "OpenSQLConsole", | ||||||
|  | 	defaultShortcuts: "alt+o" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.BackInNoteHistory = new KeyboardAction({ | ||||||
|  | 	optionName: "BackInNoteHistory", | ||||||
|  | 	defaultShortcuts: "alt+left" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ForwardInNoteHistory = new KeyboardAction({ | ||||||
|  | 	optionName: "ForwardInNoteHistory", | ||||||
|  | 	defaultShortcuts: "alt+right" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ToggleZenMode = new KeyboardAction({ | ||||||
|  | 	optionName: "ToggleZenMode", | ||||||
|  | 	defaultShortcuts: "alt+m" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.InsertDateTime = new KeyboardAction({ | ||||||
|  | 	optionName: "InsertDateTime", | ||||||
|  | 	defaultShortcuts: "alt+t" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ReloadApp = new KeyboardAction({ | ||||||
|  |     optionName: "ReloadApp", | ||||||
|  |     defaultShortcuts: ["f5", "mod+r"] | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.OpenDevTools = new KeyboardAction({ | ||||||
|  | 	optionName: "OpenDevTools", | ||||||
|  | 	defaultShortcuts: "mod+shift+i" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.FindInText = new KeyboardAction({ | ||||||
|  | 	optionName: "FindInText", | ||||||
|  | 	defaultShortcuts: "mod+f" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ToggleFullscreen = new KeyboardAction({ | ||||||
|  | 	optionName: "ToggleFullscreen", | ||||||
|  | 	defaultShortcuts: "f11" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ZoomOut = new KeyboardAction({ | ||||||
|  | 	optionName: "ZoomOut", | ||||||
|  | 	defaultShortcuts: "mod+-" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | /** @static */ | ||||||
|  | KeyboardAction.ZoomIn = new KeyboardAction({ | ||||||
|  | 	optionName: "ZoomIn", | ||||||
|  | 	defaultShortcuts: "mod+=" | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | export default KeyboardAction;</code></pre> | ||||||
|  |         </article> | ||||||
|  |     </section> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <nav> | ||||||
|  |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="KeyboardAction.html">KeyboardAction</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
|  | </nav> | ||||||
|  |  | ||||||
|  | <br class="clear"> | ||||||
|  |  | ||||||
|  | <footer> | ||||||
|  |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.3</a> | ||||||
|  | </footer> | ||||||
|  |  | ||||||
|  | <script> prettyPrint(); </script> | ||||||
|  | <script src="scripts/linenumber.js"> </script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										61
									
								
								docs/frontend_api/services_keyboard_actions.js.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								docs/frontend_api/services_keyboard_actions.js.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="utf-8"> | ||||||
|  |     <title>JSDoc: Source: services/keyboard_action.js</title> | ||||||
|  |  | ||||||
|  |     <script src="scripts/prettify/prettify.js"> </script> | ||||||
|  |     <script src="scripts/prettify/lang-css.js"> </script> | ||||||
|  |     <!--[if lt IE 9]> | ||||||
|  |       <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> | ||||||
|  |     <![endif]--> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> | ||||||
|  |     <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  | <div id="main"> | ||||||
|  |  | ||||||
|  |     <h1 class="page-title">Source: services/keyboard_action.js</h1> | ||||||
|  |  | ||||||
|  |      | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
|  |     <section> | ||||||
|  |         <article> | ||||||
|  |             <pre class="prettyprint source linenums"><code>/** | ||||||
|  |  * blaa vlaa | ||||||
|  |  */ | ||||||
|  | class KeyboardActions { | ||||||
|  |     constructor() { | ||||||
|  |         /** @property {string} */ | ||||||
|  |         this.JUMP_TO = ""; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export default KeyboardActions;</code></pre> | ||||||
|  |         </article> | ||||||
|  |     </section> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <nav> | ||||||
|  |     <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Branch.html">Branch</a></li><li><a href="FrontendScriptApi.html">FrontendScriptApi</a></li><li><a href="KeyboardActions.html">KeyboardActions</a></li><li><a href="NoteFull.html">NoteFull</a></li><li><a href="NoteShort.html">NoteShort</a></li></ul><h3><a href="global.html">Global</a></h3> | ||||||
|  | </nav> | ||||||
|  |  | ||||||
|  | <br class="clear"> | ||||||
|  |  | ||||||
|  | <footer> | ||||||
|  |     Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.3</a> | ||||||
|  | </footer> | ||||||
|  |  | ||||||
|  | <script> prettyPrint(); </script> | ||||||
|  | <script src="scripts/linenumber.js"> </script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
| @@ -273,7 +273,7 @@ tr > th:last-child { border-right: 1px solid #ddd; } | |||||||
|     margin: 0; |     margin: 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| .prettyprint | .source | ||||||
| { | { | ||||||
|     border: 1px solid #ddd; |     border: 1px solid #ddd; | ||||||
|     width: 80%; |     width: 80%; | ||||||
| @@ -284,7 +284,7 @@ tr > th:last-child { border-right: 1px solid #ddd; } | |||||||
|     width: inherit; |     width: inherit; | ||||||
| } | } | ||||||
|  |  | ||||||
| .prettyprint code | .source code | ||||||
| { | { | ||||||
|     font-size: 100%; |     font-size: 100%; | ||||||
|     line-height: 18px; |     line-height: 18px; | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user