@crowi/api 2.0.0-alpha.0 → 2.0.0-alpha.2

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 (452) hide show
  1. package/dist/hono/handlers/access-token.d.ts +55 -55
  2. package/dist/hono/handlers/activation.d.ts +27 -27
  3. package/dist/hono/handlers/admin/app.d.ts +26 -26
  4. package/dist/hono/handlers/admin/auth.d.ts +24 -24
  5. package/dist/hono/handlers/admin/mail.d.ts +30 -30
  6. package/dist/hono/handlers/admin/plugins.d.ts +112 -112
  7. package/dist/hono/handlers/admin/search.d.ts +21 -21
  8. package/dist/hono/handlers/admin/security.d.ts +24 -24
  9. package/dist/hono/handlers/admin/storage.d.ts +19 -19
  10. package/dist/hono/handlers/admin/users.d.ts +399 -281
  11. package/dist/hono/handlers/admin/users.js +28 -0
  12. package/dist/hono/handlers/admin/users.js.map +1 -1
  13. package/dist/hono/handlers/adminCrypto.d.ts +32 -32
  14. package/dist/hono/handlers/app.d.ts +12 -8
  15. package/dist/hono/handlers/app.js +42 -1
  16. package/dist/hono/handlers/app.js.map +1 -1
  17. package/dist/hono/handlers/attachment-stream.js +23 -0
  18. package/dist/hono/handlers/attachment-stream.js.map +1 -1
  19. package/dist/hono/handlers/attachment.d.ts +180 -180
  20. package/dist/hono/handlers/autocomplete.d.ts +45 -45
  21. package/dist/hono/handlers/backlink.d.ts +33 -33
  22. package/dist/hono/handlers/bookmark.d.ts +95 -95
  23. package/dist/hono/handlers/comment.d.ts +55 -55
  24. package/dist/hono/handlers/draft.d.ts +27 -27
  25. package/dist/hono/handlers/draft.js +10 -0
  26. package/dist/hono/handlers/draft.js.map +1 -1
  27. package/dist/hono/handlers/emailChange.d.ts +25 -25
  28. package/dist/hono/handlers/installer.d.ts +16 -16
  29. package/dist/hono/handlers/inviteAccept.d.ts +37 -37
  30. package/dist/hono/handlers/me.d.ts +92 -92
  31. package/dist/hono/handlers/notification.d.ts +94 -94
  32. package/dist/hono/handlers/oauth.d.ts +58 -58
  33. package/dist/hono/handlers/page-collab.d.ts +20 -20
  34. package/dist/hono/handlers/page-preview.d.ts +7 -7
  35. package/dist/hono/handlers/page.d.ts +575 -324
  36. package/dist/hono/handlers/page.js +123 -6
  37. package/dist/hono/handlers/page.js.map +1 -1
  38. package/dist/hono/handlers/passwordReset.d.ts +37 -37
  39. package/dist/hono/handlers/presence.d.ts +44 -44
  40. package/dist/hono/handlers/revision.d.ts +99 -99
  41. package/dist/hono/handlers/search.d.ts +64 -64
  42. package/dist/hono/handlers/tokenAuth.d.ts +80 -80
  43. package/dist/hono/handlers/user.d.ts +102 -102
  44. package/dist/hono/handlers/user.js +15 -5
  45. package/dist/hono/handlers/user.js.map +1 -1
  46. package/dist/hono/index.d.ts +94 -94
  47. package/dist/mcp/result.d.ts +52 -11
  48. package/dist/mcp/result.js +66 -1
  49. package/dist/mcp/result.js.map +1 -1
  50. package/dist/mcp/tools/page.js +30 -5
  51. package/dist/mcp/tools/page.js.map +1 -1
  52. package/dist/mcp/tools/search.d.ts +12 -0
  53. package/dist/mcp/tools/search.js +21 -5
  54. package/dist/mcp/tools/search.js.map +1 -1
  55. package/dist/migration/helpers.d.ts +13 -0
  56. package/dist/migration/helpers.js +29 -0
  57. package/dist/migration/helpers.js.map +1 -0
  58. package/dist/migration/migrations/files-url-to-attachments.d.ts +35 -0
  59. package/dist/migration/migrations/files-url-to-attachments.js +291 -0
  60. package/dist/migration/migrations/files-url-to-attachments.js.map +1 -0
  61. package/dist/migration/migrations/index.js +6 -0
  62. package/dist/migration/migrations/index.js.map +1 -1
  63. package/dist/migration/migrations/published-current-revision.d.ts +47 -0
  64. package/dist/migration/migrations/published-current-revision.js +90 -0
  65. package/dist/migration/migrations/published-current-revision.js.map +1 -0
  66. package/dist/migration/migrations/relocate-reserved-api-paths.d.ts +3 -0
  67. package/dist/migration/migrations/relocate-reserved-api-paths.js +135 -0
  68. package/dist/migration/migrations/relocate-reserved-api-paths.js.map +1 -0
  69. package/dist/migration/migrations/wikilink-format.d.ts +0 -11
  70. package/dist/migration/migrations/wikilink-format.js +5 -156
  71. package/dist/migration/migrations/wikilink-format.js.map +1 -1
  72. package/dist/migration/migrations/wikilink-html-recover.d.ts +116 -0
  73. package/dist/migration/migrations/wikilink-html-recover.js +314 -0
  74. package/dist/migration/migrations/wikilink-html-recover.js.map +1 -0
  75. package/dist/models/page.d.ts +3 -0
  76. package/dist/models/page.js +40 -2
  77. package/dist/models/page.js.map +1 -1
  78. package/dist/models/user.d.ts +1 -0
  79. package/dist/models/user.js +40 -21
  80. package/dist/models/user.js.map +1 -1
  81. package/dist/renderer/core/headings.d.ts +12 -1
  82. package/dist/renderer/core/headings.js +48 -8
  83. package/dist/renderer/core/headings.js.map +1 -1
  84. package/dist/renderer/pipeline.d.ts +6 -0
  85. package/dist/renderer/pipeline.js.map +1 -1
  86. package/dist/util/page-response.js +19 -2
  87. package/dist/util/page-response.js.map +1 -1
  88. package/dist/util/replace-url.d.ts +85 -0
  89. package/dist/util/replace-url.js +251 -0
  90. package/dist/util/replace-url.js.map +1 -0
  91. package/package.json +13 -5
  92. package/public/images/file-not-found.png +0 -0
  93. package/views/mail/activation.mjml +9 -0
  94. package/views/mail/activation.text +13 -0
  95. package/views/mail/adminApprovalPending.mjml +7 -0
  96. package/views/mail/adminApprovalPending.text +11 -0
  97. package/views/mail/emailChange.mjml +9 -0
  98. package/views/mail/emailChange.text +13 -0
  99. package/views/mail/invite.mjml +9 -0
  100. package/views/mail/invite.text +13 -0
  101. package/views/mail/layout.mjml +38 -0
  102. package/views/mail/passwordChanged.mjml +4 -0
  103. package/views/mail/passwordChanged.text +9 -0
  104. package/views/mail/passwordReset.mjml +9 -0
  105. package/views/mail/passwordReset.text +13 -0
  106. package/views/mail/test.mjml +2 -0
  107. package/views/mail/test.text +7 -0
  108. package/dist/common/functions/path2name.d.ts +0 -1
  109. package/dist/common/functions/path2name.js +0 -22
  110. package/dist/common/functions/path2name.js.map +0 -1
  111. package/dist/common/functions/renderIcon.d.ts +0 -1
  112. package/dist/common/functions/renderIcon.js +0 -9
  113. package/dist/common/functions/renderIcon.js.map +0 -1
  114. package/dist/controllers/admin.d.ts +0 -3
  115. package/dist/controllers/admin.js +0 -474
  116. package/dist/controllers/admin.js.map +0 -1
  117. package/dist/controllers/attachment.d.ts +0 -4
  118. package/dist/controllers/attachment.js +0 -200
  119. package/dist/controllers/attachment.js.map +0 -1
  120. package/dist/controllers/backlink.d.ts +0 -3
  121. package/dist/controllers/backlink.js +0 -42
  122. package/dist/controllers/backlink.js.map +0 -1
  123. package/dist/controllers/bookmark.d.ts +0 -3
  124. package/dist/controllers/bookmark.js +0 -100
  125. package/dist/controllers/bookmark.js.map +0 -1
  126. package/dist/controllers/comment.d.ts +0 -3
  127. package/dist/controllers/comment.js +0 -111
  128. package/dist/controllers/comment.js.map +0 -1
  129. package/dist/controllers/index.d.ts +0 -25
  130. package/dist/controllers/index.js +0 -44
  131. package/dist/controllers/index.js.map +0 -1
  132. package/dist/controllers/installer.d.ts +0 -3
  133. package/dist/controllers/installer.js +0 -48
  134. package/dist/controllers/installer.js.map +0 -1
  135. package/dist/controllers/login.d.ts +0 -4
  136. package/dist/controllers/login.js +0 -438
  137. package/dist/controllers/login.js.map +0 -1
  138. package/dist/controllers/logout.d.ts +0 -5
  139. package/dist/controllers/logout.js +0 -11
  140. package/dist/controllers/logout.js.map +0 -1
  141. package/dist/controllers/me.d.ts +0 -4
  142. package/dist/controllers/me.js +0 -369
  143. package/dist/controllers/me.js.map +0 -1
  144. package/dist/controllers/notification.d.ts +0 -3
  145. package/dist/controllers/notification.js +0 -88
  146. package/dist/controllers/notification.js.map +0 -1
  147. package/dist/controllers/page.d.ts +0 -3
  148. package/dist/controllers/page.js +0 -881
  149. package/dist/controllers/page.js.map +0 -1
  150. package/dist/controllers/revision.d.ts +0 -3
  151. package/dist/controllers/revision.js +0 -91
  152. package/dist/controllers/revision.js.map +0 -1
  153. package/dist/controllers/search.d.ts +0 -3
  154. package/dist/controllers/search.js +0 -93
  155. package/dist/controllers/search.js.map +0 -1
  156. package/dist/controllers/share.d.ts +0 -3
  157. package/dist/controllers/share.js +0 -207
  158. package/dist/controllers/share.js.map +0 -1
  159. package/dist/controllers/shareAccess.d.ts +0 -3
  160. package/dist/controllers/shareAccess.js +0 -28
  161. package/dist/controllers/shareAccess.js.map +0 -1
  162. package/dist/controllers/slack.d.ts +0 -3
  163. package/dist/controllers/slack.js +0 -87
  164. package/dist/controllers/slack.js.map +0 -1
  165. package/dist/controllers/tokenAuth.d.ts +0 -10
  166. package/dist/controllers/tokenAuth.js +0 -292
  167. package/dist/controllers/tokenAuth.js.map +0 -1
  168. package/dist/controllers/user.d.ts +0 -3
  169. package/dist/controllers/user.js +0 -67
  170. package/dist/controllers/user.js.map +0 -1
  171. package/dist/controllers/version.d.ts +0 -4
  172. package/dist/controllers/version.js +0 -19
  173. package/dist/controllers/version.js.map +0 -1
  174. package/dist/crowi/express-init.d.ts +0 -4
  175. package/dist/crowi/express-init.js +0 -101
  176. package/dist/crowi/express-init.js.map +0 -1
  177. package/dist/form/admin/app.d.ts +0 -2
  178. package/dist/form/admin/app.js +0 -9
  179. package/dist/form/admin/app.js.map +0 -1
  180. package/dist/form/admin/auth.d.ts +0 -2
  181. package/dist/form/admin/auth.js +0 -9
  182. package/dist/form/admin/auth.js.map +0 -1
  183. package/dist/form/admin/aws.d.ts +0 -2
  184. package/dist/form/admin/aws.js +0 -13
  185. package/dist/form/admin/aws.js.map +0 -1
  186. package/dist/form/admin/github.d.ts +0 -2
  187. package/dist/form/admin/github.js +0 -15
  188. package/dist/form/admin/github.js.map +0 -1
  189. package/dist/form/admin/google.d.ts +0 -2
  190. package/dist/form/admin/google.js +0 -13
  191. package/dist/form/admin/google.js.map +0 -1
  192. package/dist/form/admin/mail.d.ts +0 -2
  193. package/dist/form/admin/mail.js +0 -13
  194. package/dist/form/admin/mail.js.map +0 -1
  195. package/dist/form/admin/sec.d.ts +0 -2
  196. package/dist/form/admin/sec.js +0 -10
  197. package/dist/form/admin/sec.js.map +0 -1
  198. package/dist/form/admin/slackSetting.d.ts +0 -2
  199. package/dist/form/admin/slackSetting.js +0 -13
  200. package/dist/form/admin/slackSetting.js.map +0 -1
  201. package/dist/form/admin/userEdit.d.ts +0 -2
  202. package/dist/form/admin/userEdit.js +0 -9
  203. package/dist/form/admin/userEdit.js.map +0 -1
  204. package/dist/form/admin/userInvite.d.ts +0 -2
  205. package/dist/form/admin/userInvite.js +0 -9
  206. package/dist/form/admin/userInvite.js.map +0 -1
  207. package/dist/form/comment.d.ts +0 -2
  208. package/dist/form/comment.js +0 -9
  209. package/dist/form/comment.js.map +0 -1
  210. package/dist/form/index.d.ts +0 -25
  211. package/dist/form/index.js +0 -48
  212. package/dist/form/index.js.map +0 -1
  213. package/dist/form/invited.d.ts +0 -2
  214. package/dist/form/invited.js +0 -13
  215. package/dist/form/invited.js.map +0 -1
  216. package/dist/form/login.d.ts +0 -2
  217. package/dist/form/login.js +0 -11
  218. package/dist/form/login.js.map +0 -1
  219. package/dist/form/me/apiToken.d.ts +0 -2
  220. package/dist/form/me/apiToken.js +0 -9
  221. package/dist/form/me/apiToken.js.map +0 -1
  222. package/dist/form/me/password.d.ts +0 -2
  223. package/dist/form/me/password.js +0 -11
  224. package/dist/form/me/password.js.map +0 -1
  225. package/dist/form/me/user.d.ts +0 -2
  226. package/dist/form/me/user.js +0 -9
  227. package/dist/form/me/user.js.map +0 -1
  228. package/dist/form/register.d.ts +0 -2
  229. package/dist/form/register.js +0 -13
  230. package/dist/form/register.js.map +0 -1
  231. package/dist/form/revision.d.ts +0 -2
  232. package/dist/form/revision.js +0 -13
  233. package/dist/form/revision.js.map +0 -1
  234. package/dist/hono/handlers/admin/share.d.ts +0 -106
  235. package/dist/hono/handlers/admin/share.js +0 -55
  236. package/dist/hono/handlers/admin/share.js.map +0 -1
  237. package/dist/middlewares/accessTokenParser.d.ts +0 -4
  238. package/dist/middlewares/accessTokenParser.js +0 -29
  239. package/dist/middlewares/accessTokenParser.js.map +0 -1
  240. package/dist/middlewares/adminRequired.d.ts +0 -10
  241. package/dist/middlewares/adminRequired.js +0 -35
  242. package/dist/middlewares/adminRequired.js.map +0 -1
  243. package/dist/middlewares/applicationInstalled.d.ts +0 -3
  244. package/dist/middlewares/applicationInstalled.js +0 -20
  245. package/dist/middlewares/applicationInstalled.js.map +0 -1
  246. package/dist/middlewares/applicationNotInstalled.d.ts +0 -3
  247. package/dist/middlewares/applicationNotInstalled.js +0 -13
  248. package/dist/middlewares/applicationNotInstalled.js.map +0 -1
  249. package/dist/middlewares/basicAuth.d.ts +0 -4
  250. package/dist/middlewares/basicAuth.js +0 -23
  251. package/dist/middlewares/basicAuth.js.map +0 -1
  252. package/dist/middlewares/csrfVerify.d.ts +0 -4
  253. package/dist/middlewares/csrfVerify.js +0 -24
  254. package/dist/middlewares/csrfVerify.js.map +0 -1
  255. package/dist/middlewares/encodeSpace.d.ts +0 -3
  256. package/dist/middlewares/encodeSpace.js +0 -14
  257. package/dist/middlewares/encodeSpace.js.map +0 -1
  258. package/dist/middlewares/fileAccessRightOrLoginRequired.d.ts +0 -4
  259. package/dist/middlewares/fileAccessRightOrLoginRequired.js +0 -29
  260. package/dist/middlewares/fileAccessRightOrLoginRequired.js.map +0 -1
  261. package/dist/middlewares/index.d.ts +0 -16
  262. package/dist/middlewares/index.js +0 -30
  263. package/dist/middlewares/index.js.map +0 -1
  264. package/dist/middlewares/jwtAdminRequired.d.ts +0 -8
  265. package/dist/middlewares/jwtAdminRequired.js +0 -35
  266. package/dist/middlewares/jwtAdminRequired.js.map +0 -1
  267. package/dist/middlewares/jwtAuth.d.ts +0 -4
  268. package/dist/middlewares/jwtAuth.js +0 -104
  269. package/dist/middlewares/jwtAuth.js.map +0 -1
  270. package/dist/middlewares/loginChecker.d.ts +0 -4
  271. package/dist/middlewares/loginChecker.js +0 -32
  272. package/dist/middlewares/loginChecker.js.map +0 -1
  273. package/dist/middlewares/loginRequired.d.ts +0 -4
  274. package/dist/middlewares/loginRequired.js +0 -88
  275. package/dist/middlewares/loginRequired.js.map +0 -1
  276. package/dist/routes/admin.d.ts +0 -4
  277. package/dist/routes/admin.js +0 -17
  278. package/dist/routes/admin.js.map +0 -1
  279. package/dist/routes/api/admin.d.ts +0 -4
  280. package/dist/routes/api/admin.js +0 -37
  281. package/dist/routes/api/admin.js.map +0 -1
  282. package/dist/routes/api/attachment.d.ts +0 -4
  283. package/dist/routes/api/attachment.js +0 -19
  284. package/dist/routes/api/attachment.js.map +0 -1
  285. package/dist/routes/api/bookmark.d.ts +0 -4
  286. package/dist/routes/api/bookmark.js +0 -15
  287. package/dist/routes/api/bookmark.js.map +0 -1
  288. package/dist/routes/api/comment.d.ts +0 -4
  289. package/dist/routes/api/comment.js +0 -14
  290. package/dist/routes/api/comment.js.map +0 -1
  291. package/dist/routes/api/index.d.ts +0 -4
  292. package/dist/routes/api/index.js +0 -36
  293. package/dist/routes/api/index.js.map +0 -1
  294. package/dist/routes/api/like.d.ts +0 -4
  295. package/dist/routes/api/like.js +0 -13
  296. package/dist/routes/api/like.js.map +0 -1
  297. package/dist/routes/api/notification.d.ts +0 -4
  298. package/dist/routes/api/notification.js +0 -15
  299. package/dist/routes/api/notification.js.map +0 -1
  300. package/dist/routes/api/page.d.ts +0 -4
  301. package/dist/routes/api/page.js +0 -24
  302. package/dist/routes/api/page.js.map +0 -1
  303. package/dist/routes/api/revision.d.ts +0 -4
  304. package/dist/routes/api/revision.js +0 -14
  305. package/dist/routes/api/revision.js.map +0 -1
  306. package/dist/routes/api/share.d.ts +0 -4
  307. package/dist/routes/api/share.js +0 -16
  308. package/dist/routes/api/share.js.map +0 -1
  309. package/dist/routes/api/version.d.ts +0 -4
  310. package/dist/routes/api/version.js +0 -10
  311. package/dist/routes/api/version.js.map +0 -1
  312. package/dist/routes/index.d.ts +0 -4
  313. package/dist/routes/index.js +0 -71
  314. package/dist/routes/index.js.map +0 -1
  315. package/dist/routes/login.d.ts +0 -4
  316. package/dist/routes/login.js +0 -18
  317. package/dist/routes/login.js.map +0 -1
  318. package/dist/routes/me.d.ts +0 -4
  319. package/dist/routes/me.js +0 -24
  320. package/dist/routes/me.js.map +0 -1
  321. package/dist/routes/ts-rest/admin/app.d.ts +0 -4
  322. package/dist/routes/ts-rest/admin/app.js +0 -67
  323. package/dist/routes/ts-rest/admin/app.js.map +0 -1
  324. package/dist/routes/ts-rest/admin/auth.d.ts +0 -4
  325. package/dist/routes/ts-rest/admin/auth.js +0 -95
  326. package/dist/routes/ts-rest/admin/auth.js.map +0 -1
  327. package/dist/routes/ts-rest/admin/index.d.ts +0 -10
  328. package/dist/routes/ts-rest/admin/index.js +0 -35
  329. package/dist/routes/ts-rest/admin/index.js.map +0 -1
  330. package/dist/routes/ts-rest/admin/mail.d.ts +0 -4
  331. package/dist/routes/ts-rest/admin/mail.js +0 -156
  332. package/dist/routes/ts-rest/admin/mail.js.map +0 -1
  333. package/dist/routes/ts-rest/admin/plugins.d.ts +0 -4
  334. package/dist/routes/ts-rest/admin/plugins.js +0 -317
  335. package/dist/routes/ts-rest/admin/plugins.js.map +0 -1
  336. package/dist/routes/ts-rest/admin/search.d.ts +0 -4
  337. package/dist/routes/ts-rest/admin/search.js +0 -67
  338. package/dist/routes/ts-rest/admin/search.js.map +0 -1
  339. package/dist/routes/ts-rest/admin/security.d.ts +0 -4
  340. package/dist/routes/ts-rest/admin/security.js +0 -114
  341. package/dist/routes/ts-rest/admin/security.js.map +0 -1
  342. package/dist/routes/ts-rest/admin/share.d.ts +0 -4
  343. package/dist/routes/ts-rest/admin/share.js +0 -69
  344. package/dist/routes/ts-rest/admin/share.js.map +0 -1
  345. package/dist/routes/ts-rest/admin/storage.d.ts +0 -4
  346. package/dist/routes/ts-rest/admin/storage.js +0 -59
  347. package/dist/routes/ts-rest/admin/storage.js.map +0 -1
  348. package/dist/routes/ts-rest/admin/users.d.ts +0 -4
  349. package/dist/routes/ts-rest/admin/users.js +0 -215
  350. package/dist/routes/ts-rest/admin/users.js.map +0 -1
  351. package/dist/routes/ts-rest/adminCrypto.d.ts +0 -4
  352. package/dist/routes/ts-rest/adminCrypto.js +0 -111
  353. package/dist/routes/ts-rest/adminCrypto.js.map +0 -1
  354. package/dist/routes/ts-rest/app.d.ts +0 -4
  355. package/dist/routes/ts-rest/app.js +0 -23
  356. package/dist/routes/ts-rest/app.js.map +0 -1
  357. package/dist/routes/ts-rest/attachment.d.ts +0 -4
  358. package/dist/routes/ts-rest/attachment.js +0 -830
  359. package/dist/routes/ts-rest/attachment.js.map +0 -1
  360. package/dist/routes/ts-rest/auth.d.ts +0 -4
  361. package/dist/routes/ts-rest/auth.js +0 -70
  362. package/dist/routes/ts-rest/auth.js.map +0 -1
  363. package/dist/routes/ts-rest/autocomplete.d.ts +0 -30
  364. package/dist/routes/ts-rest/autocomplete.js +0 -189
  365. package/dist/routes/ts-rest/autocomplete.js.map +0 -1
  366. package/dist/routes/ts-rest/backlink.d.ts +0 -4
  367. package/dist/routes/ts-rest/backlink.js +0 -106
  368. package/dist/routes/ts-rest/backlink.js.map +0 -1
  369. package/dist/routes/ts-rest/bookmark.d.ts +0 -4
  370. package/dist/routes/ts-rest/bookmark.js +0 -189
  371. package/dist/routes/ts-rest/bookmark.js.map +0 -1
  372. package/dist/routes/ts-rest/comment.d.ts +0 -4
  373. package/dist/routes/ts-rest/comment.js +0 -217
  374. package/dist/routes/ts-rest/comment.js.map +0 -1
  375. package/dist/routes/ts-rest/draft.d.ts +0 -22
  376. package/dist/routes/ts-rest/draft.js +0 -200
  377. package/dist/routes/ts-rest/draft.js.map +0 -1
  378. package/dist/routes/ts-rest/index.d.ts +0 -4
  379. package/dist/routes/ts-rest/index.js +0 -103
  380. package/dist/routes/ts-rest/index.js.map +0 -1
  381. package/dist/routes/ts-rest/installer.d.ts +0 -4
  382. package/dist/routes/ts-rest/installer.js +0 -77
  383. package/dist/routes/ts-rest/installer.js.map +0 -1
  384. package/dist/routes/ts-rest/me.d.ts +0 -4
  385. package/dist/routes/ts-rest/me.js +0 -410
  386. package/dist/routes/ts-rest/me.js.map +0 -1
  387. package/dist/routes/ts-rest/notification.d.ts +0 -4
  388. package/dist/routes/ts-rest/notification.js +0 -241
  389. package/dist/routes/ts-rest/notification.js.map +0 -1
  390. package/dist/routes/ts-rest/page-collab.d.ts +0 -29
  391. package/dist/routes/ts-rest/page-collab.js +0 -90
  392. package/dist/routes/ts-rest/page-collab.js.map +0 -1
  393. package/dist/routes/ts-rest/page-preview.d.ts +0 -26
  394. package/dist/routes/ts-rest/page-preview.js +0 -80
  395. package/dist/routes/ts-rest/page-preview.js.map +0 -1
  396. package/dist/routes/ts-rest/page.d.ts +0 -4
  397. package/dist/routes/ts-rest/page.js +0 -676
  398. package/dist/routes/ts-rest/page.js.map +0 -1
  399. package/dist/routes/ts-rest/presence.d.ts +0 -30
  400. package/dist/routes/ts-rest/presence.js +0 -155
  401. package/dist/routes/ts-rest/presence.js.map +0 -1
  402. package/dist/routes/ts-rest/revision.d.ts +0 -4
  403. package/dist/routes/ts-rest/revision.js +0 -240
  404. package/dist/routes/ts-rest/revision.js.map +0 -1
  405. package/dist/routes/ts-rest/search.d.ts +0 -4
  406. package/dist/routes/ts-rest/search.js +0 -121
  407. package/dist/routes/ts-rest/search.js.map +0 -1
  408. package/dist/routes/ts-rest/tokenAuth.d.ts +0 -4
  409. package/dist/routes/ts-rest/tokenAuth.js +0 -94
  410. package/dist/routes/ts-rest/tokenAuth.js.map +0 -1
  411. package/dist/routes/ts-rest/user.d.ts +0 -4
  412. package/dist/routes/ts-rest/user.js +0 -307
  413. package/dist/routes/ts-rest/user.js.map +0 -1
  414. package/dist/types/express.d.ts +0 -34
  415. package/dist/types/express.js +0 -50
  416. package/dist/types/express.js.map +0 -1
  417. package/dist/util/accessTokenParser.d.ts +0 -1
  418. package/dist/util/accessTokenParser.js +0 -34
  419. package/dist/util/accessTokenParser.js.map +0 -1
  420. package/dist/util/apiPaginate.d.ts +0 -11
  421. package/dist/util/apiPaginate.js +0 -33
  422. package/dist/util/apiPaginate.js.map +0 -1
  423. package/dist/util/apiResponse.d.ts +0 -9
  424. package/dist/util/apiResponse.js +0 -23
  425. package/dist/util/apiResponse.js.map +0 -1
  426. package/dist/util/auth.d.ts +0 -11
  427. package/dist/util/auth.js +0 -48
  428. package/dist/util/auth.js.map +0 -1
  429. package/dist/util/aws-config-migration.d.ts +0 -11
  430. package/dist/util/aws-config-migration.js +0 -68
  431. package/dist/util/aws-config-migration.js.map +0 -1
  432. package/dist/util/formUtil.d.ts +0 -2
  433. package/dist/util/formUtil.js +0 -15
  434. package/dist/util/formUtil.js.map +0 -1
  435. package/dist/util/githubAuth.d.ts +0 -2
  436. package/dist/util/githubAuth.js +0 -82
  437. package/dist/util/githubAuth.js.map +0 -1
  438. package/dist/util/googleAuth.d.ts +0 -2
  439. package/dist/util/googleAuth.js +0 -85
  440. package/dist/util/googleAuth.js.map +0 -1
  441. package/dist/util/mailer.d.ts +0 -7
  442. package/dist/util/mailer.js +0 -98
  443. package/dist/util/mailer.js.map +0 -1
  444. package/dist/util/page-status-migration.d.ts +0 -23
  445. package/dist/util/page-status-migration.js +0 -48
  446. package/dist/util/page-status-migration.js.map +0 -1
  447. package/dist/util/ssr.d.ts +0 -3
  448. package/dist/util/ssr.js +0 -9
  449. package/dist/util/ssr.js.map +0 -1
  450. package/dist/util/view.d.ts +0 -10
  451. package/dist/util/view.js +0 -99
  452. package/dist/util/view.js.map +0 -1
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.relocateReservedApiPaths = void 0;
4
+ exports.relocatedApiPath = relocatedApiPath;
5
+ const types_1 = require("../types");
6
+ /**
7
+ * v1 → v2.0 — `relocate-reserved-api-paths` (preflight layer).
8
+ *
9
+ * v2 reserves the `/api` namespace as the reverse-proxied backend route
10
+ * surface: the front proxy forwards `/api/v2/*` to the api, and
11
+ * `Page.isCreatableName` now refuses to create / rename a page under
12
+ * `/api`. v1, however, served its API at `/_api/*` (note the leading
13
+ * underscore — reserved by the `/_*` rule in `Page.isCreatableName`), so
14
+ * `/api/*` was a perfectly ordinary wiki page path. An upgraded wiki may hold
15
+ * legitimate v1 pages under `/api/*` that v2 would strand: the web app
16
+ * 404s the reserved namespace, and any page that happened to live at
17
+ * `/api/v2/*` is shadowed by the proxy entirely.
18
+ *
19
+ * This migration moves every surviving page out of `/api/*` into
20
+ * `/api-legacy/*` (preserving the rest of the path) so nothing is lost.
21
+ * `/api-legacy` is itself creatable (the reserved match is segment-bounded,
22
+ * so `api-legacy` does not collide). A pre-existing page at the relocation
23
+ * target is avoided by appending a `-N` suffix.
24
+ *
25
+ * It is `preflight` because it rewrites user-visible page paths: boot
26
+ * blocks until an operator runs `crowi-admin migrate apply` in a
27
+ * maintenance window. The move is done with plain `updateOne` /
28
+ * `updateMany` on the Page + Revision collections rather than
29
+ * `Page.rename`, deliberately bypassing the `pageEvent('update')` chain
30
+ * (mention dispatch / render-cache / backlink) — a path-only relocation of
31
+ * a legacy page must not re-notify mentioned users. No redirect stub is
32
+ * left at the old path: it sits inside the reserved namespace (unreachable
33
+ * by the web app, and `createPage` would itself reject it).
34
+ */
35
+ /**
36
+ * The reserved backend namespace, segment-bounded: matches `/api` and
37
+ * `/api/...` but never `/apiary`. Mirrors the `api` arm of the server's
38
+ * `Page.isCreatableName` forbidden list.
39
+ */
40
+ const RESERVED_API_PATH = /^\/api(\/|$)/;
41
+ /** Relocation root for displaced `/api/*` pages. */
42
+ const RELOCATE_ROOT = '/api-legacy';
43
+ /** Cap on suffix probing when the relocation target is already taken. */
44
+ const MAX_SUFFIX_ATTEMPTS = 1000;
45
+ /** `/api` → `/api-legacy`, `/api/foo` → `/api-legacy/foo`, `/api/` → `/api-legacy/`. */
46
+ function relocatedApiPath(oldPath) {
47
+ return RELOCATE_ROOT + oldPath.slice('/api'.length);
48
+ }
49
+ /**
50
+ * The first relocation target not already occupied by another page. Tries
51
+ * the bare relocated path, then `-1`, `-2`, … . Collisions are near-
52
+ * impossible in practice (`/api-legacy` is a fresh namespace), so this is
53
+ * defensive; it throws rather than loop unboundedly.
54
+ */
55
+ async function findFreeTarget(Page, candidate) {
56
+ if (!(await Page.exists({ path: candidate })))
57
+ return candidate;
58
+ for (let i = 1; i <= MAX_SUFFIX_ATTEMPTS; i++) {
59
+ const next = `${candidate}-${i}`;
60
+ if (!(await Page.exists({ path: next })))
61
+ return next;
62
+ }
63
+ throw new Error(`relocate-reserved-api-paths: could not find a free relocation target for '${candidate}' after ${MAX_SUFFIX_ATTEMPTS} attempts`);
64
+ }
65
+ /** Pages still living under the reserved `/api` namespace, `_id` + `path` only. */
66
+ async function collectApiPages(ctx) {
67
+ const Page = ctx.crowi.model('Page');
68
+ const rows = await Page.find({ path: RESERVED_API_PATH }).select('_id path').lean().exec();
69
+ return rows.map((r) => ({ _id: r._id, path: r.path }));
70
+ }
71
+ exports.relocateReservedApiPaths = (0, types_1.defineMigration)({
72
+ id: 'relocate-reserved-api-paths',
73
+ fromVersion: '1.x',
74
+ toVersion: '2.0',
75
+ layer: 'preflight',
76
+ description: 'Relocate v1 pages out of the v2-reserved /api namespace into /api-legacy',
77
+ /**
78
+ * Pending iff any page still lives under `/api/*`. The anchored regex on
79
+ * the unique-indexed `path` field lets the planner use the index for the
80
+ * `/api` literal prefix, so this stays an index-assisted existence probe
81
+ * rather than a full-collection scan (§4.2.1).
82
+ */
83
+ isPending: async (ctx) => {
84
+ const Page = ctx.crowi.model('Page');
85
+ // Crowi's `Page.exists` resolves to a boolean (see `checkPagesRenamable`),
86
+ // not Mongoose's `{ _id } | null` — `Boolean(...)` is correct either way.
87
+ return Boolean(await Page.exists({ path: RESERVED_API_PATH }));
88
+ },
89
+ /** Full scan for `plan`: count the pages that would move. Not called at boot. */
90
+ detect: async (ctx) => {
91
+ const pages = await collectApiPages(ctx);
92
+ return {
93
+ summary: `${pages.length} page(s) under the reserved /api namespace would move to ${RELOCATE_ROOT}/*`,
94
+ counts: { pages: pages.length },
95
+ };
96
+ },
97
+ stages: [
98
+ {
99
+ name: 'relocate-api-pages',
100
+ fn: async (ctx) => {
101
+ const Page = ctx.crowi.model('Page');
102
+ const Revision = ctx.crowi.model('Revision');
103
+ // Materialise the work-list up front: moving a page out of `/api/*`
104
+ // removes it from the query, so a live cursor could skip or double-
105
+ // count mid-iteration. The set is small (pages under one namespace).
106
+ const pages = await collectApiPages(ctx);
107
+ ctx.progress.setTotal(pages.length);
108
+ if (ctx.dryRun) {
109
+ // Preview only — resolve targets (read-only) so the report reflects
110
+ // collision handling, but perform no writes.
111
+ let wouldMove = 0;
112
+ for (const page of pages) {
113
+ await findFreeTarget(Page, relocatedApiPath(page.path));
114
+ wouldMove += 1;
115
+ ctx.progress.increment();
116
+ }
117
+ return { name: 'relocate-api-pages', transformed: 0, stats: { wouldMove } };
118
+ }
119
+ let moved = 0;
120
+ for (const page of pages) {
121
+ const target = await findFreeTarget(Page, relocatedApiPath(page.path));
122
+ // Page + its revisions both carry `path`; update both. Plain
123
+ // updateOne/updateMany so no pageEvent fires (see module JSDoc).
124
+ await Page.updateOne({ _id: page._id }, { $set: { path: target } });
125
+ await Revision.updateMany({ path: page.path }, { $set: { path: target } });
126
+ ctx.logger.info(`relocate-reserved-api-paths: moved '${page.path}' -> '${target}'`);
127
+ moved += 1;
128
+ ctx.progress.increment();
129
+ }
130
+ return { name: 'relocate-api-pages', transformed: moved };
131
+ },
132
+ },
133
+ ],
134
+ });
135
+ //# sourceMappingURL=relocate-reserved-api-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relocate-reserved-api-paths.js","sourceRoot":"","sources":["../../../src/migration/migrations/relocate-reserved-api-paths.ts"],"names":[],"mappings":"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"}
@@ -20,17 +20,6 @@
20
20
  * The textual conversion logic below is moved verbatim from the old command so
