mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	Compare commits
	
		
			1272 Commits
		
	
	
		
			v0.32.2-be
			...
			v0.43.0-be
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					5f2361ebd5 | ||
| 
						 | 
					9791dab97d | ||
| 
						 | 
					85d986534d | ||
| 
						 | 
					00faf758e8 | ||
| 
						 | 
					6ba2e5cf73 | ||
| 
						 | 
					fb3876d28b | ||
| 
						 | 
					fb975849b9 | ||
| 
						 | 
					16fef78344 | ||
| 
						 | 
					e0b4b369dc | ||
| 
						 | 
					0df7851214 | ||
| 
						 | 
					5d47c2b23e | ||
| 
						 | 
					d09b021487 | ||
| 
						 | 
					910bda860c | ||
| 
						 | 
					2d92b4931a | ||
| 
						 | 
					212b719ee9 | ||
| 
						 | 
					1db892d22f | ||
| 
						 | 
					535dcb6d12 | ||
| 
						 | 
					4426362799 | ||
| 
						 | 
					2c609e8136 | ||
| 
						 | 
					11b73b79ed | ||
| 
						 | 
					e70c862e72 | ||
| 
						 | 
					b3e66d5a83 | ||
| 
						 | 
					e8cd821e57 | ||
| 
						 | 
					be7ac74235 | ||
| 
						 | 
					58fa0832f6 | ||
| 
						 | 
					1502b9ce66 | ||
| 
						 | 
					7307ca385f | ||
| 
						 | 
					c1fd9825aa | ||
| 
						 | 
					9de7d3fc53 | ||
| 
						 | 
					3c5db844ba | ||
| 
						 | 
					e7330c1104 | ||
| 
						 | 
					ec4586b164 | ||
| 
						 | 
					91e5f24798 | ||
| 
						 | 
					38723e0189 | ||
| 
						 | 
					8c88ce6f65 | ||
| 
						 | 
					4d22959e28 | ||
| 
						 | 
					50a28d8c51 | ||
| 
						 | 
					e25b633ec4 | ||
| 
						 | 
					75bd395669 | ||
| 
						 | 
					5e353a5612 | ||
| 
						 | 
					6b359b7796 | ||
| 
						 | 
					13f9d037dc | ||
| 
						 | 
					1911d64c1c | ||
| 
						 | 
					d4c3f1b3f2 | ||
| 
						 | 
					3db84daf94 | ||
| 
						 | 
					2526715aa4 | ||
| 
						 | 
					04c573e212 | ||
| 
						 | 
					58f4f5d1e6 | ||
| 
						 | 
					fa5d982a55 | ||
| 
						 | 
					108afe8896 | ||
| 
						 | 
					37da0adb8a | ||
| 
						 | 
					4f50864ec8 | ||
| 
						 | 
					30b9ef8604 | ||
| 
						 | 
					b063b4c528 | ||
| 
						 | 
					e08b0141a4 | ||
| 
						 | 
					9d8b8e26a1 | ||
| 
						 | 
					cb70109ee7 | ||
| 
						 | 
					e541abbd60 | ||
| 
						 | 
					940a70adc5 | ||
| 
						 | 
					88e8eb7e9c | ||
| 
						 | 
					b365c186a1 | ||
| 
						 | 
					64c9734f05 | ||
| 
						 | 
					48c843c087 | ||
| 
						 | 
					0e4eec10b9 | ||
| 
						 | 
					a3661cb763 | ||
| 
						 | 
					115879ec4a | ||
| 
						 | 
					df11b076bc | ||
| 
						 | 
					54ecd2ee75 | ||
| 
						 | 
					2369bcf9fc | ||
| 
						 | 
					5d8808a2ad | ||
| 
						 | 
					62b993f06f | ||
| 
						 | 
					8aa5608085 | ||
| 
						 | 
					b452d7e5c5 | ||
| 
						 | 
					9b9d6d86d0 | ||
| 
						 | 
					7f2755d4a0 | ||
| 
						 | 
					3b268cc8eb | ||
| 
						 | 
					6dfe335707 | ||
| 
						 | 
					c7125d2b50 | ||
| 
						 | 
					e8a33a5ee7 | ||
| 
						 | 
					deb0b24c4c | ||
| 
						 | 
					cafcb67a8a | ||
| 
						 | 
					4c6e9480e4 | ||
| 
						 | 
					109bead1c7 | ||
| 
						 | 
					ae1220b970 | ||
| 
						 | 
					b89a2df462 | ||
| 
						 | 
					8b5536ee3a | ||
| 
						 | 
					647790885d | ||
| 
						 | 
					227c3e4dcc | ||
| 
						 | 
					4eb2407c73 | ||
| 
						 | 
					43e12fbea2 | ||
| 
						 | 
					2a3091f788 | ||
| 
						 | 
					742df25bc2 | ||
| 
						 | 
					9be1d1f697 | ||
| 
						 | 
					ed52f93bbb | ||
| 
						 | 
					3466a19397 | ||
| 
						 | 
					fe53e2351c | ||
| 
						 | 
					5c35b870eb | ||
| 
						 | 
					90d091aedb | ||
| 
						 | 
					0a05a40186 | ||
| 
						 | 
					7482ed063b | ||
| 
						 | 
					70e343f2fc | ||
| 
						 | 
					358f3a7291 | ||
| 
						 | 
					6161b1c193 | ||
| 
						 | 
					94b57dadd7 | ||
| 
						 | 
					81fbefb9cd | ||
| 
						 | 
					6d6695e3a9 | ||
| 
						 | 
					4c308ad68f | ||
| 
						 | 
					989a003d2f | ||
| 
						 | 
					ccdb41841e | ||
| 
						 | 
					0a94622413 | ||
| 
						 | 
					5769587305 | ||
| 
						 | 
					ffbfccb701 | ||
| 
						 | 
					56ce23fc36 | ||
| 
						 | 
					cba7e5a59f | ||
| 
						 | 
					86cf8f3202 | ||
| 
						 | 
					907cdd8fcb | ||
| 
						 | 
					7ea53d468e | ||
| 
						 | 
					586d6b4557 | ||
| 
						 | 
					8f68ff1932 | ||
| 
						 | 
					a1ea2c9115 | ||
| 
						 | 
					e8ce81a133 | ||
| 
						 | 
					aff12950f0 | ||
| 
						 | 
					75c58cbf79 | ||
| 
						 | 
					87a1e98fa2 | ||
| 
						 | 
					d1eacbb574 | ||
| 
						 | 
					71d248cd87 | ||
| 
						 | 
					ac608b9334 | ||
| 
						 | 
					32020d78b5 | ||
| 
						 | 
					ff853c7d0a | ||
| 
						 | 
					8526cb2315 | ||
| 
						 | 
					dc89f72e75 | ||
| 
						 | 
					657ff16267 | ||
| 
						 | 
					ed759f5585 | ||
| 
						 | 
					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 | ||
| 
						 | 
					33733d3ab7 | ||
| 
						 | 
					f08bf0be15 | 
							
								
								
									
										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
 | 
			
		||||
node_modules/
 | 
			
		||||
dist/
 | 
			
		||||
src/public/app-dist/
 | 
			
		||||
npm-debug.log
 | 
			
		||||
yarn-error.log
 | 
			
		||||
*.db
 | 
			
		||||
config.ini
 | 
			
		||||
cert.key
 | 
			
		||||
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:
 | 
			
		||||
    - before: nvm install 10 && nvm use 10
 | 
			
		||||
      init: npm install
 | 
			
		||||
      command: npm run start
 | 
			
		||||
      command: npm run start-server
 | 
			
		||||
 | 
			
		||||
