@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 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import Crowi from '../crowi';
2
+ import { Types, Document, Model } from 'mongoose';
3
+ export interface WatcherDocument extends Document {
4
+ _id: Types.ObjectId;
5
+ user: Types.ObjectId;
6
+ targetModel: string;
7
+ target: Types.ObjectId;
8
+ status: string;
9
+ createdAt: Date;
10
+ isWatching(): boolean;
11
+ isIgnoring(): boolean;
12
+ }
13
+ export interface WatcherModel extends Model<WatcherDocument> {
14
+ findByUserIdAndTargetId(userId: Types.ObjectId, targetId: Types.ObjectId): any;
15
+ upsertWatcher(user: Types.ObjectId, targetModel: string, target: Types.ObjectId, status: string): any;
16
+ watchByPageId(user: Types.ObjectId, pageId: Types.ObjectId, status: string): any;
17
+ getWatchers(target: Types.ObjectId): Promise<Types.ObjectId[]>;
18
+ getIgnorers(target: Types.ObjectId): Promise<Types.ObjectId[]>;
19
+ STATUS_WATCH: string;
20
+ STATUS_IGNORE: string;
21
+ }
22
+ declare const _default: (crowi: Crowi) => WatcherModel;
23
+ export default _default;
@@ -0,0 +1,75 @@
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
+ const mongoose_1 = require("mongoose");
7
+ const activityDefine_1 = __importDefault(require("../util/activityDefine"));
8
+ // import Debug from 'debug'
9
+ const STATUS_WATCH = 'WATCH';
10
+ const STATUS_IGNORE = 'IGNORE';
11
+ const STATUSES = [STATUS_WATCH, STATUS_IGNORE];
12
+ exports.default = (crowi) => {
13
+ // const debug = Debug('crowi:models:watcher')
14
+ const watcherSchema = new mongoose_1.Schema({
15
+ user: {
16
+ type: mongoose_1.Schema.Types.ObjectId,
17
+ ref: 'User',
18
+ index: true,
19
+ required: true,
20
+ },
21
+ targetModel: {
22
+ type: String,
23
+ required: true,
24
+ enum: activityDefine_1.default.getSupportTargetModelNames(),
25
+ },
26
+ target: {
27
+ type: mongoose_1.Schema.Types.Mixed,
28
+ refPath: 'targetModel',
29
+ required: true,
30
+ },
31
+ status: {
32
+ type: String,
33
+ required: true,
34
+ enum: STATUSES,
35
+ },
36
+ createdAt: { type: Date, default: Date.now },
37
+ });
38
+ watcherSchema.methods.isWatching = function () {
39
+ return this.status === STATUS_WATCH;
40
+ };
41
+ watcherSchema.methods.isIgnoring = function () {
42
+ return this.status === STATUS_IGNORE;
43
+ };
44
+ watcherSchema.statics.findByUserIdAndTargetId = function (userId, targetId) {
45
+ return this.findOne({ user: userId, target: targetId });
46
+ };
47
+ watcherSchema.statics.upsertWatcher = function (user, targetModel, target, status) {
48
+ const query = { user, targetModel, target };
49
+ const doc = { ...query, status };
50
+ const options = { upsert: true, new: true, setDefaultsOnInsert: true, runValidators: true };
51
+ return Watcher.findOneAndUpdate(query, doc, options);
52
+ };
53
+ watcherSchema.statics.watchByPageId = function (user, pageId, status) {
54
+ return this.upsertWatcher(user, 'Page', pageId, status);
55
+ };
56
+ watcherSchema.statics.getWatchers = async function (target) {
57
+ return Watcher.find({ target, status: STATUS_WATCH }).distinct('user');
58
+ };
59
+ watcherSchema.statics.getIgnorers = async function (target) {
60
+ return Watcher.find({ target, status: STATUS_IGNORE }).distinct('user');
61
+ };
62
+ // 静的プロパティの定義方法を修正
63
+ Object.defineProperty(watcherSchema.statics, 'STATUS_WATCH', {
64
+ value: STATUS_WATCH,
65
+ });
66
+ Object.defineProperty(watcherSchema.statics, 'STATUS_IGNORE', {
67
+ value: STATUS_IGNORE,
68
+ });
69
+ const Watcher = (0, mongoose_1.model)('Watcher', watcherSchema);
70
+ // Set static properties on the model instance as well
71
+ Watcher.STATUS_WATCH = STATUS_WATCH;
72
+ Watcher.STATUS_IGNORE = STATUS_IGNORE;
73
+ return Watcher;
74
+ };
75
+ //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/models/watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { Server as HttpServer } from 'node:http';
2
+ import type Crowi from '../crowi';
3
+ /**
4
+ * Minimum node-redis v4 surface the notifications handler leans on.
5
+ * Keeping this structural interface narrow lets the attach test inject
6
+ * a deterministic in-memory fake without pulling in the real redis
7
+ * client. The shape matches `PresenceRedisClient` (service/presence.ts)
8
+ * so a future skeleton-extract pass can dedupe them — see the spec's
9
+ * "■ Skeleton 抽出は今回スコープ外" note for why that does not happen
10
+ * in this task.
11
+ */
12
+ export interface NotificationsRedisClient {
13
+ publish(channel: string, message: string): Promise<number>;
14
+ duplicate(): NotificationsRedisClient;
15
+ connect(): Promise<unknown>;
16
+ disconnect(): Promise<unknown>;
17
+ subscribe(channel: string, listener: (message: string) => void): Promise<void>;
18
+ unsubscribe(channel: string): Promise<void>;
19
+ isOpen?: boolean;
20
+ }
21
+ /**
22
+ * Public surface returned from `attachNotificationsServer`. The api
23
+ * boot keeps the handle so SIGINT teardown can drain sockets and tear
24
+ * down the Redis subscriber.
25
+ */
26
+ export interface AttachedNotifications {
27
+ /** Detach + tear down. Idempotent; safe to call from a SIGINT handler. */
28
+ shutdown(): Promise<void>;
29
+ }
30
+ /**
31
+ * Wire the RFC `/notifications` WebSocket into the api's existing
32
+ * `http.Server`, using `ws`'s `noServer` mode — same process, same
33
+ * event loop, same Redis client as `/collab` and `/presence`.
34
+ *
35
+ * Connection lifecycle:
36
+ * 1. Upgrade filter accepts `/notifications` / `/notifications/*`.
37
+ * 2. Verify the `?token=` notifications JWT (signature + issuer).
38
+ * 3. Verify `token.selfUserId` matches the `/notifications/<userId>`
39
+ * path segment — a token for user A cannot subscribe to user B's
40
+ * channel even when validly signed.
41
+ * 4. The first connection for a given userId in this process
42
+ * `subscribe`s that user's Redis channel; later connections for
43
+ * the same userId reuse the subscription (one Redis subscribe
44
+ * regardless of tab count).
45
+ * 5. On message receive, fan the `{type:'changed'}` payload out to
46
+ * every locally-connected socket for that userId.
47
+ * 6. On close, unregister the connection; the last `close` for a
48
+ * userId `unsubscribe`s the Redis channel so the subscriber's
49
+ * working set stays bounded.
50
+ *
51
+ * Degrade: when `crowi.redis === null` (single-instance dev with
52
+ * `REDIS_URL` unset) we skip subscribe/unsubscribe entirely. The
53
+ * WebSocket still accepts connections — the model layer's publish
54
+ * also no-ops — so the channel is silent but the API + handler boot
55
+ * cleanly and the dev experience is "no realtime invalidation, next
56
+ * user action triggers react-query refetch".
57
+ *
58
+ * Boot order: call after `setupModels` + `setupRedisClient`. The api's
59
+ * `Crowi.start` invokes this right next to `attachCollabServer` /
60
+ * `attachPresenceServer`.
61
+ */
62
+ export declare function attachNotificationsServer(httpServer: HttpServer, crowi: Crowi): Promise<AttachedNotifications>;
63
+ export { NOTIFICATIONS_CHANNEL_PREFIX, channelForUser } from './channel';
@@ -0,0 +1,426 @@
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.channelForUser = exports.NOTIFICATIONS_CHANNEL_PREFIX = void 0;
7
+ exports.attachNotificationsServer = attachNotificationsServer;
8
+ const debug_1 = __importDefault(require("debug"));
9
+ const ws_1 = require("ws");
10
+ const api_contract_1 = require("@crowi/api-contract");
11
+ const notifications_token_1 = require("../util/notifications-token");
12
+ const channel_1 = require("./channel");
13
+ const debug = (0, debug_1.default)('crowi:notifications:attach');
14
+ /**
15
+ * Path namespace the notifications WebSocket answers on. The browser
16
+ * dials `/notifications/<userId>?token=<notificationsToken>`; the
17
+ * upgrade filter accepts both the bare `/notifications` and
18
+ * `/notifications/...` so the design mirrors `presence/attach.ts` /
19
+ * `collab/attach.ts` exactly (sibling upgrade handlers coexist on one
20
+ * http.Server listener).
21
+ */
22
+ const NOTIFICATIONS_PATH = '/notifications';
23
+ /**
24
+ * WebSocket close codes the notifications handler uses. 4401 / 4403
25
+ * are in the 4000–4999 application-private range and mirror the
26
+ * presence handler so a shared client backoff layer can interpret
27
+ * them consistently; 1001 ("going away") is the standard code for a
28
+ * graceful server shutdown.
29
+ */
30
+ const WS_CLOSE = {
31
+ INVALID_TOKEN: 4401,
32
+ FORBIDDEN: 4403,
33
+ SHUTDOWN: 1001,
34
+ };
35
+ /**
36
+ * Grace window between asking sockets to close politely and force-
37
+ * terminating stragglers on shutdown. Mirrors presence / collab.
38
+ */
39
+ const SHUTDOWN_DRAIN_MS = 500;
40
+ /** Split a request URL into its pathname and raw query string. */
41
+ const splitUrl = (rawUrl) => {
42
+ const queryIdx = rawUrl.indexOf('?');
43
+ return queryIdx < 0 ? { pathname: rawUrl, query: '' } : { pathname: rawUrl.slice(0, queryIdx), query: rawUrl.slice(queryIdx + 1) };
44
+ };
45
+ /**
46
+ * Wire the RFC `/notifications` WebSocket into the api's existing
47
+ * `http.Server`, using `ws`'s `noServer` mode — same process, same
48
+ * event loop, same Redis client as `/collab` and `/presence`.
49
+ *
50
+ * Connection lifecycle:
51
+ * 1. Upgrade filter accepts `/notifications` / `/notifications/*`.
52
+ * 2. Verify the `?token=` notifications JWT (signature + issuer).
53
+ * 3. Verify `token.selfUserId` matches the `/notifications/<userId>`
54
+ * path segment — a token for user A cannot subscribe to user B's
55
+ * channel even when validly signed.
56
+ * 4. The first connection for a given userId in this process
57
+ * `subscribe`s that user's Redis channel; later connections for
58
+ * the same userId reuse the subscription (one Redis subscribe
59
+ * regardless of tab count).
60
+ * 5. On message receive, fan the `{type:'changed'}` payload out to
61
+ * every locally-connected socket for that userId.
62
+ * 6. On close, unregister the connection; the last `close` for a
63
+ * userId `unsubscribe`s the Redis channel so the subscriber's
64
+ * working set stays bounded.
65
+ *
66
+ * Degrade: when `crowi.redis === null` (single-instance dev with
67
+ * `REDIS_URL` unset) we skip subscribe/unsubscribe entirely. The
68
+ * WebSocket still accepts connections — the model layer's publish
69
+ * also no-ops — so the channel is silent but the API + handler boot
70
+ * cleanly and the dev experience is "no realtime invalidation, next
71
+ * user action triggers react-query refetch".
72
+ *
73
+ * Boot order: call after `setupModels` + `setupRedisClient`. The api's
74
+ * `Crowi.start` invokes this right next to `attachCollabServer` /
75
+ * `attachPresenceServer`.
76
+ */
77
+ async function attachNotificationsServer(httpServer, crowi) {
78
+ const tokenUtil = (0, notifications_token_1.createNotificationsTokenUtil)();
79
+ // `crowi.redis` is typed `any` on the Crowi class; narrow to the
80
+ // structural client surface (or null) the handler expects. When
81
+ // Redis is unavailable the handler runs in degraded mode (no pub/sub).
82
+ const primaryRedis = crowi.redis ?? null;
83
+ // Dedicated subscriber client — node-redis v4 puts a connection into
84
+ // subscriber mode on `subscribe`, after which it can no longer issue
85
+ // regular commands. publish happens on the original `crowi.redis`
86
+ // (see `models/notification.ts`), subscribe on this duplicate.
87
+ let subscriber = null;
88
+ if (primaryRedis !== null) {
89
+ try {
90
+ const dup = primaryRedis.duplicate();
91
+ await dup.connect();
92
+ subscriber = dup;
93
+ debug('notifications pub/sub subscriber connected');
94
+ }
95
+ catch (err) {
96
+ // A subscriber failure degrades notifications to single-instance
97
+ // behaviour for *this* process — locally-connected clients still
98
+ // miss invalidations published from elsewhere. Never fatal.
99
+ console.warn('[crowi:notifications] pub/sub subscriber setup failed — cross-instance fan-out disabled:', err.message);
100
+ }
101
+ }
102
+ // `noServer: true` — the upgrade handshake is owned by the api
103
+ // process; we forward only `/notifications/*` upgrades here.
104
+ const wss = new ws_1.WebSocketServer({ noServer: true });
105
+ // userId → set of live sockets for that user (multi-tab). Drives:
106
+ // - the lazy subscribe/unsubscribe of Redis channels (first/last
107
+ // socket for a userId triggers it),
108
+ // - the per-channel fan-out (resolve receiver sockets by userId),
109
+ // - the shutdown drain (iterate every socket once).
110
+ const connectionsByUser = new Map();
111
+ /**
112
+ * Per-user serialisation chain for Redis subscribe / unsubscribe.
113
+ *
114
+ * Race scenario we are guarding against:
115
+ * 1. User A's last tab closes → handleClose schedules an async
116
+ * `unsubscribe`.
117
+ * 2. Before that unsubscribe completes, user A's NEW tab opens →
118
+ * wireConnection sees an empty set and schedules a `subscribe`.
119
+ * 3. The two ops can land in any order on the Redis subscriber;
120
+ * if unsubscribe wins, the new tab is left without a live
121
+ * subscription and silently misses every invalidation.
122
+ *
123
+ * Fix: chain every subscribe/unsubscribe for a given userId through
124
+ * a single promise so they run FIFO. The chain entry is deleted
125
+ * after the op resolves and the chain is empty, so the map does
126
+ * not leak. We do not care about retaining the resolved value —
127
+ * `.then(() => actualOp())` is enough to ensure ordering.
128
+ */
129
+ const channelOps = new Map();
130
+ const chainChannelOp = (userId, op) => {
131
+ const prev = channelOps.get(userId) ?? Promise.resolve();
132
+ // `.then(op)` schedules `op` after `prev` settles successfully;
133
+ // since every chain link below catches its own errors, the
134
+ // previous link always resolves, so the next link always runs.
135
+ const next = prev.then(op).catch(() => {
136
+ // Errors are already logged inside ensureSubscribed /
137
+ // ensureUnsubscribed — swallow here so a single failure does
138
+ // not break the chain for subsequent ops on the same user.
139
+ });
140
+ channelOps.set(userId, next);
141
+ void next.finally(() => {
142
+ // Best-effort cleanup so a long-lived process does not retain
143
+ // a settled promise per user forever.
144
+ if (channelOps.get(userId) === next) {
145
+ channelOps.delete(userId);
146
+ }
147
+ });
148
+ return next;
149
+ };
150
+ /** Send a JSON message to one socket; ignore a dead socket. */
151
+ const sendJson = (ws, payload) => {
152
+ if (ws.readyState !== ws.OPEN)
153
+ return;
154
+ try {
155
+ ws.send(JSON.stringify(payload));
156
+ }
157
+ catch (err) {
158
+ debug('send failed: %s', err.message);
159
+ }
160
+ };
161
+ /**
162
+ * Redis subscriber message handler — fan the `changed` signal out
163
+ * to every locally-connected socket for the receiving userId. The
164
+ * payload from Redis is the JSON `{type:'changed'}` string the
165
+ * model layer publishes; we parse it once as a JSON-validation gate
166
+ * (a non-JSON publish is necessarily not ours and is dropped) and
167
+ * then schema-validate against `NotificationsServerMessageSchema`
168
+ * before re-serialising via `sendJson` for each receiver. Defence
169
+ * in depth: a foreign / malformed publish on the channel never
170
+ * reaches the browser, regardless of what put it there.
171
+ */
172
+ const handleRedisMessage = (userId, message) => {
173
+ const sockets = connectionsByUser.get(userId);
174
+ if (!sockets || sockets.size === 0)
175
+ return;
176
+ let payload;
177
+ try {
178
+ payload = JSON.parse(message);
179
+ }
180
+ catch {
181
+ // Drop a malformed publish — the broadcast contract is JSON, so
182
+ // a non-JSON message is necessarily not ours.
183
+ debug('drop non-JSON publish on user %s channel', userId);
184
+ return;
185
+ }
186
+ const parsed = api_contract_1.NotificationsServerMessageSchema.safeParse(payload);
187
+ if (!parsed.success) {
188
+ // A shape that doesn't match the contract is necessarily not the
189
+ // model layer's publish — drop it rather than leaking arbitrary
190
+ // JSON to the browser.
191
+ debug('drop schema-invalid publish on user %s channel: %s', userId, parsed.error.issues.map((i) => i.message).join('; '));
192
+ return;
193
+ }
194
+ for (const conn of sockets) {
195
+ sendJson(conn.ws, parsed.data);
196
+ }
197
+ };
198
+ /**
199
+ * Subscribe this process to a user's channel on first connection.
200
+ * No-ops when the subscriber is unavailable (degrade mode).
201
+ *
202
+ * Serialised through the per-user `channelOps` chain so a pending
203
+ * unsubscribe completes before we attempt the subscribe — see the
204
+ * `channelOps` block above for the race rationale.
205
+ */
206
+ const ensureSubscribed = (userId) => {
207
+ if (subscriber === null)
208
+ return Promise.resolve();
209
+ return chainChannelOp(userId, async () => {
210
+ try {
211
+ await subscriber.subscribe((0, channel_1.channelForUser)(userId), (message) => {
212
+ handleRedisMessage(userId, message);
213
+ });
214
+ debug('subscribed user %s channel', userId);
215
+ }
216
+ catch (err) {
217
+ console.warn(`[crowi:notifications] subscribe failed for user ${userId}:`, err.message);
218
+ }
219
+ });
220
+ };
221
+ /**
222
+ * Unsubscribe a user's channel when the last connection closes.
223
+ * No-ops when the subscriber is unavailable (degrade mode).
224
+ *
225
+ * Serialised through the per-user `channelOps` chain (see
226
+ * `ensureSubscribed`).
227
+ */
228
+ const ensureUnsubscribed = (userId) => {
229
+ if (subscriber === null)
230
+ return Promise.resolve();
231
+ return chainChannelOp(userId, async () => {
232
+ try {
233
+ await subscriber.unsubscribe((0, channel_1.channelForUser)(userId));
234
+ debug('unsubscribed user %s channel', userId);
235
+ }
236
+ catch (err) {
237
+ debug('unsubscribe failed for user %s: %s', userId, err.message);
238
+ }
239
+ });
240
+ };
241
+ /**
242
+ * Wire one freshly-upgraded `ws.WebSocket`. Authentication runs
243
+ * inline: a bad token / userId mismatch closes the socket
244
+ * immediately. A clean connection is registered and the user's
245
+ * Redis channel is (lazily) subscribed.
246
+ */
247
+ const wireConnection = async (ws, request) => {
248
+ const { pathname, query } = splitUrl(request.url ?? '');
249
+ const token = new URLSearchParams(query).get('token') ?? '';
250
+ // 1. Token must verify (signature + issuer + schema).
251
+ const claims = token.length > 0 ? tokenUtil.verifyNotificationsToken(token) : null;
252
+ if (!claims) {
253
+ debug('reject: notifications token missing / invalid');
254
+ ws.close(WS_CLOSE.INVALID_TOKEN, 'invalid token');
255
+ return;
256
+ }
257
+ // 2. `/notifications/<userId>` path segment, when present, must
258
+ // match the token. The bare `/notifications` form is also
259
+ // accepted (the token is the authoritative userId source).
260
+ //
261
+ // Path handling:
262
+ // - decodeURIComponent on the raw segment so a userId that
263
+ // contains URI-reserved characters (e.g. SSO ids like
264
+ // `user%40foo`) is compared to `selfUserId` in its decoded
265
+ // form (otherwise an encoded form would never match a
266
+ // plain-text token claim).
267
+ // - Strip a trailing slash so `/notifications/<id>/` (some
268
+ // reverse proxies normalise to this) is accepted as
269
+ // equivalent to `/notifications/<id>`.
270
+ // - Reject any extra path segment (`/notifications/<id>/...`)
271
+ // — it is outside the spec and we'd rather be explicit
272
+ // than silently accept whatever a misbehaving proxy sends.
273
+ const rawSegment = pathname.startsWith(`${NOTIFICATIONS_PATH}/`) ? pathname.slice(NOTIFICATIONS_PATH.length + 1) : '';
274
+ let pathSegment = '';
275
+ if (rawSegment.length > 0) {
276
+ let decoded;
277
+ try {
278
+ decoded = decodeURIComponent(rawSegment);
279
+ }
280
+ catch {
281
+ debug('reject: malformed percent-encoding in path segment %s', rawSegment);
282
+ ws.close(WS_CLOSE.FORBIDDEN, 'forbidden');
283
+ return;
284
+ }
285
+ const normalised = decoded.replace(/\/+$/, '');
286
+ if (normalised.includes('/')) {
287
+ debug('reject: extra path segment after userId: %s', normalised);
288
+ ws.close(WS_CLOSE.FORBIDDEN, 'forbidden');
289
+ return;
290
+ }
291
+ pathSegment = normalised;
292
+ }
293
+ if (pathSegment.length > 0 && pathSegment !== claims.selfUserId) {
294
+ debug('reject: path userId %s != token selfUserId %s', pathSegment, claims.selfUserId);
295
+ ws.close(WS_CLOSE.FORBIDDEN, 'forbidden');
296
+ return;
297
+ }
298
+ const userId = claims.selfUserId;
299
+ const conn = { ws, userId };
300
+ // Register the close handler BEFORE the await on
301
+ // `ensureSubscribed` so a socket that closes during the subscribe
302
+ // round-trip is reconciled cleanly — same race-window fix as
303
+ // presence/attach.ts (see the rationale comment there).
304
+ let closed = false;
305
+ ws.on('close', () => {
306
+ closed = true;
307
+ void handleClose(conn);
308
+ });
309
+ ws.on('error', (err) => {
310
+ // A single bad socket must not crash the api process.
311
+ console.error('[crowi:notifications] websocket error', err);
312
+ });
313
+ const sockets = connectionsByUser.get(userId);
314
+ const isFirstForUser = !sockets || sockets.size === 0;
315
+ if (sockets) {
316
+ sockets.add(conn);
317
+ }
318
+ else {
319
+ connectionsByUser.set(userId, new Set([conn]));
320
+ }
321
+ if (isFirstForUser) {
322
+ await ensureSubscribed(userId);
323
+ }
324
+ // The socket closed while subscribe was in flight — the close
325
+ // handler may have already run before the connection was tracked.
326
+ // Reconcile by running close cleanup once: deleting an absent
327
+ // socket from the set is a no-op, and `handleClose` does the
328
+ // unsubscribe when the set empties.
329
+ if (closed) {
330
+ debug('notifications socket closed during setup user=%s', userId);
331
+ void handleClose(conn);
332
+ return;
333
+ }
334
+ debug('notifications connected user=%s', userId);
335
+ };
336
+ /** Handle a socket close — drop the connection and maybe unsubscribe. */
337
+ const handleClose = async (conn) => {
338
+ const sockets = connectionsByUser.get(conn.userId);
339
+ if (!sockets)
340
+ return;
341
+ sockets.delete(conn);
342
+ if (sockets.size > 0)
343
+ return;
344
+ connectionsByUser.delete(conn.userId);
345
+ await ensureUnsubscribed(conn.userId);
346
+ };
347
+ /**
348
+ * `'upgrade'` handler. Path-filter first so the sibling `/collab` /
349
+ * `/presence` handlers keep their slot; `socket.destroy()` is
350
+ * intentionally NOT called on a no-match so Node moves on to the
351
+ * next listener.
352
+ */
353
+ const upgradeHandler = (request, socket, head) => {
354
+ const { pathname } = splitUrl(request.url ?? '');
355
+ if (pathname !== NOTIFICATIONS_PATH && !pathname.startsWith(`${NOTIFICATIONS_PATH}/`)) {
356
+ return; // not ours — let other upgrade handlers try.
357
+ }
358
+ wss.handleUpgrade(request, socket, head, (ws) => {
359
+ void wireConnection(ws, request);
360
+ });
361
+ };
362
+ httpServer.on('upgrade', upgradeHandler);
363
+ debug('notifications attached to http.Server (path=%s, redis=%s)', NOTIFICATIONS_PATH, subscriber !== null ? 'on' : 'off');
364
+ let didShutdown = false;
365
+ return {
366
+ async shutdown() {
367
+ if (didShutdown)
368
+ return;
369
+ didShutdown = true;
370
+ // 1. Refuse new upgrades.
371
+ try {
372
+ httpServer.off('upgrade', upgradeHandler);
373
+ }
374
+ catch {
375
+ // best-effort — server may already be tearing down.
376
+ }
377
+ // 2. Politely close every live socket.
378
+ for (const sockets of connectionsByUser.values()) {
379
+ for (const conn of sockets) {
380
+ try {
381
+ conn.ws.close(WS_CLOSE.SHUTDOWN, 'server shutting down');
382
+ }
383
+ catch {
384
+ // ignore — best-effort
385
+ }
386
+ }
387
+ }
388
+ // 3. Brief drain so close frames flush.
389
+ if (connectionsByUser.size > 0) {
390
+ await new Promise((resolveDrain) => setTimeout(resolveDrain, SHUTDOWN_DRAIN_MS));
391
+ }
392
+ // 4. Force-terminate stragglers.
393
+ try {
394
+ for (const sockets of connectionsByUser.values()) {
395
+ for (const conn of sockets) {
396
+ try {
397
+ conn.ws.terminate();
398
+ }
399
+ catch {
400
+ // ignore
401
+ }
402
+ }
403
+ }
404
+ connectionsByUser.clear();
405
+ wss.close();
406
+ }
407
+ catch (err) {
408
+ console.error('[crowi:notifications] wss.close failed during shutdown:', err);
409
+ }
410
+ // 5. Tear down the Redis subscriber (when one was built).
411
+ if (subscriber !== null) {
412
+ try {
413
+ await subscriber.disconnect();
414
+ }
415
+ catch (err) {
416
+ debug('subscriber disconnect failed: %s', err.message);
417
+ }
418
+ subscriber = null;
419
+ }
420
+ },
421
+ };
422
+ }
423
+ var channel_2 = require("./channel");
424
+ Object.defineProperty(exports, "NOTIFICATIONS_CHANNEL_PREFIX", { enumerable: true, get: function () { return channel_2.NOTIFICATIONS_CHANNEL_PREFIX; } });
425
+ Object.defineProperty(exports, "channelForUser", { enumerable: true, get: function () { return channel_2.channelForUser; } });
426
+ //# sourceMappingURL=attach.js.map