@abraca/nuxt 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 (299) hide show
  1. package/README.md +84 -0
  2. package/dist/module.d.mts +201 -0
  3. package/dist/module.json +12 -0
  4. package/dist/module.mjs +170 -0
  5. package/dist/runtime/components/ACollaborationUsers.d.vue.ts +11 -0
  6. package/dist/runtime/components/ACollaborationUsers.vue +48 -0
  7. package/dist/runtime/components/ACollaborationUsers.vue.d.ts +11 -0
  8. package/dist/runtime/components/AColorPicker.d.vue.ts +13 -0
  9. package/dist/runtime/components/AColorPicker.vue +71 -0
  10. package/dist/runtime/components/AColorPicker.vue.d.ts +13 -0
  11. package/dist/runtime/components/ACommandPalette.d.vue.ts +13 -0
  12. package/dist/runtime/components/ACommandPalette.vue +31 -0
  13. package/dist/runtime/components/ACommandPalette.vue.d.ts +13 -0
  14. package/dist/runtime/components/AConnectionStatus.d.vue.ts +13 -0
  15. package/dist/runtime/components/AConnectionStatus.vue +50 -0
  16. package/dist/runtime/components/AConnectionStatus.vue.d.ts +13 -0
  17. package/dist/runtime/components/ADocTypeSelect.d.vue.ts +10 -0
  18. package/dist/runtime/components/ADocTypeSelect.vue +34 -0
  19. package/dist/runtime/components/ADocTypeSelect.vue.d.ts +10 -0
  20. package/dist/runtime/components/ADocumentTree.d.vue.ts +53 -0
  21. package/dist/runtime/components/ADocumentTree.vue +350 -0
  22. package/dist/runtime/components/ADocumentTree.vue.d.ts +53 -0
  23. package/dist/runtime/components/AEditor.d.vue.ts +60 -0
  24. package/dist/runtime/components/AEditor.vue +174 -0
  25. package/dist/runtime/components/AEditor.vue.d.ts +60 -0
  26. package/dist/runtime/components/AFloatingWindow.d.vue.ts +24 -0
  27. package/dist/runtime/components/AFloatingWindow.vue +232 -0
  28. package/dist/runtime/components/AFloatingWindow.vue.d.ts +24 -0
  29. package/dist/runtime/components/AIconPicker.d.vue.ts +13 -0
  30. package/dist/runtime/components/AIconPicker.vue +257 -0
  31. package/dist/runtime/components/AIconPicker.vue.d.ts +13 -0
  32. package/dist/runtime/components/ANodePanel.d.vue.ts +15 -0
  33. package/dist/runtime/components/ANodePanel.vue +541 -0
  34. package/dist/runtime/components/ANodePanel.vue.d.ts +15 -0
  35. package/dist/runtime/components/ANotifications.d.vue.ts +7 -0
  36. package/dist/runtime/components/ANotifications.vue +75 -0
  37. package/dist/runtime/components/ANotifications.vue.d.ts +7 -0
  38. package/dist/runtime/components/APermissionGuard.d.vue.ts +21 -0
  39. package/dist/runtime/components/APermissionGuard.vue +22 -0
  40. package/dist/runtime/components/APermissionGuard.vue.d.ts +21 -0
  41. package/dist/runtime/components/APresence.d.vue.ts +43 -0
  42. package/dist/runtime/components/APresence.vue +36 -0
  43. package/dist/runtime/components/APresence.vue.d.ts +43 -0
  44. package/dist/runtime/components/AProvider.d.vue.ts +27 -0
  45. package/dist/runtime/components/AProvider.vue +42 -0
  46. package/dist/runtime/components/AProvider.vue.d.ts +27 -0
  47. package/dist/runtime/components/ARoleBadge.d.vue.ts +11 -0
  48. package/dist/runtime/components/ARoleBadge.vue +29 -0
  49. package/dist/runtime/components/ARoleBadge.vue.d.ts +11 -0
  50. package/dist/runtime/components/AVoiceBar.d.vue.ts +13 -0
  51. package/dist/runtime/components/AVoiceBar.vue +379 -0
  52. package/dist/runtime/components/AVoiceBar.vue.d.ts +13 -0
  53. package/dist/runtime/components/AVoiceTile.d.vue.ts +10 -0
  54. package/dist/runtime/components/AVoiceTile.vue +48 -0
  55. package/dist/runtime/components/AVoiceTile.vue.d.ts +10 -0
  56. package/dist/runtime/components/AWindowLayer.d.vue.ts +3 -0
  57. package/dist/runtime/components/AWindowLayer.vue +17 -0
  58. package/dist/runtime/components/AWindowLayer.vue.d.ts +3 -0
  59. package/dist/runtime/components/aware/AArea.d.vue.ts +42 -0
  60. package/dist/runtime/components/aware/AArea.vue +45 -0
  61. package/dist/runtime/components/aware/AArea.vue.d.ts +42 -0
  62. package/dist/runtime/components/aware/AAvatar.d.vue.ts +25 -0
  63. package/dist/runtime/components/aware/AAvatar.vue +86 -0
  64. package/dist/runtime/components/aware/AAvatar.vue.d.ts +25 -0
  65. package/dist/runtime/components/aware/AButton.d.vue.ts +7 -0
  66. package/dist/runtime/components/aware/AButton.vue +39 -0
  67. package/dist/runtime/components/aware/AButton.vue.d.ts +7 -0
  68. package/dist/runtime/components/aware/ACursorLabel.d.vue.ts +12 -0
  69. package/dist/runtime/components/aware/ACursorLabel.vue +44 -0
  70. package/dist/runtime/components/aware/ACursorLabel.vue.d.ts +12 -0
  71. package/dist/runtime/components/aware/ADocBadge.d.vue.ts +11 -0
  72. package/dist/runtime/components/aware/ADocBadge.vue +27 -0
  73. package/dist/runtime/components/aware/ADocBadge.vue.d.ts +11 -0
  74. package/dist/runtime/components/aware/AFacepile.d.vue.ts +20 -0
  75. package/dist/runtime/components/aware/AFacepile.vue +92 -0
  76. package/dist/runtime/components/aware/AFacepile.vue.d.ts +20 -0
  77. package/dist/runtime/components/aware/AInput.d.vue.ts +7 -0
  78. package/dist/runtime/components/aware/AInput.vue +44 -0
  79. package/dist/runtime/components/aware/AInput.vue.d.ts +7 -0
  80. package/dist/runtime/components/aware/ASelect.d.vue.ts +7 -0
  81. package/dist/runtime/components/aware/ASelect.vue +51 -0
  82. package/dist/runtime/components/aware/ASelect.vue.d.ts +7 -0
  83. package/dist/runtime/components/aware/ATextarea.d.vue.ts +7 -0
  84. package/dist/runtime/components/aware/ATextarea.vue +44 -0
  85. package/dist/runtime/components/aware/ATextarea.vue.d.ts +7 -0
  86. package/dist/runtime/components/aware/AUserList.d.vue.ts +17 -0
  87. package/dist/runtime/components/aware/AUserList.vue +72 -0
  88. package/dist/runtime/components/aware/AUserList.vue.d.ts +17 -0
  89. package/dist/runtime/components/renderers/ACalendarRenderer.d.vue.ts +8 -0
  90. package/dist/runtime/components/renderers/ACalendarRenderer.vue +154 -0
  91. package/dist/runtime/components/renderers/ACalendarRenderer.vue.d.ts +8 -0
  92. package/dist/runtime/components/renderers/AGalleryRenderer.d.vue.ts +8 -0
  93. package/dist/runtime/components/renderers/AGalleryRenderer.vue +88 -0
  94. package/dist/runtime/components/renderers/AGalleryRenderer.vue.d.ts +8 -0
  95. package/dist/runtime/components/renderers/AKanbanRenderer.d.vue.ts +8 -0
  96. package/dist/runtime/components/renderers/AKanbanRenderer.vue +179 -0
  97. package/dist/runtime/components/renderers/AKanbanRenderer.vue.d.ts +8 -0
  98. package/dist/runtime/components/renderers/AOutlineRenderer.d.vue.ts +8 -0
  99. package/dist/runtime/components/renderers/AOutlineRenderer.vue +180 -0
  100. package/dist/runtime/components/renderers/AOutlineRenderer.vue.d.ts +8 -0
  101. package/dist/runtime/components/renderers/ATableRenderer.d.vue.ts +8 -0
  102. package/dist/runtime/components/renderers/ATableRenderer.vue +191 -0
  103. package/dist/runtime/components/renderers/ATableRenderer.vue.d.ts +8 -0
  104. package/dist/runtime/composables/useAAField.d.ts +42 -0
  105. package/dist/runtime/composables/useAAField.js +62 -0
  106. package/dist/runtime/composables/useAbraLocale.d.ts +14 -0
  107. package/dist/runtime/composables/useAbraLocale.js +11 -0
  108. package/dist/runtime/composables/useAbracadabra.d.ts +11 -0
  109. package/dist/runtime/composables/useAbracadabra.js +3 -0
  110. package/dist/runtime/composables/useAbracadabraAuth.d.ts +23 -0
  111. package/dist/runtime/composables/useAbracadabraAuth.js +22 -0
  112. package/dist/runtime/composables/useAwareness.d.ts +22 -0
  113. package/dist/runtime/composables/useAwareness.js +48 -0
  114. package/dist/runtime/composables/useAwarenessPeers.d.ts +34 -0
  115. package/dist/runtime/composables/useAwarenessPeers.js +33 -0
  116. package/dist/runtime/composables/useBackgroundSync.d.ts +37 -0
  117. package/dist/runtime/composables/useBackgroundSync.js +73 -0
  118. package/dist/runtime/composables/useChat.d.ts +65 -0
  119. package/dist/runtime/composables/useChat.js +210 -0
  120. package/dist/runtime/composables/useChatUsers.d.ts +21 -0
  121. package/dist/runtime/composables/useChatUsers.js +39 -0
  122. package/dist/runtime/composables/useChildTree.d.ts +119 -0
  123. package/dist/runtime/composables/useChildTree.js +100 -0
  124. package/dist/runtime/composables/useCommandPalette.d.ts +58 -0
  125. package/dist/runtime/composables/useCommandPalette.js +94 -0
  126. package/dist/runtime/composables/useConnectionStatus.d.ts +17 -0
  127. package/dist/runtime/composables/useConnectionStatus.js +37 -0
  128. package/dist/runtime/composables/useDashboard.d.ts +3 -0
  129. package/dist/runtime/composables/useDashboard.js +23 -0
  130. package/dist/runtime/composables/useDocExport.d.ts +5 -0
  131. package/dist/runtime/composables/useDocExport.js +256 -0
  132. package/dist/runtime/composables/useDocImport.d.ts +10 -0
  133. package/dist/runtime/composables/useDocImport.js +227 -0
  134. package/dist/runtime/composables/useDocJump.d.ts +29 -0
  135. package/dist/runtime/composables/useDocJump.js +17 -0
  136. package/dist/runtime/composables/useDocumentPermissions.d.ts +20 -0
  137. package/dist/runtime/composables/useDocumentPermissions.js +33 -0
  138. package/dist/runtime/composables/useEditor.d.ts +45 -0
  139. package/dist/runtime/composables/useEditor.js +121 -0
  140. package/dist/runtime/composables/useEditorDragHandle.d.ts +26 -0
  141. package/dist/runtime/composables/useEditorDragHandle.js +219 -0
  142. package/dist/runtime/composables/useEditorMentions.d.ts +28 -0
  143. package/dist/runtime/composables/useEditorMentions.js +40 -0
  144. package/dist/runtime/composables/useEditorSuggestions.d.ts +18 -0
  145. package/dist/runtime/composables/useEditorSuggestions.js +45 -0
  146. package/dist/runtime/composables/useEditorToolbar.d.ts +22 -0
  147. package/dist/runtime/composables/useEditorToolbar.js +60 -0
  148. package/dist/runtime/composables/useFileBlobStore.d.ts +15 -0
  149. package/dist/runtime/composables/useFileBlobStore.js +22 -0
  150. package/dist/runtime/composables/useFileIndex.d.ts +20 -0
  151. package/dist/runtime/composables/useFileIndex.js +69 -0
  152. package/dist/runtime/composables/useFollowUser.d.ts +5 -0
  153. package/dist/runtime/composables/useFollowUser.js +40 -0
  154. package/dist/runtime/composables/useNotifications.d.ts +82 -0
  155. package/dist/runtime/composables/useNotifications.js +171 -0
  156. package/dist/runtime/composables/useOfflineUploadQueue.d.ts +90 -0
  157. package/dist/runtime/composables/useOfflineUploadQueue.js +33 -0
  158. package/dist/runtime/composables/usePasskeyAccounts.d.ts +32 -0
  159. package/dist/runtime/composables/usePasskeyAccounts.js +46 -0
  160. package/dist/runtime/composables/usePluginRegistry.d.ts +6 -0
  161. package/dist/runtime/composables/usePluginRegistry.js +3 -0
  162. package/dist/runtime/composables/useRendererBase.d.ts +186 -0
  163. package/dist/runtime/composables/useRendererBase.js +46 -0
  164. package/dist/runtime/composables/useSearchIndex.d.ts +20 -0
  165. package/dist/runtime/composables/useSearchIndex.js +104 -0
  166. package/dist/runtime/composables/useTrash.d.ts +50 -0
  167. package/dist/runtime/composables/useTrash.js +127 -0
  168. package/dist/runtime/composables/useVoice.d.ts +51 -0
  169. package/dist/runtime/composables/useVoice.js +220 -0
  170. package/dist/runtime/composables/useWindowManager.d.ts +122 -0
  171. package/dist/runtime/composables/useWindowManager.js +141 -0
  172. package/dist/runtime/composables/useYDoc.d.ts +142 -0
  173. package/dist/runtime/composables/useYDoc.js +172 -0
  174. package/dist/runtime/extensions/accordion.d.ts +3 -0
  175. package/dist/runtime/extensions/accordion.js +49 -0
  176. package/dist/runtime/extensions/badge.d.ts +2 -0
  177. package/dist/runtime/extensions/badge.js +39 -0
  178. package/dist/runtime/extensions/callout.d.ts +2 -0
  179. package/dist/runtime/extensions/callout.js +28 -0
  180. package/dist/runtime/extensions/card.d.ts +3 -0
  181. package/dist/runtime/extensions/card.js +53 -0
  182. package/dist/runtime/extensions/code-collapse.d.ts +2 -0
  183. package/dist/runtime/extensions/code-collapse.js +32 -0
  184. package/dist/runtime/extensions/code-group.d.ts +2 -0
  185. package/dist/runtime/extensions/code-group.js +17 -0
  186. package/dist/runtime/extensions/collapsible.d.ts +2 -0
  187. package/dist/runtime/extensions/collapsible.js +35 -0
  188. package/dist/runtime/extensions/document-header.d.ts +11 -0
  189. package/dist/runtime/extensions/document-header.js +82 -0
  190. package/dist/runtime/extensions/document-meta.d.ts +20 -0
  191. package/dist/runtime/extensions/document-meta.js +121 -0
  192. package/dist/runtime/extensions/document.d.ts +6 -0
  193. package/dist/runtime/extensions/document.js +6 -0
  194. package/dist/runtime/extensions/file-block.d.ts +15 -0
  195. package/dist/runtime/extensions/file-block.js +34 -0
  196. package/dist/runtime/extensions/file-drop.d.ts +6 -0
  197. package/dist/runtime/extensions/file-drop.js +65 -0
  198. package/dist/runtime/extensions/kbd.d.ts +2 -0
  199. package/dist/runtime/extensions/kbd.js +33 -0
  200. package/dist/runtime/extensions/prose-icon.d.ts +2 -0
  201. package/dist/runtime/extensions/prose-icon.js +33 -0
  202. package/dist/runtime/extensions/search-highlight.d.ts +10 -0
  203. package/dist/runtime/extensions/search-highlight.js +129 -0
  204. package/dist/runtime/extensions/steps.d.ts +2 -0
  205. package/dist/runtime/extensions/steps.js +32 -0
  206. package/dist/runtime/extensions/tabs.d.ts +3 -0
  207. package/dist/runtime/extensions/tabs.js +49 -0
  208. package/dist/runtime/extensions/views/AccordionItemView.d.vue.ts +4 -0
  209. package/dist/runtime/extensions/views/AccordionItemView.vue +41 -0
  210. package/dist/runtime/extensions/views/AccordionItemView.vue.d.ts +4 -0
  211. package/dist/runtime/extensions/views/AccordionView.d.vue.ts +4 -0
  212. package/dist/runtime/extensions/views/AccordionView.vue +22 -0
  213. package/dist/runtime/extensions/views/AccordionView.vue.d.ts +4 -0
  214. package/dist/runtime/extensions/views/BadgeView.d.vue.ts +4 -0
  215. package/dist/runtime/extensions/views/BadgeView.vue +23 -0
  216. package/dist/runtime/extensions/views/BadgeView.vue.d.ts +4 -0
  217. package/dist/runtime/extensions/views/CalloutView.d.vue.ts +4 -0
  218. package/dist/runtime/extensions/views/CalloutView.vue +43 -0
  219. package/dist/runtime/extensions/views/CalloutView.vue.d.ts +4 -0
  220. package/dist/runtime/extensions/views/CardGroupView.d.vue.ts +4 -0
  221. package/dist/runtime/extensions/views/CardGroupView.vue +22 -0
  222. package/dist/runtime/extensions/views/CardGroupView.vue.d.ts +4 -0
  223. package/dist/runtime/extensions/views/CardView.d.vue.ts +4 -0
  224. package/dist/runtime/extensions/views/CardView.vue +28 -0
  225. package/dist/runtime/extensions/views/CardView.vue.d.ts +4 -0
  226. package/dist/runtime/extensions/views/CodeCollapseView.d.vue.ts +4 -0
  227. package/dist/runtime/extensions/views/CodeCollapseView.vue +45 -0
  228. package/dist/runtime/extensions/views/CodeCollapseView.vue.d.ts +4 -0
  229. package/dist/runtime/extensions/views/CodeGroupView.d.vue.ts +4 -0
  230. package/dist/runtime/extensions/views/CodeGroupView.vue +53 -0
  231. package/dist/runtime/extensions/views/CodeGroupView.vue.d.ts +4 -0
  232. package/dist/runtime/extensions/views/CollapsibleView.d.vue.ts +4 -0
  233. package/dist/runtime/extensions/views/CollapsibleView.vue +42 -0
  234. package/dist/runtime/extensions/views/CollapsibleView.vue.d.ts +4 -0
  235. package/dist/runtime/extensions/views/FileNodeView.d.vue.ts +4 -0
  236. package/dist/runtime/extensions/views/FileNodeView.vue +140 -0
  237. package/dist/runtime/extensions/views/FileNodeView.vue.d.ts +4 -0
  238. package/dist/runtime/extensions/views/KbdView.d.vue.ts +4 -0
  239. package/dist/runtime/extensions/views/KbdView.vue +23 -0
  240. package/dist/runtime/extensions/views/KbdView.vue.d.ts +4 -0
  241. package/dist/runtime/extensions/views/ProseIconView.d.vue.ts +4 -0
  242. package/dist/runtime/extensions/views/ProseIconView.vue +23 -0
  243. package/dist/runtime/extensions/views/ProseIconView.vue.d.ts +4 -0
  244. package/dist/runtime/extensions/views/StepsView.d.vue.ts +4 -0
  245. package/dist/runtime/extensions/views/StepsView.vue +32 -0
  246. package/dist/runtime/extensions/views/StepsView.vue.d.ts +4 -0
  247. package/dist/runtime/extensions/views/TabsItemView.d.vue.ts +4 -0
  248. package/dist/runtime/extensions/views/TabsItemView.vue +22 -0
  249. package/dist/runtime/extensions/views/TabsItemView.vue.d.ts +4 -0
  250. package/dist/runtime/extensions/views/TabsView.d.vue.ts +4 -0
  251. package/dist/runtime/extensions/views/TabsView.vue +56 -0
  252. package/dist/runtime/extensions/views/TabsView.vue.d.ts +4 -0
  253. package/dist/runtime/locale.d.ts +134 -0
  254. package/dist/runtime/locale.js +119 -0
  255. package/dist/runtime/middleware/abracadabra-auth.d.ts +11 -0
  256. package/dist/runtime/middleware/abracadabra-auth.js +9 -0
  257. package/dist/runtime/plugin-abracadabra.client.d.ts +7 -0
  258. package/dist/runtime/plugin-abracadabra.client.js +898 -0
  259. package/dist/runtime/plugin-abracadabra.server.d.ts +2 -0
  260. package/dist/runtime/plugin-abracadabra.server.js +71 -0
  261. package/dist/runtime/plugin-registry.d.ts +34 -0
  262. package/dist/runtime/plugin-registry.js +83 -0
  263. package/dist/runtime/plugin-shared-globals.client.d.ts +2 -0
  264. package/dist/runtime/plugin-shared-globals.client.js +20 -0
  265. package/dist/runtime/plugins/core.plugin.d.ts +12 -0
  266. package/dist/runtime/plugins/core.plugin.js +179 -0
  267. package/dist/runtime/server/api/_abracadabra/render/[docId].get.d.ts +18 -0
  268. package/dist/runtime/server/api/_abracadabra/render/[docId].get.js +51 -0
  269. package/dist/runtime/server/api/_abracadabra/spaces.get.d.ts +11 -0
  270. package/dist/runtime/server/api/_abracadabra/spaces.get.js +16 -0
  271. package/dist/runtime/server/plugins/abracadabra-service.d.ts +2 -0
  272. package/dist/runtime/server/plugins/abracadabra-service.js +116 -0
  273. package/dist/runtime/server/runners/doc-tree-cache.d.ts +11 -0
  274. package/dist/runtime/server/runners/doc-tree-cache.js +65 -0
  275. package/dist/runtime/server/tsconfig.json +3 -0
  276. package/dist/runtime/server/utils/docCache.d.ts +25 -0
  277. package/dist/runtime/server/utils/docCache.js +131 -0
  278. package/dist/runtime/server/utils/serverRunner.d.ts +28 -0
  279. package/dist/runtime/server/utils/serverRunner.js +58 -0
  280. package/dist/runtime/types.d.ts +444 -0
  281. package/dist/runtime/types.js +93 -0
  282. package/dist/runtime/utils/VoiceClient.d.ts +94 -0
  283. package/dist/runtime/utils/VoiceClient.js +599 -0
  284. package/dist/runtime/utils/avatarStyle.d.ts +15 -0
  285. package/dist/runtime/utils/avatarStyle.js +20 -0
  286. package/dist/runtime/utils/colorPalettes.d.ts +13 -0
  287. package/dist/runtime/utils/colorPalettes.js +49 -0
  288. package/dist/runtime/utils/docTypes.d.ts +129 -0
  289. package/dist/runtime/utils/docTypes.js +116 -0
  290. package/dist/runtime/utils/markdownToYjs.d.ts +23 -0
  291. package/dist/runtime/utils/markdownToYjs.js +440 -0
  292. package/dist/runtime/utils/metaFieldDefinitions.d.ts +7 -0
  293. package/dist/runtime/utils/metaFieldDefinitions.js +182 -0
  294. package/dist/runtime/utils/voiceErrors.d.ts +33 -0
  295. package/dist/runtime/utils/voiceErrors.js +54 -0
  296. package/dist/runtime/utils/yjsConvert.d.ts +14 -0
  297. package/dist/runtime/utils/yjsConvert.js +331 -0
  298. package/dist/types.d.mts +13 -0
  299. package/package.json +100 -0