ports:
 | 
			
		||||
    - port: 8080
 | 
			
		||||
      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" />
 | 
			
		||||
      </value>
 | 
			
		||||
    </option>
 | 
			
		||||
    <JSCodeStyleSettings version="0">
 | 
			
		||||
      <option name="USE_EXPLICIT_JS_EXTENSION" value="TRUE" />
 | 
			
		||||
    </JSCodeStyleSettings>
 | 
			
		||||
  </code_scheme>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										7
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								.idea/dataSources.xml
									
									
									
										generated
									
									
									
								
							@@ -1,14 +1,11 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
 | 
			
		||||
    <data-source source="LOCAL" name="document.db" uuid="a2c75661-f9e2-478f-a69f-6a9409e69997">
 | 
			
		||||
    <data-source source="LOCAL" name="document.db" uuid="b0b03187-36c8-4ec1-bdab-fd4273cd692e">
 | 
			
		||||
      <driver-ref>sqlite.xerial</driver-ref>
 | 
			
		||||
      <synchronize>true</synchronize>
 | 
			
		||||
      <jdbc-driver>org.sqlite.JDBC</jdbc-driver>
 | 
			
		||||
      <jdbc-url>jdbc:sqlite:$PROJECT_DIR$/../trilium-data/document.db</jdbc-url>
 | 
			
		||||
      <driver-properties>
 | 
			
		||||
        <property name="enable_load_extension" value="true" />
 | 
			
		||||
      </driver-properties>
 | 
			
		||||
      <jdbc-url>jdbc:sqlite:$USER_HOME$/trilium-data/document.db</jdbc-url>
 | 
			
		||||
    </data-source>
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
@@ -1,650 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<dataSource name="document.db">
 | 
			
		||||
  <database-model serializer="dbm" dbms="SQLITE" family-id="SQLITE" format-version="4.15">
 | 
			
		||||
    <root id="1">
 | 
			
		||||
      <ServerVersion>3.25.1</ServerVersion>
 | 
			
		||||
    </root>
 | 
			
		||||
    <schema id="2" parent="1" name="main">
 | 
			
		||||
      <Current>1</Current>
 | 
			
		||||
      <Visible>1</Visible>
 | 
			
		||||
    </schema>
 | 
			
		||||
    <collation id="3" parent="1" name="BINARY"/>
 | 
			
		||||
    <collation id="4" parent="1" name="NOCASE"/>
 | 
			
		||||
    <collation id="5" parent="1" name="RTRIM"/>
 | 
			
		||||
    <table id="6" parent="2" name="api_tokens"/>
 | 
			
		||||
    <table id="7" parent="2" name="attributes"/>
 | 
			
		||||
    <table id="8" parent="2" name="branches"/>
 | 
			
		||||
    <table id="9" parent="2" name="event_log"/>
 | 
			
		||||
    <table id="10" parent="2" name="links"/>
 | 
			
		||||
    <table id="11" parent="2" name="note_contents"/>
 | 
			
		||||
    <table id="12" parent="2" name="note_revisions"/>
 | 
			
		||||
    <table id="13" parent="2" name="notes"/>
 | 
			
		||||
    <table id="14" parent="2" name="options"/>
 | 
			
		||||
    <table id="15" parent="2" name="recent_notes"/>
 | 
			
		||||
    <table id="16" parent="2" name="source_ids"/>
 | 
			
		||||
    <table id="17" parent="2" name="sqlite_master">
 | 
			
		||||
      <System>1</System>
 | 
			
		||||
    </table>
 | 
			
		||||
    <table id="18" parent="2" name="sqlite_sequence">
 | 
			
		||||
      <System>1</System>
 | 
			
		||||
    </table>
 | 
			
		||||
    <table id="19" parent="2" name="sync"/>
 | 
			
		||||
    <column id="20" parent="6" name="apiTokenId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="21" parent="6" name="token">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="22" parent="6" name="utcDateCreated">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="23" parent="6" name="isDeleted">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="24" parent="6" name="hash">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="25" parent="6" name="sqlite_autoindex_api_tokens_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>apiTokenId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="26" parent="6">
 | 
			
		||||
      <ColNames>apiTokenId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_api_tokens_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="27" parent="7" name="attributeId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="28" parent="7" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="29" parent="7" name="type">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="30" parent="7" name="name">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="31" parent="7" name="value">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>''</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="32" parent="7" name="position">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="33" parent="7" name="utcDateCreated">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="34" parent="7" name="utcDateModified">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="35" parent="7" name="isDeleted">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="36" parent="7" name="hash">
 | 
			
		||||
      <Position>10</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="37" parent="7" name="isInheritable">
 | 
			
		||||
      <Position>11</Position>
 | 
			
		||||
      <DataType>int|0s</DataType>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="38" parent="7" name="sqlite_autoindex_attributes_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>attributeId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="39" parent="7" name="IDX_attributes_noteId_index">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="40" parent="7" name="IDX_attributes_name_value">
 | 
			
		||||
      <ColNames>name
 | 
			
		||||
value</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="41" parent="7" name="IDX_attributes_name_index">
 | 
			
		||||
      <ColNames>name</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="42" parent="7" name="IDX_attributes_value_index">
 | 
			
		||||
      <ColNames>value</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="43" parent="7">
 | 
			
		||||
      <ColNames>attributeId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_attributes_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="44" parent="8" name="branchId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="45" parent="8" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="46" parent="8" name="parentNoteId">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="47" parent="8" name="notePosition">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="48" parent="8" name="prefix">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="49" parent="8" name="isExpanded">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>BOOLEAN|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="50" parent="8" name="isDeleted">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="51" parent="8" name="utcDateModified">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="52" parent="8" name="utcDateCreated">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="53" parent="8" name="hash">
 | 
			
		||||
      <Position>10</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="54" parent="8" name="sqlite_autoindex_branches_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="55" parent="8" name="IDX_branches_noteId_parentNoteId">
 | 
			
		||||
      <ColNames>noteId
 | 
			
		||||
parentNoteId</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="56" parent="8" name="IDX_branches_noteId">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="57" parent="8" name="IDX_branches_parentNoteId">
 | 
			
		||||
      <ColNames>parentNoteId</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="58" parent="8">
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_branches_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="59" parent="9" name="eventId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="60" parent="9" name="noteId">
 | 
			
		||||
      <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>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <DefaultExpression>NULL</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="79" parent="11" name="hash">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="80" parent="11" name="utcDateModified">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="81" parent="11" name="sqlite_autoindex_note_contents_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="82" parent="11">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_note_contents_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="83" parent="12" name="noteRevisionId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="84" parent="12" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="85" parent="12" name="title">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="86" parent="12" name="content">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="87" parent="12" name="isProtected">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="88" parent="12" name="utcDateModifiedFrom">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="89" parent="12" name="utcDateModifiedTo">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="90" parent="12" name="dateModifiedFrom">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="91" parent="12" name="dateModifiedTo">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="92" parent="12" name="type">
 | 
			
		||||
      <Position>10</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>''</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="93" parent="12" name="mime">
 | 
			
		||||
      <Position>11</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>''</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="94" parent="12" name="hash">
 | 
			
		||||
      <Position>12</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="95" parent="12" name="sqlite_autoindex_note_revisions_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>noteRevisionId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="96" parent="12" name="IDX_note_revisions_noteId">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="97" parent="12" name="IDX_note_revisions_dateModifiedFrom">
 | 
			
		||||
      <ColNames>utcDateModifiedFrom</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="98" parent="12" name="IDX_note_revisions_dateModifiedTo">
 | 
			
		||||
      <ColNames>utcDateModifiedTo</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="99" parent="12">
 | 
			
		||||
      <ColNames>noteRevisionId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_note_revisions_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="100" parent="13" name="noteId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="101" parent="13" name="title">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>"note"</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="102" parent="13" name="isProtected">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="103" parent="13" name="type">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>'text'</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="104" parent="13" name="mime">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>'text/html'</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="105" parent="13" name="hash">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="106" parent="13" name="isDeleted">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="107" parent="13" name="dateCreated">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="108" parent="13" name="dateModified">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="109" parent="13" name="utcDateCreated">
 | 
			
		||||
      <Position>10</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="110" parent="13" name="utcDateModified">
 | 
			
		||||
      <Position>11</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="111" parent="13" name="sqlite_autoindex_notes_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="112" parent="13">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_notes_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="113" parent="14" name="name">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="114" parent="14" name="value">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="115" parent="14" name="isSynced">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="116" parent="14" name="hash">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="117" parent="14" name="utcDateCreated">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="118" parent="14" name="utcDateModified">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="119" parent="14" name="sqlite_autoindex_options_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>name</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="120" parent="14">
 | 
			
		||||
      <ColNames>name</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_options_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="121" parent="15" name="branchId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="122" parent="15" name="notePath">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="123" parent="15" name="hash">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="124" parent="15" name="utcDateCreated">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="125" parent="15" name="isDeleted">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="126" parent="15" name="sqlite_autoindex_recent_notes_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="127" parent="15">
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_recent_notes_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="128" parent="16" name="sourceId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="129" parent="16" name="utcDateCreated">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="130" parent="16" name="sqlite_autoindex_source_ids_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>sourceId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="131" parent="16">
 | 
			
		||||
      <ColNames>sourceId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_source_ids_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="132" parent="17" name="type">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="133" parent="17" name="name">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="134" parent="17" name="tbl_name">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="135" parent="17" name="rootpage">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>int|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="136" parent="17" name="sql">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="137" parent="18" name="name">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="138" parent="18" name="seq">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="139" parent="19" name="id">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <SequenceIdentity>1</SequenceIdentity>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="140" parent="19" name="entityName">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="141" parent="19" name="entityId">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="142" parent="19" name="sourceId">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="143" parent="19" name="utcSyncDate">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="144" parent="19" name="IDX_sync_entityName_entityId">
 | 
			
		||||
      <ColNames>entityName
 | 
			
		||||
entityId</ColNames>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="145" parent="19" name="IDX_sync_utcSyncDate">
 | 
			
		||||
      <ColNames>utcSyncDate</ColNames>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="146" parent="19">
 | 
			
		||||
      <ColNames>id</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
    </key>
 | 
			
		||||
  </database-model>
 | 
			
		||||
</dataSource>
 | 
			
		||||
@@ -1,2 +0,0 @@
 | 
			
		||||
#n:main
 | 
			
		||||
!<md> [0, 0, null, null, -2147483648, -2147483648]
 | 
			
		||||
							
								
								
									
										1
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,7 @@
 | 
			
		||||
<component name="InspectionProjectProfileManager">
 | 
			
		||||
  <profile version="1.0">
 | 
			
		||||
    <option name="myName" value="Project Default" />
 | 
			
		||||
    <inspection_tool class="JSUnfilteredForInLoop" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
			
		||||
    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
 | 
			
		||||
      <option name="processCode" value="true" />
 | 
			
		||||
      <option name="processLiterals" value="true" />
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							@@ -2,5 +2,6 @@
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="VcsDirectoryMappings">
 | 
			
		||||
    <mapping directory="" vcs="Git" />
 | 
			
		||||
    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
@@ -1,11 +1,9 @@
 | 
			
		||||
FROM node:10.15.3-alpine
 | 
			
		||||
FROM node:12.16.3-alpine
 | 
			
		||||
 | 
			
		||||
# Create app directory
 | 
			
		||||
