@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,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderReservation = renderReservation;
4
+ exports.errorPlaceholder = errorPlaceholder;
5
+ exports.sizeLimitPlaceholder = sizeLimitPlaceholder;
6
+ /**
7
+ * Phase 4 placeholder HTML generators. All output goes through fixed
8
+ * templates inside this file — no plugin-supplied string is ever
9
+ * inlined into the HTML other than the numeric `widthPx` / `heightPx`
10
+ * / `aspectRatio`, which the plugin author declares in their
11
+ * `EmbedRenderer.reservation`. Embed-tag args / URLs never reach
12
+ * placeholder HTML.
13
+ *
14
+ * Class naming convention (RFC §"open questions"):
15
+ *
16
+ * crowi-embed-placeholder (always present)
17
+ * crowi-embed-placeholder-fixed (variant 'fixed')
18
+ * crowi-embed-placeholder-aspect (variant 'aspect')
19
+ * crowi-embed-placeholder-card (variant 'card')
20
+ * crowi-embed-placeholder-card-{size} ('small' | 'medium' | 'large')
21
+ * crowi-embed-placeholder-error (errorPlaceholder)
22
+ * crowi-embed-placeholder-error-{code}
23
+ *
24
+ * Tailwind classes are NOT included; web/globals.css owns the visual
25
+ * styling. The server only emits the structural HTML so the web
26
+ * client can hydrate it.
27
+ */
28
+ /** Card sizes → recommended pixel heights for the placeholder skeleton. */
29
+ const CARD_SIZE_TO_HEIGHT_PX = {
30
+ small: 80,
31
+ medium: 160,
32
+ large: 280,
33
+ };
34
+ /**
35
+ * Build the placeholder HTML for a given `Reservation`. Numeric
36
+ * values are coerced to integers via `Math.max(0, Math.round(n))` so
37
+ * a bogus float / negative declaration never produces malformed
38
+ * style attributes.
39
+ */
40
+ function renderReservation(reservation) {
41
+ if (reservation.variant === 'fixed') {
42
+ const height = clampDimension(reservation.heightPx);
43
+ const widthAttr = reservation.widthPx !== undefined ? `width:${clampDimension(reservation.widthPx)}px;` : '';
44
+ return [
45
+ '<div class="crowi-embed-placeholder crowi-embed-placeholder-fixed"',
46
+ ` style="${widthAttr}height:${height}px;"`,
47
+ ' aria-hidden="true"></div>',
48
+ ].join('');
49
+ }
50
+ if (reservation.variant === 'aspect') {
51
+ // Clamp to a sane range so a `0` doesn't divide-by-zero and a
52
+ // huge value doesn't render a multi-screen-tall placeholder.
53
+ const ratio = clampRatio(reservation.aspectRatio);
54
+ // CSS `aspect-ratio: w / h` — emit decimal so the browser parses
55
+ // it as a number rather than a fraction.
56
+ return ['<div class="crowi-embed-placeholder crowi-embed-placeholder-aspect"', ` style="aspect-ratio:${ratio};"`, ' aria-hidden="true"></div>'].join('');
57
+ }
58
+ // 'card'
59
+ const size = reservation.size;
60
+ const height = CARD_SIZE_TO_HEIGHT_PX[size];
61
+ return [
62
+ `<div class="crowi-embed-placeholder crowi-embed-placeholder-card crowi-embed-placeholder-card-${size}"`,
63
+ ` style="height:${height}px;"`,
64
+ ' aria-hidden="true"></div>',
65
+ ].join('');
66
+ }
67
+ /**
68
+ * Placeholder HTML for a render error. The user-facing message comes
69
+ * from a fixed table per error code; plugin-supplied `error.message`
70
+ * never reaches the HTML (potential PII / API-key leak).
71
+ */
72
+ function errorPlaceholder(code, reservation) {
73
+ const label = ERROR_LABELS[code];
74
+ const shapeHtml = reservation ? renderReservation(reservation) : '';
75
+ return [
76
+ `<div class="crowi-embed-placeholder crowi-embed-placeholder-error crowi-embed-placeholder-error-${code}" role="status">`,
77
+ shapeHtml,
78
+ `<span class="crowi-embed-placeholder-error-label">${label}</span>`,
79
+ '</div>',
80
+ ].join('');
81
+ }
82
+ /**
83
+ * Placeholder for a size-limit reject. We distinguish the two
84
+ * sub-cases so admin telemetry / e2e tests can tell them apart.
85
+ */
86
+ function sizeLimitPlaceholder(reason, reservation) {
87
+ const label = reason === 'entry-too-large' ? 'Embed exceeded the per-entry size limit' : 'Page exceeded the cumulative embed-cache quota';
88
+ const shapeHtml = reservation ? renderReservation(reservation) : '';
89
+ return [
90
+ `<div class="crowi-embed-placeholder crowi-embed-placeholder-error crowi-embed-placeholder-error-size-limit" data-reason="${reason}" role="status">`,
91
+ shapeHtml,
92
+ `<span class="crowi-embed-placeholder-error-label">${label}</span>`,
93
+ '</div>',
94
+ ].join('');
95
+ }
96
+ const ERROR_LABELS = {
97
+ auth: 'Authentication required to render this embed.',
98
+ rate_limit: 'Rate limit exceeded — try again later.',
99
+ not_found: 'Embed source not found.',
100
+ network: 'Embed is temporarily unavailable.',
101
+ timeout: 'Embed render timed out.',
102
+ unknown: 'Embed could not be rendered.',
103
+ };
104
+ function clampDimension(n) {
105
+ if (!Number.isFinite(n))
106
+ return 0;
107
+ return Math.max(0, Math.min(4096, Math.round(n)));
108
+ }
109
+ function clampRatio(n) {
110
+ if (!Number.isFinite(n) || n <= 0)
111
+ return 1;
112
+ // Trim to 4 decimals to keep the inline style stable across renders.
113
+ return Math.round(Math.max(0.05, Math.min(20, n)) * 10_000) / 10_000;
114
+ }
115
+ //# sourceMappingURL=reservation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservation.js","sourceRoot":"","sources":["../../../src/renderer/cache/reservation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { PhrasingContent } from 'mdast';
2
+ /**
3
+ * Shared walker types + helpers for the Phase 4 dispatch transforms
4
+ * (`embed-tags.ts` and `url-inline-expand.ts`). Both visit phrasing
5
+ * trees, skip into `code` / `inlineCode`, and group candidate matches
6
+ * by their parent so the rewrite can splice multiple replacements into
7
+ * the same children array in one pass.
8
+ */
9
+ export interface PhrasingParent {
10
+ type?: string;
11
+ children?: PhrasingContent[];
12
+ }
13
+ export interface ParentChildren {
14
+ children: PhrasingContent[];
15
+ }
16
+ /**
17
+ * Pre-order walk that mirrors the phrasing-parent shape. Skips into
18
+ * `code` / `inlineCode` (they have no phrasing children to collect
19
+ * from), and tracks whether we are currently inside a `link` so callers
20
+ * can avoid double-linking.
21
+ */
22
+ export declare function walkPhrasingTree(root: PhrasingParent, visit: (node: PhrasingParent, insideLink: boolean) => void): void;
23
+ /**
24
+ * Group rewrite candidates by reference-identical parent, drop entries
25
+ * that the dispatch step did not fill in (`replacementHtml` missing),
26
+ * and sort matches by their child index so the splice step can walk
27
+ * the parent's children left-to-right without re-indexing.
28
+ */
29
+ export declare function groupByParent<C extends {
30
+ parent: ParentChildren;
31
+ replacementHtml?: string;
32
+ }>(candidates: C[], indexOf: (c: C) => number): Array<{
33
+ parent: ParentChildren;
34
+ matches: C[];
35
+ }>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.walkPhrasingTree = walkPhrasingTree;
4
+ exports.groupByParent = groupByParent;
5
+ /**
6
+ * Pre-order walk that mirrors the phrasing-parent shape. Skips into
7
+ * `code` / `inlineCode` (they have no phrasing children to collect
8
+ * from), and tracks whether we are currently inside a `link` so callers
9
+ * can avoid double-linking.
10
+ */
11
+ function walkPhrasingTree(root, visit) {
12
+ go(root, false);
13
+ function go(node, insideLink) {
14
+ if (node.type === 'code' || node.type === 'inlineCode')
15
+ return;
16
+ if (!Array.isArray(node.children))
17
+ return;
18
+ visit(node, insideLink);
19
+ const childInsideLink = insideLink || node.type === 'link';
20
+ for (const child of node.children) {
21
+ go(child, childInsideLink);
22
+ }
23
+ }
24
+ }
25
+ /**
26
+ * Group rewrite candidates by reference-identical parent, drop entries
27
+ * that the dispatch step did not fill in (`replacementHtml` missing),
28
+ * and sort matches by their child index so the splice step can walk
29
+ * the parent's children left-to-right without re-indexing.
30
+ */
31
+ function groupByParent(candidates, indexOf) {
32
+ const groups = new Map();
33
+ for (const c of candidates) {
34
+ if (!c.replacementHtml)
35
+ continue;
36
+ const list = groups.get(c.parent) ?? [];
37
+ list.push(c);
38
+ groups.set(c.parent, list);
39
+ }
40
+ return Array.from(groups.entries()).map(([parent, matches]) => ({
41
+ parent,
42
+ matches: matches.slice().sort((a, b) => indexOf(a) - indexOf(b)),
43
+ }));
44
+ }
45
+ //# sourceMappingURL=_mdast-walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_mdast-walk.js","sourceRoot":"","sources":["../../../src/renderer/core/_mdast-walk.ts"],"names":[],"mappings":";;AAyBA,4CAYC;AAQD,sCAeC;AAzCD;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAoB,EAAE,KAA0D;IAC/G,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhB,SAAS,EAAE,CAAC,IAAoB,EAAE,UAAmB;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO;QAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC1C,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxB,MAAM,eAAe,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QAC3D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,EAAE,CAAC,KAAuB,EAAE,eAAe,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,UAAe,EACf,OAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,eAAe;YAAE,SAAS;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Root } from 'mdast';
2
+ import type { RenderContext } from '@crowi/plugin-api';
3
+ import { type MongoCacheStorage } from '../cache';
4
+ import { type RendererRegistryImpl } from '../registry';
5
+ /**
6
+ * Phase 6 plugin-dispatch transform — async post-processor that walks
7
+ * the mdast tree for `code` nodes whose `lang` matches a registered
8
+ * `CodeBlockRenderer` and replaces them with `html` nodes carrying the
9
+ * rendered output. Routes through the same `cachedRender` SWR wrapper
10
+ * as embed-tags so PlantUML (the first user) gets cache + error caching
11
+ * + size-limit fallback for free.
12
+ *
13
+ * Ordering note: this runs AFTER the unified `runSync` phase, which
14
+ * already executed the bundled `syntax-highlight` plugin. Shiki only
15
+ * rewrites code nodes whose `lang` is in its bundled set; the Phase 6
16
+ * users (`plantuml`, future `mermaid`, `katex` math is NOT a code
17
+ * block — it's `math` / `inlineMath` nodes) are not in the shiki
18
+ * bundled list, so the `code` node survives untouched into this
19
+ * dispatch step. No ordering surgery is needed inside the unified
20
+ * pipeline itself.
21
+ *
22
+ * The walker is block-level (recurses into root / blockquote / listItem
23
+ * / etc.) because fenced code blocks are block-level constructs. Inline
24
+ * code (`inlineCode`) is intentionally NOT visited — those are
25
+ * phrasing-level and never carry a `lang` tag.
26
+ */
27
+ export interface CodeBlockDispatchDeps {
28
+ cache: MongoCacheStorage;
29
+ pageId: string;
30
+ }
31
+ export declare const makeCodeBlockDispatch: (registry: RendererRegistryImpl, ctx: RenderContext, deps: CodeBlockDispatchDeps) => (tree: Root) => Promise<void>;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeCodeBlockDispatch = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const cache_1 = require("../cache");
6
+ const registry_1 = require("../registry");
7
+ const makeCodeBlockDispatch = (registry, ctx, deps) => async (tree) => {
8
+ if (!registry.hasCodeBlockRenderers())
9
+ return;
10
+ const candidates = collectCandidates(tree, registry);
11
+ if (candidates.length === 0)
12
+ return;
13
+ await Promise.all(candidates.map(async (candidate) => {
14
+ const registration = registry.getCodeBlockRenderer(candidate.lang);
15
+ if (!registration)
16
+ return; // defensive — collectCandidates already filtered
17
+ const scopedCtx = {
18
+ ...ctx,
19
+ cache: (0, cache_1.scopeForPlugin)(deps.cache, registration.plugin),
20
+ auth: (0, registry_1.createAuthContextStub)(),
21
+ };
22
+ const adaptor = codeBlockAsEmbedRenderer(registration.renderer);
23
+ // We re-pack the code-block info into the EmbedInput shape so
24
+ // the shared `cachedRender` path can route it. The adaptor
25
+ // unpacks lang from `tag` and source from `url` on the render
26
+ // side — internal abstraction leak, but contained here.
27
+ const input = {
28
+ tag: candidate.lang,
29
+ url: candidate.source,
30
+ pageId: deps.pageId,
31
+ };
32
+ const rendered = await (0, cache_1.cachedRender)(deps.cache, registration.plugin, adaptor, input, scopedCtx);
33
+ candidate.replacementHtml = rendered.html;
34
+ }));
35
+ // Rewrite each parent's children in-place. Multiple matches in
36
+ // the same parent are spliced together so indices stay stable.
37
+ for (const group of groupByParent(candidates)) {
38
+ group.parent.children = rewriteChildren(group.parent.children, group.matches);
39
+ }
40
+ };
41
+ exports.makeCodeBlockDispatch = makeCodeBlockDispatch;
42
+ /**
43
+ * Block-level walker that finds `code` nodes whose `lang` has a
44
+ * registered renderer. Recurses into any block container with a
45
+ * `children` array — root, blockquote, list, listItem, etc. — but
46
+ * skips phrasing-only nodes (no point descending into them; fenced
47
+ * code is never inside a paragraph / link / etc.).
48
+ */
49
+ function collectCandidates(tree, registry) {
50
+ const out = [];
51
+ walkBlocks(tree, (parent) => {
52
+ const children = parent.children;
53
+ if (!children)
54
+ return;
55
+ for (let i = 0; i < children.length; i++) {
56
+ const child = children[i];
57
+ if (child.type !== 'code')
58
+ continue;
59
+ const code = child;
60
+ const lang = (code.lang ?? '').trim();
61
+ if (!lang)
62
+ continue;
63
+ const registration = registry.getCodeBlockRenderer(lang);
64
+ if (!registration)
65
+ continue;
66
+ out.push({
67
+ parent: parent,
68
+ codeIndex: i,
69
+ lang,
70
+ source: code.value ?? '',
71
+ });
72
+ }
73
+ });
74
+ return out;
75
+ }
76
+ function walkBlocks(node, visit) {
77
+ if (!Array.isArray(node.children))
78
+ return;
79
+ visit(node);
80
+ for (const child of node.children) {
81
+ // `code` and `inlineCode` are leaves — no descent. `html` is also
82
+ // a leaf. Everything else may carry block children we want to
83
+ // visit (blockquote, listItem, list, root).
84
+ if (child.type === 'code' || child.type === 'inlineCode' || child.type === 'html')
85
+ continue;
86
+ walkBlocks(child, visit);
87
+ }
88
+ }
89
+ /**
90
+ * Adapt a `CodeBlockRenderer` to the `EmbedRenderer` shape that
91
+ * `cachedRender` expects. Mirrors `url-inline-expand.ts:ruleAsRenderer`.
92
+ * The cacheVersion / reservation / computeEmbedKey flow through; the
93
+ * key compute pulls lang + source out of the synthetic EmbedInput.
94
+ */
95
+ function codeBlockAsEmbedRenderer(cb) {
96
+ return {
97
+ cacheVersion: cb.cacheVersion,
98
+ reservation: cb.reservation,
99
+ computeEmbedKey: (input) => {
100
+ // Default: hash the code-block info. Plugin override consults
101
+ // CodeBlockInfo shape, not EmbedInput, so we unpack first.
102
+ const info = { lang: input.tag, source: input.url };
103
+ if (cb.computeEmbedKey)
104
+ return cb.computeEmbedKey(info);
105
+ return defaultCodeBlockEmbedKey(info);
106
+ },
107
+ async render(input, ctx) {
108
+ const info = { lang: input.tag, source: input.url };
109
+ const result = await cb.render(info, ctx);
110
+ // The plugin may return either a bare `EmbedFragment` (html +
111
+ // assets) or a full `RenderResult` (with ttlSec / error). The
112
+ // `error` field is the discriminator — pass `RenderResult`
113
+ // through verbatim so error caching applies, otherwise wrap the
114
+ // fragment as a successful RenderResult with the default code-
115
+ // block TTL (1h).
116
+ if (isRenderResult(result))
117
+ return result;
118
+ const fragment = result;
119
+ return { html: fragment.html, assets: fragment.assets, ttlSec: 60 * 60 };
120
+ },
121
+ };
122
+ }
123
+ function isRenderResult(value) {
124
+ // `'error' in value` would mis-classify a fragment with an explicit
125
+ // `error: undefined` property; check actual presence instead.
126
+ const candidate = value;
127
+ return candidate.error !== undefined || typeof candidate.ttlSec === 'number';
128
+ }
129
+ function defaultCodeBlockEmbedKey(info) {
130
+ const json = JSON.stringify({ lang: info.lang, source: info.source });
131
+ return (0, node_crypto_1.createHash)('sha256').update(json).digest('hex');
132
+ }
133
+ /**
134
+ * Group matched candidates by reference-identical parent and sort each
135
+ * group by child index so the splice walks left-to-right. Drops
136
+ * candidates the dispatch did not fill in (`replacementHtml` missing).
137
+ */
138
+ function groupByParent(candidates) {
139
+ const groups = new Map();
140
+ for (const c of candidates) {
141
+ if (!c.replacementHtml)
142
+ continue;
143
+ const list = groups.get(c.parent) ?? [];
144
+ list.push(c);
145
+ groups.set(c.parent, list);
146
+ }
147
+ return Array.from(groups.entries()).map(([parent, matches]) => ({
148
+ parent,
149
+ matches: matches.slice().sort((a, b) => a.codeIndex - b.codeIndex),
150
+ }));
151
+ }
152
+ function rewriteChildren(children, matches) {
153
+ const byIndex = new Map(matches.map((m) => [m.codeIndex, m]));
154
+ const out = [];
155
+ for (let i = 0; i < children.length; i++) {
156
+ const match = byIndex.get(i);
157
+ if (!match) {
158
+ out.push(children[i]);
159
+ continue;
160
+ }
161
+ const html = { type: 'html', value: match.replacementHtml ?? '' };
162
+ out.push(html);
163
+ }
164
+ return out;
165
+ }
166
+ //# sourceMappingURL=code-block-dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-block-dispatch.js","sourceRoot":"","sources":["../../../src/renderer/core/code-block-dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { UnifiedTransformPlugin } from './headings';
2
+ /**
3
+ * Core renderer transform — observe each fenced code block's `lang`
4
+ * tag and aggregate the unique set into `metadata.codeBlockLanguages`.
5
+ * Pure observer, doesn't mutate the AST.
6
+ *
7
+ * Used by the admin UI ("which languages does this wiki need
8
+ * highlighter coverage for?") and by RFC-0002 Phase 3 plugins
9
+ * (`@crowi/plugin-renderer-mermaid` etc.) to decide whether to
10
+ * activate themselves on a given page.
11
+ */
12
+ export declare const remarkCodeBlockLanguages: UnifiedTransformPlugin;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remarkCodeBlockLanguages = void 0;
4
+ /**
5
+ * Core renderer transform — observe each fenced code block's `lang`
6
+ * tag and aggregate the unique set into `metadata.codeBlockLanguages`.
7
+ * Pure observer, doesn't mutate the AST.
8
+ *
9
+ * Used by the admin UI ("which languages does this wiki need
10
+ * highlighter coverage for?") and by RFC-0002 Phase 3 plugins
11
+ * (`@crowi/plugin-renderer-mermaid` etc.) to decide whether to
12
+ * activate themselves on a given page.
13
+ */
14
+ const remarkCodeBlockLanguages = (metadata) => (tree) => {
15
+ const langs = new Set();
16
+ walk(tree);
17
+ metadata.codeBlockLanguages = Array.from(langs).sort();
18
+ function walk(node) {
19
+ if (node.type === 'code') {
20
+ const lang = node.lang;
21
+ if (lang && lang.trim())
22
+ langs.add(lang.trim());
23
+ return;
24
+ }
25
+ if (Array.isArray(node.children)) {
26
+ for (const child of node.children)
27
+ walk(child);
28
+ }
29
+ }
30
+ };
31
+ exports.remarkCodeBlockLanguages = remarkCodeBlockLanguages;
32
+ //# sourceMappingURL=code-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-blocks.js","sourceRoot":"","sources":["../../../src/renderer/core/code-blocks.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;GASG;AACI,MAAM,wBAAwB,GAA2B,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;IACrF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvD,SAAS,IAAI,CAAC,IAAmE;QAC/E,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAI,IAAa,CAAC,IAAI,CAAC;YACjC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,KAAgD,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,wBAAwB,4BAenC"}
@@ -0,0 +1,14 @@
1
+ import type { Root } from 'mdast';
2
+ import type { RenderContext } from '@crowi/plugin-api';
3
+ import { type MongoCacheStorage } from '../cache';
4
+ import { type RendererRegistryImpl } from '../registry';
5
+ export interface EmbedTagDispatchDeps {
6
+ cache: MongoCacheStorage;
7
+ pageId: string;
8
+ }
9
+ /**
10
+ * Build the async post-processor. Returns a function that walks the
11
+ * transformed mdast tree, finds embed-tag triples, and rewrites them
12
+ * in-place with rendered html nodes.
13
+ */
14
+ export declare const makeEmbedTagDispatch: (registry: RendererRegistryImpl, ctx: RenderContext, deps: EmbedTagDispatchDeps) => (tree: Root) => Promise<void>;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeEmbedTagDispatch = void 0;
4
+ const cache_1 = require("../cache");
5
+ const registry_1 = require("../registry");
6
+ const _mdast_walk_1 = require("./_mdast-walk");
7
+ /**
8
+ * Phase 4 plugin-dispatch transform — async post-processor that
9
+ * detects `@[tag](url)` and, when `tag` matches a registered embed
10
+ * renderer, replaces the construct with an `html` node containing the
11
+ * renderer's `RenderResult.html` (after SWR + cache resolution).
12
+ *
13
+ * Important parse subtlety: CommonMark / GFM does NOT see
14
+ * `@[tag](url)` as one token. The parser splits it into THREE mdast
15
+ * nodes:
16
+ *
17
+ * text node "@" + link(url='url', children=[text 'tag']) + text node "<rest>"
18
+ *
19
+ * — because `[label](url)` is just an inline link, and the leading
20
+ * `@` is unrelated trailing text. So we walk **sibling triples** of
21
+ * (text, link, text) instead of regex-scanning text values. When we
22
+ * see:
23
+ *
24
+ * 1. text node whose value ends with `@`,
25
+ * 2. immediately followed by a link node with children matching
26
+ * `[text:'tag']` where tag is `[A-Za-z0-9_-]{1,64}`, and
27
+ * 3. the link's url is non-empty (anything is accepted; plugin
28
+ * validates per-renderer),
29
+ *
30
+ * AND there is a registered embed renderer for that tag, we splice in
31
+ * the rendered html and trim the trailing `@` off the previous text
32
+ * node. Unregistered tags pass through as `@` + `[tag](url)` (a plain
33
+ * inline link), matching the RFC plain-text fallback.
34
+ *
35
+ * Note: this triple-match deliberately matches *more* than just the
36
+ * literal `@[tag](url)` substring — it also catches cases where the
37
+ * link's url contains escape sequences (`@[t](a%20b)`) that would
38
+ * have broken a regex on the raw text. The cost is that an author
39
+ * who writes `[tag](url)` with a trailing `@` immediately before it
40
+ * (`text ending in @ ` followed by `[t](u)`) will trigger a match
41
+ * even if the visual intent wasn't an embed. Tests + real-world use
42
+ * will tell us if this is too aggressive; the alternative would be
43
+ * a `remark-parse` pre-pass to recognise the `@[...](…)` token, but
44
+ * that requires shipping a forked extension.
45
+ *
46
+ * Skipped node types: `code`, `inlineCode` (verbatim) — the walker
47
+ * does not descend into them.
48
+ */
49
+ const TAG_NAME_RE = /^[A-Za-z0-9_-]{1,64}$/;
50
+ /**
51
+ * Build the async post-processor. Returns a function that walks the
52
+ * transformed mdast tree, finds embed-tag triples, and rewrites them
53
+ * in-place with rendered html nodes.
54
+ */
55
+ const makeEmbedTagDispatch = (registry, ctx, deps) => async (tree) => {
56
+ const candidates = collectCandidates(tree, registry);
57
+ if (candidates.length === 0)
58
+ return;
59
+ await Promise.all(candidates.map(async (candidate) => {
60
+ const registration = registry.getEmbedTag(candidate.tag);
61
+ if (!registration)
62
+ return; // defensive — collectCandidates filtered
63
+ const scopedCtx = {
64
+ ...ctx,
65
+ cache: (0, cache_1.scopeForPlugin)(deps.cache, registration.plugin),
66
+ auth: (0, registry_1.createAuthContextStub)(),
67
+ };
68
+ const input = {
69
+ tag: candidate.tag,
70
+ url: candidate.url,
71
+ pageId: deps.pageId,
72
+ };
73
+ const rendered = await (0, cache_1.cachedRender)(deps.cache, registration.plugin, registration.renderer, input, scopedCtx);
74
+ candidate.replacementHtml = rendered.html;
75
+ }));
76
+ // Apply rewrites per parent. Each parent may contain multiple
77
+ // triples — we rebuild its children list in one pass.
78
+ for (const group of (0, _mdast_walk_1.groupByParent)(candidates, (c) => c.linkIndex)) {
79
+ group.parent.children = rewriteChildren(group.parent.children, group.matches);
80
+ }
81
+ };
82
+ exports.makeEmbedTagDispatch = makeEmbedTagDispatch;
83
+ function collectCandidates(tree, registry) {
84
+ const out = [];
85
+ (0, _mdast_walk_1.walkPhrasingTree)(tree, (node, insideLink) => {
86
+ if (insideLink)
87
+ return;
88
+ const children = node.children;
89
+ // Sibling-triple scan for (text-ending-in-`@`, link, …)
90
+ for (let i = 0; i < children.length - 1; i++) {
91
+ const prev = children[i];
92
+ const next = children[i + 1];
93
+ if (prev.type !== 'text')
94
+ continue;
95
+ if (next.type !== 'link')
96
+ continue;
97
+ const text = prev;
98
+ if (!text.value.endsWith('@'))
99
+ continue;
100
+ const link = next;
101
+ const linkChildren = link.children ?? [];
102
+ if (linkChildren.length !== 1)
103
+ continue;
104
+ const inner = linkChildren[0];
105
+ if (inner.type !== 'text')
106
+ continue;
107
+ const tag = inner.value;
108
+ if (!TAG_NAME_RE.test(tag))
109
+ continue;
110
+ const url = link.url;
111
+ if (!url)
112
+ continue;
113
+ if (!registry.getEmbedTag(tag))
114
+ continue;
115
+ out.push({
116
+ parent: node,
117
+ textBeforeIndex: i,
118
+ linkIndex: i + 1,
119
+ tag,
120
+ url,
121
+ });
122
+ }
123
+ });
124
+ return out;
125
+ }
126
+ /**
127
+ * Rebuild `children` by walking it left-to-right and rewriting each
128
+ * matched (text-ending-in-`@`, link) pair into (text-with-`@`-stripped,
129
+ * html-node). All other children pass through.
130
+ */
131
+ function rewriteChildren(children, matches) {
132
+ const byLinkIndex = new Map(matches.map((m) => [m.linkIndex, m]));
133
+ const out = [];
134
+ let i = 0;
135
+ while (i < children.length) {
136
+ const next = i + 1 < children.length ? children[i + 1] : null;
137
+ const matchOnNext = next ? byLinkIndex.get(i + 1) : undefined;
138
+ if (matchOnNext && matchOnNext.textBeforeIndex === i) {
139
+ const leadingText = children[i];
140
+ const stripped = leadingText.value.slice(0, -1); // drop the trailing `@`
141
+ if (stripped) {
142
+ out.push({ type: 'text', value: stripped });
143
+ }
144
+ const html = { type: 'html', value: matchOnNext.replacementHtml ?? '' };
145
+ out.push(html);
146
+ i += 2;
147
+ continue;
148
+ }
149
+ out.push(children[i]);
150
+ i++;
151
+ }
152
+ return out;
153
+ }
154
+ //# sourceMappingURL=embed-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-tags.js","sourceRoot":"","sources":["../../../src/renderer/core/embed-tags.ts"],"names":[],"mappings":"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"}