21
21
  * the rewrite output is byte-identical to the legacy migrator.
22
22
  */
23
- /**
24
- * HTML5 element name set used to reject `</foo>` matches whose first path
25
- * segment is actually a closing HTML tag. Source:
26
- * https://developer.mozilla.org/en-US/docs/Web/HTML/Element — the full
27
- * standard element list as of the HTML Living Standard.
28
- *
29
- * Kept as a top-level `Set<string>` so detection runs O(1) per match.
30
- * `h1`..`h6` are listed explicitly because the regex captures `foo` for
31
- * `</foo>` and we want both `</h1>` and `</h6>` to be rejected.
32
- */
33
- export declare const KNOWN_HTML_ELEMENTS: ReadonlySet<string>;
34
23
  /**
35
24
  * v1 angle-bracket internal link form. The capture group grabs the path-style
36
25
  * payload (starts with `/`, no whitespace, no `<` / `>` / `|` other than the
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wikilinkFormat = exports.WIKILINK_DETECTION_REGEX = exports.KNOWN_HTML_ELEMENTS = void 0;
3
+ exports.wikilinkFormat = exports.WIKILINK_DETECTION_REGEX = void 0;
4
4
  exports.bodyHasRewritableWikilink = bodyHasRewritableWikilink;
5
5
  exports.shouldRewriteWikilink = shouldRewriteWikilink;
6
6
  exports.rewriteAndDetect = rewriteAndDetect;
7
7
  exports.rewriteWikilinks = rewriteWikilinks;
8
+ const api_contract_1 = require("@crowi/api-contract");
8
9
  const page_1 = require("../../models/page");
10
+ const helpers_1 = require("../helpers");
9
11
  const types_1 = require("../types");
10
12
  /**
11
13
  * RFC-0008 §10.2 step 4 / §4.3.1 — `wikilink-format` (preflight layer).
@@ -29,129 +31,6 @@ const types_1 = require("../types");
29
31
  * The textual conversion logic below is moved verbatim from the old command so
30
32
  * the rewrite output is byte-identical to the legacy migrator.
31
33
  */
