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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/dist/hono/handlers/access-token.d.ts +55 -55
  2. package/dist/hono/handlers/activation.d.ts +27 -27
  3. package/dist/hono/handlers/admin/app.d.ts +26 -26
  4. package/dist/hono/handlers/admin/auth.d.ts +24 -24
  5. package/dist/hono/handlers/admin/mail.d.ts +30 -30
  6. package/dist/hono/handlers/admin/plugins.d.ts +112 -112
  7. package/dist/hono/handlers/admin/search.d.ts +21 -21
  8. package/dist/hono/handlers/admin/security.d.ts +24 -24
  9. package/dist/hono/handlers/admin/storage.d.ts +19 -19
  10. package/dist/hono/handlers/admin/users.d.ts +399 -281
  11. package/dist/hono/handlers/admin/users.js +28 -0
  12. package/dist/hono/handlers/admin/users.js.map +1 -1
  13. package/dist/hono/handlers/adminCrypto.d.ts +32 -32
  14. package/dist/hono/handlers/app.d.ts +12 -8
  15. package/dist/hono/handlers/app.js +42 -1
  16. package/dist/hono/handlers/app.js.map +1 -1
  17. package/dist/hono/handlers/attachment-stream.js +23 -0
  18. package/dist/hono/handlers/attachment-stream.js.map +1 -1
  19. package/dist/hono/handlers/attachment.d.ts +180 -180
  20. package/dist/hono/handlers/autocomplete.d.ts +45 -45
  21. package/dist/hono/handlers/backlink.d.ts +33 -33
  22. package/dist/hono/handlers/bookmark.d.ts +95 -95
  23. package/dist/hono/handlers/comment.d.ts +55 -55
  24. package/dist/hono/handlers/draft.d.ts +27 -27
  25. package/dist/hono/handlers/draft.js +10 -0
  26. package/dist/hono/handlers/draft.js.map +1 -1
  27. package/dist/hono/handlers/emailChange.d.ts +25 -25
  28. package/dist/hono/handlers/installer.d.ts +16 -16
  29. package/dist/hono/handlers/inviteAccept.d.ts +37 -37
  30. package/dist/hono/handlers/me.d.ts +92 -92
  31. package/dist/hono/handlers/notification.d.ts +94 -94
  32. package/dist/hono/handlers/oauth.d.ts +58 -58
  33. package/dist/hono/handlers/page-collab.d.ts +20 -20
  34. package/dist/hono/handlers/page-preview.d.ts +7 -7
  35. package/dist/hono/handlers/page.d.ts +575 -324
  36. package/dist/hono/handlers/page.js +123 -6
  37. package/dist/hono/handlers/page.js.map +1 -1
  38. package/dist/hono/handlers/passwordReset.d.ts +37 -37
  39. package/dist/hono/handlers/presence.d.ts +44 -44
  40. package/dist/hono/handlers/revision.d.ts +99 -99
  41. package/dist/hono/handlers/search.d.ts +64 -64
  42. package/dist/hono/handlers/tokenAuth.d.ts +80 -80
  43. package/dist/hono/handlers/user.d.ts +102 -102
  44. package/dist/hono/handlers/user.js +15 -5
  45. package/dist/hono/handlers/user.js.map +1 -1
  46. package/dist/hono/index.d.ts +94 -94
  47. package/dist/mcp/result.d.ts +52 -11
  48. package/dist/mcp/result.js +66 -1
  49. package/dist/mcp/result.js.map +1 -1
  50. package/dist/mcp/tools/page.js +30 -5
  51. package/dist/mcp/tools/page.js.map +1 -1
  52. package/dist/mcp/tools/search.d.ts +12 -0
  53. package/dist/mcp/tools/search.js +21 -5
  54. package/dist/mcp/tools/search.js.map +1 -1
  55. package/dist/migration/helpers.d.ts +13 -0
  56. package/dist/migration/helpers.js +29 -0
  57. package/dist/migration/helpers.js.map +1 -0
  58. package/dist/migration/migrations/files-url-to-attachments.d.ts +35 -0
  59. package/dist/migration/migrations/files-url-to-attachments.js +291 -0
  60. package/dist/migration/migrations/files-url-to-attachments.js.map +1 -0
  61. package/dist/migration/migrations/index.js +6 -0
  62. package/dist/migration/migrations/index.js.map +1 -1
  63. package/dist/migration/migrations/published-current-revision.d.ts +47 -0
  64. package/dist/migration/migrations/published-current-revision.js +90 -0
  65. package/dist/migration/migrations/published-current-revision.js.map +1 -0
  66. package/dist/migration/migrations/relocate-reserved-api-paths.d.ts +3 -0
  67. package/dist/migration/migrations/relocate-reserved-api-paths.js +135 -0
  68. package/dist/migration/migrations/relocate-reserved-api-paths.js.map +1 -0
  69. package/dist/migration/migrations/wikilink-format.d.ts +0 -11
  70. package/dist/migration/migrations/wikilink-format.js +5 -156
  71. package/dist/migration/migrations/wikilink-format.js.map +1 -1
  72. package/dist/migration/migrations/wikilink-html-recover.d.ts +116 -0
  73. package/dist/migration/migrations/wikilink-html-recover.js +314 -0
  74. package/dist/migration/migrations/wikilink-html-recover.js.map +1 -0
  75. package/dist/models/page.d.ts +3 -0
  76. package/dist/models/page.js +40 -2
  77. package/dist/models/page.js.map +1 -1
  78. package/dist/models/user.d.ts +1 -0
  79. package/dist/models/user.js +40 -21
  80. package/dist/models/user.js.map +1 -1
  81. package/dist/renderer/core/headings.d.ts +12 -1
  82. package/dist/renderer/core/headings.js +48 -8
  83. package/dist/renderer/core/headings.js.map +1 -1
  84. package/dist/renderer/pipeline.d.ts +6 -0
  85. package/dist/renderer/pipeline.js.map +1 -1
  86. package/dist/util/page-response.js +19 -2
  87. package/dist/util/page-response.js.map +1 -1
  88. package/dist/util/replace-url.d.ts +85 -0
  89. package/dist/util/replace-url.js +251 -0
  90. package/dist/util/replace-url.js.map +1 -0
  91. package/package.json +13 -5
  92. package/public/images/file-not-found.png +0 -0
  93. package/views/mail/activation.mjml +9 -0
  94. package/views/mail/activation.text +13 -0
  95. package/views/mail/adminApprovalPending.mjml +7 -0
  96. package/views/mail/adminApprovalPending.text +11 -0
  97. package/views/mail/emailChange.mjml +9 -0
  98. package/views/mail/emailChange.text +13 -0
  99. package/views/mail/invite.mjml +9 -0
  100. package/views/mail/invite.text +13 -0
  101. package/views/mail/layout.mjml +38 -0
  102. package/views/mail/passwordChanged.mjml +4 -0
  103. package/views/mail/passwordChanged.text +9 -0
  104. package/views/mail/passwordReset.mjml +9 -0
  105. package/views/mail/passwordReset.text +13 -0
  106. package/views/mail/test.mjml +2 -0
  107. package/views/mail/test.text +7 -0
  108. package/dist/common/functions/path2name.d.ts +0 -1
  109. package/dist/common/functions/path2name.js +0 -22
  110. package/dist/common/functions/path2name.js.map +0 -1
  111. package/dist/common/functions/renderIcon.d.ts +0 -1
  112. package/dist/common/functions/renderIcon.js +0 -9
  113. package/dist/common/functions/renderIcon.js.map +0 -1
  114. package/dist/controllers/admin.d.ts +0 -3
  115. package/dist/controllers/admin.js +0 -474
  116. package/dist/controllers/admin.js.map +0 -1
  117. package/dist/controllers/attachment.d.ts +0 -4
  118. package/dist/controllers/attachment.js +0 -200
  119. package/dist/controllers/attachment.js.map +0 -1
  120. package/dist/controllers/backlink.d.ts +0 -3
  121. package/dist/controllers/backlink.js +0 -42
  122. package/dist/controllers/backlink.js.map +0 -1
  123. package/dist/controllers/bookmark.d.ts +0 -3
  124. package/dist/controllers/bookmark.js +0 -100
  125. package/dist/controllers/bookmark.js.map +0 -1
  126. package/dist/controllers/comment.d.ts +0 -3
  127. package/dist/controllers/comment.js +0 -111
  128. package/dist/controllers/comment.js.map +0 -1
  129. package/dist/controllers/index.d.ts +0 -25
  130. package/dist/controllers/index.js +0 -44
  131. package/dist/controllers/index.js.map +0 -1
  132. package/dist/controllers/installer.d.ts +0 -3
  133. package/dist/controllers/installer.js +0 -48
  134. package/dist/controllers/installer.js.map +0 -1
  135. package/dist/controllers/login.d.ts +0 -4
  136. package/dist/controllers/login.js +0 -438
  137. package/dist/controllers/login.js.map +0 -1
  138. package/dist/controllers/logout.d.ts +0 -5
  139. package/dist/controllers/logout.js +0 -11
  140. package/dist/controllers/logout.js.map +0 -1
  141. package/dist/controllers/me.d.ts +0 -4
  142. package/dist/controllers/me.js +0 -369
  143. package/dist/controllers/me.js.map +0 -1
  144. package/dist/controllers/notification.d.ts +0 -3
  145. package/dist/controllers/notification.js +0 -88
  146. package/dist/controllers/notification.js.map +0 -1
  147. package/dist/controllers/page.d.ts +0 -3
  148. package/dist/controllers/page.js +0 -881
  149. package/dist/controllers/page.js.map +0 -1
  150. package/dist/controllers/revision.d.ts +0 -3
  151. package/dist/controllers/revision.js +0 -91
  152. package/dist/controllers/revision.js.map +0 -1
  153. package/dist/controllers/search.d.ts +0 -3
  154. package/dist/controllers/search.js +0 -93
  155. package/dist/controllers/search.js.map +0 -1
  156. package/dist/controllers/share.d.ts +0 -3
  157. package/dist/controllers/share.js +0 -207
  158. package/dist/controllers/share.js.map +0 -1
  159. package/dist/controllers/shareAccess.d.ts +0 -3
  160. package/dist/controllers/shareAccess.js +0 -28
  161. package/dist/controllers/shareAccess.js.map +0 -1
  162. package/dist/controllers/slack.d.ts +0 -3
  163. package/dist/controllers/slack.js +0 -87
  164. package/dist/controllers/slack.js.map +0 -1
  165. package/dist/controllers/tokenAuth.d.ts +0 -10
  166. package/dist/controllers/tokenAuth.js +0 -292
  167. package/dist/controllers/tokenAuth.js.map +0 -1
  168. package/dist/controllers/user.d.ts +0 -3
  169. package/dist/controllers/user.js +0 -67
  170. package/dist/controllers/user.js.map +0 -1
  171. package/dist/controllers/version.d.ts +0 -4
  172. package/dist/controllers/version.js +0 -19
  173. package/dist/controllers/version.js.map +0 -1
  174. package/dist/crowi/express-init.d.ts +0 -4
  175. package/dist/crowi/express-init.js +0 -101
  176. package/dist/crowi/express-init.js.map +0 -1
  177. package/dist/form/admin/app.d.ts +0 -2
  178. package/dist/form/admin/app.js +0 -9
  179. package/dist/form/admin/app.js.map +0 -1
  180. package/dist/form/admin/auth.d.ts +0 -2
  181. package/dist/form/admin/auth.js +0 -9
  182. package/dist/form/admin/auth.js.map +0 -1
  183. package/dist/form/admin/aws.d.ts +0 -2
  184. package/dist/form/admin/aws.js +0 -13
  185. package/dist/form/admin/aws.js.map +0 -1
  186. package/dist/form/admin/github.d.ts +0 -2
  187. package/dist/form/admin/github.js +0 -15
  188. package/dist/form/admin/github.js.map +0 -1
  189. package/dist/form/admin/google.d.ts +0 -2
  190. package/dist/form/admin/google.js +0 -13
  191. package/dist/form/admin/google.js.map +0 -1
  192. package/dist/form/admin/mail.d.ts +0 -2
  193. package/dist/form/admin/mail.js +0 -13
  194. package/dist/form/admin/mail.js.map +0 -1
  195. package/dist/form/admin/sec.d.ts +0 -2
  196. package/dist/form/admin/sec.js +0 -10
  197. package/dist/form/admin/sec.js.map +0 -1
  198. package/dist/form/admin/slackSetting.d.ts +0 -2
  199. package/dist/form/admin/slackSetting.js +0 -13
  200. package/dist/form/admin/slackSetting.js.map +0 -1
  201. package/dist/form/admin/userEdit.d.ts +0 -2
  202. package/dist/form/admin/userEdit.js +0 -9
  203. package/dist/form/admin/userEdit.js.map +0 -1
  204. package/dist/form/admin/userInvite.d.ts +0 -2
  205. package/dist/form/admin/userInvite.js +0 -9
  206. package/dist/form/admin/userInvite.js.map +0 -1
  207. package/dist/form/comment.d.ts +0 -2
  208. package/dist/form/comment.js +0 -9
  209. package/dist/form/comment.js.map +0 -1
  210. package/dist/form/index.d.ts +0 -25
  211. package/dist/form/index.js +0 -48
  212. package/dist/form/index.js.map +0 -1
  213. package/dist/form/invited.d.ts +0 -2
  214. package/dist/form/invited.js +0 -13
  215. package/dist/form/invited.js.map +0 -1
  216. package/dist/form/login.d.ts +0 -2
  217. package/dist/form/login.js +0 -11
  218. package/dist/form/login.js.map +0 -1
  219. package/dist/form/me/apiToken.d.ts +0 -2
  220. package/dist/form/me/apiToken.js +0 -9
  221. package/dist/form/me/apiToken.js.map +0 -1
  222. package/dist/form/me/password.d.ts +0 -2
  223. package/dist/form/me/password.js +0 -11
  224. package/dist/form/me/password.js.map +0 -1
  225. package/dist/form/me/user.d.ts +0 -2
  226. package/dist/form/me/user.js +0 -9
  227. package/dist/form/me/user.js.map +0 -1
  228. package/dist/form/register.d.ts +0 -2
  229. package/dist/form/register.js +0 -13
  230. package/dist/form/register.js.map +0 -1
  231. package/dist/form/revision.d.ts +0 -2
  232. package/dist/form/revision.js +0 -13
  233. package/dist/form/revision.js.map +0 -1
  234. package/dist/hono/handlers/admin/share.d.ts +0 -106
  235. package/dist/hono/handlers/admin/share.js +0 -55
  236. package/dist/hono/handlers/admin/share.js.map +0 -1
  237. package/dist/middlewares/accessTokenParser.d.ts +0 -4
  238. package/dist/middlewares/accessTokenParser.js +0 -29
  239. package/dist/middlewares/accessTokenParser.js.map +0 -1
  240. package/dist/middlewares/adminRequired.d.ts +0 -10
  241. package/dist/middlewares/adminRequired.js +0 -35
  242. package/dist/middlewares/adminRequired.js.map +0 -1
  243. package/dist/middlewares/applicationInstalled.d.ts +0 -3
  244. package/dist/middlewares/applicationInstalled.js +0 -20
  245. package/dist/middlewares/applicationInstalled.js.map +0 -1
  246. package/dist/middlewares/applicationNotInstalled.d.ts +0 -3
  247. package/dist/middlewares/applicationNotInstalled.js +0 -13
  248. package/dist/middlewares/applicationNotInstalled.js.map +0 -1
  249. package/dist/middlewares/basicAuth.d.ts +0 -4
  250. package/dist/middlewares/basicAuth.js +0 -23
  251. package/dist/middlewares/basicAuth.js.map +0 -1
  252. package/dist/middlewares/csrfVerify.d.ts +0 -4
  253. package/dist/middlewares/csrfVerify.js +0 -24
  254. package/dist/middlewares/csrfVerify.js.map +0 -1
  255. package/dist/middlewares/encodeSpace.d.ts +0 -3
  256. package/dist/middlewares/encodeSpace.js +0 -14
  257. package/dist/middlewares/encodeSpace.js.map +0 -1
  258. package/dist/middlewares/fileAccessRightOrLoginRequired.d.ts +0 -4
  259. package/dist/middlewares/fileAccessRightOrLoginRequired.js +0 -29
  260. package/dist/middlewares/fileAccessRightOrLoginRequired.js.map +0 -1
  261. package/dist/middlewares/index.d.ts +0 -16
  262. package/dist/middlewares/index.js +0 -30
  263. package/dist/middlewares/index.js.map +0 -1
  264. package/dist/middlewares/jwtAdminRequired.d.ts +0 -8
  265. package/dist/middlewares/jwtAdminRequired.js +0 -35
  266. package/dist/middlewares/jwtAdminRequired.js.map +0 -1
  267. package/dist/middlewares/jwtAuth.d.ts +0 -4
  268. package/dist/middlewares/jwtAuth.js +0 -104
  269. package/dist/middlewares/jwtAuth.js.map +0 -1
  270. package/dist/middlewares/loginChecker.d.ts +0 -4
  271. package/dist/middlewares/loginChecker.js +0 -32
  272. package/dist/middlewares/loginChecker.js.map +0 -1
  273. package/dist/middlewares/loginRequired.d.ts +0 -4
  274. package/dist/middlewares/loginRequired.js +0 -88
  275. package/dist/middlewares/loginRequired.js.map +0 -1
  276. package/dist/routes/admin.d.ts +0 -4
  277. package/dist/routes/admin.js +0 -17
  278. package/dist/routes/admin.js.map +0 -1
  279. package/dist/routes/api/admin.d.ts +0 -4
  280. package/dist/routes/api/admin.js +0 -37
  281. package/dist/routes/api/admin.js.map +0 -1
  282. package/dist/routes/api/attachment.d.ts +0 -4
  283. package/dist/routes/api/attachment.js +0 -19
  284. package/dist/routes/api/attachment.js.map +0 -1
  285. package/dist/routes/api/bookmark.d.ts +0 -4
  286. package/dist/routes/api/bookmark.js +0 -15
  287. package/dist/routes/api/bookmark.js.map +0 -1
  288. package/dist/routes/api/comment.d.ts +0 -4
  289. package/dist/routes/api/comment.js +0 -14
  290. package/dist/routes/api/comment.js.map +0 -1
  291. package/dist/routes/api/index.d.ts +0 -4
  292. package/dist/routes/api/index.js +0 -36
  293. package/dist/routes/api/index.js.map +0 -1
  294. package/dist/routes/api/like.d.ts +0 -4
  295. package/dist/routes/api/like.js +0 -13
  296. package/dist/routes/api/like.js.map +0 -1
  297. package/dist/routes/api/notification.d.ts +0 -4
  298. package/dist/routes/api/notification.js +0 -15
  299. package/dist/routes/api/notification.js.map +0 -1
  300. package/dist/routes/api/page.d.ts +0 -4
  301. package/dist/routes/api/page.js +0 -24
  302. package/dist/routes/api/page.js.map +0 -1
  303. package/dist/routes/api/revision.d.ts +0 -4
  304. package/dist/routes/api/revision.js +0 -14
  305. package/dist/routes/api/revision.js.map +0 -1
  306. package/dist/routes/api/share.d.ts +0 -4
  307. package/dist/routes/api/share.js +0 -16
  308. package/dist/routes/api/share.js.map +0 -1
  309. package/dist/routes/api/version.d.ts +0 -4
  310. package/dist/routes/api/version.js +0 -10
  311. package/dist/routes/api/version.js.map +0 -1
  312. package/dist/routes/index.d.ts +0 -4
  313. package/dist/routes/index.js +0 -71
  314. package/dist/routes/index.js.map +0 -1
  315. package/dist/routes/login.d.ts +0 -4
  316. package/dist/routes/login.js +0 -18
  317. package/dist/routes/login.js.map +0 -1
  318. package/dist/routes/me.d.ts +0 -4
  319. package/dist/routes/me.js +0 -24
  320. package/dist/routes/me.js.map +0 -1
  321. package/dist/routes/ts-rest/admin/app.d.ts +0 -4
  322. package/dist/routes/ts-rest/admin/app.js +0 -67
  323. package/dist/routes/ts-rest/admin/app.js.map +0 -1
  324. package/dist/routes/ts-rest/admin/auth.d.ts +0 -4
  325. package/dist/routes/ts-rest/admin/auth.js +0 -95
  326. package/dist/routes/ts-rest/admin/auth.js.map +0 -1
  327. package/dist/routes/ts-rest/admin/index.d.ts +0 -10
  328. package/dist/routes/ts-rest/admin/index.js +0 -35
  329. package/dist/routes/ts-rest/admin/index.js.map +0 -1
  330. package/dist/routes/ts-rest/admin/mail.d.ts +0 -4
  331. package/dist/routes/ts-rest/admin/mail.js +0 -156
  332. package/dist/routes/ts-rest/admin/mail.js.map +0 -1
  333. package/dist/routes/ts-rest/admin/plugins.d.ts +0 -4
  334. package/dist/routes/ts-rest/admin/plugins.js +0 -317
  335. package/dist/routes/ts-rest/admin/plugins.js.map +0 -1
  336. package/dist/routes/ts-rest/admin/search.d.ts +0 -4
  337. package/dist/routes/ts-rest/admin/search.js +0 -67
  338. package/dist/routes/ts-rest/admin/search.js.map +0 -1
  339. package/dist/routes/ts-rest/admin/security.d.ts +0 -4
  340. package/dist/routes/ts-rest/admin/security.js +0 -114
  341. package/dist/routes/ts-rest/admin/security.js.map +0 -1
  342. package/dist/routes/ts-rest/admin/share.d.ts +0 -4
  343. package/dist/routes/ts-rest/admin/share.js +0 -69
  344. package/dist/routes/ts-rest/admin/share.js.map +0 -1
  345. package/dist/routes/ts-rest/admin/storage.d.ts +0 -4
  346. package/dist/routes/ts-rest/admin/storage.js +0 -59
  347. package/dist/routes/ts-rest/admin/storage.js.map +0 -1
  348. package/dist/routes/ts-rest/admin/users.d.ts +0 -4
  349. package/dist/routes/ts-rest/admin/users.js +0 -215
  350. package/dist/routes/ts-rest/admin/users.js.map +0 -1
  351. package/dist/routes/ts-rest/adminCrypto.d.ts +0 -4
  352. package/dist/routes/ts-rest/adminCrypto.js +0 -111
  353. package/dist/routes/ts-rest/adminCrypto.js.map +0 -1
  354. package/dist/routes/ts-rest/app.d.ts +0 -4
  355. package/dist/routes/ts-rest/app.js +0 -23
  356. package/dist/routes/ts-rest/app.js.map +0 -1
  357. package/dist/routes/ts-rest/attachment.d.ts +0 -4
  358. package/dist/routes/ts-rest/attachment.js +0 -830
  359. package/dist/routes/ts-rest/attachment.js.map +0 -1
  360. package/dist/routes/ts-rest/auth.d.ts +0 -4
  361. package/dist/routes/ts-rest/auth.js +0 -70
  362. package/dist/routes/ts-rest/auth.js.map +0 -1
  363. package/dist/routes/ts-rest/autocomplete.d.ts +0 -30
  364. package/dist/routes/ts-rest/autocomplete.js +0 -189
  365. package/dist/routes/ts-rest/autocomplete.js.map +0 -1
  366. package/dist/routes/ts-rest/backlink.d.ts +0 -4
  367. package/dist/routes/ts-rest/backlink.js +0 -106
  368. package/dist/routes/ts-rest/backlink.js.map +0 -1
  369. package/dist/routes/ts-rest/bookmark.d.ts +0 -4
  370. package/dist/routes/ts-rest/bookmark.js +0 -189
  371. package/dist/routes/ts-rest/bookmark.js.map +0 -1
  372. package/dist/routes/ts-rest/comment.d.ts +0 -4
  373. package/dist/routes/ts-rest/comment.js +0 -217
  374. package/dist/routes/ts-rest/comment.js.map +0 -1
  375. package/dist/routes/ts-rest/draft.d.ts +0 -22
  376. package/dist/routes/ts-rest/draft.js +0 -200
  377. package/dist/routes/ts-rest/draft.js.map +0 -1
  378. package/dist/routes/ts-rest/index.d.ts +0 -4
  379. package/dist/routes/ts-rest/index.js +0 -103
  380. package/dist/routes/ts-rest/index.js.map +0 -1
  381. package/dist/routes/ts-rest/installer.d.ts +0 -4
  382. package/dist/routes/ts-rest/installer.js +0 -77
  383. package/dist/routes/ts-rest/installer.js.map +0 -1
  384. package/dist/routes/ts-rest/me.d.ts +0 -4
  385. package/dist/routes/ts-rest/me.js +0 -410
  386. package/dist/routes/ts-rest/me.js.map +0 -1
  387. package/dist/routes/ts-rest/notification.d.ts +0 -4
  388. package/dist/routes/ts-rest/notification.js +0 -241
  389. package/dist/routes/ts-rest/notification.js.map +0 -1
  390. package/dist/routes/ts-rest/page-collab.d.ts +0 -29
  391. package/dist/routes/ts-rest/page-collab.js +0 -90
  392. package/dist/routes/ts-rest/page-collab.js.map +0 -1
  393. package/dist/routes/ts-rest/page-preview.d.ts +0 -26
  394. package/dist/routes/ts-rest/page-preview.js +0 -80
  395. package/dist/routes/ts-rest/page-preview.js.map +0 -1
  396. package/dist/routes/ts-rest/page.d.ts +0 -4
  397. package/dist/routes/ts-rest/page.js +0 -676
  398. package/dist/routes/ts-rest/page.js.map +0 -1
  399. package/dist/routes/ts-rest/presence.d.ts +0 -30
  400. package/dist/routes/ts-rest/presence.js +0 -155
  401. package/dist/routes/ts-rest/presence.js.map +0 -1
  402. package/dist/routes/ts-rest/revision.d.ts +0 -4
  403. package/dist/routes/ts-rest/revision.js +0 -240
  404. package/dist/routes/ts-rest/revision.js.map +0 -1
  405. package/dist/routes/ts-rest/search.d.ts +0 -4
  406. package/dist/routes/ts-rest/search.js +0 -121
  407. package/dist/routes/ts-rest/search.js.map +0 -1
  408. package/dist/routes/ts-rest/tokenAuth.d.ts +0 -4
  409. package/dist/routes/ts-rest/tokenAuth.js +0 -94
  410. package/dist/routes/ts-rest/tokenAuth.js.map +0 -1
  411. package/dist/routes/ts-rest/user.d.ts +0 -4
  412. package/dist/routes/ts-rest/user.js +0 -307
  413. package/dist/routes/ts-rest/user.js.map +0 -1
  414. package/dist/types/express.d.ts +0 -34
  415. package/dist/types/express.js +0 -50
  416. package/dist/types/express.js.map +0 -1
  417. package/dist/util/accessTokenParser.d.ts +0 -1
  418. package/dist/util/accessTokenParser.js +0 -34
  419. package/dist/util/accessTokenParser.js.map +0 -1
  420. package/dist/util/apiPaginate.d.ts +0 -11
  421. package/dist/util/apiPaginate.js +0 -33
  422. package/dist/util/apiPaginate.js.map +0 -1
  423. package/dist/util/apiResponse.d.ts +0 -9
  424. package/dist/util/apiResponse.js +0 -23
  425. package/dist/util/apiResponse.js.map +0 -1
  426. package/dist/util/auth.d.ts +0 -11
  427. package/dist/util/auth.js +0 -48
  428. package/dist/util/auth.js.map +0 -1
  429. package/dist/util/aws-config-migration.d.ts +0 -11
  430. package/dist/util/aws-config-migration.js +0 -68
  431. package/dist/util/aws-config-migration.js.map +0 -1
  432. package/dist/util/formUtil.d.ts +0 -2
  433. package/dist/util/formUtil.js +0 -15
  434. package/dist/util/formUtil.js.map +0 -1
  435. package/dist/util/githubAuth.d.ts +0 -2
  436. package/dist/util/githubAuth.js +0 -82
  437. package/dist/util/githubAuth.js.map +0 -1
  438. package/dist/util/googleAuth.d.ts +0 -2
  439. package/dist/util/googleAuth.js +0 -85
  440. package/dist/util/googleAuth.js.map +0 -1
  441. package/dist/util/mailer.d.ts +0 -7
  442. package/dist/util/mailer.js +0 -98
  443. package/dist/util/mailer.js.map +0 -1
  444. package/dist/util/page-status-migration.d.ts +0 -23
  445. package/dist/util/page-status-migration.js +0 -48
  446. package/dist/util/page-status-migration.js.map +0 -1
  447. package/dist/util/ssr.d.ts +0 -3
  448. package/dist/util/ssr.js +0 -9
  449. package/dist/util/ssr.js.map +0 -1
  450. package/dist/util/view.d.ts +0 -10
  451. package/dist/util/view.js +0 -99
  452. package/dist/util/view.js.map +0 -1
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replaceUrlInBody = replaceUrlInBody;
4
+ exports.assessReplaceSafety = assessReplaceSafety;
5
+ exports.runReplaceUrl = runReplaceUrl;
6
+ const runner_1 = require("../migration/runner");
7
+ const page_1 = require("../models/page");
8
+ /**
9
+ * feature-url-replace-admin-cli — bulk in-body URL/host replacement.
10
+ *
11
+ * When a Crowi instance changes its public domain during a v1→v2 migration,
12
+ * page bodies keep absolute URLs pinned to the old host (e.g.
13
+ * `![shot.png](https://old.example/files/<id>)`). File / page ids are carried
14
+ * over unchanged, so the fix is a literal host (URL prefix) swap — not an id
15
+ * remap. Run via `crowi-admin replace url --from <url> --to <url>`.
16
+ *
17
+ * Why this does NOT route through `Page.updatePage` / `ctx.rewritePageBody`
18
+ * (the path `wikilink-format` uses): `updatePage` ends with
19
+ * `pageEvent.emit('update', …, revisionCreated=true)`, and `onUpdate`
20
+ * (registered unconditionally in `setupModels`, so live even under the CLI's
21
+ * `initForCli`) fans out an UPDATE notification to every watcher, auto-watches
22
+ * the acting user onto every touched page, and kicks per-page search/backlink
23
+ * side effects that race `teardownForCli`. A domain cleanup must be invisible
24
+ * to end users, so we rewrite at the persistence layer WITHOUT emitting the
25
+ * event: push a new revision, repoint `revision` / `currentRevision`, null the
26
+ * Yjs snapshot (so the next `onLoadDocument` rebuilds from the new body — the
27
+ * same invariant `updatePage` upholds), and deliberately leave `updatedAt` /
28
+ * `lastUpdateUser` / `grant` untouched so listings and visibility don't move.
29
+ * (`updatePage` would also corrupt grant here — `grant = options.grant || null`
30
+ * nulls a public page's grant when called with `{}`.)
31
+ *
32
+ * Derived data after a run: served HTML is fresh because `prepareRevision`
33
+ * re-renders `renderedAst` onto the new revision; only the per-page embed cache
34
+ * is evicted directly. Search must be rebuilt separately (`crowi-admin rebuild
35
+ * search`); backlinks are unaffected (external URLs are not internal links).
36
+ */
37
+ /** Minimum sensible `--from` length; anything shorter risks mass corruption. */
38
+ const MIN_FROM_LENGTH = 4;
39
+ /** How many matched pages to surface as preview samples. */
40
+ const SAMPLE_LIMIT = 10;
41
+ /** Max characters of a sample line before truncation. */
42
+ const SNIPPET_MAX = 160;
43
+ /**
44
+ * Literal, single-pass, global substring replacement. `from` is matched
45
+ * verbatim (no regex), so it is safe for URLs full of `/` `.` `?` etc.
46
+ * `from === to` / empty `from` are no-ops. Returns the input body by reference
47
+ * when there is nothing to change so callers can cheap-skip on `result.body === body`.
48
+ */
49
+ function replaceUrlInBody(body, from, to) {
50
+ if (from === '' || from === to)
51
+ return { body, occurrences: 0 };
52
+ const parts = body.split(from);
53
+ const occurrences = parts.length - 1;
54
+ if (occurrences === 0)
55
+ return { body, occurrences: 0 };
56
+ return { body: parts.join(to), occurrences };
57
+ }
58
+ /**
59
+ * Assess whether a `from`→`to` pair is safe to apply as a literal replace.
60
+ * Pure + exported so both the CLI and tests share one rule set.
61
+ *
62
+ * The headline risk of literal substring replace is silent prefix corruption:
63
+ * `from = "wiki.example.in"` is a prefix of `wiki.example.int`, so a bare host
64
+ * can mangle unrelated domains. We therefore flag scheme-less `from` (caller
65
+ * gates it behind `--force`) and reject empty / identical / too-short inputs.
66
+ */
67
+ function assessReplaceSafety(from, to) {
68
+ const errors = [];
69
+ const warnings = [];
70
+ if (from === '')
71
+ errors.push('--from must not be empty.');
72
+ else if (from === to)
73
+ errors.push('--from and --to are identical; nothing to replace.');
74
+ else if (from.length < MIN_FROM_LENGTH)
75
+ errors.push(`--from is too short (<${MIN_FROM_LENGTH} chars); refusing to avoid mass corruption.`);
76
+ const bareHostFrom = from.length > 0 && !/^https?:\/\//i.test(from);
77
+ if (from.length > 0 && to.length > 0) {
78
+ if (to.includes(from))
79
+ warnings.push('--to contains --from; re-running this command would replace again (not idempotent).');
80
+ else if (from.includes(to))
81
+ warnings.push('--from contains --to; double-check you did not swap --from and --to.');
82
+ }
83
+ return { errors, warnings, bareHostFrom };
84
+ }
85
+ /** Status set in scope: default = published + legacy null; +trash adds deleted/deprecated. */
86
+ function statusFilter(includeTrash) {
87
+ const statuses = includeTrash ? [null, page_1.STATUS_PUBLISHED, page_1.STATUS_DELETED, page_1.STATUS_DEPRECATED] : [null, page_1.STATUS_PUBLISHED];
88
+ return { status: { $in: statuses } };
89
+ }
90
+ /** Extract the first line containing `from`, trimmed and capped, for a preview sample. */
91
+ function firstSnippet(body, from) {
92
+ const idx = body.indexOf(from);
93
+ if (idx === -1)
94
+ return '';
95
+ const lineStart = body.lastIndexOf('\n', idx) + 1;
96
+ const nl = body.indexOf('\n', idx);
97
+ const lineEnd = nl === -1 ? body.length : nl;
98
+ const line = body.slice(lineStart, lineEnd).trim();
99
+ return line.length > SNIPPET_MAX ? `${line.slice(0, SNIPPET_MAX)}…` : line;
100
+ }
101
+ /**
102
+ * Resolve the author recorded on every new revision: `--user <email>` (must
103
+ * exist) → else the oldest admin (deterministic). `prepareRevision` throws on a
104
+ * userless revision, so a real user must be resolved up front. Mirrors
105
+ * `wikilink-format`'s `resolveActingUserId`.
106
+ */
107
+ async function resolveActingUser(crowi, email) {
108
+ const User = crowi.model('User');
109
+ if (email) {
110
+ const named = await User.findOne({ email }).exec();
111
+ if (!named)
112
+ throw new Error(`--user '${email}': no user with that email exists.`);
113
+ return named;
114
+ }
115
+ const admin = await User.findOne({ admin: true }).sort({ createdAt: 1 }).exec();
116
+ if (!admin)
117
+ throw new Error('replace url: no admin user found; pass --user <email> or create an admin user first.');
118
+ return admin;
119
+ }
120
+ /** Walk in-scope pages, returning those whose current revision body contains `from`. */
121
+ async function scan(crowi, from, includeTrash) {
122
+ const Page = crowi.model('Page');
123
+ const Revision = crowi.model('Revision');
124
+ const matches = [];
125
+ const samples = [];
126
+ let pagesScanned = 0;
127
+ let occurrences = 0;
128
+ // Stream-walk so a large install doesn't have to fit in memory. Read each
129
+ // page's CURRENT revision body (the body editors / viewers seed from).
130
+ const cursor = Page.find(statusFilter(includeTrash)).select('_id path revision').lean().cursor();
131
+ for (let page = await cursor.next(); page != null; page = await cursor.next()) {
132
+ pagesScanned++;
133
+ const pageDoc = page;
134
+ if (!pageDoc.revision)
135
+ continue;
136
+ const rev = (await Revision.findById(pageDoc.revision).select('body').lean());
137
+ const body = rev?.body;
138
+ if (typeof body !== 'string' || !body.includes(from))
139
+ continue;
140
+ const occ = body.split(from).length - 1;
141
+ if (occ === 0)
142
+ continue;
143
+ matches.push({ pageId: String(pageDoc._id), path: pageDoc.path });
144
+ occurrences += occ;
145
+ if (samples.length < SAMPLE_LIMIT)
146
+ samples.push({ path: pageDoc.path, occurrences: occ, snippet: firstSnippet(body, from) });
147
+ }
148
+ return { matches, pagesScanned, preview: { pagesMatched: matches.length, occurrences, samples } };
149
+ }
150
+ /**
151
+ * Quietly rewrite one page's current body: re-read the latest revision (so a
152
+ * concurrent edit isn't clobbered with stale content), re-apply the literal
153
+ * replace, push a new revision, repoint `revision` / `currentRevision`, and
154
+ * null the Yjs snapshot — WITHOUT touching `updatedAt` / `lastUpdateUser` /
155
+ * `grant` and WITHOUT emitting `pageEvent`. Returns true when a rewrite was
156
+ * written, false when the page vanished or no longer matches.
157
+ */
158
+ async function quietRewrite(crowi, pageId, from, to, actingUser) {
159
+ const Page = crowi.model('Page');
160
+ const Revision = crowi.model('Revision');
161
+ const page = await Page.findById(pageId).exec();
162
+ if (!page?.revision)
163
+ return false;
164
+ const currentRev = await Revision.findById(page.revision).exec();
165
+ if (!currentRev || typeof currentRev.body !== 'string')
166
+ return false;
167
+ const { body: newBody, occurrences } = replaceUrlInBody(currentRev.body, from, to);
168
+ if (occurrences === 0)
169
+ return false; // changed since the scan — nothing to do
170
+ const newRevision = await Revision.prepareRevision(page, newBody, actingUser, {});
171
+ await newRevision.save();
172
+ // Repoint both pointers (display + collab seed) and drop the Y.Doc snapshot
173
+ // so the next onLoadDocument rebuilds from the new body. Leave updatedAt /
174
+ // lastUpdateUser / grant exactly as they were — the change is invisible in
175
+ // listings and visibility, auditable only via the new revision's author.
176
+ page.revision = newRevision._id;
177
+ page.currentRevision = newRevision._id;
178
+ page.yjsState = null;
179
+ page.yjsCheckpointAt = null;
180
+ await page.save();
181
+ // Evict only this page's embed render cache, directly (not via pageEvent, so
182
+ // no notification fan-out). Served markdown is already fresh via the new
183
+ // revision's renderedAst; this covers `@[tag](old-url)` plugin embeds.
184
+ const renderer = crowi.renderer;
185
+ if (renderer && crowi.isMongoConnected()) {
186
+ try {
187
+ await renderer.cache.invalidatePage(String(page._id));
188
+ }
189
+ catch {
190
+ // best-effort — a stale embed cache entry is not worth failing the run
191
+ }
192
+ }
193
+ return true;
194
+ }
195
+ /**
196
+ * Scan every in-scope page for `from`, optionally confirm, then quietly rewrite
197
+ * each match to `to`. Reuses `MigrationRunnerCore` purely for its public
198
+ * SIGINT-aware bounded-concurrency map (`mapBounded` / `installSigintHandler`);
199
+ * it never touches the migration audit log.
200
+ */
201
+ async function runReplaceUrl(crowi, opts) {
202
+ const { from, to } = opts;
203
+ const dryRun = Boolean(opts.dryRun);
204
+ const includeTrash = Boolean(opts.includeTrash);
205
+ // Resolve the acting user before the (potentially long) scan so a bad
206
+ // `--user` fails fast. Not needed for a dry-run (no writes).
207
+ const actingUser = dryRun ? undefined : await resolveActingUser(crowi, opts.userEmail);
208
+ const { matches, pagesScanned, preview } = await scan(crowi, from, includeTrash);
209
+ const base = {
210
+ ...preview,
211
+ from,
212
+ to,
213
+ dryRun,
214
+ aborted: false,
215
+ pagesScanned,
216
+ pagesRewritten: 0,
217
+ failed: 0,
218
+ interrupted: false,
219
+ actingUserEmail: actingUser?.email,
220
+ };
221
+ if (dryRun || matches.length === 0)
222
+ return base;
223
+ if (opts.confirm) {
224
+ const proceed = await opts.confirm(preview);
225
+ if (!proceed)
226
+ return { ...base, aborted: true };
227
+ }
228
+ const core = new runner_1.MigrationRunnerCore(crowi, { concurrency: opts.concurrency ?? 8 });
229
+ const dispose = core.installSigintHandler();
230
+ let pagesRewritten = 0;
231
+ let failed = 0;
232
+ try {
233
+ const { interrupted } = await core.mapBounded(matches, async (m) => {
234
+ opts.progress?.setLabel(m.path);
235
+ try {
236
+ if (await quietRewrite(crowi, m.pageId, from, to, actingUser))
237
+ pagesRewritten++;
238
+ }
239
+ catch (err) {
240
+ failed++;
241
+ core.context.logger.warn(`replace url: failed on ${m.path}: ${err instanceof Error ? err.message : String(err)}`);
242
+ }
243
+ opts.progress?.increment(1);
244
+ });
245
+ return { ...base, pagesRewritten, failed, interrupted };
246
+ }
247
+ finally {
248
+ dispose();
249
+ }
250
+ }
251
+ //# sourceMappingURL=replace-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-url.js","sourceRoot":"","sources":["../../src/util/replace-url.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.0",
3
+ "version": "2.0.0-alpha.2",
4
4
  "main": "dist/app.js",
