@lapis-notes/api 0.1.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 (400) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE.md +4 -0
  3. package/README.md +43 -0
  4. package/dist/__tests__/data-adapter-conformance.js +205 -0
  5. package/dist/__tests__/lapis-runtime-manifest.js +32 -0
  6. package/dist/__tests__/svelte-internal-client.d.ts +3 -0
  7. package/dist/agent-result-views.d.ts +52 -0
  8. package/dist/agent-result-views.js +89 -0
  9. package/dist/agent-skills.d.ts +99 -0
  10. package/dist/agent-skills.js +182 -0
  11. package/dist/agent-tools.d.ts +92 -0
  12. package/dist/agent-tools.js +139 -0
  13. package/dist/app-database-host.d.ts +4 -0
  14. package/dist/app-database-host.js +4 -0
  15. package/dist/app-shell-plugin-persistence.d.ts +15 -0
  16. package/dist/app-shell-plugin-persistence.js +34 -0
  17. package/dist/app-url.d.ts +54 -0
  18. package/dist/app-url.js +269 -0
  19. package/dist/application-compatibility.d.ts +31 -0
  20. package/dist/application-compatibility.js +64 -0
  21. package/dist/application-state.svelte.d.ts +14 -0
  22. package/dist/application-state.svelte.js +30 -0
  23. package/dist/assets/lapis-logo.svg +471 -0
  24. package/dist/bases.d.ts +281 -0
  25. package/dist/bases.js +475 -0
  26. package/dist/cache.svelte.d.ts +569 -0
  27. package/dist/cache.svelte.js +1433 -0
  28. package/dist/command.svelte.d.ts +337 -0
  29. package/dist/command.svelte.js +571 -0
  30. package/dist/compat.d.ts +29 -0
  31. package/dist/compat.js +30 -0
  32. package/dist/components/configuration/configuration.css +199 -0
  33. package/dist/components/configuration/date-setting.svelte +71 -0
  34. package/dist/components/configuration/date-setting.svelte.d.ts +8 -0
  35. package/dist/components/configuration/list-setting.svelte +128 -0
  36. package/dist/components/configuration/list-setting.svelte.d.ts +13 -0
  37. package/dist/components/configuration/object-array-row-grip.svelte +78 -0
  38. package/dist/components/configuration/object-array-row-grip.svelte.d.ts +9 -0
  39. package/dist/components/configuration/object-array-row.svelte +163 -0
  40. package/dist/components/configuration/object-array-row.svelte.d.ts +19 -0
  41. package/dist/components/configuration/object-array-setting.svelte +196 -0
  42. package/dist/components/configuration/object-array-setting.svelte.d.ts +15 -0
  43. package/dist/components/configuration/object-array-table-dnd.d.ts +8 -0
  44. package/dist/components/configuration/object-array-table-dnd.js +10 -0
  45. package/dist/components/configuration/object-array-utils.d.ts +11 -0
  46. package/dist/components/configuration/object-array-utils.js +103 -0
  47. package/dist/components/configuration/object-grid-setting.svelte +79 -0
  48. package/dist/components/configuration/object-grid-setting.svelte.d.ts +10 -0
  49. package/dist/components/configuration/object-map-row.svelte +147 -0
  50. package/dist/components/configuration/object-map-row.svelte.d.ts +15 -0
  51. package/dist/components/configuration/object-map-setting.svelte +137 -0
  52. package/dist/components/configuration/object-map-setting.svelte.d.ts +14 -0
  53. package/dist/components/configuration/object-map-types.d.ts +5 -0
  54. package/dist/components/configuration/object-map-types.js +1 -0
  55. package/dist/components/configuration/options-combobox-setting.svelte +129 -0
  56. package/dist/components/configuration/options-combobox-setting.svelte.d.ts +12 -0
  57. package/dist/components/copy-button/button.svelte +93 -0
  58. package/dist/components/copy-button/button.svelte.d.ts +13 -0
  59. package/dist/components/copy-button/index.d.ts +2 -0
  60. package/dist/components/copy-button/index.js +2 -0
  61. package/dist/components/editor/editor.css +565 -0
  62. package/dist/components/editor/editor.d.ts +33 -0
  63. package/dist/components/editor/editor.js +132 -0
  64. package/dist/components/editor/editor.svelte +176 -0
  65. package/dist/components/editor/editor.svelte.d.ts +15 -0
  66. package/dist/components/editor/embedded-editor-surface.d.ts +12 -0
  67. package/dist/components/editor/embedded-editor-surface.js +22 -0
  68. package/dist/components/editor/embedded-editor-surface.svelte +115 -0
  69. package/dist/components/editor/embedded-editor-surface.svelte.d.ts +17 -0
  70. package/dist/components/editor/extensions/autocomplete/index.d.ts +2 -0
  71. package/dist/components/editor/extensions/autocomplete/index.js +2 -0
  72. package/dist/components/editor/extensions/autocomplete/lapis-code-mirror-autocomplete.d.ts +16 -0
  73. package/dist/components/editor/extensions/autocomplete/lapis-code-mirror-autocomplete.js +34 -0
  74. package/dist/components/editor/extensions/autocomplete/vault-completion-sources.d.ts +27 -0
  75. package/dist/components/editor/extensions/autocomplete/vault-completion-sources.js +55 -0
  76. package/dist/components/editor/extensions/class-highlighter/index.d.ts +1 -0
  77. package/dist/components/editor/extensions/class-highlighter/index.js +47 -0
  78. package/dist/components/editor/extensions/fold-gutter/index.d.ts +8 -0
  79. package/dist/components/editor/extensions/fold-gutter/index.js +40 -0
  80. package/dist/components/editor/extensions/gutter-line-style-sync/index.d.ts +2 -0
  81. package/dist/components/editor/extensions/gutter-line-style-sync/index.js +118 -0
  82. package/dist/components/editor/extensions/lint/index.d.ts +4 -0
  83. package/dist/components/editor/extensions/lint/index.js +4 -0
  84. package/dist/components/editor/extensions/lint/lapis-code-mirror-lint.d.ts +26 -0
  85. package/dist/components/editor/extensions/lint/lapis-code-mirror-lint.js +101 -0
  86. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic-helpers.d.ts +8 -0
  87. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic-helpers.js +7 -0
  88. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic.d.ts +20 -0
  89. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic.js +47 -0
  90. package/dist/components/editor/extensions/lint/lapis-lint-hover-tooltip.d.ts +9 -0
  91. package/dist/components/editor/extensions/lint/lapis-lint-hover-tooltip.js +373 -0
  92. package/dist/components/editor/extensions/lint/lapis-lint-inline-widget.d.ts +31 -0
  93. package/dist/components/editor/extensions/lint/lapis-lint-inline-widget.js +191 -0
  94. package/dist/components/editor/extensions/lint/lapis-lint-tooltip.svelte +176 -0
  95. package/dist/components/editor/extensions/lint/lapis-lint-tooltip.svelte.d.ts +15 -0
  96. package/dist/components/editor/extensions/lint/lint-tooltip-actions.d.ts +11 -0
  97. package/dist/components/editor/extensions/lint/lint-tooltip-actions.js +21 -0
  98. package/dist/components/editor/extensions/lint/mount-lint-tooltip.d.ts +16 -0
  99. package/dist/components/editor/extensions/lint/mount-lint-tooltip.js +60 -0
  100. package/dist/components/editor/extensions/search/dom.d.ts +2 -0
  101. package/dist/components/editor/extensions/search/dom.js +6 -0
  102. package/dist/components/editor/extensions/search/index.d.ts +35 -0
  103. package/dist/components/editor/extensions/search/index.js +44 -0
  104. package/dist/components/editor/extensions/search/search.svelte +335 -0
  105. package/dist/components/editor/extensions/search/search.svelte.d.ts +8 -0
  106. package/dist/components/editor/index.d.ts +9 -0
  107. package/dist/components/editor/index.js +9 -0
  108. package/dist/components/editor/language-service/dom.d.ts +1 -0
  109. package/dist/components/editor/language-service/dom.js +6 -0
  110. package/dist/components/editor/language-service/index.d.ts +28 -0
  111. package/dist/components/editor/language-service/index.js +342 -0
  112. package/dist/components/empty-view/empty-view.css +39 -0
  113. package/dist/components/empty-view/empty-view.svelte +26 -0
  114. package/dist/components/empty-view/empty-view.svelte.d.ts +9 -0
  115. package/dist/components/empty-view/index.d.ts +2 -0
  116. package/dist/components/empty-view/index.js +2 -0
  117. package/dist/components/icon/icon-list.css +74 -0
  118. package/dist/components/icon/icon-list.svelte +213 -0
  119. package/dist/components/icon/icon-list.svelte.d.ts +11 -0
  120. package/dist/components/icon/icon.svelte +15 -0
  121. package/dist/components/icon/icon.svelte.d.ts +7 -0
  122. package/dist/components/icon/index.d.ts +3 -0
  123. package/dist/components/icon/index.js +3 -0
  124. package/dist/components/menu/context-menu.svelte +89 -0
  125. package/dist/components/menu/context-menu.svelte.d.ts +11 -0
  126. package/dist/components/menu/drawer-menu.svelte +83 -0
  127. package/dist/components/menu/drawer-menu.svelte.d.ts +8 -0
  128. package/dist/components/menu/dropdown-menu.svelte +89 -0
  129. package/dist/components/menu/dropdown-menu.svelte.d.ts +11 -0
  130. package/dist/components/menu/index.d.ts +6 -0
  131. package/dist/components/menu/index.js +6 -0
  132. package/dist/components/menu/menu.css +139 -0
  133. package/dist/components/menu/menu.svelte +37 -0
  134. package/dist/components/menu/menu.svelte.d.ts +11 -0
  135. package/dist/components/menu/mobile-menu-query.svelte.d.ts +3 -0
  136. package/dist/components/menu/mobile-menu-query.svelte.js +21 -0
  137. package/dist/components/menu/popover-menu.svelte +90 -0
  138. package/dist/components/menu/popover-menu.svelte.d.ts +10 -0
  139. package/dist/components/select/index.d.ts +2 -0
  140. package/dist/components/select/index.js +2 -0
  141. package/dist/components/select/select.svelte +72 -0
  142. package/dist/components/select/select.svelte.d.ts +25 -0
  143. package/dist/configuration-option-source-providers.d.ts +17 -0
  144. package/dist/configuration-option-source-providers.js +59 -0
  145. package/dist/configuration-option-source-registry.d.ts +59 -0
  146. package/dist/configuration-option-source-registry.js +123 -0
  147. package/dist/configuration.svelte.d.ts +258 -0
  148. package/dist/configuration.svelte.js +887 -0
  149. package/dist/context-keys.svelte.d.ts +42 -0
  150. package/dist/context-keys.svelte.js +278 -0
  151. package/dist/context.svelte.d.ts +247 -0
  152. package/dist/context.svelte.js +540 -0
  153. package/dist/daily-document-provider.d.ts +38 -0
  154. package/dist/daily-document-provider.js +176 -0
  155. package/dist/design-core-button-types.d.ts +7 -0
  156. package/dist/design-core-button-types.js +1 -0
  157. package/dist/diagnostics.d.ts +93 -0
  158. package/dist/diagnostics.js +84 -0
  159. package/dist/dialog-portal.d.ts +3 -0
  160. package/dist/dialog-portal.js +3 -0
  161. package/dist/docs-api.d.ts +44 -0
  162. package/dist/docs-api.js +29 -0
  163. package/dist/editor-view-registry.d.ts +35 -0
  164. package/dist/editor-view-registry.js +112 -0
  165. package/dist/editor.svelte.d.ts +126 -0
  166. package/dist/editor.svelte.js +454 -0
  167. package/dist/embed-registry.d.ts +15 -0
  168. package/dist/embed-registry.js +16 -0
  169. package/dist/enhance.d.ts +111 -0
  170. package/dist/enhance.js +309 -0
  171. package/dist/events.d.ts +28 -0
  172. package/dist/events.js +49 -0
  173. package/dist/file-manager.d.ts +90 -0
  174. package/dist/file-manager.js +289 -0
  175. package/dist/file-tools/app-tools.d.ts +3 -0
  176. package/dist/file-tools/app-tools.js +242 -0
  177. package/dist/file-tools/index.d.ts +3 -0
  178. package/dist/file-tools/index.js +3 -0
  179. package/dist/file-tools/paths.d.ts +14 -0
  180. package/dist/file-tools/paths.js +33 -0
  181. package/dist/file-tools/vault-operations.d.ts +3 -0
  182. package/dist/file-tools/vault-operations.js +60 -0
  183. package/dist/generated/plugin-host-modules.schema.generated.d.ts +371 -0
  184. package/dist/generated/plugin-host-modules.schema.generated.js +374 -0
  185. package/dist/glob.d.ts +15 -0
  186. package/dist/glob.js +68 -0
  187. package/dist/history.svelte.d.ts +24 -0
  188. package/dist/history.svelte.js +74 -0
  189. package/dist/hooks/createVirtualizer.svelte.d.ts +7 -0
  190. package/dist/hooks/createVirtualizer.svelte.js +70 -0
  191. package/dist/hooks/index.d.ts +5 -0
  192. package/dist/hooks/index.js +5 -0
  193. package/dist/hooks/is-mobile.svelte.d.ts +5 -0
  194. package/dist/hooks/is-mobile.svelte.js +23 -0
  195. package/dist/hooks/mountComponent.svelte.d.ts +7 -0
  196. package/dist/hooks/mountComponent.svelte.js +16 -0
  197. package/dist/hooks/use-text-highlight.d.ts +17 -0
  198. package/dist/hooks/use-text-highlight.js +82 -0
  199. package/dist/hooks/useBoundingRect.svelte.d.ts +11 -0
  200. package/dist/hooks/useBoundingRect.svelte.js +46 -0
  201. package/dist/icons/index.d.ts +57 -0
  202. package/dist/icons/index.js +288 -0
  203. package/dist/index.d.ts +87 -0
  204. package/dist/index.js +87 -0
  205. package/dist/language-service/index.d.ts +9 -0
  206. package/dist/language-service/index.js +7 -0
  207. package/dist/language-service/manager.d.ts +47 -0
  208. package/dist/language-service/manager.js +404 -0
  209. package/dist/language-service/types.d.ts +92 -0
  210. package/dist/language-service/types.js +1 -0
  211. package/dist/language-service/virtual-document.d.ts +11 -0
  212. package/dist/language-service/virtual-document.js +45 -0
  213. package/dist/language-service/worker-protocol.d.ts +63 -0
  214. package/dist/language-service/worker-protocol.js +1 -0
  215. package/dist/language-service/worker-provider.d.ts +9 -0
  216. package/dist/language-service/worker-provider.js +38 -0
  217. package/dist/lapis-extension.d.ts +244 -0
  218. package/dist/lapis-extension.js +591 -0
  219. package/dist/links.d.ts +34 -0
  220. package/dist/links.js +191 -0
  221. package/dist/loaders.d.ts +9 -0
  222. package/dist/loaders.js +59 -0
  223. package/dist/localization-manager.svelte.d.ts +56 -0
  224. package/dist/localization-manager.svelte.js +157 -0
  225. package/dist/logging.d.ts +172 -0
  226. package/dist/logging.js +352 -0
  227. package/dist/markdown-extension-registry.d.ts +31 -0
  228. package/dist/markdown-extension-registry.js +31 -0
  229. package/dist/markdown-file-surface-registry.d.ts +25 -0
  230. package/dist/markdown-file-surface-registry.js +23 -0
  231. package/dist/markdown.d.ts +205 -0
  232. package/dist/markdown.js +147 -0
  233. package/dist/menu-utils.d.ts +1 -0
  234. package/dist/menu-utils.js +47 -0
  235. package/dist/menu.svelte.d.ts +121 -0
  236. package/dist/menu.svelte.js +295 -0
  237. package/dist/metadata-value.d.ts +10 -0
  238. package/dist/metadata-value.js +173 -0
  239. package/dist/metadata.svelte.d.ts +106 -0
  240. package/dist/metadata.svelte.js +608 -0
  241. package/dist/notifications.d.ts +209 -0
  242. package/dist/notifications.js +338 -0
  243. package/dist/open-file.d.ts +23 -0
  244. package/dist/open-file.js +102 -0
  245. package/dist/platform.d.ts +86 -0
  246. package/dist/platform.js +86 -0
  247. package/dist/plugin-asset-server.d.ts +60 -0
  248. package/dist/plugin-asset-server.js +222 -0
  249. package/dist/plugin-assets.d.ts +4 -0
  250. package/dist/plugin-assets.js +3 -0
  251. package/dist/plugin-capability-facade.d.ts +104 -0
  252. package/dist/plugin-capability-facade.js +61 -0
  253. package/dist/plugin-dependency-resolver.d.ts +36 -0
  254. package/dist/plugin-dependency-resolver.js +54 -0
  255. package/dist/plugin-dependency-scanner.d.ts +9 -0
  256. package/dist/plugin-dependency-scanner.js +274 -0
  257. package/dist/plugin-distribution/canonical-json.d.ts +1 -0
  258. package/dist/plugin-distribution/canonical-json.js +40 -0
  259. package/dist/plugin-distribution/compatibility.d.ts +5 -0
  260. package/dist/plugin-distribution/compatibility.js +38 -0
  261. package/dist/plugin-distribution/errors.d.ts +11 -0
  262. package/dist/plugin-distribution/errors.js +13 -0
  263. package/dist/plugin-distribution/hashes.d.ts +2 -0
  264. package/dist/plugin-distribution/hashes.js +17 -0
  265. package/dist/plugin-distribution/index.d.ts +18 -0
  266. package/dist/plugin-distribution/index.js +18 -0
  267. package/dist/plugin-distribution/installed-plugin-state.d.ts +20 -0
  268. package/dist/plugin-distribution/installed-plugin-state.js +73 -0
  269. package/dist/plugin-distribution/installer.d.ts +89 -0
  270. package/dist/plugin-distribution/installer.js +395 -0
  271. package/dist/plugin-distribution/manager.d.ts +128 -0
  272. package/dist/plugin-distribution/manager.js +358 -0
  273. package/dist/plugin-distribution/path-safety.d.ts +2 -0
  274. package/dist/plugin-distribution/path-safety.js +20 -0
  275. package/dist/plugin-distribution/plugin-bundle-verifier.d.ts +28 -0
  276. package/dist/plugin-distribution/plugin-bundle-verifier.js +96 -0
  277. package/dist/plugin-distribution/plugin-bundle-worker.d.ts +34 -0
  278. package/dist/plugin-distribution/plugin-bundle-worker.js +99 -0
  279. package/dist/plugin-distribution/plugin-bundle.d.ts +16 -0
  280. package/dist/plugin-distribution/plugin-bundle.js +244 -0
  281. package/dist/plugin-distribution/plugin-bundle.worker.d.ts +1 -0
  282. package/dist/plugin-distribution/plugin-bundle.worker.js +38 -0
  283. package/dist/plugin-distribution/registry-cache.d.ts +26 -0
  284. package/dist/plugin-distribution/registry-cache.js +85 -0
  285. package/dist/plugin-distribution/registry-client.d.ts +36 -0
  286. package/dist/plugin-distribution/registry-client.js +115 -0
  287. package/dist/plugin-distribution/reserved-ids.d.ts +4 -0
  288. package/dist/plugin-distribution/reserved-ids.js +10 -0
  289. package/dist/plugin-distribution/runtime-validation.d.ts +14 -0
  290. package/dist/plugin-distribution/runtime-validation.js +388 -0
  291. package/dist/plugin-distribution/schemas.d.ts +4895 -0
  292. package/dist/plugin-distribution/schemas.js +299 -0
  293. package/dist/plugin-distribution/signing.d.ts +5 -0
  294. package/dist/plugin-distribution/signing.js +38 -0
  295. package/dist/plugin-distribution/types.d.ts +217 -0
  296. package/dist/plugin-distribution/types.js +1 -0
  297. package/dist/plugin-install-progress.d.ts +15 -0
  298. package/dist/plugin-install-progress.js +86 -0
  299. package/dist/plugin-manager.d.ts +306 -0
  300. package/dist/plugin-manager.js +2848 -0
  301. package/dist/plugin-runtime-entry.d.ts +19 -0
  302. package/dist/plugin-runtime-entry.js +135 -0
  303. package/dist/plugin.d.ts +350 -0
  304. package/dist/plugin.js +754 -0
  305. package/dist/popover.d.ts +20 -0
  306. package/dist/popover.js +32 -0
  307. package/dist/promise-worker.d.ts +22 -0
  308. package/dist/promise-worker.js +65 -0
  309. package/dist/prompt-confirm.d.ts +9 -0
  310. package/dist/prompt-confirm.js +33 -0
  311. package/dist/search-document-provider.d.ts +45 -0
  312. package/dist/search-document-provider.js +54 -0
  313. package/dist/search-query/index.d.ts +78 -0
  314. package/dist/search-query/index.js +426 -0
  315. package/dist/search-query/parser.d.ts +3 -0
  316. package/dist/search-query/parser.js +16 -0
  317. package/dist/search-query/parser.terms.js +26 -0
  318. package/dist/search-query/search-query.grammar +128 -0
  319. package/dist/search.d.ts +19 -0
  320. package/dist/search.js +104 -0
  321. package/dist/setting-section-layout.d.ts +19 -0
  322. package/dist/setting-section-layout.js +194 -0
  323. package/dist/settings.svelte.d.ts +474 -0
  324. package/dist/settings.svelte.js +1421 -0
  325. package/dist/source-text-file-view.d.ts +25 -0
  326. package/dist/source-text-file-view.js +78 -0
  327. package/dist/status-bar.svelte.d.ts +29 -0
  328. package/dist/status-bar.svelte.js +72 -0
  329. package/dist/storage/app-database.d.ts +860 -0
  330. package/dist/storage/app-database.js +2372 -0
  331. package/dist/storage/blob-store.d.ts +12 -0
  332. package/dist/storage/blob-store.js +1 -0
  333. package/dist/storage/browser-app-database-coordination.d.ts +35 -0
  334. package/dist/storage/browser-app-database-coordination.js +207 -0
  335. package/dist/storage/browser-coordinated-app-database.d.ts +109 -0
  336. package/dist/storage/browser-coordinated-app-database.js +704 -0
  337. package/dist/storage/browser.d.ts +153 -0
  338. package/dist/storage/browser.js +794 -0
  339. package/dist/storage/desktop-native.d.ts +184 -0
  340. package/dist/storage/desktop-native.js +415 -0
  341. package/dist/storage/fs.d.ts +188 -0
  342. package/dist/storage/fs.js +307 -0
  343. package/dist/storage/index-projection.d.ts +236 -0
  344. package/dist/storage/index-projection.js +402 -0
  345. package/dist/storage/index.d.ts +17 -0
  346. package/dist/storage/index.js +17 -0
  347. package/dist/storage/keyval.d.ts +94 -0
  348. package/dist/storage/keyval.js +199 -0
  349. package/dist/storage/memory-vault-adapter.d.ts +44 -0
  350. package/dist/storage/memory-vault-adapter.js +351 -0
  351. package/dist/storage/native-vault-bootstrap-kv.d.ts +22 -0
  352. package/dist/storage/native-vault-bootstrap-kv.js +96 -0
  353. package/dist/storage/path.d.ts +22 -0
  354. package/dist/storage/path.js +110 -0
  355. package/dist/storage/search-embedding-provider.d.ts +75 -0
  356. package/dist/storage/search-embedding-provider.js +446 -0
  357. package/dist/storage/search-embedding-worker.d.ts +1 -0
  358. package/dist/storage/search-embedding-worker.js +63 -0
  359. package/dist/storage/search-query-evaluator.d.ts +14 -0
  360. package/dist/storage/search-query-evaluator.js +678 -0
  361. package/dist/storage/task-projection.d.ts +152 -0
  362. package/dist/storage/task-projection.js +154 -0
  363. package/dist/storage/turso-app-database.d.ts +150 -0
  364. package/dist/storage/turso-app-database.js +2671 -0
  365. package/dist/storage/vault-session.d.ts +37 -0
  366. package/dist/storage/vault-session.js +196 -0
  367. package/dist/storage/vault-state.d.ts +74 -0
  368. package/dist/storage/vault-state.js +181 -0
  369. package/dist/storage/vault.svelte.d.ts +257 -0
  370. package/dist/storage/vault.svelte.js +661 -0
  371. package/dist/suggest.d.ts +193 -0
  372. package/dist/suggest.js +391 -0
  373. package/dist/tasks.d.ts +7 -0
  374. package/dist/tasks.js +18 -0
  375. package/dist/telemetry.d.ts +116 -0
  376. package/dist/telemetry.js +103 -0
  377. package/dist/utils.d.ts +55 -0
  378. package/dist/utils.js +314 -0
  379. package/dist/vault-api.d.ts +5 -0
  380. package/dist/vault-api.js +3 -0
  381. package/dist/vault-maintenance-commands.d.ts +5 -0
  382. package/dist/vault-maintenance-commands.js +32 -0
  383. package/dist/view.svelte.d.ts +215 -0
  384. package/dist/view.svelte.js +381 -0
  385. package/dist/vite-env.d.ts +2 -0
  386. package/dist/workspace-host-internal.d.ts +7 -0
  387. package/dist/workspace-host-internal.js +7 -0
  388. package/dist/workspace-host.d.ts +10 -0
  389. package/dist/workspace-host.js +14 -0
  390. package/dist/workspace-layout-commands.d.ts +3 -0
  391. package/dist/workspace-layout-commands.js +72 -0
  392. package/dist/workspace-layout-normalizer.d.ts +92 -0
  393. package/dist/workspace-layout-normalizer.js +301 -0
  394. package/dist/workspace-layouts.d.ts +7 -0
  395. package/dist/workspace-layouts.js +23 -0
  396. package/dist/workspace-trust.d.ts +32 -0
  397. package/dist/workspace-trust.js +72 -0
  398. package/dist/workspace.svelte.d.ts +796 -0
  399. package/dist/workspace.svelte.js +4380 -0
  400. package/package.json +240 -0