WORKDIR /usr/src/app
 | 
			
		||||
 | 
			
		||||
# Copy both package.json and package-lock.json
 | 
			
		||||
# where available (npm@5+)
 | 
			
		||||
COPY package.json package-lock.json ./
 | 
			
		||||
COPY server-package.json package.json
 | 
			
		||||
 | 
			
		||||
# Install app dependencies
 | 
			
		||||
RUN set -x \
 | 
			
		||||
@@ -18,6 +16,7 @@ RUN set -x \
 | 
			
		||||
        make \
 | 
			
		||||
        nasm \
 | 
			
		||||
        libpng-dev \
 | 
			
		||||
        python \
 | 
			
		||||
    && npm install --production \
 | 
			
		||||
    && 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
 | 
			
		||||
 | 
			
		||||
* 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
 | 
			
		||||
* 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)
 | 
			
		||||
* 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
 | 
			
		||||
* 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)
 | 
			
		||||
* 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
 | 
			
		||||
* [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)
 | 
			
		||||
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) for easy saving of web content
 | 
			
		||||
 | 
			
		||||
## 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 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
 | 
			
		||||
```
 | 
			
		||||
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`
 | 
			
		||||
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 .
 | 
			
		||||
 | 
			
		||||
if [[ $VERSION != *"beta"* ]]; then
 | 
			
		||||
 
 | 
			
		||||
@@ -1,14 +1,27 @@
 | 
			
		||||
#!/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
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png
 | 
			
		||||
@@ -16,9 +29,16 @@ cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png
 | 
			
		||||
# removing software WebGL binaries because they are pretty huge and not necessary
 | 
			
		||||
rm -r $BUILD_DIR/swiftshader
 | 
			
		||||
 | 
			
		||||
cp bin/tpl/portable-trilium.sh $BUILD_DIR/
 | 
			
		||||
chmod 755 $BUILD_DIR/portable-trilium.sh
 | 
			
		||||
 | 
			
		||||
echo "Packaging linux x64 electron distribution..."
 | 
			
		||||
VERSION=`jq -r ".version" package.json`
 | 
			
		||||
 | 
			
		||||
cd dist
 | 
			
		||||
 | 
			
		||||
tar cJf trilium-linux-x64-${VERSION}.tar.xz trilium-linux-x64
 | 
			
		||||
 | 
			
		||||
cd ..
 | 
			
		||||
 | 
			
		||||
bin/build-debian.sh
 | 
			
		||||
@@ -1,27 +1,34 @@
 | 
			
		||||
#!/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
 | 
			
		||||
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
 | 
			
		||||
mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR
 | 
			
		||||
 | 
			
		||||
./bin/reset-local.sh
 | 
			
		||||
 | 
			
		||||
echo "Zipping mac x64 electron distribution..."
 | 
			
		||||
 | 
			
		||||
VERSION=`jq -r ".version" package.json`
 | 
			
		||||
 
 | 
			
		||||
@@ -1,40 +1,32 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
PKG_DIR=dist/trilium-linux-x64-server
 | 
			
		||||
NODE_VERSION=10.15.3
 | 
			
		||||
NODE_VERSION=12.16.3
 | 
			
		||||
 | 
			
		||||
rm -r $PKG_DIR
 | 
			
		||||
mkdir $PKG_DIR
 | 
			
		||||
cd $PKG_DIR
 | 
			
		||||
if [ "$1" != "DONTCOPY" ]
 | 
			
		||||
then
 | 
			
		||||
    ./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
 | 
			
		||||
tar xvfJ 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 ..
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
@@ -1,28 +1,37 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
BUILD_DIR=./dist/trilium-windows-x64
 | 
			
		||||
rm -rf $BUILD_DIR
 | 
			
		||||
SRC_DIR=./dist/trilium-windows-x64-src
 | 
			
		||||
 | 
			
		||||
if [ "$1" != "DONTCOPY" ]
 | 
			
		||||
