@crowi/api 2.0.0-alpha.1 → 2.0.0-alpha.3
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.
- package/dist/collab/attach.d.ts +34 -10
- package/dist/collab/attach.js +77 -1
- package/dist/collab/attach.js.map +1 -1
- package/dist/crowi/index.js +7 -6
- package/dist/crowi/index.js.map +1 -1
- package/dist/hono/handlers/activation.d.ts +3 -3
- package/dist/hono/handlers/admin/users.d.ts +118 -0
- package/dist/hono/handlers/admin/users.js +28 -0
- package/dist/hono/handlers/admin/users.js.map +1 -1
- package/dist/hono/handlers/app.d.ts +1 -0
- package/dist/hono/handlers/app.js +11 -0
- package/dist/hono/handlers/app.js.map +1 -1
- package/dist/hono/handlers/attachment-stream.js +23 -0
- package/dist/hono/handlers/attachment-stream.js.map +1 -1
- package/dist/hono/handlers/draft.js +10 -0
- package/dist/hono/handlers/draft.js.map +1 -1
- package/dist/hono/handlers/emailChange.d.ts +4 -4
- package/dist/hono/handlers/inviteAccept.d.ts +6 -6
- package/dist/hono/handlers/page-collab.js +4 -0
- package/dist/hono/handlers/page-collab.js.map +1 -1
- package/dist/hono/handlers/page.d.ts +251 -0
- package/dist/hono/handlers/page.js +123 -6
- package/dist/hono/handlers/page.js.map +1 -1
- package/dist/hono/handlers/passwordReset.d.ts +5 -5
- package/dist/hono/handlers/tokenAuth.d.ts +7 -7
- package/dist/mcp/result.d.ts +42 -16
- package/dist/mcp/result.js +56 -10
- package/dist/mcp/result.js.map +1 -1
- package/dist/mcp/tools/page.js +21 -1
- package/dist/mcp/tools/page.js.map +1 -1
- package/dist/mcp/tools/search.d.ts +12 -0
- package/dist/mcp/tools/search.js +21 -5
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/migration/cli-api.d.ts +8 -1
- package/dist/migration/cli-api.js +2 -0
- package/dist/migration/cli-api.js.map +1 -1
- package/dist/migration/helpers.d.ts +13 -0
- package/dist/migration/helpers.js +29 -0
- package/dist/migration/helpers.js.map +1 -0
- package/dist/migration/migrations/code-mask.d.ts +76 -0
- package/dist/migration/migrations/code-mask.js +224 -0
- package/dist/migration/migrations/code-mask.js.map +1 -0
- package/dist/migration/migrations/files-url-to-attachments.d.ts +99 -0
- package/dist/migration/migrations/files-url-to-attachments.js +305 -0
- package/dist/migration/migrations/files-url-to-attachments.js.map +1 -0
- package/dist/migration/migrations/index.js +4 -0
- package/dist/migration/migrations/index.js.map +1 -1
- package/dist/migration/migrations/page-status-default.d.ts +31 -1
- package/dist/migration/migrations/published-current-revision.d.ts +47 -0
- package/dist/migration/migrations/published-current-revision.js +90 -0
- package/dist/migration/migrations/published-current-revision.js.map +1 -0
- package/dist/migration/migrations/relocate-reserved-api-paths.d.ts +37 -1
- package/dist/migration/migrations/relocate-reserved-api-paths.js +11 -3
- package/dist/migration/migrations/relocate-reserved-api-paths.js.map +1 -1
- package/dist/migration/migrations/revisions-schema-unify.d.ts +35 -1
- package/dist/migration/migrations/user-unique-prepare.d.ts +55 -1
- package/dist/migration/migrations/user-unique-prepare.js +5 -0
- package/dist/migration/migrations/user-unique-prepare.js.map +1 -1
- package/dist/migration/migrations/wikilink-format.d.ts +75 -12
- package/dist/migration/migrations/wikilink-format.js +23 -157
- package/dist/migration/migrations/wikilink-format.js.map +1 -1
- package/dist/migration/migrations/wikilink-html-recover.d.ts +191 -0
- package/dist/migration/migrations/wikilink-html-recover.js +340 -0
- package/dist/migration/migrations/wikilink-html-recover.js.map +1 -0
- package/dist/migration/registry.d.ts +8 -2
- package/dist/migration/registry.js +5 -1
- package/dist/migration/registry.js.map +1 -1
- package/dist/migration/run-boot-migrations.d.ts +4 -1
- package/dist/migration/run-boot-migrations.js +55 -23
- package/dist/migration/run-boot-migrations.js.map +1 -1
- package/dist/migration/runner.js +8 -1
- package/dist/migration/runner.js.map +1 -1
- package/dist/migration/types.d.ts +57 -5
- package/dist/migration/types.js.map +1 -1
- package/dist/models/page.d.ts +23 -3
- package/dist/models/page.js +91 -5
- package/dist/models/page.js.map +1 -1
- package/dist/models/user.d.ts +1 -0
- package/dist/models/user.js +40 -21
- package/dist/models/user.js.map +1 -1
- package/dist/plugin/plugin-manager.js +1 -1
- package/dist/renderer/core/headings.d.ts +12 -1
- package/dist/renderer/core/headings.js +48 -8
- package/dist/renderer/core/headings.js.map +1 -1
- package/dist/renderer/pipeline.d.ts +6 -0
- package/dist/renderer/pipeline.js.map +1 -1
- package/dist/renderer/registry.js +1 -1
- package/dist/util/page-response.js +19 -2
- package/dist/util/page-response.js.map +1 -1
- package/dist/util/ws-token.d.ts +13 -0
- package/dist/util/ws-token.js +43 -3
- package/dist/util/ws-token.js.map +1 -1
- package/package.json +13 -7
- package/views/mail/layout.mjml +7 -5
- package/dist/common/functions/path2name.d.ts +0 -1
- package/dist/common/functions/path2name.js +0 -22
- package/dist/common/functions/path2name.js.map +0 -1
- package/dist/common/functions/renderIcon.d.ts +0 -1
- package/dist/common/functions/renderIcon.js +0 -9
- package/dist/common/functions/renderIcon.js.map +0 -1
- package/dist/controllers/admin.d.ts +0 -3
- package/dist/controllers/admin.js +0 -474
- package/dist/controllers/admin.js.map +0 -1
- package/dist/controllers/attachment.d.ts +0 -4
- package/dist/controllers/attachment.js +0 -200
- package/dist/controllers/attachment.js.map +0 -1
- package/dist/controllers/backlink.d.ts +0 -3
- package/dist/controllers/backlink.js +0 -42
- package/dist/controllers/backlink.js.map +0 -1
- package/dist/controllers/bookmark.d.ts +0 -3
- package/dist/controllers/bookmark.js +0 -100
- package/dist/controllers/bookmark.js.map +0 -1
- package/dist/controllers/comment.d.ts +0 -3
- package/dist/controllers/comment.js +0 -111
- package/dist/controllers/comment.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -25
- package/dist/controllers/index.js +0 -44
- package/dist/controllers/index.js.map +0 -1
- package/dist/controllers/installer.d.ts +0 -3
- package/dist/controllers/installer.js +0 -48
- package/dist/controllers/installer.js.map +0 -1
- package/dist/controllers/login.d.ts +0 -4
- package/dist/controllers/login.js +0 -438
- package/dist/controllers/login.js.map +0 -1
- package/dist/controllers/logout.d.ts +0 -5
- package/dist/controllers/logout.js +0 -11
- package/dist/controllers/logout.js.map +0 -1
- package/dist/controllers/me.d.ts +0 -4
- package/dist/controllers/me.js +0 -369
- package/dist/controllers/me.js.map +0 -1
- package/dist/controllers/notification.d.ts +0 -3
- package/dist/controllers/notification.js +0 -88
- package/dist/controllers/notification.js.map +0 -1
- package/dist/controllers/page.d.ts +0 -3
- package/dist/controllers/page.js +0 -881
- package/dist/controllers/page.js.map +0 -1
- package/dist/controllers/revision.d.ts +0 -3
- package/dist/controllers/revision.js +0 -91
- package/dist/controllers/revision.js.map +0 -1
- package/dist/controllers/search.d.ts +0 -3
- package/dist/controllers/search.js +0 -93
- package/dist/controllers/search.js.map +0 -1
- package/dist/controllers/share.d.ts +0 -3
- package/dist/controllers/share.js +0 -207
- package/dist/controllers/share.js.map +0 -1
- package/dist/controllers/shareAccess.d.ts +0 -3
- package/dist/controllers/shareAccess.js +0 -28
- package/dist/controllers/shareAccess.js.map +0 -1
- package/dist/controllers/slack.d.ts +0 -3
- package/dist/controllers/slack.js +0 -87
- package/dist/controllers/slack.js.map +0 -1
- package/dist/controllers/tokenAuth.d.ts +0 -10
- package/dist/controllers/tokenAuth.js +0 -292
- package/dist/controllers/tokenAuth.js.map +0 -1
- package/dist/controllers/user.d.ts +0 -3
- package/dist/controllers/user.js +0 -67
- package/dist/controllers/user.js.map +0 -1
- package/dist/controllers/version.d.ts +0 -4
- package/dist/controllers/version.js +0 -19
- package/dist/controllers/version.js.map +0 -1
- package/dist/crowi/express-init.d.ts +0 -4
- package/dist/crowi/express-init.js +0 -101
- package/dist/crowi/express-init.js.map +0 -1
- package/dist/form/admin/app.d.ts +0 -2
- package/dist/form/admin/app.js +0 -9
- package/dist/form/admin/app.js.map +0 -1
- package/dist/form/admin/auth.d.ts +0 -2
- package/dist/form/admin/auth.js +0 -9
- package/dist/form/admin/auth.js.map +0 -1
- package/dist/form/admin/aws.d.ts +0 -2
- package/dist/form/admin/aws.js +0 -13
- package/dist/form/admin/aws.js.map +0 -1
- package/dist/form/admin/github.d.ts +0 -2
- package/dist/form/admin/github.js +0 -15
- package/dist/form/admin/github.js.map +0 -1
- package/dist/form/admin/google.d.ts +0 -2
- package/dist/form/admin/google.js +0 -13
- package/dist/form/admin/google.js.map +0 -1
- package/dist/form/admin/mail.d.ts +0 -2
- package/dist/form/admin/mail.js +0 -13
- package/dist/form/admin/mail.js.map +0 -1
- package/dist/form/admin/sec.d.ts +0 -2
- package/dist/form/admin/sec.js +0 -10
- package/dist/form/admin/sec.js.map +0 -1
- package/dist/form/admin/slackSetting.d.ts +0 -2
- package/dist/form/admin/slackSetting.js +0 -13
- package/dist/form/admin/slackSetting.js.map +0 -1
- package/dist/form/admin/userEdit.d.ts +0 -2
- package/dist/form/admin/userEdit.js +0 -9
- package/dist/form/admin/userEdit.js.map +0 -1
- package/dist/form/admin/userInvite.d.ts +0 -2
- package/dist/form/admin/userInvite.js +0 -9
- package/dist/form/admin/userInvite.js.map +0 -1
- package/dist/form/comment.d.ts +0 -2
- package/dist/form/comment.js +0 -9
- package/dist/form/comment.js.map +0 -1
- package/dist/form/index.d.ts +0 -25
- package/dist/form/index.js +0 -48
- package/dist/form/index.js.map +0 -1
- package/dist/form/invited.d.ts +0 -2
- package/dist/form/invited.js +0 -13
- package/dist/form/invited.js.map +0 -1
- package/dist/form/login.d.ts +0 -2
- package/dist/form/login.js +0 -11
- package/dist/form/login.js.map +0 -1
- package/dist/form/me/apiToken.d.ts +0 -2
- package/dist/form/me/apiToken.js +0 -9
- package/dist/form/me/apiToken.js.map +0 -1
- package/dist/form/me/password.d.ts +0 -2
- package/dist/form/me/password.js +0 -11
- package/dist/form/me/password.js.map +0 -1
- package/dist/form/me/user.d.ts +0 -2
- package/dist/form/me/user.js +0 -9
- package/dist/form/me/user.js.map +0 -1
- package/dist/form/register.d.ts +0 -2
- package/dist/form/register.js +0 -13
- package/dist/form/register.js.map +0 -1
- package/dist/form/revision.d.ts +0 -2
- package/dist/form/revision.js +0 -13
- package/dist/form/revision.js.map +0 -1
- package/dist/hono/handlers/admin/share.d.ts +0 -106
- package/dist/hono/handlers/admin/share.js +0 -55
- package/dist/hono/handlers/admin/share.js.map +0 -1
- package/dist/middlewares/accessTokenParser.d.ts +0 -4
- package/dist/middlewares/accessTokenParser.js +0 -29
- package/dist/middlewares/accessTokenParser.js.map +0 -1
- package/dist/middlewares/adminRequired.d.ts +0 -10
- package/dist/middlewares/adminRequired.js +0 -35
- package/dist/middlewares/adminRequired.js.map +0 -1
- package/dist/middlewares/applicationInstalled.d.ts +0 -3
- package/dist/middlewares/applicationInstalled.js +0 -20
- package/dist/middlewares/applicationInstalled.js.map +0 -1
- package/dist/middlewares/applicationNotInstalled.d.ts +0 -3
- package/dist/middlewares/applicationNotInstalled.js +0 -13
- package/dist/middlewares/applicationNotInstalled.js.map +0 -1
- package/dist/middlewares/basicAuth.d.ts +0 -4
- package/dist/middlewares/basicAuth.js +0 -23
- package/dist/middlewares/basicAuth.js.map +0 -1
- package/dist/middlewares/csrfVerify.d.ts +0 -4
- package/dist/middlewares/csrfVerify.js +0 -24
- package/dist/middlewares/csrfVerify.js.map +0 -1
- package/dist/middlewares/encodeSpace.d.ts +0 -3
- package/dist/middlewares/encodeSpace.js +0 -14
- package/dist/middlewares/encodeSpace.js.map +0 -1
- package/dist/middlewares/fileAccessRightOrLoginRequired.d.ts +0 -4
- package/dist/middlewares/fileAccessRightOrLoginRequired.js +0 -29
- package/dist/middlewares/fileAccessRightOrLoginRequired.js.map +0 -1
- package/dist/middlewares/index.d.ts +0 -16
- package/dist/middlewares/index.js +0 -30
- package/dist/middlewares/index.js.map +0 -1
- package/dist/middlewares/jwtAdminRequired.d.ts +0 -8
- package/dist/middlewares/jwtAdminRequired.js +0 -35
- package/dist/middlewares/jwtAdminRequired.js.map +0 -1
- package/dist/middlewares/jwtAuth.d.ts +0 -4
- package/dist/middlewares/jwtAuth.js +0 -104
- package/dist/middlewares/jwtAuth.js.map +0 -1
- package/dist/middlewares/loginChecker.d.ts +0 -4
- package/dist/middlewares/loginChecker.js +0 -32
- package/dist/middlewares/loginChecker.js.map +0 -1
- package/dist/middlewares/loginRequired.d.ts +0 -4
- package/dist/middlewares/loginRequired.js +0 -88
- package/dist/middlewares/loginRequired.js.map +0 -1
- package/dist/routes/admin.d.ts +0 -4
- package/dist/routes/admin.js +0 -17
- package/dist/routes/admin.js.map +0 -1
- package/dist/routes/api/admin.d.ts +0 -4
- package/dist/routes/api/admin.js +0 -37
- package/dist/routes/api/admin.js.map +0 -1
- package/dist/routes/api/attachment.d.ts +0 -4
- package/dist/routes/api/attachment.js +0 -19
- package/dist/routes/api/attachment.js.map +0 -1
- package/dist/routes/api/bookmark.d.ts +0 -4
- package/dist/routes/api/bookmark.js +0 -15
- package/dist/routes/api/bookmark.js.map +0 -1
- package/dist/routes/api/comment.d.ts +0 -4
- package/dist/routes/api/comment.js +0 -14
- package/dist/routes/api/comment.js.map +0 -1
- package/dist/routes/api/index.d.ts +0 -4
- package/dist/routes/api/index.js +0 -36
- package/dist/routes/api/index.js.map +0 -1
- package/dist/routes/api/like.d.ts +0 -4
- package/dist/routes/api/like.js +0 -13
- package/dist/routes/api/like.js.map +0 -1
- package/dist/routes/api/notification.d.ts +0 -4
- package/dist/routes/api/notification.js +0 -15
- package/dist/routes/api/notification.js.map +0 -1
- package/dist/routes/api/page.d.ts +0 -4
- package/dist/routes/api/page.js +0 -24
- package/dist/routes/api/page.js.map +0 -1
- package/dist/routes/api/revision.d.ts +0 -4
- package/dist/routes/api/revision.js +0 -14
- package/dist/routes/api/revision.js.map +0 -1
- package/dist/routes/api/share.d.ts +0 -4
- package/dist/routes/api/share.js +0 -16
- package/dist/routes/api/share.js.map +0 -1
- package/dist/routes/api/version.d.ts +0 -4
- package/dist/routes/api/version.js +0 -10
- package/dist/routes/api/version.js.map +0 -1
- package/dist/routes/index.d.ts +0 -4
- package/dist/routes/index.js +0 -71
- package/dist/routes/index.js.map +0 -1
- package/dist/routes/login.d.ts +0 -4
- package/dist/routes/login.js +0 -18
- package/dist/routes/login.js.map +0 -1
- package/dist/routes/me.d.ts +0 -4
- package/dist/routes/me.js +0 -24
- package/dist/routes/me.js.map +0 -1
- package/dist/routes/ts-rest/admin/app.d.ts +0 -4
- package/dist/routes/ts-rest/admin/app.js +0 -67
- package/dist/routes/ts-rest/admin/app.js.map +0 -1
- package/dist/routes/ts-rest/admin/auth.d.ts +0 -4
- package/dist/routes/ts-rest/admin/auth.js +0 -95
- package/dist/routes/ts-rest/admin/auth.js.map +0 -1
- package/dist/routes/ts-rest/admin/index.d.ts +0 -10
- package/dist/routes/ts-rest/admin/index.js +0 -35
- package/dist/routes/ts-rest/admin/index.js.map +0 -1
- package/dist/routes/ts-rest/admin/mail.d.ts +0 -4
- package/dist/routes/ts-rest/admin/mail.js +0 -156
- package/dist/routes/ts-rest/admin/mail.js.map +0 -1
- package/dist/routes/ts-rest/admin/plugins.d.ts +0 -4
- package/dist/routes/ts-rest/admin/plugins.js +0 -317
- package/dist/routes/ts-rest/admin/plugins.js.map +0 -1
- package/dist/routes/ts-rest/admin/search.d.ts +0 -4
- package/dist/routes/ts-rest/admin/search.js +0 -67
- package/dist/routes/ts-rest/admin/search.js.map +0 -1
- package/dist/routes/ts-rest/admin/security.d.ts +0 -4
- package/dist/routes/ts-rest/admin/security.js +0 -114
- package/dist/routes/ts-rest/admin/security.js.map +0 -1
- package/dist/routes/ts-rest/admin/share.d.ts +0 -4
- package/dist/routes/ts-rest/admin/share.js +0 -69
- package/dist/routes/ts-rest/admin/share.js.map +0 -1
- package/dist/routes/ts-rest/admin/storage.d.ts +0 -4
- package/dist/routes/ts-rest/admin/storage.js +0 -59
- package/dist/routes/ts-rest/admin/storage.js.map +0 -1
- package/dist/routes/ts-rest/admin/users.d.ts +0 -4
- package/dist/routes/ts-rest/admin/users.js +0 -215
- package/dist/routes/ts-rest/admin/users.js.map +0 -1
- package/dist/routes/ts-rest/adminCrypto.d.ts +0 -4
- package/dist/routes/ts-rest/adminCrypto.js +0 -111
- package/dist/routes/ts-rest/adminCrypto.js.map +0 -1
- package/dist/routes/ts-rest/app.d.ts +0 -4
- package/dist/routes/ts-rest/app.js +0 -23
- package/dist/routes/ts-rest/app.js.map +0 -1
- package/dist/routes/ts-rest/attachment.d.ts +0 -4
- package/dist/routes/ts-rest/attachment.js +0 -830
- package/dist/routes/ts-rest/attachment.js.map +0 -1
- package/dist/routes/ts-rest/auth.d.ts +0 -4
- package/dist/routes/ts-rest/auth.js +0 -70
- package/dist/routes/ts-rest/auth.js.map +0 -1
- package/dist/routes/ts-rest/autocomplete.d.ts +0 -30
- package/dist/routes/ts-rest/autocomplete.js +0 -189
- package/dist/routes/ts-rest/autocomplete.js.map +0 -1
- package/dist/routes/ts-rest/backlink.d.ts +0 -4
- package/dist/routes/ts-rest/backlink.js +0 -106
- package/dist/routes/ts-rest/backlink.js.map +0 -1
- package/dist/routes/ts-rest/bookmark.d.ts +0 -4
- package/dist/routes/ts-rest/bookmark.js +0 -189
- package/dist/routes/ts-rest/bookmark.js.map +0 -1
- package/dist/routes/ts-rest/comment.d.ts +0 -4
- package/dist/routes/ts-rest/comment.js +0 -217
- package/dist/routes/ts-rest/comment.js.map +0 -1
- package/dist/routes/ts-rest/draft.d.ts +0 -22
- package/dist/routes/ts-rest/draft.js +0 -200
- package/dist/routes/ts-rest/draft.js.map +0 -1
- package/dist/routes/ts-rest/index.d.ts +0 -4
- package/dist/routes/ts-rest/index.js +0 -103
- package/dist/routes/ts-rest/index.js.map +0 -1
- package/dist/routes/ts-rest/installer.d.ts +0 -4
- package/dist/routes/ts-rest/installer.js +0 -77
- package/dist/routes/ts-rest/installer.js.map +0 -1
- package/dist/routes/ts-rest/me.d.ts +0 -4
- package/dist/routes/ts-rest/me.js +0 -410
- package/dist/routes/ts-rest/me.js.map +0 -1
- package/dist/routes/ts-rest/notification.d.ts +0 -4
- package/dist/routes/ts-rest/notification.js +0 -241
- package/dist/routes/ts-rest/notification.js.map +0 -1
- package/dist/routes/ts-rest/page-collab.d.ts +0 -29
- package/dist/routes/ts-rest/page-collab.js +0 -90
- package/dist/routes/ts-rest/page-collab.js.map +0 -1
- package/dist/routes/ts-rest/page-preview.d.ts +0 -26
- package/dist/routes/ts-rest/page-preview.js +0 -80
- package/dist/routes/ts-rest/page-preview.js.map +0 -1
- package/dist/routes/ts-rest/page.d.ts +0 -4
- package/dist/routes/ts-rest/page.js +0 -676
- package/dist/routes/ts-rest/page.js.map +0 -1
- package/dist/routes/ts-rest/presence.d.ts +0 -30
- package/dist/routes/ts-rest/presence.js +0 -155
- package/dist/routes/ts-rest/presence.js.map +0 -1
- package/dist/routes/ts-rest/revision.d.ts +0 -4
- package/dist/routes/ts-rest/revision.js +0 -240
- package/dist/routes/ts-rest/revision.js.map +0 -1
- package/dist/routes/ts-rest/search.d.ts +0 -4
- package/dist/routes/ts-rest/search.js +0 -121
- package/dist/routes/ts-rest/search.js.map +0 -1
- package/dist/routes/ts-rest/tokenAuth.d.ts +0 -4
- package/dist/routes/ts-rest/tokenAuth.js +0 -94
- package/dist/routes/ts-rest/tokenAuth.js.map +0 -1
- package/dist/routes/ts-rest/user.d.ts +0 -4
- package/dist/routes/ts-rest/user.js +0 -307
- package/dist/routes/ts-rest/user.js.map +0 -1
- package/dist/types/express.d.ts +0 -34
- package/dist/types/express.js +0 -50
- package/dist/types/express.js.map +0 -1
- package/dist/util/accessTokenParser.d.ts +0 -1
- package/dist/util/accessTokenParser.js +0 -34
- package/dist/util/accessTokenParser.js.map +0 -1
- package/dist/util/apiPaginate.d.ts +0 -11
- package/dist/util/apiPaginate.js +0 -33
- package/dist/util/apiPaginate.js.map +0 -1
- package/dist/util/apiResponse.d.ts +0 -9
- package/dist/util/apiResponse.js +0 -23
- package/dist/util/apiResponse.js.map +0 -1
- package/dist/util/auth.d.ts +0 -11
- package/dist/util/auth.js +0 -48
- package/dist/util/auth.js.map +0 -1
- package/dist/util/aws-config-migration.d.ts +0 -11
- package/dist/util/aws-config-migration.js +0 -68
- package/dist/util/aws-config-migration.js.map +0 -1
- package/dist/util/formUtil.d.ts +0 -2
- package/dist/util/formUtil.js +0 -15
- package/dist/util/formUtil.js.map +0 -1
- package/dist/util/githubAuth.d.ts +0 -2
- package/dist/util/githubAuth.js +0 -82
- package/dist/util/githubAuth.js.map +0 -1
- package/dist/util/googleAuth.d.ts +0 -2
- package/dist/util/googleAuth.js +0 -85
- package/dist/util/googleAuth.js.map +0 -1
- package/dist/util/mailer.d.ts +0 -7
- package/dist/util/mailer.js +0 -98
- package/dist/util/mailer.js.map +0 -1
- package/dist/util/page-status-migration.d.ts +0 -23
- package/dist/util/page-status-migration.js +0 -48
- package/dist/util/page-status-migration.js.map +0 -1
- package/dist/util/ssr.d.ts +0 -3
- package/dist/util/ssr.js +0 -9
- package/dist/util/ssr.js.map +0 -1
- package/dist/util/view.d.ts +0 -10
- package/dist/util/view.js +0 -99
- package/dist/util/view.js.map +0 -1
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wikilinkHtmlRecover = exports.WIKILINK_HTML_CANDIDATE_REGEX = exports.RECOVERABLE_DEPRECATED_TAGS = void 0;
|
|
4
|
+
exports.shouldRecoverSegment = shouldRecoverSegment;
|
|
5
|
+
exports.detectRecoverable = detectRecoverable;
|
|
6
|
+
exports.detectRecoverableOutsideCode = detectRecoverableOutsideCode;
|
|
7
|
+
exports.rewriteBody = rewriteBody;
|
|
8
|
+
exports.formatCollisions = formatCollisions;
|
|
9
|
+
const page_1 = require("../../models/page");
|
|
10
|
+
const types_1 = require("../types");
|
|
11
|
+
const code_mask_1 = require("./code-mask");
|
|
12
|
+
const published_current_revision_1 = require("./published-current-revision");
|
|
13
|
+
const helpers_1 = require("../helpers");
|
|
14
|
+
/**
|
|
15
|
+
* `wikilink-html-recover` (preflight layer) — undo the `wikilink-format`
|
|
16
|
+
* close-tag misfire.
|
|
17
|
+
*
|
|
18
|
+
* Before `font` / `center` / `marquee` / `blink` / `applet` were added to
|
|
19
|
+
* `KNOWN_HTML_ELEMENTS`, `wikilink-format` mistook the deprecated HTML close
|
|
20
|
+
* tags `</font>` etc. for v1 angle-bracket wikilinks and rewrote them to
|
|
21
|
+
* `[[/font]]` (§A). `wikilink-format` is recorded as applied and never
|
|
22
|
+
* re-runs, and the corrupted `[[/font]]` form no longer matches its detection
|
|
23
|
+
* regex, so it does not self-heal. This migration walks every published page
|
|
24
|
+
* and reverts the corrupted form `[[/<x>]]` back to the close tag `</x>` when:
|
|
25
|
+
*
|
|
26
|
+
* - `x` is a single path segment (no `/` inside), AND
|
|
27
|
+
* - `x` has no `|alias` segment, AND
|
|
28
|
+
* - `x` is one of the FIVE deprecated tags the misfire could have produced.
|
|
29
|
+
*
|
|
30
|
+
* Scope is the 5 tags, NOT every known HTML element: those 5 were the ONLY
|
|
31
|
+
* names absent from `KNOWN_HTML_ELEMENTS` when `wikilink-format` ran, so they
|
|
32
|
+
* are the only `</x>` that could ever have been mis-rewritten to `[[/x]]`.
|
|
33
|
+
* `section` / `div` / `br` / `img` / etc. were always known and never rewritten,
|
|
34
|
+
* so a `[[/section]]` in real data is a GENUINE wikilink and must be preserved.
|
|
35
|
+
*
|
|
36
|
+
* Genuine wikilinks are otherwise preserved too: `[[/foo/bar]]` (multi-segment),
|
|
37
|
+
* `[[/font|alias]]` (aliased), `[[/Font]]` (uppercase → case-sensitive page
|
|
38
|
+
* name), and `[[/wiki-page]]` (non-recoverable name) are all left untouched.
|
|
39
|
+
*
|
|
40
|
+
* ── Inherent ambiguity ───────────────────────────────────────────────
|
|
41
|
+
* `[[/font]]` could be a corrupted `</font>` OR a genuine wikilink to a real
|
|
42
|
+
* page literally at `/font`. They are indistinguishable from the text alone.
|
|
43
|
+
* We resolve this conservatively: a `[[/<x>]]` whose `/<x>` matches a **live
|
|
44
|
+
* content page** (published, not a redirect stub) is NOT reverted — it is
|
|
45
|
+
* reported by `detect` so an operator can decide manually. The revert therefore
|
|
46
|
+
* only touches occurrences that have no same-named live page to be mistaken for.
|
|
47
|
+
* Pages literally named after a deprecated tag (`/font`, `/center`, …) are very
|
|
48
|
+
* rare, but an absent-page `[[/font]]` is still reverted — see the docs Caution.
|
|
49
|
+
* ─────────────────────────────────────────────────────────────────────
|
|
50
|
+
*
|
|
51
|
+
* Like `wikilink-format`, every body rewrite routes through
|
|
52
|
+
* `ctx.rewritePageBody` (the `updatePage`-equivalent path) so `yjsState` /
|
|
53
|
+
* `yjsCheckpointAt` are nulled and an active editor's stale `Y.Doc` cannot
|
|
54
|
+
* silently revert the recovery (RFC-0008 §4.3.1).
|
|
55
|
+
*
|
|
56
|
+
* Idempotent: once reverted, `</x>` no longer matches this migration's
|
|
57
|
+
* detection regex (it scans for `[[/...]]`, not `</...>`), and a re-run of
|
|
58
|
+
* `wikilink-format` leaves `</x>` alone because `x` is now in
|
|
59
|
+
* `KNOWN_HTML_ELEMENTS`.
|
|
60
|
+
*/
|
|
61
|
+
/**
|
|
62
|
+
* The five deprecated/obsolete presentational tags absent from
|
|
63
|
+
* `KNOWN_HTML_ELEMENTS` when `wikilink-format` first ran — the ONLY close tags
|
|
64
|
+
* the misfire could have rewritten to `[[/x]]`. Recovery is scoped to exactly
|
|
65
|
+
* these so a genuine single-segment wikilink to any other element-named page
|
|
66
|
+
* (`[[/section]]`, `[[/div]]`, `[[/br]]`) is never destroyed.
|
|
67
|
+
*/
|
|
68
|
+
exports.RECOVERABLE_DEPRECATED_TAGS = new Set(['font', 'center', 'marquee', 'blink', 'applet']);
|
|
69
|
+
/**
|
|
70
|
+
* Matches a corrupted-wikilink candidate `[[/<segment>]]` with a single
|
|
71
|
+
* path segment and no alias. The capture group grabs the bare segment
|
|
72
|
+
* (`font` in `[[/font]]`). The `[^[\]|/]+` class excludes `[`, `]`, `|`, and
|
|
73
|
+
* `/`, so multi-segment (`[[/foo/bar]]`) and aliased (`[[/font|x]]`) forms
|
|
74
|
+
* never match here — only `shouldRecoverSegment` then filters by tag name.
|
|
75
|
+
*/
|
|
76
|
+
exports.WIKILINK_HTML_CANDIDATE_REGEX = /\[\[\/([^[\]|/]+)\]\]/g;
|
|
77
|
+
/**
|
|
78
|
+
* True iff `[[/<segment>]]` should be reverted to `</segment>`: the segment is
|
|
79
|
+
* a lowercase-ASCII identifier that is one of the FIVE deprecated tags the
|
|
80
|
+
* misfire could have produced. Uppercase (`/Font`), non-deprecated element
|
|
81
|
+
* names (`/section`, `/div`), and non-HTML names (`/wiki`) are genuine
|
|
82
|
+
* wikilinks and are left alone.
|
|
83
|
+
*/
|
|
84
|
+
function shouldRecoverSegment(segment) {
|
|
85
|
+
if (!/^[a-z][a-z0-9]*$/.test(segment))
|
|
86
|
+
return false;
|
|
87
|
+
return exports.RECOVERABLE_DEPRECATED_TAGS.has(segment);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Single-pass scan: locate every recoverable `[[/<deprecated-tag>]]` occurrence
|
|
91
|
+
* in `body`. Pure — no rewrite is applied here (the rewrite happens in
|
|
92
|
+
* `rewriteBody` after same-name page collisions have been resolved
|
|
93
|
+
* per-occurrence).
|
|
94
|
+
*/
|
|
95
|
+
function detectRecoverable(body) {
|
|
96
|
+
const occurrences = [];
|
|
97
|
+
exports.WIKILINK_HTML_CANDIDATE_REGEX.lastIndex = 0;
|
|
98
|
+
let match = exports.WIKILINK_HTML_CANDIDATE_REGEX.exec(body);
|
|
99
|
+
while (match !== null) {
|
|
100
|
+
const segment = match[1];
|
|
101
|
+
if (shouldRecoverSegment(segment)) {
|
|
102
|
+
occurrences.push({ raw: match[0], element: segment });
|
|
103
|
+
}
|
|
104
|
+
match = exports.WIKILINK_HTML_CANDIDATE_REGEX.exec(body);
|
|
105
|
+
}
|
|
106
|
+
return occurrences;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* `detectRecoverable` restricted to the non-code segments of `body`: a
|
|
110
|
+
* `[[/font]]` written as a code example (inside a fence or inline span) is NOT
|
|
111
|
+
* reported, so it never reaches the collision probe / pending verdict and is
|
|
112
|
+
* never reverted to `</font>`. This is the detect-side counterpart of routing
|
|
113
|
+
* the rewrite through `rewriteOutsideCode`; `rewrite` and `detect` are
|
|
114
|
+
* asymmetric (an async per-element collision probe sits between them), so they
|
|
115
|
+
* cannot share one `fn` — `detect` materialises occurrences here instead.
|
|
116
|
+
*
|
|
117
|
+
* `detectRecoverable` resets `lastIndex` at entry, so calling it once per
|
|
118
|
+
* non-code segment is safe (no cross-segment state). AD-1 (a stray backtick
|
|
119
|
+
* straddling `[[/font]]` so the token is absorbed into an inline-code span) is
|
|
120
|
+
* documented in the spec — an accepted false-negative.
|
|
121
|
+
*/
|
|
122
|
+
function detectRecoverableOutsideCode(body) {
|
|
123
|
+
return (0, code_mask_1.splitCodeSegments)(body)
|
|
124
|
+
.filter((s) => !s.code)
|
|
125
|
+
.flatMap((s) => detectRecoverable(s.text));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Rewrite `body`, reverting `[[/<x>]]` → `</x>` for every recoverable element.
|
|
129
|
+
* Elements in `skip` (those that collide with a live same-named page) are left
|
|
130
|
+
* untouched. Returns the input by reference when nothing changed so callers can
|
|
131
|
+
* cheap-skip.
|
|
132
|
+
*
|
|
133
|
+
* Code regions (fenced blocks + inline spans) are excluded via the shared
|
|
134
|
+
* `rewriteOutsideCode` primitive: a `[[/font]]` written as a code example is
|
|
135
|
+
* left byte-identical (never reverted) so a migration-doc example cannot be
|
|
136
|
+
* corrupted. The detect side mirrors this via `detectRecoverableOutsideCode`.
|
|
137
|
+
*/
|
|
138
|
+
function rewriteBody(body, skip) {
|
|
139
|
+
return (0, code_mask_1.rewriteOutsideCode)(body, (text) => text.replace(exports.WIKILINK_HTML_CANDIDATE_REGEX, (whole, segment) => {
|
|
140
|
+
if (!shouldRecoverSegment(segment))
|
|
141
|
+
return whole;
|
|
142
|
+
if (skip.has(segment))
|
|
143
|
+
return whole;
|
|
144
|
+
return `</${segment}>`;
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* A memoised live-content `/<element>` existence probe. The probe restricts to
|
|
149
|
+
* a **published, non-redirect** page so a leftover redirect stub (deleting
|
|
150
|
+
* `/font` leaves a published `redirect /trash/font` at `/font`) does NOT shadow
|
|
151
|
+
* a genuinely corrupted `[[/font]]`. `{ redirectTo: null }` matches both a
|
|
152
|
+
* missing field and an explicit null. `Page.exists` results are cached per
|
|
153
|
+
* element so a widely-used corrupted tag costs one probe across the whole walk.
|
|
154
|
+
*
|
|
155
|
+
* The status filter mirrors the walk itself (`forEachPublishedCurrentRevision`
|
|
156
|
+
* + `Page.isPublished`): `status: published` OR legacy `status: null`. As a
|
|
157
|
+
* PREFLIGHT run against a raw v1 DB (before any v2 boot writes `status`),
|
|
158
|
+
* a genuine `/font` page still carries `status: null`; matching only
|
|
159
|
+
* `STATUS_PUBLISHED` would miss it and let a real collision's `[[/font]]` be
|
|
160
|
+
* destroyed. The looser `$or` keeps the collision-skip firing in that window.
|
|
161
|
+
*/
|
|
162
|
+
function makePageExistsProbe(Page) {
|
|
163
|
+
const cache = new Map();
|
|
164
|
+
return async (element) => {
|
|
165
|
+
const cached = cache.get(element);
|
|
166
|
+
if (cached !== undefined)
|
|
167
|
+
return cached;
|
|
168
|
+
const exists = Boolean(await Page.exists({ path: `/${element}`, redirectTo: null, $or: [{ status: page_1.STATUS_PUBLISHED }, { status: null }] }));
|
|
169
|
+
cache.set(element, exists);
|
|
170
|
+
return exists;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Walk every published page's current revision body, detect corrupted
|
|
175
|
+
* `[[/<deprecated-tag>]]` occurrences, and for each candidate element check
|
|
176
|
+
* whether a live same-named page (`/<element>`) exists. Colliding elements are
|
|
177
|
+
* reported (not reverted); the rest are staged for rewrite.
|
|
178
|
+
*/
|
|
179
|
+
async function scan(ctx) {
|
|
180
|
+
const Page = ctx.crowi.model('Page');
|
|
181
|
+
const pageExists = makePageExistsProbe(Page);
|
|
182
|
+
const work = [];
|
|
183
|
+
const collidingElements = new Set();
|
|
184
|
+
const collisions = [];
|
|
185
|
+
let revertibleOccurrences = 0;
|
|
186
|
+
await (0, published_current_revision_1.forEachPublishedCurrentRevision)(ctx, { projection: 'body path' }, async ({ revision, pageId }) => {
|
|
187
|
+
const body = revision.body;
|
|
188
|
+
if (typeof body !== 'string' || !body.includes('[[/'))
|
|
189
|
+
return;
|
|
190
|
+
const pagePath = typeof revision.path === 'string' ? revision.path : undefined;
|
|
191
|
+
const occurrences = detectRecoverableOutsideCode(body);
|
|
192
|
+
if (occurrences.length === 0)
|
|
193
|
+
return;
|
|
194
|
+
// Partition this page's elements into collide-skip vs revertible. Each
|
|
195
|
+
// colliding element is recorded once per holding page so the report can
|
|
196
|
+
// name the page(s) an operator has to resolve by hand (a page may hold
|
|
197
|
+
// several colliding tags — dedupe within this page).
|
|
198
|
+
const skip = new Set();
|
|
199
|
+
let pageReverted = 0;
|
|
200
|
+
for (const occ of occurrences) {
|
|
201
|
+
if (await pageExists(occ.element)) {
|
|
202
|
+
if (!skip.has(occ.element))
|
|
203
|
+
collisions.push({ element: occ.element, pageId, pagePath });
|
|
204
|
+
skip.add(occ.element);
|
|
205
|
+
collidingElements.add(occ.element);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
pageReverted += 1;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (pageReverted === 0)
|
|
212
|
+
return;
|
|
213
|
+
const newBody = rewriteBody(body, skip);
|
|
214
|
+
work.push({ pageId, newBody });
|
|
215
|
+
revertibleOccurrences += pageReverted;
|
|
216
|
+
});
|
|
217
|
+
return { work, revertibleOccurrences, collidingElements, collisions };
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Render collision records into an operator-actionable string that names the
|
|
221
|
+
* holding page(s) per element, e.g.
|
|
222
|
+
* `/font (in /docs/setup, /guide); /center (in /notes)`. The element→pages
|
|
223
|
+
* mapping is preserved so the operator knows exactly which pages to open from
|
|
224
|
+
* the `migrate plan` output / boot warn log. Elements are sorted; per-element
|
|
225
|
+
* pages prefer the page path, falling back to the page id when the revision
|
|
226
|
+
* carried no path.
|
|
227
|
+
*/
|
|
228
|
+
function formatCollisions(collisions) {
|
|
229
|
+
const byElement = new Map();
|
|
230
|
+
for (const c of collisions) {
|
|
231
|
+
const label = c.pagePath ?? c.pageId;
|
|
232
|
+
const list = byElement.get(c.element);
|
|
233
|
+
if (list) {
|
|
234
|
+
if (!list.includes(label))
|
|
235
|
+
list.push(label);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
byElement.set(c.element, [label]);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return [...byElement.entries()]
|
|
242
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
243
|
+
.map(([element, pages]) => `/${element} (in ${pages.join(', ')})`)
|
|
244
|
+
.join('; ');
|
|
245
|
+
}
|
|
246
|
+
exports.wikilinkHtmlRecover = (0, types_1.defineMigration)({
|
|
247
|
+
id: 'wikilink-html-recover',
|
|
248
|
+
fromVersion: '2.1',
|
|
249
|
+
toVersion: '2.1',
|
|
250
|
+
layer: 'preflight',
|
|
251
|
+
// HTML close-tag repair only; no index impact. `isPending` walks the live
|
|
252
|
+
// corpus → re-triggers on new content. Cosmetic (see `severity`).
|
|
253
|
+
severity: 'cosmetic',
|
|
254
|
+
// `fromVersion: '2.1'` already sequences this after `wikilink-format`
|
|
255
|
+
// (`fromVersion: '1.x'`) — the registry orders by `fromVersion` FIRST
|
|
256
|
+
// (registry.ts compareMigrations), so the misfire's source is registered
|
|
257
|
+
// before this recovery regardless of `order`. No other `2.1` migration
|
|
258
|
+
// exists today, so `order` is cosmetic here.
|
|
259
|
+
order: 100,
|
|
260
|
+
description: 'Recover deprecated HTML close tags (</font> etc.) corrupted to wikilinks by the wikilink-format misfire',
|
|
261
|
+
/**
|
|
262
|
+
* Pending iff at least one published page's current revision body still
|
|
263
|
+
* carries a revertible `[[/<deprecated-tag>]]` whose element has no live
|
|
264
|
+
* same-named page. There is no index on `revision.body`, so this walks
|
|
265
|
+
* published pages (projecting `body`) and short-circuits at the first
|
|
266
|
+
* revertible occurrence.
|
|
267
|
+
*
|
|
268
|
+
* Colliding occurrences (`[[/font]]` with a live `/font` page) do NOT count
|
|
269
|
+
* as pending: this migration will never revert them, so reporting pending
|
|
270
|
+
* for them would block boot forever under preflight + `block`.
|
|
271
|
+
*/
|
|
272
|
+
isPending: async (ctx) => {
|
|
273
|
+
const Page = ctx.crowi.model('Page');
|
|
274
|
+
const pageExists = makePageExistsProbe(Page);
|
|
275
|
+
let pending = false;
|
|
276
|
+
await (0, published_current_revision_1.forEachPublishedCurrentRevision)(ctx, { projection: 'body' }, async ({ revision }) => {
|
|
277
|
+
const body = revision.body;
|
|
278
|
+
if (typeof body !== 'string' || !body.includes('[[/'))
|
|
279
|
+
return;
|
|
280
|
+
for (const occ of detectRecoverableOutsideCode(body)) {
|
|
281
|
+
if (!(await pageExists(occ.element))) {
|
|
282
|
+
pending = true;
|
|
283
|
+
return published_current_revision_1.STOP;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
return pending;
|
|
288
|
+
},
|
|
289
|
+
/**
|
|
290
|
+
* Full scan for `plan`: report how many pages / occurrences would be
|
|
291
|
+
* reverted plus, separately, the deprecated-tag names that were left alone
|
|
292
|
+
* because a live same-named page exists (the operator must resolve those
|
|
293
|
+
* by hand). Not called at boot.
|
|
294
|
+
*/
|
|
295
|
+
detect: async (ctx) => {
|
|
296
|
+
const { work, revertibleOccurrences, collidingElements, collisions } = await scan(ctx);
|
|
297
|
+
const colliding = [...collidingElements].sort();
|
|
298
|
+
const collisionNote = colliding.length > 0 ? `; ${colliding.length} element(s) skipped due to same-named pages: ${formatCollisions(collisions)}` : '';
|
|
299
|
+
return {
|
|
300
|
+
summary: `${work.length} page(s) hold ${revertibleOccurrences} recoverable HTML close tag(s)${collisionNote}`,
|
|
301
|
+
counts: {
|
|
302
|
+
pages: work.length,
|
|
303
|
+
occurrences: revertibleOccurrences,
|
|
304
|
+
collisions: colliding.length,
|
|
305
|
+
},
|
|
306
|
+
};
|
|
307
|
+
},
|
|
308
|
+
stages: [
|
|
309
|
+
{
|
|
310
|
+
name: 'recover-html-close-tags',
|
|
311
|
+
fn: async (ctx) => {
|
|
312
|
+
if (ctx.dryRun) {
|
|
313
|
+
const { work, revertibleOccurrences, collidingElements } = await scan(ctx);
|
|
314
|
+
return {
|
|
315
|
+
name: 'recover-html-close-tags',
|
|
316
|
+
transformed: 0,
|
|
317
|
+
stats: { wouldRevert: work.length, occurrences: revertibleOccurrences, collisions: collidingElements.size },
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
const actingUserId = await (0, helpers_1.resolveActingUserId)(ctx, 'wikilink-html-recover');
|
|
321
|
+
const { work, collidingElements, collisions } = await scan(ctx);
|
|
322
|
+
ctx.progress.setTotal(work.length);
|
|
323
|
+
let reverted = 0;
|
|
324
|
+
for (const page of work) {
|
|
325
|
+
await ctx.rewritePageBody(page.pageId, page.newBody, { userId: actingUserId });
|
|
326
|
+
reverted += 1;
|
|
327
|
+
ctx.progress.increment();
|
|
328
|
+
}
|
|
329
|
+
if (reverted > 0) {
|
|
330
|
+
ctx.logger.info(`wikilink-html-recover: reverted HTML close tags on ${reverted} page(s) via the updatePage path (yjsState invalidated)`);
|
|
331
|
+
}
|
|
332
|
+
if (collidingElements.size > 0) {
|
|
333
|
+
ctx.logger.warn(`wikilink-html-recover: left ${collidingElements.size} element(s) untouched because a same-named page exists: ${formatCollisions(collisions)} — open these pages and resolve them manually`);
|
|
334
|
+
}
|
|
335
|
+
return { name: 'recover-html-close-tags', transformed: reverted, stats: { collisions: collidingElements.size } };
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
],
|
|
339
|
+
});
|
|
340
|
+
//# sourceMappingURL=wikilink-html-recover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wikilink-html-recover.js","sourceRoot":"","sources":["../../../src/migration/migrations/wikilink-html-recover.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,14 @@ export declare class MigrationRegistry {
|
|
|
4
4
|
constructor(defs: MigrationDefinition[]);
|
|
5
5
|
/** All migrations in version-range + `order` sequence. */
|
|
6
6
|
all(): readonly MigrationDefinition[];
|
|
7
|
-
/**
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Migrations of a given layer, in order. The return type narrows by the
|
|
9
|
+
* `layer` literal so `byLayer('preflight')` yields `severity`-bearing
|
|
10
|
+
* definitions (and `byLayer('boot')` ones without).
|
|
11
|
+
*/
|
|
12
|
+
byLayer<L extends MigrationLayer>(layer: L): readonly Extract<MigrationDefinition, {
|
|
13
|
+
layer: L;
|
|
14
|
+
}>[];
|
|
9
15
|
/** Look up a migration by id, or undefined. */
|
|
10
16
|
get(id: string): MigrationDefinition | undefined;
|
|
11
17
|
/** The latest reachable target version across all registered migrations. */
|
|
@@ -73,7 +73,11 @@ class MigrationRegistry {
|
|
|
73
73
|
all() {
|
|
74
74
|
return this.migrations;
|
|
75
75
|
}
|
|
76
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Migrations of a given layer, in order. The return type narrows by the
|
|
78
|
+
* `layer` literal so `byLayer('preflight')` yields `severity`-bearing
|
|
79
|
+
* definitions (and `byLayer('boot')` ones without).
|
|
80
|
+
*/
|
|
77
81
|
byLayer(layer) {
|
|
78
82
|
return this.migrations.filter((m) => m.layer === layer);
|
|
79
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/migration/registry.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/migration/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,10 @@ export interface RunBootMigrationsOptions {
|
|
|
25
25
|
}
|
|
26
26
|
export interface RunBootMigrationsResult {
|
|
27
27
|
appliedBootIds: string[];
|
|
28
|
-
|
|
28
|
+
/** Pending `severity:'blocking'` preflight migrations (gate boot under `block`). */
|
|
29
|
+
pendingBlockingIds: string[];
|
|
30
|
+
/** Pending `severity:'cosmetic'` preflight migrations (never gate boot). */
|
|
31
|
+
pendingCosmeticIds: string[];
|
|
29
32
|
policy: PreflightUnappliedPolicy;
|
|
30
33
|
}
|
|
31
34
|
export declare function runBootMigrations(crowi: Crowi, options?: RunBootMigrationsOptions): Promise<RunBootMigrationsResult>;
|
|
@@ -13,21 +13,25 @@ const runner_1 = require("./runner");
|
|
|
13
13
|
* 1. Apply every `layer:'boot'` migration that `isPending` flags, in
|
|
14
14
|
* version-range + `order` sequence, appending each result to the
|
|
15
15
|
* `migrationApplications` audit log.
|
|
16
|
-
* 2. Probe every `layer:'preflight'` migration with `isPending` (cheap)
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* 2. Probe every `layer:'preflight'` migration with `isPending` (cheap) and
|
|
17
|
+
* split the pending ones by `severity` (§4.2.7 amendment / §12.7):
|
|
18
|
+
* - `cosmetic` pending → always warn-and-continue (policy ignored);
|
|
19
|
+
* - `blocking` pending → refuse boot under `block` (the default), or
|
|
20
|
+
* warn-and-continue under `warn` — per `preflightUnappliedPolicy`.
|
|
19
21
|
*
|
|
20
|
-
* `block` is the safe default (§4.2.7)
|
|
21
|
-
* before v2 boot, *every replica fail-fasts*
|
|
22
|
-
* autoIndex would otherwise hit E11000 (§9) on
|
|
23
|
-
* operator then runs `crowi-admin migrate apply`
|
|
24
|
-
* up.
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* is what matters. Phase 2 adds `page-status-default` as the first boot
|
|
28
|
-
* migration.
|
|
22
|
+
* `block` is the safe default (§4.2.7) for `blocking` migrations: if
|
|
23
|
+
* `user-unique-prepare` hasn't run before v2 boot, *every replica fail-fasts*
|
|
24
|
+
* with a clear error before autoIndex would otherwise hit E11000 (§9) on
|
|
25
|
+
* not-yet-deduped data. The operator then runs `crowi-admin migrate apply`
|
|
26
|
+
* once and brings the cluster up. A pending `cosmetic` migration never blocks
|
|
27
|
+
* boot: its `isPending` re-scans the live corpus, so new content could keep it
|
|
28
|
+
* pending forever and a uniform block would deadlock the cluster (BUG 2).
|
|
29
29
|
*/
|
|
30
30
|
const POLICY_ENV_VAR = 'MIGRATION_PREFLIGHT_UNAPPLIED_POLICY';
|
|
31
|
+
/** Compile-time exhaustiveness guard (throws if a future `severity` reaches it). */
|
|
32
|
+
function assertNever(value) {
|
|
33
|
+
throw new Error(`[crowi:migration] unhandled migration severity: ${String(value)}`);
|
|
34
|
+
}
|
|
31
35
|
/** Error thrown when boot is refused under the `block` policy. */
|
|
32
36
|
class PreflightBlockedError extends Error {
|
|
33
37
|
pendingIds;
|
|
@@ -74,22 +78,50 @@ async function runBootMigrations(crowi, options = {}) {
|
|
|
74
78
|
appliedBootIds.push(def.id);
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
|
-
// ── 2. Probe preflight migrations (cheap isPending) ──
|
|
78
|
-
|
|
81
|
+
// ── 2. Probe preflight migrations (cheap isPending), split by severity ──
|
|
82
|
+
//
|
|
83
|
+
// Every preflight migration is still probed (RFC-0008 §6.1/§6.2: inspection
|
|
84
|
+
// = source of truth). What changed is only the *consequence* of a pending
|
|
85
|
+
// verdict, decided per-migration by `severity`:
|
|
86
|
+
// - `cosmetic` pending → always warn-and-continue (global knob ignored);
|
|
87
|
+
// - `blocking` pending → refuse boot under `block`, warn-and-continue under
|
|
88
|
+
// `warn` (the existing emergency override).
|
|
89
|
+
const pendingBlockingIds = [];
|
|
90
|
+
const pendingCosmeticIds = [];
|
|
79
91
|
for (const def of registry.byLayer('preflight')) {
|
|
80
|
-
if (await runner.isPending(def))
|
|
81
|
-
|
|
92
|
+
if (!(await runner.isPending(def)))
|
|
93
|
+
continue;
|
|
94
|
+
switch (def.severity) {
|
|
95
|
+
case 'blocking':
|
|
96
|
+
pendingBlockingIds.push(def.id);
|
|
97
|
+
break;
|
|
98
|
+
case 'cosmetic':
|
|
99
|
+
pendingCosmeticIds.push(def.id);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
// Exhaustive: a new severity must consciously pick a boot-gate side
|
|
103
|
+
// rather than silently fall through to non-blocking (fail-open).
|
|
104
|
+
assertNever(def.severity);
|
|
82
105
|
}
|
|
83
106
|
}
|
|
84
|
-
|
|
107
|
+
// Cosmetic pending always warns and continues, regardless of policy. Emitted
|
|
108
|
+
// before the blocking decision so it is observable even on the block-throw
|
|
109
|
+
// path (the result object is not returned then). A distinct message per
|
|
110
|
+
// severity keeps operator grep / alert rules simple.
|
|
111
|
+
if (pendingCosmeticIds.length > 0) {
|
|
112
|
+
console.warn(`[crowi:migration] WARNING: ${pendingCosmeticIds.length} cosmetic preflight migration(s) unapplied ` +
|
|
113
|
+
`[${pendingCosmeticIds.join(', ')}] — body display only; boot continues.`);
|
|
114
|
+
}
|
|
115
|
+
if (pendingBlockingIds.length > 0) {
|
|
85
116
|
if (policy === 'block') {
|
|
86
|
-
// Whole-cluster fail-fast (§4.2.7).
|
|
87
|
-
|
|
117
|
+
// Whole-cluster fail-fast for blocking migrations only (§4.2.7). The
|
|
118
|
+
// result object (and its severity split) is not returned on this path.
|
|
119
|
+
throw new PreflightBlockedError(pendingBlockingIds);
|
|
88
120
|
}
|
|
89
|
-
// warn: operator explicitly accepts the risk.
|
|
90
|
-
console.warn(`[crowi:migration] WARNING: ${
|
|
91
|
-
`
|
|
121
|
+
// warn: operator explicitly accepts the data-integrity risk.
|
|
122
|
+
console.warn(`[crowi:migration] WARNING: ${pendingBlockingIds.length} preflight migration(s) unapplied ` +
|
|
123
|
+
`[${pendingBlockingIds.join(', ')}] — data-integrity risk; autoIndex may fail with E11000.`);
|
|
92
124
|
}
|
|
93
|
-
return { appliedBootIds,
|
|
125
|
+
return { appliedBootIds, pendingBlockingIds, pendingCosmeticIds, policy };
|
|
94
126
|
}
|
|
95
127
|
//# sourceMappingURL=run-boot-migrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-boot-migrations.js","sourceRoot":"","sources":["../../src/migration/run-boot-migrations.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"run-boot-migrations.js","sourceRoot":"","sources":["../../src/migration/run-boot-migrations.ts"],"names":[],"mappings":"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"}
|
package/dist/migration/runner.js
CHANGED
|
@@ -44,7 +44,14 @@ function buildContext(crowi, opts) {
|
|
|
44
44
|
// next onLoadDocument rebuilds the Y.Doc from the new body (§4.3.1).
|
|
45
45
|
const actingUserId = options?.userId ?? page.lastUpdateUser?.toString?.() ?? page.creator?.toString?.();
|
|
46
46
|
const user = actingUserId ? await User.findById(actingUserId).exec() : null;
|
|
47
|
-
|
|
47
|
+
// preserveTimestamps: a body-rewrite migration is a non-destructive,
|
|
48
|
+
// forward-only fixup. It must NOT bump the page's `updatedAt` (which would
|
|
49
|
+
// reorder recently-updated lists) nor overwrite `lastUpdateUser` with the
|
|
50
|
+
// migration bot. Preserving in place (rather than bumping then restoring)
|
|
51
|
+
// also keeps the search index consistent: the `update` event fires with the
|
|
52
|
+
// original `updatedAt`, so `indexPageInSearch` indexes the original value
|
|
53
|
+
// and never diverges from Mongo (RFC-0008 follow-up — see the migration spec).
|
|
54
|
+
await Page.updatePage(page, newBody, user, { preserveTimestamps: true });
|
|
48
55
|
};
|
|
49
56
|
const invalidateYjsPersistence = async (pageIds) => {
|
|
50
57
|
if (opts.dryRun || pageIds.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migration/runner.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,kDAA0B;AAgB1B,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;AA2C9C,mFAAmF;AACtE,QAAA,YAAY,GAAqB;IAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;IACzB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;IAC1B,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;CAC1B,CAAC;AAEF,gFAAgF;AAChF,SAAS,aAAa;IACpB,OAAO;QACL,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACnD,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACpD,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC;QACjF,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC;KACpF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,KAAY,EACZ,IAAmH;IAEnH,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAiB,CAAC;IAEzD,MAAM,eAAe,GAAG,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,OAAgC,EAAiB,EAAE;QACjH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,sBAAsB,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QACD,4DAA4D;QAC5D,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,YAAY,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;QACxG,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migration/runner.ts"],"names":[],"mappings":"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"}
|