@crowi/api 2.0.0-alpha.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 (887) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app.d.ts +8 -0
  3. package/dist/app.js +65 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/collab/attach.d.ts +33 -0
  6. package/dist/collab/attach.js +341 -0
  7. package/dist/collab/attach.js.map +1 -0
  8. package/dist/collab/extension-redis.d.ts +25 -0
  9. package/dist/collab/extension-redis.js +133 -0
  10. package/dist/collab/extension-redis.js.map +1 -0
  11. package/dist/common/functions/path2name.d.ts +1 -0
  12. package/dist/common/functions/path2name.js +22 -0
  13. package/dist/common/functions/path2name.js.map +1 -0
  14. package/dist/common/functions/renderIcon.d.ts +1 -0
  15. package/dist/common/functions/renderIcon.js +9 -0
  16. package/dist/common/functions/renderIcon.js.map +1 -0
  17. package/dist/controllers/admin.d.ts +3 -0
  18. package/dist/controllers/admin.js +474 -0
  19. package/dist/controllers/admin.js.map +1 -0
  20. package/dist/controllers/attachment.d.ts +4 -0
  21. package/dist/controllers/attachment.js +200 -0
  22. package/dist/controllers/attachment.js.map +1 -0
  23. package/dist/controllers/backlink.d.ts +3 -0
  24. package/dist/controllers/backlink.js +42 -0
  25. package/dist/controllers/backlink.js.map +1 -0
  26. package/dist/controllers/bookmark.d.ts +3 -0
  27. package/dist/controllers/bookmark.js +100 -0
  28. package/dist/controllers/bookmark.js.map +1 -0
  29. package/dist/controllers/comment.d.ts +3 -0
  30. package/dist/controllers/comment.js +111 -0
  31. package/dist/controllers/comment.js.map +1 -0
  32. package/dist/controllers/index.d.ts +25 -0
  33. package/dist/controllers/index.js +44 -0
  34. package/dist/controllers/index.js.map +1 -0
  35. package/dist/controllers/installer.d.ts +3 -0
  36. package/dist/controllers/installer.js +48 -0
  37. package/dist/controllers/installer.js.map +1 -0
  38. package/dist/controllers/login.d.ts +4 -0
  39. package/dist/controllers/login.js +438 -0
  40. package/dist/controllers/login.js.map +1 -0
  41. package/dist/controllers/logout.d.ts +5 -0
  42. package/dist/controllers/logout.js +11 -0
  43. package/dist/controllers/logout.js.map +1 -0
  44. package/dist/controllers/me.d.ts +4 -0
  45. package/dist/controllers/me.js +369 -0
  46. package/dist/controllers/me.js.map +1 -0
  47. package/dist/controllers/notification.d.ts +3 -0
  48. package/dist/controllers/notification.js +88 -0
  49. package/dist/controllers/notification.js.map +1 -0
  50. package/dist/controllers/page.d.ts +3 -0
  51. package/dist/controllers/page.js +881 -0
  52. package/dist/controllers/page.js.map +1 -0
  53. package/dist/controllers/revision.d.ts +3 -0
  54. package/dist/controllers/revision.js +91 -0
  55. package/dist/controllers/revision.js.map +1 -0
  56. package/dist/controllers/search.d.ts +3 -0
  57. package/dist/controllers/search.js +93 -0
  58. package/dist/controllers/search.js.map +1 -0
  59. package/dist/controllers/share.d.ts +3 -0
  60. package/dist/controllers/share.js +207 -0
  61. package/dist/controllers/share.js.map +1 -0
  62. package/dist/controllers/shareAccess.d.ts +3 -0
  63. package/dist/controllers/shareAccess.js +28 -0
  64. package/dist/controllers/shareAccess.js.map +1 -0
  65. package/dist/controllers/slack.d.ts +3 -0
  66. package/dist/controllers/slack.js +87 -0
  67. package/dist/controllers/slack.js.map +1 -0
  68. package/dist/controllers/tokenAuth.d.ts +10 -0
  69. package/dist/controllers/tokenAuth.js +292 -0
  70. package/dist/controllers/tokenAuth.js.map +1 -0
  71. package/dist/controllers/user.d.ts +3 -0
  72. package/dist/controllers/user.js +67 -0
  73. package/dist/controllers/user.js.map +1 -0
  74. package/dist/controllers/version.d.ts +4 -0
  75. package/dist/controllers/version.js +19 -0
  76. package/dist/controllers/version.js.map +1 -0
  77. package/dist/crowi/express-init.d.ts +4 -0
  78. package/dist/crowi/express-init.js +101 -0
  79. package/dist/crowi/express-init.js.map +1 -0
  80. package/dist/crowi/index.d.ts +245 -0
  81. package/dist/crowi/index.js +726 -0
  82. package/dist/crowi/index.js.map +1 -0
  83. package/dist/events/activity.d.ts +7 -0
  84. package/dist/events/activity.js +15 -0
  85. package/dist/events/activity.js.map +1 -0
  86. package/dist/events/bookmark.d.ts +8 -0
  87. package/dist/events/bookmark.js +16 -0
  88. package/dist/events/bookmark.js.map +1 -0
  89. package/dist/events/comment.d.ts +6 -0
  90. package/dist/events/comment.js +14 -0
  91. package/dist/events/comment.js.map +1 -0
  92. package/dist/events/config.d.ts +6 -0
  93. package/dist/events/config.js +12 -0
  94. package/dist/events/config.js.map +1 -0
  95. package/dist/events/index.d.ts +17 -0
  96. package/dist/events/index.js +22 -0
  97. package/dist/events/index.js.map +1 -0
  98. package/dist/events/mention-dispatch.d.ts +44 -0
  99. package/dist/events/mention-dispatch.js +151 -0
  100. package/dist/events/mention-dispatch.js.map +1 -0
  101. package/dist/events/notification.d.ts +7 -0
  102. package/dist/events/notification.js +15 -0
  103. package/dist/events/notification.js.map +1 -0
  104. package/dist/events/page.d.ts +44 -0
  105. package/dist/events/page.js +134 -0
  106. package/dist/events/page.js.map +1 -0
  107. package/dist/events/render-cache.d.ts +24 -0
  108. package/dist/events/render-cache.js +63 -0
  109. package/dist/events/render-cache.js.map +1 -0
  110. package/dist/events/user.d.ts +9 -0
  111. package/dist/events/user.js +39 -0
  112. package/dist/events/user.js.map +1 -0
  113. package/dist/form/admin/app.d.ts +2 -0
  114. package/dist/form/admin/app.js +9 -0
  115. package/dist/form/admin/app.js.map +1 -0
  116. package/dist/form/admin/auth.d.ts +2 -0
  117. package/dist/form/admin/auth.js +9 -0
  118. package/dist/form/admin/auth.js.map +1 -0
  119. package/dist/form/admin/aws.d.ts +2 -0
  120. package/dist/form/admin/aws.js +13 -0
  121. package/dist/form/admin/aws.js.map +1 -0
  122. package/dist/form/admin/github.d.ts +2 -0
  123. package/dist/form/admin/github.js +15 -0
  124. package/dist/form/admin/github.js.map +1 -0
  125. package/dist/form/admin/google.d.ts +2 -0
  126. package/dist/form/admin/google.js +13 -0
  127. package/dist/form/admin/google.js.map +1 -0
  128. package/dist/form/admin/mail.d.ts +2 -0
  129. package/dist/form/admin/mail.js +13 -0
  130. package/dist/form/admin/mail.js.map +1 -0
  131. package/dist/form/admin/sec.d.ts +2 -0
  132. package/dist/form/admin/sec.js +10 -0
  133. package/dist/form/admin/sec.js.map +1 -0
  134. package/dist/form/admin/slackSetting.d.ts +2 -0
  135. package/dist/form/admin/slackSetting.js +13 -0
  136. package/dist/form/admin/slackSetting.js.map +1 -0
  137. package/dist/form/admin/userEdit.d.ts +2 -0
  138. package/dist/form/admin/userEdit.js +9 -0
  139. package/dist/form/admin/userEdit.js.map +1 -0
  140. package/dist/form/admin/userInvite.d.ts +2 -0
  141. package/dist/form/admin/userInvite.js +9 -0
  142. package/dist/form/admin/userInvite.js.map +1 -0
  143. package/dist/form/comment.d.ts +2 -0
  144. package/dist/form/comment.js +9 -0
  145. package/dist/form/comment.js.map +1 -0
  146. package/dist/form/index.d.ts +25 -0
  147. package/dist/form/index.js +48 -0
  148. package/dist/form/index.js.map +1 -0
  149. package/dist/form/invited.d.ts +2 -0
  150. package/dist/form/invited.js +13 -0
  151. package/dist/form/invited.js.map +1 -0
  152. package/dist/form/login.d.ts +2 -0
  153. package/dist/form/login.js +11 -0
  154. package/dist/form/login.js.map +1 -0
  155. package/dist/form/me/apiToken.d.ts +2 -0
  156. package/dist/form/me/apiToken.js +9 -0
  157. package/dist/form/me/apiToken.js.map +1 -0
  158. package/dist/form/me/password.d.ts +2 -0
  159. package/dist/form/me/password.js +11 -0
  160. package/dist/form/me/password.js.map +1 -0
  161. package/dist/form/me/user.d.ts +2 -0
  162. package/dist/form/me/user.js +9 -0
  163. package/dist/form/me/user.js.map +1 -0
  164. package/dist/form/register.d.ts +2 -0
  165. package/dist/form/register.js +13 -0
  166. package/dist/form/register.js.map +1 -0
  167. package/dist/form/revision.d.ts +2 -0
  168. package/dist/form/revision.js +13 -0
  169. package/dist/form/revision.js.map +1 -0
  170. package/dist/hono/app.d.ts +19 -0
  171. package/dist/hono/app.js +21 -0
  172. package/dist/hono/app.js.map +1 -0
  173. package/dist/hono/handlers/_helpers/errors.d.ts +61 -0
  174. package/dist/hono/handlers/_helpers/errors.js +51 -0
  175. package/dist/hono/handlers/_helpers/errors.js.map +1 -0
  176. package/dist/hono/handlers/_helpers/user-shape.d.ts +46 -0
  177. package/dist/hono/handlers/_helpers/user-shape.js +23 -0
  178. package/dist/hono/handlers/_helpers/user-shape.js.map +1 -0
  179. package/dist/hono/handlers/access-token.d.ts +221 -0
  180. package/dist/hono/handlers/access-token.js +113 -0
  181. package/dist/hono/handlers/access-token.js.map +1 -0
  182. package/dist/hono/handlers/activation.d.ts +117 -0
  183. package/dist/hono/handlers/activation.js +77 -0
  184. package/dist/hono/handlers/activation.js.map +1 -0
  185. package/dist/hono/handlers/admin/app.d.ts +123 -0
  186. package/dist/hono/handlers/admin/app.js +76 -0
  187. package/dist/hono/handlers/admin/app.js.map +1 -0
  188. package/dist/hono/handlers/admin/auth.d.ts +127 -0
  189. package/dist/hono/handlers/admin/auth.js +91 -0
  190. package/dist/hono/handlers/admin/auth.js.map +1 -0
  191. package/dist/hono/handlers/admin/mail.d.ts +168 -0
  192. package/dist/hono/handlers/admin/mail.js +76 -0
  193. package/dist/hono/handlers/admin/mail.js.map +1 -0
  194. package/dist/hono/handlers/admin/plugins.d.ts +409 -0
  195. package/dist/hono/handlers/admin/plugins.js +257 -0
  196. package/dist/hono/handlers/admin/plugins.js.map +1 -0
  197. package/dist/hono/handlers/admin/search.d.ts +57 -0
  198. package/dist/hono/handlers/admin/search.js +55 -0
  199. package/dist/hono/handlers/admin/search.js.map +1 -0
  200. package/dist/hono/handlers/admin/security.d.ts +112 -0
  201. package/dist/hono/handlers/admin/security.js +71 -0
  202. package/dist/hono/handlers/admin/security.js.map +1 -0
  203. package/dist/hono/handlers/admin/share.d.ts +106 -0
  204. package/dist/hono/handlers/admin/share.js +55 -0
  205. package/dist/hono/handlers/admin/share.js.map +1 -0
  206. package/dist/hono/handlers/admin/storage.d.ts +55 -0
  207. package/dist/hono/handlers/admin/storage.js +40 -0
  208. package/dist/hono/handlers/admin/storage.js.map +1 -0
  209. package/dist/hono/handlers/admin/users.d.ts +1230 -0
  210. package/dist/hono/handlers/admin/users.js +316 -0
  211. package/dist/hono/handlers/admin/users.js.map +1 -0
  212. package/dist/hono/handlers/adminCrypto.d.ts +110 -0
  213. package/dist/hono/handlers/adminCrypto.js +151 -0
  214. package/dist/hono/handlers/adminCrypto.js.map +1 -0
  215. package/dist/hono/handlers/app.d.ts +26 -0
  216. package/dist/hono/handlers/app.js +34 -0
  217. package/dist/hono/handlers/app.js.map +1 -0
  218. package/dist/hono/handlers/attachment-stream.d.ts +4 -0
  219. package/dist/hono/handlers/attachment-stream.js +211 -0
  220. package/dist/hono/handlers/attachment-stream.js.map +1 -0
  221. package/dist/hono/handlers/attachment.d.ts +687 -0
  222. package/dist/hono/handlers/attachment.js +566 -0
  223. package/dist/hono/handlers/attachment.js.map +1 -0
  224. package/dist/hono/handlers/autocomplete.d.ts +160 -0
  225. package/dist/hono/handlers/autocomplete.js +181 -0
  226. package/dist/hono/handlers/autocomplete.js.map +1 -0
  227. package/dist/hono/handlers/backlink.d.ts +78 -0
  228. package/dist/hono/handlers/backlink.js +93 -0
  229. package/dist/hono/handlers/backlink.js.map +1 -0
  230. package/dist/hono/handlers/bookmark.d.ts +558 -0
  231. package/dist/hono/handlers/bookmark.js +166 -0
  232. package/dist/hono/handlers/bookmark.js.map +1 -0
  233. package/dist/hono/handlers/comment.d.ts +231 -0
  234. package/dist/hono/handlers/comment.js +191 -0
  235. package/dist/hono/handlers/comment.js.map +1 -0
  236. package/dist/hono/handlers/draft.d.ts +136 -0
  237. package/dist/hono/handlers/draft.js +191 -0
  238. package/dist/hono/handlers/draft.js.map +1 -0
  239. package/dist/hono/handlers/emailChange.d.ts +124 -0
  240. package/dist/hono/handlers/emailChange.js +79 -0
  241. package/dist/hono/handlers/emailChange.js.map +1 -0
  242. package/dist/hono/handlers/installer.d.ts +94 -0
  243. package/dist/hono/handlers/installer.js +93 -0
  244. package/dist/hono/handlers/installer.js.map +1 -0
  245. package/dist/hono/handlers/inviteAccept.d.ts +180 -0
  246. package/dist/hono/handlers/inviteAccept.js +94 -0
  247. package/dist/hono/handlers/inviteAccept.js.map +1 -0
  248. package/dist/hono/handlers/me.d.ts +401 -0
  249. package/dist/hono/handlers/me.js +390 -0
  250. package/dist/hono/handlers/me.js.map +1 -0
  251. package/dist/hono/handlers/notification.d.ts +274 -0
  252. package/dist/hono/handlers/notification.js +224 -0
  253. package/dist/hono/handlers/notification.js.map +1 -0
  254. package/dist/hono/handlers/oauth.d.ts +299 -0
  255. package/dist/hono/handlers/oauth.js +443 -0
  256. package/dist/hono/handlers/oauth.js.map +1 -0
  257. package/dist/hono/handlers/page-collab.d.ts +79 -0
  258. package/dist/hono/handlers/page-collab.js +98 -0
  259. package/dist/hono/handlers/page-collab.js.map +1 -0
  260. package/dist/hono/handlers/page-preview.d.ts +48 -0
  261. package/dist/hono/handlers/page-preview.js +83 -0
  262. package/dist/hono/handlers/page-preview.js.map +1 -0
  263. package/dist/hono/handlers/page.d.ts +2059 -0
  264. package/dist/hono/handlers/page.js +793 -0
  265. package/dist/hono/handlers/page.js.map +1 -0
  266. package/dist/hono/handlers/passwordReset.d.ts +181 -0
  267. package/dist/hono/handlers/passwordReset.js +101 -0
  268. package/dist/hono/handlers/passwordReset.js.map +1 -0
  269. package/dist/hono/handlers/presence.d.ts +178 -0
  270. package/dist/hono/handlers/presence.js +163 -0
  271. package/dist/hono/handlers/presence.js.map +1 -0
  272. package/dist/hono/handlers/revision.d.ts +345 -0
  273. package/dist/hono/handlers/revision.js +202 -0
  274. package/dist/hono/handlers/revision.js.map +1 -0
  275. package/dist/hono/handlers/search.d.ts +208 -0
  276. package/dist/hono/handlers/search.js +152 -0
  277. package/dist/hono/handlers/search.js.map +1 -0
  278. package/dist/hono/handlers/tokenAuth.d.ts +369 -0
  279. package/dist/hono/handlers/tokenAuth.js +240 -0
  280. package/dist/hono/handlers/tokenAuth.js.map +1 -0
  281. package/dist/hono/handlers/user.d.ts +710 -0
  282. package/dist/hono/handlers/user.js +212 -0
  283. package/dist/hono/handlers/user.js.map +1 -0
  284. package/dist/hono/index.d.ts +289 -0
  285. package/dist/hono/index.js +240 -0
  286. package/dist/hono/index.js.map +1 -0
  287. package/dist/hono/middleware/admin.d.ts +5 -0
  288. package/dist/hono/middleware/admin.js +34 -0
  289. package/dist/hono/middleware/admin.js.map +1 -0
  290. package/dist/hono/middleware/auth.d.ts +54 -0
  291. package/dist/hono/middleware/auth.js +142 -0
  292. package/dist/hono/middleware/auth.js.map +1 -0
  293. package/dist/hono/middleware/cors.d.ts +3 -0
  294. package/dist/hono/middleware/cors.js +86 -0
  295. package/dist/hono/middleware/cors.js.map +1 -0
  296. package/dist/hono/middleware/default-hook.d.ts +8 -0
  297. package/dist/hono/middleware/default-hook.js +17 -0
  298. package/dist/hono/middleware/default-hook.js.map +1 -0
  299. package/dist/hono/middleware/error-handler.d.ts +2 -0
  300. package/dist/hono/middleware/error-handler.js +20 -0
  301. package/dist/hono/middleware/error-handler.js.map +1 -0
  302. package/dist/hono/middleware/rate-limit.d.ts +57 -0
  303. package/dist/hono/middleware/rate-limit.js +42 -0
  304. package/dist/hono/middleware/rate-limit.js.map +1 -0
  305. package/dist/hono/middleware/require-scope.d.ts +50 -0
  306. package/dist/hono/middleware/require-scope.js +64 -0
  307. package/dist/hono/middleware/require-scope.js.map +1 -0
  308. package/dist/hono/path-rewrite.d.ts +15 -0
  309. package/dist/hono/path-rewrite.js +59 -0
  310. package/dist/hono/path-rewrite.js.map +1 -0
  311. package/dist/mail/i18n/en.d.ts +2 -0
  312. package/dist/mail/i18n/en.js +66 -0
  313. package/dist/mail/i18n/en.js.map +1 -0
  314. package/dist/mail/i18n/index.d.ts +46 -0
  315. package/dist/mail/i18n/index.js +31 -0
  316. package/dist/mail/i18n/index.js.map +1 -0
  317. package/dist/mail/i18n/ja.d.ts +2 -0
  318. package/dist/mail/i18n/ja.js +66 -0
  319. package/dist/mail/i18n/ja.js.map +1 -0
  320. package/dist/mcp/attach.d.ts +25 -0
  321. package/dist/mcp/attach.js +104 -0
  322. package/dist/mcp/attach.js.map +1 -0
  323. package/dist/mcp/dispatch.d.ts +59 -0
  324. package/dist/mcp/dispatch.js +70 -0
  325. package/dist/mcp/dispatch.js.map +1 -0
  326. package/dist/mcp/result.d.ts +40 -0
  327. package/dist/mcp/result.js +78 -0
  328. package/dist/mcp/result.js.map +1 -0
  329. package/dist/mcp/server.d.ts +67 -0
  330. package/dist/mcp/server.js +113 -0
  331. package/dist/mcp/server.js.map +1 -0
  332. package/dist/mcp/tools/page.d.ts +2 -0
  333. package/dist/mcp/tools/page.js +256 -0
  334. package/dist/mcp/tools/page.js.map +1 -0
  335. package/dist/mcp/tools/search.d.ts +2 -0
  336. package/dist/mcp/tools/search.js +36 -0
  337. package/dist/mcp/tools/search.js.map +1 -0
  338. package/dist/middlewares/accessTokenParser.d.ts +4 -0
  339. package/dist/middlewares/accessTokenParser.js +29 -0
  340. package/dist/middlewares/accessTokenParser.js.map +1 -0
  341. package/dist/middlewares/adminRequired.d.ts +10 -0
  342. package/dist/middlewares/adminRequired.js +35 -0
  343. package/dist/middlewares/adminRequired.js.map +1 -0
  344. package/dist/middlewares/applicationInstalled.d.ts +3 -0
  345. package/dist/middlewares/applicationInstalled.js +20 -0
  346. package/dist/middlewares/applicationInstalled.js.map +1 -0
  347. package/dist/middlewares/applicationNotInstalled.d.ts +3 -0
  348. package/dist/middlewares/applicationNotInstalled.js +13 -0
  349. package/dist/middlewares/applicationNotInstalled.js.map +1 -0
  350. package/dist/middlewares/basicAuth.d.ts +4 -0
  351. package/dist/middlewares/basicAuth.js +23 -0
  352. package/dist/middlewares/basicAuth.js.map +1 -0
  353. package/dist/middlewares/csrfVerify.d.ts +4 -0
  354. package/dist/middlewares/csrfVerify.js +24 -0
  355. package/dist/middlewares/csrfVerify.js.map +1 -0
  356. package/dist/middlewares/encodeSpace.d.ts +3 -0
  357. package/dist/middlewares/encodeSpace.js +14 -0
  358. package/dist/middlewares/encodeSpace.js.map +1 -0
  359. package/dist/middlewares/fileAccessRightOrLoginRequired.d.ts +4 -0
  360. package/dist/middlewares/fileAccessRightOrLoginRequired.js +29 -0
  361. package/dist/middlewares/fileAccessRightOrLoginRequired.js.map +1 -0
  362. package/dist/middlewares/index.d.ts +16 -0
  363. package/dist/middlewares/index.js +30 -0
  364. package/dist/middlewares/index.js.map +1 -0
  365. package/dist/middlewares/jwtAdminRequired.d.ts +8 -0
  366. package/dist/middlewares/jwtAdminRequired.js +35 -0
  367. package/dist/middlewares/jwtAdminRequired.js.map +1 -0
  368. package/dist/middlewares/jwtAuth.d.ts +4 -0
  369. package/dist/middlewares/jwtAuth.js +104 -0
  370. package/dist/middlewares/jwtAuth.js.map +1 -0
  371. package/dist/middlewares/loginChecker.d.ts +4 -0
  372. package/dist/middlewares/loginChecker.js +32 -0
  373. package/dist/middlewares/loginChecker.js.map +1 -0
  374. package/dist/middlewares/loginRequired.d.ts +4 -0
  375. package/dist/middlewares/loginRequired.js +88 -0
  376. package/dist/middlewares/loginRequired.js.map +1 -0
  377. package/dist/migration/cli-api.d.ts +83 -0
  378. package/dist/migration/cli-api.js +128 -0
  379. package/dist/migration/cli-api.js.map +1 -0
  380. package/dist/migration/migrations/index.d.ts +12 -0
  381. package/dist/migration/migrations/index.js +24 -0
  382. package/dist/migration/migrations/index.js.map +1 -0
  383. package/dist/migration/migrations/page-status-default.d.ts +25 -0
  384. package/dist/migration/migrations/page-status-default.js +79 -0
  385. package/dist/migration/migrations/page-status-default.js.map +1 -0
  386. package/dist/migration/migrations/revisions-schema-unify.d.ts +33 -0
  387. package/dist/migration/migrations/revisions-schema-unify.js +88 -0
  388. package/dist/migration/migrations/revisions-schema-unify.js.map +1 -0
  389. package/dist/migration/migrations/user-unique-prepare.d.ts +1 -0
  390. package/dist/migration/migrations/user-unique-prepare.js +214 -0
  391. package/dist/migration/migrations/user-unique-prepare.js.map +1 -0
  392. package/dist/migration/migrations/wikilink-format.d.ts +97 -0
  393. package/dist/migration/migrations/wikilink-format.js +418 -0
  394. package/dist/migration/migrations/wikilink-format.js.map +1 -0
  395. package/dist/migration/rebuild-api.d.ts +50 -0
  396. package/dist/migration/rebuild-api.js +45 -0
  397. package/dist/migration/rebuild-api.js.map +1 -0
  398. package/dist/migration/rebuild-runner.d.ts +64 -0
  399. package/dist/migration/rebuild-runner.js +42 -0
  400. package/dist/migration/rebuild-runner.js.map +1 -0
  401. package/dist/migration/rebuilds/index.d.ts +26 -0
  402. package/dist/migration/rebuilds/index.js +69 -0
  403. package/dist/migration/rebuilds/index.js.map +1 -0
  404. package/dist/migration/registry.d.ts +15 -0
  405. package/dist/migration/registry.js +96 -0
  406. package/dist/migration/registry.js.map +1 -0
  407. package/dist/migration/run-boot-migrations.d.ts +31 -0
  408. package/dist/migration/run-boot-migrations.js +95 -0
  409. package/dist/migration/run-boot-migrations.js.map +1 -0
  410. package/dist/migration/runner.d.ts +120 -0
  411. package/dist/migration/runner.js +276 -0
  412. package/dist/migration/runner.js.map +1 -0
  413. package/dist/migration/types.d.ts +153 -0
  414. package/dist/migration/types.js +13 -0
  415. package/dist/migration/types.js.map +1 -0
  416. package/dist/models/activity.d.ts +34 -0
  417. package/dist/models/activity.js +263 -0
  418. package/dist/models/activity.js.map +1 -0
  419. package/dist/models/attachment.d.ts +25 -0
  420. package/dist/models/attachment.js +82 -0
  421. package/dist/models/attachment.js.map +1 -0
  422. package/dist/models/backlink.d.ts +19 -0
  423. package/dist/models/backlink.js +138 -0
  424. package/dist/models/backlink.js.map +1 -0
  425. package/dist/models/bookmark.d.ts +28 -0
  426. package/dist/models/bookmark.js +136 -0
  427. package/dist/models/bookmark.js.map +1 -0
  428. package/dist/models/comment.d.ts +21 -0
  429. package/dist/models/comment.js +87 -0
  430. package/dist/models/comment.js.map +1 -0
  431. package/dist/models/config-sensitive.d.ts +21 -0
  432. package/dist/models/config-sensitive.js +71 -0
  433. package/dist/models/config-sensitive.js.map +1 -0
  434. package/dist/models/config.d.ts +34 -0
  435. package/dist/models/config.js +161 -0
  436. package/dist/models/config.js.map +1 -0
  437. package/dist/models/index.d.ts +30 -0
  438. package/dist/models/index.js +55 -0
  439. package/dist/models/index.js.map +1 -0
  440. package/dist/models/migration-application.d.ts +54 -0
  441. package/dist/models/migration-application.js +36 -0
  442. package/dist/models/migration-application.js.map +1 -0
  443. package/dist/models/notification.d.ts +28 -0
  444. package/dist/models/notification.js +285 -0
  445. package/dist/models/notification.js.map +1 -0
  446. package/dist/models/oauth-authorization-code.d.ts +34 -0
  447. package/dist/models/oauth-authorization-code.js +100 -0
  448. package/dist/models/oauth-authorization-code.js.map +1 -0
  449. package/dist/models/oauth-client.d.ts +36 -0
  450. package/dist/models/oauth-client.js +56 -0
  451. package/dist/models/oauth-client.js.map +1 -0
  452. package/dist/models/oauth-device-code.d.ts +55 -0
  453. package/dist/models/oauth-device-code.js +158 -0
  454. package/dist/models/oauth-device-code.js.map +1 -0
  455. package/dist/models/oauth-refresh-token.d.ts +31 -0
  456. package/dist/models/oauth-refresh-token.js +118 -0
  457. package/dist/models/oauth-refresh-token.js.map +1 -0
  458. package/dist/models/page-yjs-update.d.ts +35 -0
  459. package/dist/models/page-yjs-update.js +33 -0
  460. package/dist/models/page-yjs-update.js.map +1 -0
  461. package/dist/models/page.d.ts +200 -0
  462. package/dist/models/page.js +1117 -0
  463. package/dist/models/page.js.map +1 -0
  464. package/dist/models/personal-access-token.d.ts +30 -0
  465. package/dist/models/personal-access-token.js +107 -0
  466. package/dist/models/personal-access-token.js.map +1 -0
  467. package/dist/models/plugin-render-cache.d.ts +40 -0
  468. package/dist/models/plugin-render-cache.js +39 -0
  469. package/dist/models/plugin-render-cache.js.map +1 -0
  470. package/dist/models/revision.d.ts +145 -0
  471. package/dist/models/revision.js +241 -0
  472. package/dist/models/revision.js.map +1 -0
  473. package/dist/models/share.d.ts +38 -0
  474. package/dist/models/share.js +137 -0
  475. package/dist/models/share.js.map +1 -0
  476. package/dist/models/shareAccess.d.ts +20 -0
  477. package/dist/models/shareAccess.js +45 -0
  478. package/dist/models/shareAccess.js.map +1 -0
  479. package/dist/models/tracking.d.ts +14 -0
  480. package/dist/models/tracking.js +14 -0
  481. package/dist/models/tracking.js.map +1 -0
  482. package/dist/models/updatePost.d.ts +25 -0
  483. package/dist/models/updatePost.js +87 -0
  484. package/dist/models/updatePost.js.map +1 -0
  485. package/dist/models/user.d.ts +144 -0
  486. package/dist/models/user.js +681 -0
  487. package/dist/models/user.js.map +1 -0
  488. package/dist/models/watcher.d.ts +23 -0
  489. package/dist/models/watcher.js +75 -0
  490. package/dist/models/watcher.js.map +1 -0
  491. package/dist/notifications/attach.d.ts +63 -0
  492. package/dist/notifications/attach.js +426 -0
  493. package/dist/notifications/attach.js.map +1 -0
  494. package/dist/notifications/channel.d.ts +13 -0
  495. package/dist/notifications/channel.js +18 -0
  496. package/dist/notifications/channel.js.map +1 -0
  497. package/dist/plugin/index.d.ts +2 -0
  498. package/dist/plugin/index.js +6 -0
  499. package/dist/plugin/index.js.map +1 -0
  500. package/dist/plugin/plugin-context.d.ts +22 -0
  501. package/dist/plugin/plugin-context.js +126 -0
  502. package/dist/plugin/plugin-context.js.map +1 -0
  503. package/dist/plugin/plugin-manager.d.ts +164 -0
  504. package/dist/plugin/plugin-manager.js +328 -0
  505. package/dist/plugin/plugin-manager.js.map +1 -0
  506. package/dist/plugin/plugin-namespace.d.ts +28 -0
  507. package/dist/plugin/plugin-namespace.js +53 -0
  508. package/dist/plugin/plugin-namespace.js.map +1 -0
  509. package/dist/plugin/registries.d.ts +38 -0
  510. package/dist/plugin/registries.js +71 -0
  511. package/dist/plugin/registries.js.map +1 -0
  512. package/dist/plugin/schema-serializer.d.ts +34 -0
  513. package/dist/plugin/schema-serializer.js +122 -0
  514. package/dist/plugin/schema-serializer.js.map +1 -0
  515. package/dist/plugin/topo-sort.d.ts +15 -0
  516. package/dist/plugin/topo-sort.js +59 -0
  517. package/dist/plugin/topo-sort.js.map +1 -0
  518. package/dist/presence/attach.d.ts +36 -0
  519. package/dist/presence/attach.js +399 -0
  520. package/dist/presence/attach.js.map +1 -0
  521. package/dist/renderer/__fixtures__/echo-embed.d.ts +27 -0
  522. package/dist/renderer/__fixtures__/echo-embed.js +24 -0
  523. package/dist/renderer/__fixtures__/echo-embed.js.map +1 -0
  524. package/dist/renderer/cache/index.d.ts +60 -0
  525. package/dist/renderer/cache/index.js +219 -0
  526. package/dist/renderer/cache/index.js.map +1 -0
  527. package/dist/renderer/cache/mongodb-cache.d.ts +82 -0
  528. package/dist/renderer/cache/mongodb-cache.js +180 -0
  529. package/dist/renderer/cache/mongodb-cache.js.map +1 -0
  530. package/dist/renderer/cache/reservation.d.ts +20 -0
  531. package/dist/renderer/cache/reservation.js +115 -0
  532. package/dist/renderer/cache/reservation.js.map +1 -0
  533. package/dist/renderer/core/_mdast-walk.d.ts +35 -0
  534. package/dist/renderer/core/_mdast-walk.js +45 -0
  535. package/dist/renderer/core/_mdast-walk.js.map +1 -0
  536. package/dist/renderer/core/code-block-dispatch.d.ts +31 -0
  537. package/dist/renderer/core/code-block-dispatch.js +166 -0
  538. package/dist/renderer/core/code-block-dispatch.js.map +1 -0
  539. package/dist/renderer/core/code-blocks.d.ts +12 -0
  540. package/dist/renderer/core/code-blocks.js +32 -0
  541. package/dist/renderer/core/code-blocks.js.map +1 -0
  542. package/dist/renderer/core/embed-tags.d.ts +14 -0
  543. package/dist/renderer/core/embed-tags.js +154 -0
  544. package/dist/renderer/core/embed-tags.js.map +1 -0
  545. package/dist/renderer/core/headings.d.ts +16 -0
  546. package/dist/renderer/core/headings.js +31 -0
  547. package/dist/renderer/core/headings.js.map +1 -0
  548. package/dist/renderer/core/index.d.ts +65 -0
  549. package/dist/renderer/core/index.js +83 -0
  550. package/dist/renderer/core/index.js.map +1 -0
  551. package/dist/renderer/core/mention-resolve.d.ts +39 -0
  552. package/dist/renderer/core/mention-resolve.js +75 -0
  553. package/dist/renderer/core/mention-resolve.js.map +1 -0
  554. package/dist/renderer/core/mentions.d.ts +2 -0
  555. package/dist/renderer/core/mentions.js +83 -0
  556. package/dist/renderer/core/mentions.js.map +1 -0
  557. package/dist/renderer/core/syntax-highlight.d.ts +21 -0
  558. package/dist/renderer/core/syntax-highlight.js +64 -0
  559. package/dist/renderer/core/syntax-highlight.js.map +1 -0
  560. package/dist/renderer/core/url-inline-expand.d.ts +9 -0
  561. package/dist/renderer/core/url-inline-expand.js +157 -0
  562. package/dist/renderer/core/url-inline-expand.js.map +1 -0
  563. package/dist/renderer/core/wikilinks.d.ts +2 -0
  564. package/dist/renderer/core/wikilinks.js +118 -0
  565. package/dist/renderer/core/wikilinks.js.map +1 -0
  566. package/dist/renderer/index.d.ts +67 -0
  567. package/dist/renderer/index.js +99 -0
  568. package/dist/renderer/index.js.map +1 -0
  569. package/dist/renderer/pipeline.d.ts +134 -0
  570. package/dist/renderer/pipeline.js +203 -0
  571. package/dist/renderer/pipeline.js.map +1 -0
  572. package/dist/renderer/registry.d.ts +83 -0
  573. package/dist/renderer/registry.js +130 -0
  574. package/dist/renderer/registry.js.map +1 -0
  575. package/dist/renderer/serialize.d.ts +27 -0
  576. package/dist/renderer/serialize.js +46 -0
  577. package/dist/renderer/serialize.js.map +1 -0
  578. package/dist/renderer/version.d.ts +30 -0
  579. package/dist/renderer/version.js +34 -0
  580. package/dist/renderer/version.js.map +1 -0
  581. package/dist/routes/admin.d.ts +4 -0
  582. package/dist/routes/admin.js +17 -0
  583. package/dist/routes/admin.js.map +1 -0
  584. package/dist/routes/api/admin.d.ts +4 -0
  585. package/dist/routes/api/admin.js +37 -0
  586. package/dist/routes/api/admin.js.map +1 -0
  587. package/dist/routes/api/attachment.d.ts +4 -0
  588. package/dist/routes/api/attachment.js +19 -0
  589. package/dist/routes/api/attachment.js.map +1 -0
  590. package/dist/routes/api/bookmark.d.ts +4 -0
  591. package/dist/routes/api/bookmark.js +15 -0
  592. package/dist/routes/api/bookmark.js.map +1 -0
  593. package/dist/routes/api/comment.d.ts +4 -0
  594. package/dist/routes/api/comment.js +14 -0
  595. package/dist/routes/api/comment.js.map +1 -0
  596. package/dist/routes/api/index.d.ts +4 -0
  597. package/dist/routes/api/index.js +36 -0
  598. package/dist/routes/api/index.js.map +1 -0
  599. package/dist/routes/api/like.d.ts +4 -0
  600. package/dist/routes/api/like.js +13 -0
  601. package/dist/routes/api/like.js.map +1 -0
  602. package/dist/routes/api/notification.d.ts +4 -0
  603. package/dist/routes/api/notification.js +15 -0
  604. package/dist/routes/api/notification.js.map +1 -0
  605. package/dist/routes/api/page.d.ts +4 -0
  606. package/dist/routes/api/page.js +24 -0
  607. package/dist/routes/api/page.js.map +1 -0
  608. package/dist/routes/api/revision.d.ts +4 -0
  609. package/dist/routes/api/revision.js +14 -0
  610. package/dist/routes/api/revision.js.map +1 -0
  611. package/dist/routes/api/share.d.ts +4 -0
  612. package/dist/routes/api/share.js +16 -0
  613. package/dist/routes/api/share.js.map +1 -0
  614. package/dist/routes/api/version.d.ts +4 -0
  615. package/dist/routes/api/version.js +10 -0
  616. package/dist/routes/api/version.js.map +1 -0
  617. package/dist/routes/index.d.ts +4 -0
  618. package/dist/routes/index.js +71 -0
  619. package/dist/routes/index.js.map +1 -0
  620. package/dist/routes/login.d.ts +4 -0
  621. package/dist/routes/login.js +18 -0
  622. package/dist/routes/login.js.map +1 -0
  623. package/dist/routes/me.d.ts +4 -0
  624. package/dist/routes/me.js +24 -0
  625. package/dist/routes/me.js.map +1 -0
  626. package/dist/routes/ts-rest/admin/app.d.ts +4 -0
  627. package/dist/routes/ts-rest/admin/app.js +67 -0
  628. package/dist/routes/ts-rest/admin/app.js.map +1 -0
  629. package/dist/routes/ts-rest/admin/auth.d.ts +4 -0
  630. package/dist/routes/ts-rest/admin/auth.js +95 -0
  631. package/dist/routes/ts-rest/admin/auth.js.map +1 -0
  632. package/dist/routes/ts-rest/admin/index.d.ts +10 -0
  633. package/dist/routes/ts-rest/admin/index.js +35 -0
  634. package/dist/routes/ts-rest/admin/index.js.map +1 -0
  635. package/dist/routes/ts-rest/admin/mail.d.ts +4 -0
  636. package/dist/routes/ts-rest/admin/mail.js +156 -0
  637. package/dist/routes/ts-rest/admin/mail.js.map +1 -0
  638. package/dist/routes/ts-rest/admin/plugins.d.ts +4 -0
  639. package/dist/routes/ts-rest/admin/plugins.js +317 -0
  640. package/dist/routes/ts-rest/admin/plugins.js.map +1 -0
  641. package/dist/routes/ts-rest/admin/search.d.ts +4 -0
  642. package/dist/routes/ts-rest/admin/search.js +67 -0
  643. package/dist/routes/ts-rest/admin/search.js.map +1 -0
  644. package/dist/routes/ts-rest/admin/security.d.ts +4 -0
  645. package/dist/routes/ts-rest/admin/security.js +114 -0
  646. package/dist/routes/ts-rest/admin/security.js.map +1 -0
  647. package/dist/routes/ts-rest/admin/share.d.ts +4 -0
  648. package/dist/routes/ts-rest/admin/share.js +69 -0
  649. package/dist/routes/ts-rest/admin/share.js.map +1 -0
  650. package/dist/routes/ts-rest/admin/storage.d.ts +4 -0
  651. package/dist/routes/ts-rest/admin/storage.js +59 -0
  652. package/dist/routes/ts-rest/admin/storage.js.map +1 -0
  653. package/dist/routes/ts-rest/admin/users.d.ts +4 -0
  654. package/dist/routes/ts-rest/admin/users.js +215 -0
  655. package/dist/routes/ts-rest/admin/users.js.map +1 -0
  656. package/dist/routes/ts-rest/adminCrypto.d.ts +4 -0
  657. package/dist/routes/ts-rest/adminCrypto.js +111 -0
  658. package/dist/routes/ts-rest/adminCrypto.js.map +1 -0
  659. package/dist/routes/ts-rest/app.d.ts +4 -0
  660. package/dist/routes/ts-rest/app.js +23 -0
  661. package/dist/routes/ts-rest/app.js.map +1 -0
  662. package/dist/routes/ts-rest/attachment.d.ts +4 -0
  663. package/dist/routes/ts-rest/attachment.js +830 -0
  664. package/dist/routes/ts-rest/attachment.js.map +1 -0
  665. package/dist/routes/ts-rest/auth.d.ts +4 -0
  666. package/dist/routes/ts-rest/auth.js +70 -0
  667. package/dist/routes/ts-rest/auth.js.map +1 -0
  668. package/dist/routes/ts-rest/autocomplete.d.ts +30 -0
  669. package/dist/routes/ts-rest/autocomplete.js +189 -0
  670. package/dist/routes/ts-rest/autocomplete.js.map +1 -0
  671. package/dist/routes/ts-rest/backlink.d.ts +4 -0
  672. package/dist/routes/ts-rest/backlink.js +106 -0
  673. package/dist/routes/ts-rest/backlink.js.map +1 -0
  674. package/dist/routes/ts-rest/bookmark.d.ts +4 -0
  675. package/dist/routes/ts-rest/bookmark.js +189 -0
  676. package/dist/routes/ts-rest/bookmark.js.map +1 -0
  677. package/dist/routes/ts-rest/comment.d.ts +4 -0
  678. package/dist/routes/ts-rest/comment.js +217 -0
  679. package/dist/routes/ts-rest/comment.js.map +1 -0
  680. package/dist/routes/ts-rest/draft.d.ts +22 -0
  681. package/dist/routes/ts-rest/draft.js +200 -0
  682. package/dist/routes/ts-rest/draft.js.map +1 -0
  683. package/dist/routes/ts-rest/index.d.ts +4 -0
  684. package/dist/routes/ts-rest/index.js +103 -0
  685. package/dist/routes/ts-rest/index.js.map +1 -0
  686. package/dist/routes/ts-rest/installer.d.ts +4 -0
  687. package/dist/routes/ts-rest/installer.js +77 -0
  688. package/dist/routes/ts-rest/installer.js.map +1 -0
  689. package/dist/routes/ts-rest/me.d.ts +4 -0
  690. package/dist/routes/ts-rest/me.js +410 -0
  691. package/dist/routes/ts-rest/me.js.map +1 -0
  692. package/dist/routes/ts-rest/notification.d.ts +4 -0
  693. package/dist/routes/ts-rest/notification.js +241 -0
  694. package/dist/routes/ts-rest/notification.js.map +1 -0
  695. package/dist/routes/ts-rest/page-collab.d.ts +29 -0
  696. package/dist/routes/ts-rest/page-collab.js +90 -0
  697. package/dist/routes/ts-rest/page-collab.js.map +1 -0
  698. package/dist/routes/ts-rest/page-preview.d.ts +26 -0
  699. package/dist/routes/ts-rest/page-preview.js +80 -0
  700. package/dist/routes/ts-rest/page-preview.js.map +1 -0
  701. package/dist/routes/ts-rest/page.d.ts +4 -0
  702. package/dist/routes/ts-rest/page.js +676 -0
  703. package/dist/routes/ts-rest/page.js.map +1 -0
  704. package/dist/routes/ts-rest/presence.d.ts +30 -0
  705. package/dist/routes/ts-rest/presence.js +155 -0
  706. package/dist/routes/ts-rest/presence.js.map +1 -0
  707. package/dist/routes/ts-rest/revision.d.ts +4 -0
  708. package/dist/routes/ts-rest/revision.js +240 -0
  709. package/dist/routes/ts-rest/revision.js.map +1 -0
  710. package/dist/routes/ts-rest/search.d.ts +4 -0
  711. package/dist/routes/ts-rest/search.js +121 -0
  712. package/dist/routes/ts-rest/search.js.map +1 -0
  713. package/dist/routes/ts-rest/tokenAuth.d.ts +4 -0
  714. package/dist/routes/ts-rest/tokenAuth.js +94 -0
  715. package/dist/routes/ts-rest/tokenAuth.js.map +1 -0
  716. package/dist/routes/ts-rest/user.d.ts +4 -0
  717. package/dist/routes/ts-rest/user.js +307 -0
  718. package/dist/routes/ts-rest/user.js.map +1 -0
  719. package/dist/service/config.d.ts +50 -0
  720. package/dist/service/config.js +202 -0
  721. package/dist/service/config.js.map +1 -0
  722. package/dist/service/lru.d.ts +11 -0
  723. package/dist/service/lru.js +47 -0
  724. package/dist/service/lru.js.map +1 -0
  725. package/dist/service/mail.d.ts +107 -0
  726. package/dist/service/mail.js +220 -0
  727. package/dist/service/mail.js.map +1 -0
  728. package/dist/service/notification.d.ts +9 -0
  729. package/dist/service/notification.js +19 -0
  730. package/dist/service/notification.js.map +1 -0
  731. package/dist/service/presence.d.ts +219 -0
  732. package/dist/service/presence.js +602 -0
  733. package/dist/service/presence.js.map +1 -0
  734. package/dist/types/error.d.ts +13 -0
  735. package/dist/types/error.js +13 -0
  736. package/dist/types/error.js.map +1 -0
  737. package/dist/types/express.d.ts +34 -0
  738. package/dist/types/express.js +50 -0
  739. package/dist/types/express.js.map +1 -0
  740. package/dist/types/mongoose-extensions.d.ts +8 -0
  741. package/dist/types/mongoose-extensions.js +24 -0
  742. package/dist/types/mongoose-extensions.js.map +1 -0
  743. package/dist/util/accessTokenParser.d.ts +1 -0
  744. package/dist/util/accessTokenParser.js +34 -0
  745. package/dist/util/accessTokenParser.js.map +1 -0
  746. package/dist/util/activityDefine.d.ts +15 -0
  747. package/dist/util/activityDefine.js +52 -0
  748. package/dist/util/activityDefine.js.map +1 -0
  749. package/dist/util/admin-config.d.ts +57 -0
  750. package/dist/util/admin-config.js +99 -0
  751. package/dist/util/admin-config.js.map +1 -0
  752. package/dist/util/admin-pager.d.ts +24 -0
  753. package/dist/util/admin-pager.js +73 -0
  754. package/dist/util/admin-pager.js.map +1 -0
  755. package/dist/util/apiPaginate.d.ts +11 -0
  756. package/dist/util/apiPaginate.js +33 -0
  757. package/dist/util/apiPaginate.js.map +1 -0
  758. package/dist/util/apiResponse.d.ts +9 -0
  759. package/dist/util/apiResponse.js +23 -0
  760. package/dist/util/apiResponse.js.map +1 -0
  761. package/dist/util/auth.d.ts +11 -0
  762. package/dist/util/auth.js +48 -0
  763. package/dist/util/auth.js.map +1 -0
  764. package/dist/util/auto-watch.d.ts +35 -0
  765. package/dist/util/auto-watch.js +24 -0
  766. package/dist/util/auto-watch.js.map +1 -0
  767. package/dist/util/autocomplete-match.d.ts +44 -0
  768. package/dist/util/autocomplete-match.js +80 -0
  769. package/dist/util/autocomplete-match.js.map +1 -0
  770. package/dist/util/aws-config-migration.d.ts +11 -0
  771. package/dist/util/aws-config-migration.js +68 -0
  772. package/dist/util/aws-config-migration.js.map +1 -0
  773. package/dist/util/boot-reporter.d.ts +130 -0
  774. package/dist/util/boot-reporter.js +242 -0
  775. package/dist/util/boot-reporter.js.map +1 -0
  776. package/dist/util/collab-cap.d.ts +39 -0
  777. package/dist/util/collab-cap.js +90 -0
  778. package/dist/util/collab-cap.js.map +1 -0
  779. package/dist/util/crypto.d.ts +39 -0
  780. package/dist/util/crypto.js +105 -0
  781. package/dist/util/crypto.js.map +1 -0
  782. package/dist/util/dedup-users.d.ts +96 -0
  783. package/dist/util/dedup-users.js +149 -0
  784. package/dist/util/dedup-users.js.map +1 -0
  785. package/dist/util/editor-cap-counter.d.ts +90 -0
  786. package/dist/util/editor-cap-counter.js +175 -0
  787. package/dist/util/editor-cap-counter.js.map +1 -0
  788. package/dist/util/fileUploader.d.ts +55 -0
  789. package/dist/util/fileUploader.js +70 -0
  790. package/dist/util/fileUploader.js.map +1 -0
  791. package/dist/util/formUtil.d.ts +2 -0
  792. package/dist/util/formUtil.js +15 -0
  793. package/dist/util/formUtil.js.map +1 -0
  794. package/dist/util/githubAuth.d.ts +2 -0
  795. package/dist/util/githubAuth.js +82 -0
  796. package/dist/util/githubAuth.js.map +1 -0
  797. package/dist/util/googleAuth.d.ts +2 -0
  798. package/dist/util/googleAuth.js +85 -0
  799. package/dist/util/googleAuth.js.map +1 -0
  800. package/dist/util/jwt.d.ts +50 -0
  801. package/dist/util/jwt.js +127 -0
  802. package/dist/util/jwt.js.map +1 -0
  803. package/dist/util/linkDetector.d.ts +3 -0
  804. package/dist/util/linkDetector.js +91 -0
  805. package/dist/util/linkDetector.js.map +1 -0
  806. package/dist/util/mail-token.d.ts +24 -0
  807. package/dist/util/mail-token.js +117 -0
  808. package/dist/util/mail-token.js.map +1 -0
  809. package/dist/util/mailer.d.ts +7 -0
  810. package/dist/util/mailer.js +98 -0
  811. package/dist/util/mailer.js.map +1 -0
  812. package/dist/util/map-duplicate-key-error.d.ts +26 -0
  813. package/dist/util/map-duplicate-key-error.js +41 -0
  814. package/dist/util/map-duplicate-key-error.js.map +1 -0
  815. package/dist/util/mongoose-paginate.d.ts +10 -0
  816. package/dist/util/mongoose-paginate.js +23 -0
  817. package/dist/util/mongoose-paginate.js.map +1 -0
  818. package/dist/util/notifications-token.d.ts +35 -0
  819. package/dist/util/notifications-token.js +140 -0
  820. package/dist/util/notifications-token.js.map +1 -0
  821. package/dist/util/oauth-client-seed.d.ts +2 -0
  822. package/dist/util/oauth-client-seed.js +48 -0
  823. package/dist/util/oauth-client-seed.js.map +1 -0
  824. package/dist/util/oauth-redirect-uri.d.ts +2 -0
  825. package/dist/util/oauth-redirect-uri.js +55 -0
  826. package/dist/util/oauth-redirect-uri.js.map +1 -0
  827. package/dist/util/page-response.d.ts +113 -0
  828. package/dist/util/page-response.js +154 -0
  829. package/dist/util/page-response.js.map +1 -0
  830. package/dist/util/page-search-index.d.ts +19 -0
  831. package/dist/util/page-search-index.js +91 -0
  832. package/dist/util/page-search-index.js.map +1 -0
  833. package/dist/util/page-status-migration.d.ts +23 -0
  834. package/dist/util/page-status-migration.js +48 -0
  835. package/dist/util/page-status-migration.js.map +1 -0
  836. package/dist/util/path.d.ts +2 -0
  837. package/dist/util/path.js +12 -0
  838. package/dist/util/path.js.map +1 -0
  839. package/dist/util/pkce.d.ts +13 -0
  840. package/dist/util/pkce.js +30 -0
  841. package/dist/util/pkce.js.map +1 -0
  842. package/dist/util/presence-token.d.ts +21 -0
  843. package/dist/util/presence-token.js +120 -0
  844. package/dist/util/presence-token.js.map +1 -0
  845. package/dist/util/rate-limit.d.ts +67 -0
  846. package/dist/util/rate-limit.js +87 -0
  847. package/dist/util/rate-limit.js.map +1 -0
  848. package/dist/util/rebuild-backlink.d.ts +25 -0
  849. package/dist/util/rebuild-backlink.js +7 -0
  850. package/dist/util/rebuild-backlink.js.map +1 -0
  851. package/dist/util/rebuild-renderer.d.ts +31 -0
  852. package/dist/util/rebuild-renderer.js +7 -0
  853. package/dist/util/rebuild-renderer.js.map +1 -0
  854. package/dist/util/redis-opts.d.ts +17 -0
  855. package/dist/util/redis-opts.js +40 -0
  856. package/dist/util/redis-opts.js.map +1 -0
  857. package/dist/util/regex.d.ts +2 -0
  858. package/dist/util/regex.js +8 -0
  859. package/dist/util/regex.js.map +1 -0
  860. package/dist/util/search-rebuild.d.ts +18 -0
  861. package/dist/util/search-rebuild.js +28 -0
  862. package/dist/util/search-rebuild.js.map +1 -0
  863. package/dist/util/ssr.d.ts +3 -0
  864. package/dist/util/ssr.js +9 -0
  865. package/dist/util/ssr.js.map +1 -0
  866. package/dist/util/storage-copy.d.ts +40 -0
  867. package/dist/util/storage-copy.js +123 -0
  868. package/dist/util/storage-copy.js.map +1 -0
  869. package/dist/util/ts-rest-helpers.d.ts +110 -0
  870. package/dist/util/ts-rest-helpers.js +110 -0
  871. package/dist/util/ts-rest-helpers.js.map +1 -0
  872. package/dist/util/url.d.ts +1 -0
  873. package/dist/util/url.js +11 -0
  874. package/dist/util/url.js.map +1 -0
  875. package/dist/util/user-code.d.ts +10 -0
  876. package/dist/util/user-code.js +55 -0
  877. package/dist/util/user-code.js.map +1 -0
  878. package/dist/util/view.d.ts +10 -0
  879. package/dist/util/view.js +99 -0
  880. package/dist/util/view.js.map +1 -0
  881. package/dist/util/watcher-backfill.d.ts +30 -0
  882. package/dist/util/watcher-backfill.js +43 -0
  883. package/dist/util/watcher-backfill.js.map +1 -0
  884. package/dist/util/ws-token.d.ts +24 -0
  885. package/dist/util/ws-token.js +134 -0
  886. package/dist/util/ws-token.js.map +1 -0
  887. package/package.json +106 -0
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeConfigSchema = serializeConfigSchema;
4
+ // Plugin config schemas are still authored against zod v3 (see
5
+ // `packages/plugin-*`/index.ts). The serializer introspects v3 internals
6
+ // (`_def`, `ZodEffects`, `ZodNativeEnum`, etc.) that were restructured in
7
+ // zod v4, so we explicitly pin this file to the `zod/v3` compat module
8
+ // that the v4 package ships. The v4 schemas live in `@crowi/api-contract`
9
+ // and never reach this code path.
10
+ const v3_1 = require("zod/v3");
11
+ const plugin_api_1 = require("@crowi/plugin-api");
12
+ /**
13
+ * Walk a plugin's `configSchema` (assumed to be a `z.object({...})`)
14
+ * and produce a flat list of fields the admin form can render. Only
15
+ * the field shapes the plugin RFC committed to are recognised:
16
+ * string / number / boolean / enum / string[]. Anything else falls
17
+ * back to `kind: 'string'` (with a descriptive log on the server).
18
+ */
19
+ function serializeConfigSchema(schema) {
20
+ const out = [];
21
+ for (const [name, raw] of Object.entries(schema.shape)) {
22
+ out.push(serializeField(name, raw));
23
+ }
24
+ return out;
25
+ }
26
+ function serializeField(name, raw) {
27
+ const { unwrapped, optional, defaultValue } = unwrapMeta(raw);
28
+ const description = (unwrapped.description ?? raw.description) || undefined;
29
+ const cleanedDescription = stripMarkers(description);
30
+ const action = (0, plugin_api_1.getActionAnnotation)(raw) ?? (0, plugin_api_1.getActionAnnotation)(unwrapped) ?? undefined;
31
+ const sensitive = describesSensitive(raw) || describesSensitive(unwrapped);
32
+ const kindResult = detectKind(unwrapped, sensitive);
33
+ return {
34
+ name,
35
+ kind: kindResult.kind,
36
+ description: cleanedDescription,
37
+ // Sensitive defaults are not echoed back — operators set their own.
38
+ defaultValue: sensitive ? undefined : defaultValue,
39
+ options: kindResult.options,
40
+ action,
41
+ optional,
42
+ };
43
+ }
44
+ /**
45
+ * Strip `ZodOptional` / `ZodDefault` / `ZodEffects` wrappers (which
46
+ * `z.string().refine(...)` introduces) so we can introspect the inner
47
+ * primitive type.
48
+ */
49
+ function unwrapMeta(node) {
50
+ let cur = node;
51
+ let optional = false;
52
+ let defaultValue = undefined;
53
+ // Unwrap up to a small depth to avoid pathological loops.
54
+ for (let i = 0; i < 6; i++) {
55
+ if (cur instanceof v3_1.z.ZodOptional) {
56
+ optional = true;
57
+ cur = cur._def.innerType;
58
+ continue;
59
+ }
60
+ if (cur instanceof v3_1.z.ZodDefault) {
61
+ const def = cur._def.defaultValue;
62
+ defaultValue = typeof def === 'function' ? def() : def;
63
+ cur = cur._def.innerType;
64
+ continue;
65
+ }
66
+ if (cur instanceof v3_1.z.ZodEffects) {
67
+ // refine / transform — keep the underlying schema for kind detection
68
+ cur = cur._def.schema;
69
+ continue;
70
+ }
71
+ break;
72
+ }
73
+ return { unwrapped: cur, optional, defaultValue };
74
+ }
75
+ function detectKind(unwrapped, sensitive) {
76
+ if (unwrapped instanceof v3_1.z.ZodString) {
77
+ return { kind: sensitive ? 'secret' : 'string' };
78
+ }
79
+ if (unwrapped instanceof v3_1.z.ZodNumber) {
80
+ return { kind: 'number' };
81
+ }
82
+ if (unwrapped instanceof v3_1.z.ZodBoolean) {
83
+ return { kind: 'boolean' };
84
+ }
85
+ if (unwrapped instanceof v3_1.z.ZodEnum) {
86
+ return { kind: 'enum', options: [...unwrapped._def.values] };
87
+ }
88
+ if (unwrapped instanceof v3_1.z.ZodNativeEnum) {
89
+ const values = Object.values(unwrapped._def.values).filter((v) => typeof v === 'string');
90
+ return { kind: 'enum', options: values };
91
+ }
92
+ if (unwrapped instanceof v3_1.z.ZodArray && unwrapped._def.type instanceof v3_1.z.ZodString) {
93
+ return { kind: 'string-array' };
94
+ }
95
+ // Unrecognised shape — fall back to string (admin form renders an Input).
96
+ return { kind: 'string' };
97
+ }
98
+ function describesSensitive(node) {
99
+ const d = node.description;
100
+ return typeof d === 'string' && d.trimStart().startsWith(plugin_api_1.SENSITIVE_FIELD_MARKER);
101
+ }
102
+ /**
103
+ * Remove the leading `@sensitive` / `@action ...` marker from a
104
+ * description so the admin form can render it as plain help text.
105
+ * The marker payload is already extracted into `kind`/`action`.
106
+ */
107
+ function stripMarkers(description) {
108
+ if (!description)
109
+ return undefined;
110
+ const trimmed = description.trimStart();
111
+ if (trimmed.startsWith(plugin_api_1.SENSITIVE_FIELD_MARKER)) {
112
+ return trimmed.slice(plugin_api_1.SENSITIVE_FIELD_MARKER.length).trim() || undefined;
113
+ }
114
+ if (trimmed.startsWith(plugin_api_1.ACTION_FIELD_MARKER)) {
115
+ // The full annotation `"label" METHOD /path` is captured into
116
+ // `action`; the leftover after parsing is rarely useful for help
117
+ // text, so omit it entirely.
118
+ return undefined;
119
+ }
120
+ return description;
121
+ }
122
+ //# sourceMappingURL=schema-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-serializer.js","sourceRoot":"","sources":["../../src/plugin/schema-serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { CrowiPlugin } from '@crowi/plugin-api';
2
+ /**
3
+ * Topologically sort the loaded plugins so each plugin's `requires`
4
+ * are processed (registered) before the plugin itself. A `requires`
5
+ * entry that points at a plugin not in the input set is ignored
6
+ * (already-loaded core defaults / sibling plugins): we only sort what
7
+ * we have.
8
+ *
9
+ * @throws on cycle, naming the plugins involved
10
+ * @throws on a `requires` entry that genuinely cannot be resolved
11
+ * (i.e. neither in the input set nor declared as
12
+ * "already-loaded"). The caller controls "already loaded"
13
+ * via `alreadyLoaded`.
14
+ */
15
+ export declare function topoSortPlugins(plugins: CrowiPlugin[], alreadyLoaded?: ReadonlySet<string>): CrowiPlugin[];
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topoSortPlugins = topoSortPlugins;
4
+ /**
5
+ * Topologically sort the loaded plugins so each plugin's `requires`
6
+ * are processed (registered) before the plugin itself. A `requires`
7
+ * entry that points at a plugin not in the input set is ignored
8
+ * (already-loaded core defaults / sibling plugins): we only sort what
9
+ * we have.
10
+ *
11
+ * @throws on cycle, naming the plugins involved
12
+ * @throws on a `requires` entry that genuinely cannot be resolved
13
+ * (i.e. neither in the input set nor declared as
14
+ * "already-loaded"). The caller controls "already loaded"
15
+ * via `alreadyLoaded`.
16
+ */
17
+ function topoSortPlugins(plugins, alreadyLoaded = new Set()) {
18
+ const byName = new Map();
19
+ for (const p of plugins) {
20
+ if (byName.has(p.name)) {
21
+ throw new Error(`Plugin '${p.name}' loaded twice — duplicate npm package?`);
22
+ }
23
+ byName.set(p.name, p);
24
+ }
25
+ // Validate `requires` references resolve.
26
+ for (const p of plugins) {
27
+ for (const dep of p.requires ?? []) {
28
+ if (!byName.has(dep) && !alreadyLoaded.has(dep)) {
29
+ throw new Error(`Plugin '${p.name}' requires '${dep}', which is not installed.`);
30
+ }
31
+ }
32
+ }
33
+ // Standard DFS topo with cycle detection.
34
+ const visited = new Set();
35
+ const visiting = new Set();
36
+ const order = [];
37
+ const visit = (name, trail) => {
38
+ if (visited.has(name))
39
+ return;
40
+ if (visiting.has(name)) {
41
+ throw new Error(`Plugin dependency cycle detected: ${[...trail, name].join(' → ')}`);
42
+ }
43
+ const plugin = byName.get(name);
44
+ if (!plugin)
45
+ return; // already-loaded dep, not in this batch
46
+ visiting.add(name);
47
+ for (const dep of plugin.requires ?? []) {
48
+ visit(dep, [...trail, name]);
49
+ }
50
+ visiting.delete(name);
51
+ visited.add(name);
52
+ order.push(plugin);
53
+ };
54
+ for (const p of plugins) {
55
+ visit(p.name, []);
56
+ }
57
+ return order;
58
+ }
59
+ //# sourceMappingURL=topo-sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topo-sort.js","sourceRoot":"","sources":["../../src/plugin/topo-sort.ts"],"names":[],"mappings":";;AAeA,0CA4CC;AAzDD;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAAC,OAAsB,EAAE,gBAAqC,IAAI,GAAG,EAAE;IACpG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,yCAAyC,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,eAAe,GAAG,4BAA4B,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAe,EAAQ,EAAE;QACpD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,wCAAwC;QAC7D,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACxC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { Server as HttpServer } from 'node:http';
2
+ import type Crowi from '../crowi';
3
+ /**
4
+ * Public surface returned from `attachPresenceServer`. The api boot
5
+ * keeps the handle so SIGINT teardown can drain sockets and tear down
6
+ * the presence pub/sub subscriber.
7
+ */
8
+ export interface AttachedPresence {
9
+ /** Detach + tear down. Idempotent; safe to call from a SIGINT handler. */
10
+ shutdown(): Promise<void>;
11
+ }
12
+ /**
13
+ * Wire the RFC-0005 `/presence` WebSocket into the api's existing
14
+ * Express http.Server, using the `ws` library's `noServer` mode — same
15
+ * process, same event loop, same Mongoose connection, same Redis
16
+ * client as `/collab`.
17
+ *
18
+ * Connection lifecycle:
19
+ * 1. Upgrade filter accepts `/presence` / `/presence/*`.
20
+ * 2. Verify the `?token=` presence JWT (signature + issuer).
21
+ * 3. Verify `token.pageId` matches the `/presence/<pageId>` path
22
+ * segment when one is present.
23
+ * 4. Re-check read permission against Mongo (the token was minted up
24
+ * to 5 min ago — grants can be revoked in between).
25
+ * 5. `presence.join` registers the viewer; the page's viewer list is
26
+ * broadcast to every connected client (this instance + others via
27
+ * Redis pub/sub).
28
+ * 6. Client heartbeats every 15s refresh the Redis TTL; a heartbeat
29
+ * past the permission-cache window re-checks read grant and
30
+ * disconnects a revoked viewer.
31
+ * 7. On close, `presence.leave` removes the viewer and re-broadcasts.
32
+ *
33
+ * Boot order: call after `setupModels`. The api's `Crowi.start`
34
+ * invokes this right before `server.listen`, next to `attachCollabServer`.
35
+ */
36
+ export declare function attachPresenceServer(httpServer: HttpServer, crowi: Crowi): Promise<AttachedPresence>;
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.attachPresenceServer = attachPresenceServer;
7
+ const debug_1 = __importDefault(require("debug"));
8
+ const ws_1 = require("ws");
9
+ const api_contract_1 = require("@crowi/api-contract");
10
+ const presence_token_1 = require("../util/presence-token");
11
+ const presence_1 = require("../service/presence");
12
+ const debug = (0, debug_1.default)('crowi:presence:attach');
13
+ /**
14
+ * Path namespace the presence WebSocket answers on. The browser dials
15
+ * `/presence/<pageId>?token=<presenceToken>`; the upgrade filter
16
+ * accepts both the bare `/presence` and `/presence/...` so the design
17
+ * mirrors `collab/attach.ts` exactly (sibling upgrade handlers — collab
18
+ * at `/collab`, presence at `/presence` — coexist on one listener).
19
+ */
20
+ const PRESENCE_PATH = '/presence';
21
+ /**
22
+ * WebSocket close codes the presence handler uses. 4401 / 4403 are in
23
+ * the 4000–4999 application-private range; 1001 ("going away") is the
24
+ * standard code for a graceful server shutdown.
25
+ */
26
+ const WS_CLOSE = {
27
+ INVALID_TOKEN: 4401,
28
+ NO_ACCESS: 4403,
29
+ SHUTDOWN: 1001,
30
+ };
31
+ /** Split a request URL into its pathname and raw query string. */
32
+ const splitUrl = (rawUrl) => {
33
+ const queryIdx = rawUrl.indexOf('?');
34
+ return queryIdx < 0 ? { pathname: rawUrl, query: '' } : { pathname: rawUrl.slice(0, queryIdx), query: rawUrl.slice(queryIdx + 1) };
35
+ };
36
+ /**
37
+ * Per-connection read-permission cache TTL. After a viewer's read
38
+ * grant is confirmed once, subsequent heartbeats skip the Mongo lookup
39
+ * for this long; a heartbeat after the window re-checks, so a mid-
40
+ * session permission revocation is detected within ~60s + one
41
+ * heartbeat interval. RFC-0005 §"Permission boundary".
42
+ */
43
+ const PERMISSION_CACHE_TTL_MS = 60_000;
44
+ /**
45
+ * Grace window between asking sockets to close politely and force-
46
+ * terminating stragglers on shutdown. Mirrors `collab/attach.ts`.
47
+ */
48
+ const SHUTDOWN_DRAIN_MS = 500;
49
+ /**
50
+ * Wire the RFC-0005 `/presence` WebSocket into the api's existing
51
+ * Express http.Server, using the `ws` library's `noServer` mode — same
52
+ * process, same event loop, same Mongoose connection, same Redis
53
+ * client as `/collab`.
54
+ *
55
+ * Connection lifecycle:
56
+ * 1. Upgrade filter accepts `/presence` / `/presence/*`.
57
+ * 2. Verify the `?token=` presence JWT (signature + issuer).
58
+ * 3. Verify `token.pageId` matches the `/presence/<pageId>` path
59
+ * segment when one is present.
60
+ * 4. Re-check read permission against Mongo (the token was minted up
61
+ * to 5 min ago — grants can be revoked in between).
62
+ * 5. `presence.join` registers the viewer; the page's viewer list is
63
+ * broadcast to every connected client (this instance + others via
64
+ * Redis pub/sub).
65
+ * 6. Client heartbeats every 15s refresh the Redis TTL; a heartbeat
66
+ * past the permission-cache window re-checks read grant and
67
+ * disconnects a revoked viewer.
68
+ * 7. On close, `presence.leave` removes the viewer and re-broadcasts.
69
+ *
70
+ * Boot order: call after `setupModels`. The api's `Crowi.start`
71
+ * invokes this right before `server.listen`, next to `attachCollabServer`.
72
+ */
73
+ async function attachPresenceServer(httpServer, crowi) {
74
+ const presenceTokenUtil = (0, presence_token_1.createPresenceTokenUtil)();
75
+ const presence = await (0, presence_1.getPresenceService)(crowi);
76
+ const Page = crowi.model('Page');
77
+ const User = crowi.model('User');
78
+ // `noServer: true` — the upgrade handshake is owned by the api
79
+ // process; we forward only `/presence/*` upgrades here.
80
+ const wss = new ws_1.WebSocketServer({ noServer: true });
81
+ // Every live connection, keyed by socket. Used to broadcast a page's
82
+ // viewer list to exactly its connected clients and to drain on
83
+ // shutdown.
84
+ const connections = new Map();
85
+ /** Send a JSON message to one socket; ignore a dead socket. */
86
+ const sendJson = (ws, payload) => {
87
+ if (ws.readyState !== ws.OPEN)
88
+ return;
89
+ try {
90
+ ws.send(JSON.stringify(payload));
91
+ }
92
+ catch (err) {
93
+ debug('send failed: %s', err.message);
94
+ }
95
+ };
96
+ /**
97
+ * Broadcast the current viewer list of `pageId` to every locally-
98
+ * connected client for that page. Triggered by `presence`'s change
99
+ * events (local writes + cross-instance pub/sub).
100
+ */
101
+ const broadcastViewers = async (pageId) => {
102
+ // Collect the local sockets watching this page before the await so
103
+ // a concurrent close doesn't matter — `sendJson` no-ops on a
104
+ // non-OPEN socket.
105
+ const targets = [];
106
+ for (const conn of connections.values()) {
107
+ if (conn.pageId === pageId)
108
+ targets.push(conn.ws);
109
+ }
110
+ if (targets.length === 0)
111
+ return;
112
+ let viewers;
113
+ try {
114
+ viewers = await presence.listViewers(pageId);
115
+ }
116
+ catch (err) {
117
+ console.warn(`[crowi:presence] listViewers failed for page ${pageId}:`, err.message);
118
+ return;
119
+ }
120
+ const message = { type: 'viewers', viewers };
121
+ for (const ws of targets) {
122
+ sendJson(ws, message);
123
+ }
124
+ };
125
+ // Subscribe to viewer-list changes (local + cross-instance). The
126
+ // unsubscribe fn is invoked on shutdown.
127
+ const unsubscribe = presence.onViewersChanged((pageId) => {
128
+ void broadcastViewers(pageId);
129
+ });
130
+ /**
131
+ * Re-verify that `userId` still has read grant on `pageId`. Returns
132
+ * `false` when the page vanished or the grant was revoked. A throw
133
+ * is treated as "no permission" (fail-closed).
134
+ */
135
+ const hasReadPermission = async (pageId, userId) => {
136
+ try {
137
+ const page = await Page.findById(pageId).exec();
138
+ if (!page)
139
+ return false;
140
+ // `isGrantedFor` takes a user-like object; load the connecting
141
+ // user so OWNER / GROUP grants resolve against the real record.
142
+ const userDoc = (await User.findById(userId).exec());
143
+ if (!userDoc)
144
+ return false;
145
+ return page.isGrantedFor(userDoc);
146
+ }
147
+ catch (err) {
148
+ debug('permission re-check threw for page=%s user=%s: %s', pageId, userId, err.message);
149
+ return false;
150
+ }
151
+ };
152
+ /** Load the connecting user's denormalised identity for the hash. */
153
+ const loadViewerIdentity = async (userId) => {
154
+ const userDoc = (await User.findById(userId).exec());
155
+ if (!userDoc)
156
+ return null;
157
+ return {
158
+ userId,
159
+ username: userDoc.username ?? '',
160
+ displayName: userDoc.name ?? userDoc.username ?? '',
161
+ avatarUrl: userDoc.image ?? null,
162
+ };
163
+ };
164
+ /**
165
+ * Wire one freshly-upgraded `ws.WebSocket`. Authentication runs
166
+ * inline: a bad token / page mismatch / revoked grant closes the
167
+ * socket immediately. A clean connection is added to `connections`
168
+ * and gets the first viewer-list broadcast.
169
+ */
170
+ const wireConnection = async (ws, request) => {
171
+ const { pathname, query } = splitUrl(request.url ?? '');
172
+ const token = new URLSearchParams(query).get('token') ?? '';
173
+ // 1. token present + verifies (signature, issuer, schema).
174
+ const claims = token.length > 0 ? presenceTokenUtil.verifyPresenceToken(token) : null;
175
+ if (!claims) {
176
+ debug('reject: presence token missing / invalid');
177
+ ws.close(WS_CLOSE.INVALID_TOKEN, 'invalid token');
178
+ return;
179
+ }
180
+ // 2. `/presence/<pageId>` path segment, when present, must match
181
+ // the token. The bare `/presence` form is also accepted (the
182
+ // token is the authoritative pageId source).
183
+ const pathSegment = pathname.startsWith(`${PRESENCE_PATH}/`) ? pathname.slice(PRESENCE_PATH.length + 1) : '';
184
+ if (pathSegment.length > 0 && pathSegment !== claims.pageId) {
185
+ debug('reject: path pageId %s != token pageId %s', pathSegment, claims.pageId);
186
+ ws.close(WS_CLOSE.INVALID_TOKEN, 'invalid token');
187
+ return;
188
+ }
189
+ // The token verified, so userId / pageId are known. Register the
190
+ // close + error handlers NOW, before the async permission / identity
191
+ // round-trips below. A socket that closes *during* those awaits (a
192
+ // fast client navigation, React's dev double-mount) would otherwise
193
+ // fire `'close'` into the void — the handler being attached only
194
+ // after the awaits — leaving a phantom `connections` entry whose
195
+ // `'close'` never runs. That phantom poisons the multi-tab
196
+ // `userStillConnected` check in `handleClose`, so a later *real*
197
+ // disconnect skips `presence.leave` and the viewer is stuck in the
198
+ // hash for every other client on the page.
199
+ const conn = {
200
+ ws,
201
+ userId: claims.userId,
202
+ pageId: claims.pageId,
203
+ permittedUntil: 0,
204
+ };
205
+ let closed = false;
206
+ ws.on('close', () => {
207
+ closed = true;
208
+ void handleClose(conn);
209
+ });
210
+ ws.on('error', (err) => {
211
+ // A single bad socket must not crash the api process.
212
+ console.error('[crowi:presence] websocket error', err);
213
+ });
214
+ // 3. re-check read permission (token was minted up to 5 min ago).
215
+ const permitted = await hasReadPermission(claims.pageId, claims.userId);
216
+ if (!permitted) {
217
+ debug('reject: user %s lost read grant on page %s', claims.userId, claims.pageId);
218
+ ws.close(WS_CLOSE.NO_ACCESS, 'no access');
219
+ return;
220
+ }
221
+ const identity = await loadViewerIdentity(claims.userId);
222
+ if (!identity) {
223
+ debug('reject: connecting user %s not found', claims.userId);
224
+ ws.close(WS_CLOSE.NO_ACCESS, 'no access');
225
+ return;
226
+ }
227
+ // The socket closed while permission / identity were resolving —
228
+ // the close handler has already run; do not register a viewer.
229
+ if (closed) {
230
+ debug('presence socket closed during setup user=%s page=%s', conn.userId, conn.pageId);
231
+ return;
232
+ }
233
+ conn.permittedUntil = Date.now() + PERMISSION_CACHE_TTL_MS;
234
+ connections.set(ws, conn);
235
+ ws.on('message', (data) => {
236
+ void handleClientMessage(conn, data);
237
+ });
238
+ // Register the viewer. `join` publishes a viewer-list change, which
239
+ // flows back through `onViewersChanged` → `broadcastViewers`, so
240
+ // this socket (and every other on the page) gets the fresh list.
241
+ try {
242
+ await presence.join(conn.pageId, identity);
243
+ }
244
+ catch (err) {
245
+ console.warn(`[crowi:presence] join failed for page ${conn.pageId}:`, err.message);
246
+ }
247
+ // The socket closed while `join` was in flight — the close handler
248
+ // ran before the viewer entry existed, so reconcile now to remove
249
+ // the entry `join` just wrote.
250
+ if (closed) {
251
+ debug('presence socket closed during join user=%s page=%s', conn.userId, conn.pageId);
252
+ void handleClose(conn);
253
+ return;
254
+ }
255
+ debug('presence connected user=%s page=%s', conn.userId, conn.pageId);
256
+ };
257
+ /**
258
+ * Handle a client → server frame. The only valid message is
259
+ * `{ type: 'heartbeat' }`; anything else is ignored (forward-compat).
260
+ */
261
+ const handleClientMessage = async (conn, data) => {
262
+ let parsedJson;
263
+ try {
264
+ const text = data instanceof ArrayBuffer ? Buffer.from(data).toString('utf8') : data.toString('utf8');
265
+ parsedJson = JSON.parse(text);
266
+ }
267
+ catch {
268
+ debug('ignore: non-JSON client frame on page %s', conn.pageId);
269
+ return;
270
+ }
271
+ const message = api_contract_1.PresenceClientMessageSchema.safeParse(parsedJson);
272
+ if (!message.success) {
273
+ debug('ignore: unrecognised client message on page %s', conn.pageId);
274
+ return;
275
+ }
276
+ // Heartbeat: re-verify read grant if the cache window lapsed, then
277
+ // refresh the Redis TTL.
278
+ if (Date.now() >= conn.permittedUntil) {
279
+ const stillPermitted = await hasReadPermission(conn.pageId, conn.userId);
280
+ if (!stillPermitted) {
281
+ debug('heartbeat: user %s lost grant on page %s — disconnecting', conn.userId, conn.pageId);
282
+ conn.ws.close(WS_CLOSE.NO_ACCESS, 'no access');
283
+ return;
284
+ }
285
+ conn.permittedUntil = Date.now() + PERMISSION_CACHE_TTL_MS;
286
+ }
287
+ try {
288
+ const present = await presence.heartbeat(conn.pageId, conn.userId);
289
+ if (!present) {
290
+ // Swept while the socket was briefly idle — re-register.
291
+ const identity = await loadViewerIdentity(conn.userId);
292
+ if (identity)
293
+ await presence.join(conn.pageId, identity);
294
+ }
295
+ }
296
+ catch (err) {
297
+ debug('heartbeat failed for page %s: %s', conn.pageId, err.message);
298
+ }
299
+ };
300
+ /** Handle a socket close — remove the viewer and re-broadcast. */
301
+ const handleClose = async (conn) => {
302
+ connections.delete(conn.ws);
303
+ // Only `leave` when no *other* socket for the same user-page pair
304
+ // remains — multi-tab dedup: closing one of three tabs must not
305
+ // remove the user from the viewer list.
306
+ let userStillConnected = false;
307
+ for (const other of connections.values()) {
308
+ if (other.userId === conn.userId && other.pageId === conn.pageId) {
309
+ userStillConnected = true;
310
+ break;
311
+ }
312
+ }
313
+ if (userStillConnected) {
314
+ debug('close: user %s still has another tab on page %s — keep viewer', conn.userId, conn.pageId);
315
+ return;
316
+ }
317
+ try {
318
+ await presence.leave(conn.pageId, conn.userId);
319
+ }
320
+ catch (err) {
321
+ debug('leave failed for page %s: %s', conn.pageId, err.message);
322
+ }
323
+ };
324
+ /**
325
+ * `'upgrade'` handler. Path-filter first so the sibling `/collab`
326
+ * handler keeps its slot; `socket.destroy()` is intentionally NOT
327
+ * called on a no-match so Node moves on to the next listener.
328
+ */
329
+ const upgradeHandler = (request, socket, head) => {
330
+ const { pathname } = splitUrl(request.url ?? '');
331
+ if (pathname !== PRESENCE_PATH && !pathname.startsWith(`${PRESENCE_PATH}/`)) {
332
+ return; // not ours — let other upgrade handlers try.
333
+ }
334
+ wss.handleUpgrade(request, socket, head, (ws) => {
335
+ void wireConnection(ws, request);
336
+ });
337
+ };
338
+ httpServer.on('upgrade', upgradeHandler);
339
+ debug('presence attached to http.Server (path=%s)', PRESENCE_PATH);
340
+ let didShutdown = false;
341
+ return {
342
+ async shutdown() {
343
+ if (didShutdown)
344
+ return;
345
+ didShutdown = true;
346
+ // 1. Refuse new upgrades.
347
+ try {
348
+ httpServer.off('upgrade', upgradeHandler);
349
+ }
350
+ catch {
351
+ // best-effort — server may already be tearing down.
352
+ }
353
+ // 2. Stop reacting to viewer-list changes.
354
+ try {
355
+ unsubscribe();
356
+ }
357
+ catch {
358
+ // best-effort
359
+ }
360
+ // 3. Politely close every live socket.
361
+ for (const conn of connections.values()) {
362
+ try {
363
+ conn.ws.close(WS_CLOSE.SHUTDOWN, 'server shutting down');
364
+ }
365
+ catch {
366
+ // ignore — best-effort
367
+ }
368
+ }
369
+ // 4. Brief drain so close frames flush.
370
+ if (connections.size > 0) {
371
+ await new Promise((resolveDrain) => setTimeout(resolveDrain, SHUTDOWN_DRAIN_MS));
372
+ }
373
+ // 5. Force-terminate stragglers.
374
+ try {
375
+ for (const conn of connections.values()) {
376
+ try {
377
+ conn.ws.terminate();
378
+ }
379
+ catch {
380
+ // ignore
381
+ }
382
+ }
383
+ connections.clear();
384
+ wss.close();
385
+ }
386
+ catch (err) {
387
+ console.error('[crowi:presence] wss.close failed during shutdown:', err);
388
+ }
389
+ // 6. Tear down the presence service's pub/sub subscriber.
390
+ try {
391
+ await presence.shutdown();
392
+ }
393
+ catch (err) {
394
+ console.error('[crowi:presence] presence.shutdown failed:', err);
395
+ }
396
+ },
397
+ };
398
+ }
399
+ //# sourceMappingURL=attach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/presence/attach.ts"],"names":[],"mappings":"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"}