then
 | 
			
		||||
    ./bin/copy-trilium.sh $SRC_DIR
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "Copying required windows 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/*
 | 
			
		||||
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/win-x64/sqlite/* node_modules/sqlite3/lib/binding/
 | 
			
		||||
cp bin/deps/win-x64/image/cjpeg.exe node_modules/mozjpeg/vendor/
 | 
			
		||||
cp bin/deps/win-x64/image/pngquant.exe node_modules/pngquant-bin/vendor/
 | 
			
		||||
cp bin/deps/win-x64/image/gifsicle.exe node_modules/giflossy/vendor/
 | 
			
		||||
cp -r bin/deps/win-x64/sqlite/* $SRC_DIR/node_modules/sqlite3/lib/binding/
 | 
			
		||||
cp bin/deps/win-x64/image/cjpeg.exe $SRC_DIR/node_modules/mozjpeg/vendor/
 | 
			
		||||
cp bin/deps/win-x64/image/pngquant.exe $SRC_DIR/node_modules/pngquant-bin/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
 | 
			
		||||
 | 
			
		||||
# removing software WebGL binaries because they are pretty huge and not necessary
 | 
			
		||||
rm -r $BUILD_DIR/swiftshader
 | 
			
		||||
 | 
			
		||||
./bin/reset-local.sh
 | 
			
		||||
cp bin/tpl/portable-trilium.bat $BUILD_DIR/
 | 
			
		||||
 | 
			
		||||
echo "Zipping windows x64 electron distribution..."
 | 
			
		||||
VERSION=`jq -r ".version" package.json`
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								bin/build.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								bin/build.sh
									
									
									
									
									
								
							@@ -1,21 +1,23 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
rm -r node_modules
 | 
			
		||||
 | 
			
		||||
npm install
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
bin/build-linux-x64.sh
 | 
			
		||||
# we'll just copy the same SRC dir to all the builds so we don't have to do npm install in each separately
 | 
			
		||||
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-debian.sh
 | 
			
		||||
bin/build-win-x64.sh DONTCOPY
 | 
			
		||||
 | 
			
		||||
bin/build-server.sh
 | 
			
		||||
bin/build-mac-x64.sh DONTCOPY
 | 
			
		||||
 | 
			
		||||
bin/build-linux-x64.sh DONTCOPY
 | 
			
		||||
 | 
			
		||||
bin/build-server.sh DONTCOPY
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								bin/copy-trilium.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										41
									
								
								bin/copy-trilium.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
if [[ $# -eq 0 ]] ; then
 | 
			
		||||
    echo "Missing argument of target directory"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
npm run webpack
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
find $DIR/libraries -name "*.map" -type f -delete
 | 
			
		||||
 | 
			
		||||
rm -r $DIR/src/public/app
 | 
			
		||||
 | 
			
		||||
rm -r $DIR/node_modules/sqlite3/build
 | 
			
		||||
rm -r $DIR/node_modules/sqlite3/deps
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
sed -i -e 's/app\/setup.js/app-dist\/setup.js/g' $DIR/src/views/setup.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"
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
export GITHUB_REPO=trilium
 | 
			
		||||
 | 
			
		||||
if [[ $# -eq 0 ]] ; then
 | 
			
		||||
    echo "Missing argument of new version"
 | 
			
		||||
    exit 1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
./node_modules/.bin/electron-rebuild --arch=x64
 | 
			
		||||
							
								
								
									
										4
									
								
								bin/tpl/portable-trilium.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								bin/tpl/portable-trilium.bat
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
SET DIR=%~dp0
 | 
			
		||||
SET TRILIUM_DATA_DIR=%DIR%\trilium-data
 | 
			
		||||
cd %DIR%
 | 
			
		||||
start trilium.exe
 | 
			
		||||
							
								
								
									
										7
									
								
								bin/tpl/portable-trilium.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								bin/tpl/portable-trilium.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
#!/usr/bin/env sh
 | 
			
		||||
 | 
			
		||||
DIR=`dirname "$0"`
 | 
			
		||||
export TRILIUM_DATA_DIR="$DIR/trilium-data"
 | 
			
		||||
 | 
			
		||||
"$DIR/trilium"
 | 
			
		||||
 | 
			
		||||
@@ -2,8 +2,13 @@
 | 
			
		||||
# Instance name can be used to distinguish between different instances
 | 
			
		||||
instanceName=
 | 
			
		||||
 | 
			
		||||
# Disable automatically generating desktop icon
 | 
			
		||||
# noDesktopIcon=true
 | 
			
		||||
 | 
			
		||||
[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
 | 
			
		||||
# true for TLS/SSL/HTTPS (secure), false for HTTP (unsecure).
 | 
			
		||||
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`
 | 
			
		||||
    );
 | 
			
		||||
							
								
								
									
										209
									
								
								db/schema.sql
									
									
									
									
									
								
							
							
						
						
									
										209
									
								
								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" (
 | 
			
		||||
                                          `sourceId`	TEXT NOT NULL,
 | 
			
		||||
                                          `utcDateCreated`	TEXT NOT NULL,
 | 
			
		||||
                                          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"
 | 
			
		||||
(
 | 
			
		||||
  apiTokenId TEXT PRIMARY KEY NOT NULL,
 | 
			
		||||
@@ -29,25 +10,6 @@ CREATE TABLE IF NOT EXISTS "api_tokens"
 | 
			
		||||
  utcDateCreated TEXT NOT NULL,
 | 
			
		||||
  isDeleted INT NOT NULL DEFAULT 0,
 | 
			
		||||
  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 "event_log" (
 | 
			
		||||
                                         `eventId`	TEXT NOT NULL PRIMARY KEY,
 | 
			
		||||
                                         `noteId`	TEXT,
 | 
			
		||||
                                         `comment`	TEXT,
 | 
			
		||||
                                         `utcDateCreated`	TEXT NOT NULL
 | 
			
		||||
);
 | 
			
		||||
CREATE TABLE IF NOT EXISTS "options"
 | 
			
		||||
(
 | 
			
		||||
  name TEXT not null PRIMARY KEY,
 | 
			
		||||
@@ -57,80 +19,6 @@ CREATE TABLE IF NOT EXISTS "options"
 | 
			
		||||
  utcDateCreated 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" (
 | 
			
		||||
                                                   `noteId`	TEXT NOT NULL,
 | 
			
		||||
                                                   `content`	TEXT NULL DEFAULT NULL,
 | 
			
		||||
@@ -146,3 +34,100 @@ CREATE TABLE recent_notes
 | 
			
		||||
    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>
 | 
			
		||||
    
 | 
			
		||||
        <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>
 | 
			
		||||
        
 | 
			
		||||
@@ -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>
 | 
			
		||||
    <tr>
 | 
			
		||||
        
 | 
			
		||||
@@ -180,8 +185,6 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@@ -239,6 +242,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -282,13 +287,13 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
        
 | 
			
		||||
@@ -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>
 | 
			
		||||
    <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>
 | 
			
		||||
            
 | 
			
		||||
                <td class="name"><code>utcDateCreated</code></td>
 | 
			
		||||
@@ -318,8 +349,6 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@@ -349,7 +378,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -377,6 +406,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -462,7 +493,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -485,6 +516,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h5>Returns:</h5>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
@@ -562,7 +595,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -585,6 +618,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h5>Returns:</h5>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
@@ -662,7 +697,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -685,6 +720,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h5>Returns:</h5>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
@@ -724,13 +761,13 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -28,7 +28,7 @@
 | 
			
		||||
 | 
			
		||||
<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.
 | 
			
		||||
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>
 | 
			
		||||
    <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>
 | 
			
		||||
            
 | 
			
		||||
                <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">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@@ -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>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -355,6 +384,8 @@ Each note can have multiple (at least one) branches, meaning it can be placed in
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </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>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -463,6 +494,8 @@ Each note can have multiple (at least one) branches, meaning it can be placed in
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h5>Returns:</h5>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
@@ -474,10 +507,109 @@ Each note can have multiple (at least one) branches, meaning it can be placed in
 | 
			
		||||
    </dt>
 | 
			
		||||
    <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>
 | 
			
		||||
@@ -505,13 +637,13 @@ Each note can have multiple (at least one) branches, meaning it can be placed in
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -178,6 +178,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -210,13 +212,13 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -28,7 +28,7 @@
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
        
 | 
			
		||||
@@ -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>
 | 
			
		||||
    <tr>
 | 
			
		||||
        
 | 
			
		||||
@@ -200,13 +205,36 @@
 | 
			
		||||
 | 
			
		||||
        <tr>
 | 
			
		||||
            
 | 
			
		||||
                <td class="name"><code>content</code></td>
 | 
			
		||||
                <td class="name"><code>contentLength</code></td>
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            <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">
 | 
			
		||||
            
 | 
			
		||||
                
 | 
			
		||||
<span class="param-type">string</span>
 | 
			
		||||
<span class="param-type">boolean</span>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
@@ -246,7 +274,7 @@
 | 
			
		||||
 | 
			
		||||
        <tr>
 | 
			
		||||
            
 | 
			
		||||
                <td class="name"><code>dateModifiedFrom</code></td>
 | 
			
		||||
                <td class="name"><code>dateLastEdited</code></td>
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            <td class="type">
 | 
			
		||||
@@ -269,7 +297,7 @@
 | 
			
		||||
 | 
			
		||||
        <tr>
 | 
			
		||||
            
 | 
			
		||||
                <td class="name"><code>dateModifiedTo</code></td>
 | 
			
		||||
                <td class="name"><code>dateCreated</code></td>
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            <td class="type">
 | 
			
		||||
@@ -292,7 +320,7 @@
 | 
			
		||||
 | 
			
		||||
        <tr>
 | 
			
		||||
            
 | 
			
		||||
                <td class="name"><code>utcDateModifiedFrom</code></td>
 | 
			
		||||
                <td class="name"><code>utcDateLastEdited</code></td>
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            <td class="type">
 | 
			
		||||
@@ -315,7 +343,30 @@
 | 
			
		||||
 | 
			
		||||
        <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">
 | 
			
		||||
@@ -341,8 +392,6 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@@ -372,7 +421,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -400,6 +449,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </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>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
        
 | 
			
		||||
@@ -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>
 | 
			
		||||
    <tr>
 | 
			
		||||
        
 | 
			
		||||
@@ -203,8 +208,6 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@@ -234,7 +237,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -262,6 +265,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -305,13 +310,13 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
        
 | 
			
		||||
@@ -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>
 | 
			
		||||
    <tr>
 | 
			
		||||
        
 | 
			
		||||
@@ -180,8 +185,6 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@@ -239,6 +242,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -282,13 +287,13 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} apiTokenId - primary key
 | 
			
		||||
 * @param {string} token
 | 
			
		||||
 * @param {boolean} isDeleted - true if API token is deleted
 | 
			
		||||
 * @param {string} utcDateCreated
 | 
			
		||||
 * @property {string} apiTokenId - primary key
 | 
			
		||||
 * @property {string} token
 | 
			
		||||
 * @property {boolean} isDeleted - true if API token is deleted
 | 
			
		||||
 * @property {string} utcDateCreated
 | 
			
		||||
 *
 | 
			
		||||
 * @extends Entity
 | 
			
		||||
 */
 | 
			
		||||
@@ -69,13 +69,13 @@ module.exports = ApiToken;</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -36,16 +36,17 @@ const sql = require('../services/sql');
 | 
			
		||||
/**
 | 
			
		||||
 * Attribute is key value pair owned by a note.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} attributeId
 | 
			
		||||
 * @param {string} noteId
 | 
			
		||||
 * @param {string} type
 | 
			
		||||
 * @param {string} name
 | 
			
		||||
 * @param {string} value
 | 
			
		||||
 * @param {int} position
 | 
			
		||||
 * @param {boolean} isInheritable
 | 
			
		||||
 * @param {boolean} isDeleted
 | 
			
		||||
 * @param {string} utcDateCreated
 | 
			
		||||
 * @param {string} utcDateModified
 | 
			
		||||
 * @property {string} attributeId
 | 
			
		||||
 * @property {string} noteId
 | 
			
		||||
 * @property {string} type
 | 
			
		||||
 * @property {string} name
 | 
			
		||||
 * @property {string} value
 | 
			
		||||
 * @property {int} position
 | 
			
		||||
 * @property {boolean} isInheritable
 | 
			
		||||
 * @property {boolean} isDeleted
 | 
			
		||||
 * @property {string|null} deleteId - ID identifying delete transaction
 | 
			
		||||
 * @property {string} utcDateCreated
 | 
			
		||||
 * @property {string} utcDateModified
 | 
			
		||||
 *
 | 
			
		||||
 * @extends Entity
 | 
			
		||||
 */
 | 
			
		||||