@@ -0,0 +1,540 @@
1
+ import { Workspace } from "./workspace.svelte";
2
+ import { getAdapterVaultId, TFile, Vault, } from "./storage";
3
+ import { IndexProjectionRegistry } from "./storage/index-projection";
4
+ import { AppSettings } from "./settings.svelte";
5
+ import { NativeDesktopCommunityPluginExecutionHost, PluginManager, } from "./plugin-manager";
6
+ import { hasNativeDesktopCapability } from "./storage/desktop-native";
7
+ import { Configuration } from "./configuration.svelte";
8
+ import { CommandManager, Keymap, Scope, } from "./command.svelte";
9
+ import { MetadataCache } from "./cache.svelte";
10
+ import { logging } from "./logging";
11
+ import { MetadataTypeManager } from "./metadata.svelte";
12
+ import { FileManager } from "./file-manager";
13
+ import { EmbedRegistry } from "./embed-registry";
14
+ import { findOpenFileLeaf, leafFilePath, applyOpenViewStateToLeaf, } from "./open-file";
15
+ import { LocalizationManager, localeManager, } from "./localization-manager.svelte";
16
+ import { NotificationManager } from "./notifications";
17
+ import { installVaultMaintenanceCommands } from "./vault-maintenance-commands";
18
+ import { NoopTelemetryService } from "./telemetry";
19
+ import { LanguageServiceManager, } from "./language-service";
20
+ import { bindRuntimePluginDiagnostics } from "./diagnostics";
21
+ import { ContextKeyService } from "./context-keys.svelte";
22
+ import { StatusBarManager } from "./status-bar.svelte";
23
+ import { AppUrlService } from "./app-url";
24
+ import { WorkspaceTrustService } from "./workspace-trust";
25
+ import { DefaultPluginDistributionManager, } from "./plugin-distribution";
26
+ import { ConfigurationOptionSourceRegistry } from "./configuration-option-source-registry";
27
+ import { resolveMetadataFieldValuesAsync } from "./configuration-option-source-providers";
28
+ import { SearchDocumentProviderRegistry } from "./search-document-provider";
29
+ import { DailyDocumentProviderRegistry } from "./daily-document-provider";
30
+ import { AppToolRegistry } from "./agent-tools";
31
+ import { AppSkillRegistry, AppSlashCommandRegistry, } from "./agent-skills";
32
+ import { AppResultViewRegistry } from "./agent-result-views";
33
+ import { MarkdownExtensionRegistry } from "./markdown-extension-registry";
34
+ import { MarkdownFileSurfaceRegistry } from "./markdown-file-surface-registry";
35
+ import { installApplicationCompatibility, resolveApplication, } from "./application-compatibility";
36
+ import { provideApplicationState, useApplicationState, } from "./application-state.svelte";
37
+ export { getApplicationCompatibility, installApplicationCompatibility, resolveApplication, } from "./application-compatibility";
38
+ export { provideApplicationState, useApplicationState, } from "./application-state.svelte";
39
+ /**
40
+ * Create the default safe mode state used for a normal startup.
41
+ *
42
+ * @public
43
+ */
44
+ export function createDefaultAppSafeModeState() {
45
+ return {
46
+ active: false,
47
+ disableCommunityPlugins: false,
48
+ disableOptionalCorePlugins: false,
49
+ skipLayoutRestore: false,
50
+ disableNotebookExecution: false,
51
+ lastStartupFailure: null,
52
+ };
53
+ }
54
+ /**
55
+ * Ephemeral renderer state shared while processing a markdown view.
56
+ *
57
+ * @public
58
+ */
59
+ export class RenderContext {
60
+ hoverPopover = null;
61
+ }
62
+ /**
63
+ * In-memory secret store used by runtime services and plugins.
64
+ *
65
+ * Hosts may replace or mirror this with stronger persisted storage, but the API
66
+ * surface intentionally stays small and synchronous for plugin code.
67
+ *
68
+ * @public
69
+ */
70
+ export class SecretStorage {
71
+ secrets = {};
72
+ /**
73
+ * Store or replace a secret value.
74
+ *
75
+ * @param id - Stable identifier for the secret.
76
+ * @param secret - Raw secret value to store.
77
+ * @public
78
+ */
79
+ setSecret(id, secret) {
80
+ if (!/^[a-z0-9-]+$/.test(id)) {
81
+ throw new Error(`Invalid secret id: ${id}`);
82
+ }
83
+ this.secrets[id] = secret;
84
+ }
85
+ /**
86
+ * Look up a secret by id.
87
+ *
88
+ * @param id - Stable identifier for the secret.
89
+ * @returns The stored secret value, or `null` if no secret exists.
90
+ * @public
91
+ */
92
+ getSecret(id) {
93
+ return this.secrets[id] ?? null;
94
+ }
95
+ /**
96
+ * List the ids of all stored secrets.
97
+ *
98
+ * @public
99
+ */
100
+ listSecrets() {
101
+ return Object.keys(this.secrets);
102
+ }
103
+ }
104
+ /**
105
+ * Central runtime service container exposed to plugins, views, and renderer
106
+ * integrations.
107
+ *
108
+ * `App` owns the active vault session, workspace layout, plugin runtime,
109
+ * commands, metadata cache, notifications, and related shared services.
110
+ *
111
+ * @public
112
+ */
113
+ export class App {
114
+ props;
115
+ i18n = localeManager;
116
+ workspace;
117
+ vault = $state();
118
+ appDatabase;
119
+ session;
120
+ safeMode;
121
+ plugins = $state();
122
+ scope = $state(new Scope(undefined, this));
123
+ keymap = $state(new Keymap(this.scope));
124
+ settings = $state(new AppSettings());
125
+ editors = new Map();
126
+ editorSuggest = new Map();
127
+ configuration;
128
+ fileManager = new FileManager(this);
129
+ contextKeys = new ContextKeyService();
130
+ statusBar = new StatusBarManager();
131
+ urls = new AppUrlService(this);
132
+ workspaceTrust;
133
+ pluginDistribution;
134
+ mardownPostProcessor = $state([]);
135
+ mardownCodeBlockPostProcessor = $state({});
136
+ markdownDirectiveRenderers = $state({});
137
+ markdownViewMenuItems = new Set();
138
+ metadataTypeManager = $state();
139
+ commands = $state(new CommandManager(this));
140
+ settingsOpen = $state(false);
141
+ settingsTabId = $state(null);
142
+ metadataCache = $state();
143
+ embedRegistry = new EmbedRegistry();
144
+ configurationOptionSources = new ConfigurationOptionSourceRegistry();
145
+ searchDocumentProviders = new SearchDocumentProviderRegistry();
146
+ dailyDocumentProviders = new DailyDocumentProviderRegistry();
147
+ indexProjections = new IndexProjectionRegistry();
148
+ agentTools = new AppToolRegistry();
149
+ agentSkills = new AppSkillRegistry();
150
+ agentSlashCommands = new AppSlashCommandRegistry();
151
+ agentResultViews = new AppResultViewRegistry();
152
+ markdownExtensions = new MarkdownExtensionRegistry();
153
+ markdownFileSurfaces = new MarkdownFileSurfaceRegistry();
154
+ lastEvent = $state(null);
155
+ renderContext = new RenderContext();
156
+ secretStorage = new SecretStorage();
157
+ notifications = $state();
158
+ telemetry = new NoopTelemetryService();
159
+ languageServices = new LanguageServiceManager({
160
+ onBeforeResolve: async (languageId) => {
161
+ await this.plugins?.activateForLanguage(languageId);
162
+ await this.plugins?.activateForService("language-service");
163
+ await this.plugins?.activateForService("lapis.languageService");
164
+ },
165
+ });
166
+ get internalPlugins() {
167
+ return this.plugins.internalPlugins;
168
+ }
169
+ logger = logging.getLogger("app");
170
+ /**
171
+ * Create the application service container for a mounted vault session.
172
+ *
173
+ * @param props - Runtime services and adapters required to bootstrap the app.
174
+ * @public
175
+ */
176
+ constructor(props) {
177
+ this.props = props;
178
+ const adapter = props.session?.vaultAdapter ?? props.adapter;
179
+ if (!adapter) {
180
+ throw new Error("App requires a vault adapter or vault session");
181
+ }
182
+ this.session = props.session;
183
+ this.safeMode = props.safeMode ?? createDefaultAppSafeModeState();
184
+ const appDatabase = props.session?.appDatabase ?? props.appDatabase;
185
+ if (!appDatabase) {
186
+ throw new Error(`App requires an app database for vault ${getAdapterVaultId(adapter)}`);
187
+ }
188
+ this.appDatabase = appDatabase;
189
+ // Workspace host setup subscribes to notification progress.
190
+ this.notifications = new NotificationManager(this.appDatabase);
191
+ this.workspace = new Workspace(this);
192
+ const editorViewsSource = this.configurationOptionSources.register("workspace.editorViews", {
193
+ label: "Workspace editor views",
194
+ description: "Registered editor views available for editor associations.",
195
+ getOptions: () => this.workspace.editorViews.getAll().map((view) => ({
196
+ value: view.id,
197
+ label: view.label,
198
+ description: view.description,
199
+ })),
200
+ });
201
+ this.workspace.editorViews.on("changed", () => {
202
+ editorViewsSource.invalidate();
203
+ });
204
+ this.settings.addGroup((options) => options.setId("options").setTitle("Options"));
205
+ this.settings.addGroup((options) => options.setId("core-plugins").setTitle("Core plugins"));
206
+ this.settings.addGroup((options) => options.setId("community-plugins").setTitle("Community plugins"));
207
+ this.configuration = new Configuration(this, props.configPath);
208
+ this.workspace.bindConfiguration();
209
+ this.vault = new Vault(adapter);
210
+ this.workspaceTrust = new WorkspaceTrustService(adapter);
211
+ this.metadataCache = new MetadataCache(this);
212
+ installVaultMaintenanceCommands(this);
213
+ this.plugins = new PluginManager(this, "/.obsidian/plugins", adapter, {
214
+ communityPluginHost: hasNativeDesktopCapability("plugin-sidecar")
215
+ ? new NativeDesktopCommunityPluginExecutionHost(adapter, undefined, props.createCommunityPluginDependencyResolver)
216
+ : undefined,
217
+ createCommunityPluginDependencyResolver: props.createCommunityPluginDependencyResolver,
218
+ pluginAssetServer: props.pluginAssetServer,
219
+ });
220
+ this.workspace.bindPlugins();
221
+ const languageServiceDiagnostics = this.workspace.diagnostics.createCollection("lapis:language-service", {
222
+ label: "Language service",
223
+ buildItemMenu: (menu, entry) => this.languageServices.buildDiagnosticItemMenu(menu, entry),
224
+ });
225
+ this.languageServices.bindDiagnostics({
226
+ collection: languageServiceDiagnostics,
227
+ applyCodeAction: (document, action) => this.applyLanguageServiceCodeAction(document, action),
228
+ });
229
+ bindRuntimePluginDiagnostics(this.plugins, this.workspace.diagnostics);
230
+ this.pluginDistribution = new DefaultPluginDistributionManager({
231
+ ...props.pluginDistributionOptions,
232
+ adapter,
233
+ appVersion: this.version,
234
+ platform: props.session?.runtime === "deno-desktop" ? "desktop" : "web",
235
+ workspaceTrusted: async () => (await this.workspaceTrust.ready()).trusted,
236
+ pluginManager: this.plugins,
237
+ });
238
+ this.metadataTypeManager = new MetadataTypeManager(this);
239
+ const metadataFieldValuesSource = this.configurationOptionSources.register("metadata.fieldValues", {
240
+ label: "Metadata field values",
241
+ description: "Known frontmatter values for a metadata field.",
242
+ cache: "session",
243
+ getOptions: (context) => resolveMetadataFieldValuesAsync((field) => this.metadataTypeManager.getValuesAsync(field), context.schema, context.query, context.limit),
244
+ });
245
+ this.metadataCache.on("changed", () => {
246
+ metadataFieldValuesSource.invalidate();
247
+ });
248
+ this.metadataCache.on("deleted", () => {
249
+ metadataFieldValuesSource.invalidate();
250
+ });
251
+ this.initializeContextKeys();
252
+ }
253
+ async applyLanguageServiceCodeAction(document, action) {
254
+ let value = document.text;
255
+ const path = document.uri.startsWith("vault:///")
256
+ ? decodeURI(document.uri.slice("vault:///".length))
257
+ : null;
258
+ const file = path ? this.vault.getFileByPath(path) : null;
259
+ if (file && action.edit && typeof action.edit === "object") {
260
+ const changes = action.edit.changes;
261
+ if (Array.isArray(changes)) {
262
+ const edits = changes
263
+ .map((change) => {
264
+ if (!change || typeof change !== "object")
265
+ return null;
266
+ const record = change;
267
+ const from = typeof record.from === "number" ? record.from : null;
268
+ const to = typeof record.to === "number" ? record.to : from;
269
+ const insert = typeof record.insert === "string"
270
+ ? record.insert
271
+ : typeof record.text === "string"
272
+ ? record.text
273
+ : null;
274
+ if (from === null || to === null || insert === null)
275
+ return null;
276
+ return { from, to, insert };
277
+ })
278
+ .filter((edit) => edit !== null)
279
+ .sort((left, right) => right.from - left.from);
280
+ if (edits.length) {
281
+ for (const edit of edits) {
282
+ value = `${value.slice(0, edit.from)}${edit.insert}${value.slice(edit.to)}`;
283
+ }
284
+ const openEditor = this.workspace.iterateAllLeaves((leaf) => {
285
+ const view = leaf.view;
286
+ return view?.editor && view.file?.path === file.path
287
+ ? view.editor
288
+ : undefined;
289
+ });
290
+ openEditor?.view.dispatch({
291
+ changes: [...edits]
292
+ .sort((left, right) => left.from - right.from)
293
+ .map((edit) => ({
294
+ from: edit.from,
295
+ to: edit.to,
296
+ insert: edit.insert,
297
+ })),
298
+ userEvent: "input.complete",
299
+ });
300
+ await this.vault.modify(file, value);
301
+ }
302
+ }
303
+ }
304
+ if (action.command) {
305
+ await this.languageServices.applyCommand({ ...document, text: value }, action.command);
306
+ }
307
+ if (!file && !action.command)
308
+ return;
309
+ if (!action.command && value === document.text)
310
+ return;
311
+ await this.languageServices.diagnostics({
312
+ ...document,
313
+ version: document.version + 1,
314
+ text: value,
315
+ });
316
+ }
317
+ initializeContextKeys() {
318
+ this.contextKeys.set("workspace.trusted", this.workspaceTrust.trusted);
319
+ this.workspaceTrust.on("changed", (state) => {
320
+ this.contextKeys.set("workspace.trusted", state.trusted);
321
+ });
322
+ this.contextKeys.set("safeMode.active", this.safeMode.active);
323
+ this.contextKeys.set("safeMode.notebookExecutionDisabled", this.safeMode.disableNotebookExecution);
324
+ const runtimeHost = hasNativeDesktopCapability("resource")
325
+ ? "desktop"
326
+ : "browser";
327
+ this.contextKeys.set("runtime.host", runtimeHost);
328
+ this.contextKeys.set("runtime.desktop", runtimeHost === "desktop");
329
+ this.contextKeys.set("runtime.browser", runtimeHost === "browser");
330
+ this.contextKeys.set("runtime.nativeHost", hasNativeDesktopCapability("resource"));
331
+ this.syncWorkspaceContextKeys();
332
+ this.workspace.on("active-leaf-change", () => {
333
+ this.syncWorkspaceContextKeys();
334
+ });
335
+ this.workspace.on("editor-updated", (editor) => {
336
+ if (editor === this.workspace.activeEditor?.editor) {
337
+ this.syncWorkspaceContextKeys();
338
+ }
339
+ });
340
+ void this.workspaceTrust.ready().then((state) => {
341
+ this.contextKeys.set("workspace.trusted", state.trusted);
342
+ });
343
+ }
344
+ syncWorkspaceContextKeys() {
345
+ const activeLeaf = this.workspace.activeLeaf;
346
+ const activeView = activeLeaf?.view;
347
+ const activeEditor = this.workspace.activeEditor?.editor;
348
+ this.contextKeys.set("view.focused", Boolean(activeView));
349
+ this.contextKeys.set("editor.active", Boolean(activeEditor));
350
+ this.contextKeys.set("editor.hasSelection", Boolean(activeEditor?.somethingSelected()));
351
+ if (activeView) {
352
+ this.contextKeys.set("view.id", activeView.getViewType());
353
+ }
354
+ else {
355
+ this.contextKeys.reset("view.id");
356
+ }
357
+ const language = this.workspace.activeEditor?.file?.extension;
358
+ if (language) {
359
+ this.contextKeys.set("editor.language", language);
360
+ }
361
+ else {
362
+ this.contextKeys.reset("editor.language");
363
+ }
364
+ }
365
+ setWorkspaceTrusted(trusted) {
366
+ this.contextKeys.set("workspace.trusted", trusted);
367
+ }
368
+ openFile(file, openState) {
369
+ return this.telemetry.measureAsync("app.open_file", async (span) => {
370
+ span.setAttribute("file.extension", file.extension);
371
+ const existingLeaf = findOpenFileLeaf(this.workspace, file);
372
+ if (existingLeaf) {
373
+ span.setAttribute("workspace.file_already_open", true);
374
+ await applyOpenViewStateToLeaf(existingLeaf, openState);
375
+ this.workspace.activateLeaf(existingLeaf, {
376
+ operation: "open-existing-file",
377
+ });
378
+ return;
379
+ }
380
+ const reusedRootLeaf = Boolean(this.workspace.activeRootLeaf);
381
+ const leaf = this.workspace.getLeaf();
382
+ span.setAttribute("workspace.reused_active_leaf", reusedRootLeaf);
383
+ this.workspace.activeLeaf = leaf;
384
+ if (leafFilePath(leaf) === file.path) {
385
+ span.setAttribute("workspace.file_already_open", true);
386
+ if (openState?.state) {
387
+ await applyOpenViewStateToLeaf(leaf, openState);
388
+ }
389
+ return;
390
+ }
391
+ const viewState = openState?.state
392
+ ? {
393
+ type: this.workspace.determineViewTypeForPath(file.path) ??
394
+ this.workspace.determineViewType(file.extension) ??
395
+ "",
396
+ state: openState.state,
397
+ }
398
+ : undefined;
399
+ return leaf.openFile(file, { state: viewState });
400
+ }, {
401
+ attributes: { "file.extension": file.extension },
402
+ slowThresholdMs: 250,
403
+ });
404
+ }
405
+ editorExtensions(viewType, context = {}) {
406
+ const extensions = [];
407
+ const type = this.workspace.determineViewType(viewType);
408
+ if (type) {
409
+ [...(this.editors.get(type) ?? [])].forEach((ext) => {
410
+ if (typeof ext === "function") {
411
+ extensions.push(ext(context));
412
+ }
413
+ else {
414
+ extensions.push(ext);
415
+ }
416
+ });
417
+ }
418
+ return extensions;
419
+ }
420
+ /**
421
+ * Registers a CodeMirror 6 extension. To reconfigure cm6 extensions for a
422
+ * plugin on the fly, an array should be passed in, and modified dynamically.
423
+ * Once this array is modified, calling {@link Workspace#updateOptions} will
424
+ * apply the changes.
425
+ *
426
+ * @param extension - Must be a CodeMirror 6 `Extension`, or an array of
427
+ * Extensions.
428
+ * @public
429
+ */
430
+ registerEditorExtension(extension, viewType = "markdown") {
431
+ viewType = this.workspace.determineViewType(viewType) ?? "markdown";
432
+ if (!this.editors.get(viewType)) {
433
+ this.editors.set(viewType, new Set());
434
+ }
435
+ this.editors.get(viewType).add(extension);
436
+ }
437
+ unregisterEditorExtension(extension, viewType = "markdown") {
438
+ viewType = this.editors.has(viewType)
439
+ ? viewType
440
+ : (this.workspace.determineViewType(viewType) ?? "markdown");
441
+ this.editors.get(viewType)?.delete(extension);
442
+ }
443
+ registerEditorSuggest(suggest, viewType = "markdown") {
444
+ viewType = this.workspace.determineViewType(viewType) ?? "markdown";
445
+ if (!this.editorSuggest.get(viewType)) {
446
+ this.editorSuggest.set(viewType, new Set());
447
+ }
448
+ this.editorSuggest.get(viewType).add(suggest);
449
+ }
450
+ unregisterEditorSuggest(suggest, viewType = "markdown") {
451
+ viewType = this.workspace.determineViewType(viewType) ?? "markdown";
452
+ this.editorSuggest.get(viewType)?.delete(suggest);
453
+ }
454
+ registerMarkdownPostProcessor(postProcessor) {
455
+ const processors = [
456
+ ...new Set([...this.mardownPostProcessor, postProcessor]),
457
+ ].sort((a, b) => {
458
+ return (a.sortOrder ?? 0) - (b.sortOrder ?? 0);
459
+ });
460
+ this.mardownPostProcessor = processors;
461
+ }
462
+ unregisterMarkdownPostProcessor(postProcessor) {
463
+ this.mardownPostProcessor = this.mardownPostProcessor.filter((it) => it !== postProcessor);
464
+ }
465
+ registerMarkdownCodeBlockProcessor(language, postProcessor) {
466
+ this.mardownCodeBlockPostProcessor[language] ||= [];
467
+ const processors = [
468
+ ...new Set([
469
+ ...this.mardownCodeBlockPostProcessor[language],
470
+ postProcessor,
471
+ ]),
472
+ ].sort((a, b) => {
473
+ return (a.sortOrder ?? 0) - (b.sortOrder ?? 0);
474
+ });
475
+ this.mardownCodeBlockPostProcessor[language] = processors;
476
+ }
477
+ unregisterMarkdownCodeBlockProcessor(language, postProcessor) {
478
+ this.mardownCodeBlockPostProcessor[language] ||= [];
479
+ this.mardownCodeBlockPostProcessor[language] =
480
+ this.mardownCodeBlockPostProcessor[language].filter((it) => it !== postProcessor);
481
+ }
482
+ registerMarkdownDirectiveRenderer(directive, renderer) {
483
+ this.markdownDirectiveRenderers = {
484
+ ...this.markdownDirectiveRenderers,
485
+ [directive]: renderer,
486
+ };
487
+ }
488
+ unregisterMarkdownDirectiveRenderer(directive) {
489
+ const { [directive]: _removed, ...rest } = this.markdownDirectiveRenderers;
490
+ this.markdownDirectiveRenderers = rest;
491
+ }
492
+ registerMarkdownViewMenuItem(provider) {
493
+ this.markdownViewMenuItems.add(provider);
494
+ }
495
+ unregisterMarkdownViewMenuItem(provider) {
496
+ this.markdownViewMenuItems.delete(provider);
497
+ }
498
+ get version() {
499
+ return this.props.version;
500
+ }
501
+ get isDarkMode() {
502
+ return document.documentElement.classList.contains("theme-dark");
503
+ }
504
+ loadLocalStorage(key) {
505
+ return localStorage.getItem(key);
506
+ }
507
+ saveLocalStorage(key, data) {
508
+ localStorage.setItem(key, data);
509
+ }
510
+ /**
511
+ * Force mobile or desktop workspace layout and reload the app.
512
+ *
513
+ * Intended for devtools/console use when testing mobile shell behavior on
514
+ * desktop viewports.
515
+ *
516
+ * @param enable - When true or omitted, forces mobile layout; when false,
517
+ * forces desktop layout.
518
+ * @public
519
+ */
520
+ async emulateMobile(enable = true) {
521
+ const mode = enable ? "always" : "never";
522
+ await this.configuration
523
+ .getConfiguration()
524
+ .update("workspace.mobile.mode", mode);
525
+ if (typeof window !== "undefined") {
526
+ window.location.reload();
527
+ }
528
+ }
529
+ setting(id) {
530
+ return this.settings.find(id);
531
+ }
532
+ }
533
+ let legacyApplicationLease = null;
534
+ export function setApplicationState(props) {
535
+ const application = new App(props);
536
+ provideApplicationState(application);
537
+ legacyApplicationLease?.();
538
+ legacyApplicationLease = installApplicationCompatibility(application);
539
+ return application;
540
+ }
@@ -0,0 +1,38 @@
1
+ import type { App } from "./context.svelte";
2
+ import { EventDispatcher } from "./events";
3
+ import type { TFile } from "./storage";
4
+ export declare const DEFAULT_DAILY_NOTES_FOLDER = "daily";
5
+ export declare const DEFAULT_DAILY_NOTES_DATE_FORMAT = "yyyy-MM-dd";
6
+ export type DailyDocumentProvider = {
7
+ /** Stable application-wide provider id. */
8
+ id: string;
9
+ /** Higher priorities override lower-priority providers. */
10
+ priority?: number;
11
+ /** Find the canonical daily note for a local calendar date. */
12
+ locate(date: string): Promise<TFile | null>;
13
+ /** Find or create the canonical daily note for a local calendar date. */
14
+ ensure(date: string): Promise<TFile>;
15
+ };
16
+ export type DailyDocumentProviderRegistration = {
17
+ readonly id: string;
18
+ dispose(): void;
19
+ };
20
+ export type DailyDocumentProviderChange = {
21
+ providerId: string;
22
+ reason: "registered" | "unregistered";
23
+ };
24
+ /** Public registry for the host-owned daily Markdown document policy. */
25
+ export declare class DailyDocumentProviderRegistry extends EventDispatcher<{
26
+ changed: [change: DailyDocumentProviderChange];
27
+ }> {
28
+ private readonly providers;
29
+ register(provider: DailyDocumentProvider): DailyDocumentProviderRegistration;
30
+ getAll(): DailyDocumentProvider[];
31
+ resolve(): DailyDocumentProvider;
32
+ }
33
+ export declare function formatDailyDocumentFilename(date: string, format: string): string;
34
+ /**
35
+ * Install Lapis' default daily-note policy and its generated settings controls.
36
+ * Hosts call this before loading configuration and dispose it with the App.
37
+ */
38
+ export declare function registerDefaultDailyDocumentProvider(app: App): DailyDocumentProviderRegistration;