@@ -0,0 +1,65 @@
1
+ import { initDocCache, observeDoc, unobserveDoc } from "../utils/docCache.js";
2
+ import { getServerPlugins } from "../utils/serverRunner.js";
3
+ export const docTreeCacheRunner = {
4
+ name: "abracadabra:doc-tree-cache",
5
+ async start(ctx) {
6
+ const { rootDoc, rootProvider, storage } = ctx;
7
+ const treeMap = rootDoc.getMap("doc-tree");
8
+ const loadedDocs = /* @__PURE__ */ new Map();
9
+ const pendingDocs = /* @__PURE__ */ new Set();
10
+ const serverExts = getServerPlugins().flatMap((p) => p.serverExtensions?.() ?? []);
11
+ initDocCache(storage, serverExts);
12
+ async function trackDoc(docId) {
13
+ if (loadedDocs.has(docId) || pendingDocs.has(docId)) return;
14
+ pendingDocs.add(docId);
15
+ try {
16
+ const childProv = await rootProvider.loadChild(docId);
17
+ if (!childProv.isSynced) {
18
+ await new Promise((resolve) => {
19
+ const done = () => {
20
+ childProv.off("synced", done);
21
+ resolve();
22
+ };
23
+ const tid = setTimeout(() => {
24
+ childProv.off("synced", done);
25
+ resolve();
26
+ }, 6e3);
27
+ childProv.on("synced", () => {
28
+ clearTimeout(tid);
29
+ done();
30
+ });
31
+ });
32
+ }
33
+ loadedDocs.set(docId, childProv);
34
+ observeDoc(docId, childProv.document);
35
+ console.log(`[abracadabra:doc-tree-cache] Tracking: ${docId}`);
36
+ } catch (e) {
37
+ console.warn(`[abracadabra:doc-tree-cache] Failed to load ${docId}:`, e);
38
+ } finally {
39
+ pendingDocs.delete(docId);
40
+ }
41
+ }
42
+ treeMap.forEach((_val, docId) => {
43
+ trackDoc(docId);
44
+ });
45
+ const observer = (event) => {
46
+ event.keysChanged.forEach((docId) => {
47
+ if (treeMap.has(docId)) {
48
+ trackDoc(docId);
49
+ } else {
50
+ unobserveDoc(docId);
51
+ loadedDocs.delete(docId);
52
+ console.log(`[abracadabra:doc-tree-cache] Untracked: ${docId}`);
53
+ }
54
+ });
55
+ };
56
+ treeMap.observe(observer);
57
+ return () => {
58
+ treeMap.unobserve(observer);
59
+ for (const [docId] of loadedDocs) {
60
+ unobserveDoc(docId);
61
+ }
62
+ loadedDocs.clear();
63
+ };
64
+ }
65
+ };
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "../../../.nuxt/tsconfig.server.json",
3
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Server-side document cache for abracadabra-nuxt.
3
+ *
4
+ * Maintains a live Y.Doc → HTML + JSON render cache backed by Nitro storage.
5
+ * Updates are debounced 2s after the last Y.Doc change to avoid thrashing.
6
+ *
7
+ * Used by the built-in doc-tree-cache server runner and by the SSR render route.
8
+ */
9
+ import type { DocCacheAPI } from '../../../runtime/types.js';
10
+ /**
11
+ * Initialize the cache with a Nitro storage handle and optional extra extensions.
12
+ * Must be called before observeDoc().
13
+ */
14
+ export declare function initDocCache(storage: any, extraExtensions?: any[]): void;
15
+ export declare function getCachedHTML(docId: string): Promise<string | null>;
16
+ export declare function getCachedJSON(docId: string): Promise<any | null>;
17
+ export declare function invalidateDoc(docId: string, ydoc?: any): Promise<void>;
18
+ /**
19
+ * Start observing a Y.Doc for changes with debounced re-rendering.
20
+ * Renders immediately on first observe.
21
+ */
22
+ export declare function observeDoc(docId: string, ydoc: any): void;
23
+ export declare function unobserveDoc(docId: string): void;
24
+ /** Build the DocCacheAPI object for the ServerRunnerContext. */
25
+ export declare function createDocCacheAPI(rootDoc: any): DocCacheAPI;
@@ -0,0 +1,131 @@
1
+ let _extensions = [];
2
+ let _storage = null;
3
+ const _renderTimers = /* @__PURE__ */ new Map();
4
+ const _observedDocs = /* @__PURE__ */ new Map();
5
+ const RENDER_DEBOUNCE_MS = 2e3;
6
+ export function initDocCache(storage, extraExtensions = []) {
7
+ _storage = storage;
8
+ _extensions = extraExtensions;
9
+ }
10
+ async function renderDocToHTML(ydoc) {
11
+ try {
12
+ const [{ generateHTML }, { yDocToProsemirrorJSON }, { default: StarterKit }] = await Promise.all([
13
+ import("@tiptap/core"),
14
+ import("@tiptap/y-tiptap"),
15
+ import("@tiptap/starter-kit")
16
+ ]);
17
+ const json = yDocToProsemirrorJSON(ydoc, "default");
18
+ return generateHTML(json, [StarterKit, ..._extensions]);
19
+ } catch (e) {
20
+ console.warn("[abracadabra:doc-cache] HTML render failed:", e);
21
+ return "";
22
+ }
23
+ }
24
+ async function renderDocToJSON(ydoc) {
25
+ try {
26
+ const Y = await import("yjs");
27
+ const result = {};
28
+ ydoc.share.forEach((type, key) => {
29
+ if (type instanceof Y.Map) {
30
+ result[key] = type.toJSON();
31
+ } else if (type instanceof Y.Array) {
32
+ result[key] = type.toJSON();
33
+ }
34
+ });
35
+ return result;
36
+ } catch (e) {
37
+ console.warn("[abracadabra:doc-cache] JSON render failed:", e);
38
+ return null;
39
+ }
40
+ }
41
+ function htmlKey(docId) {
42
+ return `doc-cache:html:${docId}`;
43
+ }
44
+ function jsonKey(docId) {
45
+ return `doc-cache:json:${docId}`;
46
+ }
47
+ export async function getCachedHTML(docId) {
48
+ if (!_storage) return null;
49
+ return await _storage.getItem(htmlKey(docId)) ?? null;
50
+ }
51
+ export async function getCachedJSON(docId) {
52
+ if (!_storage) return null;
53
+ return await _storage.getItem(jsonKey(docId)) ?? null;
54
+ }
55
+ export async function invalidateDoc(docId, ydoc) {
56
+ if (!_storage) return;
57
+ const doc = ydoc ?? _observedDocs.get(docId)?.doc;
58
+ if (!doc) return;
59
+ const [html, json] = await Promise.all([
60
+ renderDocToHTML(doc),
61
+ renderDocToJSON(doc)
62
+ ]);
63
+ await Promise.all([
64
+ _storage.setItem(htmlKey(docId), html),
65
+ _storage.setItem(jsonKey(docId), json)
66
+ ]);
67
+ }
68
+ export function observeDoc(docId, ydoc) {
69
+ if (_observedDocs.has(docId)) return;
70
+ const handler = () => {
71
+ clearTimeout(_renderTimers.get(docId));
72
+ _renderTimers.set(docId, setTimeout(async () => {
73
+ await invalidateDoc(docId, ydoc);
74
+ _renderTimers.delete(docId);
75
+ }, RENDER_DEBOUNCE_MS));
76
+ };
77
+ ydoc.on("update", handler);
78
+ invalidateDoc(docId, ydoc);
79
+ _observedDocs.set(docId, {
80
+ doc: ydoc,
81
+ cleanup: () => {
82
+ ydoc.off("update", handler);
83
+ clearTimeout(_renderTimers.get(docId));
84
+ _renderTimers.delete(docId);
85
+ }
86
+ });
87
+ }
88
+ export function unobserveDoc(docId) {
89
+ const entry = _observedDocs.get(docId);
90
+ if (entry) {
91
+ entry.cleanup();
92
+ _observedDocs.delete(docId);
93
+ }
94
+ }
95
+ export function createDocCacheAPI(rootDoc) {
96
+ return {
97
+ getHTML: getCachedHTML,
98
+ getJSON: getCachedJSON,
99
+ invalidate: (docId) => invalidateDoc(docId),
100
+ getTree: () => buildCachedTree(rootDoc)
101
+ };
102
+ }
103
+ async function buildCachedTree(rootDoc) {
104
+ const treeMap = rootDoc.getMap("doc-tree");
105
+ const entries = treeMap.toJSON();
106
+ const nodeMap = /* @__PURE__ */ new Map();
107
+ const roots = [];
108
+ for (const [id, entry] of Object.entries(entries)) {
109
+ const [html, data] = await Promise.all([
110
+ getCachedHTML(id),
111
+ getCachedJSON(id)
112
+ ]);
113
+ nodeMap.set(id, {
114
+ id,
115
+ label: entry.label ?? "",
116
+ type: entry.type ?? "doc",
117
+ html,
118
+ data,
119
+ children: []
120
+ });
121
+ }
122
+ for (const [id, entry] of Object.entries(entries)) {
123
+ const node = nodeMap.get(id);
124
+ if (entry.parentId && nodeMap.has(entry.parentId)) {
125
+ nodeMap.get(entry.parentId).children.push(node);
126
+ } else {
127
+ roots.push(node);
128
+ }
129
+ }
130
+ return roots;
131
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Server-side plugin runner registry for abracadabra-nuxt.
3
+ *
4
+ * Manages AbracadabraPlugin instances that declare `serverRunners`.
5
+ * Called by the Nitro service plugin after the root document syncs.
6
+ *
7
+ * Usage in consuming app's server/plugins/my-plugin.ts:
8
+ * import { registerServerPlugin } from '#imports' // auto-imported by module
9
+ * export default defineNitroPlugin((nitroApp) => {
10
+ * nitroApp.hooks.hook('abracadabra:before-runners', () => {
11
+ * registerServerPlugin(myPlugin)
12
+ * })
13
+ * })
14
+ */
15
+ import type { AbracadabraPlugin, ServerRunnerContext } from '../../types.js';
16
+ /**
17
+ * Register a plugin that may declare serverRunners.
18
+ * Must be called before bootRunners() (e.g. inside the 'abracadabra:before-runners' hook).
19
+ */
20
+ export declare function registerServerPlugin(plugin: AbracadabraPlugin): void;
21
+ /** Returns the list of currently registered server plugins. */
22
+ export declare function getServerPlugins(): readonly AbracadabraPlugin[];
23
+ /** Boot all runners from all registered plugins. Called once after auth + sync. */
24
+ export declare function bootRunners(ctx: ServerRunnerContext): Promise<void>;
25
+ /** Stop a single runner by name and remove it from the registry. */
26
+ export declare function stopRunner(name: string): Promise<void>;
27
+ /** Shutdown all runners gracefully. Called on server close. */
28
+ export declare function shutdownAllRunners(): Promise<void>;
@@ -0,0 +1,58 @@
1
+ const _plugins = [];
2
+ const _runners = /* @__PURE__ */ new Map();
3
+ let _serverCtx = null;
4
+ export function registerServerPlugin(plugin) {
5
+ if (_plugins.some((p) => p.name === plugin.name)) {
6
+ console.warn(`[abracadabra-service] Plugin "${plugin.name}" already registered`);
7
+ return;
8
+ }
9
+ _plugins.push(plugin);
10
+ }
11
+ export function getServerPlugins() {
12
+ return _plugins;
13
+ }
14
+ export async function bootRunners(ctx) {
15
+ _serverCtx = ctx;
16
+ for (const plugin of _plugins) {
17
+ for (const def of plugin.serverRunners ?? []) {
18
+ await _startRunner(def);
19
+ }
20
+ }
21
+ }
22
+ async function _startRunner(def) {
23
+ if (_runners.has(def.name)) {
24
+ console.warn(`[abracadabra-service] Runner "${def.name}" already running`);
25
+ return;
26
+ }
27
+ if (!_serverCtx) {
28
+ throw new Error("[abracadabra-service] Server context not initialized");
29
+ }
30
+ const state = { definition: def, cleanup: void 0, running: false };
31
+ _runners.set(def.name, state);
32
+ try {
33
+ console.log(`[abracadabra-service] Starting runner: ${def.name}`);
34
+ state.cleanup = await def.start(_serverCtx);
35
+ state.running = true;
36
+ } catch (err) {
37
+ console.error(`[abracadabra-service] Runner "${def.name}" failed to start:`, err);
38
+ _runners.delete(def.name);
39
+ }
40
+ }
41
+ export async function stopRunner(name) {
42
+ const state = _runners.get(name);
43
+ if (!state) return;
44
+ try {
45
+ if (typeof state.cleanup === "function") await state.cleanup();
46
+ } catch (err) {
47
+ console.error(`[abracadabra-service] Runner "${name}" cleanup failed:`, err);
48
+ }
49
+ _runners.delete(name);
50
+ console.log(`[abracadabra-service] Stopped runner: ${name}`);
51
+ }
52
+ export async function shutdownAllRunners() {
53
+ for (const [name] of _runners) {
54
+ await stopRunner(name);
55
+ }
56
+ _plugins.length = 0;
57
+ _serverCtx = null;
58
+ }