@crowi/api 2.0.0-alpha.1 → 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 (403) hide show
  1. package/dist/hono/handlers/activation.d.ts +3 -3
  2. package/dist/hono/handlers/admin/users.d.ts +118 -0
  3. package/dist/hono/handlers/admin/users.js +28 -0
  4. package/dist/hono/handlers/admin/users.js.map +1 -1
  5. package/dist/hono/handlers/app.d.ts +1 -0
  6. package/dist/hono/handlers/app.js +11 -0
  7. package/dist/hono/handlers/app.js.map +1 -1
  8. package/dist/hono/handlers/attachment-stream.js +23 -0
  9. package/dist/hono/handlers/attachment-stream.js.map +1 -1
  10. package/dist/hono/handlers/draft.js +10 -0
  11. package/dist/hono/handlers/draft.js.map +1 -1
  12. package/dist/hono/handlers/emailChange.d.ts +4 -4
  13. package/dist/hono/handlers/inviteAccept.d.ts +6 -6
  14. package/dist/hono/handlers/page.d.ts +251 -0
  15. package/dist/hono/handlers/page.js +123 -6
  16. package/dist/hono/handlers/page.js.map +1 -1
  17. package/dist/hono/handlers/passwordReset.d.ts +5 -5
  18. package/dist/hono/handlers/tokenAuth.d.ts +7 -7
  19. package/dist/mcp/result.d.ts +42 -16
  20. package/dist/mcp/result.js +56 -10
  21. package/dist/mcp/result.js.map +1 -1
  22. package/dist/mcp/tools/page.js +21 -1
  23. package/dist/mcp/tools/page.js.map +1 -1
  24. package/dist/mcp/tools/search.d.ts +12 -0
  25. package/dist/mcp/tools/search.js +21 -5
  26. package/dist/mcp/tools/search.js.map +1 -1
  27. package/dist/migration/helpers.d.ts +13 -0
  28. package/dist/migration/helpers.js +29 -0
  29. package/dist/migration/helpers.js.map +1 -0
  30. package/dist/migration/migrations/files-url-to-attachments.d.ts +35 -0
  31. package/dist/migration/migrations/files-url-to-attachments.js +291 -0
  32. package/dist/migration/migrations/files-url-to-attachments.js.map +1 -0
  33. package/dist/migration/migrations/index.js +4 -0
  34. package/dist/migration/migrations/index.js.map +1 -1
  35. package/dist/migration/migrations/published-current-revision.d.ts +47 -0
  36. package/dist/migration/migrations/published-current-revision.js +90 -0
  37. package/dist/migration/migrations/published-current-revision.js.map +1 -0
  38. package/dist/migration/migrations/wikilink-format.d.ts +0 -11
  39. package/dist/migration/migrations/wikilink-format.js +5 -156
  40. package/dist/migration/migrations/wikilink-format.js.map +1 -1
  41. package/dist/migration/migrations/wikilink-html-recover.d.ts +116 -0
  42. package/dist/migration/migrations/wikilink-html-recover.js +314 -0
  43. package/dist/migration/migrations/wikilink-html-recover.js.map +1 -0
  44. package/dist/models/page.d.ts +3 -0
  45. package/dist/models/page.js +31 -0
  46. package/dist/models/page.js.map +1 -1
  47. package/dist/models/user.d.ts +1 -0
  48. package/dist/models/user.js +40 -21
  49. package/dist/models/user.js.map +1 -1
  50. package/dist/renderer/core/headings.d.ts +12 -1
  51. package/dist/renderer/core/headings.js +48 -8
  52. package/dist/renderer/core/headings.js.map +1 -1
  53. package/dist/renderer/pipeline.d.ts +6 -0
  54. package/dist/renderer/pipeline.js.map +1 -1
  55. package/dist/util/page-response.js +19 -2
  56. package/dist/util/page-response.js.map +1 -1
  57. package/package.json +12 -6
  58. package/views/mail/layout.mjml +7 -5
  59. package/dist/common/functions/path2name.d.ts +0 -1
  60. package/dist/common/functions/path2name.js +0 -22
  61. package/dist/common/functions/path2name.js.map +0 -1
  62. package/dist/common/functions/renderIcon.d.ts +0 -1
  63. package/dist/common/functions/renderIcon.js +0 -9
  64. package/dist/common/functions/renderIcon.js.map +0 -1
  65. package/dist/controllers/admin.d.ts +0 -3
  66. package/dist/controllers/admin.js +0 -474
  67. package/dist/controllers/admin.js.map +0 -1
  68. package/dist/controllers/attachment.d.ts +0 -4
  69. package/dist/controllers/attachment.js +0 -200
  70. package/dist/controllers/attachment.js.map +0 -1
  71. package/dist/controllers/backlink.d.ts +0 -3
  72. package/dist/controllers/backlink.js +0 -42
  73. package/dist/controllers/backlink.js.map +0 -1
  74. package/dist/controllers/bookmark.d.ts +0 -3
  75. package/dist/controllers/bookmark.js +0 -100
  76. package/dist/controllers/bookmark.js.map +0 -1
  77. package/dist/controllers/comment.d.ts +0 -3
  78. package/dist/controllers/comment.js +0 -111
  79. package/dist/controllers/comment.js.map +0 -1
  80. package/dist/controllers/index.d.ts +0 -25
  81. package/dist/controllers/index.js +0 -44
  82. package/dist/controllers/index.js.map +0 -1
  83. package/dist/controllers/installer.d.ts +0 -3
  84. package/dist/controllers/installer.js +0 -48
  85. package/dist/controllers/installer.js.map +0 -1
  86. package/dist/controllers/login.d.ts +0 -4
  87. package/dist/controllers/login.js +0 -438
  88. package/dist/controllers/login.js.map +0 -1
  89. package/dist/controllers/logout.d.ts +0 -5
  90. package/dist/controllers/logout.js +0 -11
  91. package/dist/controllers/logout.js.map +0 -1
  92. package/dist/controllers/me.d.ts +0 -4
  93. package/dist/controllers/me.js +0 -369
  94. package/dist/controllers/me.js.map +0 -1
  95. package/dist/controllers/notification.d.ts +0 -3
  96. package/dist/controllers/notification.js +0 -88
  97. package/dist/controllers/notification.js.map +0 -1
  98. package/dist/controllers/page.d.ts +0 -3
  99. package/dist/controllers/page.js +0 -881
  100. package/dist/controllers/page.js.map +0 -1
  101. package/dist/controllers/revision.d.ts +0 -3
  102. package/dist/controllers/revision.js +0 -91
  103. package/dist/controllers/revision.js.map +0 -1
  104. package/dist/controllers/search.d.ts +0 -3
  105. package/dist/controllers/search.js +0 -93
  106. package/dist/controllers/search.js.map +0 -1
  107. package/dist/controllers/share.d.ts +0 -3
  108. package/dist/controllers/share.js +0 -207
  109. package/dist/controllers/share.js.map +0 -1
  110. package/dist/controllers/shareAccess.d.ts +0 -3
  111. package/dist/controllers/shareAccess.js +0 -28
  112. package/dist/controllers/shareAccess.js.map +0 -1
  113. package/dist/controllers/slack.d.ts +0 -3
  114. package/dist/controllers/slack.js +0 -87
  115. package/dist/controllers/slack.js.map +0 -1
  116. package/dist/controllers/tokenAuth.d.ts +0 -10
  117. package/dist/controllers/tokenAuth.js +0 -292
  118. package/dist/controllers/tokenAuth.js.map +0 -1
  119. package/dist/controllers/user.d.ts +0 -3
  120. package/dist/controllers/user.js +0 -67
  121. package/dist/controllers/user.js.map +0 -1
  122. package/dist/controllers/version.d.ts +0 -4
  123. package/dist/controllers/version.js +0 -19
  124. package/dist/controllers/version.js.map +0 -1
  125. package/dist/crowi/express-init.d.ts +0 -4
  126. package/dist/crowi/express-init.js +0 -101
  127. package/dist/crowi/express-init.js.map +0 -1
  128. package/dist/form/admin/app.d.ts +0 -2
  129. package/dist/form/admin/app.js +0 -9
  130. package/dist/form/admin/app.js.map +0 -1
  131. package/dist/form/admin/auth.d.ts +0 -2
  132. package/dist/form/admin/auth.js +0 -9
  133. package/dist/form/admin/auth.js.map +0 -1
  134. package/dist/form/admin/aws.d.ts +0 -2
  135. package/dist/form/admin/aws.js +0 -13
  136. package/dist/form/admin/aws.js.map +0 -1
  137. package/dist/form/admin/github.d.ts +0 -2
  138. package/dist/form/admin/github.js +0 -15
  139. package/dist/form/admin/github.js.map +0 -1
  140. package/dist/form/admin/google.d.ts +0 -2
  141. package/dist/form/admin/google.js +0 -13
  142. package/dist/form/admin/google.js.map +0 -1
  143. package/dist/form/admin/mail.d.ts +0 -2
  144. package/dist/form/admin/mail.js +0 -13
  145. package/dist/form/admin/mail.js.map +0 -1
  146. package/dist/form/admin/sec.d.ts +0 -2
  147. package/dist/form/admin/sec.js +0 -10
  148. package/dist/form/admin/sec.js.map +0 -1
  149. package/dist/form/admin/slackSetting.d.ts +0 -2
  150. package/dist/form/admin/slackSetting.js +0 -13
  151. package/dist/form/admin/slackSetting.js.map +0 -1
  152. package/dist/form/admin/userEdit.d.ts +0 -2
  153. package/dist/form/admin/userEdit.js +0 -9
  154. package/dist/form/admin/userEdit.js.map +0 -1
  155. package/dist/form/admin/userInvite.d.ts +0 -2
  156. package/dist/form/admin/userInvite.js +0 -9
  157. package/dist/form/admin/userInvite.js.map +0 -1
  158. package/dist/form/comment.d.ts +0 -2
  159. package/dist/form/comment.js +0 -9
  160. package/dist/form/comment.js.map +0 -1
  161. package/dist/form/index.d.ts +0 -25
  162. package/dist/form/index.js +0 -48
  163. package/dist/form/index.js.map +0 -1
  164. package/dist/form/invited.d.ts +0 -2
  165. package/dist/form/invited.js +0 -13
  166. package/dist/form/invited.js.map +0 -1
  167. package/dist/form/login.d.ts +0 -2
  168. package/dist/form/login.js +0 -11
  169. package/dist/form/login.js.map +0 -1
  170. package/dist/form/me/apiToken.d.ts +0 -2
  171. package/dist/form/me/apiToken.js +0 -9
  172. package/dist/form/me/apiToken.js.map +0 -1
  173. package/dist/form/me/password.d.ts +0 -2
  174. package/dist/form/me/password.js +0 -11
  175. package/dist/form/me/password.js.map +0 -1
  176. package/dist/form/me/user.d.ts +0 -2
  177. package/dist/form/me/user.js +0 -9
  178. package/dist/form/me/user.js.map +0 -1
  179. package/dist/form/register.d.ts +0 -2
  180. package/dist/form/register.js +0 -13
  181. package/dist/form/register.js.map +0 -1
  182. package/dist/form/revision.d.ts +0 -2
  183. package/dist/form/revision.js +0 -13
  184. package/dist/form/revision.js.map +0 -1
  185. package/dist/hono/handlers/admin/share.d.ts +0 -106
  186. package/dist/hono/handlers/admin/share.js +0 -55
  187. package/dist/hono/handlers/admin/share.js.map +0 -1
  188. package/dist/middlewares/accessTokenParser.d.ts +0 -4
  189. package/dist/middlewares/accessTokenParser.js +0 -29
  190. package/dist/middlewares/accessTokenParser.js.map +0 -1
  191. package/dist/middlewares/adminRequired.d.ts +0 -10
  192. package/dist/middlewares/adminRequired.js +0 -35
  193. package/dist/middlewares/adminRequired.js.map +0 -1
  194. package/dist/middlewares/applicationInstalled.d.ts +0 -3
  195. package/dist/middlewares/applicationInstalled.js +0 -20
  196. package/dist/middlewares/applicationInstalled.js.map +0 -1
  197. package/dist/middlewares/applicationNotInstalled.d.ts +0 -3
  198. package/dist/middlewares/applicationNotInstalled.js +0 -13
  199. package/dist/middlewares/applicationNotInstalled.js.map +0 -1
  200. package/dist/middlewares/basicAuth.d.ts +0 -4
  201. package/dist/middlewares/basicAuth.js +0 -23
  202. package/dist/middlewares/basicAuth.js.map +0 -1
  203. package/dist/middlewares/csrfVerify.d.ts +0 -4
  204. package/dist/middlewares/csrfVerify.js +0 -24
  205. package/dist/middlewares/csrfVerify.js.map +0 -1
  206. package/dist/middlewares/encodeSpace.d.ts +0 -3
  207. package/dist/middlewares/encodeSpace.js +0 -14
  208. package/dist/middlewares/encodeSpace.js.map +0 -1
  209. package/dist/middlewares/fileAccessRightOrLoginRequired.d.ts +0 -4
  210. package/dist/middlewares/fileAccessRightOrLoginRequired.js +0 -29
  211. package/dist/middlewares/fileAccessRightOrLoginRequired.js.map +0 -1
  212. package/dist/middlewares/index.d.ts +0 -16
  213. package/dist/middlewares/index.js +0 -30
  214. package/dist/middlewares/index.js.map +0 -1
  215. package/dist/middlewares/jwtAdminRequired.d.ts +0 -8
  216. package/dist/middlewares/jwtAdminRequired.js +0 -35
  217. package/dist/middlewares/jwtAdminRequired.js.map +0 -1
  218. package/dist/middlewares/jwtAuth.d.ts +0 -4
  219. package/dist/middlewares/jwtAuth.js +0 -104
  220. package/dist/middlewares/jwtAuth.js.map +0 -1
  221. package/dist/middlewares/loginChecker.d.ts +0 -4
  222. package/dist/middlewares/loginChecker.js +0 -32
  223. package/dist/middlewares/loginChecker.js.map +0 -1
  224. package/dist/middlewares/loginRequired.d.ts +0 -4
  225. package/dist/middlewares/loginRequired.js +0 -88
  226. package/dist/middlewares/loginRequired.js.map +0 -1
  227. package/dist/routes/admin.d.ts +0 -4
  228. package/dist/routes/admin.js +0 -17
  229. package/dist/routes/admin.js.map +0 -1
  230. package/dist/routes/api/admin.d.ts +0 -4
  231. package/dist/routes/api/admin.js +0 -37
  232. package/dist/routes/api/admin.js.map +0 -1
  233. package/dist/routes/api/attachment.d.ts +0 -4
  234. package/dist/routes/api/attachment.js +0 -19
  235. package/dist/routes/api/attachment.js.map +0 -1
  236. package/dist/routes/api/bookmark.d.ts +0 -4
  237. package/dist/routes/api/bookmark.js +0 -15
  238. package/dist/routes/api/bookmark.js.map +0 -1
  239. package/dist/routes/api/comment.d.ts +0 -4
  240. package/dist/routes/api/comment.js +0 -14
  241. package/dist/routes/api/comment.js.map +0 -1
  242. package/dist/routes/api/index.d.ts +0 -4
  243. package/dist/routes/api/index.js +0 -36
  244. package/dist/routes/api/index.js.map +0 -1
  245. package/dist/routes/api/like.d.ts +0 -4
  246. package/dist/routes/api/like.js +0 -13
  247. package/dist/routes/api/like.js.map +0 -1
  248. package/dist/routes/api/notification.d.ts +0 -4
  249. package/dist/routes/api/notification.js +0 -15
  250. package/dist/routes/api/notification.js.map +0 -1
  251. package/dist/routes/api/page.d.ts +0 -4
  252. package/dist/routes/api/page.js +0 -24
  253. package/dist/routes/api/page.js.map +0 -1
  254. package/dist/routes/api/revision.d.ts +0 -4
  255. package/dist/routes/api/revision.js +0 -14
  256. package/dist/routes/api/revision.js.map +0 -1
  257. package/dist/routes/api/share.d.ts +0 -4
  258. package/dist/routes/api/share.js +0 -16
  259. package/dist/routes/api/share.js.map +0 -1
  260. package/dist/routes/api/version.d.ts +0 -4
  261. package/dist/routes/api/version.js +0 -10
  262. package/dist/routes/api/version.js.map +0 -1
  263. package/dist/routes/index.d.ts +0 -4
  264. package/dist/routes/index.js +0 -71
  265. package/dist/routes/index.js.map +0 -1
  266. package/dist/routes/login.d.ts +0 -4
  267. package/dist/routes/login.js +0 -18
  268. package/dist/routes/login.js.map +0 -1
  269. package/dist/routes/me.d.ts +0 -4
  270. package/dist/routes/me.js +0 -24
  271. package/dist/routes/me.js.map +0 -1
  272. package/dist/routes/ts-rest/admin/app.d.ts +0 -4
  273. package/dist/routes/ts-rest/admin/app.js +0 -67
  274. package/dist/routes/ts-rest/admin/app.js.map +0 -1
  275. package/dist/routes/ts-rest/admin/auth.d.ts +0 -4
  276. package/dist/routes/ts-rest/admin/auth.js +0 -95
  277. package/dist/routes/ts-rest/admin/auth.js.map +0 -1
  278. package/dist/routes/ts-rest/admin/index.d.ts +0 -10
  279. package/dist/routes/ts-rest/admin/index.js +0 -35
  280. package/dist/routes/ts-rest/admin/index.js.map +0 -1
  281. package/dist/routes/ts-rest/admin/mail.d.ts +0 -4
  282. package/dist/routes/ts-rest/admin/mail.js +0 -156
  283. package/dist/routes/ts-rest/admin/mail.js.map +0 -1
  284. package/dist/routes/ts-rest/admin/plugins.d.ts +0 -4
  285. package/dist/routes/ts-rest/admin/plugins.js +0 -317
  286. package/dist/routes/ts-rest/admin/plugins.js.map +0 -1
  287. package/dist/routes/ts-rest/admin/search.d.ts +0 -4
  288. package/dist/routes/ts-rest/admin/search.js +0 -67
  289. package/dist/routes/ts-rest/admin/search.js.map +0 -1
  290. package/dist/routes/ts-rest/admin/security.d.ts +0 -4
  291. package/dist/routes/ts-rest/admin/security.js +0 -114
  292. package/dist/routes/ts-rest/admin/security.js.map +0 -1
  293. package/dist/routes/ts-rest/admin/share.d.ts +0 -4
  294. package/dist/routes/ts-rest/admin/share.js +0 -69
  295. package/dist/routes/ts-rest/admin/share.js.map +0 -1
  296. package/dist/routes/ts-rest/admin/storage.d.ts +0 -4
  297. package/dist/routes/ts-rest/admin/storage.js +0 -59
  298. package/dist/routes/ts-rest/admin/storage.js.map +0 -1
  299. package/dist/routes/ts-rest/admin/users.d.ts +0 -4
  300. package/dist/routes/ts-rest/admin/users.js +0 -215
  301. package/dist/routes/ts-rest/admin/users.js.map +0 -1
  302. package/dist/routes/ts-rest/adminCrypto.d.ts +0 -4
  303. package/dist/routes/ts-rest/adminCrypto.js +0 -111
  304. package/dist/routes/ts-rest/adminCrypto.js.map +0 -1
  305. package/dist/routes/ts-rest/app.d.ts +0 -4
  306. package/dist/routes/ts-rest/app.js +0 -23
  307. package/dist/routes/ts-rest/app.js.map +0 -1
  308. package/dist/routes/ts-rest/attachment.d.ts +0 -4
  309. package/dist/routes/ts-rest/attachment.js +0 -830
  310. package/dist/routes/ts-rest/attachment.js.map +0 -1
  311. package/dist/routes/ts-rest/auth.d.ts +0 -4
  312. package/dist/routes/ts-rest/auth.js +0 -70
  313. package/dist/routes/ts-rest/auth.js.map +0 -1
  314. package/dist/routes/ts-rest/autocomplete.d.ts +0 -30
  315. package/dist/routes/ts-rest/autocomplete.js +0 -189
  316. package/dist/routes/ts-rest/autocomplete.js.map +0 -1
  317. package/dist/routes/ts-rest/backlink.d.ts +0 -4
  318. package/dist/routes/ts-rest/backlink.js +0 -106
  319. package/dist/routes/ts-rest/backlink.js.map +0 -1
  320. package/dist/routes/ts-rest/bookmark.d.ts +0 -4
  321. package/dist/routes/ts-rest/bookmark.js +0 -189
  322. package/dist/routes/ts-rest/bookmark.js.map +0 -1
  323. package/dist/routes/ts-rest/comment.d.ts +0 -4
  324. package/dist/routes/ts-rest/comment.js +0 -217
  325. package/dist/routes/ts-rest/comment.js.map +0 -1
  326. package/dist/routes/ts-rest/draft.d.ts +0 -22
  327. package/dist/routes/ts-rest/draft.js +0 -200
  328. package/dist/routes/ts-rest/draft.js.map +0 -1
  329. package/dist/routes/ts-rest/index.d.ts +0 -4
  330. package/dist/routes/ts-rest/index.js +0 -103
  331. package/dist/routes/ts-rest/index.js.map +0 -1
  332. package/dist/routes/ts-rest/installer.d.ts +0 -4
  333. package/dist/routes/ts-rest/installer.js +0 -77
  334. package/dist/routes/ts-rest/installer.js.map +0 -1
  335. package/dist/routes/ts-rest/me.d.ts +0 -4
  336. package/dist/routes/ts-rest/me.js +0 -410
  337. package/dist/routes/ts-rest/me.js.map +0 -1
  338. package/dist/routes/ts-rest/notification.d.ts +0 -4
  339. package/dist/routes/ts-rest/notification.js +0 -241
  340. package/dist/routes/ts-rest/notification.js.map +0 -1
  341. package/dist/routes/ts-rest/page-collab.d.ts +0 -29
  342. package/dist/routes/ts-rest/page-collab.js +0 -90
  343. package/dist/routes/ts-rest/page-collab.js.map +0 -1
  344. package/dist/routes/ts-rest/page-preview.d.ts +0 -26
  345. package/dist/routes/ts-rest/page-preview.js +0 -80
  346. package/dist/routes/ts-rest/page-preview.js.map +0 -1
  347. package/dist/routes/ts-rest/page.d.ts +0 -4
  348. package/dist/routes/ts-rest/page.js +0 -676
  349. package/dist/routes/ts-rest/page.js.map +0 -1
  350. package/dist/routes/ts-rest/presence.d.ts +0 -30
  351. package/dist/routes/ts-rest/presence.js +0 -155
  352. package/dist/routes/ts-rest/presence.js.map +0 -1
  353. package/dist/routes/ts-rest/revision.d.ts +0 -4
  354. package/dist/routes/ts-rest/revision.js +0 -240
  355. package/dist/routes/ts-rest/revision.js.map +0 -1
  356. package/dist/routes/ts-rest/search.d.ts +0 -4
  357. package/dist/routes/ts-rest/search.js +0 -121
  358. package/dist/routes/ts-rest/search.js.map +0 -1
  359. package/dist/routes/ts-rest/tokenAuth.d.ts +0 -4
  360. package/dist/routes/ts-rest/tokenAuth.js +0 -94
  361. package/dist/routes/ts-rest/tokenAuth.js.map +0 -1
  362. package/dist/routes/ts-rest/user.d.ts +0 -4
  363. package/dist/routes/ts-rest/user.js +0 -307
  364. package/dist/routes/ts-rest/user.js.map +0 -1
  365. package/dist/types/express.d.ts +0 -34
  366. package/dist/types/express.js +0 -50
  367. package/dist/types/express.js.map +0 -1
  368. package/dist/util/accessTokenParser.d.ts +0 -1
  369. package/dist/util/accessTokenParser.js +0 -34
  370. package/dist/util/accessTokenParser.js.map +0 -1
  371. package/dist/util/apiPaginate.d.ts +0 -11
  372. package/dist/util/apiPaginate.js +0 -33
  373. package/dist/util/apiPaginate.js.map +0 -1
  374. package/dist/util/apiResponse.d.ts +0 -9
  375. package/dist/util/apiResponse.js +0 -23
  376. package/dist/util/apiResponse.js.map +0 -1
  377. package/dist/util/auth.d.ts +0 -11
  378. package/dist/util/auth.js +0 -48
  379. package/dist/util/auth.js.map +0 -1
  380. package/dist/util/aws-config-migration.d.ts +0 -11
  381. package/dist/util/aws-config-migration.js +0 -68
  382. package/dist/util/aws-config-migration.js.map +0 -1
  383. package/dist/util/formUtil.d.ts +0 -2
  384. package/dist/util/formUtil.js +0 -15
  385. package/dist/util/formUtil.js.map +0 -1
  386. package/dist/util/githubAuth.d.ts +0 -2
  387. package/dist/util/githubAuth.js +0 -82
  388. package/dist/util/githubAuth.js.map +0 -1
  389. package/dist/util/googleAuth.d.ts +0 -2
  390. package/dist/util/googleAuth.js +0 -85
  391. package/dist/util/googleAuth.js.map +0 -1
  392. package/dist/util/mailer.d.ts +0 -7
  393. package/dist/util/mailer.js +0 -98
  394. package/dist/util/mailer.js.map +0 -1
  395. package/dist/util/page-status-migration.d.ts +0 -23
  396. package/dist/util/page-status-migration.js +0 -48
  397. package/dist/util/page-status-migration.js.map +0 -1
  398. package/dist/util/ssr.d.ts +0 -3
  399. package/dist/util/ssr.js +0 -9
  400. package/dist/util/ssr.js.map +0 -1
  401. package/dist/util/view.d.ts +0 -10
  402. package/dist/util/view.js +0 -99
  403. package/dist/util/view.js.map +0 -1
