@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../src/routes/ts-rest/draft.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import Crowi from '../../crowi';
2
- import { Express } from 'express';
3
- declare const _default: (crowi: Crowi, app: Express) => void;
4
- export default _default;
@@ -1,103 +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 express_1 = require("express");
7
- const app_1 = __importDefault(require("./app"));
8
- const auth_1 = __importDefault(require("./auth"));
9
- const installer_1 = __importDefault(require("./installer"));
10
- const tokenAuth_1 = __importDefault(require("./tokenAuth"));
11
- const me_1 = __importDefault(require("./me"));
12
- const page_1 = __importDefault(require("./page"));
13
- const page_preview_1 = __importDefault(require("./page-preview"));
14
- const page_collab_1 = __importDefault(require("./page-collab"));
15
- const presence_1 = __importDefault(require("./presence"));
16
- const user_1 = __importDefault(require("./user"));
17
- const comment_1 = __importDefault(require("./comment"));
18
- const bookmark_1 = __importDefault(require("./bookmark"));
19
- const revision_1 = __importDefault(require("./revision"));
20
- const notification_1 = __importDefault(require("./notification"));
21
- const backlink_1 = __importDefault(require("./backlink"));
22
- const draft_1 = __importDefault(require("./draft"));
23
- const autocomplete_1 = __importDefault(require("./autocomplete"));
24
- const attachment_1 = __importDefault(require("./attachment"));
25
- const search_1 = __importDefault(require("./search"));
26
- const adminCrypto_1 = __importDefault(require("./adminCrypto"));
27
- const admin_1 = __importDefault(require("./admin"));
28
- const jwtAuth_1 = __importDefault(require("../../middlewares/jwtAuth"));
29
- const jwtAdminRequired_1 = __importDefault(require("../../middlewares/jwtAdminRequired"));
30
- const debug_1 = __importDefault(require("debug"));
31
- const debug = (0, debug_1.default)('crowi:routes:ts-rest');
32
- exports.default = (crowi, app) => {
33
- debug('Mounting ts-rest routes...');
34
- // ========================================
35
- // Authentication Layer Structure
36
- // ========================================
37
- // 1. Public routes (no authentication required)
38
- // 2. Authenticated routes (JWT authentication required)
39
- // 3. Admin routes (JWT authentication + admin permission required)
40
- // ========================================
41
- // Public Router - No authentication required
42
- const publicRouter = (0, express_1.Router)();
43
- const appRouter = (0, app_1.default)(crowi, app);
44
- const authRouter = (0, auth_1.default)(crowi, app); // Legacy - to be removed
45
- const installerRouter = (0, installer_1.default)(crowi, app);
46
- const tokenAuthRouter = (0, tokenAuth_1.default)(crowi, app);
47
- debug('Mounting public routes (no auth required)');
48
- publicRouter.use(appRouter);
49
- publicRouter.use(authRouter);
50
- publicRouter.use(installerRouter);
51
- publicRouter.use(tokenAuthRouter);
52
- // Authenticated Router - JWT authentication required
53
- const authenticatedRouter = (0, express_1.Router)();
54
- authenticatedRouter.use((0, jwtAuth_1.default)(crowi)); // Apply JWT auth to all routes
55
- const meRouter = (0, me_1.default)(crowi, app);
56
- const pageRouter = (0, page_1.default)(crowi, app);
57
- const pagePreviewRouter = (0, page_preview_1.default)(crowi, app);
58
- const pageCollabRouter = (0, page_collab_1.default)(crowi, app);
59
- const presenceRouter = (0, presence_1.default)(crowi, app);
60
- const userRouter = (0, user_1.default)(crowi, app);
61
- const commentRouter = (0, comment_1.default)(crowi, app);
62
- const bookmarkRouter = (0, bookmark_1.default)(crowi, app);
63
- const revisionRouter = (0, revision_1.default)(crowi, app);
64
- const notificationRouter = (0, notification_1.default)(crowi, app);
65
- const backlinkRouter = (0, backlink_1.default)(crowi, app);
66
- const draftRouter = (0, draft_1.default)(crowi, app);
67
- const autocompleteRouter = (0, autocomplete_1.default)(crowi, app);
68
- const attachmentRouter = (0, attachment_1.default)(crowi, app);
69
- const searchRouter = (0, search_1.default)(crowi, app);
70
- debug('Mounting authenticated routes (JWT required)');
71
- authenticatedRouter.use(meRouter);
72
- // Draft + autocomplete routes mount before pageRouter so the exact
73
- // `/pages/drafts` and `/pages/autocomplete` paths are matched ahead
74
- // of any broad `/pages/*` pattern.
75
- authenticatedRouter.use(draftRouter);
76
- authenticatedRouter.use(autocompleteRouter);
77
- authenticatedRouter.use(pageRouter);
78
- authenticatedRouter.use(pagePreviewRouter);
79
- authenticatedRouter.use(pageCollabRouter);
80
- authenticatedRouter.use(presenceRouter);
81
- authenticatedRouter.use(userRouter);
82
- authenticatedRouter.use(commentRouter);
83
- authenticatedRouter.use(bookmarkRouter);
84
- authenticatedRouter.use(revisionRouter);
85
- authenticatedRouter.use(notificationRouter);
86
- authenticatedRouter.use(backlinkRouter);
87
- authenticatedRouter.use(attachmentRouter);
88
- authenticatedRouter.use(searchRouter);
89
- // Admin Router - JWT authentication + admin permission required
90
- const adminRouter = (0, express_1.Router)();
91
- adminRouter.use((0, jwtAdminRequired_1.default)(crowi)); // Apply JWT auth + admin check
92
- const adminCryptoRouter = (0, adminCrypto_1.default)(crowi, app);
93
- const adminSubRouter = (0, admin_1.default)(crowi, app);
94
- debug('Mounting admin routes (JWT + admin required)');
95
- adminRouter.use(adminCryptoRouter);
96
- adminRouter.use(adminSubRouter);
97
- // Mount all routers under /api/v2
98
- app.use('/api/v2', publicRouter);
99
- app.use('/api/v2', authenticatedRouter);
100
- app.use('/api/v2', adminRouter);
101
- debug('All ts-rest routes mounted successfully');
102
- };
103
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/ts-rest/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import Crowi from '../../crowi';
2
- import { Express } from 'express';
3
- declare const _default: (crowi: Crowi, _app: Express) => import("express-serve-static-core").Router;
4
- export default _default;
@@ -1,77 +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 express_1 = require("@ts-rest/express");
7
- const api_contract_1 = require("@crowi/api-contract");
8
- const express_2 = require("express");
9
- const debug_1 = __importDefault(require("debug"));
10
- const debug = (0, debug_1.default)('crowi:routes:ts-rest:installer');
11
- /**
12
- * The ConfigService keeps a boot-time snapshot of all Config docs in memory,
13
- * but `Config.applicationInstall()` writes new docs without refreshing it —
14
- * so `req.config.crowi` is unreliable as an installed-state oracle. Always
15
- * count from the DB instead, and refresh the cache after a successful install
16
- * so other request paths see the new values without a server restart.
17
- */
18
- const isAppInstalled = async (Config) => {
19
- const count = await Config.countDocuments({ ns: 'crowi' }).exec();
20
- return count > 0;
21
- };
22
- exports.default = (crowi, _app) => {
23
- const s = (0, express_1.initServer)();
24
- const router = (0, express_2.Router)();
25
- const Config = crowi.model('Config');
26
- const User = crowi.model('User');
27
- const installerRouter = s.router(api_contract_1.apiContract.installer, {
28
- getStatus: async () => {
29
- const installed = await isAppInstalled(Config);
30
- return {
31
- status: 200,
32
- body: { status: installed ? 'already_installed' : 'installer_required' },
33
- };
34
- },
35
- createAdmin: async ({ body }) => {
36
- if (await isAppInstalled(Config)) {
37
- return {
38
- status: 400,
39
- body: { status: 'error', message: 'Application is already installed' },
40
- };
41
- }
42
- const { name, username, email, password } = body.registerForm;
43
- try {
44
- const userData = await new Promise((resolve, reject) => {
45
- // Seed admin language defaults to English; the legacy flow sniffed
46
- // i18next from the request, but we don't have that on this pipeline.
47
- User.createUserByEmailAndPassword(name, username, email, password, 'en', (err, user) => {
48
- if (err)
49
- return reject(err);
50
- resolve(user);
51
- });
52
- });
53
- await new Promise((resolve, reject) => {
54
- userData.makeAdmin((err) => {
55
- if (err)
56
- return reject(err);
57
- resolve();
58
- });
59
- });
60
- await Config.applicationInstall();
61
- await crowi.getConfigService().load();
62
- return { status: 200, body: { status: 'ok', message: 'Admin created successfully' } };
63
- }
64
- catch (err) {
65
- const message = err.message;
66
- debug('Error creating admin:', message);
67
- return {
68
- status: 200,
69
- body: { status: 'error', errors: [`管理ユーザーの作成に失敗しました。${message}`] },
70
- };
71
- }
72
- },
73
- });
74
- (0, express_1.createExpressEndpoints)(api_contract_1.apiContract.installer, installerRouter, router);
75
- return router;
76
- };
77
- //# sourceMappingURL=installer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/routes/ts-rest/installer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import Crowi from '../../crowi';
2
- import { Express } from 'express';
3
- declare const _default: (crowi: Crowi, _app: Express) => import("express-serve-static-core").Router;
4
- export default _default;
@@ -1,410 +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 express_1 = require("@ts-rest/express");
7
- const api_contract_1 = require("@crowi/api-contract");
8
- const express_2 = require("express");
9
- const multer_1 = __importDefault(require("multer"));
10
- const fs_1 = __importDefault(require("fs"));
11
- const fileUploader_1 = __importDefault(require("../../util/fileUploader"));
12
- const debug_1 = __importDefault(require("debug"));
13
- const page_response_1 = require("../../util/page-response");
14
- const debug = (0, debug_1.default)('crowi:routes:ts-rest:me');
15
- exports.default = (crowi, _app) => {
16
- const s = (0, express_1.initServer)();
17
- const router = (0, express_2.Router)();
18
- const User = crowi.model('User');
19
- // Configure multer for file uploads
20
- const upload = (0, multer_1.default)({ dest: crowi.tmpDir });
21
- // Helper function to convert user document to profile response
22
- const userToProfileResponse = (user, hasPassword) => ({
23
- id: user._id.toString(),
24
- username: user.username,
25
- name: user.name,
26
- email: user.email,
27
- lang: user.lang,
28
- image: user.image,
29
- introduction: user.introduction || undefined,
30
- googleId: user.googleId,
31
- githubId: user.githubId,
32
- hasPassword,
33
- createdAt: user.createdAt.toISOString(),
34
- });
35
- const meRouter = s.router(api_contract_1.apiContract.me, {
36
- getProfile: async ({ req }) => {
37
- const user = req.user;
38
- // Check if user has password set
39
- const userWithSecrets = await user.populateSecrets();
40
- const hasPassword = userWithSecrets.isPasswordSet();
41
- return {
42
- status: 200,
43
- body: userToProfileResponse(user, hasPassword),
44
- };
45
- },
46
- updateProfile: async ({ body, req }) => {
47
- const user = req.user;
48
- const { name, email, lang } = body.userForm;
49
- // Check if email is valid (whitelist check)
50
- if (!User.isEmailValid(email)) {
51
- return {
52
- status: 400,
53
- body: {
54
- status: 'error',
55
- message: "You can't update to that email address",
56
- errors: ["You can't update to that email address"],
57
- },
58
- };
59
- }
60
- // Check for duplicate email
61
- const existingUser = await User.findOne({ email });
62
- if (existingUser && !existingUser._id.equals(user._id)) {
63
- debug('Email address was duplicated');
64
- return {
65
- status: 400,
66
- body: {
67
- status: 'error',
68
- message: 'It can not be changed to that mail address',
69
- errors: ['It can not be changed to that mail address'],
70
- },
71
- };
72
- }
73
- try {
74
- // Update user fields
75
- user.name = name;
76
- user.email = email;
77
- user.lang = lang;
78
- await user.save();
79
- // Check if user has password set
80
- const userWithSecrets = await user.populateSecrets();
81
- const hasPassword = userWithSecrets.isPasswordSet();
82
- return {
83
- status: 200,
84
- body: userToProfileResponse(user, hasPassword),
85
- };
86
- }
87
- catch (err) {
88
- const error = err;
89
- const errorMessages = [];
90
- if (error.errors) {
91
- Object.keys(error.errors).forEach((e) => {
92
- errorMessages.push(error.errors[e].message);
93
- });
94
- }
95
- else {
96
- errorMessages.push('Failed to update profile');
97
- }
98
- return {
99
- status: 400,
100
- body: {
101
- status: 'error',
102
- message: errorMessages[0],
103
- errors: errorMessages,
104
- },
105
- };
106
- }
107
- },
108
- uploadPicture: async ({ req, res }) => {
109
- return new Promise((resolve) => {
110
- const user = req.user;
111
- const fileUploader = (0, fileUploader_1.default)(crowi);
112
- // Handle file upload with multer
113
- upload.single('file')(req, res, async (err) => {
114
- if (err) {
115
- debug('Multer error:', err);
116
- return resolve({
117
- status: 400,
118
- body: {
119
- status: 'error',
120
- message: 'File upload error.',
121
- errors: ['File upload error.'],
122
- },
123
- });
124
- }
125
- const tmpFile = req.file || null;
126
- if (!tmpFile) {
127
- return resolve({
128
- status: 400,
129
- body: {
130
- status: 'error',
131
- message: 'No file provided.',
132
- errors: ['No file provided.'],
133
- },
134
- });
135
- }
136
- const tmpPath = tmpFile.path;
137
- const name = tmpFile.filename + tmpFile.originalname;
138
- const ext = name.match(/(.*)(?:\.([^.]+$))/)?.[2] || '';
139
- const filePath = User.createUserPictureFilePath(user, ext);
140
- const acceptableFileType = /image\/.+/;
141
- if (!tmpFile.mimetype.match(acceptableFileType)) {
142
- // Clean up temp file
143
- fs_1.default.unlink(tmpPath, () => { });
144
- return resolve({
145
- status: 400,
146
- body: {
147
- status: 'error',
148
- message: 'File type error. Only image files is allowed to set as user picture.',
149
- errors: ['File type error. Only image files is allowed to set as user picture.'],
150
- },
151
- });
152
- }
153
- const tmpFileStream = fs_1.default.createReadStream(tmpPath, {
154
- flags: 'r',
155
- mode: 0o666,
156
- autoClose: true,
157
- });
158
- try {
159
- await fileUploader.uploadFile(filePath, tmpFile.mimetype, tmpFileStream, {});
160
- const imageUrl = await fileUploader.generateUrl(filePath);
161
- // Update user image
162
- await new Promise((resolveUpdate, rejectUpdate) => {
163
- user.updateImage(imageUrl, (updateErr) => {
164
- if (updateErr) {
165
- rejectUpdate(updateErr);
166
- }
167
- else {
168
- resolveUpdate();
169
- }
170
- });
171
- });
172
- // Clean up temp file
173
- fs_1.default.unlink(tmpPath, (unlinkErr) => {
174
- if (unlinkErr) {
175
- debug('Error while deleting tmp file.', unlinkErr);
176
- }
177
- });
178
- return resolve({
179
- status: 200,
180
- body: {
181
- status: true,
182
- url: imageUrl,
183
- message: '',
184
- },
185
- });
186
- }
187
- catch (uploadErr) {
188
- debug('Uploading error', uploadErr);
189
- // Clean up temp file
190
- fs_1.default.unlink(tmpPath, () => { });
191
- return resolve({
192
- status: 400,
193
- body: {
194
- status: 'error',
195
- message: 'Error while uploading file',
196
- errors: ['Error while uploading file'],
197
- },
198
- });
199
- }
200
- });
201
- });
202
- },
203
- deletePicture: async ({ req }) => {
204
- return new Promise((resolve) => {
205
- const user = req.user;
206
- // Delete user image
207
- // TODO: Also delete from S3/storage
208
- user.deleteImage((err) => {
209
- if (err) {
210
- debug('Error deleting image:', err);
211
- return resolve({
212
- status: 400,
213
- body: {
214
- status: 'error',
215
- message: 'Failed to delete profile picture',
216
- errors: ['Failed to delete profile picture'],
217
- },
218
- });
219
- }
220
- return resolve({
221
- status: 200,
222
- body: {
223
- status: 'ok',
224
- message: 'Deleted profile picture',
225
- },
226
- });
227
- });
228
- });
229
- },
230
- updatePassword: async ({ body, req }) => {
231
- const user = req.user;
232
- const { oldPassword, newPassword, newPasswordConfirm } = body;
233
- // Check if email is set (required for password setting)
234
- if (!user.isEmailSet()) {
235
- return {
236
- status: 400,
237
- body: {
238
- status: 'error',
239
- message: 'Email must be set before setting password',
240
- errors: ['Email must be set before setting password'],
241
- },
242
- };
243
- }
244
- // Get user with password field populated for validation
245
- const userWithSecrets = await user.populateSecrets();
246
- const hasPassword = userWithSecrets.isPasswordSet();
247
- // If password is already set, validate old password
248
- if (hasPassword) {
249
- if (!oldPassword) {
250
- return {
251
- status: 400,
252
- body: {
253
- status: 'error',
254
- message: 'Current password is required',
255
- errors: ['Current password is required'],
256
- },
257
- };
258
- }
259
- // Validate old password (using legacy 6-character minimum for backward compatibility)
260
- if (oldPassword.length < 6) {
261
- return {
262
- status: 400,
263
- body: {
264
- status: 'error',
265
- message: 'Current password must be at least 6 characters',
266
- errors: ['Current password must be at least 6 characters'],
267
- },
268
- };
269
- }
270
- if (!userWithSecrets.isPasswordValid(oldPassword)) {
271
- return {
272
- status: 400,
273
- body: {
274
- status: 'error',
275
- message: 'Wrong current password',
276
- errors: ['Wrong current password'],
277
- },
278
- };
279
- }
280
- }
281
- // Update password
282
- return new Promise((resolve) => {
283
- userWithSecrets.updatePassword(newPassword, (err) => {
284
- if (err) {
285
- debug('Error updating password:', err);
286
- const error = err;
287
- const errorMessages = [];
288
- if (error.errors) {
289
- Object.keys(error.errors).forEach((e) => {
290
- errorMessages.push(error.errors[e].message);
291
- });
292
- }
293
- else {
294
- errorMessages.push('Failed to update password');
295
- }
296
- return resolve({
297
- status: 400,
298
- body: {
299
- status: 'error',
300
- message: errorMessages[0] || 'Failed to update password',
301
- errors: errorMessages,
302
- },
303
- });
304
- }
305
- return resolve({
306
- status: 200,
307
- body: {
308
- status: 'ok',
309
- message: 'Password updated',
310
- },
311
- });
312
- });
313
- });
314
- },
315
- getApiToken: async ({ req }) => {
316
- const user = req.user;
317
- try {
318
- // apiToken is select: false, so we need to populate it explicitly
319
- const userWithSecrets = await user.populateSecrets();
320
- const apiToken = userWithSecrets.apiToken;
321
- // If no API token exists yet, generate one
322
- if (!apiToken) {
323
- const updatedUser = await userWithSecrets.updateApiToken();
324
- return {
325
- status: 200,
326
- body: {
327
- status: 'ok',
328
- apiToken: updatedUser.apiToken,
329
- },
330
- };
331
- }
332
- return {
333
- status: 200,
334
- body: {
335
- status: 'ok',
336
- apiToken,
337
- },
338
- };
339
- }
340
- catch (err) {
341
- debug('Error getting API token:', err);
342
- return {
343
- status: 500,
344
- body: {
345
- status: 'error',
346
- message: 'Failed to get API token',
347
- },
348
- };
349
- }
350
- },
351
- resetApiToken: async ({ req }) => {
352
- const user = req.user;
353
- try {
354
- // apiToken is select: false, so we need to populate it explicitly
355
- const userWithSecrets = await user.populateSecrets();
356
- const updatedUser = await userWithSecrets.updateApiToken();
357
- return {
358
- status: 200,
359
- body: {
360
- status: 'ok',
361
- apiToken: updatedUser.apiToken,
362
- },
363
- };
364
- }
365
- catch (err) {
366
- debug('Error resetting API token:', err);
367
- return {
368
- status: 500,
369
- body: {
370
- status: 'error',
371
- message: 'Failed to update API token',
372
- },
373
- };
374
- }
375
- },
376
- recentlyViewedPages: async ({ req }) => {
377
- const user = req.user;
378
- const Page = crowi.model('Page');
379
- try {
380
- // Read 6 to absorb at most one root-portal entry; the dropdown
381
- // shows 5.
382
- const ids = (await crowi.lru.get(user._id.toString(), 6)) ?? [];
383
- if (ids.length === 0) {
384
- return { status: 200, body: { pages: [] } };
385
- }
386
- const found = (await Page.findPagesByIds(ids));
387
- const byId = new Map();
388
- for (const p of found)
389
- byId.set(p._id.toString(), p);
390
- const ordered = [];
391
- for (const id of ids) {
392
- const p = byId.get(id);
393
- if (!p || p.path === '/')
394
- continue;
395
- ordered.push(p);
396
- if (ordered.length >= 5)
397
- break;
398
- }
399
- return { status: 200, body: { pages: ordered.map((p) => (0, page_response_1.pageToResponse)(p)) } };
400
- }
401
- catch (err) {
402
- debug('recentlyViewedPages: lru / populate failed: %s', err.message);
403
- return { status: 200, body: { pages: [] } };
404
- }
405
- },
406
- });
407
- (0, express_1.createExpressEndpoints)(api_contract_1.apiContract.me, meRouter, router);
408
- return router;
409
- };
410
- //# sourceMappingURL=me.js.map