@lapis-notes/history 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +1 -1
  3. package/dist/repository/NOTICE.md +11 -0
  4. package/dist/repository/components/RepositoryAuthorAvatar.svelte +77 -0
  5. package/dist/repository/components/RepositoryAuthorAvatar.svelte.d.ts +11 -0
  6. package/dist/repository/components/RepositoryBackupStatus.svelte +236 -0
  7. package/dist/repository/components/RepositoryBackupStatus.svelte.d.ts +11 -0
  8. package/dist/repository/components/RepositoryChangedFiles.svelte +104 -0
  9. package/dist/repository/components/RepositoryChangedFiles.svelte.d.ts +13 -0
  10. package/dist/repository/components/RepositoryCommitMessage.svelte +93 -0
  11. package/dist/repository/components/RepositoryCommitMessage.svelte.d.ts +6 -0
  12. package/dist/repository/components/RepositoryCommitPicker.svelte +205 -0
  13. package/dist/repository/components/RepositoryCommitPicker.svelte.d.ts +17 -0
  14. package/dist/repository/components/RepositoryComparisonBar.svelte +71 -0
  15. package/dist/repository/components/RepositoryComparisonBar.svelte.d.ts +9 -0
  16. package/dist/repository/components/RepositoryComparisonTime.svelte +32 -0
  17. package/dist/repository/components/RepositoryComparisonTime.svelte.d.ts +6 -0
  18. package/dist/repository/components/RepositoryDiff.svelte +56 -0
  19. package/dist/repository/components/RepositoryDiff.svelte.d.ts +11 -0
  20. package/dist/repository/components/RepositoryDiffColumn.svelte +78 -0
  21. package/dist/repository/components/RepositoryDiffColumn.svelte.d.ts +14 -0
  22. package/dist/repository/components/RepositoryDiffControls.svelte +117 -0
  23. package/dist/repository/components/RepositoryDiffControls.svelte.d.ts +8 -0
  24. package/dist/repository/components/RepositoryFileHistory.svelte +170 -0
  25. package/dist/repository/components/RepositoryFileHistory.svelte.d.ts +10 -0
  26. package/dist/repository/components/RepositoryFileTitle.svelte +30 -0
  27. package/dist/repository/components/RepositoryFileTitle.svelte.d.ts +6 -0
  28. package/dist/repository/components/RepositoryGraph.svelte +216 -0
  29. package/dist/repository/components/RepositoryGraph.svelte.d.ts +19 -0
  30. package/dist/repository/components/RepositoryGraphSvg.svelte +110 -0
  31. package/dist/repository/components/RepositoryGraphSvg.svelte.d.ts +11 -0
  32. package/dist/repository/components/RepositoryIdentifiers.svelte +221 -0
  33. package/dist/repository/components/RepositoryIdentifiers.svelte.d.ts +15 -0
  34. package/dist/repository/components/RepositoryLogHeader.svelte +90 -0
  35. package/dist/repository/components/RepositoryLogHeader.svelte.d.ts +23 -0
  36. package/dist/repository/components/RepositoryOperationArguments.svelte +52 -0
  37. package/dist/repository/components/RepositoryOperationArguments.svelte.d.ts +6 -0
  38. package/dist/repository/components/RepositoryOperationColumn.svelte +163 -0
  39. package/dist/repository/components/RepositoryOperationColumn.svelte.d.ts +11 -0
  40. package/dist/repository/components/RepositoryOperationFiles.svelte +245 -0
  41. package/dist/repository/components/RepositoryOperationFiles.svelte.d.ts +14 -0
  42. package/dist/repository/components/RepositoryOperationMessage.svelte +169 -0
  43. package/dist/repository/components/RepositoryOperationMessage.svelte.d.ts +10 -0
  44. package/dist/repository/components/RepositoryOperationOption.svelte +183 -0
  45. package/dist/repository/components/RepositoryOperationOption.svelte.d.ts +10 -0
  46. package/dist/repository/components/RepositoryOperationParentPicker.svelte +188 -0
  47. package/dist/repository/components/RepositoryOperationParentPicker.svelte.d.ts +14 -0
  48. package/dist/repository/components/RepositoryOperationPinPicker.svelte +170 -0
  49. package/dist/repository/components/RepositoryOperationPinPicker.svelte.d.ts +13 -0
  50. package/dist/repository/components/RepositoryOperationRail.svelte +136 -0
  51. package/dist/repository/components/RepositoryOperationRail.svelte.d.ts +9 -0
  52. package/dist/repository/components/RepositoryOperationTarget.svelte +99 -0
  53. package/dist/repository/components/RepositoryOperationTarget.svelte.d.ts +8 -0
  54. package/dist/repository/components/RepositoryOperations.svelte +199 -0
  55. package/dist/repository/components/RepositoryOperations.svelte.d.ts +12 -0
  56. package/dist/repository/components/RepositoryPanel.svelte +207 -0
  57. package/dist/repository/components/RepositoryPanel.svelte.d.ts +15 -0
  58. package/dist/repository/components/RepositoryParentSummary.svelte +52 -0
  59. package/dist/repository/components/RepositoryParentSummary.svelte.d.ts +10 -0
  60. package/dist/repository/components/RepositoryPickerSearch.svelte +51 -0
  61. package/dist/repository/components/RepositoryPickerSearch.svelte.d.ts +11 -0
  62. package/dist/repository/components/RepositoryRestoreDialog.svelte +81 -0
  63. package/dist/repository/components/RepositoryRestoreDialog.svelte.d.ts +7 -0
  64. package/dist/repository/components/RepositoryRevisionActions.svelte +53 -0
  65. package/dist/repository/components/RepositoryRevisionActions.svelte.d.ts +9 -0
  66. package/dist/repository/components/RepositoryRevisionFiles.svelte +110 -0
  67. package/dist/repository/components/RepositoryRevisionFiles.svelte.d.ts +14 -0
  68. package/dist/repository/components/RepositoryRevisionOption.svelte +60 -0
  69. package/dist/repository/components/RepositoryRevisionOption.svelte.d.ts +9 -0
  70. package/dist/repository/components/RepositoryRevisionPicker.svelte +165 -0
  71. package/dist/repository/components/RepositoryRevisionPicker.svelte.d.ts +14 -0
  72. package/dist/repository/components/RepositoryRevisions.svelte +115 -0
  73. package/dist/repository/components/RepositoryRevisions.svelte.d.ts +20 -0
  74. package/dist/repository/components/RepositoryShell.svelte +44 -0
  75. package/dist/repository/components/RepositoryShell.svelte.d.ts +11 -0
  76. package/dist/repository/components/RepositorySkeleton.svelte +138 -0
  77. package/dist/repository/components/RepositorySkeleton.svelte.d.ts +7 -0
  78. package/dist/repository/components/RepositorySourcePicker.svelte +114 -0
  79. package/dist/repository/components/RepositorySourcePicker.svelte.d.ts +7 -0
  80. package/dist/repository/components/RepositoryUpstreamActions.svelte +125 -0
  81. package/dist/repository/components/RepositoryUpstreamActions.svelte.d.ts +8 -0
  82. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte +290 -0
  83. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte.d.ts +11 -0
  84. package/dist/repository/components/RepositoryWorkspacePicker.svelte +158 -0
  85. package/dist/repository/components/RepositoryWorkspacePicker.svelte.d.ts +11 -0
  86. package/dist/repository/components/backup/AdoptionSettings.svelte +95 -0
  87. package/dist/repository/components/backup/AdoptionSettings.svelte.d.ts +7 -0
  88. package/dist/repository/components/backup/BackupCard.svelte +79 -0
  89. package/dist/repository/components/backup/BackupCard.svelte.d.ts +14 -0
  90. package/dist/repository/components/backup/BackupField.svelte +45 -0
  91. package/dist/repository/components/backup/BackupField.svelte.d.ts +10 -0
  92. package/dist/repository/components/backup/BackupSelect.svelte +71 -0
  93. package/dist/repository/components/backup/BackupSelect.svelte.d.ts +35 -0
  94. package/dist/repository/components/backup/BackupSettings.svelte +122 -0
  95. package/dist/repository/components/backup/BackupSettings.svelte.d.ts +18 -0
  96. package/dist/repository/components/backup/BackupSettingsField.svelte +13 -0
  97. package/dist/repository/components/backup/BackupSettingsField.svelte.d.ts +4 -0
  98. package/dist/repository/components/backup/ForgeAccounts.svelte +231 -0
  99. package/dist/repository/components/backup/ForgeAccounts.svelte.d.ts +9 -0
  100. package/dist/repository/components/backup/ForgeAuthorization.svelte +267 -0
  101. package/dist/repository/components/backup/ForgeAuthorization.svelte.d.ts +9 -0
  102. package/dist/repository/components/backup/ForgeIcon.svelte +21 -0
  103. package/dist/repository/components/backup/ForgeIcon.svelte.d.ts +7 -0
  104. package/dist/repository/components/backup/PublicationRecovery.svelte +129 -0
  105. package/dist/repository/components/backup/PublicationRecovery.svelte.d.ts +11 -0
  106. package/dist/repository/components/backup/RemoteSettings.svelte +288 -0
  107. package/dist/repository/components/backup/RemoteSettings.svelte.d.ts +11 -0
  108. package/dist/repository/components/backup/RepositorySettingsPage.svelte +51 -0
  109. package/dist/repository/components/backup/RepositorySettingsPage.svelte.d.ts +4 -0
  110. package/dist/repository/components/backup/StorageSettings.svelte +158 -0
  111. package/dist/repository/components/backup/StorageSettings.svelte.d.ts +7 -0
  112. package/dist/repository/components/backup/SyncConflictEditor.svelte +158 -0
  113. package/dist/repository/components/backup/SyncConflictEditor.svelte.d.ts +9 -0
  114. package/dist/repository/components/backup/SyncSettings.svelte +97 -0
  115. package/dist/repository/components/backup/SyncSettings.svelte.d.ts +9 -0
  116. package/dist/repository/components/backup/adoption-settings.d.ts +7 -0
  117. package/dist/repository/components/backup/adoption-settings.js +42 -0
  118. package/dist/repository/components/backup/backup-settings.d.ts +35 -0
  119. package/dist/repository/components/backup/backup-settings.js +96 -0
  120. package/dist/repository/components/backup/forge-icons.d.ts +10 -0
  121. package/dist/repository/components/backup/forge-icons.js +11 -0
  122. package/dist/repository/components/backup/remote-restore.d.ts +3 -0
  123. package/dist/repository/components/backup/remote-restore.js +17 -0
  124. package/dist/repository/components/backup/storage-settings.d.ts +8 -0
  125. package/dist/repository/components/backup/storage-settings.js +23 -0
  126. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte +212 -0
  127. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte.d.ts +14 -0
  128. package/dist/repository/components/blame/RepositoryBlameGroup.svelte +189 -0
  129. package/dist/repository/components/blame/RepositoryBlameGroup.svelte.d.ts +20 -0
  130. package/dist/repository/components/blame/RepositoryBlamePanel.svelte +148 -0
  131. package/dist/repository/components/blame/RepositoryBlamePanel.svelte.d.ts +13 -0
  132. package/dist/repository/components/blame/RepositoryBlameRows.svelte +137 -0
  133. package/dist/repository/components/blame/RepositoryBlameRows.svelte.d.ts +32 -0
  134. package/dist/repository/components/blame/RepositoryBlameView.svelte +121 -0
  135. package/dist/repository/components/blame/RepositoryBlameView.svelte.d.ts +16 -0
  136. package/dist/repository/components/blame/blame-view.d.ts +16 -0
  137. package/dist/repository/components/blame/blame-view.js +73 -0
  138. package/dist/repository/components/blame/editor-actions.d.ts +3 -0
  139. package/dist/repository/components/blame/editor-actions.js +53 -0
  140. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte +83 -0
  141. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte.d.ts +13 -0
  142. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte +93 -0
  143. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte.d.ts +16 -0
  144. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte +84 -0
  145. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte.d.ts +21 -0
  146. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte +35 -0
  147. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte.d.ts +9 -0
  148. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte +133 -0
  149. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte.d.ts +12 -0
  150. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte +105 -0
  151. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte.d.ts +23 -0
  152. package/dist/repository/components/conflicts/RepositoryConflictText.svelte +104 -0
  153. package/dist/repository/components/conflicts/RepositoryConflictText.svelte.d.ts +26 -0
  154. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte +52 -0
  155. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte.d.ts +7 -0
  156. package/dist/repository/components/conflicts/repository-conflict-file-tree.css +73 -0
  157. package/dist/repository/components/conflicts/repository-conflicts.css +125 -0
  158. package/dist/repository/components/file-history-view.d.ts +15 -0
  159. package/dist/repository/components/file-history-view.js +110 -0
  160. package/dist/repository/components/operation-view.d.ts +16 -0
  161. package/dist/repository/components/operation-view.js +95 -0
  162. package/dist/repository/components/repository-backup.d.ts +22 -0
  163. package/dist/repository/components/repository-backup.js +75 -0
  164. package/dist/repository/components/repository-column-chrome.css +35 -0
  165. package/dist/repository/components/repository-commit-picker.css +55 -0
  166. package/dist/repository/components/repository-feedback.d.ts +7 -0
  167. package/dist/repository/components/repository-feedback.js +40 -0
  168. package/dist/repository/components/repository-identifiers.css +199 -0
  169. package/dist/repository/components/repository-navigation.d.ts +4 -0
  170. package/dist/repository/components/repository-navigation.js +16 -0
  171. package/dist/repository/components/repository-operation-column.css +112 -0
  172. package/dist/repository/components/repository-picker-options.css +11 -0
  173. package/dist/repository/components/repository-plugin.d.ts +33 -0
  174. package/dist/repository/components/repository-plugin.js +191 -0
  175. package/dist/repository/components/repository-review-identifiers.css +50 -0
  176. package/dist/repository/components/repository-status.d.ts +13 -0
  177. package/dist/repository/components/repository-status.js +227 -0
  178. package/dist/repository/components/repository-sync.d.ts +13 -0
  179. package/dist/repository/components/repository-sync.js +93 -0
  180. package/dist/repository/components/repository-tools.d.ts +3 -0
  181. package/dist/repository/components/repository-tools.js +13 -0
  182. package/dist/repository/components/repository-view.d.ts +16 -0
  183. package/dist/repository/components/repository-view.js +140 -0
  184. package/dist/repository/components/restore-controller.d.ts +9 -0
  185. package/dist/repository/components/restore-controller.js +44 -0
  186. package/dist/repository/components/search/search-provider.d.ts +3 -0
  187. package/dist/repository/components/search/search-provider.js +185 -0
  188. package/dist/repository/controllers/adoption-controller.d.ts +29 -0
  189. package/dist/repository/controllers/adoption-controller.js +145 -0
  190. package/dist/repository/controllers/adoption.d.ts +30 -0
  191. package/dist/repository/controllers/adoption.js +21 -0
  192. package/dist/repository/controllers/ai-history.d.ts +57 -0
  193. package/dist/repository/controllers/ai-history.js +51 -0
  194. package/dist/repository/controllers/author.d.ts +2 -0
  195. package/dist/repository/controllers/author.js +11 -0
  196. package/dist/repository/controllers/background-work.d.ts +14 -0
  197. package/dist/repository/controllers/background-work.js +57 -0
  198. package/dist/repository/controllers/backup-follow.d.ts +5 -0
  199. package/dist/repository/controllers/backup-follow.js +29 -0
  200. package/dist/repository/controllers/backup.d.ts +39 -0
  201. package/dist/repository/controllers/backup.js +129 -0
  202. package/dist/repository/controllers/blame-chunks.d.ts +13 -0
  203. package/dist/repository/controllers/blame-chunks.js +51 -0
  204. package/dist/repository/controllers/blame-controller.d.ts +17 -0
  205. package/dist/repository/controllers/blame-controller.js +148 -0
  206. package/dist/repository/controllers/blame-model.d.ts +25 -0
  207. package/dist/repository/controllers/blame-model.js +31 -0
  208. package/dist/repository/controllers/blame-preferences.d.ts +3 -0
  209. package/dist/repository/controllers/blame-preferences.js +18 -0
  210. package/dist/repository/controllers/commit-cards.d.ts +4 -0
  211. package/dist/repository/controllers/commit-cards.js +38 -0
  212. package/dist/repository/controllers/conflict-menu.d.ts +2 -0
  213. package/dist/repository/controllers/conflict-menu.js +1 -0
  214. package/dist/repository/controllers/file-history-controller.d.ts +29 -0
  215. package/dist/repository/controllers/file-history-controller.js +182 -0
  216. package/dist/repository/controllers/forge-accounts.d.ts +48 -0
  217. package/dist/repository/controllers/forge-accounts.js +1 -0
  218. package/dist/repository/controllers/forge-controller.d.ts +24 -0
  219. package/dist/repository/controllers/forge-controller.js +168 -0
  220. package/dist/repository/controllers/graph/model.d.ts +20 -0
  221. package/dist/repository/controllers/graph/model.js +33 -0
  222. package/dist/repository/controllers/graph/repository-log-graph.d.ts +44 -0
  223. package/dist/repository/controllers/graph/repository-log-graph.js +182 -0
  224. package/dist/repository/controllers/graph/repository-log-lanes.d.ts +7 -0
  225. package/dist/repository/controllers/graph/repository-log-lanes.js +19 -0
  226. package/dist/repository/controllers/graph/revision-id.d.ts +3 -0
  227. package/dist/repository/controllers/graph/revision-id.js +10 -0
  228. package/dist/repository/controllers/history-canvas.d.ts +2 -0
  229. package/dist/repository/controllers/history-canvas.js +45 -0
  230. package/dist/repository/controllers/history-controller.d.ts +31 -0
  231. package/dist/repository/controllers/history-controller.js +238 -0
  232. package/dist/repository/controllers/history-files.d.ts +7 -0
  233. package/dist/repository/controllers/history-files.js +18 -0
  234. package/dist/repository/controllers/history-graph.d.ts +20 -0
  235. package/dist/repository/controllers/history-graph.js +89 -0
  236. package/dist/repository/controllers/history-index-controller.d.ts +22 -0
  237. package/dist/repository/controllers/history-index-controller.js +77 -0
  238. package/dist/repository/controllers/history-lifetime.d.ts +13 -0
  239. package/dist/repository/controllers/history-lifetime.js +40 -0
  240. package/dist/repository/controllers/history-reader.d.ts +22 -0
  241. package/dist/repository/controllers/history-reader.js +1 -0
  242. package/dist/repository/controllers/history-search-expression.d.ts +9 -0
  243. package/dist/repository/controllers/history-search-expression.js +86 -0
  244. package/dist/repository/controllers/history-selection.d.ts +5 -0
  245. package/dist/repository/controllers/history-selection.js +32 -0
  246. package/dist/repository/controllers/history-source.d.ts +10 -0
  247. package/dist/repository/controllers/history-source.js +7 -0
  248. package/dist/repository/controllers/history-state.d.ts +34 -0
  249. package/dist/repository/controllers/history-state.js +55 -0
  250. package/dist/repository/controllers/indexed-search-validation.d.ts +4 -0
  251. package/dist/repository/controllers/indexed-search-validation.js +64 -0
  252. package/dist/repository/controllers/indexed-search.d.ts +11 -0
  253. package/dist/repository/controllers/indexed-search.js +1 -0
  254. package/dist/repository/controllers/log-canvas.d.ts +2 -0
  255. package/dist/repository/controllers/log-canvas.js +25 -0
  256. package/dist/repository/controllers/native-indexed-search.d.ts +4 -0
  257. package/dist/repository/controllers/native-indexed-search.js +10 -0
  258. package/dist/repository/controllers/open-history-revision.d.ts +3 -0
  259. package/dist/repository/controllers/open-history-revision.js +8 -0
  260. package/dist/repository/controllers/operation-command.d.ts +2 -0
  261. package/dist/repository/controllers/operation-command.js +55 -0
  262. package/dist/repository/controllers/operation-controller.d.ts +33 -0
  263. package/dist/repository/controllers/operation-controller.js +267 -0
  264. package/dist/repository/controllers/operation-files.d.ts +33 -0
  265. package/dist/repository/controllers/operation-files.js +182 -0
  266. package/dist/repository/controllers/operation-graph.d.ts +17 -0
  267. package/dist/repository/controllers/operation-graph.js +50 -0
  268. package/dist/repository/controllers/operation-message.d.ts +5 -0
  269. package/dist/repository/controllers/operation-message.js +18 -0
  270. package/dist/repository/controllers/operation-metadata.d.ts +5 -0
  271. package/dist/repository/controllers/operation-metadata.js +26 -0
  272. package/dist/repository/controllers/operation-parent.d.ts +5 -0
  273. package/dist/repository/controllers/operation-parent.js +46 -0
  274. package/dist/repository/controllers/operation-state.d.ts +28 -0
  275. package/dist/repository/controllers/operation-state.js +26 -0
  276. package/dist/repository/controllers/parent-candidates.d.ts +4 -0
  277. package/dist/repository/controllers/parent-candidates.js +27 -0
  278. package/dist/repository/controllers/plugin-data.d.ts +9 -0
  279. package/dist/repository/controllers/plugin-data.js +33 -0
  280. package/dist/repository/controllers/preparation-queue.d.ts +9 -0
  281. package/dist/repository/controllers/preparation-queue.js +55 -0
  282. package/dist/repository/controllers/remote-controller.d.ts +23 -0
  283. package/dist/repository/controllers/remote-controller.js +98 -0
  284. package/dist/repository/controllers/remote.d.ts +48 -0
  285. package/dist/repository/controllers/remote.js +13 -0
  286. package/dist/repository/controllers/restore-recovery.d.ts +3 -0
  287. package/dist/repository/controllers/restore-recovery.js +32 -0
  288. package/dist/repository/controllers/restore.d.ts +66 -0
  289. package/dist/repository/controllers/restore.js +201 -0
  290. package/dist/repository/controllers/revision-comparison.d.ts +20 -0
  291. package/dist/repository/controllers/revision-comparison.js +89 -0
  292. package/dist/repository/controllers/search-controller.d.ts +19 -0
  293. package/dist/repository/controllers/search-controller.js +105 -0
  294. package/dist/repository/controllers/search-page.d.ts +2 -0
  295. package/dist/repository/controllers/search-page.js +39 -0
  296. package/dist/repository/controllers/search.d.ts +51 -0
  297. package/dist/repository/controllers/search.js +8 -0
  298. package/dist/repository/controllers/services.d.ts +7 -0
  299. package/dist/repository/controllers/services.js +24 -0
  300. package/dist/repository/controllers/storage-controller.d.ts +30 -0
  301. package/dist/repository/controllers/storage-controller.js +130 -0
  302. package/dist/repository/controllers/storage.d.ts +26 -0
  303. package/dist/repository/controllers/storage.js +1 -0
  304. package/dist/repository/controllers/sync-application.d.ts +17 -0
  305. package/dist/repository/controllers/sync-application.js +45 -0
  306. package/dist/repository/controllers/sync-controller.d.ts +31 -0
  307. package/dist/repository/controllers/sync-controller.js +300 -0
  308. package/dist/repository/controllers/sync-publication.d.ts +7 -0
  309. package/dist/repository/controllers/sync-publication.js +29 -0
  310. package/dist/repository/controllers/sync-recovery.d.ts +7 -0
  311. package/dist/repository/controllers/sync-recovery.js +27 -0
  312. package/dist/repository/controllers/sync.d.ts +62 -0
  313. package/dist/repository/controllers/sync.js +38 -0
  314. package/dist/repository/controllers/tags.d.ts +7 -0
  315. package/dist/repository/controllers/tags.js +71 -0
  316. package/dist/repository/controllers/transcript-paths.d.ts +2 -0
  317. package/dist/repository/controllers/transcript-paths.js +17 -0
  318. package/dist/repository/controllers/transcript-writers.d.ts +9 -0
  319. package/dist/repository/controllers/transcript-writers.js +37 -0
  320. package/dist/repository/controllers/working-copy-controller.d.ts +22 -0
  321. package/dist/repository/controllers/working-copy-controller.js +58 -0
  322. package/dist/repository/controllers/working-copy-status.d.ts +16 -0
  323. package/dist/repository/controllers/working-copy-status.js +57 -0
  324. package/dist/repository/controllers/workspaces.d.ts +7 -0
  325. package/dist/repository/controllers/workspaces.js +4 -0
  326. package/dist/repository/index.d.ts +9 -0
  327. package/dist/repository/index.js +6 -0
  328. package/manifest.json +2 -2
  329. package/package.json +41 -9
