mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-29 17:26:38 +01:00 
			
		
		
		
	Compare commits
	
		
			35 Commits
		
	
	
		
			v0.30.2-be
			...
			v0.30.7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | cdb17ae937 | ||
|  | c240fb9896 | ||
|  | 4b41eddf44 | ||
|  | b51ac112a2 | ||
|  | c2e3a3fe04 | ||
|  | b2052a6ccd | ||
|  | a07479cd5a | ||
|  | 3820384f51 | ||
|  | 0610576e5a | ||
|  | efac7701eb | ||
|  | 27cee1cf33 | ||
|  | b4c6d9f800 | ||
|  | 24c8b39d8e | ||
|  | 0144dc12df | ||
|  | 65684550a8 | ||
|  | 6d09931a39 | ||
|  | 37d2a7939c | ||
|  | a432ad7483 | ||
|  | ae17e4dc60 | ||
|  | 02eddc347a | ||
|  | ee58bf3d5c | ||
|  | ecbaffa5f3 | ||
|  | fe86c09f22 | ||
|  | c8e01d6cce | ||
|  | 7c404f03db | ||
|  | ed1cf6aad5 | ||
|  | 9703fd61e2 | ||
|  | 16790e388b | ||
|  | b48474998b | ||
|  | 95d8f07458 | ||
|  | e628c30c89 | ||
|  | 52a8aae74f | ||
|  | 54b5898582 | ||
|  | 64974d75d5 | ||
|  | bd118027fb | 
							
								
								
									
										2
									
								
								db/migrations/0126__fill_sync_for_note_contents.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								db/migrations/0126__fill_sync_for_note_contents.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| INSERT OR REPLACE INTO sync (entityName, entityId, sourceId, syncDate) | ||||