5
5
  "types": "dist/app.d.ts",
6
6
  "bin": {
@@ -8,12 +8,19 @@
8
8
  },
9
9
  "files": [
10
10
  "dist",
11
+ "views",
12
+ "public",
11
13
  "README.md"
12
14
  ],
13
15
  "publishConfig": {
14
16
  "access": "public"
15
17
  },
16
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
+ },
17
24
  "tags": [
18
25
  "wiki",
19
26
  "communication",
@@ -42,7 +49,7 @@
42
49
  "debug": "^4.4.3",
43
50
  "dotenv": "^16.5.0",
44
51
  "github-slugger": "^2.0.0",
45
- "hono": "^4.10.0",
52
+ "hono": "^4.12.25",
46
53
  "hono-rate-limiter": "^0.5.3",
47
54
  "jiti": "^2.7.0",
48
55
  "jsonwebtoken": "^9.0.2",
@@ -57,10 +64,10 @@
57
64
  "shiki": "^4.0.2",
58
65
  "unified": "^11.0.5",
59
66
  "uuid": "^11.1.1",
60
- "ws": "^8.20.1",
67
+ "ws": "^8.21.0",
61
68
  "zod": "^4.4.3",
62
- "@crowi/api-contract": "^2.0.0-alpha.0",
63
- "@crowi/collab": "^0.1.0-alpha.0",
69
+ "@crowi/api-contract": "^2.0.0-alpha.2",
70
+ "@crowi/collab": "^0.1.0-alpha.1",
64
71
  "@crowi/plugin-api": "^0.1.0-alpha.0",
65
72
  "@crowi/runner": "^0.1.0-alpha.0"
66
73
  },