@@ -72,11 +73,7 @@ class Attribute extends Entity {
 | 
			
		||||
     * @returns {Promise<Note|null>}
 | 
			
		||||
     */
 | 
			
		||||
    async getNote() {
 | 
			
		||||
        if (!this.__note) {
 | 
			
		||||
            this.__note = await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.noteId]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this.__note;
 | 
			
		||||
        return await repository.getNote(this.noteId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -91,11 +88,7 @@ class Attribute extends Entity {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!this.__targetNote) {
 | 
			
		||||
            this.__targetNote = await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.value]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return this.__targetNote;
 | 
			
		||||
        return await repository.getNote(this.value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -107,6 +100,10 @@ class Attribute extends Entity {
 | 
			
		||||
 | 
			
		||||
    async beforeSaving() {
 | 
			
		||||
        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
 | 
			
		||||
            this.value = "";
 | 
			
		||||
        }
 | 
			
		||||
@@ -137,6 +134,21 @@ class Attribute extends Entity {
 | 
			
		||||
    // cannot be static!
 | 
			
		||||
    updatePojo(pojo) {
 | 
			
		||||
        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>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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.
 | 
			
		||||
 * 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
 | 
			
		||||
 * @param {string} noteId
 | 
			
		||||
 * @param {string} parentNoteId
 | 
			
		||||
 * @param {int} notePosition
 | 
			
		||||
 * @param {string} prefix
 | 
			
		||||
 * @param {boolean} isExpanded
 | 
			
		||||
 * @param {boolean} isDeleted
 | 
			
		||||
 * @param {string} utcDateModified
 | 
			
		||||
 * @param {string} utcDateCreated
 | 
			
		||||
 * @property {string} branchId - primary key
 | 
			
		||||
 * @property {string} noteId
 | 
			
		||||
 * @property {string} parentNoteId
 | 
			
		||||
 * @property {int} notePosition
 | 
			
		||||
 * @property {string} prefix
 | 
			
		||||
 * @property {boolean} isExpanded
 | 
			
		||||
 * @property {boolean} isDeleted
 | 
			
		||||
 * @property {string|null} deleteId - ID identifying delete transaction
 | 
			
		||||
 * @property {string} utcDateModified
 | 
			
		||||
 * @property {string} utcDateCreated
 | 
			
		||||
 *
 | 
			
		||||
 * @extends Entity
 | 
			
		||||
 */
 | 
			
		||||
@@ -53,24 +54,26 @@ class Branch extends Entity {
 | 
			
		||||
    static get entityName() { return "branches"; }
 | 
			
		||||
    static get primaryKeyName() { return "branchId"; }
 | 
			
		||||
    // 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 = {}) {
 | 
			
		||||
        super(row);
 | 
			
		||||
 | 
			
		||||
        // used to detect move in note tree
 | 
			
		||||
        this.origParentNoteId = this.parentNoteId;
 | 
			
		||||
    /** @returns {Promise<Note|null>} */
 | 
			
		||||
    async getNote() {
 | 
			
		||||
        return await repository.getNote(this.noteId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Note|null} */
 | 
			
		||||
    async getNote() {
 | 
			
		||||
        return await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.noteId]);
 | 
			
		||||
    /** @returns {Promise<Note|null>} */
 | 
			
		||||
    async getParentNote() {
 | 
			
		||||
        return await repository.getNote(this.parentNoteId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async beforeSaving() {
 | 
			
		||||
        if (this.notePosition === undefined) {
 | 
			
		||||
            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) {
 | 
			
		||||
@@ -88,9 +91,17 @@ class Branch extends Entity {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // cannot be static!
 | 
			
		||||
    updatePojo(pojo) {
 | 
			
		||||
        delete pojo.origParentNoteId;
 | 
			
		||||
    createClone(parentNoteId, notePosition) {
 | 
			
		||||
        return new Branch({
 | 
			
		||||
            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>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -96,13 +96,13 @@ module.exports = Entity;</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,8 +42,6 @@ const LABEL_DEFINITION = 'label-definition';
 | 
			
		||||
const RELATION = 'relation';
 | 
			
		||||
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.
 | 
			
		||||
 *
 | 
			
		||||
@@ -51,8 +49,11 @@ const STRING_MIME_TYPES = ["application/x-javascript"];
 | 
			
		||||
 * @property {string} type - one of "text", "code", "file" or "render"
 | 
			
		||||
 * @property {string} mime - MIME type, e.g. "text/html"
 | 
			
		||||
 * @property {string} title - note title
 | 
			
		||||
 * @property {int} contentLength - length of content
 | 
			
		||||
 * @property {boolean} isProtected - true if note is protected
 | 
			
		||||
 * @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} dateModified - local date time (with offset)
 | 
			
		||||
 * @property {string} utcDateCreated
 | 
			
		||||
@@ -63,7 +64,7 @@ const STRING_MIME_TYPES = ["application/x-javascript"];
 | 
			
		||||
class Note extends Entity {
 | 
			
		||||
    static get entityName() { return "notes"; }
 | 
			
		||||
    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
 | 
			
		||||
@@ -72,7 +73,7 @@ class Note extends Entity {
 | 
			
		||||
        super(row);
 | 
			
		||||
 | 
			
		||||
        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) */
 | 
			
		||||
        this.isContentAvailable = true;
 | 
			
		||||
 | 
			
		||||
@@ -81,7 +82,7 @@ class Note extends Entity {
 | 
			
		||||
            this.isContentAvailable = protectedSessionService.isProtectedSessionAvailable();
 | 
			
		||||
 | 
			
		||||
            if (this.isContentAvailable) {
 | 
			
		||||
                protectedSessionService.decryptNote(this);
 | 
			
		||||
                this.title = protectedSessionService.decryptString(this.title);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                this.title = "[protected]";
 | 
			
		||||
@@ -116,34 +117,46 @@ class Note extends Entity {
 | 
			
		||||
 | 
			
		||||
            if (this.isProtected) {
 | 
			
		||||
                if (this.isContentAvailable) {
 | 
			
		||||
                    protectedSessionService.decryptNoteContent(this);
 | 
			
		||||
                    this.content = this.content === null ? null : protectedSessionService.decrypt(this.content);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    this.content = "";
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.isStringNote()) {
 | 
			
		||||
                this.content = this.content === null
 | 
			
		||||
            return this.content === null
 | 
			
		||||
                ? ""
 | 
			
		||||
                : this.content.toString("UTF-8");
 | 
			
		||||
        }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else {
 | 
			
		||||
            return this.content;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Promise<*>} */
 | 
			
		||||
    async getJsonContent() {
 | 
			
		||||
        const content = await this.getContent();
 | 
			
		||||
 | 
			
		||||
        if (!content || !content.trim()) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return JSON.parse(content);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Promise} */
 | 
			
		||||
    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.contentLength = content.byteLength;
 | 
			
		||||
        await this.save();
 | 
			
		||||
 | 
			
		||||
        this.content = content;
 | 
			
		||||
@@ -152,12 +165,12 @@ class Note extends Entity {
 | 
			
		||||
            noteId: this.noteId,
 | 
			
		||||
            content: content,
 | 
			
		||||
            utcDateModified: dateUtils.utcNowDateTime(),
 | 
			
		||||
            hash: utils.hash(this.noteId + "|" + content)
 | 
			
		||||
            hash: utils.hash(this.noteId + "|" + content.toString())
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        if (this.isProtected) {
 | 
			
		||||
            if (this.isContentAvailable) {
 | 
			
		||||
                protectedSessionService.encryptNoteContent(pojo);
 | 
			
		||||
                pojo.content = protectedSessionService.encrypt(pojo.content);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                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) */
 | 
			
		||||
    isStringNote() {
 | 
			
		||||
        return ["text", "code", "relation-map", "search"].includes(this.type)
 | 
			
		||||
            || this.mime.startsWith('text/')
 | 
			
		||||
            || STRING_MIME_TYPES.includes(this.mime);
 | 
			
		||||
        return utils.isStringNote(this.type, this.mime);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {string} JS script environment - either "frontend" or "backend" */
 | 
			
		||||
@@ -221,11 +232,47 @@ class Note extends Entity {
 | 
			
		||||
        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() {
 | 
			
		||||
        return await repository.getEntities(`SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ?`, [this.noteId]);
 | 
			
		||||
    async getOwnedAttributes(type, name) {
 | 
			
		||||
        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
 | 
			
		||||
     */
 | 
			
		||||
    async getAttributes(name) {
 | 
			
		||||
    async getAttributes(type, name) {
 | 
			
		||||
        if (!this.__attributeCache) {
 | 
			
		||||
            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);
 | 
			
		||||
        }
 | 
			
		||||
        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
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
     */
 | 
			
		||||
    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() {
 | 
			
		||||
        this.__attributeCache = null;
 | 
			
		||||
        this.__ownedAttributeCache = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Promise<void>} */
 | 
			
		||||
@@ -299,29 +385,33 @@ class Note extends Entity {
 | 
			
		||||
            tree(noteId, level) AS (
 | 
			
		||||
                SELECT ?, 0
 | 
			
		||||
                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 notes ON notes.noteId = branches.parentNoteId
 | 
			
		||||
                WHERE notes.isDeleted = 0
 | 
			
		||||
                  AND branches.isDeleted = 0
 | 
			
		||||
                WHERE branches.isDeleted = 0
 | 
			
		||||
            ),
 | 
			
		||||
            treeWithAttrs(noteId, level) AS (
 | 
			
		||||
                SELECT * FROM tree
 | 
			
		||||
                UNION
 | 
			
		||||
                SELECT attributes.value, treeWithAttrs.level + 1 FROM attributes
 | 
			
		||||
                SELECT attributes.value, treeWithAttrs.level FROM attributes
 | 
			
		||||
                     JOIN treeWithAttrs ON treeWithAttrs.noteId = attributes.noteId
 | 
			
		||||
                WHERE attributes.isDeleted = 0
 | 
			
		||||
                  AND attributes.type = 'relation'
 | 
			
		||||
                  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
 | 
			
		||||
            WHERE attributes.isDeleted = 0 AND (attributes.isInheritable = 1 OR attributes.noteId = ?)
 | 
			
		||||
            ORDER BY level, noteId, position`, [this.noteId, this.noteId, this.noteId]);
 | 
			
		||||
            WHERE attributes.isDeleted = 0 AND (attributes.isInheritable = 1 OR treeWithAttrs.level = 0)
 | 
			
		||||
            ORDER BY level, noteId, position`, [this.noteId]);
 | 
			
		||||
        // 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.
 | 
			
		||||
 | 
			
		||||
        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()) {
 | 
			
		||||
                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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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} name - attribute name
 | 
			
		||||
@@ -379,7 +478,7 @@ class Note extends Entity {
 | 
			
		||||
    /**
 | 
			
		||||
     * @param {string} type - attribute type (label, relation, etc.)
 | 
			
		||||
     * @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) {
 | 
			
		||||
        const attr = await this.getAttribute(type, name);
 | 
			
		||||
@@ -387,6 +486,17 @@ class Note extends Entity {
 | 
			
		||||
        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.
 | 
			
		||||
     *
 | 
			
		||||
@@ -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} name - attribute name
 | 
			
		||||
@@ -414,10 +524,18 @@ class Note extends Entity {
 | 
			
		||||
     * @returns {Promise<void>}
 | 
			
		||||
     */
 | 
			
		||||
    async setAttribute(type, name, value) {
 | 
			
		||||
        const attributes = await this.getOwnedAttributes();
 | 
			
		||||
        let attr = attributes.find(attr => attr.type === type && (value === undefined || attr.value === value));
 | 
			
		||||
        const attributes = await this.loadOwnedAttributesToCache();
 | 
			
		||||
        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({
 | 
			
		||||
                noteId: this.noteId,
 | 
			
		||||
                type: type,
 | 
			
		||||
@@ -440,10 +558,10 @@ class Note extends Entity {
 | 
			
		||||
     * @returns {Promise<void>}
 | 
			
		||||
     */
 | 
			
		||||
    async removeAttribute(type, name, value) {
 | 
			
		||||
        const attributes = await this.getOwnedAttributes();
 | 
			
		||||
        const attributes = await this.loadOwnedAttributesToCache();
 | 
			
		||||
 | 
			
		||||
        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;
 | 
			
		||||
                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
 | 
			
		||||
     * @returns {Promise<boolean>} true if label exists (including inherited)
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
     * @returns {Promise<boolean>} true if relation exists (including inherited)
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
     * @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); }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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
 | 
			
		||||
     * @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); }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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
 | 
			
		||||
     * @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); }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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
 | 
			
		||||
     * @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); }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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
 | 
			
		||||
     * @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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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.
 | 
			
		||||
     *
 | 
			
		||||
@@ -519,7 +709,7 @@ class Note extends Entity {
 | 
			
		||||
    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} [value] - label value
 | 
			
		||||
@@ -528,7 +718,7 @@ class Note extends Entity {
 | 
			
		||||
    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} [value] - relation value (noteId)
 | 
			
		||||
@@ -641,28 +831,17 @@ class Note extends Entity {
 | 
			
		||||
    /**
 | 
			
		||||
     * Get list of links coming out of this note.
 | 
			
		||||
     *
 | 
			
		||||
     * @returns {Promise<Link[]>}
 | 
			
		||||
     * @deprecated - not intended for general use
 | 
			
		||||
     * @returns {Promise<Attribute[]>}
 | 
			
		||||
     */
 | 
			
		||||
    async getLinks() {
 | 
			
		||||
        return await repository.getEntities("SELECT * FROM links WHERE noteId = ? AND isDeleted = 0", [this.noteId]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get list of links targetting this note.
 | 
			
		||||
     *
 | 
			
		||||
     * @returns {Promise<Link[]>}
 | 
			
		||||
     */
 | 
			
		||||
    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]);
 | 
			
		||||
        return await repository.getEntities(`
 | 
			
		||||
            SELECT * 
 | 
			
		||||
            FROM attributes 
 | 
			
		||||
            WHERE noteId = ? AND 
 | 
			
		||||
                  isDeleted = 0 AND
 | 
			
		||||
                  type = 'relation' AND
 | 
			
		||||
                  name IN ('internalLink', 'imageLink', 'relationMapLink', 'includeNoteLink')`, [this.noteId]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -719,6 +898,36 @@ class Note extends Entity {
 | 
			
		||||
                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() {
 | 
			
		||||
        if (!this.isDeleted) {
 | 
			
		||||
            this.isDeleted = false;
 | 
			
		||||
@@ -732,6 +941,10 @@ class Note extends Entity {
 | 
			
		||||
            this.utcDateCreated = dateUtils.utcNowDateTime();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.contentLength === undefined) {
 | 
			
		||||
            this.contentLength = -1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        super.beforeSaving();
 | 
			
		||||
 | 
			
		||||
        if (this.isChanged) {
 | 
			
		||||
@@ -744,7 +957,7 @@ class Note extends Entity {
 | 
			
		||||
    updatePojo(pojo) {
 | 
			
		||||
        if (pojo.isProtected) {
 | 
			
		||||
            if (this.isContentAvailable) {
 | 
			
		||||
                protectedSessionService.encryptNote(pojo);
 | 
			
		||||
                pojo.title = protectedSessionService.encrypt(pojo.title);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // 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.__attributeCache;
 | 
			
		||||
        delete pojo.__ownedAttributeCache;
 | 
			
		||||
        delete pojo.content;
 | 
			
		||||
        /** zero references to contentHash, probably can be removed */
 | 
			
		||||
        delete pojo.contentHash;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -769,13 +984,13 @@ module.exports = Note;</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -31,28 +31,34 @@
 | 
			
		||||
const Entity = require('./entity');
 | 
			
		||||
const protectedSessionService = require('../services/protected_session');
 | 
			
		||||
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.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} noteRevisionId
 | 
			
		||||
 * @param {string} noteId
 | 
			
		||||
 * @param {string} type
 | 
			
		||||
 * @param {string} mime
 | 
			
		||||
 * @param {string} title
 | 
			
		||||
 * @param {string} content
 | 
			
		||||
 * @param {string} isProtected
 | 
			
		||||
 * @param {string} dateModifiedFrom
 | 
			
		||||
 * @param {string} dateModifiedTo
 | 
			
		||||
 * @param {string} utcDateModifiedFrom
 | 
			
		||||
 * @param {string} utcDateModifiedTo
 | 
			
		||||
 * @property {string} noteRevisionId
 | 
			
		||||
 * @property {string} noteId
 | 
			
		||||
 * @property {string} type
 | 
			
		||||
 * @property {string} mime
 | 
			
		||||
 * @property {string} title
 | 
			
		||||
 * @property {int} contentLength
 | 
			
		||||
 * @property {boolean} isErased
 | 
			
		||||
 * @property {boolean} isProtected
 | 
			
		||||
 * @property {string} dateLastEdited
 | 
			
		||||
 * @property {string} dateCreated
 | 
			
		||||
 * @property {string} utcDateLastEdited
 | 
			
		||||
 * @property {string} utcDateCreated
 | 
			
		||||
 * @property {string} utcDateModified
 | 
			
		||||
 *
 | 
			
		||||
 * @extends Entity
 | 
			
		||||
 */
 | 
			
		||||
class NoteRevision extends Entity {
 | 
			
		||||
    static get entityName() { return "note_revisions"; }
 | 
			
		||||
    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) {
 | 
			
		||||
        super(row);
 | 
			
		||||
@@ -60,20 +66,120 @@ class NoteRevision extends Entity {
 | 
			
		||||
        this.isProtected = !!this.isProtected;
 | 
			
		||||
 | 
			
		||||
        if (this.isProtected) {
 | 
			
		||||
            protectedSessionService.decryptNoteRevision(this);
 | 
			
		||||
            if (protectedSessionService.isProtectedSessionAvailable()) {
 | 
			
		||||
                this.title = protectedSessionService.decryptString(this.title);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                this.title = "[Protected]";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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() {
 | 
			
		||||
        if (this.isProtected) {
 | 
			
		||||
            protectedSessionService.encryptNoteRevision(this);
 | 
			
		||||
        super.beforeSaving();
 | 
			
		||||
 | 
			
		||||
        if (this.isChanged) {
 | 
			
		||||
            this.utcDateModified = dateUtils.utcNowDateTime();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        super.beforeSaving();
 | 
			
		||||
    // 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;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        delete pojo.content;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -87,13 +193,13 @@ module.exports = NoteRevision;</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} name
 | 
			
		||||
 * @param {string} value
 | 
			
		||||
 * @param {boolean} isSynced
 | 
			
		||||
 * @param {string} utcDateModified
 | 
			
		||||
 * @param {string} utcDateCreated
 | 
			
		||||
 * @property {string} name
 | 
			
		||||
 * @property {string} value
 | 
			
		||||
 * @property {boolean} isSynced
 | 
			
		||||
 * @property {string} utcDateModified
 | 
			
		||||
 * @property {string} utcDateCreated
 | 
			
		||||
 *
 | 
			
		||||
 * @extends Entity
 | 
			
		||||
 */
 | 
			
		||||
@@ -76,13 +76,13 @@ module.exports = Option;</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -34,10 +34,10 @@ const dateUtils = require('../services/date_utils');
 | 
			
		||||
/**
 | 
			
		||||
 * RecentNote represents recently visited note.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} noteId
 | 
			
		||||
 * @param {string} notePath
 | 
			
		||||
 * @param {boolean} isDeleted
 | 
			
		||||
 * @param {string} utcDateModified
 | 
			
		||||
 * @property {string} noteId
 | 
			
		||||
 * @property {string} notePath
 | 
			
		||||
 * @property {boolean} isDeleted
 | 
			
		||||
 * @property {string} utcDateModified
 | 
			
		||||
 *
 | 
			
		||||
 * @extends Entity
 | 
			
		||||
 */
 | 
			
		||||
@@ -69,13 +69,13 @@ module.exports = RecentNote;</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -558,7 +1053,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -588,13 +1083,13 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -50,13 +50,13 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
/*global document */
 | 
			
		||||
(function() {
 | 
			
		||||
    var source = document.getElementsByClassName('prettyprint source linenums');
 | 
			
		||||
    var i = 0;
 | 
			
		||||
    var lineNumber = 0;
 | 
			
		||||
    var lineId;
 | 
			
		||||
    var lines;
 | 
			
		||||
    var totalLines;
 | 
			
		||||
    var anchorHash;
 | 
			
		||||
(() => {
 | 
			
		||||
    const source = document.getElementsByClassName('prettyprint source linenums');
 | 
			
		||||
    let i = 0;
 | 
			
		||||
    let lineNumber = 0;
 | 
			
		||||
    let lineId;
 | 
			
		||||
    let lines;
 | 
			
		||||
    let totalLines;
 | 
			
		||||
    let anchorHash;
 | 
			
		||||
 | 
			
		||||
    if (source && source[0]) {
 | 
			
		||||
        anchorHash = document.location.hash.substring(1);
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
 | 
			
		||||
        for (; i < totalLines; i++) {
 | 
			
		||||
            lineNumber++;
 | 
			
		||||
            lineId = 'line' + lineNumber;
 | 
			
		||||
            lineId = `line${lineNumber}`;
 | 
			
		||||
            lines[i].id = lineId;
 | 
			
		||||
            if (lineId === anchorHash) {
 | 
			
		||||
                lines[i].className += ' selected';
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ const repository = require('./repository');
 | 
			
		||||
const axios = require('axios');
 | 
			
		||||
const dayjs = require('dayjs');
 | 
			
		||||
const cloningService = require('./cloning');
 | 
			
		||||
const messagingService = require('./messaging');
 | 
			
		||||
const ws = require('./ws.js');
 | 
			
		||||
const appInfo = require('./app_info');
 | 
			
		||||
const searchService = require('./search');
 | 
			
		||||
 | 
			
		||||
@@ -198,6 +198,66 @@ function BackendScriptApi(currentNote, apiParams) {
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
     * @property {string} type - attribute type - label, relation etc.
 | 
			
		||||
@@ -216,6 +276,7 @@ function BackendScriptApi(currentNote, apiParams) {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @method
 | 
			
		||||
     * @deprecated please use createNote() API method instead
 | 
			
		||||
     *
 | 
			
		||||
     * @param {string} parentNoteId - create new note under this parent
 | 
			
		||||
     * @param {string} title
 | 
			
		||||
@@ -223,23 +284,38 @@ function BackendScriptApi(currentNote, apiParams) {
 | 
			
		||||
     * @param {CreateNoteExtraOptions} [extraOptions={}]
 | 
			
		||||
     * @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;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 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);
 | 
			
		||||
        const parentNote = await repository.getNote(parentNoteId);
 | 
			
		||||
 | 
			
		||||
        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;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 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.
 | 
			
		||||
     *
 | 
			
		||||
@@ -308,9 +392,10 @@ function BackendScriptApi(currentNote, apiParams) {
 | 
			
		||||
     * This method looks similar to toggleNoteInParent() but differs because we're looking up branch by prefix.
 | 
			
		||||
     *
 | 
			
		||||
     * @method
 | 
			
		||||
     * @deprecated - this method is pretty confusing and serves specialized purpose only
 | 
			
		||||
     * @param {string} noteId
 | 
			
		||||
     * @param {string} prefix
 | 
			
		||||
     * @param {string} [parentNoteId]
 | 
			
		||||
     * @param {string|null} parentNoteId
 | 
			
		||||
     */
 | 
			
		||||
    this.setNoteToParent = treeService.setNoteToParent;
 | 
			
		||||
 | 
			
		||||
@@ -330,12 +415,10 @@ function BackendScriptApi(currentNote, apiParams) {
 | 
			
		||||
    this.sql = sql;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Trigger tree refresh in all connected clients. This is required when some tree change happens in
 | 
			
		||||
     * the backend.
 | 
			
		||||
     *
 | 
			
		||||
     * @returns {Promise<void>}
 | 
			
		||||
     * @method
 | 
			
		||||
     * @deprecated - this is now no-op since all the changes should be gracefully handled per widget
 | 
			
		||||
     */
 | 
			
		||||
    this.refreshTree = messagingService.refreshTree;
 | 
			
		||||
    this.refreshTree = () => {};
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = BackendScriptApi;</code></pre>
 | 
			
		||||
module.exports = BackendScriptApi;
 | 
			
		||||
</code></pre>
 | 
			
		||||
        </article>
 | 
			
		||||
    </section>
 | 
			
		||||
 | 
			
		||||
@@ -353,13 +437,13 @@ module.exports = BackendScriptApi;</code></pre>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -273,7 +273,7 @@ tr > th:last-child { border-right: 1px solid #ddd; }
 | 
			
		||||
    margin: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.prettyprint
 | 
			
		||||
.source
 | 
			
		||||
{
 | 
			
		||||
    border: 1px solid #ddd;
 | 
			
		||||
    width: 80%;
 | 
			
		||||
@@ -284,7 +284,7 @@ tr > th:last-child { border-right: 1px solid #ddd; }
 | 
			
		||||
    width: inherit;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.prettyprint code
 | 
			
		||||
.source code
 | 
			
		||||
{
 | 
			
		||||
    font-size: 100%;
 | 
			
		||||
    line-height: 18px;
 | 
			
		||||
 
 | 
			
		||||
@@ -93,7 +93,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -121,6 +121,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -181,7 +183,65 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -239,7 +299,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -297,7 +357,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -355,7 +415,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -413,7 +473,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -471,7 +531,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -547,7 +607,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -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>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
@@ -647,7 +811,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <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#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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -670,6 +834,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h5>Returns:</h5>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
@@ -713,13 +879,13 @@
 | 
			
		||||
</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="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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</nav>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</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>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -121,6 +121,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -453,7 +455,7 @@
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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 {
 | 
			
		||||
    constructor(treeCache, row) {
 | 
			
		||||
        this.treeCache = treeCache;
 | 
			
		||||
 | 
			
		||||
        this.update(row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    update(row) {
 | 
			
		||||
        /** @param {string} attributeId */
 | 
			
		||||
        this.attributeId = row.attributeId;
 | 
			
		||||
        /** @param {string} noteId */
 | 
			
		||||
@@ -43,12 +48,6 @@
 | 
			
		||||
        this.position = row.position;
 | 
			
		||||
        /** @param {boolean} 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} */
 | 
			
		||||
@@ -56,8 +55,17 @@
 | 
			
		||||
        return await this.treeCache.getNote(this.noteId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get jsonValue() {
 | 
			
		||||
        try {
 | 
			
		||||
            return JSON.parse(this.value);
 | 
			
		||||
        }
 | 
			
		||||
        catch (e) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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>
 | 
			
		||||
 | 
			
		||||
<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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</nav>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -30,11 +30,15 @@
 | 
			
		||||
class Branch {
 | 
			
		||||
    constructor(treeCache, row) {
 | 
			
		||||
        this.treeCache = treeCache;
 | 
			
		||||
 | 
			
		||||
        this.update(row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    update(row) {
 | 
			
		||||
        /** @param {string} primary key */
 | 
			
		||||
        this.branchId = row.branchId;
 | 
			
		||||
        /** @param {string} */
 | 
			
		||||
        this.noteId = row.noteId;
 | 
			
		||||
        this.note = null;
 | 
			
		||||
        /** @param {string} */
 | 
			
		||||
        this.parentNoteId = row.parentNoteId;
 | 
			
		||||
        /** @param {int} */
 | 
			
		||||
@@ -43,11 +47,18 @@ class Branch {
 | 
			
		||||
        this.prefix = row.prefix;
 | 
			
		||||
        /** @param {boolean} */
 | 
			
		||||
        this.isExpanded = !!row.isExpanded;
 | 
			
		||||
        /** @param {boolean} */
 | 
			
		||||
        this.isDeleted = !!row.isDeleted;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {NoteShort} */
 | 
			
		||||
    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 */
 | 
			
		||||
@@ -70,13 +81,13 @@ export default Branch;</code></pre>
 | 
			
		||||
</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="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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</nav>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</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.
 | 
			
		||||
 */
 | 
			
		||||
class NoteFull extends NoteShort {
 | 
			
		||||
    constructor(treeCache, row) {
 | 
			
		||||
        super(treeCache, row);
 | 
			
		||||
    constructor(treeCache, row, noteShort) {
 | 
			
		||||
        super(treeCache, row, []);
 | 
			
		||||
 | 
			
		||||
        /** @param {string} */
 | 
			
		||||
        this.content = row.content;
 | 
			
		||||
@@ -49,6 +49,12 @@ class NoteFull extends NoteShort {
 | 
			
		||||
 | 
			
		||||
        /** @param {string} */
 | 
			
		||||
        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">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@
 | 
			
		||||
    <section>
 | 
			
		||||
        <article>
 | 
			
		||||
            <pre class="prettyprint source linenums"><code>import server from '../services/server.js';
 | 
			
		||||
import Attribute from './attribute.js';
 | 
			
		||||
 | 
			
		||||
const LABEL = 'label';
 | 
			
		||||
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.
 | 
			
		||||
 * Its notable omission is the note content.
 | 
			
		||||
 */
 | 
			
		||||
class NoteShort {
 | 
			
		||||
    /**
 | 
			
		||||
     * @param {TreeCache} treeCache
 | 
			
		||||
     * @param {Object.<string, Object>} row
 | 
			
		||||
     */
 | 
			
		||||
    constructor(treeCache, row) {
 | 
			
		||||
        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} */
 | 
			
		||||
        this.noteId = row.noteId;
 | 
			
		||||
        /** @param {string} */
 | 
			
		||||
        this.title = row.title;
 | 
			
		||||
        /** @param {int} */
 | 
			
		||||
        this.contentLength = row.contentLength;
 | 
			
		||||
        /** @param {boolean} */
 | 
			
		||||
        this.isProtected = row.isProtected;
 | 
			
		||||
        this.isProtected = !!row.isProtected;
 | 
			
		||||
        /** @param {string} one of 'text', 'code', 'file' or 'render' */
 | 
			
		||||
        this.type = row.type;
 | 
			
		||||
        /** @param {string} content-type, e.g. "application/json" */
 | 
			
		||||
        this.mime = row.mime;
 | 
			
		||||
        /** @param {boolean} */
 | 
			
		||||
        this.archived = row.archived;
 | 
			
		||||
        this.cssClass = row.cssClass;
 | 
			
		||||
        this.isDeleted = row.isDeleted;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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} */
 | 
			
		||||
@@ -60,176 +111,341 @@ class NoteShort {
 | 
			
		||||
        return this.mime === "application/json";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Promise<Branch[]>} */
 | 
			
		||||
    async getBranches() {
 | 
			
		||||
        const branchIds = this.treeCache.parents[this.noteId].map(
 | 
			
		||||
            parentNoteId => this.treeCache.getBranchIdByChildParent(this.noteId, parentNoteId));
 | 
			
		||||
    async getContent() {
 | 
			
		||||
        // we're not caching content since these objects are in treeCache and as such pretty long lived
 | 
			
		||||
        const note = await server.get("notes/" + this.noteId);
 | 
			
		||||
 | 
			
		||||
        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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {boolean} */
 | 
			
		||||
    hasChildren() {
 | 
			
		||||
        return this.treeCache.children[this.noteId]
 | 
			
		||||
            && this.treeCache.children[this.noteId].length > 0;
 | 
			
		||||
        return this.children.length > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Promise<Branch[]>} */
 | 
			
		||||
    async getChildBranches() {
 | 
			
		||||
        if (!this.treeCache.children[this.noteId]) {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
    /** @returns {Branch[]} */
 | 
			
		||||
    getChildBranches() {
 | 
			
		||||
        // don't use Object.values() to guarantee order
 | 
			
		||||
        const branchIds = this.children.map(childNoteId => this.childToBranch[childNoteId]);
 | 
			
		||||
 | 
			
		||||
        const branchIds = this.treeCache.children[this.noteId].map(
 | 
			
		||||
            childNoteId => this.treeCache.getBranchIdByChildParent(childNoteId, this.noteId));
 | 
			
		||||
 | 
			
		||||
        return await this.treeCache.getBranches(branchIds);
 | 
			
		||||
        return this.treeCache.getBranches(branchIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {string[]} */
 | 
			
		||||
    getParentNoteIds() {
 | 
			
		||||
        return this.treeCache.parents[this.noteId] || [];
 | 
			
		||||
        return this.parents;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Promise<NoteShort[]>} */
 | 
			
		||||
    async getParentNotes() {
 | 
			
		||||
        return await this.treeCache.getNotes(this.getParentNoteIds());
 | 
			
		||||
    /** @returns {NoteShort[]} */
 | 
			
		||||
    getParentNotes() {
 | 
			
		||||
        return this.treeCache.getNotesFromCache(this.parents);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {string[]} */
 | 
			
		||||
    getChildNoteIds() {
 | 
			
		||||
        return this.treeCache.children[this.noteId] || [];
 | 
			
		||||
        return this.children;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @returns {Promise<NoteShort[]>} */
 | 
			
		||||
    async getChildNotes() {
 | 
			
		||||
        return await this.treeCache.getNotes(this.getChildNoteIds());
 | 
			
		||||
        return await this.treeCache.getNotes(this.children);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param {string} [name] - attribute name to filter
 | 
			
		||||
     * @returns {Promise<Attribute[]>}
 | 
			
		||||
     * @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
 | 
			
		||||
     */
 | 
			
		||||
    async getAttributes(name) {
 | 
			
		||||
        if (!this.attributeCache) {
 | 
			
		||||
            this.attributeCache = await server.get('notes/' + this.noteId + '/attributes');
 | 
			
		||||
    getOwnedAttributes(type, name) {
 | 
			
		||||
        const attrs = this.attributes
 | 
			
		||||
            .map(attributeId => this.treeCache.attributes[attributeId])
 | 
			
		||||
            .filter(attr => !!attr);
 | 
			
		||||
 | 
			
		||||
        return this.__filterAttrs(attrs, type, name)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        if (name) {
 | 
			
		||||
            return this.attributeCache.filter(attr => attr.name === 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());
 | 
			
		||||
            }
 | 
			
		||||
        else {
 | 
			
		||||
            return this.attributeCache;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.noteId !== 'root') {
 | 
			
		||||
            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());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        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
 | 
			
		||||
     * @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) {
 | 
			
		||||
        return (await this.getAttributes(name)).filter(attr => attr.type === LABEL);
 | 
			
		||||
    getOwnedLabels(name) {
 | 
			
		||||
        return this.getOwnedAttributes(LABEL, name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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) {
 | 
			
		||||
        return (await this.getAttributes(name)).filter(attr => attr.type === LABEL_DEFINITION);
 | 
			
		||||
    getLabels(name) {
 | 
			
		||||
        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
 | 
			
		||||
     * @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) {
 | 
			
		||||
        return (await this.getAttributes(name)).filter(attr => attr.type === RELATION);
 | 
			
		||||
    getOwnedRelations(name) {
 | 
			
		||||
        return this.getOwnedAttributes(RELATION, name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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) {
 | 
			
		||||
        return (await this.getAttributes(name)).filter(attr => attr.type === RELATION_DEFINITION);
 | 
			
		||||
    getRelations(name) {
 | 
			
		||||
        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} 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) {
 | 
			
		||||
        return !!await this.getAttribute(type, name);
 | 
			
		||||
    hasAttribute(type, name) {
 | 
			
		||||
        return !!this.getAttribute(type, name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param {string} type - attribute type (label, relation, etc.)
 | 
			
		||||
     * @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) {
 | 
			
		||||
        const attributes = await this.getAttributes();
 | 
			
		||||
 | 
			
		||||
        return attributes.find(attr => attr.type === type && attr.name === name);
 | 
			
		||||
    hasOwnedAttribute(type, name) {
 | 
			
		||||
        return !!this.getOwnedAttribute(type, name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param {string} type - attribute type (label, relation, etc.)
 | 
			
		||||
     * @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) {
 | 
			
		||||
        const attr = await this.getAttribute(type, name);
 | 
			
		||||
    getOwnedAttribute(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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @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); }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param {string} name - relation name
 | 
			
		||||
     * @returns {Promise<boolean>} true if relation exists (including inherited)
 | 
			
		||||
     */
 | 
			
		||||
    async hasRelation(name) { return await this.hasAttribute(RELATION, name); }
 | 
			
		||||
    hasOwnedLabel(name) { return this.hasOwnedAttribute(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
 | 
			
		||||
     * @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
 | 
			
		||||
     * @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
 | 
			
		||||
     * @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
 | 
			
		||||
     * @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) {
 | 
			
		||||
        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.
 | 
			
		||||
     */
 | 
			
		||||
    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() {
 | 
			
		||||
@@ -247,11 +473,14 @@ class NoteShort {
 | 
			
		||||
    get dto() {
 | 
			
		||||
        const dto = Object.assign({}, this);
 | 
			
		||||
        delete dto.treeCache;
 | 
			
		||||
        delete dto.archived;
 | 
			
		||||
        delete dto.attributeCache;
 | 
			
		||||
 | 
			
		||||
        return dto;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getCssClass() {
 | 
			
		||||
        const labels = this.getLabels('cssClass');
 | 
			
		||||
        return labels.map(l => l.value).join(' ');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default NoteShort;</code></pre>
 | 
			
		||||
@@ -264,13 +493,13 @@ export default NoteShort;</code></pre>
 | 
			
		||||
</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="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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</nav>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -94,6 +94,275 @@
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
        <h3 class="subsection-title">Methods</h3>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <h4 class="name" id="decorateWidget"><span class="type-signature"></span>decorateWidget<span class="signature">()</span><span class="type-signature"></span></h4>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<div class="description">
 | 
			
		||||
    for overriding
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="widgets_collapsible_widget.js.html">widgets/collapsible_widget.js</a>, <a href="widgets_collapsible_widget.js.html#line93">line 93</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <h4 class="name" id="doRenderBody"><span class="type-signature">(async) </span>doRenderBody<span class="signature">()</span><span class="type-signature"></span></h4>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<div class="description">
 | 
			
		||||
    for overriding
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="widgets_collapsible_widget.js.html">widgets/collapsible_widget.js</a>, <a href="widgets_collapsible_widget.js.html#line96">line 96</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <h4 class="name" id="widgetCollapsedStateChangedEvent"><span class="type-signature"></span>widgetCollapsedStateChangedEvent<span class="signature">()</span><span class="type-signature"></span></h4>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<div class="description">
 | 
			
		||||
    This event is used to synchronize collapsed state of all the tab-cached widgets since they are all rendered
 | 
			
		||||
separately but should behave uniformly for the user.
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<dl class="details">
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <dd class="tag-source"><ul class="dummy"><li>
 | 
			
		||||
        <a href="widgets_collapsible_widget.js.html">widgets/collapsible_widget.js</a>, <a href="widgets_collapsible_widget.js.html#line86">line 86</a>
 | 
			
		||||
    </li></ul></dd>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -204,7 +473,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>
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
@@ -303,7 +572,7 @@
 | 
			
		||||
    
 | 
			
		||||
    <dt class="tag-source">Source:</dt>
 | 
			
		||||
    <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>
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@@ -333,13 +602,13 @@
 | 
			
		||||
</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="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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</nav>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<script> prettyPrint(); </script>
 | 
			
		||||
 
 | 
			
		||||
@@ -50,13 +50,13 @@
 | 
			
		||||
</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="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>Global</h3><ul><li><a href="global.html#decorateWidget">decorateWidget</a></li><li><a href="global.html#doRenderBody">doRenderBody</a></li><li><a href="global.html#widgetCollapsedStateChangedEvent">widgetCollapsedStateChangedEvent</a></li></ul>
 | 
			
		||||
</nav>
 | 
			
		||||
 | 
			
		||||
<br class="clear">
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user