32
- /**
33
- * HTML5 element name set used to reject `</foo>` matches whose first path
34
- * segment is actually a closing HTML tag. Source:
35
- * https://developer.mozilla.org/en-US/docs/Web/HTML/Element — the full
36
- * standard element list as of the HTML Living Standard.
37
- *
38
- * Kept as a top-level `Set<string>` so detection runs O(1) per match.
39
- * `h1`..`h6` are listed explicitly because the regex captures `foo` for
40
- * `</foo>` and we want both `</h1>` and `</h6>` to be rejected.
41
- */
42
- exports.KNOWN_HTML_ELEMENTS = new Set([
43
- 'a',
44
- 'abbr',
45
- 'address',
46
- 'area',
47
- 'article',
48
- 'aside',
49
- 'audio',
50
- 'b',
51
- 'base',
52
- 'bdi',
53
- 'bdo',
54
- 'blockquote',
55
- 'body',
56
- 'br',
57
- 'button',
58
- 'canvas',
59
- 'caption',
60
- 'cite',
61
- 'code',
62
- 'col',
63
- 'colgroup',
64
- 'data',
65
- 'datalist',
66
- 'dd',
67
- 'del',
68
- 'details',
69
- 'dfn',
70
- 'dialog',
71
- 'div',
72
- 'dl',
73
- 'dt',
74
- 'em',
75
- 'embed',
76
- 'fieldset',
77
- 'figcaption',
78
- 'figure',
79
- 'footer',
80
- 'form',
81
- 'h1',
82
- 'h2',
83
- 'h3',
84
- 'h4',
85
- 'h5',
86
- 'h6',
87
- 'head',
88
- 'header',
89
- 'hgroup',
90
- 'hr',
91
- 'html',
92
- 'i',
93
- 'iframe',
94
- 'img',
95
- 'input',
96
- 'ins',
97
- 'kbd',
98
- 'label',
99
- 'legend',
100
- 'li',
101
- 'link',
102
- 'main',
103
- 'map',
104
- 'mark',
105
- 'menu',
106
- 'meta',
107
- 'meter',
108
- 'nav',
109
- 'noscript',
110
- 'object',
111
- 'ol',
112
- 'optgroup',
113
- 'option',
114
- 'output',
115
- 'p',
116
- 'picture',
117
- 'pre',
118
- 'progress',
119
- 'q',
120
- 'rp',
121
- 'rt',
122
- 'ruby',
123
- 's',
124
- 'samp',
125
- 'script',
126
- 'section',
127
- 'select',
128
- 'slot',
129
- 'small',
130
- 'source',
131
- 'span',
132
- 'strong',
133
- 'style',
134
- 'sub',
135
- 'summary',
136
- 'sup',
137
- 'table',
138
- 'tbody',
139
- 'td',
140
- 'template',
141
- 'textarea',
142
- 'tfoot',
143
- 'th',
144
- 'thead',
145
- 'time',
146
- 'title',
147
- 'tr',
148
- 'track',
149
- 'u',
150
- 'ul',
151
- 'var',
152
- 'video',
153
- 'wbr',
154
- ]);
155
34
  /**
156
35
  * v1 angle-bracket internal link form. The capture group grabs the path-style
157
36
  * payload (starts with `/`, no whitespace, no `<` / `>` / `|` other than the
@@ -215,7 +94,7 @@ function shouldRewriteWikilink(innerPath) {
215
94
  // Only reject lowercase-ASCII first segments that are real HTML elements.
216
95
  if (!/^[a-z][a-z0-9]*$/.test(firstSegment))
217
96
  return true;
218
- return !exports.KNOWN_HTML_ELEMENTS.has(firstSegment);
97
+ return !api_contract_1.KNOWN_HTML_ELEMENTS.has(firstSegment);
219
98
  }
220
99
  /**
221
100
  * Single-pass detect-and-rewrite. Returns the rewritten body together with the
@@ -246,36 +125,6 @@ function rewriteAndDetect(body) {
246
125
  function rewriteWikilinks(body) {
247
126
  return rewriteAndDetect(body).body;
248
127
  }
249
- /**
250
- * Resolve which user is recorded as the author of every rewritten revision.
251
- * The `updatePage`-equivalent path (`rewritePageBody`) ultimately calls
252
- * `Revision.prepareRevision`, which **throws** when handed a falsy user, so a
253
- * preflight rewrite MUST resolve a real acting user up front rather than rely
254
- * on per-page `lastUpdateUser`/`creator` (those can dangle to a deleted user).
255
- *
256
- * Order, mirroring the legacy `migrate-wikilink` command:
257
- * 1. `process.env.CROWI_MIGRATE_USER` — interpreted as an email; the named
258
- * user must exist.
259
- * 2. otherwise the oldest admin user (`{ admin: true }` sorted by createdAt),
260
- * deterministic across re-runs.
261
- *
262
- * Throws when neither yields a user so the operator gets a clear error instead
263
- * of a per-page `user should have _id` failure deep inside the rewrite.
264
- */
265
- async function resolveActingUserId(ctx) {
266
- const User = ctx.crowi.model('User');
267
- const explicit = process.env.CROWI_MIGRATE_USER;
268
- if (explicit) {
269
- const named = await User.findOne({ email: explicit }).select('_id').lean().exec();
270
- if (named)
271
- return String(named._id);
272
- throw new Error(`CROWI_MIGRATE_USER='${explicit}' but no user with that email exists.`);
273
- }
274
- const admin = await User.findOne({ admin: true }).sort({ createdAt: 1 }).select('_id').lean().exec();
275
- if (admin)
276
- return String(admin._id);
277
- throw new Error('wikilink-format: no admin user found; set CROWI_MIGRATE_USER=<email> or create an admin user first.');
278
- }
279
128
  /**
280
129
  * Walk every published page, keep those whose current revision body holds a
281
130
  * genuine legacy wikilink (`bodyHasRewritableWikilink` — the same full
@@ -394,7 +243,7 @@ exports.wikilinkFormat = (0, types_1.defineMigration)({
394
243
  const pages = await collectRewritablePages(ctx);
395
244
  return { name: 'rewrite-wikilink', transformed: 0, stats: { wouldRewrite: pages.length } };
396
245
  }
397
- const actingUserId = await resolveActingUserId(ctx);
246
+ const actingUserId = await (0, helpers_1.resolveActingUserId)(ctx, 'wikilink-format');
398
247
  const pages = await collectRewritablePages(ctx);
399
248
  ctx.progress.setTotal(pages.length);
400
249
  let rewritten = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"wikilink-format.js","sourceRoot":"","sources":["../../../src/migration/migrations/wikilink-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wikilink-format.js","sourceRoot":"","sources":["../../../src/migration/migrations/wikilink-format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * `wikilink-html-recover` (preflight layer) — undo the `wikilink-format`
3
+ * close-tag misfire.
4
+ *
5
+ * Before `font` / `center` / `marquee` / `blink` / `applet` were added to
6
+ * `KNOWN_HTML_ELEMENTS`, `wikilink-format` mistook the deprecated HTML close
7
+ * tags `</font>` etc. for v1 angle-bracket wikilinks and rewrote them to
8
+ * `[[/font]]` (§A). `wikilink-format` is recorded as applied and never
9
+ * re-runs, and the corrupted `[[/font]]` form no longer matches its detection
10
+ * regex, so it does not self-heal. This migration walks every published page
11
+ * and reverts the corrupted form `[[/<x>]]` back to the close tag `</x>` when:
12
+ *
13
+ * - `x` is a single path segment (no `/` inside), AND
14
+ * - `x` has no `|alias` segment, AND
15
+ * - `x` is one of the FIVE deprecated tags the misfire could have produced.
16
+ *
17
+ * Scope is the 5 tags, NOT every known HTML element: those 5 were the ONLY
18
+ * names absent from `KNOWN_HTML_ELEMENTS` when `wikilink-format` ran, so they
19
+ * are the only `</x>` that could ever have been mis-rewritten to `[[/x]]`.
20
+ * `section` / `div` / `br` / `img` / etc. were always known and never rewritten,
21
+ * so a `[[/section]]` in real data is a GENUINE wikilink and must be preserved.
22
+ *
23
+ * Genuine wikilinks are otherwise preserved too: `[[/foo/bar]]` (multi-segment),
24
+ * `[[/font|alias]]` (aliased), `[[/Font]]` (uppercase → case-sensitive page
25
+ * name), and `[[/wiki-page]]` (non-recoverable name) are all left untouched.
26
+ *
27
+ * ── Inherent ambiguity ───────────────────────────────────────────────
28
+ * `[[/font]]` could be a corrupted `</font>` OR a genuine wikilink to a real
29
+ * page literally at `/font`. They are indistinguishable from the text alone.
30
+ * We resolve this conservatively: a `[[/<x>]]` whose `/<x>` matches a **live
31
+ * content page** (published, not a redirect stub) is NOT reverted — it is
32
+ * reported by `detect` so an operator can decide manually. The revert therefore
33
+ * only touches occurrences that have no same-named live page to be mistaken for.
34
+ * Pages literally named after a deprecated tag (`/font`, `/center`, …) are very
35
+ * rare, but an absent-page `[[/font]]` is still reverted — see the docs Caution.
36
+ * ─────────────────────────────────────────────────────────────────────
37
+ *
38
+ * Like `wikilink-format`, every body rewrite routes through
39
+ * `ctx.rewritePageBody` (the `updatePage`-equivalent path) so `yjsState` /
40
+ * `yjsCheckpointAt` are nulled and an active editor's stale `Y.Doc` cannot
41
+ * silently revert the recovery (RFC-0008 §4.3.1).
42
+ *
43
+ * Idempotent: once reverted, `</x>` no longer matches this migration's
44
+ * detection regex (it scans for `[[/...]]`, not `</...>`), and a re-run of
45
+ * `wikilink-format` leaves `</x>` alone because `x` is now in
46
+ * `KNOWN_HTML_ELEMENTS`.
47
+ */
48
+ /**
49
+ * The five deprecated/obsolete presentational tags absent from
50
+ * `KNOWN_HTML_ELEMENTS` when `wikilink-format` first ran — the ONLY close tags
51
+ * the misfire could have rewritten to `[[/x]]`. Recovery is scoped to exactly
52
+ * these so a genuine single-segment wikilink to any other element-named page
53
+ * (`[[/section]]`, `[[/div]]`, `[[/br]]`) is never destroyed.
54
+ */
55
+ export declare const RECOVERABLE_DEPRECATED_TAGS: ReadonlySet<string>;
56
+ /**
57
+ * Matches a corrupted-wikilink candidate `[[/<segment>]]` with a single
58
+ * path segment and no alias. The capture group grabs the bare segment
59
+ * (`font` in `[[/font]]`). The `[^[\]|/]+` class excludes `[`, `]`, `|`, and
60
+ * `/`, so multi-segment (`[[/foo/bar]]`) and aliased (`[[/font|x]]`) forms
61
+ * never match here — only `shouldRecoverSegment` then filters by tag name.
62
+ */
63
+ export declare const WIKILINK_HTML_CANDIDATE_REGEX: RegExp;
64
+ /**
65
+ * True iff `[[/<segment>]]` should be reverted to `</segment>`: the segment is
66
+ * a lowercase-ASCII identifier that is one of the FIVE deprecated tags the
67
+ * misfire could have produced. Uppercase (`/Font`), non-deprecated element
68
+ * names (`/section`, `/div`), and non-HTML names (`/wiki`) are genuine
69
+ * wikilinks and are left alone.
70
+ */
71
+ export declare function shouldRecoverSegment(segment: string): boolean;
72
+ /** A single corrupted occurrence located in a body. */
73
+ export interface RecoverableOccurrence {
74
+ /** The full raw match, e.g. `[[/font]]`. */
75
+ raw: string;
76
+ /** The deprecated HTML tag name, e.g. `font`. */
77
+ element: string;
78
+ }
79
+ /**
80
+ * Single-pass scan: locate every recoverable `[[/<deprecated-tag>]]` occurrence
81
+ * in `body`. Pure — no rewrite is applied here (the rewrite happens in
82
+ * `rewriteBody` after same-name page collisions have been resolved
83
+ * per-occurrence).
84
+ */
85
+ export declare function detectRecoverable(body: string): RecoverableOccurrence[];
86
+ /**
87
+ * Rewrite `body`, reverting `[[/<x>]]` → `</x>` for every recoverable element.
88
+ * Elements in `skip` (those that collide with a live same-named page) are left
89
+ * untouched. Returns the input by reference when nothing changed so callers can
90
+ * cheap-skip.
91
+ */
92
+ export declare function rewriteBody(body: string, skip: ReadonlySet<string>): string;
93
+ /**
94
+ * A skipped (collision) occurrence: the deprecated tag that was left as
95
+ * `[[/<element>]]` because a live same-named page exists, plus the page that
96
+ * holds the corrupted markup so an operator can open it from the report.
97
+ */
98
+ export interface CollisionRecord {
99
+ /** The deprecated tag name left untouched, e.g. `font`. */
100
+ element: string;
101
+ /** `_id` of the page whose body still carries `[[/<element>]]`. */
102
+ pageId: string;
103
+ /** Path of that holding page (from the current revision), if available. */
104
+ pagePath?: string;
105
+ }
106
+ /**
107
+ * Render collision records into an operator-actionable string that names the
108
+ * holding page(s) per element, e.g.
109
+ * `/font (in /docs/setup, /guide); /center (in /notes)`. The element→pages
110
+ * mapping is preserved so the operator knows exactly which pages to open from
111
+ * the `migrate plan` output / boot warn log. Elements are sorted; per-element
112
+ * pages prefer the page path, falling back to the page id when the revision
113
+ * carried no path.
114
+ */
115
+ export declare function formatCollisions(collisions: readonly CollisionRecord[]): string;
116
+ export declare const wikilinkHtmlRecover: import("../types").MigrationDefinition;