@lapis-notes/api 0.1.4 → 0.2.1

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 (188) hide show
  1. package/CHANGELOG.md +206 -0
  2. package/README.md +21 -2
  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 +21 -9
  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 +21 -3
  31. package/dist/context.svelte.js +63 -20
  32. package/dist/diagnostics.d.ts +8 -0
  33. package/dist/diagnostics.js +6 -0
  34. package/dist/editor-save-context.d.ts +12 -1
  35. package/dist/editor-save-context.js +32 -1
  36. package/dist/editor-view-registry.d.ts +10 -0
  37. package/dist/editor-view-registry.js +44 -4
  38. package/dist/editor.svelte.js +128 -37
  39. package/dist/embed-registry.d.ts +10 -0
  40. package/dist/embed-registry.js +15 -0
  41. package/dist/file-editing-failures.d.ts +2 -0
  42. package/dist/file-editing-failures.js +29 -0
  43. package/dist/file-editing-native-issues.d.ts +19 -0
  44. package/dist/file-editing-native-issues.js +65 -0
  45. package/dist/file-editing-sessions.d.ts +56 -8
  46. package/dist/file-editing-sessions.js +185 -15
  47. package/dist/file-manager.d.ts +8 -1
  48. package/dist/file-manager.js +37 -3
  49. package/dist/file-state-store.d.ts +5 -0
  50. package/dist/file-state-store.js +34 -0
  51. package/dist/file-text-conflicts.d.ts +25 -0
  52. package/dist/file-text-conflicts.js +35 -0
  53. package/dist/file-text-mutation.d.ts +13 -0
  54. package/dist/file-text-mutation.js +100 -0
  55. package/dist/file-text-persistence.d.ts +36 -0
  56. package/dist/file-text-persistence.js +234 -0
  57. package/dist/file-text-state-writer.d.ts +34 -0
  58. package/dist/file-text-state-writer.js +183 -0
  59. package/dist/files-configuration.d.ts +20 -0
  60. package/dist/files-configuration.js +47 -0
  61. package/dist/generated/plugin-host-modules.schema.generated.d.ts +87 -37
  62. package/dist/generated/plugin-host-modules.schema.generated.js +102 -37
  63. package/dist/glob.d.ts +3 -0
  64. package/dist/glob.js +2 -1
  65. package/dist/icons/changes.d.ts +3 -0
  66. package/dist/icons/changes.js +16 -0
  67. package/dist/icons/index.d.ts +5 -1
  68. package/dist/icons/index.js +44 -3
  69. package/dist/icons/registry.d.ts +35 -0
  70. package/dist/icons/registry.js +154 -0
  71. package/dist/icons/safe-svg.d.ts +2 -0
  72. package/dist/icons/safe-svg.js +44 -0
  73. package/dist/index.d.ts +5 -1
  74. package/dist/index.js +3 -1
  75. package/dist/lapis-extension.d.ts +6 -2
  76. package/dist/lapis-extension.js +2 -0
  77. package/dist/metadata.svelte.js +45 -2
  78. package/dist/native-background-indexing.d.ts +48 -0
  79. package/dist/native-background-indexing.js +208 -0
  80. package/dist/native-database-protocol.d.ts +29 -0
  81. package/dist/native-database-protocol.js +1 -0
  82. package/dist/native-editing-intent-lease.d.ts +17 -0
  83. package/dist/native-editing-intent-lease.js +188 -0
  84. package/dist/native-editing-intents-protocol.d.ts +70 -0
  85. package/dist/native-editing-intents-protocol.js +1 -0
  86. package/dist/native-editing-intents.d.ts +8 -0
  87. package/dist/native-editing-intents.js +1 -0
  88. package/dist/native-editing-problems.d.ts +3 -0
  89. package/dist/native-editing-problems.js +180 -0
  90. package/dist/native-editing-recovery.d.ts +24 -0
  91. package/dist/native-editing-recovery.js +198 -0
  92. package/dist/native-editing-session.d.ts +51 -0
  93. package/dist/native-editing-session.js +251 -0
  94. package/dist/native-history-index-protocol.d.ts +80 -0
  95. package/dist/native-history-index-protocol.js +1 -0
  96. package/dist/native-history-index.d.ts +6 -0
  97. package/dist/native-history-index.js +1 -0
  98. package/dist/native-indexing-protocol.d.ts +63 -0
  99. package/dist/native-indexing-protocol.js +1 -0
  100. package/dist/native-participant-protocol.d.ts +67 -0
  101. package/dist/native-participant-protocol.js +3 -0
  102. package/dist/native-queue-protocol.d.ts +73 -0
  103. package/dist/native-queue-protocol.js +3 -0
  104. package/dist/native-tasks-protocol.d.ts +264 -0
  105. package/dist/native-tasks-protocol.js +1 -0
  106. package/dist/native-tasks.d.ts +35 -0
  107. package/dist/native-tasks.js +79 -0
  108. package/dist/native-turn-protocol.d.ts +81 -0
  109. package/dist/native-turn-protocol.js +1 -0
  110. package/dist/native-turns.d.ts +29 -0
  111. package/dist/native-turns.js +2 -0
  112. package/dist/plugin-asset-server.js +3 -2
  113. package/dist/plugin-dependency-resolver.d.ts +1 -1
  114. package/dist/plugin-distribution/compatibility.d.ts +1 -1
  115. package/dist/plugin-distribution/compatibility.js +10 -5
  116. package/dist/plugin-distribution/installed-plugin-state.js +2 -1
  117. package/dist/plugin-distribution/installer.d.ts +6 -0
  118. package/dist/plugin-distribution/installer.js +90 -37
  119. package/dist/plugin-distribution/manager.d.ts +4 -1
  120. package/dist/plugin-distribution/manager.js +12 -5
  121. package/dist/plugin-distribution/registry-cache.js +2 -1
  122. package/dist/plugin-distribution/registry-source-state.js +2 -1
  123. package/dist/plugin-distribution/schemas.d.ts +26 -8
  124. package/dist/plugin-distribution/schemas.js +2 -1
  125. package/dist/plugin-distribution/types.d.ts +4 -0
  126. package/dist/plugin-manager.d.ts +20 -4
  127. package/dist/plugin-manager.js +228 -64
  128. package/dist/plugin-runtime-entry.d.ts +1 -1
  129. package/dist/plugin-runtime-entry.js +16 -0
  130. package/dist/plugin.d.ts +18 -2
  131. package/dist/plugin.js +93 -39
  132. package/dist/registry-schema/catalog-v1.d.ts +60 -9
  133. package/dist/registry-schema/catalog-v1.js +2 -1
  134. package/dist/registry-schema/catalog-v2.d.ts +60 -9
  135. package/dist/registry-schema/catalog-v2.js +1 -1
  136. package/dist/search-result-provider.d.ts +95 -0
  137. package/dist/search-result-provider.js +42 -0
  138. package/dist/status-bar.svelte.d.ts +26 -20
  139. package/dist/status-bar.svelte.js +1 -0
  140. package/dist/storage/app-database.d.ts +6 -2
  141. package/dist/storage/app-database.js +41 -34
  142. package/dist/storage/desktop-native.d.ts +5 -3
  143. package/dist/storage/desktop-native.js +59 -6
  144. package/dist/storage/directory-watcher.d.ts +27 -0
  145. package/dist/storage/directory-watcher.js +201 -0
  146. package/dist/storage/fs.d.ts +14 -27
  147. package/dist/storage/fs.js +2 -168
  148. package/dist/storage/index-projection.js +33 -15
  149. package/dist/storage/memory-vault-adapter.d.ts +2 -0
  150. package/dist/storage/memory-vault-adapter.js +14 -1
  151. package/dist/storage/path.d.ts +6 -2
  152. package/dist/storage/path.js +8 -2
  153. package/dist/storage/projection-query-candidates.d.ts +3 -0
  154. package/dist/storage/projection-query-candidates.js +69 -0
  155. package/dist/storage/remote-app-database.d.ts +2 -2
  156. package/dist/storage/remote-app-database.js +1 -1
  157. package/dist/storage/runtime.d.ts +3 -0
  158. package/dist/storage/runtime.js +3 -0
  159. package/dist/storage/search-embedding-record.d.ts +3 -0
  160. package/dist/storage/search-embedding-record.js +18 -0
  161. package/dist/storage/turso-app-database.d.ts +2 -0
  162. package/dist/storage/turso-app-database.js +67 -30
  163. package/dist/storage/vault-listing.d.ts +3 -0
  164. package/dist/storage/vault-listing.js +36 -0
  165. package/dist/storage/vault-reconciliation.d.ts +19 -0
  166. package/dist/storage/vault-reconciliation.js +137 -0
  167. package/dist/storage/vault-session.d.ts +8 -0
  168. package/dist/storage/vault-session.js +10 -2
  169. package/dist/storage/vault.svelte.d.ts +53 -4
  170. package/dist/storage/vault.svelte.js +223 -87
  171. package/dist/sync-host.d.ts +12 -3
  172. package/dist/sync-host.js +5 -1
  173. package/dist/vault-change-views.d.ts +4 -0
  174. package/dist/vault-change-views.js +43 -0
  175. package/dist/vault-changes.d.ts +37 -0
  176. package/dist/vault-changes.js +228 -0
  177. package/dist/view.svelte.d.ts +182 -149
  178. package/dist/view.svelte.js +11 -2
  179. package/dist/workspace-close-guard.d.ts +3 -0
  180. package/dist/workspace-close-guard.js +35 -0
  181. package/dist/workspace-host-internal.js +10 -2
  182. package/dist/workspace-layout-normalizer.d.ts +4 -2
  183. package/dist/workspace-layout-normalizer.js +5 -5
  184. package/dist/workspace-view-document.d.ts +3 -0
  185. package/dist/workspace-view-document.js +12 -0
  186. package/dist/workspace.svelte.d.ts +13 -2
  187. package/dist/workspace.svelte.js +371 -82
  188. package/package.json +45 -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.4"
