@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,27 @@
1
+ /**
2
+ * Test-only fixture plugin for Phase 4 e2e tests. Provides a single
3
+ * embed-tag `@[echo](payload)` that renders the trivial
4
+ * `<div class="echo">payload</div>` so we can validate the parse →
5
+ * cache miss → render → cache set → re-read flow end-to-end without
6
+ * a real I/O plugin.
7
+ *
8
+ * **MUST NOT be imported from production code paths.** This file lives
9
+ * under `__fixtures__/` to make the boundary visible to humans /
10
+ * code reviewers. The `render()` function additionally probes
11
+ * `process.env.NODE_ENV` and throws when invoked outside of `test`
12
+ * so an accidental production import surfaces immediately on first
13
+ * call (rather than silently shipping a debug-only renderer).
14
+ *
15
+ * Will be removed once Phase 6/7 ships a real plugin (PlantUML /
16
+ * KaTeX / Mermaid / GitHub Embed).
17
+ */
18
+ import type { EmbedRenderer } from '@crowi/plugin-api';
19
+ export declare const ECHO_TAG = "echo";
20
+ /** Bump if the fixture's output shape changes; not exercised but kept for parity with real plugins. */
21
+ export declare const ECHO_CACHE_VERSION = 1;
22
+ /**
23
+ * Simple `@[echo](payload)` → `<div class="echo">payload</div>` renderer.
24
+ * The output html is HTML-escape-free on purpose — payloads in tests
25
+ * are controlled and the assertion targets the verbatim string.
26
+ */
27
+ export declare const echoEmbedRenderer: EmbedRenderer;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.echoEmbedRenderer = exports.ECHO_CACHE_VERSION = exports.ECHO_TAG = void 0;
4
+ exports.ECHO_TAG = 'echo';
5
+ /** Bump if the fixture's output shape changes; not exercised but kept for parity with real plugins. */
6
+ exports.ECHO_CACHE_VERSION = 1;
7
+ /**
8
+ * Simple `@[echo](payload)` → `<div class="echo">payload</div>` renderer.
9
+ * The output html is HTML-escape-free on purpose — payloads in tests
10
+ * are controlled and the assertion targets the verbatim string.
11
+ */
12
+ exports.echoEmbedRenderer = {
13
+ cacheVersion: exports.ECHO_CACHE_VERSION,
14
+ render: async (input) => {
15
+ if (process.env.NODE_ENV !== 'test') {
16
+ throw new Error('[crowi:renderer:__fixtures__/echo-embed] This fixture plugin is for tests only. Do not register it from production code.');
17
+ }
18
+ return {
19
+ html: `<div class="echo">${input.url}</div>`,
20
+ ttlSec: 300,
21
+ };
22
+ },
23
+ };
24
+ //# sourceMappingURL=echo-embed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo-embed.js","sourceRoot":"","sources":["../../../src/renderer/__fixtures__/echo-embed.ts"],"names":[],"mappings":";;;AAmBa,QAAA,QAAQ,GAAG,MAAM,CAAC;AAE/B,uGAAuG;AAC1F,QAAA,kBAAkB,GAAG,CAAC,CAAC;AAEpC;;;;GAIG;AACU,QAAA,iBAAiB,GAAkB;IAC9C,YAAY,EAAE,0BAAkB;IAChC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,0HAA0H,CAAC,CAAC;QAC9I,CAAC;QACD,OAAO;YACL,IAAI,EAAE,qBAAqB,KAAK,CAAC,GAAG,QAAQ;YAC5C,MAAM,EAAE,GAAG;SACZ,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { CacheStorage, EmbedInput, EmbedRenderer, RenderContext, RenderError, RenderResult, ScopedCacheStorage } from '@crowi/plugin-api';
2
+ import { MongoCacheStorage } from './mongodb-cache';
3
+ export { MongoCacheStorage, createMongoCacheStorage } from './mongodb-cache';
4
+ export { errorPlaceholder, sizeLimitPlaceholder, renderReservation } from './reservation';
5
+ export type { CacheSetReject } from './mongodb-cache';
6
+ /**
7
+ * Default fresh-TTL when `RenderResult.ttlSec` is unset. RFC §"Stale-
8
+ * while-revalidate".
9
+ */
10
+ export declare const DEFAULT_FRESH_TTL_SEC: number;
11
+ /**
12
+ * Default `staleAfterSec` multiplier — entries stay revalidate-in-
13
+ * background until `ttlSec * 4`, after which a read blocks on the
14
+ * re-render.
15
+ */
16
+ export declare const DEFAULT_STALE_MULTIPLIER = 4;
17
+ /**
18
+ * Per-code TTLs for cached error responses (RFC §"Error caching").
19
+ * `rate_limit` is overridable per-call via `RenderError.retryAfterSec`.
20
+ */
21
+ export declare const RENDER_ERROR_TTL: Readonly<Record<RenderError['code'], number>>;
22
+ /**
23
+ * Compute the cache embed-key for an input. Default
24
+ * `sha256(JSON.stringify(input))` keeps callers honest about input
25
+ * stability; plugins can override via `EmbedRenderer.computeEmbedKey`
26
+ * to canonicalise query strings, ignore tracking params, etc.
27
+ */
28
+ export declare function defaultEmbedKey(input: EmbedInput): string;
29
+ /**
30
+ * Wrap a `CacheStorage` in a per-plugin view that auto-stamps
31
+ * `pluginName` on every key. Plugins receive this on
32
+ * `RenderContext.cache` and never see other plugins' entries.
33
+ */
34
+ export declare function scopeForPlugin(storage: CacheStorage, pluginName: string): ScopedCacheStorage;
35
+ /** What `cachedRender` may return — html plus a freshness hint for SSR layers. */
36
+ export interface CachedRenderResult {
37
+ html: string;
38
+ /** 'fresh' | 'stale' so a caller can emit `data-stale="true"` if desired. */
39
+ freshness: 'fresh' | 'stale';
40
+ /** The full `RenderResult` (errors included) for downstream telemetry. */
41
+ result: RenderResult;
42
+ }
43
+ /**
44
+ * Stale-while-revalidate wrapper for a single embed render. Resolves
45
+ * the four cases:
46
+ *
47
+ * - **miss**: render now, cache, return fresh.
48
+ * - **hit + fresh** (`now < expiresAt`): return cached, no re-render.
49
+ * - **hit + stale-within-window** (`expiresAt < now < expiresAt + (stale*ttl)`):
50
+ * return cached, fire background re-render.
51
+ * - **hit + expired**: block on re-render, cache, return.
52
+ *
53
+ * Errors from `render()` (both thrown and `RenderResult.error`) cache
54
+ * with `RENDER_ERROR_TTL[code]` and surface an error placeholder.
55
+ *
56
+ * NOTE: this is the **internal** wrapper used by Phase 4 core plugins
57
+ * (`embed-tags.ts`, `url-inline-expand.ts`). Plugins do not call it
58
+ * directly; they call `EmbedRenderer.render()` and the core wraps.
59
+ */
60
+ export declare function cachedRender(storage: MongoCacheStorage, pluginName: string, renderer: EmbedRenderer, input: EmbedInput, ctx: RenderContext): Promise<CachedRenderResult>;
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RENDER_ERROR_TTL = exports.DEFAULT_STALE_MULTIPLIER = exports.DEFAULT_FRESH_TTL_SEC = exports.renderReservation = exports.sizeLimitPlaceholder = exports.errorPlaceholder = exports.createMongoCacheStorage = exports.MongoCacheStorage = void 0;
4
+ exports.defaultEmbedKey = defaultEmbedKey;
5
+ exports.scopeForPlugin = scopeForPlugin;
6
+ exports.cachedRender = cachedRender;
7
+ const node_crypto_1 = require("node:crypto");
8
+ const reservation_1 = require("./reservation");
9
+ var mongodb_cache_1 = require("./mongodb-cache");
10
+ Object.defineProperty(exports, "MongoCacheStorage", { enumerable: true, get: function () { return mongodb_cache_1.MongoCacheStorage; } });
11
+ Object.defineProperty(exports, "createMongoCacheStorage", { enumerable: true, get: function () { return mongodb_cache_1.createMongoCacheStorage; } });
12
+ var reservation_2 = require("./reservation");
13
+ Object.defineProperty(exports, "errorPlaceholder", { enumerable: true, get: function () { return reservation_2.errorPlaceholder; } });
14
+ Object.defineProperty(exports, "sizeLimitPlaceholder", { enumerable: true, get: function () { return reservation_2.sizeLimitPlaceholder; } });
15
+ Object.defineProperty(exports, "renderReservation", { enumerable: true, get: function () { return reservation_2.renderReservation; } });
16
+ /**
17
+ * Default fresh-TTL when `RenderResult.ttlSec` is unset. RFC §"Stale-
18
+ * while-revalidate".
19
+ */
20
+ exports.DEFAULT_FRESH_TTL_SEC = 5 * 60; // 5min
21
+ /**
22
+ * Default `staleAfterSec` multiplier — entries stay revalidate-in-
23
+ * background until `ttlSec * 4`, after which a read blocks on the
24
+ * re-render.
25
+ */
26
+ exports.DEFAULT_STALE_MULTIPLIER = 4;
27
+ /**
28
+ * Per-code TTLs for cached error responses (RFC §"Error caching").
29
+ * `rate_limit` is overridable per-call via `RenderError.retryAfterSec`.
30
+ */
31
+ exports.RENDER_ERROR_TTL = {
32
+ auth: 60,
33
+ rate_limit: 5 * 60,
34
+ not_found: 60 * 60,
35
+ network: 5 * 60,
36
+ timeout: 5 * 60,
37
+ unknown: 5 * 60,
38
+ };
39
+ /**
40
+ * Compute the cache embed-key for an input. Default
41
+ * `sha256(JSON.stringify(input))` keeps callers honest about input
42
+ * stability; plugins can override via `EmbedRenderer.computeEmbedKey`
43
+ * to canonicalise query strings, ignore tracking params, etc.
44
+ */
45
+ function defaultEmbedKey(input) {
46
+ const json = JSON.stringify({ tag: input.tag, url: input.url });
47
+ return (0, node_crypto_1.createHash)('sha256').update(json).digest('hex');
48
+ }
49
+ /**
50
+ * Wrap a `CacheStorage` in a per-plugin view that auto-stamps
51
+ * `pluginName` on every key. Plugins receive this on
52
+ * `RenderContext.cache` and never see other plugins' entries.
53
+ */
54
+ function scopeForPlugin(storage, pluginName) {
55
+ return {
56
+ async get(key) {
57
+ return storage.get({ ...key, pluginName });
58
+ },
59
+ async set(key, entry) {
60
+ await storage.set({ ...key, pluginName }, entry);
61
+ },
62
+ async invalidatePage(pageId) {
63
+ // Pull only this plugin's entries on this page. The underlying
64
+ // storage's `invalidatePlugin` would nuke other pages too, so we
65
+ // intentionally do not expose it through the scoped view.
66
+ return storage.invalidatePage(pageId);
67
+ },
68
+ };
69
+ }
70
+ // Process-wide in-flight tracker — collapses concurrent renders for the
71
+ // same cache key into a single upstream call. Without this, K viewers
72
+ // of a page entering the stale window each kick off a background
73
+ // `renderAndStore`, multiplying load against the plugin's upstream
74
+ // (`addEmbedTag` is typically a GitHub / Slack / KaTeX / Mermaid call).
75
+ const inFlightRender = new Map();
76
+ function cacheKeyString(key) {
77
+ return `${key.pluginName}${key.pluginCacheVersion}${key.pageId}${key.embedKey}`;
78
+ }
79
+ /**
80
+ * Stale-while-revalidate wrapper for a single embed render. Resolves
81
+ * the four cases:
82
+ *
83
+ * - **miss**: render now, cache, return fresh.
84
+ * - **hit + fresh** (`now < expiresAt`): return cached, no re-render.
85
+ * - **hit + stale-within-window** (`expiresAt < now < expiresAt + (stale*ttl)`):
86
+ * return cached, fire background re-render.
87
+ * - **hit + expired**: block on re-render, cache, return.
88
+ *
89
+ * Errors from `render()` (both thrown and `RenderResult.error`) cache
90
+ * with `RENDER_ERROR_TTL[code]` and surface an error placeholder.
91
+ *
92
+ * NOTE: this is the **internal** wrapper used by Phase 4 core plugins
93
+ * (`embed-tags.ts`, `url-inline-expand.ts`). Plugins do not call it
94
+ * directly; they call `EmbedRenderer.render()` and the core wraps.
95
+ */
96
+ async function cachedRender(storage, pluginName, renderer, input, ctx) {
97
+ const embedKey = renderer.computeEmbedKey ? renderer.computeEmbedKey(input) : defaultEmbedKey(input);
98
+ const key = {
99
+ pluginName,
100
+ pluginCacheVersion: renderer.cacheVersion,
101
+ pageId: input.pageId,
102
+ embedKey,
103
+ };
104
+ const cached = await storage.get(key);
105
+ const now = Date.now();
106
+ if (cached) {
107
+ const expiresMs = cached.expiresAt.getTime();
108
+ const ttlMs = expiresMs - cached.fetchedAt.getTime();
109
+ const staleWindowMs = ttlMs * exports.DEFAULT_STALE_MULTIPLIER;
110
+ const isFresh = now < expiresMs;
111
+ const isWithinStaleWindow = !isFresh && now < expiresMs + staleWindowMs;
112
+ if (isFresh) {
113
+ return { html: cached.html, freshness: 'fresh', result: cached.result };
114
+ }
115
+ if (isWithinStaleWindow) {
116
+ // Skip the background fire if a re-render is already in flight
117
+ // for this cache key — otherwise K concurrent viewers each kick
118
+ // off a parallel `render()` and amplify upstream load by K.
119
+ const ks = cacheKeyString(key);
120
+ if (!inFlightRender.has(ks)) {
121
+ // `setImmediate` rather than `Promise.resolve().then` so it
122
+ // lands at the start of the next event loop tick (lower priority
123
+ // than the in-flight request).
124
+ setImmediate(() => {
125
+ void dedupedRenderAndStore(ks, storage, key, renderer, input, ctx).catch((err) => {
126
+ ctx.log.warn(`[plugin-render-cache] background re-render failed for plugin=${pluginName} pageId=${input.pageId}: ${stringifyError(err)}`);
127
+ });
128
+ });
129
+ }
130
+ return { html: cached.html, freshness: 'stale', result: cached.result };
131
+ }
132
+ // expired beyond stale window — block on re-render.
133
+ }
134
+ // miss or expired: render now (de-duped against any concurrent miss
135
+ // for the same key — second viewer awaits the first viewer's render).
136
+ const ks = cacheKeyString(key);
137
+ const result = await dedupedRenderAndStore(ks, storage, key, renderer, input, ctx);
138
+ return { html: result.html, freshness: 'fresh', result: result.result };
139
+ }
140
+ function dedupedRenderAndStore(ks, storage, key, renderer, input, ctx) {
141
+ const existing = inFlightRender.get(ks);
142
+ if (existing)
143
+ return existing;
144
+ const p = renderAndStore(storage, key, renderer, input, ctx).finally(() => {
145
+ inFlightRender.delete(ks);
146
+ });
147
+ inFlightRender.set(ks, p);
148
+ return p;
149
+ }
150
+ async function renderAndStore(storage, key, renderer, input, ctx) {
151
+ let result;
152
+ try {
153
+ result = await renderer.render(input, ctx);
154
+ }
155
+ catch (err) {
156
+ // Thrown error → treat as `unknown` and cache.
157
+ result = {
158
+ html: '',
159
+ error: {
160
+ code: 'unknown',
161
+ message: stringifyError(err),
162
+ },
163
+ };
164
+ }
165
+ const now = new Date();
166
+ const ttlSec = pickTtl(result);
167
+ const expiresAt = new Date(now.getTime() + ttlSec * 1000);
168
+ // Error responses get a fixed placeholder regardless of what the
169
+ // plugin returned in `html`. We still cache the plugin's error meta
170
+ // so admin telemetry has context.
171
+ const html = result.error ? (0, reservation_1.errorPlaceholder)(result.error.code, renderer.reservation) : result.html;
172
+ const cachedHtml = html;
173
+ const cacheEntry = {
174
+ html: cachedHtml,
175
+ result: { ...result, html: cachedHtml },
176
+ fetchedAt: now,
177
+ expiresAt,
178
+ };
179
+ const rejection = await storage.setOrReject(key, cacheEntry);
180
+ if (rejection) {
181
+ // Size-limit reject → fall back to a placeholder for THIS render
182
+ // call. We don't write the placeholder to the cache (it would
183
+ // pollute the slot if the plugin shrinks its output later); the
184
+ // next read just sees a miss and re-renders.
185
+ return {
186
+ html: (0, reservation_1.sizeLimitPlaceholder)(rejection, renderer.reservation),
187
+ result: cacheEntry.result,
188
+ };
189
+ }
190
+ return { html: cachedHtml, result: cacheEntry.result };
191
+ }
192
+ /**
193
+ * Resolve the effective fresh-TTL for a render result. Error responses
194
+ * use the per-code default table (with `retryAfterSec` override for
195
+ * rate-limit); successful responses honour `RenderResult.ttlSec` or
196
+ * fall back to `DEFAULT_FRESH_TTL_SEC`.
197
+ */
198
+ function pickTtl(result) {
199
+ if (result.error) {
200
+ if (result.error.code === 'rate_limit' && typeof result.error.retryAfterSec === 'number') {
201
+ return Math.max(1, result.error.retryAfterSec);
202
+ }
203
+ return exports.RENDER_ERROR_TTL[result.error.code];
204
+ }
205
+ return result.ttlSec ?? exports.DEFAULT_FRESH_TTL_SEC;
206
+ }
207
+ function stringifyError(err) {
208
+ if (err instanceof Error)
209
+ return err.message;
210
+ if (typeof err === 'string')
211
+ return err;
212
+ try {
213
+ return JSON.stringify(err);
214
+ }
215
+ catch {
216
+ return String(err);
217
+ }
218
+ }
219
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderer/cache/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { CacheEntry, CacheKey, CacheStorage } from '@crowi/plugin-api';
2
+ import type Crowi from '../../crowi';
3
+ import type { PluginRenderCacheModel } from '../../models/plugin-render-cache';
4
+ /**
5
+ * Per-entry warn threshold. Logged but not rejected.
6
+ * RFC §"Size limits" — 50KB warn, 100KB reject.
7
+ */
8
+ export declare const SINGLE_ENTRY_WARN_BYTES: number;
9
+ /** Per-entry reject threshold. Above this we drop the write and let the caller fall back to a placeholder. */
10
+ export declare const SINGLE_ENTRY_REJECT_BYTES: number;
11
+ /** Per-page cumulative reject threshold. */
12
+ export declare const PER_PAGE_REJECT_BYTES: number;
13
+ /** Why a `set()` call rejected the entry. Surfaced to the SWR wrapper for placeholder fallback. */
14
+ export type CacheSetReject = 'entry-too-large' | 'page-quota-exceeded';
15
+ export interface MongoCacheStorageDeps {
16
+ PluginRenderCache: PluginRenderCacheModel;
17
+ /** Logger for size-limit warnings. The cache itself is plugin-agnostic. */
18
+ log: {
19
+ warn(msg: string, ...args: unknown[]): void;
20
+ debug(msg: string, ...args: unknown[]): void;
21
+ };
22
+ }
23
+ /**
24
+ * MongoDB-backed implementation of `CacheStorage`. The schema +
25
+ * indexes live in `models/plugin-render-cache.ts`; this class is the
26
+ * thin query layer.
27
+ *
28
+ * Behaviour quirks worth noting:
29
+ *
30
+ * - **TTL defence-in-depth.** MongoDB's TTL monitor sweeps every
31
+ * ~60s, so a row whose `expiresAt` just elapsed may still be on
32
+ * disk. `get()` checks `expiresAt < now` and treats the hit as a
33
+ * miss + deletes the row so the next read is fast.
34
+ *
35
+ * - **`pluginCacheVersion` mismatch = miss.** Plugins bump their
36
+ * `cacheVersion` to invalidate every cached entry without an
37
+ * operator action. We don't actively delete stale-version rows
38
+ * (the TTL eventually does); we just refuse to return them.
39
+ *
40
+ * - **Size limits.** `set()` rejects entries `> 100KB` and entries
41
+ * that would push the page over 10MB. Both rejections log a warn
42
+ * with `pluginName` + `pageId` and surface a `CacheSetReject`
43
+ * code via the `setOrReject` helper used by the SWR wrapper.
44
+ * Entries `> 50KB` but `< 100KB` warn but write.
45
+ */
46
+ export declare class MongoCacheStorage implements CacheStorage {
47
+ private readonly deps;
48
+ constructor(deps: MongoCacheStorageDeps);
49
+ /**
50
+ * Read an entry. Returns null only when:
51
+ * - row absent
52
+ * - `pluginCacheVersion` mismatch (version bump is a logical miss)
53
+ *
54
+ * **`expiresAt < now` is NOT treated as a miss here.** The SWR
55
+ * wrapper (`cachedRender`) needs to see expired-but-within-stale-
56
+ * window entries to serve them while a background re-render runs.
57
+ * Entries past the SWR window are evicted by the wrapper itself
58
+ * after the blocking re-render; MongoDB's TTL sweep is the
59
+ * disk-reclaim safety net (RFC §"TTL index of operational note").
60
+ */
61
+ get(key: CacheKey): Promise<CacheEntry | null>;
62
+ /**
63
+ * Write an entry, replacing any existing row with the same compound
64
+ * key. Use `setOrReject` instead when callers need to know whether
65
+ * the write was rejected by size limits.
66
+ */
67
+ set(key: CacheKey, entry: CacheEntry): Promise<void>;
68
+ /**
69
+ * Like `set` but returns the rejection reason instead of silently
70
+ * dropping. Used by the SWR wrapper to fall back to a placeholder
71
+ * when an oversized payload would otherwise vanish from the cache.
72
+ */
73
+ setOrReject(key: CacheKey, entry: CacheEntry): Promise<CacheSetReject | null>;
74
+ /** Drop every cached entry for a page. Returns the number of deleted rows. */
75
+ invalidatePage(pageId: string): Promise<number>;
76
+ /** Drop every cached entry written by a single plugin. Returns the number of deleted rows. */
77
+ invalidatePlugin(pluginName: string): Promise<number>;
78
+ /** Drop every cached entry. Returns the number of deleted rows. */
79
+ invalidateAll(): Promise<number>;
80
+ }
81
+ /** Convenience factory that pulls the model + a logger from a Crowi instance. */
82
+ export declare function createMongoCacheStorage(crowi: Crowi): MongoCacheStorage;
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoCacheStorage = exports.PER_PAGE_REJECT_BYTES = exports.SINGLE_ENTRY_REJECT_BYTES = exports.SINGLE_ENTRY_WARN_BYTES = void 0;
4
+ exports.createMongoCacheStorage = createMongoCacheStorage;
5
+ const mongoose_1 = require("mongoose");
6
+ /**
7
+ * Per-entry warn threshold. Logged but not rejected.
8
+ * RFC §"Size limits" — 50KB warn, 100KB reject.
9
+ */
10
+ exports.SINGLE_ENTRY_WARN_BYTES = 50 * 1024;
11
+ /** Per-entry reject threshold. Above this we drop the write and let the caller fall back to a placeholder. */
12
+ exports.SINGLE_ENTRY_REJECT_BYTES = 100 * 1024;
13
+ /** Per-page cumulative reject threshold. */
14
+ exports.PER_PAGE_REJECT_BYTES = 10 * 1024 * 1024;
15
+ /**
16
+ * MongoDB-backed implementation of `CacheStorage`. The schema +
17
+ * indexes live in `models/plugin-render-cache.ts`; this class is the
18
+ * thin query layer.
19
+ *
20
+ * Behaviour quirks worth noting:
21
+ *
22
+ * - **TTL defence-in-depth.** MongoDB's TTL monitor sweeps every
23
+ * ~60s, so a row whose `expiresAt` just elapsed may still be on
24
+ * disk. `get()` checks `expiresAt < now` and treats the hit as a
25
+ * miss + deletes the row so the next read is fast.
26
+ *
27
+ * - **`pluginCacheVersion` mismatch = miss.** Plugins bump their
28
+ * `cacheVersion` to invalidate every cached entry without an
29
+ * operator action. We don't actively delete stale-version rows
30
+ * (the TTL eventually does); we just refuse to return them.
31
+ *
32
+ * - **Size limits.** `set()` rejects entries `> 100KB` and entries
33
+ * that would push the page over 10MB. Both rejections log a warn
34
+ * with `pluginName` + `pageId` and surface a `CacheSetReject`
35
+ * code via the `setOrReject` helper used by the SWR wrapper.
36
+ * Entries `> 50KB` but `< 100KB` warn but write.
37
+ */
38
+ class MongoCacheStorage {
39
+ deps;
40
+ constructor(deps) {
41
+ this.deps = deps;
42
+ }
43
+ /**
44
+ * Read an entry. Returns null only when:
45
+ * - row absent
46
+ * - `pluginCacheVersion` mismatch (version bump is a logical miss)
47
+ *
48
+ * **`expiresAt < now` is NOT treated as a miss here.** The SWR
49
+ * wrapper (`cachedRender`) needs to see expired-but-within-stale-
50
+ * window entries to serve them while a background re-render runs.
51
+ * Entries past the SWR window are evicted by the wrapper itself
52
+ * after the blocking re-render; MongoDB's TTL sweep is the
53
+ * disk-reclaim safety net (RFC §"TTL index of operational note").
54
+ */
55
+ async get(key) {
56
+ const filter = {
57
+ pageId: new mongoose_1.Types.ObjectId(key.pageId),
58
+ pluginName: key.pluginName,
59
+ embedKey: key.embedKey,
60
+ pluginCacheVersion: key.pluginCacheVersion,
61
+ };
62
+ const doc = await this.deps.PluginRenderCache.findOne(filter).lean().exec();
63
+ if (!doc)
64
+ return null;
65
+ return {
66
+ html: doc.html,
67
+ result: doc.result,
68
+ fetchedAt: doc.fetchedAt,
69
+ expiresAt: doc.expiresAt,
70
+ };
71
+ }
72
+ /**
73
+ * Write an entry, replacing any existing row with the same compound
74
+ * key. Use `setOrReject` instead when callers need to know whether
75
+ * the write was rejected by size limits.
76
+ */
77
+ async set(key, entry) {
78
+ await this.setOrReject(key, entry);
79
+ }
80
+ /**
81
+ * Like `set` but returns the rejection reason instead of silently
82
+ * dropping. Used by the SWR wrapper to fall back to a placeholder
83
+ * when an oversized payload would otherwise vanish from the cache.
84
+ */
85
+ async setOrReject(key, entry) {
86
+ const html = entry.html;
87
+ const htmlBytes = Buffer.byteLength(html, 'utf8');
88
+ if (htmlBytes > exports.SINGLE_ENTRY_REJECT_BYTES) {
89
+ this.deps.log.warn(`[plugin-render-cache] entry too large; refusing to write. pluginName=${key.pluginName} pageId=${key.pageId} bytes=${htmlBytes} (limit=${exports.SINGLE_ENTRY_REJECT_BYTES})`);
90
+ return 'entry-too-large';
91
+ }
92
+ if (htmlBytes > exports.SINGLE_ENTRY_WARN_BYTES) {
93
+ this.deps.log.warn(`[plugin-render-cache] entry exceeds warn threshold; writing anyway. pluginName=${key.pluginName} pageId=${key.pageId} bytes=${htmlBytes} (warn=${exports.SINGLE_ENTRY_WARN_BYTES})`);
94
+ }
95
+ // Per-page cumulative check. One aggregate computes the page-wide
96
+ // total and the existing-entry-for-this-key bytes simultaneously,
97
+ // so the projected total after the upsert can be checked in one
98
+ // round-trip (plus the upsert itself). `htmlBytes` is denormalised
99
+ // on the doc so the sum is a cheap `$sum: '$htmlBytes'` rather
100
+ // than `$strLenBytes` over every cached HTML string.
101
+ const pageId = new mongoose_1.Types.ObjectId(key.pageId);
102
+ const cumulative = await this.deps.PluginRenderCache.aggregate([
103
+ { $match: { pageId } },
104
+ {
105
+ $group: {
106
+ _id: null,
107
+ totalBytes: { $sum: '$htmlBytes' },
108
+ existingBytes: {
109
+ $sum: {
110
+ $cond: [
111
+ {
112
+ $and: [
113
+ { $eq: ['$pluginName', key.pluginName] },
114
+ { $eq: ['$embedKey', key.embedKey] },
115
+ { $eq: ['$pluginCacheVersion', key.pluginCacheVersion] },
116
+ ],
117
+ },
118
+ '$htmlBytes',
119
+ 0,
120
+ ],
121
+ },
122
+ },
123
+ },
124
+ },
125
+ ]).exec();
126
+ const { totalBytes = 0, existingBytes = 0 } = cumulative[0] ?? {};
127
+ const projected = totalBytes - existingBytes + htmlBytes;
128
+ if (projected > exports.PER_PAGE_REJECT_BYTES) {
129
+ this.deps.log.warn(`[plugin-render-cache] page would exceed cumulative quota; refusing to write. pluginName=${key.pluginName} pageId=${key.pageId} projectedBytes=${projected} (limit=${exports.PER_PAGE_REJECT_BYTES})`);
130
+ return 'page-quota-exceeded';
131
+ }
132
+ await this.deps.PluginRenderCache.updateOne({
133
+ pageId,
134
+ pluginName: key.pluginName,
135
+ embedKey: key.embedKey,
136
+ pluginCacheVersion: key.pluginCacheVersion,
137
+ }, {
138
+ $set: {
139
+ pageId,
140
+ pluginName: key.pluginName,
141
+ embedKey: key.embedKey,
142
+ pluginCacheVersion: key.pluginCacheVersion,
143
+ html,
144
+ htmlBytes,
145
+ fetchedAt: entry.fetchedAt,
146
+ expiresAt: entry.expiresAt,
147
+ result: entry.result,
148
+ },
149
+ }, { upsert: true }).exec();
150
+ return null;
151
+ }
152
+ /** Drop every cached entry for a page. Returns the number of deleted rows. */
153
+ async invalidatePage(pageId) {
154
+ const res = await this.deps.PluginRenderCache.deleteMany({ pageId: new mongoose_1.Types.ObjectId(pageId) }).exec();
155
+ return res.deletedCount ?? 0;
156
+ }
157
+ /** Drop every cached entry written by a single plugin. Returns the number of deleted rows. */
158
+ async invalidatePlugin(pluginName) {
159
+ const res = await this.deps.PluginRenderCache.deleteMany({ pluginName }).exec();
160
+ return res.deletedCount ?? 0;
161
+ }
162
+ /** Drop every cached entry. Returns the number of deleted rows. */
163
+ async invalidateAll() {
164
+ const res = await this.deps.PluginRenderCache.deleteMany({}).exec();
165
+ return res.deletedCount ?? 0;
166
+ }
167
+ }
168
+ exports.MongoCacheStorage = MongoCacheStorage;
169
+ /** Convenience factory that pulls the model + a logger from a Crowi instance. */
170
+ function createMongoCacheStorage(crowi) {
171
+ const PluginRenderCache = crowi.model('PluginRenderCache');
172
+ return new MongoCacheStorage({
173
+ PluginRenderCache,
174
+ log: {
175
+ warn: (msg, ...args) => console.warn(msg, ...args),
176
+ debug: () => undefined,
177
+ },
178
+ });
179
+ }
180
+ //# sourceMappingURL=mongodb-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb-cache.js","sourceRoot":"","sources":["../../../src/renderer/cache/mongodb-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { RenderError, Reservation } from '@crowi/plugin-api';
2
+ import type { CacheSetReject } from './mongodb-cache';
3
+ /**
4
+ * Build the placeholder HTML for a given `Reservation`. Numeric
5
+ * values are coerced to integers via `Math.max(0, Math.round(n))` so
6
+ * a bogus float / negative declaration never produces malformed
7
+ * style attributes.
8
+ */
9
+ export declare function renderReservation(reservation: Reservation): string;
10
+ /**
11
+ * Placeholder HTML for a render error. The user-facing message comes
12
+ * from a fixed table per error code; plugin-supplied `error.message`
13
+ * never reaches the HTML (potential PII / API-key leak).
14
+ */
15
+ export declare function errorPlaceholder(code: RenderError['code'], reservation: Reservation | undefined): string;
16
+ /**
17
+ * Placeholder for a size-limit reject. We distinguish the two
18
+ * sub-cases so admin telemetry / e2e tests can tell them apart.
19
+ */
20
+ export declare function sizeLimitPlaceholder(reason: CacheSetReject, reservation: Reservation | undefined): string;