@@ -0,0 +1,182 @@
1
+ import { HistoryLifetime } from "./history-lifetime.js";
2
+ import { check, prepared } from "./history-selection.js";
3
+ import { workspaceCommits } from "./operation-metadata.js";
4
+ const initial = () => ({
5
+ phase: "idle",
6
+ busy: false,
7
+ heads: [],
8
+ commits: [],
9
+ workspaceCommit: undefined,
10
+ });
11
+ /** Independent file scope; new editor selections fence every delayed response. */
12
+ export class FileHistoryController {
13
+ #state = initial();
14
+ #listeners = new Set();
15
+ #generation = 0;
16
+ #abort = new AbortController();
17
+ #handle;
18
+ #workspace;
19
+ #closed = false;
20
+ #pin;
21
+ #closing;
22
+ #lifetime;
23
+ reader;
24
+ feedback;
25
+ constructor(reader, feedback) {
26
+ this.reader = reader;
27
+ this.feedback = feedback;
28
+ this.#lifetime = new HistoryLifetime(reader);
29
+ }
30
+ get state() {
31
+ return this.#state;
32
+ }
33
+ subscribe(listener) {
34
+ this.#listeners.add(listener);
35
+ listener(this.#state);
36
+ return () => {
37
+ this.#listeners.delete(listener);
38
+ };
39
+ }
40
+ #set(patch) {
41
+ if (this.#closed)
42
+ return;
43
+ this.#state = { ...this.#state, ...patch };
44
+ for (const listener of this.#listeners)
45
+ listener(this.#state);
46
+ }
47
+ follow(path) {
48
+ if (path === this.#state.path)
49
+ return Promise.resolve();
50
+ this.#pin = undefined;
51
+ return this.#load(path);
52
+ }
53
+ refresh(operation) {
54
+ if (operation)
55
+ this.#pin = operation;
56
+ return this.#load(this.#state.path, operation ?? this.#state.operation);
57
+ }
58
+ checkpointChanged(operation) {
59
+ if (this.#closed ||
60
+ this.#pin ||
61
+ !this.#state.path ||
62
+ this.#state.operation === operation)
63
+ return Promise.resolve();
64
+ return this.#load(this.#state.path, operation);
65
+ }
66
+ #load(path, operation) {
67
+ if (this.#closed)
68
+ return Promise.resolve();
69
+ const generation = ++this.#generation;
70
+ this.#abort.abort();
71
+ const abort = (this.#abort = new AbortController());
72
+ const prior = this.#handle;
73
+ this.#handle = undefined;
74
+ this.#workspace = undefined;
75
+ this.#set({ ...initial(), path, operation });
76
+ return this.#run(generation, async () => {
77
+ if (prior)
78
+ await this.#lifetime.closeHandle(prior);
79
+ if (!path || !this.#valid(generation))
80
+ return;
81
+ const heads = await this.reader.heads();
82
+ if (!this.#valid(generation))
83
+ return;
84
+ operation ??= heads.heads.length === 1 ? heads.heads[0] : undefined;
85
+ this.#set({ heads: heads.heads, operation });
86
+ if (!operation)
87
+ return;
88
+ const handle = await this.reader.open(operation);
89
+ this.#lifetime.handles.add(handle);
90
+ if (!this.#valid(generation)) {
91
+ await this.#lifetime.closeHandle(handle);
92
+ return;
93
+ }
94
+ this.#handle = handle;
95
+ const snapshot = await prepared(this.reader, handle, abort.signal);
96
+ check(snapshot.operation === operation);
97
+ if (!this.#valid(generation))
98
+ return;
99
+ const workspaces = await workspaceCommits(this.reader, handle, operation);
100
+ if (!this.#valid(generation))
101
+ return;
102
+ this.#workspace = workspaces.flatMap((commit) => commit.workspaces)[0];
103
+ if (!this.#workspace)
104
+ throw new Error("File history requires an existing JJ workspace context.");
105
+ this.#set({
106
+ workspaceCommit: workspaces.find((commit) => commit.workspaces.includes(this.#workspace))?.id,
107
+ });
108
+ await this.#page(generation, false);
109
+ });
110
+ }
111
+ more() {
112
+ if (this.#closed || this.#state.busy || !this.#state.next)
113
+ return Promise.resolve();
114
+ return this.#run(this.#generation, () => this.#page(this.#generation, true));
115
+ }
116
+ #valid(generation) {
117
+ return !this.#closed && generation === this.#generation;
118
+ }
119
+ #run(generation, action) {
120
+ this.#set({ busy: true, phase: "loading" });
121
+ return this.#lifetime.run(async () => {
122
+ try {
123
+ await action();
124
+ if (this.#valid(generation)) {
125
+ this.#set({ phase: "ready" });
126
+ this.feedback.recovered();
127
+ }
128
+ }
129
+ catch (error) {
130
+ if (this.#valid(generation)) {
131
+ this.#set({ phase: "unavailable" });
132
+ this.feedback.report(error);
133
+ }
134
+ }
135
+ finally {
136
+ if (this.#valid(generation))
137
+ this.#set({ busy: false });
138
+ }
139
+ });
140
+ }
141
+ async #page(generation, append) {
142
+ const { operation, path } = this.#state, handle = this.#handle;
143
+ if (!handle || !operation || !path)
144
+ return;
145
+ const response = await this.reader.read(handle, {
146
+ kind: "graph",
147
+ query: [
148
+ {
149
+ graph: "log",
150
+ revset: `all() & files(root-file:${JSON.stringify(path)})`,
151
+ workspace: this.#workspace,
152
+ user_email: "",
153
+ at_time_millis: Date.now(),
154
+ },
155
+ { limit: 50, after: append ? this.#state.next : null },
156
+ ],
157
+ });
158
+ if (!this.#valid(generation))
159
+ return;
160
+ check(response.kind === "graph" &&
161
+ response.data.operation === operation &&
162
+ response.data.data.graph === "log");
163
+ const retained = append ? this.#state.commits : [];
164
+ const incoming = response.data.data.nodes.map((node) => node.commit);
165
+ check(!incoming.some((commit) => retained.some((prior) => prior.id === commit.id)));
166
+ const commits = [...retained, ...incoming].slice(0, 200);
167
+ this.#set({
168
+ commits,
169
+ next: commits.length < 200 ? response.data.next : null,
170
+ });
171
+ }
172
+ close() {
173
+ this.#closed = true;
174
+ this.#generation++;
175
+ this.#abort.abort();
176
+ this.#listeners.clear();
177
+ return (this.#closing ??= this.#lifetime.drain().catch((error) => {
178
+ this.#closing = undefined;
179
+ throw error;
180
+ }));
181
+ }
182
+ }
@@ -0,0 +1,48 @@
1
+ /** Public account identities only. Credentials stay in native custody. */
2
+ export type ForgeAccount = {
3
+ id: string;
4
+ api_url: string;
5
+ login: string;
6
+ name: string | null;
7
+ email: string | null;
8
+ avatar_url: string | null;
9
+ method: "oauth" | "pat" | "enterprise";
10
+ available: boolean;
11
+ };
12
+ export type ForgeAuthorization = {
13
+ session: string;
14
+ user_code: string;
15
+ verification_uri: string;
16
+ interval: number;
17
+ expires_at: number;
18
+ state: string;
19
+ };
20
+ export type ForgeInventory = {
21
+ accounts: ForgeAccount[];
22
+ oauth_available: boolean;
23
+ keychain_supported: boolean;
24
+ authorization: ForgeAuthorization | null;
25
+ };
26
+ export type ForgeCommand = {
27
+ kind: "begin_oauth";
28
+ } | {
29
+ kind: "poll_oauth" | "cancel_oauth";
30
+ session: string;
31
+ } | {
32
+ kind: "forget";
33
+ account: string;
34
+ } | {
35
+ kind: "add_token" | "add_forgejo_token";
36
+ api_url: string;
37
+ token: string;
38
+ };
39
+ export interface ForgeService {
40
+ inventory(): Promise<ForgeInventory>;
41
+ command(command: ForgeCommand): Promise<ForgeInventory>;
42
+ openAuthorization(url: string): Promise<void>;
43
+ }
44
+ export type ForgeState = {
45
+ inventory?: ForgeInventory;
46
+ busy: boolean;
47
+ flow: "oauth" | "pat" | "enterprise" | "forgejo" | "";
48
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import type { ForgeService, ForgeState } from "./forge-accounts.js";
2
+ export declare class ForgeController {
3
+ #private;
4
+ readonly service: ForgeService;
5
+ readonly feedback: {
6
+ report(error: unknown): void;
7
+ recovered(): void;
8
+ };
9
+ constructor(service: ForgeService, feedback: ForgeController["feedback"]);
10
+ subscribe(listener: (state: ForgeState) => void): () => boolean;
11
+ subscribeActivity(listener: (state: {
12
+ busy: boolean;
13
+ phase: string;
14
+ }) => void): () => boolean;
15
+ drained(): Promise<void>;
16
+ tokenFlow(flow: "pat" | "enterprise" | "forgejo"): void;
17
+ refresh(): Promise<void>;
18
+ begin(): Promise<void>;
19
+ addToken(api_url: string, token: string): Promise<boolean>;
20
+ forget(account: string): Promise<void>;
21
+ openAuthorization(): Promise<void>;
22
+ cancel(): Promise<void>;
23
+ close(): Promise<void>;
24
+ }
@@ -0,0 +1,168 @@
1
+ export class ForgeController {
2
+ #state = { busy: false, flow: "" };
3
+ #listeners = new Set();
4
+ #timer;
5
+ #epoch = 0;
6
+ #closed = false;
7
+ #pending = new Set();
8
+ #activity = new Set();
9
+ service;
10
+ feedback;
11
+ constructor(service, feedback) {
12
+ this.service = service;
13
+ this.feedback = feedback;
14
+ }
15
+ subscribe(listener) {
16
+ this.#listeners.add(listener);
17
+ listener(this.#state);
18
+ return () => this.#listeners.delete(listener);
19
+ }
20
+ subscribeActivity(listener) {
21
+ this.#activity.add(listener);
22
+ listener({ busy: this.#pending.size > 0, phase: "connecting" });
23
+ return () => this.#activity.delete(listener);
24
+ }
25
+ #track(task) {
26
+ const tracked = task.finally(() => {
27
+ this.#pending.delete(tracked);
28
+ for (const listener of this.#activity)
29
+ listener({ busy: this.#pending.size > 0, phase: "connecting" });
30
+ });
31
+ this.#pending.add(tracked);
32
+ for (const listener of this.#activity)
33
+ listener({ busy: true, phase: "connecting" });
34
+ return tracked;
35
+ }
36
+ async drained() {
37
+ while (this.#pending.size)
38
+ await Promise.allSettled([...this.#pending]);
39
+ }
40
+ #set(patch) {
41
+ if (this.#closed)
42
+ return;
43
+ this.#state = { ...this.#state, ...patch };
44
+ for (const listener of this.#listeners)
45
+ listener(this.#state);
46
+ }
47
+ tokenFlow(flow) {
48
+ if (!this.#state.busy && !this.#closed)
49
+ this.#set({ flow });
50
+ }
51
+ async refresh() {
52
+ if (!this.#closed && !this.#state.busy)
53
+ await this.#run();
54
+ }
55
+ async begin() {
56
+ if (this.#closed || this.#state.busy)
57
+ return;
58
+ this.#set({ flow: "oauth" });
59
+ await this.#run({ kind: "begin_oauth" });
60
+ }
61
+ async addToken(api_url, token) {
62
+ return this.#run({
63
+ kind: this.#state.flow === "forgejo" ? "add_forgejo_token" : "add_token",
64
+ api_url,
65
+ token,
66
+ });
67
+ }
68
+ async forget(account) {
69
+ await this.#run({ kind: "forget", account });
70
+ }
71
+ #run(command) {
72
+ if (this.#closed || this.#state.busy)
73
+ return Promise.resolve(false);
74
+ const epoch = this.#epoch;
75
+ this.#set({ busy: true });
76
+ const task = (async () => {
77
+ try {
78
+ const incoming = command
79
+ ? await this.service.command(command)
80
+ : await this.service.inventory();
81
+ if (epoch !== this.#epoch || this.#closed) {
82
+ if (incoming.authorization?.state === "pending")
83
+ await this.service.command({
84
+ kind: "cancel_oauth",
85
+ session: incoming.authorization.session,
86
+ });
87
+ return false;
88
+ }
89
+ const inventory = command
90
+ ? incoming
91
+ : {
92
+ ...incoming,
93
+ authorization: this.#state.inventory?.authorization ?? null,
94
+ };
95
+ this.#set({ inventory });
96
+ this.feedback.recovered();
97
+ if (command?.kind === "add_token" ||
98
+ command?.kind === "add_forgejo_token" ||
99
+ inventory.authorization?.state === "complete")
100
+ this.#set({ flow: "" });
101
+ if (inventory.authorization?.state === "pending")
102
+ this.#schedule();
103
+ else if (inventory.authorization &&
104
+ ["denied", "expired", "failed"].includes(inventory.authorization.state))
105
+ this.feedback.report(new Error(`GitHub authorization ${inventory.authorization.state}. Start again for a new code.`));
106
+ return true;
107
+ }
108
+ catch (error) {
109
+ if (epoch === this.#epoch && !this.#closed)
110
+ this.feedback.report(error);
111
+ return false;
112
+ }
113
+ finally {
114
+ if (epoch === this.#epoch)
115
+ this.#set({ busy: false });
116
+ }
117
+ })();
118
+ return this.#track(task);
119
+ }
120
+ #schedule() {
121
+ clearTimeout(this.#timer);
122
+ const auth = this.#state.inventory?.authorization;
123
+ if (!auth || auth.state !== "pending")
124
+ return;
125
+ this.#timer = setTimeout(() => void this.#run({ kind: "poll_oauth", session: auth.session }), Math.max(5, Math.min(60, auth.interval)) * 1000);
126
+ }
127
+ async openAuthorization() {
128
+ const url = this.#state.inventory?.authorization?.verification_uri;
129
+ if (this.#closed || url !== "https://github.com/login/device")
130
+ return;
131
+ try {
132
+ await this.service.openAuthorization(url);
133
+ }
134
+ catch (error) {
135
+ if (!this.#closed)
136
+ this.feedback.report(error);
137
+ }
138
+ }
139
+ async cancel() {
140
+ clearTimeout(this.#timer);
141
+ this.#epoch++;
142
+ const session = this.#state.inventory?.authorization?.session;
143
+ this.#set({
144
+ flow: "",
145
+ busy: false,
146
+ inventory: this.#state.inventory
147
+ ? { ...this.#state.inventory, authorization: null }
148
+ : undefined,
149
+ });
150
+ if (session)
151
+ try {
152
+ await this.#track(this.service.command({ kind: "cancel_oauth", session }));
153
+ }
154
+ catch (error) {
155
+ if (!this.#closed)
156
+ this.feedback.report(error);
157
+ }
158
+ }
159
+ async close() {
160
+ if (this.#closed)
161
+ return;
162
+ this.#closed = true;
163
+ this.#listeners.clear();
164
+ await this.cancel();
165
+ // Late responses remain fenced and cancel their private pending grant.
166
+ // Account network work is installation-owned and cannot hold vault close.
167
+ }
168
+ }
@@ -0,0 +1,20 @@
1
+ import type { LocalGraphCommit, LocalGraphOperationNode } from "@lapismd/jj-history";
2
+ /** Presentation-only adaptation of jj-store's commit/operation graph model. */
3
+ export type RepositoryLogRevision = {
4
+ eventId: string;
5
+ changeId: string;
6
+ parents: string[];
7
+ message: string;
8
+ reason: "checkpoint" | "merge";
9
+ author: string;
10
+ host?: string;
11
+ millis: number | bigint;
12
+ tags: string[];
13
+ conflicted?: boolean;
14
+ };
15
+ export type RepositoryLogDevice = {
16
+ alias: string;
17
+ revisionEventId: string;
18
+ };
19
+ export declare function commitRows(commits: LocalGraphCommit[]): RepositoryLogRevision[];
20
+ export declare function operationRows(nodes: LocalGraphOperationNode[]): RepositoryLogRevision[];
@@ -0,0 +1,33 @@
1
+ export function commitRows(commits) {
2
+ return commits.map((commit) => ({
3
+ eventId: commit.id,
4
+ changeId: commit.change_id,
5
+ parents: commit.parents,
6
+ message: commit.description.split("\n")[0] || "No description",
7
+ reason: commit.parents.length > 1 ? "merge" : "checkpoint",
8
+ author: commit.author.name,
9
+ millis: commit.author.timestamp.millis,
10
+ conflicted: commit.conflicted,
11
+ tags: [
12
+ ...(commit.divergent ? ["Divergent"] : []),
13
+ ...commit.bookmarks.map((bookmark) => `${bookmark.name}${bookmark.remote ? `@${bookmark.remote}` : ""}${bookmark.conflicted ? " (conflicted)" : ""}`),
14
+ ...commit.workspaces.map((workspace) => workspace === "default" ? "Working copy" : `Working copy · ${workspace}`),
15
+ ],
16
+ }));
17
+ }
18
+ export function operationRows(nodes) {
19
+ return nodes.map((node) => ({
20
+ eventId: node.id,
21
+ changeId: "",
22
+ parents: node.parents,
23
+ message: node.description || "No description",
24
+ reason: node.parents.length > 1 ? "merge" : "checkpoint",
25
+ author: node.user,
26
+ host: node.host,
27
+ millis: node.end.millis,
28
+ tags: [
29
+ ...(node.is_snapshot ? ["Snapshot"] : []),
30
+ ...(node.workspace ? [node.workspace] : []),
31
+ ],
32
+ }));
33
+ }
@@ -0,0 +1,44 @@
1
+ import type { RepositoryLogDevice, RepositoryLogRevision } from "./model.js";
2
+ import * as laneState from "./repository-log-lanes.js";
3
+ export type { RepositoryLogGraphLane } from "./repository-log-lanes.js";
4
+ export declare const REPOSITORY_LOG_ROW_HEIGHT = 76;
5
+ export declare const REPOSITORY_LOG_LANE_WIDTH = 12;
6
+ export declare const REPOSITORY_LOG_NODE_RADIUS = 4;
7
+ export declare const REPOSITORY_LOG_LEFT_PAD = 8;
8
+ export declare const REPOSITORY_LOG_STROKE_WIDTH = 2.5;
9
+ export declare const REPOSITORY_LOG_LANE_COLORS: readonly ["var(--ui-log-lane-1, #2563eb)", "var(--ui-log-lane-2, #16a34a)", "var(--ui-log-lane-3, #d97706)", "var(--ui-log-lane-4, #dc2626)", "var(--ui-log-lane-5, #7c3aed)", "var(--ui-log-lane-6, #0891b2)", "var(--ui-log-lane-7, #db2777)", "var(--ui-log-lane-8, #65a30d)"];
10
+ export type RepositoryLogGraphRow = {
11
+ revision: RepositoryLogRevision;
12
+ commitLane: number;
13
+ lanes: laneState.RepositoryLogGraphLane[];
14
+ mergeFromLanes: number[];
15
+ convergingLanes: number[];
16
+ splitFromLane: number | null;
17
+ commitStartsLane: boolean;
18
+ isFirst: boolean;
19
+ isTip: boolean;
20
+ deviceAliases: string[];
21
+ changeIdShort: string;
22
+ changeIdEncoded: string;
23
+ commitIdShort: string;
24
+ };
25
+ export declare const REPOSITORY_LOG_ID_PREFIX = 8;
26
+ export declare function encodeJjChangeId(hex: string): string;
27
+ export declare function shortestRepositoryLogPrefix(values: readonly string[], min?: number): Map<string, string>;
28
+ export declare function repositoryLogRowLabel(row: {
29
+ revision: RepositoryLogRevision;
30
+ changeIdShort: string;
31
+ commitIdShort: string;
32
+ }): string;
33
+ export declare function tipRevisionIds(revisions: readonly RepositoryLogRevision[]): string[];
34
+ export declare function repositoryLogLaneX(lane: number): number;
35
+ export declare function repositoryLogLaneStem(row: RepositoryLogGraphRow, lane: number, rowHeight?: number): {
36
+ y1: number;
37
+ y2: number;
38
+ };
39
+ export declare function repositoryLogSplitPath(parentX: number, commitX: number, rowHeight?: number): string;
40
+ export declare function repositoryLogMergePath(commitX: number, parentX: number, rowHeight?: number): string;
41
+ export declare function repositoryLogConvergePath(fromX: number, commitX: number, rowHeight?: number): string;
42
+ export declare function repositoryLogContentLeft(row: RepositoryLogGraphRow): number;
43
+ export declare function repositoryLogSvgWidth(rows: RepositoryLogGraphRow[]): number;
44
+ export declare function buildRepositoryLogGraph(revisions: readonly RepositoryLogRevision[], devices?: readonly RepositoryLogDevice[]): RepositoryLogGraphRow[];