184
+ "version": "0.2.1"
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.4"
197
+ "version": "0.2.1"
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.4"
210
+ "version": "0.2.1"
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.4"
223
+ "version": "0.2.1"
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.4"
233
+ "version": "0.2.1"
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.4"
246
+ "version": "0.2.1"
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.4"
259
+ "version": "0.2.1"
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.4"
272
+ "version": "0.2.1"
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.4"
286
+ "version": "0.2.1"
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.4"
299
+ "version": "0.2.1"
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.4"
312
+ "version": "0.2.1"
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.4"
325
+ "version": "0.2.1"
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.4"
338
+ "version": "0.2.1"
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.4"
351
+ "version": "0.2.1"
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.4"
364
+ "version": "0.2.1"
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.4"
377
+ "version": "0.2.1"
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.4"
390
+ "version": "0.2.1"
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.4"
403
+ "version": "0.2.1"
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.4"
416
+ "version": "0.2.1"
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.4"
429
+ "version": "0.2.1"
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.4"
442
+ "version": "0.2.1"
443
443
  },
444
444
  "@lapis-notes/api/menu": {
445
445
  "defaultExport": true,
@@ -453,7 +453,7 @@ export const pluginHostModuleRegistry = {
453
453
  "public": true,
454
454
  "source": "package-json-export",
455
455
  "specifier": "@lapis-notes/api/menu",
456
- "version": "0.1.4"
456
+ "version": "0.2.1"
457
457
  },
458
458
  "@lapis-notes/api/metadata-store": {
459
459
  "entry": "@lapis-notes/api/metadata-store",
@@ -463,7 +463,7 @@ export const pluginHostModuleRegistry = {
463
463
  "public": true,
464
464
  "source": "package-json-export",
465
465
  "specifier": "@lapis-notes/api/metadata-store",
466
- "version": "0.1.4"
466
+ "version": "0.2.1"
467
467
  },
468
468
  "@lapis-notes/api/metadata-value": {
469
469
  "entry": "@lapis-notes/api/metadata-value",
@@ -476,7 +476,59 @@ export const pluginHostModuleRegistry = {
476
476
  "public": true,
477
477
  "source": "package-json-export",
478
478
  "specifier": "@lapis-notes/api/metadata-value",
479
- "version": "0.1.4"
479
+ "version": "0.2.1"
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.1"
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.1"
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.1"
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.1"
480
532
  },
481
533
  "@lapis-notes/api/path": {
482
534
  "entry": "@lapis-notes/api/path",
@@ -489,7 +541,7 @@ export const pluginHostModuleRegistry = {
489
541
  "public": true,
490
542
  "source": "package-json-export",
491
543
  "specifier": "@lapis-notes/api/path",
492
- "version": "0.1.4"
544
+ "version": "0.2.1"
493
545
  },
494
546
  "@lapis-notes/api/plugin-assets": {
495
547
  "entry": "@lapis-notes/api/plugin-assets",
@@ -502,7 +554,7 @@ export const pluginHostModuleRegistry = {
502
554
  "public": true,
503
555
  "source": "package-json-export",
504
556
  "specifier": "@lapis-notes/api/plugin-assets",
505
- "version": "0.1.4"
557
+ "version": "0.2.1"
506
558
  },
507
559
  "@lapis-notes/api/plugin-distribution-host": {
508
560
  "entry": "@lapis-notes/api/plugin-distribution-host",
@@ -515,7 +567,7 @@ export const pluginHostModuleRegistry = {
515
567
  "public": true,
516
568
  "source": "package-json-export",
517
569
  "specifier": "@lapis-notes/api/plugin-distribution-host",
518
- "version": "0.1.4"
570
+ "version": "0.2.1"
519
571
  },
520
572
  "@lapis-notes/api/plugin-host-modules": {
521
573
  "entry": "@lapis-notes/api/plugin-host-modules",
@@ -528,7 +580,7 @@ export const pluginHostModuleRegistry = {
528
580
  "public": true,
529
581
  "source": "package-json-export",
530
582
  "specifier": "@lapis-notes/api/plugin-host-modules",
531
- "version": "0.1.4"
583
+ "version": "0.2.1"
532
584
  },
533
585
  "@lapis-notes/api/registry/schema": {
534
586
  "entry": "@lapis-notes/api/registry/schema",
@@ -541,7 +593,20 @@ export const pluginHostModuleRegistry = {
541
593
  "public": true,
542
594
  "source": "package-json-export",
543
595
  "specifier": "@lapis-notes/api/registry/schema",
544
- "version": "0.1.4"
596
+ "version": "0.2.1"
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.1"
545
610
  },
546
611
  "@lapis-notes/api/search-embedding-worker": {
547
612
  "entry": "@lapis-notes/api/search-embedding-worker",
@@ -554,7 +619,7 @@ export const pluginHostModuleRegistry = {
554
619
  "public": true,
555
620
  "source": "package-json-export",
556
621
  "specifier": "@lapis-notes/api/search-embedding-worker",
557
- "version": "0.1.4"
622
+ "version": "0.2.1"
558
623
  },
559
624
  "@lapis-notes/api/select": {
560
625
  "entry": "@lapis-notes/api/select",
@@ -567,7 +632,7 @@ export const pluginHostModuleRegistry = {
567
632
  "public": true,
568
633
  "source": "package-json-export",
569
634
  "specifier": "@lapis-notes/api/select",
570
- "version": "0.1.4"
635
+ "version": "0.2.1"
571
636
  },
572
637
  "@lapis-notes/api/server-host": {
573
638
  "entry": "@lapis-notes/api/server-host",
@@ -580,7 +645,7 @@ export const pluginHostModuleRegistry = {
580
645
  "public": true,
581
646
  "source": "package-json-export",
582
647
  "specifier": "@lapis-notes/api/server-host",
583
- "version": "0.1.4"
648
+ "version": "0.2.1"
584
649
  },
585
650
  "@lapis-notes/api/sync-repository": {
586
651
  "entry": "@lapis-notes/api/sync-repository",
@@ -593,7 +658,7 @@ export const pluginHostModuleRegistry = {
593
658
  "public": true,
594
659
  "source": "package-json-export",
595
660
  "specifier": "@lapis-notes/api/sync-repository",
596
- "version": "0.1.4"
661
+ "version": "0.2.1"
597
662
  },
598
663
  "@lapis-notes/api/sync-security-host": {
599
664
  "entry": "@lapis-notes/api/sync-security-host",
@@ -603,7 +668,7 @@ export const pluginHostModuleRegistry = {
603
668
  "public": true,
604
669
  "source": "package-json-export",
605
670
  "specifier": "@lapis-notes/api/sync-security-host",
606
- "version": "0.1.4"
671
+ "version": "0.2.1"
607
672
  },
608
673
  "@lapis-notes/api/telemetry": {
609
674
  "entry": "@lapis-notes/api/telemetry",
@@ -616,7 +681,7 @@ export const pluginHostModuleRegistry = {
616
681
  "public": true,
617
682
  "source": "package-json-export",
618
683
  "specifier": "@lapis-notes/api/telemetry",
619
- "version": "0.1.4"
684
+ "version": "0.2.1"
620
685
  },
621
686
  "@lapis-notes/api/vault": {
622
687
  "entry": "@lapis-notes/api/vault",
@@ -629,7 +694,7 @@ export const pluginHostModuleRegistry = {
629
694
  "public": true,
630
695
  "source": "package-json-export",
631
696
  "specifier": "@lapis-notes/api/vault",
632
- "version": "0.1.4"
697
+ "version": "0.2.1"
633
698
  },
634
699
  "@lapis-notes/api/workspace-host": {
635
700
  "entry": "@lapis-notes/api/workspace-host",
@@ -642,7 +707,7 @@ export const pluginHostModuleRegistry = {
642
707
  "public": true,
643
708
  "source": "package-json-export",
644
709
  "specifier": "@lapis-notes/api/workspace-host",
645
- "version": "0.1.4"
710
+ "version": "0.2.1"
646
711
  },
647
712
  "@lapis-notes/markdown": {
648
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
+ }