@lapis-notes/api 0.1.3 → 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 (199) hide show
  1. package/CHANGELOG.md +304 -13
  2. package/README.md +19 -0
  3. package/dist/__tests__/fixtures/indexed-mutations.json +6862 -0
  4. package/dist/__tests__/fixtures/memory-storage.json +309 -0
  5. package/dist/__tests__/fixtures/native-facade-contract.json +3224 -0
  6. package/dist/__tests__/fixtures/projection-query.json +195 -0
  7. package/dist/__tests__/fixtures/projection-values.json +60 -0
  8. package/dist/__tests__/fixtures/search-preparation.json +1513 -0
  9. package/dist/__tests__/fixtures/search-retrieval.json +15409 -0
  10. package/dist/__tests__/fixtures/search-semantic-model.json +3691 -0
  11. package/dist/__tests__/fixtures/search-semantic-retrieval.json +6603 -0
  12. package/dist/__tests__/fixtures/search-storage.json +409 -0
  13. package/dist/__tests__/fixtures/task-projection.json +428 -0
  14. package/dist/__tests__/indexed-mutation-support.js +262 -0
  15. package/dist/__tests__/projection-query-support.js +40 -0
  16. package/dist/__tests__/search-retrieval-support.js +47 -0
  17. package/dist/app-database-host.d.ts +1 -0
  18. package/dist/app-shell-plugin-persistence.d.ts +3 -2
  19. package/dist/app-shell-plugin-persistence.js +37 -3
  20. package/dist/cache.svelte.d.ts +8 -1
  21. package/dist/cache.svelte.js +103 -5
  22. package/dist/command.svelte.js +29 -2
  23. package/dist/components/editor/editor.css +4 -0
  24. package/dist/components/editor/editor.svelte +24 -11
  25. package/dist/components/editor/embedded-editor-surface.js +3 -1
  26. package/dist/components/editor/inline-title-alignment.d.ts +3 -0
  27. package/dist/components/editor/inline-title-alignment.js +57 -0
  28. package/dist/configuration.svelte.d.ts +270 -206
  29. package/dist/configuration.svelte.js +161 -86
  30. package/dist/context.svelte.d.ts +23 -3
  31. package/dist/context.svelte.js +68 -30
  32. package/dist/diagnostics.d.ts +8 -0
  33. package/dist/diagnostics.js +6 -0
  34. package/dist/editor-save-context.d.ts +35 -0
  35. package/dist/editor-save-context.js +132 -0
  36. package/dist/editor-view-registry.d.ts +10 -0
  37. package/dist/editor-view-registry.js +44 -4
  38. package/dist/editor.svelte.d.ts +19 -1
  39. package/dist/editor.svelte.js +528 -55
  40. package/dist/embed-registry.d.ts +10 -0
  41. package/dist/embed-registry.js +15 -0
  42. package/dist/file-editing-failures.d.ts +2 -0
  43. package/dist/file-editing-failures.js +29 -0
  44. package/dist/file-editing-native-issues.d.ts +19 -0
  45. package/dist/file-editing-native-issues.js +65 -0
  46. package/dist/file-editing-sessions.d.ts +76 -0
  47. package/dist/file-editing-sessions.js +367 -0
  48. package/dist/file-manager.d.ts +9 -1
  49. package/dist/file-manager.js +45 -3
  50. package/dist/file-state-store.d.ts +5 -0
  51. package/dist/file-state-store.js +34 -0
  52. package/dist/file-text-conflicts.d.ts +25 -0
  53. package/dist/file-text-conflicts.js +35 -0
  54. package/dist/file-text-mutation.d.ts +13 -0
  55. package/dist/file-text-mutation.js +100 -0
  56. package/dist/file-text-persistence.d.ts +36 -0
  57. package/dist/file-text-persistence.js +234 -0
  58. package/dist/file-text-state-writer.d.ts +34 -0
  59. package/dist/file-text-state-writer.js +183 -0
  60. package/dist/files-configuration.d.ts +20 -0
  61. package/dist/files-configuration.js +47 -0
  62. package/dist/generated/plugin-host-modules.schema.generated.d.ts +114 -34
  63. package/dist/generated/plugin-host-modules.schema.generated.js +132 -34
  64. package/dist/glob.d.ts +3 -0
  65. package/dist/glob.js +2 -1
  66. package/dist/icons/changes.d.ts +3 -0
  67. package/dist/icons/changes.js +16 -0
  68. package/dist/icons/index.d.ts +5 -1
  69. package/dist/icons/index.js +44 -3
  70. package/dist/icons/registry.d.ts +35 -0
  71. package/dist/icons/registry.js +154 -0
  72. package/dist/icons/safe-svg.d.ts +2 -0
  73. package/dist/icons/safe-svg.js +44 -0
  74. package/dist/index.d.ts +6 -1
  75. package/dist/index.js +4 -1
  76. package/dist/lapis-extension.d.ts +6 -2
  77. package/dist/lapis-extension.js +2 -0
  78. package/dist/metadata-store.d.ts +23 -0
  79. package/dist/metadata-store.js +1 -0
  80. package/dist/metadata.svelte.js +45 -2
  81. package/dist/native-background-indexing.d.ts +48 -0
  82. package/dist/native-background-indexing.js +208 -0
  83. package/dist/native-database-protocol.d.ts +29 -0
  84. package/dist/native-database-protocol.js +1 -0
  85. package/dist/native-editing-intent-lease.d.ts +17 -0
  86. package/dist/native-editing-intent-lease.js +188 -0
  87. package/dist/native-editing-intents-protocol.d.ts +70 -0
  88. package/dist/native-editing-intents-protocol.js +1 -0
  89. package/dist/native-editing-intents.d.ts +8 -0
  90. package/dist/native-editing-intents.js +1 -0
  91. package/dist/native-editing-problems.d.ts +3 -0
  92. package/dist/native-editing-problems.js +180 -0
  93. package/dist/native-editing-recovery.d.ts +24 -0
  94. package/dist/native-editing-recovery.js +198 -0
  95. package/dist/native-editing-session.d.ts +51 -0
  96. package/dist/native-editing-session.js +251 -0
  97. package/dist/native-history-index-protocol.d.ts +80 -0
  98. package/dist/native-history-index-protocol.js +1 -0
  99. package/dist/native-history-index.d.ts +6 -0
  100. package/dist/native-history-index.js +1 -0
  101. package/dist/native-indexing-protocol.d.ts +63 -0
  102. package/dist/native-indexing-protocol.js +1 -0
  103. package/dist/native-participant-protocol.d.ts +67 -0
  104. package/dist/native-participant-protocol.js +3 -0
  105. package/dist/native-queue-protocol.d.ts +73 -0
  106. package/dist/native-queue-protocol.js +3 -0
  107. package/dist/native-tasks-protocol.d.ts +264 -0
  108. package/dist/native-tasks-protocol.js +1 -0
  109. package/dist/native-tasks.d.ts +35 -0
  110. package/dist/native-tasks.js +79 -0
  111. package/dist/native-turn-protocol.d.ts +81 -0
  112. package/dist/native-turn-protocol.js +1 -0
  113. package/dist/native-turns.d.ts +29 -0
  114. package/dist/native-turns.js +2 -0
  115. package/dist/plugin-asset-server.js +3 -2
  116. package/dist/plugin-dependency-resolver.d.ts +1 -1
  117. package/dist/plugin-distribution/compatibility.d.ts +1 -1
  118. package/dist/plugin-distribution/compatibility.js +10 -5
  119. package/dist/plugin-distribution/installed-plugin-state.js +2 -1
  120. package/dist/plugin-distribution/installer.d.ts +6 -0
  121. package/dist/plugin-distribution/installer.js +90 -37
  122. package/dist/plugin-distribution/manager.d.ts +4 -1
  123. package/dist/plugin-distribution/manager.js +12 -5
  124. package/dist/plugin-distribution/registry-cache.js +2 -1
  125. package/dist/plugin-distribution/registry-source-state.js +2 -1
  126. package/dist/plugin-distribution/schemas.d.ts +26 -8
  127. package/dist/plugin-distribution/schemas.js +2 -1
  128. package/dist/plugin-distribution/types.d.ts +4 -0
  129. package/dist/plugin-manager.d.ts +21 -5
  130. package/dist/plugin-manager.js +228 -64
  131. package/dist/plugin-runtime-entry.d.ts +1 -1
  132. package/dist/plugin-runtime-entry.js +16 -0
  133. package/dist/plugin.d.ts +19 -3
  134. package/dist/plugin.js +110 -44
  135. package/dist/registry-schema/catalog-v1.d.ts +60 -9
  136. package/dist/registry-schema/catalog-v1.js +2 -1
  137. package/dist/registry-schema/catalog-v2.d.ts +60 -9
  138. package/dist/registry-schema/catalog-v2.js +1 -1
  139. package/dist/search-result-provider.d.ts +95 -0
  140. package/dist/search-result-provider.js +42 -0
  141. package/dist/status-bar.svelte.d.ts +26 -20
  142. package/dist/status-bar.svelte.js +1 -0
  143. package/dist/storage/app-database.d.ts +9 -23
  144. package/dist/storage/app-database.js +41 -34
  145. package/dist/storage/desktop-native.d.ts +5 -3
  146. package/dist/storage/desktop-native.js +59 -6
  147. package/dist/storage/directory-watcher.d.ts +27 -0
  148. package/dist/storage/directory-watcher.js +201 -0
  149. package/dist/storage/fs.d.ts +14 -27
  150. package/dist/storage/fs.js +2 -168
  151. package/dist/storage/index-projection.js +33 -15
  152. package/dist/storage/memory-vault-adapter.d.ts +2 -0
  153. package/dist/storage/memory-vault-adapter.js +14 -1
  154. package/dist/storage/path.d.ts +6 -2
  155. package/dist/storage/path.js +8 -2
  156. package/dist/storage/projection-query-candidates.d.ts +3 -0
  157. package/dist/storage/projection-query-candidates.js +69 -0
  158. package/dist/storage/remote-app-database.d.ts +2 -2
  159. package/dist/storage/remote-app-database.js +1 -1
  160. package/dist/storage/runtime.d.ts +3 -0
  161. package/dist/storage/runtime.js +3 -0
  162. package/dist/storage/search-embedding-record.d.ts +3 -0
  163. package/dist/storage/search-embedding-record.js +18 -0
  164. package/dist/storage/turso-app-database.d.ts +2 -0
  165. package/dist/storage/turso-app-database.js +67 -30
  166. package/dist/storage/vault-listing.d.ts +3 -0
  167. package/dist/storage/vault-listing.js +36 -0
  168. package/dist/storage/vault-reconciliation.d.ts +19 -0
  169. package/dist/storage/vault-reconciliation.js +137 -0
  170. package/dist/storage/vault-session.d.ts +8 -0
  171. package/dist/storage/vault-session.js +10 -2
  172. package/dist/storage/vault.svelte.d.ts +53 -4
  173. package/dist/storage/vault.svelte.js +223 -87
  174. package/dist/sync-editor-flush.d.ts +6 -0
  175. package/dist/sync-editor-flush.js +22 -0
  176. package/dist/sync-host-local.d.ts +15 -0
  177. package/dist/sync-host-local.js +228 -0
  178. package/dist/sync-host-security.d.ts +24 -9
  179. package/dist/sync-host-security.js +47 -14
  180. package/dist/sync-host.d.ts +33 -4
  181. package/dist/sync-host.js +160 -10
  182. package/dist/sync-repository.d.ts +106 -0
  183. package/dist/sync-repository.js +18 -0
  184. package/dist/vault-change-views.d.ts +4 -0
  185. package/dist/vault-change-views.js +43 -0
  186. package/dist/vault-changes.d.ts +37 -0
  187. package/dist/vault-changes.js +228 -0
  188. package/dist/view.svelte.d.ts +182 -149
  189. package/dist/view.svelte.js +39 -21
  190. package/dist/workspace-close-guard.d.ts +3 -0
  191. package/dist/workspace-close-guard.js +35 -0
  192. package/dist/workspace-host-internal.js +10 -2
  193. package/dist/workspace-layout-normalizer.d.ts +4 -2
  194. package/dist/workspace-layout-normalizer.js +5 -5
  195. package/dist/workspace-view-document.d.ts +3 -0
  196. package/dist/workspace-view-document.js +12 -0
  197. package/dist/workspace.svelte.d.ts +13 -2
  198. package/dist/workspace.svelte.js +371 -82
  199. package/package.json +61 -8
