@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,54 @@
1
+ export var VoiceErrorCode = /* @__PURE__ */ ((VoiceErrorCode2) => {
2
+ VoiceErrorCode2["CONNECT_FAILED"] = "CONNECT_FAILED";
3
+ VoiceErrorCode2["CONNECT_TIMEOUT"] = "CONNECT_TIMEOUT";
4
+ VoiceErrorCode2["MEDIA_PERMISSION_DENIED"] = "MEDIA_PERMISSION_DENIED";
5
+ VoiceErrorCode2["MEDIA_NOT_FOUND"] = "MEDIA_NOT_FOUND";
6
+ VoiceErrorCode2["MEDIA_GENERIC"] = "MEDIA_GENERIC";
7
+ VoiceErrorCode2["PEER_CONNECTION_FAILED"] = "PEER_CONNECTION_FAILED";
8
+ VoiceErrorCode2["ICE_FAILED"] = "ICE_FAILED";
9
+ VoiceErrorCode2["OFFER_FAILED"] = "OFFER_FAILED";
10
+ VoiceErrorCode2["ANSWER_FAILED"] = "ANSWER_FAILED";
11
+ VoiceErrorCode2["ROOM_FULL"] = "ROOM_FULL";
12
+ VoiceErrorCode2["ROOM_FORBIDDEN"] = "ROOM_FORBIDDEN";
13
+ VoiceErrorCode2["WEBSOCKET_ERROR"] = "WEBSOCKET_ERROR";
14
+ VoiceErrorCode2["INSECURE_CONTEXT"] = "INSECURE_CONTEXT";
15
+ VoiceErrorCode2["MICROPHONE_NOT_FOUND"] = "MICROPHONE_NOT_FOUND";
16
+ VoiceErrorCode2["MICROPHONE_PERMISSION_DENIED"] = "MICROPHONE_PERMISSION_DENIED";
17
+ VoiceErrorCode2["CAMERA_PERMISSION_DENIED"] = "CAMERA_PERMISSION_DENIED";
18
+ VoiceErrorCode2["CAMERA_NOT_FOUND"] = "CAMERA_NOT_FOUND";
19
+ VoiceErrorCode2["SCREENSHARE_FAILED"] = "SCREENSHARE_FAILED";
20
+ VoiceErrorCode2["UNKNOWN"] = "UNKNOWN";
21
+ return VoiceErrorCode2;
22
+ })(VoiceErrorCode || {});
23
+ export const VoiceErrorMessages = {
24
+ ["CONNECT_FAILED" /* CONNECT_FAILED */]: "Failed to connect to voice server",
25
+ ["CONNECT_TIMEOUT" /* CONNECT_TIMEOUT */]: "Connection timed out",
26
+ ["MEDIA_PERMISSION_DENIED" /* MEDIA_PERMISSION_DENIED */]: "Microphone permission denied",
27
+ ["MEDIA_NOT_FOUND" /* MEDIA_NOT_FOUND */]: "Microphone not found",
28
+ ["MEDIA_GENERIC" /* MEDIA_GENERIC */]: "Media error",
29
+ ["PEER_CONNECTION_FAILED" /* PEER_CONNECTION_FAILED */]: "Peer connection failed",
30
+ ["ICE_FAILED" /* ICE_FAILED */]: "ICE negotiation failed",
31
+ ["OFFER_FAILED" /* OFFER_FAILED */]: "Failed to create offer",
32
+ ["ANSWER_FAILED" /* ANSWER_FAILED */]: "Failed to create answer",
33
+ ["ROOM_FULL" /* ROOM_FULL */]: "Voice room is full",
34
+ ["ROOM_FORBIDDEN" /* ROOM_FORBIDDEN */]: "Not authorized to join voice room",
35
+ ["WEBSOCKET_ERROR" /* WEBSOCKET_ERROR */]: "WebSocket connection error",
36
+ ["INSECURE_CONTEXT" /* INSECURE_CONTEXT */]: "Voice chat requires a secure context (HTTPS)",
37
+ ["MICROPHONE_NOT_FOUND" /* MICROPHONE_NOT_FOUND */]: "No microphone found",
38
+ ["MICROPHONE_PERMISSION_DENIED" /* MICROPHONE_PERMISSION_DENIED */]: "Microphone permission denied",
39
+ ["CAMERA_PERMISSION_DENIED" /* CAMERA_PERMISSION_DENIED */]: "Camera permission denied",
40
+ ["CAMERA_NOT_FOUND" /* CAMERA_NOT_FOUND */]: "No camera found",
41
+ ["SCREENSHARE_FAILED" /* SCREENSHARE_FAILED */]: "Screen sharing failed",
42
+ ["UNKNOWN" /* UNKNOWN */]: "Unknown voice error"
43
+ };
44
+ export function createVoiceError(code, detail) {
45
+ const base = VoiceErrorMessages[code];
46
+ return { code, message: detail ? `${base}: ${detail}` : base };
47
+ }
48
+ export const TRANSIENT_ERROR_CODES = /* @__PURE__ */ new Set([
49
+ "CAMERA_PERMISSION_DENIED" /* CAMERA_PERMISSION_DENIED */,
50
+ "CAMERA_NOT_FOUND" /* CAMERA_NOT_FOUND */,
51
+ "SCREENSHARE_FAILED" /* SCREENSHARE_FAILED */,
52
+ "ICE_FAILED" /* ICE_FAILED */,
53
+ "PEER_CONNECTION_FAILED" /* PEER_CONNECTION_FAILED */
54
+ ]);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * yjsConvert.ts
3
+ *
4
+ * Converts Y.XmlFragment content to markdown or HTML text.
5
+ * Used by useDocExport to serialize collaborative documents.
6
+ *
7
+ * Ported from cou-sh/app/utils/yjsToMarkdown.ts
8
+ */
9
+ import * as Y from 'yjs';
10
+ import type { DocPageMeta } from '../types.js';
11
+ export declare function yjsToMarkdown(fragment: Y.XmlFragment, label: string, meta?: DocPageMeta, type?: string): string;
12
+ export declare function yjsToHtml(fragment: Y.XmlFragment, label: string): string;
13
+ /** Extract plain text from a Y.XmlFragment (for search indexing) */
14
+ export declare function yjsToPlainText(fragment: Y.XmlFragment): string;
@@ -0,0 +1,331 @@
1
+ import * as Y from "yjs";
2
+ function serializeDelta(delta) {
3
+ let result = "";
4
+ for (const op of delta) {
5
+ if (typeof op.insert !== "string") continue;
6
+ let text = op.insert;
7
+ const attrs = op.attributes ?? {};
8
+ if (attrs.code) {
9
+ result += `\`${text}\``;
10
+ continue;
11
+ }
12
+ if (attrs.bold) text = `**${text}**`;
13
+ if (attrs.italic) text = `*${text}*`;
14
+ if (attrs.strike) text = `~~${text}~~`;
15
+ if (attrs.link) {
16
+ const href = attrs.link.href ?? "";
17
+ text = `[${text}](${href})`;
18
+ }
19
+ result += text;
20
+ }
21
+ return result;
22
+ }
23
+ function serializeInline(el) {
24
+ const parts = [];
25
+ for (const child of el.toArray()) {
26
+ if (child instanceof Y.XmlText) {
27
+ parts.push(serializeDelta(child.toDelta()));
28
+ } else if (child instanceof Y.XmlElement) {
29
+ parts.push(serializeInline(child));
30
+ }
31
+ }
32
+ return parts.join("");
33
+ }
34
+ function serializeBlock(el, indent = "") {
35
+ if (el instanceof Y.XmlText) {
36
+ return serializeDelta(el.toDelta());
37
+ }
38
+ const name = el.nodeName;
39
+ switch (name) {
40
+ case "documentHeader":
41
+ case "documentMeta":
42
+ return "";
43
+ case "heading": {
44
+ const level = Number(el.getAttribute("level") ?? 2);
45
+ const hashes = "#".repeat(level);
46
+ return `${hashes} ${serializeInline(el)}`;
47
+ }
48
+ case "paragraph":
49
+ return serializeInline(el);
50
+ case "bulletList":
51
+ return serializeListItems(el, "bullet", indent);
52
+ case "orderedList":
53
+ return serializeListItems(el, "ordered", indent);
54
+ case "taskList":
55
+ return serializeTaskList(el, indent);
56
+ case "codeBlock": {
57
+ const lang = el.getAttribute("language") ?? "";
58
+ const code = getCodeBlockText(el);
59
+ return `\`\`\`${lang}
60
+ ${code}
61
+ \`\`\``;
62
+ }
63
+ case "blockquote": {
64
+ const lines = [];
65
+ for (const child of el.toArray()) {
66
+ if (child instanceof Y.XmlElement) {
67
+ const text = serializeBlock(child);
68
+ for (const line of text.split("\n")) {
69
+ lines.push(`> ${line}`);
70
+ }
71
+ }
72
+ }
73
+ return lines.join("\n");
74
+ }
75
+ case "table":
76
+ return serializeTable(el);
77
+ case "horizontalRule":
78
+ return "---";
79
+ case "image": {
80
+ const src = el.getAttribute("src") ?? "";
81
+ const alt = el.getAttribute("alt") ?? "";
82
+ return `![${alt}](${src})`;
83
+ }
84
+ case "fileBlock": {
85
+ const uploadId = el.getAttribute("uploadId") ?? "";
86
+ const filename = el.getAttribute("filename") ?? "file";
87
+ if (uploadId) return `<!--fileblock:${uploadId}:${filename}-->`;
88
+ return `<!-- file: ${filename} -->`;
89
+ }
90
+ default:
91
+ return serializeChildren(el);
92
+ }
93
+ }
94
+ function serializeChildren(el) {
95
+ const blocks = [];
96
+ for (const child of el.toArray()) {
97
+ if (child instanceof Y.XmlElement) {
98
+ const text = serializeBlock(child);
99
+ if (text) blocks.push(text);
100
+ } else if (child instanceof Y.XmlText) {
101
+ const text = serializeDelta(child.toDelta());
102
+ if (text) blocks.push(text);
103
+ }
104
+ }
105
+ return blocks.join("\n\n");
106
+ }
107
+ function serializeListItems(el, type, indent) {
108
+ const lines = [];
109
+ let counter = 1;
110
+ for (const child of el.toArray()) {
111
+ if (!(child instanceof Y.XmlElement) || child.nodeName !== "listItem") continue;
112
+ const prefix = type === "bullet" ? "- " : `${counter++}. `;
113
+ const subParts = [];
114
+ for (const sub of child.toArray()) {
115
+ if (!(sub instanceof Y.XmlElement)) continue;
116
+ if (sub.nodeName === "bulletList") {
117
+ subParts.push(serializeListItems(sub, "bullet", indent + " "));
118
+ } else if (sub.nodeName === "orderedList") {
119
+ subParts.push(serializeListItems(sub, "ordered", indent + " "));
120
+ } else {
121
+ subParts.push(serializeInline(sub));
122
+ }
123
+ }
124
+ if (subParts.length <= 1) {
125
+ lines.push(`${indent}${prefix}${subParts[0] ?? ""}`);
126
+ } else {
127
+ lines.push(`${indent}${prefix}${subParts[0] ?? ""}`);
128
+ for (let i = 1; i < subParts.length; i++) {
129
+ lines.push(subParts[i]);
130
+ }
131
+ }
132
+ }
133
+ return lines.join("\n");
134
+ }
135
+ function serializeTaskList(el, indent) {
136
+ const lines = [];
137
+ for (const child of el.toArray()) {
138
+ if (!(child instanceof Y.XmlElement) || child.nodeName !== "taskItem") continue;
139
+ const checked = child.getAttribute("checked");
140
+ const marker = checked === true || checked === "true" ? "[x]" : "[ ]";
141
+ const text = child.toArray().filter((c) => c instanceof Y.XmlElement).map((c) => serializeInline(c)).join("");
142
+ lines.push(`${indent}- ${marker} ${text}`);
143
+ }
144
+ return lines.join("\n");
145
+ }
146
+ function getCodeBlockText(el) {
147
+ for (const child of el.toArray()) {
148
+ if (child instanceof Y.XmlText) {
149
+ return child.toString();
150
+ }
151
+ }
152
+ return "";
153
+ }
154
+ function serializeTable(el) {
155
+ const rows = el.toArray().filter((c) => c instanceof Y.XmlElement);
156
+ if (!rows.length) return "";
157
+ const serializedRows = [];
158
+ for (const row of rows) {
159
+ const cells = row.toArray().filter((c) => c instanceof Y.XmlElement).map((cell) => {
160
+ return cell.toArray().filter((c) => c instanceof Y.XmlElement).map((c) => serializeInline(c)).join(" ");
161
+ });
162
+ serializedRows.push(cells);
163
+ }
164
+ if (!serializedRows.length) return "";
165
+ const colCount = Math.max(...serializedRows.map((r) => r.length));
166
+ const headerRow = serializedRows[0];
167
+ const separator = Array(colCount).fill("---");
168
+ const dataRows = serializedRows.slice(1);
169
+ const formatRow = (cells) => {
170
+ const padded = Array(colCount).fill("").map((_, i) => cells[i] ?? "");
171
+ return `| ${padded.join(" | ")} |`;
172
+ };
173
+ const lines = [formatRow(headerRow), formatRow(separator), ...dataRows.map(formatRow)];
174
+ return lines.join("\n");
175
+ }
176
+ function generateFrontmatter(label, meta, type) {
177
+ const lines = [];
178
+ lines.push(`title: "${escapeYaml(label)}"`);
179
+ if (type && type !== "doc") lines.push(`type: ${type}`);
180
+ if (!meta) return `---
181
+ ${lines.join("\n")}
182
+ ---`;
183
+ if (meta.tags?.length) lines.push(`tags: [${meta.tags.join(", ")}]`);
184
+ if (meta.color) lines.push(`color: ${meta.color}`);
185
+ if (meta.icon) lines.push(`icon: ${meta.icon}`);
186
+ if (meta.status) lines.push(`status: ${meta.status}`);
187
+ if (meta.priority !== void 0 && meta.priority !== 0) {
188
+ const map = { 1: "low", 2: "medium", 3: "high", 4: "urgent" };
189
+ lines.push(`priority: ${map[meta.priority] ?? meta.priority}`);
190
+ }
191
+ if (meta.checked !== void 0) lines.push(`checked: ${meta.checked}`);
192
+ if (meta.dateStart) lines.push(`date: ${meta.dateStart}`);
193
+ if (meta.dateEnd) lines.push(`due: ${meta.dateEnd}`);
194
+ if (meta.subtitle) lines.push(`description: "${escapeYaml(meta.subtitle)}"`);
195
+ if (meta.url) lines.push(`url: ${meta.url}`);
196
+ if (meta.rating !== void 0 && meta.rating !== 0) lines.push(`rating: ${meta.rating}`);
197
+ return `---
198
+ ${lines.join("\n")}
199
+ ---`;
200
+ }
201
+ function escapeYaml(s) {
202
+ return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
203
+ }
204
+ function escapeHtml(s) {
205
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
206
+ }
207
+ function serializeDeltaToHtml(delta) {
208
+ let result = "";
209
+ for (const op of delta) {
210
+ if (typeof op.insert !== "string") continue;
211
+ let text = escapeHtml(op.insert);
212
+ const attrs = op.attributes ?? {};
213
+ if (attrs.code) text = `<code>${text}</code>`;
214
+ if (attrs.bold) text = `<strong>${text}</strong>`;
215
+ if (attrs.italic) text = `<em>${text}</em>`;
216
+ if (attrs.strike) text = `<s>${text}</s>`;
217
+ if (attrs.link) {
218
+ const href = escapeHtml(attrs.link.href ?? "");
219
+ text = `<a href="${href}">${text}</a>`;
220
+ }
221
+ result += text;
222
+ }
223
+ return result;
224
+ }
225
+ function serializeInlineHtml(el) {
226
+ const parts = [];
227
+ for (const child of el.toArray()) {
228
+ if (child instanceof Y.XmlText) {
229
+ parts.push(serializeDeltaToHtml(child.toDelta()));
230
+ } else if (child instanceof Y.XmlElement) {
231
+ parts.push(serializeInlineHtml(child));
232
+ }
233
+ }
234
+ return parts.join("");
235
+ }
236
+ function serializeBlockToHtml(el) {
237
+ if (el instanceof Y.XmlText) {
238
+ return serializeDeltaToHtml(el.toDelta());
239
+ }
240
+ const name = el.nodeName;
241
+ switch (name) {
242
+ case "documentHeader":
243
+ case "documentMeta":
244
+ return "";
245
+ case "heading": {
246
+ const level = Number(el.getAttribute("level") ?? 2);
247
+ return `<h${level}>${serializeInlineHtml(el)}</h${level}>`;
248
+ }
249
+ case "paragraph":
250
+ return `<p>${serializeInlineHtml(el)}</p>`;
251
+ case "bulletList":
252
+ return `<ul>${el.toArray().filter((c) => c instanceof Y.XmlElement && c.nodeName === "listItem").map((li) => `<li>${li.toArray().filter((c) => c instanceof Y.XmlElement).map((c) => serializeBlockToHtml(c)).join("")}</li>`).join("\n")}</ul>`;
253
+ case "orderedList":
254
+ return `<ol>${el.toArray().filter((c) => c instanceof Y.XmlElement && c.nodeName === "listItem").map((li) => `<li>${li.toArray().filter((c) => c instanceof Y.XmlElement).map((c) => serializeBlockToHtml(c)).join("")}</li>`).join("\n")}</ol>`;
255
+ case "codeBlock": {
256
+ const lang = el.getAttribute("language") ?? "";
257
+ const code = escapeHtml(getCodeBlockText(el));
258
+ return lang ? `<pre><code class="language-${lang}">${code}</code></pre>` : `<pre><code>${code}</code></pre>`;
259
+ }
260
+ case "blockquote": {
261
+ const inner = el.toArray().filter((c) => c instanceof Y.XmlElement).map((c) => serializeBlockToHtml(c)).join("\n");
262
+ return `<blockquote>
263
+ ${inner}
264
+ </blockquote>`;
265
+ }
266
+ case "table": {
267
+ const rows = el.toArray().filter((c) => c instanceof Y.XmlElement);
268
+ if (!rows.length) return "";
269
+ const htmlRows = rows.map((row, ri) => {
270
+ const tag = ri === 0 ? "th" : "td";
271
+ const cells = row.toArray().filter((c) => c instanceof Y.XmlElement).map((cell) => {
272
+ const inner = cell.toArray().filter((c) => c instanceof Y.XmlElement).map((c) => serializeInlineHtml(c)).join("");
273
+ return `<${tag}>${inner}</${tag}>`;
274
+ }).join("");
275
+ return `<tr>${cells}</tr>`;
276
+ });
277
+ return `<table>
278
+ ${htmlRows.join("\n")}
279
+ </table>`;
280
+ }
281
+ case "horizontalRule":
282
+ return "<hr>";
283
+ case "image": {
284
+ const src = el.getAttribute("src") ?? "";
285
+ const alt = el.getAttribute("alt") ?? "";
286
+ return `<img src="${escapeHtml(src)}" alt="${escapeHtml(alt)}">`;
287
+ }
288
+ case "fileBlock": {
289
+ const uploadId = el.getAttribute("uploadId") ?? "";
290
+ const filename = el.getAttribute("filename") ?? "file";
291
+ if (uploadId) return `<!--fileblock:${uploadId}:${filename}-->`;
292
+ return `<!-- file: ${filename} -->`;
293
+ }
294
+ default: {
295
+ const inner = el.toArray().filter((c) => c instanceof Y.XmlElement || c instanceof Y.XmlText).map((c) => c instanceof Y.XmlElement ? serializeBlockToHtml(c) : serializeDeltaToHtml(c.toDelta())).join("\n");
296
+ return `<div data-type="${name}">
297
+ ${inner}
298
+ </div>`;
299
+ }
300
+ }
301
+ }
302
+ export function yjsToMarkdown(fragment, label, meta, type) {
303
+ const frontmatter = generateFrontmatter(label, meta, type);
304
+ const body = serializeChildren(fragment);
305
+ return `${frontmatter}
306
+
307
+ ${body}
308
+ `;
309
+ }
310
+ export function yjsToHtml(fragment, label) {
311
+ const title = escapeHtml(label);
312
+ const bodyParts = [];
313
+ for (const child of fragment.toArray()) {
314
+ if (child instanceof Y.XmlElement) {
315
+ const html = serializeBlockToHtml(child);
316
+ if (html) bodyParts.push(html);
317
+ }
318
+ }
319
+ return `<!DOCTYPE html>
320
+ <html>
321
+ <head><meta charset="utf-8"><title>${title}</title></head>
322
+ <body>
323
+ <h1>${title}</h1>
324
+ ${bodyParts.join("\n")}
325
+ </body>
326
+ </html>
327
+ `;
328
+ }
329
+ export function yjsToPlainText(fragment) {
330
+ return serializeChildren(fragment);
331
+ }
@@ -0,0 +1,13 @@
1
+ export { type AbracadabraPlugin, type AbracadabraState, type CachedTreeNode, type DocCacheAPI, type DocPageMeta, type RunnerCleanup, type ServerRunnerContext, type ServerRunnerDefinition, type TreeEntry, type UserMetaField } from '../dist/runtime/types.js'
2
+
3
+ export { type AbracadabraLocale } from '../dist/runtime/locale.js'
4
+
5
+ export { type avatarBorderStyle, type avatarGradient, type avatarStyleFromName } from '../dist/runtime/utils/avatarStyle.js'
6
+
7
+ export { type COLOR_PALETTES, type ColorPalette, type ColorShade, type findPaletteByHex } from '../dist/runtime/utils/colorPalettes.js'
8
+
9
+ export { type META_FIELD_DEFINITIONS, type MetaFieldDefinition } from '../dist/runtime/utils/metaFieldDefinitions.js'
10
+
11
+ export { default } from './module.mjs'
12
+
13
+ export { type ModuleOptions } from './module.mjs'
package/package.json ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "@abraca/nuxt",
3
+ "version": "0.1.0",
4
+ "description": "First-class Nuxt module for the Abracadabra CRDT collaboration platform",
5
+ "repository": "abracadabra/abracadabra-nuxt",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/types.d.mts",
11
+ "import": "./dist/module.mjs"
12
+ }
13
+ },
14
+ "main": "./dist/module.mjs",
15
+ "typesVersions": {
16
+ "*": {
17
+ ".": [
18
+ "./dist/types.d.mts"
19
+ ]
20
+ }
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "dependencies": {
29
+ "@nuxt/kit": "^4.4.2",
30
+ "@vueuse/core": "^13.0.0",
31
+ "defu": "^6.1.4",
32
+ "nanoevents": "^9.0.0"
33
+ },
34
+ "peerDependencies": {
35
+ "@abraca/dabra": ">=1.0.0",
36
+ "jszip": ">=3.0.0",
37
+ "@noble/ed25519": ">=2.0.0",
38
+ "@noble/hashes": ">=1.0.0",
39
+ "@nuxt/ui": ">=3.0.0",
40
+ "@tiptap/core": ">=3.0.0",
41
+ "@tiptap/extension-collaboration": ">=3.0.0",
42
+ "@tiptap/extension-collaboration-caret": ">=3.0.0",
43
+ "@tiptap/vue-3": ">=3.0.0",
44
+ "nuxt": ">=4.0.0",
45
+ "vue": ">=3.4.0",
46
+ "yjs": ">=13.0.0"
47
+ },
48
+ "peerDependenciesMeta": {
49
+ "jszip": {
50
+ "optional": true
51
+ },
52
+ "@tiptap/core": {
53
+ "optional": false
54
+ },
55
+ "@tiptap/extension-collaboration": {
56
+ "optional": false
57
+ },
58
+ "@tiptap/extension-collaboration-caret": {
59
+ "optional": false
60
+ },
61
+ "@tiptap/vue-3": {
62
+ "optional": false
63
+ }
64
+ },
65
+ "devDependencies": {
66
+ "@abraca/dabra": "file:../abracadabra-ts/packages/provider",
67
+ "@noble/ed25519": "^2.1.0",
68
+ "@noble/hashes": "^1.7.1",
69
+ "@nuxt/devtools": "^3.2.3",
70
+ "@nuxt/eslint-config": "^1.15.2",
71
+ "@nuxt/module-builder": "^1.0.2",
72
+ "@nuxt/schema": "^4.4.2",
73
+ "@nuxt/test-utils": "^4.0.0",
74
+ "@nuxt/ui": "^4.0.0",
75
+ "@tiptap/core": "^3.0.0",
76
+ "@tiptap/extension-collaboration": "^3.0.0",
77
+ "@tiptap/extension-collaboration-caret": "^3.0.0",
78
+ "@tiptap/vue-3": "^3.0.0",
79
+ "@types/node": "latest",
80
+ "changelogen": "^0.6.2",
81
+ "eslint": "^10.0.3",
82
+ "nuxt": "^4.4.2",
83
+ "tslib": "^2.8.1",
84
+ "typescript": "~5.9.3",
85
+ "vitest": "^4.1.0",
86
+ "vue": "^3.5.0",
87
+ "vue-tsc": "^3.2.5",
88
+ "yjs": "^13.6.27"
89
+ },
90
+ "scripts": {
91
+ "dev": "npm run dev:prepare && nuxt dev playground",
92
+ "dev:build": "nuxt build playground",
93
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxt prepare playground",
94
+ "release": "npm run lint && npm run prepack",
95
+ "lint": "eslint .",
96
+ "test": "vitest run",
97
+ "test:watch": "vitest watch",
98
+ "test:types": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit"
99
+ }
100
+ }