| SELECT 'note_contents', noteContentId, '', '2019-03-02T18:07:29.182Z' FROM note_contents; | ||||
							
								
								
									
										6
									
								
								db/migrations/0127__fix_inconsistent_isProtected.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								db/migrations/0127__fix_inconsistent_isProtected.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| UPDATE notes SET title = 'Recovered protected note', isProtected = 0 WHERE noteId IN ( | ||||
|     SELECT noteId FROM notes JOIN note_contents USING(noteId) | ||||
|     WHERE notes.isProtected = 1 | ||||
|       AND note_contents.isProtected = 0 | ||||
|       AND notes.isDeleted = 0 | ||||
| ) | ||||
| @@ -350,7 +350,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line30">line 30</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line32">line 32</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -535,7 +535,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line304">line 304</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line308">line 308</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -700,7 +700,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line173">line 173</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line177">line 177</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -876,7 +876,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line315">line 315</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line319">line 319</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -980,7 +980,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line602">line 602</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line606">line 606</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1080,7 +1080,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line630">line 630</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line634">line 634</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1184,7 +1184,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line616">line 616</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line620">line 620</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1288,7 +1288,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line80">line 80</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line82">line 82</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1388,7 +1388,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line491">line 491</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line495">line 495</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1619,7 +1619,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line514">line 514</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line518">line 518</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1815,7 +1815,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line552">line 552</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line556">line 556</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2011,7 +2011,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line561">line 561</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line565">line 565</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2111,7 +2111,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line87">line 87</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line89">line 89</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2260,7 +2260,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line402">line 402</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line406">line 406</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2425,7 +2425,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line198">line 198</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line202">line 202</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2590,7 +2590,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line190">line 190</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line194">line 194</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2743,7 +2743,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line414">line 414</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line418">line 418</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2851,7 +2851,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line577">line 577</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line581">line 581</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2955,7 +2955,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line595">line 595</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line599">line 599</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -3055,7 +3055,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line63">line 63</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line65">line 65</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -3155,7 +3155,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line158">line 158</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line162">line 162</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -3259,7 +3259,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line642">line 642</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line646">line 646</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -3412,7 +3412,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line408">line 408</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line412">line 412</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -3577,7 +3577,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line214">line 214</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line218">line 218</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -3742,7 +3742,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line206">line 206</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line210">line 210</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -3895,7 +3895,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line426">line 426</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line430">line 430</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4051,7 +4051,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line420">line 420</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line424">line 424</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4159,7 +4159,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line568">line 568</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line572">line 572</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4259,7 +4259,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line139">line 139</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line143">line 143</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4367,7 +4367,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line586">line 586</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line590">line 590</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4467,7 +4467,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line165">line 165</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line169">line 169</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4643,7 +4643,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line295">line 295</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line299">line 299</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4747,7 +4747,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line609">line 609</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line613">line 613</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -4900,7 +4900,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line390">line 390</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line394">line 394</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5053,7 +5053,7 @@ | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line396">line 396</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line400">line 400</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5162,7 +5162,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line222">line 222</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line226">line 226</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5244,7 +5244,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line129">line 129</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line131">line 131</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5348,7 +5348,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line121">line 121</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line123">line 123</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5452,7 +5452,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line116">line 116</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line118">line 118</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5556,7 +5556,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line111">line 111</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line113">line 113</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5660,7 +5660,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line134">line 134</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line136">line 136</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5764,7 +5764,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line227">line 227</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line231">line 231</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -5991,7 +5991,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line373">line 373</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line377">line 377</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -6187,7 +6187,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line477">line 477</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line481">line 481</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -6383,7 +6383,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line486">line 486</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line490">line 490</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -6610,7 +6610,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line347">line 347</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line351">line 351</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -6710,7 +6710,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line94">line 94</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line96">line 96</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -6810,7 +6810,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line106">line 106</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line108">line 108</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -7006,7 +7006,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line459">line 459</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line463">line 463</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -7202,7 +7202,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line468">line 468</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line472">line 472</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -7460,7 +7460,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line330">line 330</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line334">line 334</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -7687,7 +7687,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line440">line 440</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line444">line 444</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -7914,7 +7914,7 @@ Cache is note instance scoped. | ||||
|      | ||||
|     <dt class="tag-source">Source:</dt> | ||||
|     <dd class="tag-source"><ul class="dummy"><li> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line450">line 450</a> | ||||
|         <a href="entities_note.js.html">entities/note.js</a>, <a href="entities_note.js.html#line454">line 454</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
|   | ||||
| @@ -41,6 +41,8 @@ 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. | ||||
|  * | ||||
| @@ -132,7 +134,7 @@ class Note extends Entity { | ||||
|  | ||||
|     /** @returns {Promise} */ | ||||
|     async setJsonContent(content) { | ||||
|         await this.setContent(JSON.stringify(content)); | ||||
|         await this.setContent(JSON.stringify(content, null, '\t')); | ||||
|     } | ||||
|  | ||||
|     /** @returns {boolean} true if this note is the root of the note tree. Root note has "root" noteId */ | ||||
| @@ -160,7 +162,9 @@ 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/'); | ||||
|         return ["text", "code", "relation-map", "search"].includes(this.type) | ||||
|             || this.mime.startsWith('text/') | ||||
|             || STRING_MIME_TYPES.includes(this.mime); | ||||
|     } | ||||
|  | ||||
|     /** @returns {string} JS script environment - either "frontend" or "backend" */ | ||||
| @@ -709,6 +713,7 @@ class Note extends Entity { | ||||
|         delete pojo.isContentAvailable; | ||||
|         delete pojo.__attributeCache; | ||||
|         delete pojo.titleCipherText; | ||||
|         delete pojo.noteContent; | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1244,7 +1244,7 @@ | ||||
|      | ||||
|  | ||||
|      | ||||
|     <h4 class="name" id="getCodeMimeTypes"><span class="type-signature"></span>getCodeMimeTypes<span class="signature">()</span><span class="type-signature"> → {array}</span></h4> | ||||
|     <h4 class="name" id="getActiveNote"><span class="type-signature"></span>getActiveNote<span class="signature">()</span><span class="type-signature"> → {<a href="NoteFull.html">NoteFull</a>}</span></h4> | ||||
|      | ||||
|  | ||||
|      | ||||
| @@ -1292,7 +1292,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#line236">line 236</a> | ||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line211">line 211</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1319,7 +1319,7 @@ | ||||
|  | ||||
|          | ||||
| <div class="param-desc"> | ||||
|     list of currently used code mime types | ||||
|     active note (loaded into right pane) | ||||
| </div> | ||||
|  | ||||
|  | ||||
| @@ -1330,7 +1330,7 @@ | ||||
|     </dt> | ||||
|     <dd> | ||||
|          | ||||
| <span class="param-type">array</span> | ||||
| <span class="param-type"><a href="NoteFull.html">NoteFull</a></span> | ||||
|  | ||||
|  | ||||
|     </dd> | ||||
| @@ -1348,7 +1348,7 @@ | ||||
|      | ||||
|  | ||||
|      | ||||
|     <h4 class="name" id="getCurrentNoteContent"><span class="type-signature"></span>getCurrentNoteContent<span class="signature">()</span><span class="type-signature"> → {string}</span></h4> | ||||
|     <h4 class="name" id="getActiveNoteContent"><span class="type-signature"></span>getActiveNoteContent<span class="signature">()</span><span class="type-signature"> → {string}</span></h4> | ||||
|      | ||||
|  | ||||
|      | ||||
| @@ -1423,7 +1423,7 @@ | ||||
|  | ||||
|          | ||||
| <div class="param-desc"> | ||||
|     content of currently loaded note in the editor (HTML, code etc.) | ||||
|     content of active note (loaded into right pane) | ||||
| </div> | ||||
|  | ||||
|  | ||||
| @@ -1452,6 +1452,110 @@ | ||||
|      | ||||
|  | ||||
|      | ||||
|     <h4 class="name" id="getCodeMimeTypes"><span class="type-signature"></span>getCodeMimeTypes<span class="signature">()</span><span class="type-signature"> → {array}</span></h4> | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| <dl class="details"> | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|     <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#line242">line 242</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
| </dl> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| <h5>Returns:</h5> | ||||
|  | ||||
|          | ||||
| <div class="param-desc"> | ||||
|     list of currently used code mime types | ||||
| </div> | ||||
|  | ||||
|  | ||||
|  | ||||
| <dl> | ||||
|     <dt> | ||||
|         Type | ||||
|     </dt> | ||||
|     <dd> | ||||
|          | ||||
| <span class="param-type">array</span> | ||||
|  | ||||
|  | ||||
|     </dd> | ||||
| </dl> | ||||
|  | ||||
|      | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|          | ||||
|              | ||||
|  | ||||
|      | ||||
|  | ||||
|      | ||||
|     <h4 class="name" id="getDefaultCodeMimeTypes"><span class="type-signature"></span>getDefaultCodeMimeTypes<span class="signature">()</span><span class="type-signature"> → {array}</span></h4> | ||||
|      | ||||
|  | ||||
| @@ -1500,7 +1604,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#line230">line 230</a> | ||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line236">line 236</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -1860,7 +1964,7 @@ otherwise (by e.g. createNoteLink()) | ||||
|      | ||||
|  | ||||
|      | ||||
|     <h4 class="name" id="isNoteStillLoaded"><span class="type-signature"></span>isNoteStillLoaded<span class="signature">()</span><span class="type-signature"> → {boolean}</span></h4> | ||||
|     <h4 class="name" id="isNoteStillActive"><span class="type-signature"></span>isNoteStillActive<span class="signature">()</span><span class="type-signature"> → {boolean}</span></h4> | ||||
|      | ||||
|  | ||||
|      | ||||
| @@ -1915,7 +2019,7 @@ note. | ||||
|      | ||||
|     <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#line216">line 216</a> | ||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line222">line 222</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2068,7 +2172,7 @@ note. | ||||
|      | ||||
|     <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#line224">line 224</a> | ||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line230">line 230</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2255,7 +2359,7 @@ note. | ||||
|      | ||||
|  | ||||
|      | ||||
|     <h4 class="name" id="protectCurrentNote"><span class="type-signature"></span>protectCurrentNote<span class="signature">()</span><span class="type-signature"></span></h4> | ||||
|     <h4 class="name" id="protectActiveNote"><span class="type-signature"></span>protectActiveNote<span class="signature">()</span><span class="type-signature"></span></h4> | ||||
|      | ||||
|  | ||||
|      | ||||
| @@ -2303,7 +2407,7 @@ note. | ||||
|      | ||||
|     <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#line253">line 253</a> | ||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line259">line 259</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2719,7 +2823,7 @@ Internally this serializes the anonymous function into string and sends it to ba | ||||
|      | ||||
|     <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#line242">line 242</a> | ||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line248">line 248</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
| @@ -2850,7 +2954,7 @@ Internally this serializes the anonymous function into string and sends it to ba | ||||
|      | ||||
|     <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#line248">line 248</a> | ||||
|         <a href="services_frontend_script_api.js.html">services/frontend_script_api.js</a>, <a href="services_frontend_script_api.js.html#line254">line 254</a> | ||||
|     </li></ul></dd> | ||||
|      | ||||
|  | ||||
|   | ||||
| @@ -228,9 +228,15 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null) { | ||||
|  | ||||
|     /** | ||||
|      * @method | ||||
|      * @returns {string} content of currently loaded note in the editor (HTML, code etc.) | ||||
|      * @returns {string} content of active note (loaded into right pane) | ||||
|      */ | ||||
|     this.getCurrentNoteContent = noteDetailService.getCurrentNoteContent; | ||||
|     this.getActiveNoteContent = noteDetailService.getCurrentNoteContent; | ||||
|  | ||||
|     /** | ||||
|      * @method | ||||
|      * @returns {NoteFull} active note (loaded into right pane) | ||||
|      */ | ||||
|     this.getActiveNote = noteDetailService.getCurrentNote; | ||||
|  | ||||
|     /** | ||||
|      * This method checks whether user navigated away from the note from which the scripts has been started. | ||||
| @@ -241,7 +247,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null) { | ||||
|      * @method | ||||
|      * @return {boolean} returns true if the original note is still loaded, false if user switched to another | ||||
|      */ | ||||
|     this.isNoteStillLoaded = () => { | ||||
|     this.isNoteStillActive = () => { | ||||
|         return this.originEntity.noteId === noteDetailService.getCurrentNoteId(); | ||||
|     }; | ||||
|  | ||||
| @@ -278,7 +284,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null) { | ||||
|     /** | ||||
|      * @method | ||||
|      */ | ||||
|     this.protectCurrentNote = protectedSessionService.protectNoteAndSendToServer; | ||||
|     this.protectActiveNote = protectedSessionService.protectNoteAndSendToServer; | ||||
| } | ||||
|  | ||||
| export default FrontendScriptApi;</code></pre> | ||||
|   | ||||
							
								
								
									
										4779
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4779
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -2,7 +2,7 @@ | ||||
|   "name": "trilium", | ||||
|   "productName": "Trilium Notes", | ||||
|   "description": "Trilium Notes", | ||||
|   "version": "0.30.2-beta", | ||||
|   "version": "0.30.7", | ||||
|   "license": "AGPL-3.0-only", | ||||
|   "main": "electron.js", | ||||
|   "bin": { | ||||
| @@ -37,7 +37,7 @@ | ||||
|     "express-session": "1.15.6", | ||||
|     "file-type": "10.8.0", | ||||
|     "fs-extra": "7.0.1", | ||||
|     "get-port": "4.1.0", | ||||
|     "get-port": "4.2.0", | ||||
|     "helmet": "3.15.1", | ||||
|     "html": "1.0.0", | ||||
|     "image-type": "3.0.0", | ||||
| @@ -62,7 +62,7 @@ | ||||
|     "session-file-store": "1.2.0", | ||||
|     "simple-node-logger": "18.12.22", | ||||
|     "sqlite": "3.0.2", | ||||
|     "tar-stream": "2.0.0", | ||||
|     "tar-stream": "2.0.1", | ||||
|     "turndown": "5.0.3", | ||||
|     "unescape": "1.0.1", | ||||
|     "ws": "6.1.4", | ||||
|   | ||||
| @@ -106,7 +106,7 @@ class Note extends Entity { | ||||
|  | ||||
|     /** @returns {Promise} */ | ||||
|     async setJsonContent(content) { | ||||
|         await this.setContent(JSON.stringify(content)); | ||||
|         await this.setContent(JSON.stringify(content, null, '\t')); | ||||
|     } | ||||
|  | ||||
|     /** @returns {boolean} true if this note is the root of the note tree. Root note has "root" noteId */ | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fafafa" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-shield"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg> | ||||
| <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-opacity="0.03" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-shield"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg> | ||||
| Before Width: | Height: | Size: 274 B After Width: | Height: | Size: 296 B | 
| @@ -17,7 +17,8 @@ import link from './services/link.js'; | ||||
| import messagingService from './services/messaging.js'; | ||||
| import noteDetailService from './services/note_detail.js'; | ||||
| import noteType from './services/note_type.js'; | ||||
| import protected_session from './services/protected_session.js'; | ||||
| import protectedSessionService from './services/protected_session.js'; | ||||
| import protectedSessionHolder from './services/protected_session_holder.js'; | ||||
| import searchNotesService from './services/search_notes.js'; | ||||
| import FrontendScriptApi from './services/frontend_script_api.js'; | ||||
| import ScriptContext from './services/script_context.js'; | ||||
| @@ -52,6 +53,8 @@ window.glob.getCurrentNote = noteDetailService.getCurrentNote; | ||||
| window.glob.requireLibrary = libraryLoader.requireLibrary; | ||||
| window.glob.ESLINT = libraryLoader.ESLINT; | ||||
|  | ||||
| protectedSessionHolder.setProtectedSessionId(null); | ||||
|  | ||||
| window.onerror = function (msg, url, lineNo, columnNo, error) { | ||||
|     const string = msg.toLowerCase(); | ||||
|  | ||||
|   | ||||
| @@ -137,6 +137,10 @@ function linkTypeChanged() { | ||||
|  | ||||
| $linkTypes.change(linkTypeChanged); | ||||
|  | ||||
| // return back focus to note text detail after quitting add link | ||||
| // the problem is that cursor position is reset | ||||
| $dialog.on("hidden.bs.modal", () => noteDetailText.focus()); | ||||
|  | ||||
| export default { | ||||
|     showDialog | ||||
| }; | ||||
| @@ -79,7 +79,7 @@ $form.submit(() => { | ||||
| function exportBranch(branchId, type, format, version) { | ||||
|     exportId = utils.randomString(10); | ||||
|  | ||||
|     const url = utils.getHost() + `/api/notes/${branchId}/export/${type}/${format}/${version}/${exportId}?protectedSessionId=` + encodeURIComponent(protectedSessionHolder.getProtectedSessionId()); | ||||
|     const url = utils.getHost() + `/api/notes/${branchId}/export/${type}/${format}/${version}/${exportId}`; | ||||
|  | ||||
|     utils.download(url); | ||||
| } | ||||
|   | ||||
| @@ -17,7 +17,7 @@ async function executeBundle(bundle, originEntity) { | ||||
|         }.call(apiContext)); | ||||
|     } | ||||
|     catch (e) { | ||||
|         infoService.showAndLogError(`Execution of script "${bundle.note.title}" (${bundle.note.noteId}) failed with error: ${e.message}`); | ||||
|         infoService.showAndLogError(`Execution of ${bundle.noteId} failed with error: ${e.message}`); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| const $contextMenuContainer = $("#context-menu-container"); | ||||
|  | ||||
| let dateContextMenuOpenedMs = 0; | ||||
|  | ||||
| function initContextMenu(event, itemContainer, selectContextMenuItem) { | ||||
|     event.stopPropagation(); | ||||
|  | ||||
| @@ -55,6 +57,8 @@ function initContextMenu(event, itemContainer, selectContextMenuItem) { | ||||
|         top = event.pageY - 10; | ||||
|     } | ||||
|  | ||||
|     dateContextMenuOpenedMs = Date.now(); | ||||
|  | ||||
|     $contextMenuContainer.css({ | ||||
|         display: "block", | ||||
|         top: top, | ||||
| @@ -62,8 +66,18 @@ function initContextMenu(event, itemContainer, selectContextMenuItem) { | ||||
|     }).addClass("show"); | ||||
| } | ||||
|  | ||||
| $(document).click(() => $contextMenuContainer.hide()); | ||||
| $(document).click(() => hideContextMenu()); | ||||
|  | ||||
| function hideContextMenu() { | ||||
|     // this date checking comes from change in FF66 - https://github.com/zadam/trilium/issues/468 | ||||
|     // "contextmenu" event also triggers "click" event which depending on the timing can close just opened context menu | ||||
|     // we might filter out right clicks, but then it's better if even right clicks close the context menu | ||||
|     if (Date.now() - dateContextMenuOpenedMs > 300) { | ||||
|         $contextMenuContainer.hide(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| export default { | ||||
|     initContextMenu | ||||
|     initContextMenu, | ||||
|     hideContextMenu | ||||
| } | ||||
| @@ -200,9 +200,15 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null) { | ||||
|  | ||||
|     /** | ||||
|      * @method | ||||
|      * @returns {string} content of currently loaded note in the editor (HTML, code etc.) | ||||
|      * @returns {string} content of active note (loaded into right pane) | ||||
|      */ | ||||
|     this.getCurrentNoteContent = noteDetailService.getCurrentNoteContent; | ||||
|     this.getActiveNoteContent = noteDetailService.getCurrentNoteContent; | ||||
|  | ||||
|     /** | ||||
|      * @method | ||||
|      * @returns {NoteFull} active note (loaded into right pane) | ||||
|      */ | ||||
|     this.getActiveNote = noteDetailService.getCurrentNote; | ||||
|  | ||||
|     /** | ||||
|      * This method checks whether user navigated away from the note from which the scripts has been started. | ||||
| @@ -213,7 +219,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null) { | ||||
|      * @method | ||||
|      * @return {boolean} returns true if the original note is still loaded, false if user switched to another | ||||
|      */ | ||||
|     this.isNoteStillLoaded = () => { | ||||
|     this.isNoteStillActive = () => { | ||||
|         return this.originEntity.noteId === noteDetailService.getCurrentNoteId(); | ||||
|     }; | ||||
|  | ||||
| @@ -250,7 +256,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null) { | ||||
|     /** | ||||
|      * @method | ||||
|      */ | ||||
|     this.protectCurrentNote = protectedSessionService.protectNoteAndSendToServer; | ||||
|     this.protectActiveNote = protectedSessionService.protectNoteAndSendToServer; | ||||
| } | ||||
|  | ||||
| export default FrontendScriptApi; | ||||
| @@ -117,7 +117,10 @@ async function saveNote() { | ||||
|     } | ||||
|  | ||||
|     note.title = $noteTitle.val(); | ||||
|  | ||||
|     if (note.noteContent != null) { // might be null for file/image | ||||
|         note.noteContent.content = getCurrentNoteContent(note); | ||||
|     } | ||||
|  | ||||
|     // it's important to set the flag back to false immediatelly after retrieving title and content | ||||
|     // otherwise we might overwrite another change (especially async code) | ||||
|   | ||||
| @@ -51,8 +51,7 @@ $openButton.click(() => { | ||||
|  | ||||
| function getFileUrl() { | ||||
|     // electron needs absolute URL so we extract current host, port, protocol | ||||
|     return utils.getHost() + "/api/notes/" + noteDetailService.getCurrentNoteId() | ||||
|         + "/download?protectedSessionId=" + encodeURIComponent(protectedSessionHolder.getProtectedSessionId()); | ||||
|     return utils.getHost() + "/api/notes/" + noteDetailService.getCurrentNoteId(); | ||||
| } | ||||
|  | ||||
| export default { | ||||
|   | ||||
| @@ -62,8 +62,7 @@ $copyToClipboardButton.click(() => { | ||||
|  | ||||
| function getFileUrl() { | ||||
|     // electron needs absolute URL so we extract current host, port, protocol | ||||
|     return utils.getHost() + "/api/notes/" + noteDetailService.getCurrentNoteId() | ||||
|         + "/download?protectedSessionId=" + encodeURIComponent(protectedSessionHolder.getProtectedSessionId()); | ||||
|     return utils.getHost() + "/api/notes/" + noteDetailService.getCurrentNoteId() + "/download"; | ||||
| } | ||||
|  | ||||
| export default { | ||||
|   | ||||
| @@ -1,9 +1,10 @@ | ||||
| import utils from "./utils.js"; | ||||
| import optionsInitService from './options_init.js'; | ||||
|  | ||||
| const PROTECTED_SESSION_ID_KEY = 'protectedSessionId'; | ||||
|  | ||||
| let lastProtectedSessionOperationDate = null; | ||||
| let protectedSessionTimeout = null; | ||||
| let protectedSessionId = null; | ||||
|  | ||||
| optionsInitService.optionsReady.then(options => protectedSessionTimeout = options.protectedSessionTimeout); | ||||
|  | ||||
| @@ -18,15 +19,16 @@ function setProtectedSessionTimeout(encSessTimeout) { | ||||
| } | ||||
|  | ||||
| function getProtectedSessionId() { | ||||
|     return protectedSessionId; | ||||
|     return utils.getCookie(PROTECTED_SESSION_ID_KEY); | ||||
| } | ||||
|  | ||||
| function setProtectedSessionId(id) { | ||||
|     protectedSessionId = id; | ||||
|     // using session cookie so that it disappears after browser/tab is closed | ||||
|     utils.setSessionCookie(PROTECTED_SESSION_ID_KEY, id); | ||||
| } | ||||
|  | ||||
| function resetProtectedSession() { | ||||
|     protectedSessionId = null; | ||||
|     utils.setSessionCookie(PROTECTED_SESSION_ID_KEY, null); | ||||
|  | ||||
|     // most secure solution - guarantees nothing remained in memory | ||||
|     // since this expires because user doesn't use the app, it shouldn't be disruptive | ||||
| @@ -34,12 +36,12 @@ function resetProtectedSession() { | ||||
| } | ||||
|  | ||||
| function isProtectedSessionAvailable() { | ||||
|     return protectedSessionId !== null; | ||||
|     return !!utils.getCookie(PROTECTED_SESSION_ID_KEY); | ||||
| } | ||||
|  | ||||
| function touchProtectedSession() { | ||||
|     if (isProtectedSessionAvailable()) { | ||||
|         lastProtectedSessionOperationDate = new Date(); | ||||
|         setProtectedSessionId(utils.getCookie(PROTECTED_SESSION_ID_KEY)); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -14,6 +14,8 @@ function getHeaders() { | ||||
|     // so hypothetical protectedSessionId becomes protectedsessionid on the backend | ||||
|     // also avoiding using underscores instead of dashes since nginx filters them out by default | ||||
|     return { | ||||
|         // protectedSessionId is normally carried in cookie, but for electron AJAX requests we bypass | ||||
|         // HTTP so no cookies and we need to pass it here explicitly | ||||
|         'trilium-protected-session-id': protectedSessionId, | ||||
|         'trilium-source-id': glob.sourceId | ||||
|     }; | ||||
|   | ||||
| @@ -417,6 +417,9 @@ function initFancyTree(tree) { | ||||
|             const node = data.node; | ||||
|             const noteId = node.data.noteId; | ||||
|  | ||||
|             // click event won't propagate so let's close context menu manually | ||||
|             contextMenuWidget.hideContextMenu(); | ||||
|  | ||||
|             setCurrentNotePathToHash(node); | ||||
|  | ||||
|             noteDetailService.switchToNote(noteId); | ||||
|   | ||||
| @@ -164,11 +164,23 @@ function isDesktop() { | ||||
|         || (!window.device && !/Mobi/.test(navigator.userAgent)); | ||||
| } | ||||
|  | ||||
| // cookie code below works for simple use cases only - ASCII only | ||||
| // not setting path so that cookies do not leak into other websites if multiplexed with reverse proxy | ||||
|  | ||||
| function setCookie(name, value) { | ||||
|     const date = new Date(Date.now() + 10 * 365 * 24 * 60 * 60 * 1000); | ||||
|     const expires = "; expires=" + date.toUTCString(); | ||||
|  | ||||
|     document.cookie = name + "=" + (value || "")  + expires + "; path=/"; | ||||
|     document.cookie = name + "=" + (value || "")  + expires + ";"; | ||||
| } | ||||
|  | ||||
| function setSessionCookie(name, value) { | ||||
|     document.cookie = name + "=" + (value || "") + ";"; | ||||
| } | ||||
|  | ||||
| function getCookie(name) { | ||||
|     const valueMatch = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); | ||||
|     return valueMatch ? valueMatch[2] : null; | ||||
| } | ||||
|  | ||||
| function getNoteTypeClass(type) { | ||||
| @@ -213,6 +225,8 @@ export default { | ||||
|     isMobile, | ||||
|     isDesktop, | ||||
|     setCookie, | ||||
|     setSessionCookie, | ||||
|     getCookie, | ||||
|     getNoteTypeClass, | ||||
|     getMimeTypeClass | ||||
| }; | ||||
| @@ -911,3 +911,8 @@ a.external:after, a[href^="http://"]:after, a[href^="https://"]:after { | ||||
|     content: "\2197"; | ||||
|     vertical-align: top; | ||||
| } | ||||
|  | ||||
| .card { | ||||
|     background-color: inherit !important; | ||||
|     border-color: var(--main-border-color) !important; | ||||
| } | ||||
| @@ -17,9 +17,13 @@ async function getRecentChanges() { | ||||
|             dateModifiedTo DESC  | ||||
|         LIMIT 1000`); | ||||
|  | ||||
|     if (!protectedSessionService.isProtectedSessionAvailable()) { | ||||
|     for (const change of recentChanges) { | ||||
|         if (change.current_isProtected) { | ||||
|             if (protectedSessionService.isProtectedSessionAvailable()) { | ||||
|                 change.title = protectedSessionService.decryptNoteTitle(change.noteId, change.title); | ||||
|                 change.current_title = protectedSessionService.decryptNoteTitle(change.noteId, change.current_title); | ||||
|             } | ||||
|             else { | ||||
|                 change.title = change.current_title = "[Protected]"; | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -4,8 +4,8 @@ const build = require('./build'); | ||||
| const packageJson = require('../../package'); | ||||
| const {TRILIUM_DATA_DIR} = require('./data_dir'); | ||||
|  | ||||
| const APP_DB_VERSION = 125; | ||||
| const SYNC_VERSION = 5; | ||||
| const APP_DB_VERSION = 127; | ||||
| const SYNC_VERSION = 6; | ||||
|  | ||||
| module.exports = { | ||||
|     appVersion: packageJson.version, | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| module.exports = { buildDate:"2019-02-28T22:33:33+01:00", buildRevision: "b5283d58bb937dacd8a890a40e09657c6d489364" }; | ||||
| module.exports = { buildDate:"2019-03-30T20:13:53+01:00", buildRevision: "c240fb98967d11ea3925c2c39b44138bb8e46f58" }; | ||||
|   | ||||
| @@ -357,6 +357,13 @@ async function findLogicIssues() { | ||||
|  | ||||
|             logFix(`Removed link ${linkId} because target note ${targetNoteId} is also deleted.`); | ||||
|         }); | ||||
|  | ||||
|     await findIssues(` | ||||
|           SELECT noteId | ||||
|           FROM notes | ||||
|           JOIN note_contents USING(noteId) | ||||
|           WHERE notes.isDeleted = 0 AND notes.isProtected != note_contents.isProtected`, | ||||
|         ({noteId}) => `Note ${noteId} has inconsistent isProtected in notes and note_contents tables`); | ||||
| } | ||||
|  | ||||
| async function runSyncRowChecks(entityName, key) { | ||||
|   | ||||
| @@ -8,6 +8,7 @@ const messagingService = require('./messaging'); | ||||
| const ApiToken = require('../entities/api_token'); | ||||
| const Branch = require('../entities/branch'); | ||||
| const Note = require('../entities/note'); | ||||
| const NoteContent = require('../entities/note_content'); | ||||
| const Attribute = require('../entities/attribute'); | ||||
| const NoteRevision = require('../entities/note_revision'); | ||||
| const RecentNote = require('../entities/recent_note'); | ||||
| @@ -33,6 +34,7 @@ async function getHashes() { | ||||
|  | ||||
|     const hashes = { | ||||
|         notes: await getHash(Note), | ||||
|         note_contents: await getHash(NoteContent), | ||||
|         branches: await getHash(Branch), | ||||
|         note_revisions: await getHash(NoteRevision), | ||||
|         recent_notes: await getHash(RecentNote), | ||||
|   | ||||
| @@ -116,7 +116,7 @@ async function getDateNote(dateStr) { | ||||
|             dateNote = await createNote(monthNote.noteId, noteTitle); | ||||
|         } | ||||
|  | ||||
|         await attributeService.createLabel(dateNote.noteId, DATE_LABEL, dateStr); | ||||
|         await attributeService.createLabel(dateNote.noteId, DATE_LABEL, dateStr.substr(0, 10)); | ||||
|     } | ||||
|  | ||||
|     return dateNote; | ||||
|   | ||||
| @@ -54,7 +54,7 @@ async function exportToOpml(exportContext, branch, version, res) { | ||||
|     res.setHeader('Content-Type', 'text/x-opml'); | ||||
|  | ||||
|     res.write(`<?xml version="1.0" encoding="UTF-8"?> | ||||
| <opml version="1.0"> | ||||
| <opml version="${version}"> | ||||
| <head> | ||||
| <title>Trilium export</title> | ||||
| </head> | ||||
|   | ||||
| @@ -13,7 +13,7 @@ const imageType = require('image-type'); | ||||
| const sanitizeFilename = require('sanitize-filename'); | ||||
|  | ||||
| async function saveImage(buffer, originalName, parentNoteId, shrinkImageSwitch) { | ||||
|     const finalImageBuffer = shrinkImageSwitch ? await shrinkImage(buffer) : buffer; | ||||
|     const finalImageBuffer = shrinkImageSwitch ? await shrinkImage(buffer, originalName) : buffer; | ||||
|  | ||||
|     const imageFormat = imageType(finalImageBuffer); | ||||
|  | ||||
| @@ -41,14 +41,14 @@ async function saveImage(buffer, originalName, parentNoteId, shrinkImageSwitch) | ||||
|     }; | ||||
| } | ||||
|  | ||||
| async function shrinkImage(buffer) { | ||||
| async function shrinkImage(buffer, originalName) { | ||||
|     const resizedImage = await resize(buffer); | ||||
|     let finalImageBuffer; | ||||
|  | ||||
|     try { | ||||
|         finalImageBuffer = await optimize(resizedImage); | ||||
|     } catch (e) { | ||||
|         log.error(e.message + e.stack); | ||||
|         log.error("Failed to optimize image '" + originalName + "\nStack: " + e.stack); | ||||
|         finalImageBuffer = resizedImage; | ||||
|     } | ||||
|     return finalImageBuffer; | ||||
|   | ||||
| @@ -5,6 +5,7 @@ const imageService = require('../../services/image'); | ||||
| const protectedSessionService = require('../protected_session'); | ||||
| const commonmark = require('commonmark'); | ||||
| const path = require('path'); | ||||
| const mimeTypes = require('mime-types'); | ||||
|  | ||||
| const CODE_MIME_TYPES = { | ||||
|     'text/plain': true, | ||||
| @@ -47,21 +48,23 @@ const CODE_MIME_TYPES = { | ||||
| }; | ||||
|  | ||||
| async function importSingleFile(importContext, file, parentNote) { | ||||
|     const mime = mimeTypes.lookup(file.originalname); | ||||
|  | ||||
|     if (importContext.textImportedAsText) { | ||||
|         if (file.mimetype === 'text/html') { | ||||
|         if (mime === 'text/html') { | ||||
|             return await importHtml(importContext, file, parentNote); | ||||
|         } else if (['text/markdown', 'text/x-markdown'].includes(file.mimetype)) { | ||||
|         } else if (['text/markdown', 'text/x-markdown'].includes(mime)) { | ||||
|             return await importMarkdown(importContext, file, parentNote); | ||||
|         } else if (file.mimetype === 'text/plain') { | ||||
|         } else if (mime === 'text/plain') { | ||||
|             return await importPlainText(importContext, file, parentNote); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (importContext.codeImportedAsCode && file.mimetype in CODE_MIME_TYPES) { | ||||
|     if (importContext.codeImportedAsCode && mime in CODE_MIME_TYPES) { | ||||
|         return await importCodeNote(importContext, file, parentNote); | ||||
|     } | ||||
|  | ||||
|     if (["image/jpeg", "image/gif", "image/png"].includes(file.mimetype)) { | ||||
|     if (["image/jpeg", "image/gif", "image/png"].includes(mime)) { | ||||
|         return await importImage(file, parentNote, importContext); | ||||
|     } | ||||
|  | ||||
| @@ -84,7 +87,7 @@ async function importFile(importContext, file, parentNote) { | ||||
|         target: 'into', | ||||
|         isProtected: parentNote.isProtected && protectedSessionService.isProtectedSessionAvailable(), | ||||
|         type: 'file', | ||||
|         mime: file.mimetype, | ||||
|         mime: mimeTypes.lookup(originalName), | ||||
|         attributes: [ | ||||
|             { type: "label", name: "originalFileName", value: originalName }, | ||||
|             { type: "label", name: "fileSize", value: size } | ||||
| @@ -99,7 +102,8 @@ async function importFile(importContext, file, parentNote) { | ||||
| async function importCodeNote(importContext, file, parentNote) { | ||||
|     const title = getFileNameWithoutExtension(file.originalname); | ||||
|     const content = file.buffer.toString("UTF-8"); | ||||
|     const mime = CODE_MIME_TYPES[file.mimetype] === true ? file.mimetype : CODE_MIME_TYPES[file.mimetype]; | ||||
|     const detectedMime = mimeTypes.lookup(file.originalname); | ||||
|     const mime = CODE_MIME_TYPES[detectedMime] === true ? detectedMime : CODE_MIME_TYPES[detectedMime]; | ||||
|  | ||||
|     const {note} = await noteService.createNote(parentNote.noteId, title, content, { | ||||
|         type: 'code', | ||||
|   | ||||
| @@ -95,7 +95,8 @@ async function createNewNote(parentNoteId, noteData) { | ||||
|  | ||||
|     note.noteContent = await new NoteContent({ | ||||
|         noteId: note.noteId, | ||||
|         content: noteData.content | ||||
|         content: noteData.content, | ||||
|         isProtected: noteData.isProtected | ||||
|     }).save(); | ||||
|  | ||||
|     const branch = await new Branch({ | ||||
| @@ -332,18 +333,20 @@ async function updateNote(noteId, noteUpdates) { | ||||
|  | ||||
|     const noteTitleChanged = note.title !== noteUpdates.title; | ||||
|  | ||||
|     noteUpdates.noteContent.content = await saveLinks(note, noteUpdates.noteContent.content); | ||||
|  | ||||
|     note.title = noteUpdates.title; | ||||
|     note.isProtected = noteUpdates.isProtected; | ||||
|     await note.save(); | ||||
|  | ||||
|     if (note.type !== 'file' && note.type !== 'image') { | ||||
|     const noteContent = await note.getNoteContent(); | ||||
|  | ||||
|     if (!['file', 'image'].includes(note.type)) { | ||||
|         noteUpdates.noteContent.content = await saveLinks(note, noteUpdates.noteContent.content); | ||||
|  | ||||
|         noteContent.content = noteUpdates.noteContent.content; | ||||
|     } | ||||
|  | ||||
|     noteContent.isProtected = noteUpdates.isProtected; | ||||
|     await noteContent.save(); | ||||
|     } | ||||
|  | ||||
|     if (noteTitleChanged) { | ||||
|         await triggerNoteTitleChanged(note); | ||||
|   | ||||
| @@ -15,7 +15,8 @@ function setDataKey(decryptedDataKey) { | ||||
| } | ||||
|  | ||||
| function setProtectedSessionId(req) { | ||||
|     cls.namespace.set('protectedSessionId', req.headers['trilium-protected-session-id']); | ||||
|     // cookies is the main storage but for electron header is used when bypassing HTTP | ||||
|     cls.namespace.set('protectedSessionId', req.headers['trilium-protected-session-id'] || req.cookies.protectedSessionId); | ||||
| } | ||||
|  | ||||
| function getProtectedSessionId() { | ||||
| @@ -62,7 +63,9 @@ function decryptNoteContent(noteContent) { | ||||
|     } | ||||
|  | ||||
|     try { | ||||
|         noteContent.content = dataEncryptionService.decrypt(getDataKey(), noteContent.content); | ||||
|         if (noteContent.content != null) { | ||||
|             noteContent.content = dataEncryptionService.decrypt(getDataKey(), noteContent.content.toString()); | ||||
|         } | ||||
|     } | ||||
|     catch (e) { | ||||
|         e.message = `Cannot decrypt note content for noteContentId=${noteContent.noteContentId}: ` + e.message; | ||||
| @@ -83,6 +86,7 @@ function decryptNoteRevision(hist) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     try { | ||||
|         if (hist.title) { | ||||
|             hist.title = dataEncryptionService.decryptString(dataKey, hist.title); | ||||
|         } | ||||
| @@ -90,6 +94,10 @@ function decryptNoteRevision(hist) { | ||||
|         if (hist.content) { | ||||
|             hist.content = dataEncryptionService.decryptString(dataKey, hist.content); | ||||
|         } | ||||
|     } | ||||
|     catch (e) { | ||||
|         throw new Error(`Decryption failed for note ${hist.noteId}: ` + e.message + " " + e.stack); | ||||
|     } | ||||
| } | ||||
|  | ||||
| function encryptNote(note) { | ||||
|   | ||||
| @@ -65,10 +65,10 @@ async function executeScript(script, params, startNoteId, currentNoteId, originE | ||||
|  | ||||
|     const bundle = await getScriptBundle(currentNote); | ||||
|  | ||||
|     return await executeBundle(bundle, startNote, originEntity); | ||||
|     return await executeBundle(bundle, { startNote, originEntity }); | ||||
| } | ||||
|  | ||||
| async function execute(ctx, script, params = []) { | ||||
| async function execute(ctx, script) { | ||||
|     // scripts run as "server" sourceId so clients recognize the changes as "foreign" and update themselves | ||||
|     cls.namespace.set('sourceId', sourceIdService.getCurrentSourceId()); | ||||
|  | ||||
|   | ||||
| @@ -1,7 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE en-export SYSTEM "http://xml.evernote.com/pub/evernote-export2.dtd"> | ||||
| <en-export export-date="20181101T193909Z" application="Evernote/Windows" version="6.x"> | ||||
| <note><title>Note</title><content><![CDATA[<?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd"> | ||||
|  | ||||
| <en-note><div>this is a note in a notebook in a stack</div></en-note>]]></content><created>20181101T193703Z</created><updated>20181101T193712Z</updated><note-attributes><author>Adam Zivner</author><source>desktop.win</source><source-application>evernote.win32</source-application></note-attributes></note></en-export> | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user