@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,602 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EDITING_REFRESH_MS = exports.EDITING_TTL_MS = exports.EDITING_HASH_PREFIX = exports.VIEWER_TTL_MS = exports.VIEWER_HASH_PREFIX = exports.PRESENCE_UPDATES_CHANNEL = exports._setPresenceServiceForTesting = void 0;
|
|
7
|
+
exports.createPresenceService = createPresenceService;
|
|
8
|
+
exports.getPresenceService = getPresenceService;
|
|
9
|
+
exports.createPresenceCollabDeps = createPresenceCollabDeps;
|
|
10
|
+
const node_events_1 = require("node:events");
|
|
11
|
+
const debug_1 = __importDefault(require("debug"));
|
|
12
|
+
const debug = (0, debug_1.default)('crowi:service:presence');
|
|
13
|
+
/**
|
|
14
|
+
* RFC-0005 — page-presence service.
|
|
15
|
+
*
|
|
16
|
+
* Tracks which users are currently *viewing* a page (the live-presence
|
|
17
|
+
* row above the page title). Editor-side presence (peer cursors,
|
|
18
|
+
* typing badges) is RFC-0003's concern and lives in `@crowi/collab`.
|
|
19
|
+
*
|
|
20
|
+
* Replaces the RFC-0003 Phase 5 `markEditing` no-op stub that
|
|
21
|
+
* previously occupied this file — the swap point the stub's comment
|
|
22
|
+
* promised. The collab package still calls into presence through a
|
|
23
|
+
* dependency-injected adapter (`createPresenceCollabDeps` below) so
|
|
24
|
+
* `@crowi/collab` never imports `@crowi/api`.
|
|
25
|
+
*
|
|
26
|
+
* Wire-level design:
|
|
27
|
+
*
|
|
28
|
+
* - Viewer hash: `crowi:presence:viewers:<pageId>` — a Redis hash,
|
|
29
|
+
* one field per viewing `userId`, value a JSON blob with the
|
|
30
|
+
* viewer's denormalised identity + `joinedAt` + `lastHeartbeatAt`.
|
|
31
|
+
* - TTL: the hash carries a *key-level* `EXPIRE` (re-applied on every
|
|
32
|
+
* write) so an idle page's hash evaporates. Per-*field* TTL would
|
|
33
|
+
* need `HEXPIRE` (Redis 7.4 / node-redis v5) which this codebase's
|
|
34
|
+
* node-redis v4.7 does not expose — instead each field stores
|
|
35
|
+
* `lastHeartbeatAt` and `listViewers` filters out entries whose
|
|
36
|
+
* last heartbeat is older than `VIEWER_TTL_MS`, sweeping the stale
|
|
37
|
+
* fields from the hash as a side effect.
|
|
38
|
+
* - Pub/sub: `crowi:presence:updates` carries `<pageId>` strings.
|
|
39
|
+
* When a viewer joins / leaves on api instance A, A publishes the
|
|
40
|
+
* pageId; every instance (including A) re-broadcasts the fresh
|
|
41
|
+
* viewer list to its locally-connected clients. Same
|
|
42
|
+
* Redis-as-shared-state pattern as RFC-0003.
|
|
43
|
+
* - `isEditing`: NOT stored in the viewer hash. It is derived at
|
|
44
|
+
* `listViewers` time from a dedicated, short-lived *editing hash*
|
|
45
|
+
* `crowi:presence:editing:<pageId>` — one field per editor
|
|
46
|
+
* connection (`<userId>:<socketId>`), value `lastSeenAt`
|
|
47
|
+
* (epoch-ms). The collab process refreshes its own fields every
|
|
48
|
+
* `EDITING_REFRESH_MS`; a field older than `EDITING_TTL_MS` is
|
|
49
|
+
* considered stale and swept. This replaces the earlier design
|
|
50
|
+
* that joined the RFC-0003 editor-cap Set: that Set is a *soft
|
|
51
|
+
* concurrency-limit counter* with a 24h key TTL whose members are
|
|
52
|
+
* only SREM'd on a clean `onDisconnect`, so an api crash / restart
|
|
53
|
+
* could leave stale members for up to 24h and paint the `✏️` badge
|
|
54
|
+
* on plain viewers. The editing hash self-heals: when the editing
|
|
55
|
+
* process dies it stops refreshing, and every field ages out
|
|
56
|
+
* within `EDITING_TTL_MS`.
|
|
57
|
+
*
|
|
58
|
+
* Fail-soft posture: when `crowi.redis` is null (REDIS_URL unset,
|
|
59
|
+
* single-instance dev) presence degrades to an in-process-only store
|
|
60
|
+
* with no cross-instance fan-out. The `/presence` WebSocket still works
|
|
61
|
+
* for viewers connected to the same process.
|
|
62
|
+
*/
|
|
63
|
+
/** Redis key prefix for the per-page viewer hash. */
|
|
64
|
+
const VIEWER_HASH_PREFIX = 'crowi:presence:viewers:';
|
|
65
|
+
exports.VIEWER_HASH_PREFIX = VIEWER_HASH_PREFIX;
|
|
66
|
+
/** Redis pub/sub channel for cross-instance viewer-list invalidation. */
|
|
67
|
+
const PRESENCE_UPDATES_CHANNEL = 'crowi:presence:updates';
|
|
68
|
+
exports.PRESENCE_UPDATES_CHANNEL = PRESENCE_UPDATES_CHANNEL;
|
|
69
|
+
/**
|
|
70
|
+
* Redis key prefix for the per-page *editing hash* — the presence-owned
|
|
71
|
+
* short-lived editing signal that drives the `✏️` badge. One field per
|
|
72
|
+
* editor connection (`<userId>:<socketId>`), value `lastSeenAt`.
|
|
73
|
+
*/
|
|
74
|
+
const EDITING_HASH_PREFIX = 'crowi:presence:editing:';
|
|
75
|
+
exports.EDITING_HASH_PREFIX = EDITING_HASH_PREFIX;
|
|
76
|
+
/**
|
|
77
|
+
* A viewer entry is considered live for 30s after its last heartbeat.
|
|
78
|
+
* The browser heartbeats every 15s, so a viewer normally refreshes
|
|
79
|
+
* twice within the window; a single dropped heartbeat does not evict.
|
|
80
|
+
*/
|
|
81
|
+
const VIEWER_TTL_MS = 30_000;
|
|
82
|
+
exports.VIEWER_TTL_MS = VIEWER_TTL_MS;
|
|
83
|
+
/**
|
|
84
|
+
* Key-level TTL for the viewer hash. Comfortably above `VIEWER_TTL_MS`
|
|
85
|
+
* so a page with one slow-to-leave viewer keeps its hash, but bounded
|
|
86
|
+
* so an abandoned page's hash is reaped within a minute of the last
|
|
87
|
+
* heartbeat even if no `leave` ever fires.
|
|
88
|
+
*/
|
|
89
|
+
const VIEWER_HASH_TTL_SECONDS = 60;
|
|
90
|
+
/**
|
|
91
|
+
* An editing-hash field is considered live for 30s after its last
|
|
92
|
+
* refresh. The collab process refreshes every `EDITING_REFRESH_MS`
|
|
93
|
+
* (10s) so a healthy editor field stays comfortably fresh; once the
|
|
94
|
+
* editing process dies and stops refreshing, the field ages out within
|
|
95
|
+
* this window and the badge disappears.
|
|
96
|
+
*/
|
|
97
|
+
const EDITING_TTL_MS = 30_000;
|
|
98
|
+
exports.EDITING_TTL_MS = EDITING_TTL_MS;
|
|
99
|
+
/**
|
|
100
|
+
* Key-level TTL for the editing hash, re-applied on every write.
|
|
101
|
+
* Comfortably above `EDITING_TTL_MS` so a slow-to-disconnect editor
|
|
102
|
+
* keeps the hash, but bounded so an abandoned page's editing hash is
|
|
103
|
+
* reaped even if no `unmarkEditing` ever fires.
|
|
104
|
+
*/
|
|
105
|
+
const EDITING_HASH_TTL_SECONDS = 60;
|
|
106
|
+
/**
|
|
107
|
+
* Interval at which the collab→presence adapter refreshes the
|
|
108
|
+
* `lastSeenAt` of every live editor connection it owns. Well under
|
|
109
|
+
* `EDITING_TTL_MS` so a single missed tick does not age a field out.
|
|
110
|
+
*/
|
|
111
|
+
const EDITING_REFRESH_MS = 10_000;
|
|
112
|
+
exports.EDITING_REFRESH_MS = EDITING_REFRESH_MS;
|
|
113
|
+
const viewerHashKey = (pageId) => `${VIEWER_HASH_PREFIX}${pageId}`;
|
|
114
|
+
const editingHashKey = (pageId) => `${EDITING_HASH_PREFIX}${pageId}`;
|
|
115
|
+
const editingField = (userId, socketId) => `${userId}:${socketId}`;
|
|
116
|
+
/** Inverse of `editingField` — the `userId` portion of a `<userId>:<socketId>` field. */
|
|
117
|
+
const editingFieldUserId = (field) => {
|
|
118
|
+
const sep = field.indexOf(':');
|
|
119
|
+
return sep < 0 ? field : field.slice(0, sep);
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Build a presence service.
|
|
123
|
+
*
|
|
124
|
+
* - `redis` present → cross-instance mode: viewer state in Redis,
|
|
125
|
+
* change notifications fan out via pub/sub.
|
|
126
|
+
* - `redis` null → single-instance mode: viewer state in a
|
|
127
|
+
* process-local Map, change notifications are emitted directly.
|
|
128
|
+
*
|
|
129
|
+
* The two modes share the same `PresenceService` surface so the
|
|
130
|
+
* `/presence` handler never branches on Redis availability.
|
|
131
|
+
*/
|
|
132
|
+
async function createPresenceService(redis) {
|
|
133
|
+
// Local EventEmitter the `/presence` handler subscribes to. In Redis
|
|
134
|
+
// mode it is fed by the pub/sub subscriber + local publishes; in
|
|
135
|
+
// single-instance mode it is emitted directly.
|
|
136
|
+
const emitter = new node_events_1.EventEmitter();
|
|
137
|
+
// EventEmitter's default 10-listener cap warns once per page with
|
|
138
|
+
// many connected sockets; presence legitimately has one listener per
|
|
139
|
+
// connected socket, so lift the cap.
|
|
140
|
+
emitter.setMaxListeners(0);
|
|
141
|
+
const emitChange = (pageId) => {
|
|
142
|
+
emitter.emit('change', pageId);
|
|
143
|
+
};
|
|
144
|
+
if (redis === null) {
|
|
145
|
+
return createInProcessPresenceService(emitter, emitChange);
|
|
146
|
+
}
|
|
147
|
+
return createRedisPresenceService(redis, emitter, emitChange);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Single-instance (no Redis) implementation. Viewer state lives in a
|
|
151
|
+
* process-local Map; the editing signal is tracked in a parallel
|
|
152
|
+
* process-local Map (`editing`), keyed `<pageId>` → `<userId>:<socketId>`
|
|
153
|
+
* → `lastSeenAt`, mirroring the Redis editing hash. `isEditing` is
|
|
154
|
+
* therefore accurate in single-instance dev too.
|
|
155
|
+
*/
|
|
156
|
+
function createInProcessPresenceService(emitter, emitChange) {
|
|
157
|
+
const pages = new Map();
|
|
158
|
+
// pageId → (`<userId>:<socketId>` → lastSeenAt). Mirrors the Redis
|
|
159
|
+
// editing hash for the no-Redis dev path.
|
|
160
|
+
const editing = new Map();
|
|
161
|
+
const pageMap = (pageId) => {
|
|
162
|
+
let m = pages.get(pageId);
|
|
163
|
+
if (!m) {
|
|
164
|
+
m = new Map();
|
|
165
|
+
pages.set(pageId, m);
|
|
166
|
+
}
|
|
167
|
+
return m;
|
|
168
|
+
};
|
|
169
|
+
const editingMap = (pageId) => {
|
|
170
|
+
let m = editing.get(pageId);
|
|
171
|
+
if (!m) {
|
|
172
|
+
m = new Map();
|
|
173
|
+
editing.set(pageId, m);
|
|
174
|
+
}
|
|
175
|
+
return m;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Set of userIds with a fresh editing signal for a page. Stale
|
|
179
|
+
* fields (older than `EDITING_TTL_MS`) are swept as a side effect —
|
|
180
|
+
* same pattern as the Redis implementation.
|
|
181
|
+
*/
|
|
182
|
+
const editingUserIds = (pageId) => {
|
|
183
|
+
const m = editing.get(pageId);
|
|
184
|
+
const ids = new Set();
|
|
185
|
+
if (!m)
|
|
186
|
+
return ids;
|
|
187
|
+
const cutoff = Date.now() - EDITING_TTL_MS;
|
|
188
|
+
for (const [field, lastSeenAt] of m) {
|
|
189
|
+
if (lastSeenAt < cutoff) {
|
|
190
|
+
m.delete(field);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
ids.add(editingFieldUserId(field));
|
|
194
|
+
}
|
|
195
|
+
return ids;
|
|
196
|
+
};
|
|
197
|
+
return {
|
|
198
|
+
async join(pageId, viewer) {
|
|
199
|
+
const now = Date.now();
|
|
200
|
+
const m = pageMap(pageId);
|
|
201
|
+
const existing = m.get(viewer.userId);
|
|
202
|
+
m.set(viewer.userId, {
|
|
203
|
+
userId: viewer.userId,
|
|
204
|
+
username: viewer.username,
|
|
205
|
+
displayName: viewer.displayName,
|
|
206
|
+
avatarUrl: viewer.avatarUrl,
|
|
207
|
+
joinedAt: existing?.joinedAt ?? now,
|
|
208
|
+
lastHeartbeatAt: now,
|
|
209
|
+
});
|
|
210
|
+
emitChange(pageId);
|
|
211
|
+
},
|
|
212
|
+
async heartbeat(pageId, userId) {
|
|
213
|
+
const entry = pages.get(pageId)?.get(userId);
|
|
214
|
+
if (!entry)
|
|
215
|
+
return false;
|
|
216
|
+
entry.lastHeartbeatAt = Date.now();
|
|
217
|
+
return true;
|
|
218
|
+
},
|
|
219
|
+
async leave(pageId, userId) {
|
|
220
|
+
if (pages.get(pageId)?.delete(userId)) {
|
|
221
|
+
emitChange(pageId);
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
async listViewers(pageId) {
|
|
225
|
+
const m = pages.get(pageId);
|
|
226
|
+
if (!m)
|
|
227
|
+
return [];
|
|
228
|
+
const cutoff = Date.now() - VIEWER_TTL_MS;
|
|
229
|
+
const editingIds = editingUserIds(pageId);
|
|
230
|
+
const out = [];
|
|
231
|
+
for (const [userId, entry] of m) {
|
|
232
|
+
if (entry.lastHeartbeatAt < cutoff) {
|
|
233
|
+
m.delete(userId);
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
out.push({
|
|
237
|
+
userId: entry.userId,
|
|
238
|
+
username: entry.username,
|
|
239
|
+
displayName: entry.displayName,
|
|
240
|
+
avatarUrl: entry.avatarUrl,
|
|
241
|
+
isEditing: editingIds.has(entry.userId),
|
|
242
|
+
joinedAt: entry.joinedAt,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
return out.sort((a, b) => a.joinedAt - b.joinedAt);
|
|
246
|
+
},
|
|
247
|
+
async markEditing(pageId, userId, socketId) {
|
|
248
|
+
editingMap(pageId).set(editingField(userId, socketId), Date.now());
|
|
249
|
+
emitChange(pageId);
|
|
250
|
+
},
|
|
251
|
+
async refreshEditing(pageId, userId, socketId) {
|
|
252
|
+
// Keep-alive only — no broadcast (the editing set is unchanged).
|
|
253
|
+
editingMap(pageId).set(editingField(userId, socketId), Date.now());
|
|
254
|
+
},
|
|
255
|
+
async unmarkEditing(pageId, userId, socketId) {
|
|
256
|
+
editing.get(pageId)?.delete(editingField(userId, socketId));
|
|
257
|
+
emitChange(pageId);
|
|
258
|
+
},
|
|
259
|
+
onViewersChanged(listener) {
|
|
260
|
+
emitter.on('change', listener);
|
|
261
|
+
return () => emitter.off('change', listener);
|
|
262
|
+
},
|
|
263
|
+
async shutdown() {
|
|
264
|
+
emitter.removeAllListeners();
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Cross-instance (Redis) implementation.
|
|
270
|
+
*
|
|
271
|
+
* A *dedicated* subscriber client is duplicated off the shared
|
|
272
|
+
* `crowi.redis` — node-redis v4 puts a connection into subscriber mode
|
|
273
|
+
* on `subscribe`, after which it can no longer issue regular commands,
|
|
274
|
+
* so the hash writes must go through the original (non-subscriber)
|
|
275
|
+
* client.
|
|
276
|
+
*/
|
|
277
|
+
async function createRedisPresenceService(redis, emitter, emitChange) {
|
|
278
|
+
let subscriber = null;
|
|
279
|
+
try {
|
|
280
|
+
const dup = redis.duplicate();
|
|
281
|
+
await dup.connect();
|
|
282
|
+
await dup.subscribe(PRESENCE_UPDATES_CHANNEL, (message) => {
|
|
283
|
+
// The published message is the bare pageId.
|
|
284
|
+
if (message)
|
|
285
|
+
emitChange(message);
|
|
286
|
+
});
|
|
287
|
+
subscriber = dup;
|
|
288
|
+
debug('presence pub/sub subscriber connected on %s', PRESENCE_UPDATES_CHANNEL);
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
// A subscriber failure degrades presence to single-instance
|
|
292
|
+
// behaviour for *this* process — local clients still work, but
|
|
293
|
+
// cross-instance fan-out is lost. Never fatal.
|
|
294
|
+
console.warn('[crowi:presence] pub/sub subscriber setup failed — cross-instance fan-out disabled:', err.message);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Publish a viewer-list change. Also emits locally so the publishing
|
|
298
|
+
* instance re-broadcasts without waiting for the pub/sub round-trip.
|
|
299
|
+
* The subscriber on *this* process will also see the published
|
|
300
|
+
* message and fire `change` again — harmless (the second broadcast
|
|
301
|
+
* sends an identical viewer list); emitting locally is the
|
|
302
|
+
* lower-latency path and the subscriber is what reaches the *other*
|
|
303
|
+
* instances.
|
|
304
|
+
*/
|
|
305
|
+
const publishChange = async (pageId) => {
|
|
306
|
+
emitChange(pageId);
|
|
307
|
+
try {
|
|
308
|
+
await redis.publish(PRESENCE_UPDATES_CHANNEL, pageId);
|
|
309
|
+
}
|
|
310
|
+
catch (err) {
|
|
311
|
+
console.warn(`[crowi:presence] publish failed for page ${pageId}:`, err.message);
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
/** Read + parse the viewer hash, dropping fields that fail to parse. */
|
|
315
|
+
const readHash = async (pageId) => {
|
|
316
|
+
const raw = await redis.hGetAll(viewerHashKey(pageId));
|
|
317
|
+
const out = new Map();
|
|
318
|
+
for (const [userId, json] of Object.entries(raw ?? {})) {
|
|
319
|
+
try {
|
|
320
|
+
const parsed = JSON.parse(json);
|
|
321
|
+
if (parsed && typeof parsed.lastHeartbeatAt === 'number') {
|
|
322
|
+
out.set(userId, parsed);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Corrupt field — ignore; it expires with the hash TTL.
|
|
327
|
+
debug('dropping unparseable viewer field user=%s page=%s', userId, pageId);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return out;
|
|
331
|
+
};
|
|
332
|
+
/**
|
|
333
|
+
* Extract the set of userIds currently editing this page from the
|
|
334
|
+
* presence-owned editing hash. Fields are `<userId>:<socketId>` with
|
|
335
|
+
* a `lastSeenAt` value; a field older than `EDITING_TTL_MS` is stale
|
|
336
|
+
* and swept from the hash as a side effect (same pattern as the
|
|
337
|
+
* viewer-hash stale sweep). A user with multiple editor tabs appears
|
|
338
|
+
* once in the resulting set.
|
|
339
|
+
*/
|
|
340
|
+
const editingUserIds = async (pageId) => {
|
|
341
|
+
try {
|
|
342
|
+
const raw = await redis.hGetAll(editingHashKey(pageId));
|
|
343
|
+
const ids = new Set();
|
|
344
|
+
const stale = [];
|
|
345
|
+
const cutoff = Date.now() - EDITING_TTL_MS;
|
|
346
|
+
for (const [field, value] of Object.entries(raw ?? {})) {
|
|
347
|
+
const lastSeenAt = Number(value);
|
|
348
|
+
if (!Number.isFinite(lastSeenAt) || lastSeenAt < cutoff) {
|
|
349
|
+
stale.push(field);
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
ids.add(editingFieldUserId(field));
|
|
353
|
+
}
|
|
354
|
+
if (stale.length > 0) {
|
|
355
|
+
try {
|
|
356
|
+
await redis.hDel(editingHashKey(pageId), stale);
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
debug('stale editing-field sweep failed for page %s: %s', pageId, err.message);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return ids;
|
|
363
|
+
}
|
|
364
|
+
catch (err) {
|
|
365
|
+
// Editing is advisory — a failed read just means no `✏️` badge.
|
|
366
|
+
console.warn(`[crowi:presence] editing-hash read failed for page ${pageId}:`, err.message);
|
|
367
|
+
return new Set();
|
|
368
|
+
}
|
|
369
|
+
};
|
|
370
|
+
/**
|
|
371
|
+
* Write (or refresh) an editing-hash field's `lastSeenAt` and re-apply
|
|
372
|
+
* the key TTL. Shared by `markEditing` and `refreshEditing`; failures
|
|
373
|
+
* are warn-only (editing is advisory — a failed write just means no
|
|
374
|
+
* `✏️` badge).
|
|
375
|
+
*/
|
|
376
|
+
const writeEditingField = async (pageId, userId, socketId) => {
|
|
377
|
+
const key = editingHashKey(pageId);
|
|
378
|
+
try {
|
|
379
|
+
await redis.hSet(key, editingField(userId, socketId), String(Date.now()));
|
|
380
|
+
await redis.expire(key, EDITING_HASH_TTL_SECONDS);
|
|
381
|
+
}
|
|
382
|
+
catch (err) {
|
|
383
|
+
console.warn(`[crowi:presence] editing-hash write failed for page ${pageId}:`, err.message);
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
return {
|
|
387
|
+
async join(pageId, viewer) {
|
|
388
|
+
const key = viewerHashKey(pageId);
|
|
389
|
+
const now = Date.now();
|
|
390
|
+
// Preserve the original joinedAt across re-joins / extra tabs so
|
|
391
|
+
// avatar ordering stays stable.
|
|
392
|
+
let joinedAt = now;
|
|
393
|
+
try {
|
|
394
|
+
const existingRaw = await redis.hGet(key, viewer.userId);
|
|
395
|
+
if (existingRaw) {
|
|
396
|
+
const existing = JSON.parse(existingRaw);
|
|
397
|
+
if (typeof existing.joinedAt === 'number')
|
|
398
|
+
joinedAt = existing.joinedAt;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
// Treat an unreadable prior entry as a fresh join.
|
|
403
|
+
}
|
|
404
|
+
const stored = {
|
|
405
|
+
userId: viewer.userId,
|
|
406
|
+
username: viewer.username,
|
|
407
|
+
displayName: viewer.displayName,
|
|
408
|
+
avatarUrl: viewer.avatarUrl,
|
|
409
|
+
joinedAt,
|
|
410
|
+
lastHeartbeatAt: now,
|
|
411
|
+
};
|
|
412
|
+
await redis.hSet(key, viewer.userId, JSON.stringify(stored));
|
|
413
|
+
await redis.expire(key, VIEWER_HASH_TTL_SECONDS);
|
|
414
|
+
await publishChange(pageId);
|
|
415
|
+
},
|
|
416
|
+
async heartbeat(pageId, userId) {
|
|
417
|
+
const key = viewerHashKey(pageId);
|
|
418
|
+
const existingRaw = await redis.hGet(key, userId);
|
|
419
|
+
if (!existingRaw)
|
|
420
|
+
return false;
|
|
421
|
+
let existing;
|
|
422
|
+
try {
|
|
423
|
+
existing = JSON.parse(existingRaw);
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
existing.lastHeartbeatAt = Date.now();
|
|
429
|
+
await redis.hSet(key, userId, JSON.stringify(existing));
|
|
430
|
+
await redis.expire(key, VIEWER_HASH_TTL_SECONDS);
|
|
431
|
+
// A heartbeat doesn't change *who* is here, so no broadcast — it
|
|
432
|
+
// only refreshes the TTL.
|
|
433
|
+
return true;
|
|
434
|
+
},
|
|
435
|
+
async leave(pageId, userId) {
|
|
436
|
+
const removed = await redis.hDel(viewerHashKey(pageId), userId);
|
|
437
|
+
if (removed > 0) {
|
|
438
|
+
await publishChange(pageId);
|
|
439
|
+
}
|
|
440
|
+
},
|
|
441
|
+
async listViewers(pageId) {
|
|
442
|
+
const [hash, editing] = await Promise.all([readHash(pageId), editingUserIds(pageId)]);
|
|
443
|
+
const cutoff = Date.now() - VIEWER_TTL_MS;
|
|
444
|
+
const stale = [];
|
|
445
|
+
const out = [];
|
|
446
|
+
for (const [userId, entry] of hash) {
|
|
447
|
+
if (entry.lastHeartbeatAt < cutoff) {
|
|
448
|
+
stale.push(userId);
|
|
449
|
+
continue;
|
|
450
|
+
}
|
|
451
|
+
out.push({
|
|
452
|
+
userId: entry.userId,
|
|
453
|
+
username: entry.username,
|
|
454
|
+
displayName: entry.displayName,
|
|
455
|
+
avatarUrl: entry.avatarUrl,
|
|
456
|
+
isEditing: editing.has(entry.userId),
|
|
457
|
+
joinedAt: entry.joinedAt,
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
// Sweep stale fields so an abandoned page eventually empties its
|
|
461
|
+
// hash even with HEXPIRE unavailable.
|
|
462
|
+
if (stale.length > 0) {
|
|
463
|
+
try {
|
|
464
|
+
await redis.hDel(viewerHashKey(pageId), stale);
|
|
465
|
+
}
|
|
466
|
+
catch (err) {
|
|
467
|
+
debug('stale-field sweep failed for page %s: %s', pageId, err.message);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return out.sort((a, b) => a.joinedAt - b.joinedAt);
|
|
471
|
+
},
|
|
472
|
+
async markEditing(pageId, userId, socketId) {
|
|
473
|
+
// Record a fresh editing signal in the presence-owned editing
|
|
474
|
+
// hash, then publish so the editor immediately gets an `✏️` badge.
|
|
475
|
+
await writeEditingField(pageId, userId, socketId);
|
|
476
|
+
debug('markEditing page=%s user=%s socket=%s — publishing viewer-list change', pageId, userId, socketId);
|
|
477
|
+
await publishChange(pageId);
|
|
478
|
+
},
|
|
479
|
+
async refreshEditing(pageId, userId, socketId) {
|
|
480
|
+
// Keep-alive for a live editor connection. NO publish: the editing
|
|
481
|
+
// set is unchanged, so a refresh must not trigger a redundant
|
|
482
|
+
// viewer-list broadcast.
|
|
483
|
+
await writeEditingField(pageId, userId, socketId);
|
|
484
|
+
},
|
|
485
|
+
async unmarkEditing(pageId, userId, socketId) {
|
|
486
|
+
try {
|
|
487
|
+
await redis.hDel(editingHashKey(pageId), editingField(userId, socketId));
|
|
488
|
+
}
|
|
489
|
+
catch (err) {
|
|
490
|
+
console.warn(`[crowi:presence] unmarkEditing delete failed for page ${pageId}:`, err.message);
|
|
491
|
+
}
|
|
492
|
+
debug('unmarkEditing page=%s user=%s socket=%s — publishing viewer-list change', pageId, userId, socketId);
|
|
493
|
+
await publishChange(pageId);
|
|
494
|
+
},
|
|
495
|
+
onViewersChanged(listener) {
|
|
496
|
+
emitter.on('change', listener);
|
|
497
|
+
return () => emitter.off('change', listener);
|
|
498
|
+
},
|
|
499
|
+
async shutdown() {
|
|
500
|
+
emitter.removeAllListeners();
|
|
501
|
+
if (subscriber) {
|
|
502
|
+
try {
|
|
503
|
+
await subscriber.disconnect();
|
|
504
|
+
}
|
|
505
|
+
catch (err) {
|
|
506
|
+
debug('subscriber disconnect failed: %s', err.message);
|
|
507
|
+
}
|
|
508
|
+
subscriber = null;
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Process-shared presence service. Lazy so the api can boot without an
|
|
515
|
+
* immediate Redis round-trip; the service materialises on the first
|
|
516
|
+
* `/presence` connect or the first collab `onAuthenticate`.
|
|
517
|
+
*
|
|
518
|
+
* Stores the in-flight promise (not the resolved service) so concurrent
|
|
519
|
+
* first callers race onto the same instance — one subscriber client,
|
|
520
|
+
* one EventEmitter.
|
|
521
|
+
*/
|
|
522
|
+
let cachedService = null;
|
|
523
|
+
function getPresenceService(crowi) {
|
|
524
|
+
if (cachedService)
|
|
525
|
+
return cachedService;
|
|
526
|
+
// `crowi.redis` is typed `any` on the Crowi class; narrow it to the
|
|
527
|
+
// structural client surface (or null) the service expects.
|
|
528
|
+
const redis = crowi.redis ?? null;
|
|
529
|
+
cachedService = createPresenceService(redis);
|
|
530
|
+
return cachedService;
|
|
531
|
+
}
|
|
532
|
+
function createPresenceCollabDeps(crowi) {
|
|
533
|
+
// socketId → { pageId, userId } for every live editor connection
|
|
534
|
+
// this process owns. Drives the periodic refresher below.
|
|
535
|
+
const liveEditors = new Map();
|
|
536
|
+
let refreshTimer = null;
|
|
537
|
+
// Lazily start the refresher on the first `markEditing`. `.unref()`
|
|
538
|
+
// so the timer never keeps the process alive on its own.
|
|
539
|
+
const ensureRefresher = () => {
|
|
540
|
+
if (refreshTimer !== null)
|
|
541
|
+
return;
|
|
542
|
+
refreshTimer = setInterval(() => {
|
|
543
|
+
void (async () => {
|
|
544
|
+
let service;
|
|
545
|
+
try {
|
|
546
|
+
service = await getPresenceService(crowi);
|
|
547
|
+
}
|
|
548
|
+
catch {
|
|
549
|
+
// Service not resolvable right now — skip this tick.
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
// Snapshot the entries: a concurrent `unmarkEditing` may mutate
|
|
553
|
+
// `liveEditors` while the refresh awaits are in flight.
|
|
554
|
+
const entries = Array.from(liveEditors.entries());
|
|
555
|
+
await Promise.all(entries.map(([socketId, { pageId, userId }]) => service.refreshEditing(pageId, userId, socketId).catch((err) => {
|
|
556
|
+
debug('refreshEditing tick failed for socket %s: %s', socketId, err.message);
|
|
557
|
+
})));
|
|
558
|
+
})();
|
|
559
|
+
}, EDITING_REFRESH_MS);
|
|
560
|
+
refreshTimer.unref();
|
|
561
|
+
};
|
|
562
|
+
return {
|
|
563
|
+
async markEditing(pageId, userId, socketId) {
|
|
564
|
+
liveEditors.set(socketId, { pageId, userId });
|
|
565
|
+
ensureRefresher();
|
|
566
|
+
try {
|
|
567
|
+
const service = await getPresenceService(crowi);
|
|
568
|
+
await service.markEditing(pageId, userId, socketId);
|
|
569
|
+
}
|
|
570
|
+
catch (err) {
|
|
571
|
+
console.warn('[crowi:presence] collab markEditing wiring failed (non-blocking):', err.message);
|
|
572
|
+
}
|
|
573
|
+
},
|
|
574
|
+
async unmarkEditing(pageId, userId, socketId) {
|
|
575
|
+
liveEditors.delete(socketId);
|
|
576
|
+
try {
|
|
577
|
+
const service = await getPresenceService(crowi);
|
|
578
|
+
await service.unmarkEditing(pageId, userId, socketId);
|
|
579
|
+
}
|
|
580
|
+
catch (err) {
|
|
581
|
+
console.warn('[crowi:presence] collab unmarkEditing wiring failed (non-blocking):', err.message);
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
shutdown() {
|
|
585
|
+
if (refreshTimer !== null) {
|
|
586
|
+
clearInterval(refreshTimer);
|
|
587
|
+
refreshTimer = null;
|
|
588
|
+
}
|
|
589
|
+
liveEditors.clear();
|
|
590
|
+
},
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Test helper — inject a pre-built service or reset to lazy. Pass a
|
|
595
|
+
* fake to exercise the `/presence` handler / collab wiring without
|
|
596
|
+
* Redis; pass `null` to clear the cache.
|
|
597
|
+
*/
|
|
598
|
+
const _setPresenceServiceForTesting = (service) => {
|
|
599
|
+
cachedService = service == null ? null : Promise.resolve(service);
|
|
600
|
+
};
|
|
601
|
+
exports._setPresenceServiceForTesting = _setPresenceServiceForTesting;
|
|
602
|
+
//# sourceMappingURL=presence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/service/presence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface CustomError extends Error {
|
|
2
|
+
code?: number | string;
|
|
3
|
+
errors?: {
|
|
4
|
+
[key: string]: {
|
|
5
|
+
message: string;
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
status?: number;
|
|
10
|
+
statusCode?: number;
|
|
11
|
+
stack?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function asCustomError(err: unknown): CustomError;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.asCustomError = asCustomError;
|
|
4
|
+
// エラーを安全に型変換するためのヘルパー関数
|
|
5
|
+
function asCustomError(err) {
|
|
6
|
+
if (err instanceof Error) {
|
|
7
|
+
return err;
|
|
8
|
+
}
|
|
9
|
+
// エラーでない場合は新しいエラーを作成
|
|
10
|
+
const customError = new Error(typeof err === 'string' ? err : 'Unknown error');
|
|
11
|
+
return customError;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/types/error.ts"],"names":[],"mappings":";;AAeA,sCAQC;AATD,wBAAwB;AACxB,SAAgB,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAkB,CAAC;IAC5B,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC/E,OAAO,WAA0B,CAAC;AACpC,CAAC"}
|