@@ -181,7 +181,7 @@ export const pluginHostModuleRegistry = {
181
181
  "public": true,
182
182
  "source": "package-json-export",
183
183
  "specifier": "@lapis-notes/api",
184
- "version": "0.1.3"
184
+ "version": "0.2.0"
185
185
  },
186
186
  "@lapis-notes/api/agent-skills": {
187
187
  "entry": "@lapis-notes/api/agent-skills",
@@ -194,7 +194,7 @@ export const pluginHostModuleRegistry = {
194
194
  "public": true,
195
195
  "source": "package-json-export",
196
196
  "specifier": "@lapis-notes/api/agent-skills",
197
- "version": "0.1.3"
197
+ "version": "0.2.0"
198
198
  },
199
199
  "@lapis-notes/api/agent-tools": {
200
200
  "entry": "@lapis-notes/api/agent-tools",
@@ -207,7 +207,7 @@ export const pluginHostModuleRegistry = {
207
207
  "public": true,
208
208
  "source": "package-json-export",
209
209
  "specifier": "@lapis-notes/api/agent-tools",
210
- "version": "0.1.3"
210
+ "version": "0.2.0"
211
211
  },
212
212
  "@lapis-notes/api/app-database": {
213
213
  "entry": "@lapis-notes/api/app-database",
@@ -220,7 +220,7 @@ export const pluginHostModuleRegistry = {
220
220
  "public": true,
221
221
  "source": "package-json-export",
222
222
  "specifier": "@lapis-notes/api/app-database",
223
- "version": "0.1.3"
223
+ "version": "0.2.0"
224
224
  },
225
225
  "@lapis-notes/api/build/vite": {
226
226
  "entry": "@lapis-notes/api/build/vite",
@@ -230,7 +230,7 @@ export const pluginHostModuleRegistry = {
230
230
  "public": true,
231
231
  "source": "package-json-export",
232
232
  "specifier": "@lapis-notes/api/build/vite",
233
- "version": "0.1.3"
233
+ "version": "0.2.0"
234
234
  },
235
235
  "@lapis-notes/api/cache": {
236
236
  "entry": "@lapis-notes/api/cache",
@@ -243,7 +243,7 @@ export const pluginHostModuleRegistry = {
243
243
  "public": true,
244
244
  "source": "package-json-export",
245
245
  "specifier": "@lapis-notes/api/cache",
246
- "version": "0.1.3"
246
+ "version": "0.2.0"
247
247
  },
248
248
  "@lapis-notes/api/copy-button": {
249
249
  "entry": "@lapis-notes/api/copy-button",
@@ -256,7 +256,7 @@ export const pluginHostModuleRegistry = {
256
256
  "public": true,
257
257
  "source": "package-json-export",
258
258
  "specifier": "@lapis-notes/api/copy-button",
259
- "version": "0.1.3"
259
+ "version": "0.2.0"
260
260
  },
261
261
  "@lapis-notes/api/desktop-native": {
262
262
  "entry": "@lapis-notes/api/desktop-native",
@@ -269,7 +269,7 @@ export const pluginHostModuleRegistry = {
269
269
  "public": true,
270
270
  "source": "package-json-export",
271
271
  "specifier": "@lapis-notes/api/desktop-native",
272
- "version": "0.1.3"
272
+ "version": "0.2.0"
273
273
  },
274
274
  "@lapis-notes/api/editor": {
275
275
  "defaultExport": true,
@@ -283,7 +283,7 @@ export const pluginHostModuleRegistry = {
283
283
  "public": true,
284
284
  "source": "package-json-export",
285
285
  "specifier": "@lapis-notes/api/editor",
286
- "version": "0.1.3"
286
+ "version": "0.2.0"
287
287
  },
288
288
  "@lapis-notes/api/editor/core": {
289
289
  "entry": "@lapis-notes/api/editor/core",
@@ -296,7 +296,7 @@ export const pluginHostModuleRegistry = {
296
296
  "public": true,
297
297
  "source": "package-json-export",
298
298
  "specifier": "@lapis-notes/api/editor/core",
299
- "version": "0.1.3"
299
+ "version": "0.2.0"
300
300
  },
301
301
  "@lapis-notes/api/editor/extensions/autocomplete": {
302
302
  "entry": "@lapis-notes/api/editor/extensions/autocomplete",
@@ -309,7 +309,7 @@ export const pluginHostModuleRegistry = {
309
309
  "public": true,
310
310
  "source": "package-json-export",
311
311
  "specifier": "@lapis-notes/api/editor/extensions/autocomplete",
312
- "version": "0.1.3"
312
+ "version": "0.2.0"
313
313
  },
314
314
  "@lapis-notes/api/editor/extensions/class-highlighter": {
315
315
  "entry": "@lapis-notes/api/editor/extensions/class-highlighter",
@@ -322,7 +322,7 @@ export const pluginHostModuleRegistry = {
322
322
  "public": true,
323
323
  "source": "package-json-export",
324
324
  "specifier": "@lapis-notes/api/editor/extensions/class-highlighter",
325
- "version": "0.1.3"
325
+ "version": "0.2.0"
326
326
  },
327
327
  "@lapis-notes/api/editor/extensions/fold-gutter": {
328
328
  "entry": "@lapis-notes/api/editor/extensions/fold-gutter",
@@ -335,7 +335,7 @@ export const pluginHostModuleRegistry = {
335
335
  "public": true,
336
336
  "source": "package-json-export",
337
337
  "specifier": "@lapis-notes/api/editor/extensions/fold-gutter",
338
- "version": "0.1.3"
338
+ "version": "0.2.0"
339
339
  },
340
340
  "@lapis-notes/api/editor/extensions/gutter-line-style-sync": {
341
341
  "entry": "@lapis-notes/api/editor/extensions/gutter-line-style-sync",
@@ -348,7 +348,7 @@ export const pluginHostModuleRegistry = {
348
348
  "public": true,
349
349
  "source": "package-json-export",
350
350
  "specifier": "@lapis-notes/api/editor/extensions/gutter-line-style-sync",
351
- "version": "0.1.3"
351
+ "version": "0.2.0"
352
352
  },
353
353
  "@lapis-notes/api/editor/extensions/lint": {
354
354
  "entry": "@lapis-notes/api/editor/extensions/lint",
@@ -361,7 +361,7 @@ export const pluginHostModuleRegistry = {
361
361
  "public": true,
362
362
  "source": "package-json-export",
363
363
  "specifier": "@lapis-notes/api/editor/extensions/lint",
364
- "version": "0.1.3"
364
+ "version": "0.2.0"
365
365
  },
366
366
  "@lapis-notes/api/editor/extensions/search": {
367
367
  "entry": "@lapis-notes/api/editor/extensions/search",
@@ -374,7 +374,7 @@ export const pluginHostModuleRegistry = {
374
374
  "public": true,
375
375
  "source": "package-json-export",
376
376
  "specifier": "@lapis-notes/api/editor/extensions/search",
377
- "version": "0.1.3"
377
+ "version": "0.2.0"
378
378
  },
379
379
  "@lapis-notes/api/editor/language-service": {
380
380
  "entry": "@lapis-notes/api/editor/language-service",
@@ -387,7 +387,7 @@ export const pluginHostModuleRegistry = {
387
387
  "public": true,
388
388
  "source": "package-json-export",
389
389
  "specifier": "@lapis-notes/api/editor/language-service",
390
- "version": "0.1.3"
390
+ "version": "0.2.0"
391
391
  },
392
392
  "@lapis-notes/api/empty-view": {
393
393
  "entry": "@lapis-notes/api/empty-view",
@@ -400,7 +400,7 @@ export const pluginHostModuleRegistry = {
400
400
  "public": true,
401
401
  "source": "package-json-export",
402
402
  "specifier": "@lapis-notes/api/empty-view",
403
- "version": "0.1.3"
403
+ "version": "0.2.0"
404
404
  },
405
405
  "@lapis-notes/api/icon": {
406
406
  "entry": "@lapis-notes/api/icon",
@@ -413,7 +413,7 @@ export const pluginHostModuleRegistry = {
413
413
  "public": true,
414
414
  "source": "package-json-export",
415
415
  "specifier": "@lapis-notes/api/icon",
416
- "version": "0.1.3"
416
+ "version": "0.2.0"
417
417
  },
418
418
  "@lapis-notes/api/language-service": {
419
419
  "entry": "@lapis-notes/api/language-service",
@@ -426,7 +426,7 @@ export const pluginHostModuleRegistry = {
426
426
  "public": true,
427
427
  "source": "package-json-export",
428
428
  "specifier": "@lapis-notes/api/language-service",
429
- "version": "0.1.3"
429
+ "version": "0.2.0"
430
430
  },
431
431
  "@lapis-notes/api/language-service/worker": {
432
432
  "entry": "@lapis-notes/api/language-service/worker",
@@ -439,7 +439,7 @@ export const pluginHostModuleRegistry = {
439
439
  "public": true,
440
440
  "source": "package-json-export",
441
441
  "specifier": "@lapis-notes/api/language-service/worker",
442
- "version": "0.1.3"
442
+ "version": "0.2.0"
443
443
  },
444
444
  "@lapis-notes/api/menu": {
445
445
  "defaultExport": true,
@@ -453,7 +453,17 @@ export const pluginHostModuleRegistry = {
453
453
  "public": true,
454
454
  "source": "package-json-export",
455
455
  "specifier": "@lapis-notes/api/menu",
456
- "version": "0.1.3"
456
+ "version": "0.2.0"
457
+ },
458
+ "@lapis-notes/api/metadata-store": {
459
+ "entry": "@lapis-notes/api/metadata-store",
460
+ "moduleId": "lapis-notes-api-metadata-store",
461
+ "packageName": "@lapis-notes/api",
462
+ "platforms": [],
463
+ "public": true,
464
+ "source": "package-json-export",
465
+ "specifier": "@lapis-notes/api/metadata-store",
466
+ "version": "0.2.0"
457
467
  },
458
468
  "@lapis-notes/api/metadata-value": {
459
469
  "entry": "@lapis-notes/api/metadata-value",
@@ -466,7 +476,59 @@ export const pluginHostModuleRegistry = {
466
476
  "public": true,
467
477
  "source": "package-json-export",
468
478
  "specifier": "@lapis-notes/api/metadata-value",
469
- "version": "0.1.3"
479
+ "version": "0.2.0"
480
+ },
481
+ "@lapis-notes/api/native-editing-intents": {
482
+ "entry": "@lapis-notes/api/native-editing-intents",
483
+ "moduleId": "lapis-notes-api-native-editing-intents",
484
+ "packageName": "@lapis-notes/api",
485
+ "platforms": [
486
+ "web",
487
+ "electron-renderer"
488
+ ],
489
+ "public": true,
490
+ "source": "package-json-export",
491
+ "specifier": "@lapis-notes/api/native-editing-intents",
492
+ "version": "0.2.0"
493
+ },
494
+ "@lapis-notes/api/native-history-index": {
495
+ "entry": "@lapis-notes/api/native-history-index",
496
+ "moduleId": "lapis-notes-api-native-history-index",
497
+ "packageName": "@lapis-notes/api",
498
+ "platforms": [
499
+ "web",
500
+ "electron-renderer"
501
+ ],
502
+ "public": true,
503
+ "source": "package-json-export",
504
+ "specifier": "@lapis-notes/api/native-history-index",
505
+ "version": "0.2.0"
506
+ },
507
+ "@lapis-notes/api/native-tasks": {
508
+ "entry": "@lapis-notes/api/native-tasks",
509
+ "moduleId": "lapis-notes-api-native-tasks",
510
+ "packageName": "@lapis-notes/api",
511
+ "platforms": [
512
+ "web",
513
+ "electron-renderer"
514
+ ],
515
+ "public": true,
516
+ "source": "package-json-export",
517
+ "specifier": "@lapis-notes/api/native-tasks",
518
+ "version": "0.2.0"
519
+ },
520
+ "@lapis-notes/api/native-turns": {
521
+ "entry": "@lapis-notes/api/native-turns",
522
+ "moduleId": "lapis-notes-api-native-turns",
523
+ "packageName": "@lapis-notes/api",
524
+ "platforms": [
525
+ "web",
526
+ "electron-renderer"
527
+ ],
528
+ "public": true,
529
+ "source": "package-json-export",
530
+ "specifier": "@lapis-notes/api/native-turns",
531
+ "version": "0.2.0"
470
532
  },
471
533
  "@lapis-notes/api/path": {
472
534
  "entry": "@lapis-notes/api/path",
@@ -479,7 +541,7 @@ export const pluginHostModuleRegistry = {
479
541
  "public": true,
480
542
  "source": "package-json-export",
481
543
  "specifier": "@lapis-notes/api/path",
482
- "version": "0.1.3"
544
+ "version": "0.2.0"
483
545
  },
484
546
  "@lapis-notes/api/plugin-assets": {
485
547
  "entry": "@lapis-notes/api/plugin-assets",
@@ -492,7 +554,7 @@ export const pluginHostModuleRegistry = {
492
554
  "public": true,
493
555
  "source": "package-json-export",
494
556
  "specifier": "@lapis-notes/api/plugin-assets",
495
- "version": "0.1.3"
557
+ "version": "0.2.0"
496
558
  },
497
559
  "@lapis-notes/api/plugin-distribution-host": {
498
560
  "entry": "@lapis-notes/api/plugin-distribution-host",
@@ -505,7 +567,7 @@ export const pluginHostModuleRegistry = {
505
567
  "public": true,
506
568
  "source": "package-json-export",
507
569
  "specifier": "@lapis-notes/api/plugin-distribution-host",
508
- "version": "0.1.3"
570
+ "version": "0.2.0"
509
571
  },
510
572
  "@lapis-notes/api/plugin-host-modules": {
511
573
  "entry": "@lapis-notes/api/plugin-host-modules",
@@ -518,7 +580,7 @@ export const pluginHostModuleRegistry = {
518
580
  "public": true,
519
581
  "source": "package-json-export",
520
582
  "specifier": "@lapis-notes/api/plugin-host-modules",
521
- "version": "0.1.3"
583
+ "version": "0.2.0"
522
584
  },
523
585
  "@lapis-notes/api/registry/schema": {
524
586
  "entry": "@lapis-notes/api/registry/schema",
@@ -531,7 +593,20 @@ export const pluginHostModuleRegistry = {
531
593
  "public": true,
532
594
  "source": "package-json-export",
533
595
  "specifier": "@lapis-notes/api/registry/schema",
534
- "version": "0.1.3"
596
+ "version": "0.2.0"
597
+ },
598
+ "@lapis-notes/api/runtime": {
599
+ "entry": "@lapis-notes/api/runtime",
600
+ "moduleId": "lapis-notes-api-runtime",
601
+ "packageName": "@lapis-notes/api",
602
+ "platforms": [
603
+ "web",
604
+ "electron-renderer"
605
+ ],
606
+ "public": true,
607
+ "source": "package-json-export",
608
+ "specifier": "@lapis-notes/api/runtime",
609
+ "version": "0.2.0"
535
610
  },
536
611
  "@lapis-notes/api/search-embedding-worker": {
537
612
  "entry": "@lapis-notes/api/search-embedding-worker",
@@ -544,7 +619,7 @@ export const pluginHostModuleRegistry = {
544
619
  "public": true,
545
620
  "source": "package-json-export",
546
621
  "specifier": "@lapis-notes/api/search-embedding-worker",
547
- "version": "0.1.3"
622
+ "version": "0.2.0"
548
623
  },
549
624
  "@lapis-notes/api/select": {
550
625
  "entry": "@lapis-notes/api/select",
@@ -557,7 +632,7 @@ export const pluginHostModuleRegistry = {
557
632
  "public": true,
558
633
  "source": "package-json-export",
559
634
  "specifier": "@lapis-notes/api/select",
560
- "version": "0.1.3"
635
+ "version": "0.2.0"
561
636
  },
562
637
  "@lapis-notes/api/server-host": {
563
638
  "entry": "@lapis-notes/api/server-host",
@@ -570,7 +645,30 @@ export const pluginHostModuleRegistry = {
570
645
  "public": true,
571
646
  "source": "package-json-export",
572
647
  "specifier": "@lapis-notes/api/server-host",
573
- "version": "0.1.3"
648
+ "version": "0.2.0"
649
+ },
650
+ "@lapis-notes/api/sync-repository": {
651
+ "entry": "@lapis-notes/api/sync-repository",
652
+ "moduleId": "lapis-notes-api-sync-repository",
653
+ "packageName": "@lapis-notes/api",
654
+ "platforms": [
655
+ "web",
656
+ "electron-renderer"
657
+ ],
658
+ "public": true,
659
+ "source": "package-json-export",
660
+ "specifier": "@lapis-notes/api/sync-repository",
661
+ "version": "0.2.0"
662
+ },
663
+ "@lapis-notes/api/sync-security-host": {
664
+ "entry": "@lapis-notes/api/sync-security-host",
665
+ "moduleId": "lapis-notes-api-sync-security-host",
666
+ "packageName": "@lapis-notes/api",
667
+ "platforms": [],
668
+ "public": true,
669
+ "source": "package-json-export",
670
+ "specifier": "@lapis-notes/api/sync-security-host",
671
+ "version": "0.2.0"
574
672
  },
575
673
  "@lapis-notes/api/telemetry": {
576
674
  "entry": "@lapis-notes/api/telemetry",
@@ -583,7 +681,7 @@ export const pluginHostModuleRegistry = {
583
681
  "public": true,
584
682
  "source": "package-json-export",
585
683
  "specifier": "@lapis-notes/api/telemetry",
586
- "version": "0.1.3"
684
+ "version": "0.2.0"
587
685
  },
588
686
  "@lapis-notes/api/vault": {
589
687
  "entry": "@lapis-notes/api/vault",
@@ -596,7 +694,7 @@ export const pluginHostModuleRegistry = {
596
694
  "public": true,
597
695
  "source": "package-json-export",
598
696
  "specifier": "@lapis-notes/api/vault",
599
- "version": "0.1.3"
697
+ "version": "0.2.0"
600
698
  },
601
699
  "@lapis-notes/api/workspace-host": {
602
700
  "entry": "@lapis-notes/api/workspace-host",
@@ -609,7 +707,7 @@ export const pluginHostModuleRegistry = {
609
707
  "public": true,
610
708
  "source": "package-json-export",
611
709
  "specifier": "@lapis-notes/api/workspace-host",
612
- "version": "0.1.3"
710
+ "version": "0.2.0"
613
711
  },
614
712
  "@lapis-notes/markdown": {
615
713
  "entry": "@lapis-notes/markdown",
package/dist/glob.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Minimatch } from "minimatch";
1
2
  export type EditorAssociationGlobOptions = {
2
3
  caseSensitive?: boolean;
3
4
  };
@@ -9,6 +10,8 @@ export type EditorAssociationGlobValidation = {
9
10
  };
10
11
  export declare function normalizeGlobPath(path: string): string;
11
12
  export declare function normalizeEditorAssociationGlob(pattern: string): string;
13
+ /** Compile once for owned consumers that evaluate a complete vault listing. */
14
+ export declare function compileEditorAssociationGlob(pattern: string, options?: EditorAssociationGlobOptions): Minimatch | null;
12
15
  export declare function validateEditorAssociationGlob(pattern: string): EditorAssociationGlobValidation;
13
16
  export declare function matchesEditorAssociationGlob(pattern: string, path: string, options?: EditorAssociationGlobOptions): boolean;
14
17
  export declare function hasEditorAssociationGlobMagic(pattern: string): boolean;
package/dist/glob.js CHANGED
@@ -20,7 +20,8 @@ export function normalizeGlobPath(path) {
20
20
  export function normalizeEditorAssociationGlob(pattern) {
21
21
  return normalizeGlobPath(pattern);
22
22
  }
23
- function compileEditorAssociationGlob(pattern, options = {}) {
23
+ /** Compile once for owned consumers that evaluate a complete vault listing. */
24
+ export function compileEditorAssociationGlob(pattern, options = {}) {
24
25
  const normalizedPattern = normalizeEditorAssociationGlob(pattern);
25
26
  if (!normalizedPattern) {
26
27
  return null;
@@ -0,0 +1,3 @@
1
+ export declare function iconRevision(): number;
2
+ export declare function iconsChanged(): void;
3
+ export declare function onIconsChanged(listener: () => void): () => void;
@@ -0,0 +1,16 @@
1
+ const listeners = new Set();
2
+ let revision = 0;
3
+ export function iconRevision() {
4
+ return revision;
5
+ }
6
+ export function iconsChanged() {
7
+ revision += 1;
8
+ for (const listener of [...listeners])
9
+ listener();
10
+ }
11
+ export function onIconsChanged(listener) {
12
+ listeners.add(listener);
13
+ return () => {
14
+ listeners.delete(listener);
15
+ };
16
+ }
@@ -1,3 +1,6 @@
1
+ import { onIconsChanged } from "./changes";
2
+ export { IconRegistry, type IconResolution } from "./registry";
3
+ export { onIconsChanged };
1
4
  import type { IconifyIcon, IconifyJSON } from "@iconify/types";
2
5
  import { type IconifyIconCustomisations } from "@iconify/utils";
3
6
  interface AsyncIconLoader {
@@ -54,4 +57,5 @@ export declare function getIcon(iconId: string): SVGSVGElement | null;
54
57
  * @see The Obsidian icon library includes the {@link https://lucide.dev/ Lucide icon library}, any icon name from their site will work here.
55
58
  */
56
59
  export declare function setIcon(parent: HTMLElement, iconId: string): void;
57
- export {};
60
+ /** Resolve registered artwork without substituting the unknown-icon glyph. */
61
+ export declare function resolveRegisteredIcon(name: string): Promise<import("./registry").IconResolution>;
@@ -1,3 +1,7 @@
1
+ import { iconRevision, iconsChanged, onIconsChanged } from "./changes";
2
+ import { assertSafeIconSvg } from "./safe-svg";
3
+ export { IconRegistry } from "./registry";
4
+ export { onIconsChanged };
1
5
  import { icons as lucideIcons } from "@iconify-json/lucide";
2
6
  import { iconToSVG, parseSVGContent, iconToHTML, getIconData, stringToIcon, replaceIDs, convertParsedSVG, } from "@iconify/utils";
3
7
  import { cn } from "../utils";
@@ -6,6 +10,7 @@ const codiconNamePattern = /^[a-z0-9-]+$/u;
6
10
  const qualifiedIconNamePattern = /^[a-z0-9-]+:[a-z0-9-]+(?:-[a-z0-9-]+)*$/u;
7
11
  const labelIconAvailabilityCache = new Map();
8
12
  const iconsStore = new Map();
13
+ const packLoads = new Map();
9
14
  const loaderStore = new Map();
10
15
  const codiconLabelPattern = /\$\(([^)]+)\)/g;
11
16
  const customIcons = {
@@ -29,6 +34,9 @@ export const registerIconPacks = (iconLoaders) => {
29
34
  if (!iconLoader.name) {
30
35
  throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');
31
36
  }
37
+ packLoads.delete(iconLoader.name);
38
+ iconsStore.delete(iconLoader.name);
39
+ loaderStore.delete(iconLoader.name);
32
40
  console.debug("Registering icon pack:", iconLoader.name);
33
41
  if ("loader" in iconLoader) {
34
42
  loaderStore.set(iconLoader.name, iconLoader.loader);
@@ -41,6 +49,8 @@ export const registerIconPacks = (iconLoaders) => {
41
49
  throw new Error('Invalid icon loader. Must have either "icons" or "loader" property.');
42
50
  }
43
51
  }
52
+ labelIconAvailabilityCache.clear();
53
+ iconsChanged();
44
54
  };
45
55
  function getIconCandidates(iconName) {
46
56
  return [
@@ -66,9 +76,16 @@ const getRegisteredIconData = async (iconName) => {
66
76
  continue;
67
77
  }
68
78
  try {
69
- const loaded = await loader();
79
+ let pending = packLoads.get(prefix);
80
+ if (!pending) {
81
+ pending = Promise.resolve().then(loader);
82
+ packLoads.set(prefix, pending);
83
+ }
84
+ const loaded = await pending;
70
85
  icons = { ...loaded, prefix };
71
- iconsStore.set(prefix, icons);
86
+ if (loaderStore.get(prefix) === loader &&
87
+ packLoads.get(prefix) === pending)
88
+ iconsStore.set(prefix, icons);
72
89
  }
73
90
  catch (e) {
74
91
  console.error(e);
@@ -125,8 +142,10 @@ export function isLabelIconAvailable(iconName) {
125
142
  if (cached) {
126
143
  return cached;
127
144
  }
145
+ const revision = iconRevision();
128
146
  const pending = isIconAvailable(iconName).then((available) => {
129
- labelIconAvailabilityCache.set(iconName, Promise.resolve(available));
147
+ if (revision === iconRevision())
148
+ labelIconAvailabilityCache.set(iconName, Promise.resolve(available));
130
149
  return available;
131
150
  });
132
151
  labelIconAvailabilityCache.set(iconName, pending);
@@ -251,11 +270,15 @@ export function addIcon(iconId, svgContent) {
251
270
  const icon = parseSvgIcon(svgContent);
252
271
  if (icon) {
253
272
  customIcons.icons[iconId] = icon;
273
+ labelIconAvailabilityCache.clear();
274
+ iconsChanged();
254
275
  }
255
276
  }
256
277
  export function removeIcon(iconId) {
257
278
  delete customIcons.icons[iconId];
258
279
  delete customIcons.aliases[iconId];
280
+ labelIconAvailabilityCache.clear();
281
+ iconsChanged();
259
282
  }
260
283
  export function getIcon(iconId) {
261
284
  for (const candidate of getIconCandidates(iconId)) {
@@ -286,3 +309,21 @@ export function setIcon(parent, iconId) {
286
309
  }
287
310
  });
288
311
  }
312
+ /** Resolve registered artwork without substituting the unknown-icon glyph. */
313
+ export async function resolveRegisteredIcon(name) {
314
+ try {
315
+ const [data] = await getRegisteredIconData(name);
316
+ const result = iconToSVG(data);
317
+ const svg = iconToHTML(replaceIDs(result.body), result.attributes);
318
+ assertSafeIconSvg(svg);
319
+ return { status: "found", svg };
320
+ }
321
+ catch (error) {
322
+ return {
323
+ status: error instanceof Error &&
324
+ /^(Invalid icon name:|Icon not found:)/u.test(error.message)
325
+ ? "missing"
326
+ : "failed",
327
+ };
328
+ }
329
+ }
@@ -0,0 +1,35 @@
1
+ import { type IconLoader } from "./index";
2
+ export type IconResolution = {
3
+ status: "found";
4
+ svg: string;
5
+ } | {
6
+ status: "missing" | "failed";
7
+ };
8
+ /**
9
+ * App-owned artwork with an explicit compatibility fallback to legacy global
10
+ * icons.
11
+ */
12
+ export declare class IconRegistry {
13
+ private readonly icons;
14
+ private readonly packs;
15
+ private readonly listeners;
16
+ private readonly cache;
17
+ private revision;
18
+ private legacyRevision;
19
+ private stopLegacy?;
20
+ private disposed;
21
+ subscribe: (listener: () => void) => (() => void);
22
+ private changed;
23
+ registerIcon(owner: string, id: string, svg: string): {
24
+ id: string;
25
+ dispose: () => void;
26
+ };
27
+ registerIconPack(owner: string, input: IconLoader): {
28
+ prefix: string;
29
+ dispose: () => void;
30
+ };
31
+ resolveIcon(name: string): Promise<IconResolution>;
32
+ resolve: (name: string) => Promise<string | null>;
33
+ private lookup;
34
+ dispose(): void;
35
+ }