@@ -79,6 +86,7 @@
79
86
  "@typescript-eslint/parser": "^6.21.0",
80
87
  "eslint": "^8.57.1",
81
88
  "faker": "^4.1.0",
89
+ "form-data": "^4.0.6",
82
90
  "jest": "^29.7.0",
83
91
  "mongodb-memory-server": "^10.1.4",
84
92
  "regenerator-runtime": "^0.13.3",
Binary file
@@ -0,0 +1,9 @@
1
+ <mj-text font-size="20px" font-weight="700" padding="24px 24px 8px">{{ t.activation.heading }}</mj-text>
2
+ <mj-text padding="0 24px 16px">{{ t.activation.intro }}</mj-text>
3
+ <mj-button href="{{ activationUrl }}" background-color="#3b6e72" color="#ffffff" font-size="15px" font-weight="600" border-radius="8px" padding="8px 24px 20px" inner-padding="12px 28px">
4
+ {{ t.activation.cta }}
5
+ </mj-button>
6
+ <mj-text padding="0 24px 4px" font-size="13px" color="#6b7280">{{ t.activation.expiresNote }}</mj-text>
7
+ <mj-text padding="0 24px 8px" font-size="13px" color="#6b7280">{{ t.common.linkFallback }}<br /><a href="{{ activationUrl }}" style="color:#3b6e72;word-break:break-all;">{{ activationUrl }}</a></mj-text>
8
+ <mj-divider border-color="#eceef0" padding="12px 24px" />
9
+ <mj-text padding="0 24px 16px" font-size="12px" color="#9aa0a6">{{ t.activation.ignoreNote }}</mj-text>
@@ -0,0 +1,13 @@
1
+ {{ t.activation.heading }}
2
+
3
+ {{ t.activation.intro }}
4
+
5
+ {{ t.activation.cta }}: {{ activationUrl }}
6
+
7
+ {{ t.activation.expiresNote }}
8
+
9
+ {{ t.activation.ignoreNote }}
10
+
11
+ --
12
+ {{ appTitle }}
13
+ {{ appUrl }}
@@ -0,0 +1,7 @@
1
+ <mj-text font-size="20px" font-weight="700" padding="24px 24px 8px">{{ t.adminApprovalPending.heading }}</mj-text>
2
+ <mj-text padding="0 24px 8px">{{ t.adminApprovalPending.intro }}</mj-text>
3
+ <mj-text padding="0 24px 16px" font-size="15px"><strong>{{ createdUserName }}</strong><br /><span style="color:#6b7280;">{{ createdUserEmail }}</span></mj-text>
4
+ <mj-button href="{{ adminUsersUrl }}" background-color="#3b6e72" color="#ffffff" font-size="15px" font-weight="600" border-radius="8px" padding="0 24px 20px" inner-padding="12px 28px">
5
+ {{ t.adminApprovalPending.cta }}
6
+ </mj-button>
7
+ <mj-text padding="0 24px 16px" font-size="13px" color="#6b7280">{{ t.common.linkFallback }}<br /><a href="{{ adminUsersUrl }}" style="color:#3b6e72;word-break:break-all;">{{ adminUsersUrl }}</a></mj-text>
@@ -0,0 +1,11 @@
1
+ {{ t.adminApprovalPending.heading }}
2
+
3
+ {{ t.adminApprovalPending.intro }}
4
+
5
+ {{ createdUserName }} <{{ createdUserEmail }}>
6
+
7
+ {{ t.adminApprovalPending.cta }}: {{ adminUsersUrl }}
8
+
9
+ --
10
+ {{ appTitle }}
11
+ {{ appUrl }}
@@ -0,0 +1,9 @@
1
+ <mj-text font-size="20px" font-weight="700" padding="24px 24px 8px">{{ t.emailChange.heading }}</mj-text>
2
+ <mj-text padding="0 24px 16px">{{ t.emailChange.intro }}</mj-text>
3
+ <mj-button href="{{ confirmUrl }}" background-color="#3b6e72" color="#ffffff" font-size="15px" font-weight="600" border-radius="8px" padding="8px 24px 20px" inner-padding="12px 28px">
4
+ {{ t.emailChange.cta }}
5
+ </mj-button>
6
+ <mj-text padding="0 24px 4px" font-size="13px" color="#6b7280">{{ t.emailChange.expiresNote }}</mj-text>
7
+ <mj-text padding="0 24px 8px" font-size="13px" color="#6b7280">{{ t.common.linkFallback }}<br /><a href="{{ confirmUrl }}" style="color:#3b6e72;word-break:break-all;">{{ confirmUrl }}</a></mj-text>
8
+ <mj-divider border-color="#eceef0" padding="12px 24px" />
9
+ <mj-text padding="0 24px 16px" font-size="12px" color="#9aa0a6">{{ t.emailChange.ignoreNote }}</mj-text>
@@ -0,0 +1,13 @@
1
+ {{ t.emailChange.heading }}
2
+
3
+ {{ t.emailChange.intro }}
4
+
5
+ {{ t.emailChange.cta }}: {{ confirmUrl }}
6
+
7
+ {{ t.emailChange.expiresNote }}
8
+
9
+ {{ t.emailChange.ignoreNote }}
10
+
11
+ --
12
+ {{ appTitle }}
13
+ {{ appUrl }}
@@ -0,0 +1,9 @@
1
+ <mj-text font-size="20px" font-weight="700" padding="24px 24px 8px">{{ t.invite.heading }}</mj-text>
2
+ <mj-text padding="0 24px 16px">{{ t.invite.intro }}</mj-text>
3
+ <mj-button href="{{ inviteUrl }}" background-color="#3b6e72" color="#ffffff" font-size="15px" font-weight="600" border-radius="8px" padding="8px 24px 20px" inner-padding="12px 28px">
4
+ {{ t.invite.cta }}
5
+ </mj-button>
6
+ <mj-text padding="0 24px 4px" font-size="13px" color="#6b7280">{{ t.invite.expiresNote }}</mj-text>
7
+ <mj-text padding="0 24px 8px" font-size="13px" color="#6b7280">{{ t.common.linkFallback }}<br /><a href="{{ inviteUrl }}" style="color:#3b6e72;word-break:break-all;">{{ inviteUrl }}</a></mj-text>
8
+ <mj-divider border-color="#eceef0" padding="12px 24px" />
9
+ <mj-text padding="0 24px 16px" font-size="12px" color="#9aa0a6">{{ t.invite.ignoreNote }}</mj-text>
@@ -0,0 +1,13 @@
1
+ {{ t.invite.heading }}
2
+
3
+ {{ t.invite.intro }}
4
+
5
+ {{ t.invite.cta }}: {{ inviteUrl }}
6
+
7
+ {{ t.invite.expiresNote }}
8
+
9
+ {{ t.invite.ignoreNote }}
10
+
11
+ --
12
+ {{ appTitle }}
13
+ {{ appUrl }}
@@ -0,0 +1,38 @@
1
+ <mjml>
2
+ <mj-head>
3
+ <mj-title>{{ subject }}</mj-title>
4
+ <mj-preview>{{ preheader }}</mj-preview>
5
+ <mj-attributes>
6
+ <mj-all font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Noto Sans JP',Helvetica,Arial,sans-serif" />
7
+ <mj-text font-size="15px" line-height="1.7" color="#2b2f33" />
8
+ </mj-attributes>
9
+ <mj-style>
10
+ .crowi-footer a { color: #6b7280 !important; }
11
+ </mj-style>
12
+ </mj-head>
13
+ <mj-body background-color="#f4f5f7">
14
+ <mj-section padding="50px 0 40px">
15
+ <mj-column>
16
+ <mj-image src="{{ logoUrl }}" alt="{{ appTitle }}" width="132px" align="center" padding="0" />
17
+ </mj-column>
18
+ </mj-section>
19
+
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>
27
+
28
+ <mj-section padding="16px 0 32px">
29
+ <mj-column>
30
+ <mj-text css-class="crowi-footer" align="center" font-size="12px" color="#6b7280" line-height="1.6">
31
+ <strong>{{ appTitle }}</strong><br />
32
+ {{ t.common.footerTagline }}<br />
33
+ <a href="{{ appUrl }}">{{ appUrl }}</a>
34
+ </mj-text>
35
+ </mj-column>
36
+ </mj-section>
37
+ </mj-body>
38
+ </mjml>
@@ -0,0 +1,4 @@
1
+ <mj-text font-size="20px" font-weight="700" padding="24px 24px 8px">{{ t.passwordChanged.heading }}</mj-text>
2
+ <mj-text padding="0 24px 16px">{{ t.passwordChanged.intro }}</mj-text>
3
+ <mj-divider border-color="#eceef0" padding="4px 24px" />
4
+ <mj-text padding="8px 24px 16px" font-size="12px" color="#9aa0a6">{{ t.passwordChanged.ignoreNote }}</mj-text>
@@ -0,0 +1,9 @@
1
+ {{ t.passwordChanged.heading }}
2
+
3
+ {{ t.passwordChanged.intro }}
4
+
5
+ {{ t.passwordChanged.ignoreNote }}
6
+
7
+ --
8
+ {{ appTitle }}
9
+ {{ appUrl }}
@@ -0,0 +1,9 @@
1
+ <mj-text font-size="20px" font-weight="700" padding="24px 24px 8px">{{ t.passwordReset.heading }}</mj-text>
2
+ <mj-text padding="0 24px 16px">{{ t.passwordReset.intro }}</mj-text>
3
+ <mj-button href="{{ resetUrl }}" background-color="#3b6e72" color="#ffffff" font-size="15px" font-weight="600" border-radius="8px" padding="8px 24px 20px" inner-padding="12px 28px">
4
+ {{ t.passwordReset.cta }}
5
+ </mj-button>
6
+ <mj-text padding="0 24px 4px" font-size="13px" color="#6b7280">{{ t.passwordReset.expiresNote }}</mj-text>
7
+ <mj-text padding="0 24px 8px" font-size="13px" color="#6b7280">{{ t.common.linkFallback }}<br /><a href="{{ resetUrl }}" style="color:#3b6e72;word-break:break-all;">{{ resetUrl }}</a></mj-text>
8
+ <mj-divider border-color="#eceef0" padding="12px 24px" />
9
+ <mj-text padding="0 24px 16px" font-size="12px" color="#9aa0a6">{{ t.passwordReset.ignoreNote }}</mj-text>
@@ -0,0 +1,13 @@
1
+ {{ t.passwordReset.heading }}
2
+
3
+ {{ t.passwordReset.intro }}
4
+
5
+ {{ t.passwordReset.cta }}: {{ resetUrl }}
6
+
7
+ {{ t.passwordReset.expiresNote }}
8
+
9
+ {{ t.passwordReset.ignoreNote }}
10
+
11
+ --
12
+ {{ appTitle }}
13
+ {{ appUrl }}
@@ -0,0 +1,2 @@
1
+ <mj-text font-size="20px" font-weight="700" padding="24px 24px 8px">{{ t.test.heading }}</mj-text>
2
+ <mj-text padding="0 24px 24px">{{ t.test.intro }}</mj-text>
@@ -0,0 +1,7 @@
1
+ {{ t.test.heading }}
2
+
3
+ {{ t.test.intro }}
4
+
5
+ --
6
+ {{ appTitle }}
7
+ {{ appUrl }}
@@ -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;