@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,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeUrlInlineExpandDispatch = void 0;
|
|
4
|
+
const cache_1 = require("../cache");
|
|
5
|
+
const registry_1 = require("../registry");
|
|
6
|
+
const _mdast_walk_1 = require("./_mdast-walk");
|
|
7
|
+
/**
|
|
8
|
+
* Phase 4 plugin-dispatch transform — async post-processor that finds
|
|
9
|
+
* bare URLs in paragraph-level content and, for each registered
|
|
10
|
+
* `UrlInlineExpansionRule`, tries to expand them inline.
|
|
11
|
+
*
|
|
12
|
+
* Bare URL identification: GFM autolink (`https://example.com`) is
|
|
13
|
+
* parsed by remark-gfm into a `link` node whose single text child has
|
|
14
|
+
* the same URL as the `link.url`. That shape — a link whose href ===
|
|
15
|
+
* its visible label — is what this transform targets. Inline-link
|
|
16
|
+
* targets with a different label (`[label](url)`) are NOT expanded
|
|
17
|
+
* (the author chose a label and we respect it).
|
|
18
|
+
*
|
|
19
|
+
* Expansion order: registered expanders are tried in registration
|
|
20
|
+
* order; the first `'replaced'` wins. All `'unchanged'` means no
|
|
21
|
+
* change.
|
|
22
|
+
*
|
|
23
|
+
* The expansion itself is routed through `cachedRender` so SWR + size
|
|
24
|
+
* limits + error caching all apply uniformly. We wrap each
|
|
25
|
+
* `UrlInlineExpansionRule` in an ephemeral `EmbedRenderer` shape so
|
|
26
|
+
* the same code path handles both `@[tag](url)` and bare-URL embeds.
|
|
27
|
+
*/
|
|
28
|
+
const URL_EXPAND_PSEUDO_TAG = '__url-inline-expand__';
|
|
29
|
+
const makeUrlInlineExpandDispatch = (registry, ctx, deps) => async (tree) => {
|
|
30
|
+
const expanders = registry.getUrlInlineExpanders();
|
|
31
|
+
if (expanders.length === 0)
|
|
32
|
+
return;
|
|
33
|
+
const candidates = collectAutolinks(tree);
|
|
34
|
+
if (candidates.length === 0)
|
|
35
|
+
return;
|
|
36
|
+
await Promise.all(candidates.map(async (candidate) => {
|
|
37
|
+
for (let idx = 0; idx < expanders.length; idx++) {
|
|
38
|
+
const { plugin, rule } = expanders[idx];
|
|
39
|
+
if (!matchesRule(rule, candidate.url))
|
|
40
|
+
continue;
|
|
41
|
+
const adaptor = ruleAsRenderer(rule);
|
|
42
|
+
const scopedCtx = {
|
|
43
|
+
...ctx,
|
|
44
|
+
cache: (0, cache_1.scopeForPlugin)(deps.cache, plugin),
|
|
45
|
+
auth: (0, registry_1.createAuthContextStub)(),
|
|
46
|
+
};
|
|
47
|
+
// Encode the expander index into the synthetic `tag` so two
|
|
48
|
+
// expanders from the same plugin (same cacheVersion + same
|
|
49
|
+
// pluginName) do NOT share a cache slot. Without this they
|
|
50
|
+
// would collide on `(pluginName, pluginCacheVersion, pageId,
|
|
51
|
+
// sha256({tag, url}))` and the second expander's call would
|
|
52
|
+
// be served from the first's cached output.
|
|
53
|
+
const input = {
|
|
54
|
+
tag: `${URL_EXPAND_PSEUDO_TAG}#${idx}`,
|
|
55
|
+
url: candidate.url,
|
|
56
|
+
pageId: deps.pageId,
|
|
57
|
+
};
|
|
58
|
+
// `cachedRender` resolves expand() through SWR + error
|
|
59
|
+
// cache. The returned html is empty when expand() said
|
|
60
|
+
// 'unchanged'; we fall through to the next expander in that
|
|
61
|
+
// case.
|
|
62
|
+
const rendered = await (0, cache_1.cachedRender)(deps.cache, plugin, adaptor, input, scopedCtx);
|
|
63
|
+
if (rendered.html && rendered.html.length > 0) {
|
|
64
|
+
candidate.replacementHtml = rendered.html;
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}));
|
|
69
|
+
for (const parent of (0, _mdast_walk_1.groupByParent)(candidates, (c) => c.linkIndex)) {
|
|
70
|
+
parent.parent.children = spliceLinks(parent.parent.children, parent.matches);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
exports.makeUrlInlineExpandDispatch = makeUrlInlineExpandDispatch;
|
|
74
|
+
function collectAutolinks(tree) {
|
|
75
|
+
const out = [];
|
|
76
|
+
(0, _mdast_walk_1.walkPhrasingTree)(tree, (node, insideLink) => {
|
|
77
|
+
if (insideLink)
|
|
78
|
+
return;
|
|
79
|
+
const children = node.children;
|
|
80
|
+
for (let i = 0; i < children.length; i++) {
|
|
81
|
+
const child = children[i];
|
|
82
|
+
if (child.type !== 'link')
|
|
83
|
+
continue;
|
|
84
|
+
const link = child;
|
|
85
|
+
if (!isAutolinkShape(link))
|
|
86
|
+
continue;
|
|
87
|
+
out.push({
|
|
88
|
+
parent: node,
|
|
89
|
+
linkIndex: i,
|
|
90
|
+
url: link.url,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* A "bare URL" link is one where the visible label equals the href.
|
|
98
|
+
* GFM autolink produces exactly this shape (`https://example.com` →
|
|
99
|
+
* `link(url='https://example.com', children=[text('https://example.com')])`).
|
|
100
|
+
* Inline links with custom labels (`[label](url)`) have a different
|
|
101
|
+
* shape and are intentionally not expanded.
|
|
102
|
+
*/
|
|
103
|
+
function isAutolinkShape(link) {
|
|
104
|
+
if (!link.url)
|
|
105
|
+
return false;
|
|
106
|
+
const children = link.children ?? [];
|
|
107
|
+
if (children.length !== 1)
|
|
108
|
+
return false;
|
|
109
|
+
const only = children[0];
|
|
110
|
+
if (only.type !== 'text')
|
|
111
|
+
return false;
|
|
112
|
+
return only.value === link.url;
|
|
113
|
+
}
|
|
114
|
+
function matchesRule(rule, url) {
|
|
115
|
+
if (typeof rule.match === 'function')
|
|
116
|
+
return rule.match(url);
|
|
117
|
+
return rule.match.test(url);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Adapt a `UrlInlineExpansionRule` to the `EmbedRenderer` shape that
|
|
121
|
+
* `cachedRender` expects. The `RenderResult.html` is empty when
|
|
122
|
+
* `expand` returned `'unchanged'` — the caller falls through to the
|
|
123
|
+
* next expander in that case.
|
|
124
|
+
*/
|
|
125
|
+
function ruleAsRenderer(rule) {
|
|
126
|
+
return {
|
|
127
|
+
cacheVersion: rule.cacheVersion,
|
|
128
|
+
async render(input, ctx) {
|
|
129
|
+
const result = await rule.expand(input.url, ctx);
|
|
130
|
+
if (result.kind === 'unchanged') {
|
|
131
|
+
// Use a short fresh-TTL so a registered expander re-evaluates
|
|
132
|
+
// soon (its match function might depend on dynamic config).
|
|
133
|
+
return { html: '', ttlSec: 60 };
|
|
134
|
+
}
|
|
135
|
+
// `result` is RenderResult shape (minus `kind`).
|
|
136
|
+
const { kind: _ignored, ...renderResult } = result;
|
|
137
|
+
return renderResult;
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function spliceLinks(children, matches) {
|
|
142
|
+
// Replace each matched link node with an html node containing the
|
|
143
|
+
// expanded html. Other children pass through untouched.
|
|
144
|
+
const byIndex = new Map(matches.map((m) => [m.linkIndex, m]));
|
|
145
|
+
const out = [];
|
|
146
|
+
for (let i = 0; i < children.length; i++) {
|
|
147
|
+
const match = byIndex.get(i);
|
|
148
|
+
if (!match) {
|
|
149
|
+
out.push(children[i]);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const html = { type: 'html', value: match.replacementHtml ?? '' };
|
|
153
|
+
out.push(html);
|
|
154
|
+
}
|
|
155
|
+
return out;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=url-inline-expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-inline-expand.js","sourceRoot":"","sources":["../../../src/renderer/core/url-inline-expand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.remarkWikiLinks = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Core renderer transform — detect `[[…]]` inside text nodes, replace
|
|
6
|
+
* them with link nodes (so downstream renderers see proper links),
|
|
7
|
+
* and push canonical entries into `metadata.wikiLinks`.
|
|
8
|
+
*
|
|
9
|
+
* Supported shapes:
|
|
10
|
+
* - `[[Page]]` → link to `Page`, display `Page`
|
|
11
|
+
* - `[[/path/to/page]]` → link to `/path/to/page`, display same
|
|
12
|
+
* - `[[Page|Display]]` → link to `Page`, display `Display`
|
|
13
|
+
* - `[[Page#section]]` → link to `Page#section`, display `Page#section`
|
|
14
|
+
*
|
|
15
|
+
* Targets that don't start with `/` are kept as-is (Phase 3 will add
|
|
16
|
+
* resolved-wikilink endpoint to map names to paths). The link node
|
|
17
|
+
* carries `data.hProperties.className = 'wikilink-broken'` for
|
|
18
|
+
* non-absolute targets so the web renderer can dim them. `javascript:`
|
|
19
|
+
* and external `http(s)://` targets are stripped to broken-link too —
|
|
20
|
+
* they are never valid wikilink targets.
|
|
21
|
+
*
|
|
22
|
+
* The walker only descends into text nodes; code blocks and inline
|
|
23
|
+
* code (`code`, `inlineCode`) are skipped, matching the spec.
|
|
24
|
+
*/
|
|
25
|
+
// `[[…]]` capture. Disallow newlines and unbalanced brackets inside.
|
|
26
|
+
// Greedy on the body but bounded to a reasonable length so a stray
|
|
27
|
+
// `[[` doesn't eat the rest of the document.
|
|
28
|
+
const WIKILINK_RE = /\[\[([^[\]\n]{1,256})\]\]/g;
|
|
29
|
+
const remarkWikiLinks = (metadata) => (tree) => {
|
|
30
|
+
walk(tree);
|
|
31
|
+
function walk(node) {
|
|
32
|
+
if (node.type === 'code' || node.type === 'inlineCode')
|
|
33
|
+
return;
|
|
34
|
+
if (Array.isArray(node.children)) {
|
|
35
|
+
const replaced = transformChildren(node.children, metadata);
|
|
36
|
+
node.children = replaced;
|
|
37
|
+
for (const child of replaced)
|
|
38
|
+
walk(child);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.remarkWikiLinks = remarkWikiLinks;
|
|
43
|
+
function transformChildren(children, metadata) {
|
|
44
|
+
const out = [];
|
|
45
|
+
for (const child of children) {
|
|
46
|
+
if (child.type !== 'text') {
|
|
47
|
+
out.push(child);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const expanded = expandText(child, metadata);
|
|
51
|
+
out.push(...expanded);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
function expandText(textNode, metadata) {
|
|
56
|
+
const value = textNode.value;
|
|
57
|
+
if (!value || !value.includes('[['))
|
|
58
|
+
return [textNode];
|
|
59
|
+
const out = [];
|
|
60
|
+
let lastIndex = 0;
|
|
61
|
+
WIKILINK_RE.lastIndex = 0;
|
|
62
|
+
for (let m; (m = WIKILINK_RE.exec(value));) {
|
|
63
|
+
const [matched, raw] = m;
|
|
64
|
+
const start = m.index;
|
|
65
|
+
if (start > lastIndex) {
|
|
66
|
+
out.push({ type: 'text', value: value.slice(lastIndex, start) });
|
|
67
|
+
}
|
|
68
|
+
const parsed = parseWikiLink(raw);
|
|
69
|
+
metadata.wikiLinks.push(parsed);
|
|
70
|
+
out.push(toLinkNode(parsed));
|
|
71
|
+
lastIndex = start + matched.length;
|
|
72
|
+
}
|
|
73
|
+
if (lastIndex === 0)
|
|
74
|
+
return [textNode];
|
|
75
|
+
if (lastIndex < value.length) {
|
|
76
|
+
out.push({ type: 'text', value: value.slice(lastIndex) });
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
function parseWikiLink(raw) {
|
|
81
|
+
const trimmed = raw.trim();
|
|
82
|
+
const pipeAt = trimmed.indexOf('|');
|
|
83
|
+
if (pipeAt >= 0) {
|
|
84
|
+
return {
|
|
85
|
+
raw,
|
|
86
|
+
target: trimmed.slice(0, pipeAt).trim(),
|
|
87
|
+
displayText: trimmed.slice(pipeAt + 1).trim(),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return { raw, target: trimmed };
|
|
91
|
+
}
|
|
92
|
+
function toLinkNode(entry) {
|
|
93
|
+
const display = entry.displayText ?? entry.target;
|
|
94
|
+
const isValid = isValidTarget(entry.target);
|
|
95
|
+
const data = {};
|
|
96
|
+
if (!isValid) {
|
|
97
|
+
data.hProperties = { className: 'wikilink-broken' };
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
type: 'link',
|
|
101
|
+
url: isValid ? entry.target : '#',
|
|
102
|
+
title: null,
|
|
103
|
+
children: [{ type: 'text', value: display }],
|
|
104
|
+
data,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Phase 2 valid-target rule: target must start with `/` (absolute
|
|
109
|
+
* path). Anything else (bare name, external URL, `javascript:`) gets
|
|
110
|
+
* `wikilink-broken` and a `#` href so it's visually distinct without
|
|
111
|
+
* leaving the page.
|
|
112
|
+
*/
|
|
113
|
+
function isValidTarget(target) {
|
|
114
|
+
if (!target)
|
|
115
|
+
return false;
|
|
116
|
+
return target.startsWith('/');
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=wikilinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wikilinks.js","sourceRoot":"","sources":["../../../src/renderer/core/wikilinks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { RenderContext } from '@crowi/plugin-api';
|
|
2
|
+
import type Crowi from '../crowi';
|
|
3
|
+
import { type MongoCacheStorage } from './cache';
|
|
4
|
+
import { type PipelineMetadata, type PipelineResult } from './pipeline';
|
|
5
|
+
import { RendererRegistryImpl } from './registry';
|
|
6
|
+
export type { PipelineMetadata, PipelineResult, PipelineEsmDeps, ShikiHighlighter } from './pipeline';
|
|
7
|
+
export { RendererRegistryImpl, makeRendererScope, createAuthContextStub } from './registry';
|
|
8
|
+
export { serializeMdast } from './serialize';
|
|
9
|
+
/**
|
|
10
|
+
* The renderer surface attached to `Crowi.renderer` after
|
|
11
|
+
* `setupRenderer()` runs. The registry holds **external plugin
|
|
12
|
+
* additions** only — the bundled core 5 transforms are baked into
|
|
13
|
+
* `runPipeline` and prepended on every run. Plugins layer on top via
|
|
14
|
+
* `PluginManager.activate()`'s `registerRenderer` callback.
|
|
15
|
+
*/
|
|
16
|
+
export interface Renderer {
|
|
17
|
+
registry: RendererRegistryImpl;
|
|
18
|
+
/**
|
|
19
|
+
* Plugin cache storage. Phase 4 — MongoDB-backed. Plugins receive a
|
|
20
|
+
* per-plugin scoped view through `RenderContext.cache`; the raw
|
|
21
|
+
* storage is exposed here for admin-side `invalidateAll` /
|
|
22
|
+
* `invalidatePlugin` calls + pageEvent listeners.
|
|
23
|
+
*/
|
|
24
|
+
cache: MongoCacheStorage;
|
|
25
|
+
/** Run the parse + transform pipeline against `body`. */
|
|
26
|
+
run(body: string, options?: {
|
|
27
|
+
mode?: RenderContext['mode'];
|
|
28
|
+
pageId?: string;
|
|
29
|
+
}): Promise<PipelineResult>;
|
|
30
|
+
/** Convenience: just the metadata (used by `prepareRevision` + on-the-fly fallback). */
|
|
31
|
+
runMetadata(body: string, options?: {
|
|
32
|
+
mode?: RenderContext['mode'];
|
|
33
|
+
pageId?: string;
|
|
34
|
+
}): Promise<PipelineMetadata>;
|
|
35
|
+
/**
|
|
36
|
+
* Convenience: run the pipeline and return both metadata and the
|
|
37
|
+
* JSON-serialisable rendered AST. Used by `prepareRevision` (save
|
|
38
|
+
* path) and by `computeRevisionRenderedAstAsync` (read-path on-the-
|
|
39
|
+
* fly fallback for legacy revisions).
|
|
40
|
+
*/
|
|
41
|
+
runRender(body: string, options?: {
|
|
42
|
+
mode?: RenderContext['mode'];
|
|
43
|
+
pageId?: string;
|
|
44
|
+
}): Promise<{
|
|
45
|
+
metadata: PipelineMetadata;
|
|
46
|
+
renderedAst: unknown;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Eagerly initialise heavy ESM-only deps (shiki + unified). Fired
|
|
50
|
+
* fire-and-forget from `Crowi.init`'s `setupRenderer` so the first
|
|
51
|
+
* pipeline run doesn't pay the cold-load cost. Failures are logged
|
|
52
|
+
* but never rethrown — boot must not block on optional warmup.
|
|
53
|
+
*/
|
|
54
|
+
warmup(): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Build the renderer. Called once during `Crowi.init()` AFTER
|
|
58
|
+
* `setupModels` and BEFORE `setupPlugins` so PluginManager can call
|
|
59
|
+
* `registerRenderer(scope, ctx)` on every plugin against the same
|
|
60
|
+
* registry instance the pipeline uses.
|
|
61
|
+
*
|
|
62
|
+
* Takes the Crowi instance so the cache storage (which depends on the
|
|
63
|
+
* `PluginRenderCache` mongoose model) and per-plugin scopes can be
|
|
64
|
+
* built. Tests that don't need cache I/O can pass a stub object
|
|
65
|
+
* exposing a `PluginRenderCache` model.
|
|
66
|
+
*/
|
|
67
|
+
export declare function createRenderer(crowi: Crowi): Renderer;
|
|
@@ -0,0 +1,99 @@
|
|
|
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.serializeMdast = exports.createAuthContextStub = exports.makeRendererScope = exports.RendererRegistryImpl = void 0;
|
|
7
|
+
exports.createRenderer = createRenderer;
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const cache_1 = require("./cache");
|
|
10
|
+
const pipeline_1 = require("./pipeline");
|
|
11
|
+
const registry_1 = require("./registry");
|
|
12
|
+
const serialize_1 = require("./serialize");
|
|
13
|
+
var registry_2 = require("./registry");
|
|
14
|
+
Object.defineProperty(exports, "RendererRegistryImpl", { enumerable: true, get: function () { return registry_2.RendererRegistryImpl; } });
|
|
15
|
+
Object.defineProperty(exports, "makeRendererScope", { enumerable: true, get: function () { return registry_2.makeRendererScope; } });
|
|
16
|
+
Object.defineProperty(exports, "createAuthContextStub", { enumerable: true, get: function () { return registry_2.createAuthContextStub; } });
|
|
17
|
+
var serialize_2 = require("./serialize");
|
|
18
|
+
Object.defineProperty(exports, "serializeMdast", { enumerable: true, get: function () { return serialize_2.serializeMdast; } });
|
|
19
|
+
const debug = (0, debug_1.default)('crowi:renderer');
|
|
20
|
+
const coreLogger = {
|
|
21
|
+
debug: (msg, ...args) => debug(msg, ...args),
|
|
22
|
+
info: (msg, ...args) => debug(`[info] ${msg}`, ...args),
|
|
23
|
+
warn: (msg, ...args) => console.warn(`[crowi:renderer] ${msg}`, ...args),
|
|
24
|
+
error: (msg, ...args) => console.error(`[crowi:renderer] ${msg}`, ...args),
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Build the renderer. Called once during `Crowi.init()` AFTER
|
|
28
|
+
* `setupModels` and BEFORE `setupPlugins` so PluginManager can call
|
|
29
|
+
* `registerRenderer(scope, ctx)` on every plugin against the same
|
|
30
|
+
* registry instance the pipeline uses.
|
|
31
|
+
*
|
|
32
|
+
* Takes the Crowi instance so the cache storage (which depends on the
|
|
33
|
+
* `PluginRenderCache` mongoose model) and per-plugin scopes can be
|
|
34
|
+
* built. Tests that don't need cache I/O can pass a stub object
|
|
35
|
+
* exposing a `PluginRenderCache` model.
|
|
36
|
+
*/
|
|
37
|
+
function createRenderer(crowi) {
|
|
38
|
+
const registry = new registry_1.RendererRegistryImpl();
|
|
39
|
+
// Per-instance ESM-deps loader. Sharing a module-level cache breaks
|
|
40
|
+
// under jest where each test file boots a fresh `Crowi` and a torn
|
|
41
|
+
// down test environment leaves cached ESM modules pointing at a
|
|
42
|
+
// dead VM realm.
|
|
43
|
+
const loadDeps = (0, pipeline_1.createPipelineEsmDepsLoader)();
|
|
44
|
+
const cache = (0, cache_1.createMongoCacheStorage)(crowi);
|
|
45
|
+
// Phase 2 mention existence resolver — batch-checks `@username`
|
|
46
|
+
// mentions against the `User` collection in a single `$in` query (no
|
|
47
|
+
// per-mention N+1). `runPipeline` only invokes this in `mode: 'save'`,
|
|
48
|
+
// so the resolved AST is persisted once and reused on read / view.
|
|
49
|
+
// The `User` model is looked up lazily per call: `createRenderer` runs
|
|
50
|
+
// during `Crowi.init` before all models are guaranteed registered.
|
|
51
|
+
const resolveMentionUsernames = async (usernames) => {
|
|
52
|
+
if (usernames.length === 0)
|
|
53
|
+
return new Set();
|
|
54
|
+
const User = crowi.model('User');
|
|
55
|
+
const found = await User.find({ username: { $in: usernames } })
|
|
56
|
+
.select('username')
|
|
57
|
+
.exec();
|
|
58
|
+
return new Set(found.map((u) => u.username));
|
|
59
|
+
};
|
|
60
|
+
// RenderContext for the core pipeline (not for plugins). `cache` and
|
|
61
|
+
// `auth` are intentionally absent — the bundled core transforms
|
|
62
|
+
// (headings / wikilinks / mentions / code-blocks / syntax-highlight)
|
|
63
|
+
// never consult either. The dispatch layer (embed-tags /
|
|
64
|
+
// url-inline-expand) attaches a per-plugin `cache` + `auth` before
|
|
65
|
+
// calling into plugin code.
|
|
66
|
+
const buildCtx = (options = {}) => ({
|
|
67
|
+
mode: options.mode ?? 'save',
|
|
68
|
+
log: coreLogger,
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
registry,
|
|
72
|
+
cache,
|
|
73
|
+
async run(body, options = {}) {
|
|
74
|
+
const ctx = buildCtx(options);
|
|
75
|
+
return (0, pipeline_1.runPipeline)(body, registry, ctx, loadDeps, { cache, pageId: options.pageId ?? null, resolveMentionUsernames });
|
|
76
|
+
},
|
|
77
|
+
async runMetadata(body, options = {}) {
|
|
78
|
+
const result = await this.run(body, options);
|
|
79
|
+
return result.metadata;
|
|
80
|
+
},
|
|
81
|
+
async runRender(body, options = {}) {
|
|
82
|
+
const result = await this.run(body, options);
|
|
83
|
+
return {
|
|
84
|
+
metadata: result.metadata,
|
|
85
|
+
renderedAst: (0, serialize_1.serializeMdast)(result.tree),
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
async warmup() {
|
|
89
|
+
try {
|
|
90
|
+
await loadDeps();
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
94
|
+
console.warn(`[crowi:renderer] warmup failed (will retry on first run): ${message}`);
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { RenderContext } from '@crowi/plugin-api';
|
|
2
|
+
import type { Root } from 'mdast';
|
|
3
|
+
import type { TocEntryResponse, WikiLinkResponse, MentionResponse } from '@crowi/api-contract';
|
|
4
|
+
import type { MongoCacheStorage } from './cache';
|
|
5
|
+
import { type MentionUsernameResolver } from './core/mention-resolve';
|
|
6
|
+
import { RendererRegistryImpl } from './registry';
|
|
7
|
+
/**
|
|
8
|
+
* Output of a single pipeline run. The mdast tree itself is currently
|
|
9
|
+
* only consumed by the pipeline (and discarded after metadata
|
|
10
|
+
* extraction); Phase 3 will start using it for SSR HTML generation.
|
|
11
|
+
*/
|
|
12
|
+
export interface PipelineResult {
|
|
13
|
+
tree: Root;
|
|
14
|
+
metadata: PipelineMetadata;
|
|
15
|
+
}
|
|
16
|
+
/** Metadata collected during the transform phase. */
|
|
17
|
+
export interface PipelineMetadata {
|
|
18
|
+
toc: TocEntryResponse[];
|
|
19
|
+
wikiLinks: WikiLinkResponse[];
|
|
20
|
+
mentions: MentionResponse[];
|
|
21
|
+
codeBlockLanguages: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Lazily-resolved ESM-only handles needed by the pipeline + core
|
|
25
|
+
* plugins. unified, remark-parse, remark-gfm, github-slugger,
|
|
26
|
+
* mdast-util-to-string, and shiki are all ESM-only; they are loaded
|
|
27
|
+
* from CJS Express via a wrapped `Function('return import(...)')` call
|
|
28
|
+
* so TypeScript with `module: commonjs` doesn't downlevel the import
|
|
29
|
+
* to `require()` (which fails on ESM packages with `ERR_REQUIRE_ESM`).
|
|
30
|
+
*
|
|
31
|
+
* Loaded once and cached process-wide for the lifetime of the
|
|
32
|
+
* Crowi instance.
|
|
33
|
+
*/
|
|
34
|
+
export interface PipelineEsmDeps {
|
|
35
|
+
unified: () => UnifiedProcessor;
|
|
36
|
+
remarkParse: unknown;
|
|
37
|
+
remarkGfm: unknown;
|
|
38
|
+
/**
|
|
39
|
+
* GFM-compatible single-newline → `<br>` conversion. Crowi default;
|
|
40
|
+
* matches GitHub's rendering. Plugged in between the core 4 and the
|
|
41
|
+
* registry transforms so heading slugs (computed via `mdastToString`
|
|
42
|
+
* in the headings transform) are unaffected by injected `break`
|
|
43
|
+
* nodes — anchors stay byte-identical to the GFM-only build.
|
|
44
|
+
*/
|
|
45
|
+
remarkBreaks: unknown;
|
|
46
|
+
GithubSlugger: new () => {
|
|
47
|
+
slug(text: string): string;
|
|
48
|
+
};
|
|
49
|
+
mdastToString: (node: unknown) => string;
|
|
50
|
+
/**
|
|
51
|
+
* Pre-warmed shiki highlighter bound to a **dual theme** (`github-light`
|
|
52
|
+
* + `github-dark`) and the bundled language set. Lazily initialised on
|
|
53
|
+
* first pipeline run; subsequent runs share the same instance.
|
|
54
|
+
*
|
|
55
|
+
* Emitted markup uses shiki's `defaultColor: false` mode, so each token
|
|
56
|
+
* carries `--shiki-light` / `--shiki-dark` CSS variables (and the `<pre>`
|
|
57
|
+
* carries `--shiki-light-bg` / `--shiki-dark-bg`) instead of a single
|
|
58
|
+
* inlined colour. The web side (`globals.css` `.shiki` rules) then picks
|
|
59
|
+
* the light or dark variable per `.dark` class — see the dark-mode
|
|
60
|
+
* feature. Dynamic language loading is deferred to a later phase.
|
|
61
|
+
*/
|
|
62
|
+
shikiHighlighter: ShikiHighlighter;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Subset of shiki's `Highlighter` we actually use. Bound to a
|
|
66
|
+
* single theme so callers don't have to re-pass it at every call.
|
|
67
|
+
*/
|
|
68
|
+
export interface ShikiHighlighter {
|
|
69
|
+
/** Synchronously render `code` to themed `<pre><code>...</code></pre>` HTML. */
|
|
70
|
+
codeToHtml(code: string, lang: string): string;
|
|
71
|
+
/** Best-effort check; cheap, does NOT throw on unknown langs. */
|
|
72
|
+
hasLang(lang: string): boolean;
|
|
73
|
+
}
|
|
74
|
+
interface UnifiedProcessor {
|
|
75
|
+
use(plugin: unknown, options?: unknown): UnifiedProcessor;
|
|
76
|
+
parse(input: string): Root;
|
|
77
|
+
runSync(tree: Root): Root;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Loader for the ESM-only pipeline deps. Node 22 supports synchronous
|
|
81
|
+
* `require()` of ESM modules natively (`--experimental-require-module`
|
|
82
|
+
* default-on since 22.12), so from a CJS module we can just `require`
|
|
83
|
+
* unified, remark-parse, remark-gfm, github-slugger, and
|
|
84
|
+
* mdast-util-to-string. The `Function('return require(...)')` wrapper
|
|
85
|
+
* dodges the `transformIgnorePatterns` jest cache that sometimes
|
|
86
|
+
* routes plain require() into ts-jest's resolver.
|
|
87
|
+
*
|
|
88
|
+
* Each `Renderer` instance owns its own cache (via
|
|
89
|
+
* `createPipelineEsmDepsLoader()` in renderer/index.ts); sharing a
|
|
90
|
+
* module-level cache across Crowi instances breaks under jest where
|
|
91
|
+
* each test file boots a fresh `Crowi`.
|
|
92
|
+
*/
|
|
93
|
+
export type LoadPipelineEsmDeps = () => Promise<PipelineEsmDeps>;
|
|
94
|
+
export declare function createPipelineEsmDepsLoader(): LoadPipelineEsmDeps;
|
|
95
|
+
/**
|
|
96
|
+
* Run the parse → transform pipeline against `body` and return the
|
|
97
|
+
* mdast tree plus the collected metadata. The transform order is
|
|
98
|
+
* fixed: registry-stored plugins run AFTER core registrations, in
|
|
99
|
+
* registration order; node renderers fire after each transformer-driven
|
|
100
|
+
* plugin completes.
|
|
101
|
+
*
|
|
102
|
+
* Phase 2 does NOT render to HTML — callers receive `metadata` and
|
|
103
|
+
* (optionally) the tree. The body's HTML is still generated by
|
|
104
|
+
* react-markdown on the web client.
|
|
105
|
+
*/
|
|
106
|
+
/**
|
|
107
|
+
* Phase 4 plugin-dispatch options. Threaded through `runPipeline` so
|
|
108
|
+
* the embed-tag + url-inline-expand transforms can reach the cache
|
|
109
|
+
* storage and know which page they are rendering for.
|
|
110
|
+
*
|
|
111
|
+
* - `cache`: MongoDB-backed `CacheStorage`. The dispatch transforms
|
|
112
|
+
* per-plugin scope this internally.
|
|
113
|
+
* - `pageId`: the embed cache key is `(pluginName, pluginCacheVersion,
|
|
114
|
+
* pageId, embedKey)`. When unknown (e.g. on-the-fly fallback for an
|
|
115
|
+
* orphan revision body or unit tests bypassing Mongo), the dispatch
|
|
116
|
+
* transforms degrade to no-op — `@[tag](url)` stays as plain text.
|
|
117
|
+
*/
|
|
118
|
+
export interface PipelinePluginDispatch {
|
|
119
|
+
cache: MongoCacheStorage;
|
|
120
|
+
pageId: string | null;
|
|
121
|
+
/**
|
|
122
|
+
* Phase 2 mention existence resolver — batch-checks which `@username`
|
|
123
|
+
* mentions belong to real users. Built from the `User` model by
|
|
124
|
+
* `createRenderer`'s `crowi` closure. When supplied AND the render is
|
|
125
|
+
* in `mode: 'save'`, the mention-resolve transform demotes unknown-user
|
|
126
|
+
* mention link nodes to plain text. Absent (unit tests, non-save runs)
|
|
127
|
+
* → every `@username` keeps its link node, matching pre-Phase-2
|
|
128
|
+
* behaviour. This is `pageId`-independent (orphan revision bodies are
|
|
129
|
+
* still resolved).
|
|
130
|
+
*/
|
|
131
|
+
resolveMentionUsernames?: MentionUsernameResolver;
|
|
132
|
+
}
|
|
133
|
+
export declare function runPipeline(body: string, registry: RendererRegistryImpl, ctx: RenderContext, loadDeps: LoadPipelineEsmDeps, dispatch?: PipelinePluginDispatch): Promise<PipelineResult>;
|
|
134
|
+
export {};
|