@crowi/api 2.0.0-alpha.0
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/LICENSE +21 -0
- package/dist/app.d.ts +8 -0
- package/dist/app.js +65 -0
- package/dist/app.js.map +1 -0
- package/dist/collab/attach.d.ts +33 -0
- package/dist/collab/attach.js +341 -0
- package/dist/collab/attach.js.map +1 -0
- package/dist/collab/extension-redis.d.ts +25 -0
- package/dist/collab/extension-redis.js +133 -0
- package/dist/collab/extension-redis.js.map +1 -0
- package/dist/common/functions/path2name.d.ts +1 -0
- package/dist/common/functions/path2name.js +22 -0
- package/dist/common/functions/path2name.js.map +1 -0
- package/dist/common/functions/renderIcon.d.ts +1 -0
- package/dist/common/functions/renderIcon.js +9 -0
- package/dist/common/functions/renderIcon.js.map +1 -0
- package/dist/controllers/admin.d.ts +3 -0
- package/dist/controllers/admin.js +474 -0
- package/dist/controllers/admin.js.map +1 -0
- package/dist/controllers/attachment.d.ts +4 -0
- package/dist/controllers/attachment.js +200 -0
- package/dist/controllers/attachment.js.map +1 -0
- package/dist/controllers/backlink.d.ts +3 -0
- package/dist/controllers/backlink.js +42 -0
- package/dist/controllers/backlink.js.map +1 -0
- package/dist/controllers/bookmark.d.ts +3 -0
- package/dist/controllers/bookmark.js +100 -0
- package/dist/controllers/bookmark.js.map +1 -0
- package/dist/controllers/comment.d.ts +3 -0
- package/dist/controllers/comment.js +111 -0
- package/dist/controllers/comment.js.map +1 -0
- package/dist/controllers/index.d.ts +25 -0
- package/dist/controllers/index.js +44 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/installer.d.ts +3 -0
- package/dist/controllers/installer.js +48 -0
- package/dist/controllers/installer.js.map +1 -0
- package/dist/controllers/login.d.ts +4 -0
- package/dist/controllers/login.js +438 -0
- package/dist/controllers/login.js.map +1 -0
- package/dist/controllers/logout.d.ts +5 -0
- package/dist/controllers/logout.js +11 -0
- package/dist/controllers/logout.js.map +1 -0
- package/dist/controllers/me.d.ts +4 -0
- package/dist/controllers/me.js +369 -0
- package/dist/controllers/me.js.map +1 -0
- package/dist/controllers/notification.d.ts +3 -0
- package/dist/controllers/notification.js +88 -0
- package/dist/controllers/notification.js.map +1 -0
- package/dist/controllers/page.d.ts +3 -0
- package/dist/controllers/page.js +881 -0
- package/dist/controllers/page.js.map +1 -0
- package/dist/controllers/revision.d.ts +3 -0
- package/dist/controllers/revision.js +91 -0
- package/dist/controllers/revision.js.map +1 -0
- package/dist/controllers/search.d.ts +3 -0
- package/dist/controllers/search.js +93 -0
- package/dist/controllers/search.js.map +1 -0
- package/dist/controllers/share.d.ts +3 -0
- package/dist/controllers/share.js +207 -0
- package/dist/controllers/share.js.map +1 -0
- package/dist/controllers/shareAccess.d.ts +3 -0
- package/dist/controllers/shareAccess.js +28 -0
- package/dist/controllers/shareAccess.js.map +1 -0
- package/dist/controllers/slack.d.ts +3 -0
- package/dist/controllers/slack.js +87 -0
- package/dist/controllers/slack.js.map +1 -0
- package/dist/controllers/tokenAuth.d.ts +10 -0
- package/dist/controllers/tokenAuth.js +292 -0
- package/dist/controllers/tokenAuth.js.map +1 -0
- package/dist/controllers/user.d.ts +3 -0
- package/dist/controllers/user.js +67 -0
- package/dist/controllers/user.js.map +1 -0
- package/dist/controllers/version.d.ts +4 -0
- package/dist/controllers/version.js +19 -0
- package/dist/controllers/version.js.map +1 -0
- package/dist/crowi/express-init.d.ts +4 -0
- package/dist/crowi/express-init.js +101 -0
- package/dist/crowi/express-init.js.map +1 -0
- package/dist/crowi/index.d.ts +245 -0
- package/dist/crowi/index.js +726 -0
- package/dist/crowi/index.js.map +1 -0
- package/dist/events/activity.d.ts +7 -0
- package/dist/events/activity.js +15 -0
- package/dist/events/activity.js.map +1 -0
- package/dist/events/bookmark.d.ts +8 -0
- package/dist/events/bookmark.js +16 -0
- package/dist/events/bookmark.js.map +1 -0
- package/dist/events/comment.d.ts +6 -0
- package/dist/events/comment.js +14 -0
- package/dist/events/comment.js.map +1 -0
- package/dist/events/config.d.ts +6 -0
- package/dist/events/config.js +12 -0
- package/dist/events/config.js.map +1 -0
- package/dist/events/index.d.ts +17 -0
- package/dist/events/index.js +22 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/mention-dispatch.d.ts +44 -0
- package/dist/events/mention-dispatch.js +151 -0
- package/dist/events/mention-dispatch.js.map +1 -0
- package/dist/events/notification.d.ts +7 -0
- package/dist/events/notification.js +15 -0
- package/dist/events/notification.js.map +1 -0
- package/dist/events/page.d.ts +44 -0
- package/dist/events/page.js +134 -0
- package/dist/events/page.js.map +1 -0
- package/dist/events/render-cache.d.ts +24 -0
- package/dist/events/render-cache.js +63 -0
- package/dist/events/render-cache.js.map +1 -0
- package/dist/events/user.d.ts +9 -0
- package/dist/events/user.js +39 -0
- package/dist/events/user.js.map +1 -0
- package/dist/form/admin/app.d.ts +2 -0
- package/dist/form/admin/app.js +9 -0
- package/dist/form/admin/app.js.map +1 -0
- package/dist/form/admin/auth.d.ts +2 -0
- package/dist/form/admin/auth.js +9 -0
- package/dist/form/admin/auth.js.map +1 -0
- package/dist/form/admin/aws.d.ts +2 -0
- package/dist/form/admin/aws.js +13 -0
- package/dist/form/admin/aws.js.map +1 -0
- package/dist/form/admin/github.d.ts +2 -0
- package/dist/form/admin/github.js +15 -0
- package/dist/form/admin/github.js.map +1 -0
- package/dist/form/admin/google.d.ts +2 -0
- package/dist/form/admin/google.js +13 -0
- package/dist/form/admin/google.js.map +1 -0
- package/dist/form/admin/mail.d.ts +2 -0
- package/dist/form/admin/mail.js +13 -0
- package/dist/form/admin/mail.js.map +1 -0
- package/dist/form/admin/sec.d.ts +2 -0
- package/dist/form/admin/sec.js +10 -0
- package/dist/form/admin/sec.js.map +1 -0
- package/dist/form/admin/slackSetting.d.ts +2 -0
- package/dist/form/admin/slackSetting.js +13 -0
- package/dist/form/admin/slackSetting.js.map +1 -0
- package/dist/form/admin/userEdit.d.ts +2 -0
- package/dist/form/admin/userEdit.js +9 -0
- package/dist/form/admin/userEdit.js.map +1 -0
- package/dist/form/admin/userInvite.d.ts +2 -0
- package/dist/form/admin/userInvite.js +9 -0
- package/dist/form/admin/userInvite.js.map +1 -0
- package/dist/form/comment.d.ts +2 -0
- package/dist/form/comment.js +9 -0
- package/dist/form/comment.js.map +1 -0
- package/dist/form/index.d.ts +25 -0
- package/dist/form/index.js +48 -0
- package/dist/form/index.js.map +1 -0
- package/dist/form/invited.d.ts +2 -0
- package/dist/form/invited.js +13 -0
- package/dist/form/invited.js.map +1 -0
- package/dist/form/login.d.ts +2 -0
- package/dist/form/login.js +11 -0
- package/dist/form/login.js.map +1 -0
- package/dist/form/me/apiToken.d.ts +2 -0
- package/dist/form/me/apiToken.js +9 -0
- package/dist/form/me/apiToken.js.map +1 -0
- package/dist/form/me/password.d.ts +2 -0
- package/dist/form/me/password.js +11 -0
- package/dist/form/me/password.js.map +1 -0
- package/dist/form/me/user.d.ts +2 -0
- package/dist/form/me/user.js +9 -0
- package/dist/form/me/user.js.map +1 -0
- package/dist/form/register.d.ts +2 -0
- package/dist/form/register.js +13 -0
- package/dist/form/register.js.map +1 -0
- package/dist/form/revision.d.ts +2 -0
- package/dist/form/revision.js +13 -0
- package/dist/form/revision.js.map +1 -0
- package/dist/hono/app.d.ts +19 -0
- package/dist/hono/app.js +21 -0
- package/dist/hono/app.js.map +1 -0
- package/dist/hono/handlers/_helpers/errors.d.ts +61 -0
- package/dist/hono/handlers/_helpers/errors.js +51 -0
- package/dist/hono/handlers/_helpers/errors.js.map +1 -0
- package/dist/hono/handlers/_helpers/user-shape.d.ts +46 -0
- package/dist/hono/handlers/_helpers/user-shape.js +23 -0
- package/dist/hono/handlers/_helpers/user-shape.js.map +1 -0
- package/dist/hono/handlers/access-token.d.ts +221 -0
- package/dist/hono/handlers/access-token.js +113 -0
- package/dist/hono/handlers/access-token.js.map +1 -0
- package/dist/hono/handlers/activation.d.ts +117 -0
- package/dist/hono/handlers/activation.js +77 -0
- package/dist/hono/handlers/activation.js.map +1 -0
- package/dist/hono/handlers/admin/app.d.ts +123 -0
- package/dist/hono/handlers/admin/app.js +76 -0
- package/dist/hono/handlers/admin/app.js.map +1 -0
- package/dist/hono/handlers/admin/auth.d.ts +127 -0
- package/dist/hono/handlers/admin/auth.js +91 -0
- package/dist/hono/handlers/admin/auth.js.map +1 -0
- package/dist/hono/handlers/admin/mail.d.ts +168 -0
- package/dist/hono/handlers/admin/mail.js +76 -0
- package/dist/hono/handlers/admin/mail.js.map +1 -0
- package/dist/hono/handlers/admin/plugins.d.ts +409 -0
- package/dist/hono/handlers/admin/plugins.js +257 -0
- package/dist/hono/handlers/admin/plugins.js.map +1 -0
- package/dist/hono/handlers/admin/search.d.ts +57 -0
- package/dist/hono/handlers/admin/search.js +55 -0
- package/dist/hono/handlers/admin/search.js.map +1 -0
- package/dist/hono/handlers/admin/security.d.ts +112 -0
- package/dist/hono/handlers/admin/security.js +71 -0
- package/dist/hono/handlers/admin/security.js.map +1 -0
- package/dist/hono/handlers/admin/share.d.ts +106 -0
- package/dist/hono/handlers/admin/share.js +55 -0
- package/dist/hono/handlers/admin/share.js.map +1 -0
- package/dist/hono/handlers/admin/storage.d.ts +55 -0
- package/dist/hono/handlers/admin/storage.js +40 -0
- package/dist/hono/handlers/admin/storage.js.map +1 -0
- package/dist/hono/handlers/admin/users.d.ts +1230 -0
- package/dist/hono/handlers/admin/users.js +316 -0
- package/dist/hono/handlers/admin/users.js.map +1 -0
- package/dist/hono/handlers/adminCrypto.d.ts +110 -0
- package/dist/hono/handlers/adminCrypto.js +151 -0
- package/dist/hono/handlers/adminCrypto.js.map +1 -0
- package/dist/hono/handlers/app.d.ts +26 -0
- package/dist/hono/handlers/app.js +34 -0
- package/dist/hono/handlers/app.js.map +1 -0
- package/dist/hono/handlers/attachment-stream.d.ts +4 -0
- package/dist/hono/handlers/attachment-stream.js +211 -0
- package/dist/hono/handlers/attachment-stream.js.map +1 -0
- package/dist/hono/handlers/attachment.d.ts +687 -0
- package/dist/hono/handlers/attachment.js +566 -0
- package/dist/hono/handlers/attachment.js.map +1 -0
- package/dist/hono/handlers/autocomplete.d.ts +160 -0
- package/dist/hono/handlers/autocomplete.js +181 -0
- package/dist/hono/handlers/autocomplete.js.map +1 -0
- package/dist/hono/handlers/backlink.d.ts +78 -0
- package/dist/hono/handlers/backlink.js +93 -0
- package/dist/hono/handlers/backlink.js.map +1 -0
- package/dist/hono/handlers/bookmark.d.ts +558 -0
- package/dist/hono/handlers/bookmark.js +166 -0
- package/dist/hono/handlers/bookmark.js.map +1 -0
- package/dist/hono/handlers/comment.d.ts +231 -0
- package/dist/hono/handlers/comment.js +191 -0
- package/dist/hono/handlers/comment.js.map +1 -0
- package/dist/hono/handlers/draft.d.ts +136 -0
- package/dist/hono/handlers/draft.js +191 -0
- package/dist/hono/handlers/draft.js.map +1 -0
- package/dist/hono/handlers/emailChange.d.ts +124 -0
- package/dist/hono/handlers/emailChange.js +79 -0
- package/dist/hono/handlers/emailChange.js.map +1 -0
- package/dist/hono/handlers/installer.d.ts +94 -0
- package/dist/hono/handlers/installer.js +93 -0
- package/dist/hono/handlers/installer.js.map +1 -0
- package/dist/hono/handlers/inviteAccept.d.ts +180 -0
- package/dist/hono/handlers/inviteAccept.js +94 -0
- package/dist/hono/handlers/inviteAccept.js.map +1 -0
- package/dist/hono/handlers/me.d.ts +401 -0
- package/dist/hono/handlers/me.js +390 -0
- package/dist/hono/handlers/me.js.map +1 -0
- package/dist/hono/handlers/notification.d.ts +274 -0
- package/dist/hono/handlers/notification.js +224 -0
- package/dist/hono/handlers/notification.js.map +1 -0
- package/dist/hono/handlers/oauth.d.ts +299 -0
- package/dist/hono/handlers/oauth.js +443 -0
- package/dist/hono/handlers/oauth.js.map +1 -0
- package/dist/hono/handlers/page-collab.d.ts +79 -0
- package/dist/hono/handlers/page-collab.js +98 -0
- package/dist/hono/handlers/page-collab.js.map +1 -0
- package/dist/hono/handlers/page-preview.d.ts +48 -0
- package/dist/hono/handlers/page-preview.js +83 -0
- package/dist/hono/handlers/page-preview.js.map +1 -0
- package/dist/hono/handlers/page.d.ts +2059 -0
- package/dist/hono/handlers/page.js +793 -0
- package/dist/hono/handlers/page.js.map +1 -0
- package/dist/hono/handlers/passwordReset.d.ts +181 -0
- package/dist/hono/handlers/passwordReset.js +101 -0
- package/dist/hono/handlers/passwordReset.js.map +1 -0
- package/dist/hono/handlers/presence.d.ts +178 -0
- package/dist/hono/handlers/presence.js +163 -0
- package/dist/hono/handlers/presence.js.map +1 -0
- package/dist/hono/handlers/revision.d.ts +345 -0
- package/dist/hono/handlers/revision.js +202 -0
- package/dist/hono/handlers/revision.js.map +1 -0
- package/dist/hono/handlers/search.d.ts +208 -0
- package/dist/hono/handlers/search.js +152 -0
- package/dist/hono/handlers/search.js.map +1 -0
- package/dist/hono/handlers/tokenAuth.d.ts +369 -0
- package/dist/hono/handlers/tokenAuth.js +240 -0
- package/dist/hono/handlers/tokenAuth.js.map +1 -0
- package/dist/hono/handlers/user.d.ts +710 -0
- package/dist/hono/handlers/user.js +212 -0
- package/dist/hono/handlers/user.js.map +1 -0
- package/dist/hono/index.d.ts +289 -0
- package/dist/hono/index.js +240 -0
- package/dist/hono/index.js.map +1 -0
- package/dist/hono/middleware/admin.d.ts +5 -0
- package/dist/hono/middleware/admin.js +34 -0
- package/dist/hono/middleware/admin.js.map +1 -0
- package/dist/hono/middleware/auth.d.ts +54 -0
- package/dist/hono/middleware/auth.js +142 -0
- package/dist/hono/middleware/auth.js.map +1 -0
- package/dist/hono/middleware/cors.d.ts +3 -0
- package/dist/hono/middleware/cors.js +86 -0
- package/dist/hono/middleware/cors.js.map +1 -0
- package/dist/hono/middleware/default-hook.d.ts +8 -0
- package/dist/hono/middleware/default-hook.js +17 -0
- package/dist/hono/middleware/default-hook.js.map +1 -0
- package/dist/hono/middleware/error-handler.d.ts +2 -0
- package/dist/hono/middleware/error-handler.js +20 -0
- package/dist/hono/middleware/error-handler.js.map +1 -0
- package/dist/hono/middleware/rate-limit.d.ts +57 -0
- package/dist/hono/middleware/rate-limit.js +42 -0
- package/dist/hono/middleware/rate-limit.js.map +1 -0
- package/dist/hono/middleware/require-scope.d.ts +50 -0
- package/dist/hono/middleware/require-scope.js +64 -0
- package/dist/hono/middleware/require-scope.js.map +1 -0
- package/dist/hono/path-rewrite.d.ts +15 -0
- package/dist/hono/path-rewrite.js +59 -0
- package/dist/hono/path-rewrite.js.map +1 -0
- package/dist/mail/i18n/en.d.ts +2 -0
- package/dist/mail/i18n/en.js +66 -0
- package/dist/mail/i18n/en.js.map +1 -0
- package/dist/mail/i18n/index.d.ts +46 -0
- package/dist/mail/i18n/index.js +31 -0
- package/dist/mail/i18n/index.js.map +1 -0
- package/dist/mail/i18n/ja.d.ts +2 -0
- package/dist/mail/i18n/ja.js +66 -0
- package/dist/mail/i18n/ja.js.map +1 -0
- package/dist/mcp/attach.d.ts +25 -0
- package/dist/mcp/attach.js +104 -0
- package/dist/mcp/attach.js.map +1 -0
- package/dist/mcp/dispatch.d.ts +59 -0
- package/dist/mcp/dispatch.js +70 -0
- package/dist/mcp/dispatch.js.map +1 -0
- package/dist/mcp/result.d.ts +40 -0
- package/dist/mcp/result.js +78 -0
- package/dist/mcp/result.js.map +1 -0
- package/dist/mcp/server.d.ts +67 -0
- package/dist/mcp/server.js +113 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/page.d.ts +2 -0
- package/dist/mcp/tools/page.js +256 -0
- package/dist/mcp/tools/page.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +2 -0
- package/dist/mcp/tools/search.js +36 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/middlewares/accessTokenParser.d.ts +4 -0
- package/dist/middlewares/accessTokenParser.js +29 -0
- package/dist/middlewares/accessTokenParser.js.map +1 -0
- package/dist/middlewares/adminRequired.d.ts +10 -0
- package/dist/middlewares/adminRequired.js +35 -0
- package/dist/middlewares/adminRequired.js.map +1 -0
- package/dist/middlewares/applicationInstalled.d.ts +3 -0
- package/dist/middlewares/applicationInstalled.js +20 -0
- package/dist/middlewares/applicationInstalled.js.map +1 -0
- package/dist/middlewares/applicationNotInstalled.d.ts +3 -0
- package/dist/middlewares/applicationNotInstalled.js +13 -0
- package/dist/middlewares/applicationNotInstalled.js.map +1 -0
- package/dist/middlewares/basicAuth.d.ts +4 -0
- package/dist/middlewares/basicAuth.js +23 -0
- package/dist/middlewares/basicAuth.js.map +1 -0
- package/dist/middlewares/csrfVerify.d.ts +4 -0
- package/dist/middlewares/csrfVerify.js +24 -0
- package/dist/middlewares/csrfVerify.js.map +1 -0
- package/dist/middlewares/encodeSpace.d.ts +3 -0
- package/dist/middlewares/encodeSpace.js +14 -0
- package/dist/middlewares/encodeSpace.js.map +1 -0
- package/dist/middlewares/fileAccessRightOrLoginRequired.d.ts +4 -0
- package/dist/middlewares/fileAccessRightOrLoginRequired.js +29 -0
- package/dist/middlewares/fileAccessRightOrLoginRequired.js.map +1 -0
- package/dist/middlewares/index.d.ts +16 -0
- package/dist/middlewares/index.js +30 -0
- package/dist/middlewares/index.js.map +1 -0
- package/dist/middlewares/jwtAdminRequired.d.ts +8 -0
- package/dist/middlewares/jwtAdminRequired.js +35 -0
- package/dist/middlewares/jwtAdminRequired.js.map +1 -0
- package/dist/middlewares/jwtAuth.d.ts +4 -0
- package/dist/middlewares/jwtAuth.js +104 -0
- package/dist/middlewares/jwtAuth.js.map +1 -0
- package/dist/middlewares/loginChecker.d.ts +4 -0
- package/dist/middlewares/loginChecker.js +32 -0
- package/dist/middlewares/loginChecker.js.map +1 -0
- package/dist/middlewares/loginRequired.d.ts +4 -0
- package/dist/middlewares/loginRequired.js +88 -0
- package/dist/middlewares/loginRequired.js.map +1 -0
- package/dist/migration/cli-api.d.ts +83 -0
- package/dist/migration/cli-api.js +128 -0
- package/dist/migration/cli-api.js.map +1 -0
- package/dist/migration/migrations/index.d.ts +12 -0
- package/dist/migration/migrations/index.js +24 -0
- package/dist/migration/migrations/index.js.map +1 -0
- package/dist/migration/migrations/page-status-default.d.ts +25 -0
- package/dist/migration/migrations/page-status-default.js +79 -0
- package/dist/migration/migrations/page-status-default.js.map +1 -0
- package/dist/migration/migrations/revisions-schema-unify.d.ts +33 -0
- package/dist/migration/migrations/revisions-schema-unify.js +88 -0
- package/dist/migration/migrations/revisions-schema-unify.js.map +1 -0
- package/dist/migration/migrations/user-unique-prepare.d.ts +1 -0
- package/dist/migration/migrations/user-unique-prepare.js +214 -0
- package/dist/migration/migrations/user-unique-prepare.js.map +1 -0
- package/dist/migration/migrations/wikilink-format.d.ts +97 -0
- package/dist/migration/migrations/wikilink-format.js +418 -0
- package/dist/migration/migrations/wikilink-format.js.map +1 -0
- package/dist/migration/rebuild-api.d.ts +50 -0
- package/dist/migration/rebuild-api.js +45 -0
- package/dist/migration/rebuild-api.js.map +1 -0
- package/dist/migration/rebuild-runner.d.ts +64 -0
- package/dist/migration/rebuild-runner.js +42 -0
- package/dist/migration/rebuild-runner.js.map +1 -0
- package/dist/migration/rebuilds/index.d.ts +26 -0
- package/dist/migration/rebuilds/index.js +69 -0
- package/dist/migration/rebuilds/index.js.map +1 -0
- package/dist/migration/registry.d.ts +15 -0
- package/dist/migration/registry.js +96 -0
- package/dist/migration/registry.js.map +1 -0
- package/dist/migration/run-boot-migrations.d.ts +31 -0
- package/dist/migration/run-boot-migrations.js +95 -0
- package/dist/migration/run-boot-migrations.js.map +1 -0
- package/dist/migration/runner.d.ts +120 -0
- package/dist/migration/runner.js +276 -0
- package/dist/migration/runner.js.map +1 -0
- package/dist/migration/types.d.ts +153 -0
- package/dist/migration/types.js +13 -0
- package/dist/migration/types.js.map +1 -0
- package/dist/models/activity.d.ts +34 -0
- package/dist/models/activity.js +263 -0
- package/dist/models/activity.js.map +1 -0
- package/dist/models/attachment.d.ts +25 -0
- package/dist/models/attachment.js +82 -0
- package/dist/models/attachment.js.map +1 -0
- package/dist/models/backlink.d.ts +19 -0
- package/dist/models/backlink.js +138 -0
- package/dist/models/backlink.js.map +1 -0
- package/dist/models/bookmark.d.ts +28 -0
- package/dist/models/bookmark.js +136 -0
- package/dist/models/bookmark.js.map +1 -0
- package/dist/models/comment.d.ts +21 -0
- package/dist/models/comment.js +87 -0
- package/dist/models/comment.js.map +1 -0
- package/dist/models/config-sensitive.d.ts +21 -0
- package/dist/models/config-sensitive.js +71 -0
- package/dist/models/config-sensitive.js.map +1 -0
- package/dist/models/config.d.ts +34 -0
- package/dist/models/config.js +161 -0
- package/dist/models/config.js.map +1 -0
- package/dist/models/index.d.ts +30 -0
- package/dist/models/index.js +55 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/migration-application.d.ts +54 -0
- package/dist/models/migration-application.js +36 -0
- package/dist/models/migration-application.js.map +1 -0
- package/dist/models/notification.d.ts +28 -0
- package/dist/models/notification.js +285 -0
- package/dist/models/notification.js.map +1 -0
- package/dist/models/oauth-authorization-code.d.ts +34 -0
- package/dist/models/oauth-authorization-code.js +100 -0
- package/dist/models/oauth-authorization-code.js.map +1 -0
- package/dist/models/oauth-client.d.ts +36 -0
- package/dist/models/oauth-client.js +56 -0
- package/dist/models/oauth-client.js.map +1 -0
- package/dist/models/oauth-device-code.d.ts +55 -0
- package/dist/models/oauth-device-code.js +158 -0
- package/dist/models/oauth-device-code.js.map +1 -0
- package/dist/models/oauth-refresh-token.d.ts +31 -0
- package/dist/models/oauth-refresh-token.js +118 -0
- package/dist/models/oauth-refresh-token.js.map +1 -0
- package/dist/models/page-yjs-update.d.ts +35 -0
- package/dist/models/page-yjs-update.js +33 -0
- package/dist/models/page-yjs-update.js.map +1 -0
- package/dist/models/page.d.ts +200 -0
- package/dist/models/page.js +1117 -0
- package/dist/models/page.js.map +1 -0
- package/dist/models/personal-access-token.d.ts +30 -0
- package/dist/models/personal-access-token.js +107 -0
- package/dist/models/personal-access-token.js.map +1 -0
- package/dist/models/plugin-render-cache.d.ts +40 -0
- package/dist/models/plugin-render-cache.js +39 -0
- package/dist/models/plugin-render-cache.js.map +1 -0
- package/dist/models/revision.d.ts +145 -0
- package/dist/models/revision.js +241 -0
- package/dist/models/revision.js.map +1 -0
- package/dist/models/share.d.ts +38 -0
- package/dist/models/share.js +137 -0
- package/dist/models/share.js.map +1 -0
- package/dist/models/shareAccess.d.ts +20 -0
- package/dist/models/shareAccess.js +45 -0
- package/dist/models/shareAccess.js.map +1 -0
- package/dist/models/tracking.d.ts +14 -0
- package/dist/models/tracking.js +14 -0
- package/dist/models/tracking.js.map +1 -0
- package/dist/models/updatePost.d.ts +25 -0
- package/dist/models/updatePost.js +87 -0
- package/dist/models/updatePost.js.map +1 -0
- package/dist/models/user.d.ts +144 -0
- package/dist/models/user.js +681 -0
- package/dist/models/user.js.map +1 -0
- package/dist/models/watcher.d.ts +23 -0
- package/dist/models/watcher.js +75 -0
- package/dist/models/watcher.js.map +1 -0
- package/dist/notifications/attach.d.ts +63 -0
- package/dist/notifications/attach.js +426 -0
- package/dist/notifications/attach.js.map +1 -0
- package/dist/notifications/channel.d.ts +13 -0
- package/dist/notifications/channel.js +18 -0
- package/dist/notifications/channel.js.map +1 -0
- package/dist/plugin/index.d.ts +2 -0
- package/dist/plugin/index.js +6 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/plugin-context.d.ts +22 -0
- package/dist/plugin/plugin-context.js +126 -0
- package/dist/plugin/plugin-context.js.map +1 -0
- package/dist/plugin/plugin-manager.d.ts +164 -0
- package/dist/plugin/plugin-manager.js +328 -0
- package/dist/plugin/plugin-manager.js.map +1 -0
- package/dist/plugin/plugin-namespace.d.ts +28 -0
- package/dist/plugin/plugin-namespace.js +53 -0
- package/dist/plugin/plugin-namespace.js.map +1 -0
- package/dist/plugin/registries.d.ts +38 -0
- package/dist/plugin/registries.js +71 -0
- package/dist/plugin/registries.js.map +1 -0
- package/dist/plugin/schema-serializer.d.ts +34 -0
- package/dist/plugin/schema-serializer.js +122 -0
- package/dist/plugin/schema-serializer.js.map +1 -0
- package/dist/plugin/topo-sort.d.ts +15 -0
- package/dist/plugin/topo-sort.js +59 -0
- package/dist/plugin/topo-sort.js.map +1 -0
- package/dist/presence/attach.d.ts +36 -0
- package/dist/presence/attach.js +399 -0
- package/dist/presence/attach.js.map +1 -0
- package/dist/renderer/__fixtures__/echo-embed.d.ts +27 -0
- package/dist/renderer/__fixtures__/echo-embed.js +24 -0
- package/dist/renderer/__fixtures__/echo-embed.js.map +1 -0
- package/dist/renderer/cache/index.d.ts +60 -0
- package/dist/renderer/cache/index.js +219 -0
- package/dist/renderer/cache/index.js.map +1 -0
- package/dist/renderer/cache/mongodb-cache.d.ts +82 -0
- package/dist/renderer/cache/mongodb-cache.js +180 -0
- package/dist/renderer/cache/mongodb-cache.js.map +1 -0
- package/dist/renderer/cache/reservation.d.ts +20 -0
- package/dist/renderer/cache/reservation.js +115 -0
- package/dist/renderer/cache/reservation.js.map +1 -0
- package/dist/renderer/core/_mdast-walk.d.ts +35 -0
- package/dist/renderer/core/_mdast-walk.js +45 -0
- package/dist/renderer/core/_mdast-walk.js.map +1 -0
- package/dist/renderer/core/code-block-dispatch.d.ts +31 -0
- package/dist/renderer/core/code-block-dispatch.js +166 -0
- package/dist/renderer/core/code-block-dispatch.js.map +1 -0
- package/dist/renderer/core/code-blocks.d.ts +12 -0
- package/dist/renderer/core/code-blocks.js +32 -0
- package/dist/renderer/core/code-blocks.js.map +1 -0
- package/dist/renderer/core/embed-tags.d.ts +14 -0
- package/dist/renderer/core/embed-tags.js +154 -0
- package/dist/renderer/core/embed-tags.js.map +1 -0
- package/dist/renderer/core/headings.d.ts +16 -0
- package/dist/renderer/core/headings.js +31 -0
- package/dist/renderer/core/headings.js.map +1 -0
- package/dist/renderer/core/index.d.ts +65 -0
- package/dist/renderer/core/index.js +83 -0
- package/dist/renderer/core/index.js.map +1 -0
- package/dist/renderer/core/mention-resolve.d.ts +39 -0
- package/dist/renderer/core/mention-resolve.js +75 -0
- package/dist/renderer/core/mention-resolve.js.map +1 -0
- package/dist/renderer/core/mentions.d.ts +2 -0
- package/dist/renderer/core/mentions.js +83 -0
- package/dist/renderer/core/mentions.js.map +1 -0
- package/dist/renderer/core/syntax-highlight.d.ts +21 -0
- package/dist/renderer/core/syntax-highlight.js +64 -0
- package/dist/renderer/core/syntax-highlight.js.map +1 -0
- package/dist/renderer/core/url-inline-expand.d.ts +9 -0
- package/dist/renderer/core/url-inline-expand.js +157 -0
- package/dist/renderer/core/url-inline-expand.js.map +1 -0
- package/dist/renderer/core/wikilinks.d.ts +2 -0
- package/dist/renderer/core/wikilinks.js +118 -0
- package/dist/renderer/core/wikilinks.js.map +1 -0
- package/dist/renderer/index.d.ts +67 -0
- package/dist/renderer/index.js +99 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/pipeline.d.ts +134 -0
- package/dist/renderer/pipeline.js +203 -0
- package/dist/renderer/pipeline.js.map +1 -0
- package/dist/renderer/registry.d.ts +83 -0
- package/dist/renderer/registry.js +130 -0
- package/dist/renderer/registry.js.map +1 -0
- package/dist/renderer/serialize.d.ts +27 -0
- package/dist/renderer/serialize.js +46 -0
- package/dist/renderer/serialize.js.map +1 -0
- package/dist/renderer/version.d.ts +30 -0
- package/dist/renderer/version.js +34 -0
- package/dist/renderer/version.js.map +1 -0
- package/dist/routes/admin.d.ts +4 -0
- package/dist/routes/admin.js +17 -0
- package/dist/routes/admin.js.map +1 -0
- package/dist/routes/api/admin.d.ts +4 -0
- package/dist/routes/api/admin.js +37 -0
- package/dist/routes/api/admin.js.map +1 -0
- package/dist/routes/api/attachment.d.ts +4 -0
- package/dist/routes/api/attachment.js +19 -0
- package/dist/routes/api/attachment.js.map +1 -0
- package/dist/routes/api/bookmark.d.ts +4 -0
- package/dist/routes/api/bookmark.js +15 -0
- package/dist/routes/api/bookmark.js.map +1 -0
- package/dist/routes/api/comment.d.ts +4 -0
- package/dist/routes/api/comment.js +14 -0
- package/dist/routes/api/comment.js.map +1 -0
- package/dist/routes/api/index.d.ts +4 -0
- package/dist/routes/api/index.js +36 -0
- package/dist/routes/api/index.js.map +1 -0
- package/dist/routes/api/like.d.ts +4 -0
- package/dist/routes/api/like.js +13 -0
- package/dist/routes/api/like.js.map +1 -0
- package/dist/routes/api/notification.d.ts +4 -0
- package/dist/routes/api/notification.js +15 -0
- package/dist/routes/api/notification.js.map +1 -0
- package/dist/routes/api/page.d.ts +4 -0
- package/dist/routes/api/page.js +24 -0
- package/dist/routes/api/page.js.map +1 -0
- package/dist/routes/api/revision.d.ts +4 -0
- package/dist/routes/api/revision.js +14 -0
- package/dist/routes/api/revision.js.map +1 -0
- package/dist/routes/api/share.d.ts +4 -0
- package/dist/routes/api/share.js +16 -0
- package/dist/routes/api/share.js.map +1 -0
- package/dist/routes/api/version.d.ts +4 -0
- package/dist/routes/api/version.js +10 -0
- package/dist/routes/api/version.js.map +1 -0
- package/dist/routes/index.d.ts +4 -0
- package/dist/routes/index.js +71 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/login.d.ts +4 -0
- package/dist/routes/login.js +18 -0
- package/dist/routes/login.js.map +1 -0
- package/dist/routes/me.d.ts +4 -0
- package/dist/routes/me.js +24 -0
- package/dist/routes/me.js.map +1 -0
- package/dist/routes/ts-rest/admin/app.d.ts +4 -0
- package/dist/routes/ts-rest/admin/app.js +67 -0
- package/dist/routes/ts-rest/admin/app.js.map +1 -0
- package/dist/routes/ts-rest/admin/auth.d.ts +4 -0
- package/dist/routes/ts-rest/admin/auth.js +95 -0
- package/dist/routes/ts-rest/admin/auth.js.map +1 -0
- package/dist/routes/ts-rest/admin/index.d.ts +10 -0
- package/dist/routes/ts-rest/admin/index.js +35 -0
- package/dist/routes/ts-rest/admin/index.js.map +1 -0
- package/dist/routes/ts-rest/admin/mail.d.ts +4 -0
- package/dist/routes/ts-rest/admin/mail.js +156 -0
- package/dist/routes/ts-rest/admin/mail.js.map +1 -0
- package/dist/routes/ts-rest/admin/plugins.d.ts +4 -0
- package/dist/routes/ts-rest/admin/plugins.js +317 -0
- package/dist/routes/ts-rest/admin/plugins.js.map +1 -0
- package/dist/routes/ts-rest/admin/search.d.ts +4 -0
- package/dist/routes/ts-rest/admin/search.js +67 -0
- package/dist/routes/ts-rest/admin/search.js.map +1 -0
- package/dist/routes/ts-rest/admin/security.d.ts +4 -0
- package/dist/routes/ts-rest/admin/security.js +114 -0
- package/dist/routes/ts-rest/admin/security.js.map +1 -0
- package/dist/routes/ts-rest/admin/share.d.ts +4 -0
- package/dist/routes/ts-rest/admin/share.js +69 -0
- package/dist/routes/ts-rest/admin/share.js.map +1 -0
- package/dist/routes/ts-rest/admin/storage.d.ts +4 -0
- package/dist/routes/ts-rest/admin/storage.js +59 -0
- package/dist/routes/ts-rest/admin/storage.js.map +1 -0
- package/dist/routes/ts-rest/admin/users.d.ts +4 -0
- package/dist/routes/ts-rest/admin/users.js +215 -0
- package/dist/routes/ts-rest/admin/users.js.map +1 -0
- package/dist/routes/ts-rest/adminCrypto.d.ts +4 -0
- package/dist/routes/ts-rest/adminCrypto.js +111 -0
- package/dist/routes/ts-rest/adminCrypto.js.map +1 -0
- package/dist/routes/ts-rest/app.d.ts +4 -0
- package/dist/routes/ts-rest/app.js +23 -0
- package/dist/routes/ts-rest/app.js.map +1 -0
- package/dist/routes/ts-rest/attachment.d.ts +4 -0
- package/dist/routes/ts-rest/attachment.js +830 -0
- package/dist/routes/ts-rest/attachment.js.map +1 -0
- package/dist/routes/ts-rest/auth.d.ts +4 -0
- package/dist/routes/ts-rest/auth.js +70 -0
- package/dist/routes/ts-rest/auth.js.map +1 -0
- package/dist/routes/ts-rest/autocomplete.d.ts +30 -0
- package/dist/routes/ts-rest/autocomplete.js +189 -0
- package/dist/routes/ts-rest/autocomplete.js.map +1 -0
- package/dist/routes/ts-rest/backlink.d.ts +4 -0
- package/dist/routes/ts-rest/backlink.js +106 -0
- package/dist/routes/ts-rest/backlink.js.map +1 -0
- package/dist/routes/ts-rest/bookmark.d.ts +4 -0
- package/dist/routes/ts-rest/bookmark.js +189 -0
- package/dist/routes/ts-rest/bookmark.js.map +1 -0
- package/dist/routes/ts-rest/comment.d.ts +4 -0
- package/dist/routes/ts-rest/comment.js +217 -0
- package/dist/routes/ts-rest/comment.js.map +1 -0
- package/dist/routes/ts-rest/draft.d.ts +22 -0
- package/dist/routes/ts-rest/draft.js +200 -0
- package/dist/routes/ts-rest/draft.js.map +1 -0
- package/dist/routes/ts-rest/index.d.ts +4 -0
- package/dist/routes/ts-rest/index.js +103 -0
- package/dist/routes/ts-rest/index.js.map +1 -0
- package/dist/routes/ts-rest/installer.d.ts +4 -0
- package/dist/routes/ts-rest/installer.js +77 -0
- package/dist/routes/ts-rest/installer.js.map +1 -0
- package/dist/routes/ts-rest/me.d.ts +4 -0
- package/dist/routes/ts-rest/me.js +410 -0
- package/dist/routes/ts-rest/me.js.map +1 -0
- package/dist/routes/ts-rest/notification.d.ts +4 -0
- package/dist/routes/ts-rest/notification.js +241 -0
- package/dist/routes/ts-rest/notification.js.map +1 -0
- package/dist/routes/ts-rest/page-collab.d.ts +29 -0
- package/dist/routes/ts-rest/page-collab.js +90 -0
- package/dist/routes/ts-rest/page-collab.js.map +1 -0
- package/dist/routes/ts-rest/page-preview.d.ts +26 -0
- package/dist/routes/ts-rest/page-preview.js +80 -0
- package/dist/routes/ts-rest/page-preview.js.map +1 -0
- package/dist/routes/ts-rest/page.d.ts +4 -0
- package/dist/routes/ts-rest/page.js +676 -0
- package/dist/routes/ts-rest/page.js.map +1 -0
- package/dist/routes/ts-rest/presence.d.ts +30 -0
- package/dist/routes/ts-rest/presence.js +155 -0
- package/dist/routes/ts-rest/presence.js.map +1 -0
- package/dist/routes/ts-rest/revision.d.ts +4 -0
- package/dist/routes/ts-rest/revision.js +240 -0
- package/dist/routes/ts-rest/revision.js.map +1 -0
- package/dist/routes/ts-rest/search.d.ts +4 -0
- package/dist/routes/ts-rest/search.js +121 -0
- package/dist/routes/ts-rest/search.js.map +1 -0
- package/dist/routes/ts-rest/tokenAuth.d.ts +4 -0
- package/dist/routes/ts-rest/tokenAuth.js +94 -0
- package/dist/routes/ts-rest/tokenAuth.js.map +1 -0
- package/dist/routes/ts-rest/user.d.ts +4 -0
- package/dist/routes/ts-rest/user.js +307 -0
- package/dist/routes/ts-rest/user.js.map +1 -0
- package/dist/service/config.d.ts +50 -0
- package/dist/service/config.js +202 -0
- package/dist/service/config.js.map +1 -0
- package/dist/service/lru.d.ts +11 -0
- package/dist/service/lru.js +47 -0
- package/dist/service/lru.js.map +1 -0
- package/dist/service/mail.d.ts +107 -0
- package/dist/service/mail.js +220 -0
- package/dist/service/mail.js.map +1 -0
- package/dist/service/notification.d.ts +9 -0
- package/dist/service/notification.js +19 -0
- package/dist/service/notification.js.map +1 -0
- package/dist/service/presence.d.ts +219 -0
- package/dist/service/presence.js +602 -0
- package/dist/service/presence.js.map +1 -0
- package/dist/types/error.d.ts +13 -0
- package/dist/types/error.js +13 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/express.d.ts +34 -0
- package/dist/types/express.js +50 -0
- package/dist/types/express.js.map +1 -0
- package/dist/types/mongoose-extensions.d.ts +8 -0
- package/dist/types/mongoose-extensions.js +24 -0
- package/dist/types/mongoose-extensions.js.map +1 -0
- package/dist/util/accessTokenParser.d.ts +1 -0
- package/dist/util/accessTokenParser.js +34 -0
- package/dist/util/accessTokenParser.js.map +1 -0
- package/dist/util/activityDefine.d.ts +15 -0
- package/dist/util/activityDefine.js +52 -0
- package/dist/util/activityDefine.js.map +1 -0
- package/dist/util/admin-config.d.ts +57 -0
- package/dist/util/admin-config.js +99 -0
- package/dist/util/admin-config.js.map +1 -0
- package/dist/util/admin-pager.d.ts +24 -0
- package/dist/util/admin-pager.js +73 -0
- package/dist/util/admin-pager.js.map +1 -0
- package/dist/util/apiPaginate.d.ts +11 -0
- package/dist/util/apiPaginate.js +33 -0
- package/dist/util/apiPaginate.js.map +1 -0
- package/dist/util/apiResponse.d.ts +9 -0
- package/dist/util/apiResponse.js +23 -0
- package/dist/util/apiResponse.js.map +1 -0
- package/dist/util/auth.d.ts +11 -0
- package/dist/util/auth.js +48 -0
- package/dist/util/auth.js.map +1 -0
- package/dist/util/auto-watch.d.ts +35 -0
- package/dist/util/auto-watch.js +24 -0
- package/dist/util/auto-watch.js.map +1 -0
- package/dist/util/autocomplete-match.d.ts +44 -0
- package/dist/util/autocomplete-match.js +80 -0
- package/dist/util/autocomplete-match.js.map +1 -0
- package/dist/util/aws-config-migration.d.ts +11 -0
- package/dist/util/aws-config-migration.js +68 -0
- package/dist/util/aws-config-migration.js.map +1 -0
- package/dist/util/boot-reporter.d.ts +130 -0
- package/dist/util/boot-reporter.js +242 -0
- package/dist/util/boot-reporter.js.map +1 -0
- package/dist/util/collab-cap.d.ts +39 -0
- package/dist/util/collab-cap.js +90 -0
- package/dist/util/collab-cap.js.map +1 -0
- package/dist/util/crypto.d.ts +39 -0
- package/dist/util/crypto.js +105 -0
- package/dist/util/crypto.js.map +1 -0
- package/dist/util/dedup-users.d.ts +96 -0
- package/dist/util/dedup-users.js +149 -0
- package/dist/util/dedup-users.js.map +1 -0
- package/dist/util/editor-cap-counter.d.ts +90 -0
- package/dist/util/editor-cap-counter.js +175 -0
- package/dist/util/editor-cap-counter.js.map +1 -0
- package/dist/util/fileUploader.d.ts +55 -0
- package/dist/util/fileUploader.js +70 -0
- package/dist/util/fileUploader.js.map +1 -0
- package/dist/util/formUtil.d.ts +2 -0
- package/dist/util/formUtil.js +15 -0
- package/dist/util/formUtil.js.map +1 -0
- package/dist/util/githubAuth.d.ts +2 -0
- package/dist/util/githubAuth.js +82 -0
- package/dist/util/githubAuth.js.map +1 -0
- package/dist/util/googleAuth.d.ts +2 -0
- package/dist/util/googleAuth.js +85 -0
- package/dist/util/googleAuth.js.map +1 -0
- package/dist/util/jwt.d.ts +50 -0
- package/dist/util/jwt.js +127 -0
- package/dist/util/jwt.js.map +1 -0
- package/dist/util/linkDetector.d.ts +3 -0
- package/dist/util/linkDetector.js +91 -0
- package/dist/util/linkDetector.js.map +1 -0
- package/dist/util/mail-token.d.ts +24 -0
- package/dist/util/mail-token.js +117 -0
- package/dist/util/mail-token.js.map +1 -0
- package/dist/util/mailer.d.ts +7 -0
- package/dist/util/mailer.js +98 -0
- package/dist/util/mailer.js.map +1 -0
- package/dist/util/map-duplicate-key-error.d.ts +26 -0
- package/dist/util/map-duplicate-key-error.js +41 -0
- package/dist/util/map-duplicate-key-error.js.map +1 -0
- package/dist/util/mongoose-paginate.d.ts +10 -0
- package/dist/util/mongoose-paginate.js +23 -0
- package/dist/util/mongoose-paginate.js.map +1 -0
- package/dist/util/notifications-token.d.ts +35 -0
- package/dist/util/notifications-token.js +140 -0
- package/dist/util/notifications-token.js.map +1 -0
- package/dist/util/oauth-client-seed.d.ts +2 -0
- package/dist/util/oauth-client-seed.js +48 -0
- package/dist/util/oauth-client-seed.js.map +1 -0
- package/dist/util/oauth-redirect-uri.d.ts +2 -0
- package/dist/util/oauth-redirect-uri.js +55 -0
- package/dist/util/oauth-redirect-uri.js.map +1 -0
- package/dist/util/page-response.d.ts +113 -0
- package/dist/util/page-response.js +154 -0
- package/dist/util/page-response.js.map +1 -0
- package/dist/util/page-search-index.d.ts +19 -0
- package/dist/util/page-search-index.js +91 -0
- package/dist/util/page-search-index.js.map +1 -0
- package/dist/util/page-status-migration.d.ts +23 -0
- package/dist/util/page-status-migration.js +48 -0
- package/dist/util/page-status-migration.js.map +1 -0
- package/dist/util/path.d.ts +2 -0
- package/dist/util/path.js +12 -0
- package/dist/util/path.js.map +1 -0
- package/dist/util/pkce.d.ts +13 -0
- package/dist/util/pkce.js +30 -0
- package/dist/util/pkce.js.map +1 -0
- package/dist/util/presence-token.d.ts +21 -0
- package/dist/util/presence-token.js +120 -0
- package/dist/util/presence-token.js.map +1 -0
- package/dist/util/rate-limit.d.ts +67 -0
- package/dist/util/rate-limit.js +87 -0
- package/dist/util/rate-limit.js.map +1 -0
- package/dist/util/rebuild-backlink.d.ts +25 -0
- package/dist/util/rebuild-backlink.js +7 -0
- package/dist/util/rebuild-backlink.js.map +1 -0
- package/dist/util/rebuild-renderer.d.ts +31 -0
- package/dist/util/rebuild-renderer.js +7 -0
- package/dist/util/rebuild-renderer.js.map +1 -0
- package/dist/util/redis-opts.d.ts +17 -0
- package/dist/util/redis-opts.js +40 -0
- package/dist/util/redis-opts.js.map +1 -0
- package/dist/util/regex.d.ts +2 -0
- package/dist/util/regex.js +8 -0
- package/dist/util/regex.js.map +1 -0
- package/dist/util/search-rebuild.d.ts +18 -0
- package/dist/util/search-rebuild.js +28 -0
- package/dist/util/search-rebuild.js.map +1 -0
- package/dist/util/ssr.d.ts +3 -0
- package/dist/util/ssr.js +9 -0
- package/dist/util/ssr.js.map +1 -0
- package/dist/util/storage-copy.d.ts +40 -0
- package/dist/util/storage-copy.js +123 -0
- package/dist/util/storage-copy.js.map +1 -0
- package/dist/util/ts-rest-helpers.d.ts +110 -0
- package/dist/util/ts-rest-helpers.js +110 -0
- package/dist/util/ts-rest-helpers.js.map +1 -0
- package/dist/util/url.d.ts +1 -0
- package/dist/util/url.js +11 -0
- package/dist/util/url.js.map +1 -0
- package/dist/util/user-code.d.ts +10 -0
- package/dist/util/user-code.js +55 -0
- package/dist/util/user-code.js.map +1 -0
- package/dist/util/view.d.ts +10 -0
- package/dist/util/view.js +99 -0
- package/dist/util/view.js.map +1 -0
- package/dist/util/watcher-backfill.d.ts +30 -0
- package/dist/util/watcher-backfill.js +43 -0
- package/dist/util/watcher-backfill.js.map +1 -0
- package/dist/util/ws-token.d.ts +24 -0
- package/dist/util/ws-token.js +134 -0
- package/dist/util/ws-token.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wikilinkFormat = exports.WIKILINK_DETECTION_REGEX = exports.KNOWN_HTML_ELEMENTS = void 0;
|
|
4
|
+
exports.bodyHasRewritableWikilink = bodyHasRewritableWikilink;
|
|
5
|
+
exports.shouldRewriteWikilink = shouldRewriteWikilink;
|
|
6
|
+
exports.rewriteAndDetect = rewriteAndDetect;
|
|
7
|
+
exports.rewriteWikilinks = rewriteWikilinks;
|
|
8
|
+
const page_1 = require("../../models/page");
|
|
9
|
+
const types_1 = require("../types");
|
|
10
|
+
/**
|
|
11
|
+
* RFC-0008 §10.2 step 4 / §4.3.1 — `wikilink-format` (preflight layer).
|
|
12
|
+
*
|
|
13
|
+
* Ported from the former standalone `crowi-admin migrate --only=wikilink`
|
|
14
|
+
* (`packages/admin-cli/src/commands/migrate-wikilink.ts`). The migration
|
|
15
|
+
* rewrites v1 angle-bracket internal links (`</path>` / `</path|alias>`) to
|
|
16
|
+
* the v2 wikilink form (`[[path]]` / `[[path|alias]]`).
|
|
17
|
+
*
|
|
18
|
+
* Why this is a migration (not just a CLI command): the old command called
|
|
19
|
+
* `Revision.prepareRevision` + `Page.pushRevision` directly, bypassing
|
|
20
|
+
* `Page.updatePage`. That path never nulls `yjsState` / `yjsCheckpointAt`, so
|
|
21
|
+
* any user editing a rewritten page stayed pinned to a stale `Y.Doc` and could
|
|
22
|
+
* silently revert the migration on their next autosave (RFC-0008 §4.3.1
|
|
23
|
+
* "Motivating bug"). Routing every body rewrite through `ctx.rewritePageBody`
|
|
24
|
+
* (= the `updatePage`-equivalent path) repoints `currentRevision` and nulls the
|
|
25
|
+
* Yjs snapshot, so the next `onLoadDocument` rebuilds from the new body. As a
|
|
26
|
+
* preflight migration this is persistence-only (no live force-reload broadcast):
|
|
27
|
+
* preflight runs in a maintenance window with no connected editors (§4.3.1).
|
|
28
|
+
*
|
|
29
|
+
* The textual conversion logic below is moved verbatim from the old command so
|
|
30
|
+
* the rewrite output is byte-identical to the legacy migrator.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* HTML5 element name set used to reject `</foo>` matches whose first path
|
|
34
|
+
* segment is actually a closing HTML tag. Source:
|
|
35
|
+
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element — the full
|
|
36
|
+
* standard element list as of the HTML Living Standard.
|
|
37
|
+
*
|
|
38
|
+
* Kept as a top-level `Set<string>` so detection runs O(1) per match.
|
|
39
|
+
* `h1`..`h6` are listed explicitly because the regex captures `foo` for
|
|
40
|
+
* `</foo>` and we want both `</h1>` and `</h6>` to be rejected.
|
|
41
|
+
*/
|
|
42
|
+
exports.KNOWN_HTML_ELEMENTS = new Set([
|
|
43
|
+
'a',
|
|
44
|
+
'abbr',
|
|
45
|
+
'address',
|
|
46
|
+
'area',
|
|
47
|
+
'article',
|
|
48
|
+
'aside',
|
|
49
|
+
'audio',
|
|
50
|
+
'b',
|
|
51
|
+
'base',
|
|
52
|
+
'bdi',
|
|
53
|
+
'bdo',
|
|
54
|
+
'blockquote',
|
|
55
|
+
'body',
|
|
56
|
+
'br',
|
|
57
|
+
'button',
|
|
58
|
+
'canvas',
|
|
59
|
+
'caption',
|
|
60
|
+
'cite',
|
|
61
|
+
'code',
|
|
62
|
+
'col',
|
|
63
|
+
'colgroup',
|
|
64
|
+
'data',
|
|
65
|
+
'datalist',
|
|
66
|
+
'dd',
|
|
67
|
+
'del',
|
|
68
|
+
'details',
|
|
69
|
+
'dfn',
|
|
70
|
+
'dialog',
|
|
71
|
+
'div',
|
|
72
|
+
'dl',
|
|
73
|
+
'dt',
|
|
74
|
+
'em',
|
|
75
|
+
'embed',
|
|
76
|
+
'fieldset',
|
|
77
|
+
'figcaption',
|
|
78
|
+
'figure',
|
|
79
|
+
'footer',
|
|
80
|
+
'form',
|
|
81
|
+
'h1',
|
|
82
|
+
'h2',
|
|
83
|
+
'h3',
|
|
84
|
+
'h4',
|
|
85
|
+
'h5',
|
|
86
|
+
'h6',
|
|
87
|
+
'head',
|
|
88
|
+
'header',
|
|
89
|
+
'hgroup',
|
|
90
|
+
'hr',
|
|
91
|
+
'html',
|
|
92
|
+
'i',
|
|
93
|
+
'iframe',
|
|
94
|
+
'img',
|
|
95
|
+
'input',
|
|
96
|
+
'ins',
|
|
97
|
+
'kbd',
|
|
98
|
+
'label',
|
|
99
|
+
'legend',
|
|
100
|
+
'li',
|
|
101
|
+
'link',
|
|
102
|
+
'main',
|
|
103
|
+
'map',
|
|
104
|
+
'mark',
|
|
105
|
+
'menu',
|
|
106
|
+
'meta',
|
|
107
|
+
'meter',
|
|
108
|
+
'nav',
|
|
109
|
+
'noscript',
|
|
110
|
+
'object',
|
|
111
|
+
'ol',
|
|
112
|
+
'optgroup',
|
|
113
|
+
'option',
|
|
114
|
+
'output',
|
|
115
|
+
'p',
|
|
116
|
+
'picture',
|
|
117
|
+
'pre',
|
|
118
|
+
'progress',
|
|
119
|
+
'q',
|
|
120
|
+
'rp',
|
|
121
|
+
'rt',
|
|
122
|
+
'ruby',
|
|
123
|
+
's',
|
|
124
|
+
'samp',
|
|
125
|
+
'script',
|
|
126
|
+
'section',
|
|
127
|
+
'select',
|
|
128
|
+
'slot',
|
|
129
|
+
'small',
|
|
130
|
+
'source',
|
|
131
|
+
'span',
|
|
132
|
+
'strong',
|
|
133
|
+
'style',
|
|
134
|
+
'sub',
|
|
135
|
+
'summary',
|
|
136
|
+
'sup',
|
|
137
|
+
'table',
|
|
138
|
+
'tbody',
|
|
139
|
+
'td',
|
|
140
|
+
'template',
|
|
141
|
+
'textarea',
|
|
142
|
+
'tfoot',
|
|
143
|
+
'th',
|
|
144
|
+
'thead',
|
|
145
|
+
'time',
|
|
146
|
+
'title',
|
|
147
|
+
'tr',
|
|
148
|
+
'track',
|
|
149
|
+
'u',
|
|
150
|
+
'ul',
|
|
151
|
+
'var',
|
|
152
|
+
'video',
|
|
153
|
+
'wbr',
|
|
154
|
+
]);
|
|
155
|
+
/**
|
|
156
|
+
* v1 angle-bracket internal link form. The capture group grabs the path-style
|
|
157
|
+
* payload (starts with `/`, no whitespace, no `<` / `>` / `|` other than the
|
|
158
|
+
* optional `|alias` segment). See `packages/api/src/util/linkDetector.ts` — v1
|
|
159
|
+
* used `<(/[^>]+)>` for the same primitive; we tighten it here to:
|
|
160
|
+
*
|
|
161
|
+
* - leading `/` to keep this strictly path-style (not arbitrary text)
|
|
162
|
+
* - no whitespace inside the **path** (Crowi page paths cannot contain spaces)
|
|
163
|
+
* - no `<` / `>` until the closing `>` and no `|` until the optional alias
|
|
164
|
+
* - optional `|alias` (free-form text, no `<` / `>`)
|
|
165
|
+
*
|
|
166
|
+
* Detection only — see `shouldRewriteWikilink` for the HTML-element filter.
|
|
167
|
+
*/
|
|
168
|
+
exports.WIKILINK_DETECTION_REGEX = /<(\/[^\s<>|]+)(\|[^<>]+)?>/g;
|
|
169
|
+
/**
|
|
170
|
+
* Substring that necessarily precedes every legacy wikilink: `</` (the match is
|
|
171
|
+
* `<` followed by the path's leading `/`, e.g. `</docs/api>`). HTML close tags
|
|
172
|
+
* (`</div>`) share this prefix, so this is a *prefilter* only — it is the
|
|
173
|
+
* cheapest substring guaranteed present whenever a real legacy wikilink exists
|
|
174
|
+
* (so it never yields a false negative), letting us skip the regex on bodies
|
|
175
|
+
* that obviously cannot contain one. The actual pending *verdict* applies the
|
|
176
|
+
* full `shouldRewriteWikilink` rule — see `bodyHasRewritableWikilink`.
|
|
177
|
+
*/
|
|
178
|
+
const WIKILINK_SUBSTRING_PROBE = '</';
|
|
179
|
+
/**
|
|
180
|
+
* True iff `body` contains at least one *genuine* legacy wikilink — i.e. a
|
|
181
|
+
* `</...>` match that survives the full `shouldRewriteWikilink` HTML-element
|
|
182
|
+
* filter. `</div>` and other close tags return false.
|
|
183
|
+
*
|
|
184
|
+
* `</` is used as a cheap prefilter so bodies that cannot possibly contain a
|
|
185
|
+
* legacy wikilink skip the regex entirely; the verdict itself is the full
|
|
186
|
+
* detection rule (not the substring), so a body whose only `</` occurrences are
|
|
187
|
+
* HTML close tags correctly reports false. Shared by `isPending` (current-
|
|
188
|
+
* revision verdict) and `collectRewritablePages` (full detect/stage scan) so
|
|
189
|
+
* the detection logic lives in one place.
|
|
190
|
+
*/
|
|
191
|
+
function bodyHasRewritableWikilink(body) {
|
|
192
|
+
if (!body.includes(WIKILINK_SUBSTRING_PROBE))
|
|
193
|
+
return false;
|
|
194
|
+
return rewriteAndDetect(body).occurrences.length > 0;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Decide whether a detected `</...>` match is a v1 wikilink we should rewrite,
|
|
198
|
+
* or a coincidental HTML close tag we must leave alone.
|
|
199
|
+
*
|
|
200
|
+
* The rule: reject when the **first path segment** (everything between the
|
|
201
|
+
* leading `/` and the next `/`, `#`, or end-of-payload) is a known HTML element
|
|
202
|
+
* name (lowercased). Crowi page paths are case-sensitive, so `</Section>` is a
|
|
203
|
+
* wikilink (page `Section`) while `</section>` is the HTML element.
|
|
204
|
+
*/
|
|
205
|
+
function shouldRewriteWikilink(innerPath) {
|
|
206
|
+
if (innerPath === '/')
|
|
207
|
+
return false;
|
|
208
|
+
if (!innerPath.startsWith('/'))
|
|
209
|
+
return false;
|
|
210
|
+
const afterLeadingSlash = innerPath.slice(1);
|
|
211
|
+
const firstSegmentEnd = afterLeadingSlash.search(/[/#]/);
|
|
212
|
+
const firstSegment = firstSegmentEnd === -1 ? afterLeadingSlash : afterLeadingSlash.slice(0, firstSegmentEnd);
|
|
213
|
+
if (firstSegment.length === 0)
|
|
214
|
+
return false;
|
|
215
|
+
// Only reject lowercase-ASCII first segments that are real HTML elements.
|
|
216
|
+
if (!/^[a-z][a-z0-9]*$/.test(firstSegment))
|
|
217
|
+
return true;
|
|
218
|
+
return !exports.KNOWN_HTML_ELEMENTS.has(firstSegment);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Single-pass detect-and-rewrite. Returns the rewritten body together with the
|
|
222
|
+
* occurrence list so callers don't walk the regex twice. `body` is returned by
|
|
223
|
+
* reference when nothing changed, letting callers cheap-skip via
|
|
224
|
+
* `result.body === body`. Pure function — no side effects, no I/O.
|
|
225
|
+
*/
|
|
226
|
+
function rewriteAndDetect(body) {
|
|
227
|
+
const occurrences = [];
|
|
228
|
+
const rewritten = body.replace(exports.WIKILINK_DETECTION_REGEX, (whole, innerPath, aliasWithPipe) => {
|
|
229
|
+
if (!shouldRewriteWikilink(innerPath))
|
|
230
|
+
return whole;
|
|
231
|
+
occurrences.push({
|
|
232
|
+
raw: whole,
|
|
233
|
+
path: innerPath,
|
|
234
|
+
alias: aliasWithPipe ? aliasWithPipe.slice(1) : undefined,
|
|
235
|
+
});
|
|
236
|
+
const aliasSegment = aliasWithPipe ?? '';
|
|
237
|
+
return `[[${innerPath}${aliasSegment}]]`;
|
|
238
|
+
});
|
|
239
|
+
return { body: occurrences.length === 0 ? body : rewritten, occurrences };
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Convenience wrapper for tests / callers that only need the rewritten body.
|
|
243
|
+
* The migration hot path uses `rewriteAndDetect` to avoid walking the regex
|
|
244
|
+
* twice.
|
|
245
|
+
*/
|
|
246
|
+
function rewriteWikilinks(body) {
|
|
247
|
+
return rewriteAndDetect(body).body;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Resolve which user is recorded as the author of every rewritten revision.
|
|
251
|
+
* The `updatePage`-equivalent path (`rewritePageBody`) ultimately calls
|
|
252
|
+
* `Revision.prepareRevision`, which **throws** when handed a falsy user, so a
|
|
253
|
+
* preflight rewrite MUST resolve a real acting user up front rather than rely
|
|
254
|
+
* on per-page `lastUpdateUser`/`creator` (those can dangle to a deleted user).
|
|
255
|
+
*
|
|
256
|
+
* Order, mirroring the legacy `migrate-wikilink` command:
|
|
257
|
+
* 1. `process.env.CROWI_MIGRATE_USER` — interpreted as an email; the named
|
|
258
|
+
* user must exist.
|
|
259
|
+
* 2. otherwise the oldest admin user (`{ admin: true }` sorted by createdAt),
|
|
260
|
+
* deterministic across re-runs.
|
|
261
|
+
*
|
|
262
|
+
* Throws when neither yields a user so the operator gets a clear error instead
|
|
263
|
+
* of a per-page `user should have _id` failure deep inside the rewrite.
|
|
264
|
+
*/
|
|
265
|
+
async function resolveActingUserId(ctx) {
|
|
266
|
+
const User = ctx.crowi.model('User');
|
|
267
|
+
const explicit = process.env.CROWI_MIGRATE_USER;
|
|
268
|
+
if (explicit) {
|
|
269
|
+
const named = await User.findOne({ email: explicit }).select('_id').lean().exec();
|
|
270
|
+
if (named)
|
|
271
|
+
return String(named._id);
|
|
272
|
+
throw new Error(`CROWI_MIGRATE_USER='${explicit}' but no user with that email exists.`);
|
|
273
|
+
}
|
|
274
|
+
const admin = await User.findOne({ admin: true }).sort({ createdAt: 1 }).select('_id').lean().exec();
|
|
275
|
+
if (admin)
|
|
276
|
+
return String(admin._id);
|
|
277
|
+
throw new Error('wikilink-format: no admin user found; set CROWI_MIGRATE_USER=<email> or create an admin user first.');
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Walk every published page, keep those whose current revision body holds a
|
|
281
|
+
* genuine legacy wikilink (`bodyHasRewritableWikilink` — the same full
|
|
282
|
+
* `shouldRewriteWikilink` rule `isPending` uses, with `</` as a cheap
|
|
283
|
+
* prefilter), and pair each with its rewritten body + occurrence count for
|
|
284
|
+
* `ctx.rewritePageBody`.
|
|
285
|
+
*
|
|
286
|
+
* Restricted to `status: 'published'` (and legacy `null`, treated as published)
|
|
287
|
+
* because trash / deprecated pages are read-only fixtures — touching them would
|
|
288
|
+
* generate noisy update events, matching the legacy command's scope.
|
|
289
|
+
*/
|
|
290
|
+
async function collectRewritablePages(ctx) {
|
|
291
|
+
const Page = ctx.crowi.model('Page');
|
|
292
|
+
const Revision = ctx.crowi.model('Revision');
|
|
293
|
+
const out = [];
|
|
294
|
+
// `currentRevision ?? revision` is the body the editor seeds from
|
|
295
|
+
// (on-load-document.ts), but the legacy command read `page.revision`; both
|
|
296
|
+
// point at the latest body for a published page, so we read `revision` to
|
|
297
|
+
// keep parity. Stream-walk so memory stays constant on large installs.
|
|
298
|
+
const cursor = Page.find({ $or: [{ status: page_1.STATUS_PUBLISHED }, { status: null }] })
|
|
299
|
+
.select('_id revision')
|
|
300
|
+
.lean()
|
|
301
|
+
.cursor();
|
|
302
|
+
for await (const page of cursor) {
|
|
303
|
+
const pageDoc = page;
|
|
304
|
+
if (!pageDoc.revision)
|
|
305
|
+
continue;
|
|
306
|
+
const revision = await Revision.findById(pageDoc.revision).select('body').lean().exec();
|
|
307
|
+
const body = revision?.body;
|
|
308
|
+
if (typeof body !== 'string')
|
|
309
|
+
continue;
|
|
310
|
+
if (!bodyHasRewritableWikilink(body))
|
|
311
|
+
continue;
|
|
312
|
+
const result = rewriteAndDetect(body);
|
|
313
|
+
out.push({ pageId: String(pageDoc._id), newBody: result.body, occurrences: result.occurrences.length });
|
|
314
|
+
}
|
|
315
|
+
return out;
|
|
316
|
+
}
|
|
317
|
+
exports.wikilinkFormat = (0, types_1.defineMigration)({
|
|
318
|
+
id: 'wikilink-format',
|
|
319
|
+
fromVersion: '1.x',
|
|
320
|
+
toVersion: '2.1',
|
|
321
|
+
layer: 'preflight',
|
|
322
|
+
description: 'Migrate wikilink syntax',
|
|
323
|
+
/**
|
|
324
|
+
* Pending verdict = at least one published page whose **current** revision
|
|
325
|
+
* body still contains a genuine legacy wikilink. Two constraints shape this:
|
|
326
|
+
*
|
|
327
|
+
* 1. The verdict uses the **full detection rule**, not the bare substring.
|
|
328
|
+
* A v1 wikilink (`</docs/api>`) and an HTML close tag (`</div>`) both
|
|
329
|
+
* start with `</`, and there is no index on `revision.body`, so an
|
|
330
|
+
* index-backed O(1) probe is impossible without a text index (which §9
|
|
331
|
+
* says the framework does not own). We therefore walk published pages and
|
|
332
|
+
* run `bodyHasRewritableWikilink` (the same `shouldRewriteWikilink` filter
|
|
333
|
+
* used by `detect`/stage) on each current-revision body. `</` is kept only
|
|
334
|
+
* as a cheap prefilter inside that helper to skip the regex on bodies that
|
|
335
|
+
* obviously cannot contain a legacy link.
|
|
336
|
+
*
|
|
337
|
+
* This is load-bearing for boot under preflight + `block` (the default):
|
|
338
|
+
* the substring alone would over-match `</div>` and report pending forever
|
|
339
|
+
* even after `migrate apply` — apply rewrites only genuine wikilinks, so
|
|
340
|
+
* HTML close tags survive and a substring verdict would never clear,
|
|
341
|
+
* deadlocking boot (§6.2: a false positive blocks every cluster boot, and
|
|
342
|
+
* here it would be unrecoverable). Using the full rule means once the
|
|
343
|
+
* migration rewrites the genuine wikilinks, a body left with only `</div>`
|
|
344
|
+
* reports false and boot clears.
|
|
345
|
+
* 2. We scan only each page's **current** revision, never the whole
|
|
346
|
+
* `revisions` collection. Historical revisions keep their original
|
|
347
|
+
* `</path>` text forever (revisions are immutable), so a collection-wide
|
|
348
|
+
* scan would report pending permanently after any wikilink page ever
|
|
349
|
+
* existed — even once every live page was rewritten. So we read only the
|
|
350
|
+
* body each page's editor seeds from.
|
|
351
|
+
*
|
|
352
|
+
* We short-circuit at the first page carrying a genuine wikilink, so this
|
|
353
|
+
* stops early rather than reading every page.
|
|
354
|
+
*/
|
|
355
|
+
isPending: async (ctx) => {
|
|
356
|
+
const Page = ctx.crowi.model('Page');
|
|
357
|
+
const Revision = ctx.crowi.model('Revision');
|
|
358
|
+
const cursor = Page.find({ $or: [{ status: page_1.STATUS_PUBLISHED }, { status: null }] })
|
|
359
|
+
.select('_id revision')
|
|
360
|
+
.lean()
|
|
361
|
+
.cursor();
|
|
362
|
+
for await (const page of cursor) {
|
|
363
|
+
const revisionId = page.revision;
|
|
364
|
+
if (!revisionId)
|
|
365
|
+
continue;
|
|
366
|
+
const revision = await Revision.findById(revisionId).select('body').lean().exec();
|
|
367
|
+
const body = revision?.body;
|
|
368
|
+
if (typeof body === 'string' && bodyHasRewritableWikilink(body)) {
|
|
369
|
+
await cursor.close();
|
|
370
|
+
return true;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return false;
|
|
374
|
+
},
|
|
375
|
+
/**
|
|
376
|
+
* Full scan for `plan`: count the pages that actually contain a rewritable
|
|
377
|
+
* occurrence (applying the full `shouldRewriteWikilink` rule, not just the
|
|
378
|
+
* substring pre-filter), plus the total occurrence count. Not called at boot.
|
|
379
|
+
*/
|
|
380
|
+
detect: async (ctx) => {
|
|
381
|
+
const pages = await collectRewritablePages(ctx);
|
|
382
|
+
const totalOccurrences = pages.reduce((sum, p) => sum + p.occurrences, 0);
|
|
383
|
+
return {
|
|
384
|
+
summary: `${pages.length} page(s) contain legacy wikilink syntax (${totalOccurrences} occurrence(s))`,
|
|
385
|
+
counts: { pages: pages.length, occurrences: totalOccurrences },
|
|
386
|
+
};
|
|
387
|
+
},
|
|
388
|
+
stages: [
|
|
389
|
+
{
|
|
390
|
+
name: 'rewrite-wikilink',
|
|
391
|
+
fn: async (ctx) => {
|
|
392
|
+
if (ctx.dryRun) {
|
|
393
|
+
// Preview only — no writes, no acting-user resolution.
|
|
394
|
+
const pages = await collectRewritablePages(ctx);
|
|
395
|
+
return { name: 'rewrite-wikilink', transformed: 0, stats: { wouldRewrite: pages.length } };
|
|
396
|
+
}
|
|
397
|
+
const actingUserId = await resolveActingUserId(ctx);
|
|
398
|
+
const pages = await collectRewritablePages(ctx);
|
|
399
|
+
ctx.progress.setTotal(pages.length);
|
|
400
|
+
let rewritten = 0;
|
|
401
|
+
// Bounded concurrency is owned by the runner; the stage walks pages
|
|
402
|
+
// serially through `ctx.rewritePageBody` (each call re-fetches the live
|
|
403
|
+
// page doc, prepares a revision, and pushes it — routing through the
|
|
404
|
+
// `updatePage`-equivalent path so yjsState / yjsCheckpointAt are nulled).
|
|
405
|
+
for (const page of pages) {
|
|
406
|
+
await ctx.rewritePageBody(page.pageId, page.newBody, { userId: actingUserId });
|
|
407
|
+
rewritten += 1;
|
|
408
|
+
ctx.progress.increment();
|
|
409
|
+
}
|
|
410
|
+
if (rewritten > 0) {
|
|
411
|
+
ctx.logger.info(`wikilink-format: rewrote ${rewritten} page(s) via the updatePage path (yjsState invalidated)`);
|
|
412
|
+
}
|
|
413
|
+
return { name: 'rewrite-wikilink', transformed: rewritten };
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
],
|
|
417
|
+
});
|
|
418
|
+
//# sourceMappingURL=wikilink-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wikilink-format.js","sourceRoot":"","sources":["../../../src/migration/migrations/wikilink-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type Crowi from '../crowi';
|
|
2
|
+
import { type RebuildOutcome } from './rebuild-runner';
|
|
3
|
+
/**
|
|
4
|
+
* RFC-0008 §8.5 — the api-side surface the `@crowi/admin-cli` `rebuild`
|
|
5
|
+
* commands consume.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors `cli-api.ts` (the `migrate` façade): the admin CLI is a separate
|
|
8
|
+
* process that `require`s the api's compiled `dist/`, so it talks to a small
|
|
9
|
+
* stable façade rather than reaching into `rebuild-runner.ts` / `rebuilds/`
|
|
10
|
+
* individually. Every entry point routes through `RebuildRunner` so dry-run /
|
|
11
|
+
* progress / SIGINT / structured logging are shared with `migrate` — but with
|
|
12
|
+
* NO `migrationApplications` coupling (§8.5: rebuilds have no pending/applied
|
|
13
|
+
* concept).
|
|
14
|
+
*/
|
|
15
|
+
/** Optional progress callback surfaced to the CLI (label + monotonically increasing count). */
|
|
16
|
+
export interface RebuildProgress {
|
|
17
|
+
onLabel?: (label: string) => void;
|
|
18
|
+
onIncrement?: (current: number) => void;
|
|
19
|
+
}
|
|
20
|
+
export interface RebuildSearchOptions {
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
progress?: RebuildProgress;
|
|
23
|
+
}
|
|
24
|
+
export interface RebuildStorageCopyOptions {
|
|
25
|
+
from: string;
|
|
26
|
+
to: string;
|
|
27
|
+
dryRun?: boolean;
|
|
28
|
+
progress?: RebuildProgress;
|
|
29
|
+
}
|
|
30
|
+
export interface RebuildRendererOptions {
|
|
31
|
+
onlyStale?: boolean;
|
|
32
|
+
dryRun?: boolean;
|
|
33
|
+
progress?: RebuildProgress;
|
|
34
|
+
}
|
|
35
|
+
export interface RebuildBacklinkOptions {
|
|
36
|
+
dryRun?: boolean;
|
|
37
|
+
progress?: RebuildProgress;
|
|
38
|
+
}
|
|
39
|
+
/** Façade over the rebuild runner + task registry for the CLI. */
|
|
40
|
+
export declare class RebuildCliApi {
|
|
41
|
+
private readonly crowi;
|
|
42
|
+
constructor(crowi: Crowi);
|
|
43
|
+
private buildRunner;
|
|
44
|
+
rebuildSearch(opts?: RebuildSearchOptions): Promise<RebuildOutcome>;
|
|
45
|
+
rebuildStorageCopy(opts: RebuildStorageCopyOptions): Promise<RebuildOutcome>;
|
|
46
|
+
rebuildRenderer(opts?: RebuildRendererOptions): Promise<RebuildOutcome>;
|
|
47
|
+
rebuildBacklink(opts?: RebuildBacklinkOptions): Promise<RebuildOutcome>;
|
|
48
|
+
}
|
|
49
|
+
/** Convenience factory used by the CLI's `require(dist/migration/rebuild-api)`. */
|
|
50
|
+
export declare function createRebuildCliApi(crowi: Crowi): RebuildCliApi;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RebuildCliApi = void 0;
|
|
4
|
+
exports.createRebuildCliApi = createRebuildCliApi;
|
|
5
|
+
const rebuild_runner_1 = require("./rebuild-runner");
|
|
6
|
+
const rebuilds_1 = require("./rebuilds");
|
|
7
|
+
/** Façade over the rebuild runner + task registry for the CLI. */
|
|
8
|
+
class RebuildCliApi {
|
|
9
|
+
crowi;
|
|
10
|
+
constructor(crowi) {
|
|
11
|
+
this.crowi = crowi;
|
|
12
|
+
}
|
|
13
|
+
buildRunner(dryRun, progress) {
|
|
14
|
+
let count = 0;
|
|
15
|
+
return new rebuild_runner_1.RebuildRunner(this.crowi, {
|
|
16
|
+
dryRun,
|
|
17
|
+
progress: {
|
|
18
|
+
setTotal: () => undefined,
|
|
19
|
+
increment: (delta = 1) => {
|
|
20
|
+
count += delta;
|
|
21
|
+
progress?.onIncrement?.(count);
|
|
22
|
+
},
|
|
23
|
+
setLabel: (label) => progress?.onLabel?.(label),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
rebuildSearch(opts = {}) {
|
|
28
|
+
return this.buildRunner(opts.dryRun, opts.progress).run(rebuilds_1.searchRebuild);
|
|
29
|
+
}
|
|
30
|
+
rebuildStorageCopy(opts) {
|
|
31
|
+
return this.buildRunner(opts.dryRun, opts.progress).run((0, rebuilds_1.storageCopyRebuild)({ from: opts.from, to: opts.to }));
|
|
32
|
+
}
|
|
33
|
+
rebuildRenderer(opts = {}) {
|
|
34
|
+
return this.buildRunner(opts.dryRun, opts.progress).run((0, rebuilds_1.rendererRebuild)({ onlyStale: opts.onlyStale ?? false }));
|
|
35
|
+
}
|
|
36
|
+
rebuildBacklink(opts = {}) {
|
|
37
|
+
return this.buildRunner(opts.dryRun, opts.progress).run(rebuilds_1.backlinkRebuild);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.RebuildCliApi = RebuildCliApi;
|
|
41
|
+
/** Convenience factory used by the CLI's `require(dist/migration/rebuild-api)`. */
|
|
42
|
+
function createRebuildCliApi(crowi) {
|
|
43
|
+
return new RebuildCliApi(crowi);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=rebuild-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rebuild-api.js","sourceRoot":"","sources":["../../src/migration/rebuild-api.ts"],"names":[],"mappings":";;;AAqFA,kDAEC;AArFD,qDAAsE;AACtE,yCAAiG;AAyCjG,kEAAkE;AAClE,MAAa,aAAa;IACP,KAAK,CAAQ;IAE9B,YAAY,KAAY;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,WAAW,CAAC,MAA2B,EAAE,QAAqC;QACpF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,8BAAa,CAAC,IAAI,CAAC,KAAK,EAAE;YACnC,MAAM;YACN,QAAQ,EAAE;gBACR,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;gBACzB,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE;oBACvB,KAAK,IAAI,KAAK,CAAC;oBACf,QAAQ,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC;aAChD;SACF,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,OAA6B,EAAE;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,wBAAa,CAAC,CAAC;IACzE,CAAC;IAED,kBAAkB,CAAC,IAA+B;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAA,6BAAkB,EAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,eAAe,CAAC,OAA+B,EAAE;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAA,0BAAe,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;IACnH,CAAC;IAED,eAAe,CAAC,OAA+B,EAAE;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,0BAAe,CAAC,CAAC;IAC3E,CAAC;CACF;AArCD,sCAqCC;AAED,mFAAmF;AACnF,SAAgB,mBAAmB,CAAC,KAAY;IAC9C,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type Crowi from '../crowi';
|
|
2
|
+
import { MigrationRunnerCore, type RunnerOptions } from './runner';
|
|
3
|
+
import type { MigrationContext } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* RFC-0008 §8.5 — rebuild tasks.
|
|
6
|
+
*
|
|
7
|
+
* A *rebuild* regenerates derived data (search index / render cache /
|
|
8
|
+
* backlinks / a fresh copy of stored objects). Unlike a migration it is
|
|
9
|
+
* **version-independent** and has **no pending/applied concept** — it can run
|
|
10
|
+
* any time, any number of times. Consequently a rebuild MUST NOT touch the
|
|
11
|
+
* `migrationApplications` audit log: it shares the runner's *infrastructure*
|
|
12
|
+
* (dry-run / progress / bounded concurrency / SIGINT / structured logging /
|
|
13
|
+
* the per-run `MigrationContext`) via `MigrationRunnerCore`, but rides none of
|
|
14
|
+
* the migrate-only reconciliation/record path.
|
|
15
|
+
*
|
|
16
|
+
* This split keeps `MigrationRunner.apply` free of any `if (rebuild)` branch
|
|
17
|
+
* (the two namespaces are distinct subclasses of the shared core, not flags on
|
|
18
|
+
* one code path), and makes "rebuilds never write audit rows" a structural
|
|
19
|
+
* guarantee rather than a convention.
|
|
20
|
+
*/
|
|
21
|
+
/** Outcome of a single rebuild run, surfaced to the CLI for the summary block. */
|
|
22
|
+
export interface RebuildOutcome {
|
|
23
|
+
/** Stable task id (e.g. 'search', 'storage-copy'). */
|
|
24
|
+
id: string;
|
|
25
|
+
durationMs: number;
|
|
26
|
+
/** True when SIGINT aborted the run before it finished. */
|
|
27
|
+
interrupted: boolean;
|
|
28
|
+
/** Free-form per-task result detail rendered by the CLI. */
|
|
29
|
+
stats: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A rebuild task. Receives the shared `MigrationContext` (dry-run / progress /
|
|
33
|
+
* logger / crowi) plus the owning runner so it can fan work out through the
|
|
34
|
+
* shared bounded-concurrency limiter and consult the SIGINT abort flag. It
|
|
35
|
+
* returns its own per-task stats — there is no audit record and no pending
|
|
36
|
+
* probe (§8.5).
|
|
37
|
+
*/
|
|
38
|
+
export interface RebuildTask {
|
|
39
|
+
/** Stable identifier for logs / summary (e.g. 'search'). */
|
|
40
|
+
id: string;
|
|
41
|
+
/** Short human-readable description. */
|
|
42
|
+
description: string;
|
|
43
|
+
/** Do the work. MUST no-op writes when `ctx.dryRun` is true. */
|
|
44
|
+
run(ctx: MigrationContext, runner: RebuildRunner): Promise<Record<string, unknown>>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Identity helper mirroring `defineMigration` so a rebuild module gets
|
|
48
|
+
* inference from a single import.
|
|
49
|
+
*/
|
|
50
|
+
export declare function defineRebuild(task: RebuildTask): RebuildTask;
|
|
51
|
+
/**
|
|
52
|
+
* The `rebuild`-namespace runner. Rides the shared `MigrationRunnerCore`
|
|
53
|
+
* (dry-run / progress / SIGINT / bounded concurrency / Yjs ctx) with **no**
|
|
54
|
+
* `migrationApplications` coupling (§8.5).
|
|
55
|
+
*/
|
|
56
|
+
export declare class RebuildRunner extends MigrationRunnerCore {
|
|
57
|
+
constructor(crowi: Crowi, options?: RunnerOptions);
|
|
58
|
+
/**
|
|
59
|
+
* Run one rebuild task through the shared infrastructure. Installs the
|
|
60
|
+
* SIGINT handler for the duration so a long rebuild can wind down safely,
|
|
61
|
+
* and never appends to the audit log (§8.5).
|
|
62
|
+
*/
|
|
63
|
+
run(task: RebuildTask): Promise<RebuildOutcome>;
|
|
64
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RebuildRunner = void 0;
|
|
4
|
+
exports.defineRebuild = defineRebuild;
|
|
5
|
+
const runner_1 = require("./runner");
|
|
6
|
+
/**
|
|
7
|
+
* Identity helper mirroring `defineMigration` so a rebuild module gets
|
|
8
|
+
* inference from a single import.
|
|
9
|
+
*/
|
|
10
|
+
function defineRebuild(task) {
|
|
11
|
+
return task;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The `rebuild`-namespace runner. Rides the shared `MigrationRunnerCore`
|
|
15
|
+
* (dry-run / progress / SIGINT / bounded concurrency / Yjs ctx) with **no**
|
|
16
|
+
* `migrationApplications` coupling (§8.5).
|
|
17
|
+
*/
|
|
18
|
+
class RebuildRunner extends runner_1.MigrationRunnerCore {
|
|
19
|
+
constructor(crowi, options = {}) {
|
|
20
|
+
super(crowi, options);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Run one rebuild task through the shared infrastructure. Installs the
|
|
24
|
+
* SIGINT handler for the duration so a long rebuild can wind down safely,
|
|
25
|
+
* and never appends to the audit log (§8.5).
|
|
26
|
+
*/
|
|
27
|
+
async run(task) {
|
|
28
|
+
const dispose = this.installSigintHandler();
|
|
29
|
+
const startedAt = Date.now();
|
|
30
|
+
try {
|
|
31
|
+
this.context.logger.info(`rebuild ${task.id}: ${task.description}${this.context.dryRun ? ' (dry-run)' : ''}`);
|
|
32
|
+
this.context.progress.setLabel(`rebuild:${task.id}`);
|
|
33
|
+
const stats = await task.run(this.context, this);
|
|
34
|
+
return { id: task.id, durationMs: Date.now() - startedAt, interrupted: this.aborted, stats };
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
dispose();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.RebuildRunner = RebuildRunner;
|
|
42
|
+
//# sourceMappingURL=rebuild-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rebuild-runner.js","sourceRoot":"","sources":["../../src/migration/rebuild-runner.ts"],"names":[],"mappings":";;;AAsDA,sCAEC;AAtDD,qCAAmE;AAgDnE;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAiB;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAa,aAAc,SAAQ,4BAAmB;IACpD,YAAY,KAAY,EAAE,UAAyB,EAAE;QACnD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,IAAiB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9G,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACjD,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/F,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAtBD,sCAsBC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type RebuildTask } from '../rebuild-runner';
|
|
2
|
+
/**
|
|
3
|
+
* RFC-0008 §8.5 — the registered rebuild tasks.
|
|
4
|
+
*
|
|
5
|
+
* Each task wires an existing api-side `run*` helper onto the shared
|
|
6
|
+
* `RebuildRunner` so the `--dry-run` / progress / SIGINT / structured-logging
|
|
7
|
+
* conventions are uniform. Tasks carry NO pending/applied state (§8.5): they
|
|
8
|
+
* never read or append `migrationApplications`.
|
|
9
|
+
*
|
|
10
|
+
* `search` and `storage-copy` port the previously top-level `search rebuild` /
|
|
11
|
+
* `storage copy` commands (their core logic stays in `util/`, unchanged);
|
|
12
|
+
* `renderer` and `backlink` are skeletons whose `run*` helpers throw a clear
|
|
13
|
+
* "not implemented" error (no legacy implementation to port).
|
|
14
|
+
*/
|
|
15
|
+
export declare const searchRebuild: RebuildTask;
|
|
16
|
+
/** Options threaded from the CLI into the storage-copy task via the runner. */
|
|
17
|
+
export interface StorageCopyTaskOptions {
|
|
18
|
+
from: string;
|
|
19
|
+
to: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function storageCopyRebuild(opts: StorageCopyTaskOptions): RebuildTask;
|
|
22
|
+
export interface RendererTaskOptions {
|
|
23
|
+
onlyStale: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function rendererRebuild(opts: RendererTaskOptions): RebuildTask;
|
|
26
|
+
export declare const backlinkRebuild: RebuildTask;
|