@@ -105,7 +105,18 @@ const computeRevisionRenderArtifactsAsync = async (crowi, storedMeta, storedAst,
105
105
  // can omit it — dispatch then degrades to no-op and the `code` /
106
106
  // `@[tag](url)` nodes survive as plain text.
107
107
  const { metadata, renderedAst } = await crowi.getRenderer().runRender(body, { mode: 'read', pageId });
108
- const mergedMeta = { ...pickStoredMeta((0, revision_1.metadataToRevisionMeta)(metadata)), ...fromStored };
108
+ const fresh = pickStoredMeta((0, revision_1.metadataToRevisionMeta)(metadata));
109
+ // Tie the toc source to the AST source. When the stored AST is fresh
110
+ // (`astIsFresh`), we serve `storedAst` and keep the stored-wins merge
111
+ // byte-identical to today, so the toc's anchorIds stay aligned with the
112
+ // stored heading ids. When the AST is stale (version mismatch / absent), we
113
+ // serve the freshly RECOMPUTED `renderedAst`, whose heading ids are slugged
114
+ // from the STRIPPED heading text — so the served toc must ALSO be the
115
+ // recomputed one, or a pre-0.7.0 HTML-heading revision would ship a stale
116
+ // raw-derived `anchorId` that no longer matches any rendered heading `id`
117
+ // (broken TOC click / scroll-spy on exactly the `<font>` legacy content this
118
+ // feature targets). Other meta fields stay stored-wins either way.
119
+ const mergedMeta = astIsFresh ? { ...fresh, ...fromStored } : { ...fresh, ...fromStored, toc: fresh.toc };
109
120
  return {
110
121
  meta: Object.keys(mergedMeta).length > 0 ? mergedMeta : undefined,
111
122
  renderedAst: astIsFresh ? storedAst : renderedAst,
@@ -145,7 +156,13 @@ const pageToResponse = (page, options = {}) => {
145
156
  extended: pageObj.extended,
146
157
  createdAt: (0, ts_rest_helpers_1.toISOStringOrNull)(pageObj.createdAt) || EPOCH_ISO,
147
158
  updatedAt: (0, ts_rest_helpers_1.toISOStringOrNull)(pageObj.updatedAt) || undefined,
148
- latestRevision: pageObj.latestRevision ? (0, ts_rest_helpers_1.toStringId)(pageObj.latestRevision) : undefined,
159
+ // latestRevision is a dynamic, non-schema property assigned by
160
+ // populatePageData (like likerCount / seenUsersCount below), so it must be
161
+ // read off `dynamic` — `toObject()` strips it. Reading it off `pageObj`
162
+ // (the toObject result) always yielded `undefined`, which made the web
163
+ // stale-revision banner (`latestRevision !== revision._id`) never fire when
164
+ // viewing a page at `?revision_id=` a past version.
165
+ latestRevision: dynamic.latestRevision ? (0, ts_rest_helpers_1.toStringId)(dynamic.latestRevision) : undefined,
149
166
  likerCount: dynamic.likerCount,
150
167
  seenUsersCount: dynamic.seenUsersCount,
151
168
  };
@@ -1 +1 @@
1
- {"version":3,"file":"page-response.js","sourceRoot":"","sources":["../../src/util/page-response.ts"],"names":[],"mappings":";;;AAIA,kDAAuF;AACvF,kDAAiE;AACjE,uDAAmH;AAoDnH;;;GAGG;AACI,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAA8B,EAAE;IAChF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AAC7G,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEF,sEAAsE;AACtE,yEAAyE;AACzE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAqBrC,MAAM,kBAAkB,GAAG,CAAC,QAA2B,EAAE,UAAmC,EAAE,EAAY,EAAE,CAAC,CAAC;IACnH,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,QAAQ,CAAC,IAAI;IACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;IACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,UAAU;IACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,4BAAU,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;IAC5D,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,SAAS,EAAE,IAAA,mCAAiB,EAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS;IAC7D,oEAAoE;IACpE,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,EAAE,IAAA,2BAAmB,EAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC1D,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACrH,CAAC,CAAC;AAbU,QAAA,kBAAkB,sBAa5B;AAEI,MAAM,mBAAmB,GAAG,CAAC,MAAuC,EAAE,IAAyB,EAAiC,EAAE;IACvI,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B;AAEF,sEAAsE;AACtE,2BAA2B;AAC3B,SAAS,cAAc,CAAC,MAA2B;IACjD,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;QAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACnD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACrE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAClE,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS;QAAE,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAChG,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,mCAAmC,GAAG,KAAK,EACtD,KAAY,EACZ,UAA2C,EAC3C,SAAkB,EAClB,IAAY,EACZ,qBAA8B,EAC9B,MAAe,EAC+C,EAAE;IAChE,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,kEAAkE;IAClE,kEAAkE;IAClE,sBAAsB;IACtB,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,kBAAkB,KAAK,SAAS,CAAC;IAC9I,MAAM,WAAW,GAAG,SAAS,KAAK,SAAS,CAAC;IAC5C,qEAAqE;IACrE,yDAAyD;IACzD,kEAAkE;IAClE,sEAAsE;IACtE,oEAAoE;IACpE,4DAA4D;IAC5D,+DAA+D;IAC/D,MAAM,UAAU,GAAG,WAAW,IAAI,CAAC,qBAAqB,KAAK,SAAS,IAAI,qBAAqB,KAAK,mCAAyB,CAAC,CAAC;IAE/H,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACjE,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,IAAI,EAAE,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACnF,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SAChD,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,+DAA+D;IAC/D,gEAAgE;IAChE,qEAAqE;IACrE,iEAAiE;IACjE,6CAA6C;IAC7C,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtG,MAAM,UAAU,GAAsB,EAAE,GAAG,cAAc,CAAC,IAAA,iCAAsB,EAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;IAC7G,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACjE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;KAClD,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,mCAAmC,uCAgD9C;AAIF;;;;;;;;;GASG;AACH,wDAAwD;AACjD,MAAM,cAAc,GAAG,CAAC,IAA6B,EAAE,UAAiC,EAAE,EAAO,EAAE;IACxG,MAAM,OAAO,GAAa,OAAQ,IAAqB,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAE,IAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAE,IAAiB,CAAC;IACzI,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAgB,CAAC;IAEjC,OAAO;QACL,GAAG,EAAE,IAAA,4BAAU,EAAC,OAAO,CAAC,GAAG,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EACN,OAAO,CAAC,QAAQ,IAAI,IAAA,2BAAmB,EAAC,OAAO,CAAC,QAAQ,CAAC;YACvD,CAAC,CAAC,IAAA,0BAAkB,EAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;YAChH,CAAC,CAAC,SAAS;QACf,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QACtC,MAAM,EAAG,OAAO,CAAC,MAAmE,IAAI,SAAS;QACjG,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,4BAAU,CAAC,IAAI,EAAE;QACzD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAA,iCAAe,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,4BAAU,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACjG,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAA,iCAAe,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAA,4BAAU,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;QAC7H,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,4BAAU,CAAC,IAAI,EAAE;QAC3C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC;QACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,IAAA,mCAAiB,EAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS;QAC5D,SAAS,EAAE,IAAA,mCAAiB,EAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS;QAC5D,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAA,4BAAU,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;QACvF,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,cAAc,kBA4BzB"}
1
+ {"version":3,"file":"page-response.js","sourceRoot":"","sources":["../../src/util/page-response.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crowi/api",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.2",
4
4
  "main": "dist/app.js",
5
5
  "types": "dist/app.d.ts",
6
6
  "bin": {
@@ -16,6 +16,11 @@
16
16
  "access": "public"
17
17
  },
18
18
  "description": "The simple & powerful Wiki - API Server",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/crowi/crowi.git",
22
+ "directory": "packages/api"
23
+ },
19
24
  "tags": [
20
25
  "wiki",
21
26
  "communication",
@@ -44,7 +49,7 @@
44
49
  "debug": "^4.4.3",
45
50
  "dotenv": "^16.5.0",
46
51
  "github-slugger": "^2.0.0",
47
- "hono": "^4.10.0",
52
+ "hono": "^4.12.25",
48
53
  "hono-rate-limiter": "^0.5.3",
49
54
  "jiti": "^2.7.0",
50
55
  "jsonwebtoken": "^9.0.2",
@@ -59,12 +64,12 @@
59
64
  "shiki": "^4.0.2",
60
65
  "unified": "^11.0.5",
61
66
  "uuid": "^11.1.1",
62
- "ws": "^8.20.1",
67
+ "ws": "^8.21.0",
63
68
  "zod": "^4.4.3",
64
- "@crowi/api-contract": "^2.0.0-alpha.1",
69
+ "@crowi/api-contract": "^2.0.0-alpha.2",
70
+ "@crowi/collab": "^0.1.0-alpha.1",
65
71
  "@crowi/plugin-api": "^0.1.0-alpha.0",
66
- "@crowi/runner": "^0.1.0-alpha.0",
67
- "@crowi/collab": "^0.1.0-alpha.1"
72
+ "@crowi/runner": "^0.1.0-alpha.0"
68
73
  },
69
74
  "devDependencies": {
70
75
  "@types/bcryptjs": "^3.0.0",
@@ -81,6 +86,7 @@
81
86
  "@typescript-eslint/parser": "^6.21.0",
82
87
  "eslint": "^8.57.1",
83
88
  "faker": "^4.1.0",
89
+ "form-data": "^4.0.6",
84
90
  "jest": "^29.7.0",
85
91
  "mongodb-memory-server": "^10.1.4",
86
92
  "regenerator-runtime": "^0.13.3",
@@ -17,11 +17,13 @@
17
17
  </mj-column>
18
18
  </mj-section>
19
19
 
20
- <mj-section background-color="#ffffff" border-radius="12px" padding="8px 8px">
21
- <mj-column>
22
- <!--BODY-->
23
- </mj-column>
24
- </mj-section>
20
+ <mj-wrapper padding="0 16px">
21
+ <mj-section background-color="#ffffff" border-radius="12px" padding="8px 8px">
22
+ <mj-column>
23
+ <!--BODY-->
24
+ </mj-column>
25
+ </mj-section>
26
+ </mj-wrapper>
25
27
 
26
28
  <mj-section padding="16px 0 32px">
27
29
  <mj-column>
@@ -1 +0,0 @@
1
- export default function path2name(path: any): any;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = path2name;
4
- function path2name(path) {
5
- const name = path;
6
- // /.../YYYY/MM/DD 形式のページ
7
- if (name.match(/^.*?([^/]+\/\d{4}\/\d{2}\/\d{2}\/?)$/)) {
8
- return name.replace(/^.*?([^/]+\/\d{4}\/\d{2}\/\d{2}\/?)$/, '$1');
9
- }
10
- // /.../YYYY/MM 形式のページ
11
- if (name.match(/^.*?([^/]+\/\d{4}\/\d{2}\/?)$/)) {
12
- return name.replace(/^.*?([^/]+\/\d{4}\/\d{2}\/?)$/, '$1');
13
- }
14
- // /.../YYYY 形式のページ
15
- if (name.match(/^.*?([^/]+\/\d{4}\/?)$/)) {
16
- return name.replace(/^.*?([^/]+\/\d{4}\/?)$/, '$1');
17
- }
18
- // ページの末尾を拾う
19
- const suffix = name.replace(/.*\/(.+\/?)$/, '$1');
20
- return suffix || name;
21
- }
22
- //# sourceMappingURL=path2name.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path2name.js","sourceRoot":"","sources":["../../../src/common/functions/path2name.ts"],"names":[],"mappings":";;AAAA,4BAqBC;AArBD,SAAwB,SAAS,CAAC,IAAI;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC;IAElB,yBAAyB;IACzB,IAAI,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,mBAAmB;IACnB,IAAI,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,YAAY;IACZ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC"}
@@ -1 +0,0 @@
1
- export default function renderIcon(path: string, classNames?: string[], attributes?: string): string;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = renderIcon;
4
- function renderIcon(path, classNames = [], attributes = '') {
5
- const className = ['mdi-svg', ...classNames].join(' ');
6
- const formattedAttributes = attributes && ` ${attributes}`;
7
- return `<svg viewBox="0 0 24 24" role="presentation" class="${className}"${formattedAttributes}><path d="${path}"></path></svg>`;
8
- }
9
- //# sourceMappingURL=renderIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderIcon.js","sourceRoot":"","sources":["../../../src/common/functions/renderIcon.ts"],"names":[],"mappings":";;AAAA,6BAIC;AAJD,SAAwB,UAAU,CAAC,IAAY,EAAE,aAAuB,EAAE,EAAE,UAAU,GAAG,EAAE;IACzF,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,mBAAmB,GAAG,UAAU,IAAI,IAAI,UAAU,EAAE,CAAC;IAC3D,OAAO,uDAAuD,SAAS,IAAI,mBAAmB,aAAa,IAAI,iBAAiB,CAAC;AACnI,CAAC"}
@@ -1,3 +0,0 @@
1
- import Crowi from '../crowi';
2
- declare const _default: (crowi: Crowi) => any;
3
- export default _default;
@@ -1,474 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const debug_1 = __importDefault(require("debug"));
7
- const apiResponse_1 = __importDefault(require("../util/apiResponse"));
8
- const view_1 = require("../util/view");
9
- const config_1 = require("../models/config");
10
- const error_1 = require("../types/error");
11
- const express_1 = require("../types/express");
12
- exports.default = (crowi) => {
13
- const debug = (0, debug_1.default)('crowi:routes:admin');
14
- const models = crowi.models;
15
- const User = models.User;
16
- const Config = models.Config;
17
- const MAX_PAGE_LIST = 5;
18
- const actions = {};
19
- actions.api = {};
20
- function createPager(total, limit, page, pagesCount, maxPageList) {
21
- const pager = {
22
- page,
23
- pagesCount,
24
- pages: [],
25
- total,
26
- previous: null,
27
- previousDots: false,
28
- next: null,
29
- nextDots: false,
30
- };
31
- if (page > 1) {
32
- pager.previous = page - 1;
33
- }
34
- if (page < pagesCount) {
35
- pager.next = page + 1;
36
- }
37
- let pagerMin = Math.max(1, Math.ceil(page - maxPageList / 2));
38
- let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList / 2));
39
- if (pagerMin === 1) {
40
- if (MAX_PAGE_LIST < pagesCount) {
41
- pagerMax = MAX_PAGE_LIST;
42
- }
43
- else {
44
- pagerMax = pagesCount;
45
- }
46
- }
47
- if (pagerMax === pagesCount) {
48
- if (pagerMax - MAX_PAGE_LIST < 1) {
49
- pagerMin = 1;
50
- }
51
- else {
52
- pagerMin = pagerMax - MAX_PAGE_LIST;
53
- }
54
- }
55
- if (pagerMin > 1) {
56
- pager.previousDots = true;
57
- }
58
- if (pagerMax < pagesCount) {
59
- pager.nextDots = true;
60
- }
61
- for (let i = pagerMin; i <= pagerMax; i++) {
62
- pager.pages.push(i);
63
- }
64
- return pager;
65
- }
66
- actions.index = function (req, res) {
67
- const context = (0, view_1.getAppContext)(crowi, req);
68
- return res.json({ context });
69
- };
70
- actions.api.index = function (req, res) {
71
- const searcher = crowi.getSearcher();
72
- return res.json(apiResponse_1.default.success({ searchConfigured: !!searcher }));
73
- };
74
- actions.api.app = {};
75
- actions.api.app.index = async function (req, res) {
76
- const config = crowi.getConfig();
77
- const settingForm = config.crowi;
78
- const isUploadable = Config.isUploadable();
79
- return res.json(apiResponse_1.default.success({ settingForm, registrationMode: config_1.registrationMode, isUploadable }));
80
- };
81
- actions.notification = {};
82
- actions.api.notification = {};
83
- actions.api.notification.index = async function (req, res) {
84
- const config = crowi.getConfig();
85
- const UpdatePost = crowi.model('UpdatePost');
86
- const hasSlackConfigValue = (0, config_1.hasSlackConfig)(config);
87
- const hasSlackTokenValue = (0, config_1.hasSlackToken)(config);
88
- const slack = crowi.slack;
89
- const appUrl = config.crowi['app:url'];
90
- const defaultSlackSetting = { 'slack:clientId': '', 'slack:clientSecret': '' };
91
- const slackSetting = hasSlackConfigValue ? config.notification : defaultSlackSetting;
92
- const slackAuthUrl = hasSlackConfigValue ? slack.getAuthorizeURL() : '';
93
- const settings = await UpdatePost.findAll();
94
- return res.json(apiResponse_1.default.success({
95
- settings,
96
- slackSetting,
97
- hasSlackConfig: hasSlackConfigValue,
98
- hasSlackToken: hasSlackTokenValue,
99
- slackAuthUrl,
100
- appUrl,
101
- }));
102
- };
103
- actions.api.notification.slackSetting = async function (req, res) {
104
- const configService = crowi.getConfigService();
105
- const { slackSetting } = req.form;
106
- if (!req.form.isValid) {
107
- return res.json(apiResponse_1.default.error(req.form.errors.join('\n')));
108
- }
109
- try {
110
- await configService.saveConfig('notification', slackSetting);
111
- return res.json(apiResponse_1.default.success({ message: 'Updated Slack setting.' }));
112
- }
113
- catch (err) {
114
- const error = (0, error_1.asCustomError)(err);
115
- return res.json(apiResponse_1.default.error(error.message));
116
- }
117
- };
118
- actions.api.notification.removeSlackSetting = async function (req, res) {
119
- const configService = crowi.getConfigService();
120
- try {
121
- await Promise.all([
122
- configService.deleteConfig('notification', 'slack:clientId'),
123
- configService.deleteConfig('notification', 'slack:clientSecret'),
124
- configService.deleteConfig('notification', 'slack:token'),
125
- ]);
126
- }
127
- catch (err) {
128
- const error = (0, error_1.asCustomError)(err);
129
- return res.json(apiResponse_1.default.error(error.message));
130
- }
131
- return res.json(apiResponse_1.default.success({ message: 'Successfully remove slack setting.' }));
132
- };
133
- actions.notification.slackAuth = async function (req, res) {
134
- const code = (0, express_1.getQueryAsString)(req.query.code);
135
- const configService = crowi.getConfigService();
136
- if (!code || !(0, config_1.hasSlackConfig)(req.config)) {
137
- return res.redirect('/admin/notification');
138
- }
139
- const slack = crowi.slack;
140
- try {
141
- const token = await slack.getOauthAccessToken(code);
142
- try {
143
- await configService.saveConfig('notification', { 'slack:token': token });
144
- req.flash('successMessage', ['Successfully Connected!']);
145
- }
146
- catch (err) {
147
- req.flash('errorMessage', ['Failed to save access_token. Please try again.']);
148
- }
149
- return res.redirect('/admin/notification');
150
- }
151
- catch (error) {
152
- debug('oauth response ERROR', error);
153
- req.flash('errorMessage', ['Failed to fetch access_token. Please do connect again.']);
154
- return res.redirect('/admin/notification');
155
- }
156
- };
157
- actions.user = {};
158
- actions.api.user = {};
159
- actions.api.user.index = function (req, res) {
160
- const page = parseInt((0, express_1.getQueryAsString)(req.query.page)) || 1;
161
- // uq means user query
162
- // q used by search box on header
163
- const uq = (0, express_1.getQueryAsString)(req.query.uq);
164
- const query = {};
165
- if (uq) {
166
- const $regex = uq.trim().replace(' ', '|');
167
- query.$or = ['username', 'name', 'email'].map((v) => ({
168
- [v]: {
169
- $regex,
170
- $options: 'i',
171
- },
172
- }));
173
- }
174
- User.findUsersWithPagination({ page: page }, query, (err, result) => {
175
- if (err) {
176
- debug(err);
177
- return res.json(apiResponse_1.default.success({
178
- users: [],
179
- pager: null,
180
- uq: uq,
181
- error: err.message,
182
- }));
183
- }
184
- const pager = createPager(result.total, result.limit, result.page, result.pages, MAX_PAGE_LIST);
185
- return res.json(apiResponse_1.default.success({
186
- users: result.docs,
187
- pager: pager,
188
- uq,
189
- }));
190
- });
191
- };
192
- actions.api.user.invite = function (req, res) {
193
- const { emailList, sendEmail } = req.form.inviteForm;
194
- const toSendEmail = sendEmail || false;
195
- if (!req.form.isValid) {
196
- return res.json(apiResponse_1.default.error(req.form.errors.join('\n')));
197
- }
198
- User.createUsersByInvitation(emailList.split('\n'), toSendEmail, function (err, userList) {
199
- if (err === null) {
200
- return res.json(apiResponse_1.default.success({ userList }));
201
- }
202
- debug(err, userList);
203
- return res.json(apiResponse_1.default.error('招待に失敗しました。'));
204
- });
205
- };
206
- actions.api.user.makeAdmin = function (req, res) {
207
- const id = req.params.id;
208
- User.findById(id, function (err, userData) {
209
- userData.makeAdmin(function (err, userData) {
210
- if (err === null) {
211
- return res.json(apiResponse_1.default.success({ message: `${userData.name}さんのアカウントを管理者に設定しました。` }));
212
- }
213
- debug(err, userData);
214
- return res.json(apiResponse_1.default.error('更新に失敗しました。'));
215
- });
216
- });
217
- };
218
- actions.api.user.removeFromAdmin = function (req, res) {
219
- const id = req.params.id;
220
- User.findById(id, function (err, userData) {
221
- userData.removeFromAdmin(function (err, userData) {
222
- if (err === null) {
223
- return res.json(apiResponse_1.default.success({ message: `${userData.name}さんのアカウントを管理者から外しました。` }));
224
- }
225
- debug(err, userData);
226
- return res.json(apiResponse_1.default.error('更新に失敗しました。'));
227
- });
228
- });
229
- };
230
- actions.api.user.activate = function (req, res) {
231
- const id = req.params.id;
232
- User.findById(id, function (err, userData) {
233
- userData.statusActivate(function (err, userData) {
234
- if (err === null) {
235
- return res.json(apiResponse_1.default.success({ message: `${userData.name}さんのアカウントを承認しました。` }));
236
- }
237
- debug(err, userData);
238
- return res.json(apiResponse_1.default.error('更新に失敗しました。'));
239
- });
240
- });
241
- };
242
- actions.api.user.suspend = function (req, res) {
243
- const id = req.params.id;
244
- User.findById(id, function (err, userData) {
245
- userData.statusSuspend(function (err, userData) {
246
- if (err === null) {
247
- return res.json(apiResponse_1.default.success({ message: `${userData.name}さんのアカウントを利用停止にしました。` }));
248
- }
249
- debug(err, userData);
250
- return res.json(apiResponse_1.default.error('更新に失敗しました。'));
251
- });
252
- });
253
- };
254
- actions.user.remove = function (req, res) {
255
- // 未実装
256
- return res.redirect('/admin/users');
257
- };
258
- // これやったときの relation の挙動未確認
259
- actions.user.removeCompletely = function (req, res) {
260
- // ユーザーの物理削除
261
- const id = req.params.id;
262
- User.removeCompletelyById(id, function (err, removed) {
263
- if (err) {
264
- debug('Error while removing user.', err, id);
265
- req.flash('errorMessage', '完全な削除に失敗しました。');
266
- }
267
- else {
268
- req.flash('successMessage', '削除しました');
269
- }
270
- return res.redirect('/admin/users');
271
- });
272
- };
273
- actions.api.user.resetPassword = function (req, res) {
274
- const id = req.body.user_id;
275
- const User = crowi.model('User');
276
- User.resetPasswordByRandomString(id)
277
- .then(function (data) {
278
- return res.json(apiResponse_1.default.success(data));
279
- })
280
- .catch(function (err) {
281
- debug('Error on reseting password', err);
282
- return res.json(apiResponse_1.default.error('Error'));
283
- });
284
- };
285
- actions.api.user.updateEmail = async function (req, res) {
286
- const { user_id: id, email } = req.body;
287
- const User = crowi.model('User');
288
- try {
289
- const user = await User.findById(id);
290
- if (!user) {
291
- throw new Error('User not found');
292
- }
293
- await user.updateEmail(email);
294
- return res.json(apiResponse_1.default.success());
295
- }
296
- catch (err) {
297
- debug('Error on updating email', err);
298
- return res.json(apiResponse_1.default.error('Error'));
299
- }
300
- };
301
- actions.api.top = {};
302
- actions.api.top.index = function (req, res) {
303
- const { version: crowiVersion } = crowi;
304
- const searcher = crowi.getSearcher();
305
- const serverInfo = {
306
- node: {
307
- arch: process.arch,
308
- version: process.version,
309
- },
310
- };
311
- // Legacy admin top page exposed `searchInfo`. The new SearchDriver
312
- // contract intentionally hides driver internals, so we only surface
313
- // the node / index name when the active driver is the elasticsearch
314
- // plugin (which exposes those fields). Other drivers report empty.
315
- const searchInfo = searcher && searcher.node && searcher.baseIndexName
316
- ? {
317
- node: searcher.node,
318
- indexName: searcher.baseIndexName,
319
- esVersion: 'unknown',
320
- }
321
- : {};
322
- return res.json(apiResponse_1.default.success({ crowiVersion, serverInfo, searchInfo }));
323
- };
324
- actions.api.postSettings = function (req, res) {
325
- const user = req.user;
326
- const form = req.form.settingForm;
327
- if (req.form.isValid) {
328
- debug('form content', form);
329
- // mail setting ならここで validation
330
- if (form['mail:from']) {
331
- validateMailSetting(req, form, function (err, data) {
332
- debug('Error validate mail setting: ', err, data);
333
- if (err) {
334
- req.form.errors.push('SMTPを利用したテストメール送信に失敗しました。設定をみなおしてください。');
335
- return res.json(apiResponse_1.default.error(req.form.errors.join('\n')));
336
- }
337
- return saveSetting(req, res, form);
338
- });
339
- }
340
- if (form['auth:disablePasswordAuth'] && !user.hasValidThirdPartyId()) {
341
- return res.json(apiResponse_1.default.error('パスワードによるログインを禁止するには管理者が有効な外部サービスと連携している必要があります。'));
342
- }
343
- return saveSetting(req, res, form);
344
- }
345
- else {
346
- return res.json(apiResponse_1.default.error(req.form.errors.join('\n')));
347
- }
348
- };
349
- actions.api.notificationAdd = function (req, res) {
350
- const user = req.user;
351
- const UpdatePost = crowi.model('UpdatePost');
352
- const pathPattern = req.body.pathPattern;
353
- const channel = req.body.channel;
354
- debug('notification.add', pathPattern, channel);
355
- UpdatePost.createUpdatePost(pathPattern, channel, user._id)
356
- .then(function (doc) {
357
- debug('Successfully save updatePost', doc);
358
- // fixme: うーん
359
- doc.creator = doc.creator._id.toString();
360
- return res.json(apiResponse_1.default.success({ updatePost: doc }));
361
- })
362
- .catch(function (err) {
363
- debug('Failed to save updatePost', err);
364
- return res.json(apiResponse_1.default.error());
365
- });
366
- };
367
- // app.post('/_api/admin/notifications.remove' , admin.api.notificationRemove);
368
- actions.api.notificationRemove = async function (req, res) {
369
- const UpdatePost = crowi.model('UpdatePost');
370
- const id = req.body.id;
371
- try {
372
- await UpdatePost.findOneAndRemove({ _id: id });
373
- debug('Successfully remove updatePost');
374
- return res.json(apiResponse_1.default.success({}));
375
- }
376
- catch (err) {
377
- debug('Failed to remove updatePost', err);
378
- return res.json(apiResponse_1.default.error());
379
- }
380
- };
381
- // app.get('/_api/admin/users.search' , admin.api.userSearch);
382
- actions.api.usersSearch = function (req, res) {
383
- const User = crowi.model('User');
384
- const email = req.query.email;
385
- User.findUsersByPartOfEmail(email, {})
386
- .then((users) => {
387
- const result = {
388
- data: users,
389
- };
390
- return res.json(apiResponse_1.default.success(result));
391
- })
392
- .catch((err) => {
393
- return res.json(apiResponse_1.default.error());
394
- });
395
- };
396
- async function saveSetting(req, res, form) {
397
- const configService = crowi.getConfigService();
398
- await configService.saveConfig('crowi', form);
399
- return res.json(apiResponse_1.default.success());
400
- }
401
- function validateMailSetting(req, form, callback) {
402
- const mailer = crowi.mailer;
403
- const option = {
404
- host: form['mail:smtpHost'],
405
- port: form['mail:smtpPort'],
406
- };
407
- if (form['mail:smtpUser'] && form['mail:smtpPassword']) {
408
- option.auth = {
409
- user: form['mail:smtpUser'],
410
- pass: form['mail:smtpPassword'],
411
- };
412
- }
413
- if (option.port === 465) {
414
- option.secure = true;
415
- }
416
- const smtpClient = mailer.createSMTPClient(option);
417
- debug('mailer setup for validate SMTP setting', smtpClient);
418
- smtpClient.sendMail({
419
- to: req.user.email,
420
- subject: 'Wiki管理設定のアップデートによるメール通知',
421
- text: 'このメールは、WikiのSMTP設定のアップデートにより送信されています。',
422
- }, callback);
423
- }
424
- actions.api.backlink = {};
425
- actions.api.backlink.buildBacklinks = function (req, res) {
426
- const Backlink = crowi.model('Backlink');
427
- // In background
428
- Backlink.createByAllPages();
429
- return res.json(apiResponse_1.default.success({ message: 'Now re-building backlinks ... this takes a while.' }));
430
- };
431
- actions.api.user.edit = async function (req, res) {
432
- const id = req.params.id;
433
- const { name, emailToBeChanged } = req.form.userEditForm;
434
- try {
435
- const user = await User.findById(id);
436
- if (!user) {
437
- throw new Error('User not found');
438
- }
439
- const emailDuplicateUser = await User.findUserByEmail(emailToBeChanged);
440
- if (emailDuplicateUser && !user.equals(emailDuplicateUser)) {
441
- throw new Error('Email duplicated');
442
- }
443
- await user.updateNameAndEmail(name, emailToBeChanged);
444
- return res.json(apiResponse_1.default.success({ message: 'Successfully updated' }));
445
- }
446
- catch (err) {
447
- const error = (0, error_1.asCustomError)(err);
448
- if (error.message) {
449
- return res.json(apiResponse_1.default.error(error.message));
450
- }
451
- else {
452
- return res.json(apiResponse_1.default.error('Failed to update name or email'));
453
- }
454
- }
455
- };
456
- async function activateInvitedUser(req, res) {
457
- const user = req.user;
458
- const invitedId = req.params.id;
459
- const message = req.body.message;
460
- try {
461
- const invited = await User.isEmailValid(invitedId);
462
- if (!invited) {
463
- return res.json(apiResponse_1.default.error('招待されたメールアドレスは使用できません。'));
464
- }
465
- // ... existing code ...
466
- }
467
- catch (err) {
468
- const error = (0, error_1.asCustomError)(err);
469
- return res.json(apiResponse_1.default.error(error.message));
470
- }
471
- }
472
- return actions;
473
- };
474
- //# sourceMappingURL=admin.js.map