@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,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderReservation = renderReservation;
|
|
4
|
+
exports.errorPlaceholder = errorPlaceholder;
|
|
5
|
+
exports.sizeLimitPlaceholder = sizeLimitPlaceholder;
|
|
6
|
+
/**
|
|
7
|
+
* Phase 4 placeholder HTML generators. All output goes through fixed
|
|
8
|
+
* templates inside this file — no plugin-supplied string is ever
|
|
9
|
+
* inlined into the HTML other than the numeric `widthPx` / `heightPx`
|
|
10
|
+
* / `aspectRatio`, which the plugin author declares in their
|
|
11
|
+
* `EmbedRenderer.reservation`. Embed-tag args / URLs never reach
|
|
12
|
+
* placeholder HTML.
|
|
13
|
+
*
|
|
14
|
+
* Class naming convention (RFC §"open questions"):
|
|
15
|
+
*
|
|
16
|
+
* crowi-embed-placeholder (always present)
|
|
17
|
+
* crowi-embed-placeholder-fixed (variant 'fixed')
|
|
18
|
+
* crowi-embed-placeholder-aspect (variant 'aspect')
|
|
19
|
+
* crowi-embed-placeholder-card (variant 'card')
|
|
20
|
+
* crowi-embed-placeholder-card-{size} ('small' | 'medium' | 'large')
|
|
21
|
+
* crowi-embed-placeholder-error (errorPlaceholder)
|
|
22
|
+
* crowi-embed-placeholder-error-{code}
|
|
23
|
+
*
|
|
24
|
+
* Tailwind classes are NOT included; web/globals.css owns the visual
|
|
25
|
+
* styling. The server only emits the structural HTML so the web
|
|
26
|
+
* client can hydrate it.
|
|
27
|
+
*/
|
|
28
|
+
/** Card sizes → recommended pixel heights for the placeholder skeleton. */
|
|
29
|
+
const CARD_SIZE_TO_HEIGHT_PX = {
|
|
30
|
+
small: 80,
|
|
31
|
+
medium: 160,
|
|
32
|
+
large: 280,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Build the placeholder HTML for a given `Reservation`. Numeric
|
|
36
|
+
* values are coerced to integers via `Math.max(0, Math.round(n))` so
|
|
37
|
+
* a bogus float / negative declaration never produces malformed
|
|
38
|
+
* style attributes.
|
|
39
|
+
*/
|
|
40
|
+
function renderReservation(reservation) {
|
|
41
|
+
if (reservation.variant === 'fixed') {
|
|
42
|
+
const height = clampDimension(reservation.heightPx);
|
|
43
|
+
const widthAttr = reservation.widthPx !== undefined ? `width:${clampDimension(reservation.widthPx)}px;` : '';
|
|
44
|
+
return [
|
|
45
|
+
'<div class="crowi-embed-placeholder crowi-embed-placeholder-fixed"',
|
|
46
|
+
` style="${widthAttr}height:${height}px;"`,
|
|
47
|
+
' aria-hidden="true"></div>',
|
|
48
|
+
].join('');
|
|
49
|
+
}
|
|
50
|
+
if (reservation.variant === 'aspect') {
|
|
51
|
+
// Clamp to a sane range so a `0` doesn't divide-by-zero and a
|
|
52
|
+
// huge value doesn't render a multi-screen-tall placeholder.
|
|
53
|
+
const ratio = clampRatio(reservation.aspectRatio);
|
|
54
|
+
// CSS `aspect-ratio: w / h` — emit decimal so the browser parses
|
|
55
|
+
// it as a number rather than a fraction.
|
|
56
|
+
return ['<div class="crowi-embed-placeholder crowi-embed-placeholder-aspect"', ` style="aspect-ratio:${ratio};"`, ' aria-hidden="true"></div>'].join('');
|
|
57
|
+
}
|
|
58
|
+
// 'card'
|
|
59
|
+
const size = reservation.size;
|
|
60
|
+
const height = CARD_SIZE_TO_HEIGHT_PX[size];
|
|
61
|
+
return [
|
|
62
|
+
`<div class="crowi-embed-placeholder crowi-embed-placeholder-card crowi-embed-placeholder-card-${size}"`,
|
|
63
|
+
` style="height:${height}px;"`,
|
|
64
|
+
' aria-hidden="true"></div>',
|
|
65
|
+
].join('');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Placeholder HTML for a render error. The user-facing message comes
|
|
69
|
+
* from a fixed table per error code; plugin-supplied `error.message`
|
|
70
|
+
* never reaches the HTML (potential PII / API-key leak).
|
|
71
|
+
*/
|
|
72
|
+
function errorPlaceholder(code, reservation) {
|
|
73
|
+
const label = ERROR_LABELS[code];
|
|
74
|
+
const shapeHtml = reservation ? renderReservation(reservation) : '';
|
|
75
|
+
return [
|
|
76
|
+
`<div class="crowi-embed-placeholder crowi-embed-placeholder-error crowi-embed-placeholder-error-${code}" role="status">`,
|
|
77
|
+
shapeHtml,
|
|
78
|
+
`<span class="crowi-embed-placeholder-error-label">${label}</span>`,
|
|
79
|
+
'</div>',
|
|
80
|
+
].join('');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Placeholder for a size-limit reject. We distinguish the two
|
|
84
|
+
* sub-cases so admin telemetry / e2e tests can tell them apart.
|
|
85
|
+
*/
|
|
86
|
+
function sizeLimitPlaceholder(reason, reservation) {
|
|
87
|
+
const label = reason === 'entry-too-large' ? 'Embed exceeded the per-entry size limit' : 'Page exceeded the cumulative embed-cache quota';
|
|
88
|
+
const shapeHtml = reservation ? renderReservation(reservation) : '';
|
|
89
|
+
return [
|
|
90
|
+
`<div class="crowi-embed-placeholder crowi-embed-placeholder-error crowi-embed-placeholder-error-size-limit" data-reason="${reason}" role="status">`,
|
|
91
|
+
shapeHtml,
|
|
92
|
+
`<span class="crowi-embed-placeholder-error-label">${label}</span>`,
|
|
93
|
+
'</div>',
|
|
94
|
+
].join('');
|
|
95
|
+
}
|
|
96
|
+
const ERROR_LABELS = {
|
|
97
|
+
auth: 'Authentication required to render this embed.',
|
|
98
|
+
rate_limit: 'Rate limit exceeded — try again later.',
|
|
99
|
+
not_found: 'Embed source not found.',
|
|
100
|
+
network: 'Embed is temporarily unavailable.',
|
|
101
|
+
timeout: 'Embed render timed out.',
|
|
102
|
+
unknown: 'Embed could not be rendered.',
|
|
103
|
+
};
|
|
104
|
+
function clampDimension(n) {
|
|
105
|
+
if (!Number.isFinite(n))
|
|
106
|
+
return 0;
|
|
107
|
+
return Math.max(0, Math.min(4096, Math.round(n)));
|
|
108
|
+
}
|
|
109
|
+
function clampRatio(n) {
|
|
110
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
111
|
+
return 1;
|
|
112
|
+
// Trim to 4 decimals to keep the inline style stable across renders.
|
|
113
|
+
return Math.round(Math.max(0.05, Math.min(20, n)) * 10_000) / 10_000;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=reservation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reservation.js","sourceRoot":"","sources":["../../../src/renderer/cache/reservation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PhrasingContent } from 'mdast';
|
|
2
|
+
/**
|
|
3
|
+
* Shared walker types + helpers for the Phase 4 dispatch transforms
|
|
4
|
+
* (`embed-tags.ts` and `url-inline-expand.ts`). Both visit phrasing
|
|
5
|
+
* trees, skip into `code` / `inlineCode`, and group candidate matches
|
|
6
|
+
* by their parent so the rewrite can splice multiple replacements into
|
|
7
|
+
* the same children array in one pass.
|
|
8
|
+
*/
|
|
9
|
+
export interface PhrasingParent {
|
|
10
|
+
type?: string;
|
|
11
|
+
children?: PhrasingContent[];
|
|
12
|
+
}
|
|
13
|
+
export interface ParentChildren {
|
|
14
|
+
children: PhrasingContent[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Pre-order walk that mirrors the phrasing-parent shape. Skips into
|
|
18
|
+
* `code` / `inlineCode` (they have no phrasing children to collect
|
|
19
|
+
* from), and tracks whether we are currently inside a `link` so callers
|
|
20
|
+
* can avoid double-linking.
|
|
21
|
+
*/
|
|
22
|
+
export declare function walkPhrasingTree(root: PhrasingParent, visit: (node: PhrasingParent, insideLink: boolean) => void): void;
|
|
23
|
+
/**
|
|
24
|
+
* Group rewrite candidates by reference-identical parent, drop entries
|
|
25
|
+
* that the dispatch step did not fill in (`replacementHtml` missing),
|
|
26
|
+
* and sort matches by their child index so the splice step can walk
|
|
27
|
+
* the parent's children left-to-right without re-indexing.
|
|
28
|
+
*/
|
|
29
|
+
export declare function groupByParent<C extends {
|
|
30
|
+
parent: ParentChildren;
|
|
31
|
+
replacementHtml?: string;
|
|
32
|
+
}>(candidates: C[], indexOf: (c: C) => number): Array<{
|
|
33
|
+
parent: ParentChildren;
|
|
34
|
+
matches: C[];
|
|
35
|
+
}>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.walkPhrasingTree = walkPhrasingTree;
|
|
4
|
+
exports.groupByParent = groupByParent;
|
|
5
|
+
/**
|
|
6
|
+
* Pre-order walk that mirrors the phrasing-parent shape. Skips into
|
|
7
|
+
* `code` / `inlineCode` (they have no phrasing children to collect
|
|
8
|
+
* from), and tracks whether we are currently inside a `link` so callers
|
|
9
|
+
* can avoid double-linking.
|
|
10
|
+
*/
|
|
11
|
+
function walkPhrasingTree(root, visit) {
|
|
12
|
+
go(root, false);
|
|
13
|
+
function go(node, insideLink) {
|
|
14
|
+
if (node.type === 'code' || node.type === 'inlineCode')
|
|
15
|
+
return;
|
|
16
|
+
if (!Array.isArray(node.children))
|
|
17
|
+
return;
|
|
18
|
+
visit(node, insideLink);
|
|
19
|
+
const childInsideLink = insideLink || node.type === 'link';
|
|
20
|
+
for (const child of node.children) {
|
|
21
|
+
go(child, childInsideLink);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Group rewrite candidates by reference-identical parent, drop entries
|
|
27
|
+
* that the dispatch step did not fill in (`replacementHtml` missing),
|
|
28
|
+
* and sort matches by their child index so the splice step can walk
|
|
29
|
+
* the parent's children left-to-right without re-indexing.
|
|
30
|
+
*/
|
|
31
|
+
function groupByParent(candidates, indexOf) {
|
|
32
|
+
const groups = new Map();
|
|
33
|
+
for (const c of candidates) {
|
|
34
|
+
if (!c.replacementHtml)
|
|
35
|
+
continue;
|
|
36
|
+
const list = groups.get(c.parent) ?? [];
|
|
37
|
+
list.push(c);
|
|
38
|
+
groups.set(c.parent, list);
|
|
39
|
+
}
|
|
40
|
+
return Array.from(groups.entries()).map(([parent, matches]) => ({
|
|
41
|
+
parent,
|
|
42
|
+
matches: matches.slice().sort((a, b) => indexOf(a) - indexOf(b)),
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=_mdast-walk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_mdast-walk.js","sourceRoot":"","sources":["../../../src/renderer/core/_mdast-walk.ts"],"names":[],"mappings":";;AAyBA,4CAYC;AAQD,sCAeC;AAzCD;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAoB,EAAE,KAA0D;IAC/G,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhB,SAAS,EAAE,CAAC,IAAoB,EAAE,UAAmB;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO;QAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC1C,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxB,MAAM,eAAe,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QAC3D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,EAAE,CAAC,KAAuB,EAAE,eAAe,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,UAAe,EACf,OAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,eAAe;YAAE,SAAS;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
import type { RenderContext } from '@crowi/plugin-api';
|
|
3
|
+
import { type MongoCacheStorage } from '../cache';
|
|
4
|
+
import { type RendererRegistryImpl } from '../registry';
|
|
5
|
+
/**
|
|
6
|
+
* Phase 6 plugin-dispatch transform — async post-processor that walks
|
|
7
|
+
* the mdast tree for `code` nodes whose `lang` matches a registered
|
|
8
|
+
* `CodeBlockRenderer` and replaces them with `html` nodes carrying the
|
|
9
|
+
* rendered output. Routes through the same `cachedRender` SWR wrapper
|
|
10
|
+
* as embed-tags so PlantUML (the first user) gets cache + error caching
|
|
11
|
+
* + size-limit fallback for free.
|
|
12
|
+
*
|
|
13
|
+
* Ordering note: this runs AFTER the unified `runSync` phase, which
|
|
14
|
+
* already executed the bundled `syntax-highlight` plugin. Shiki only
|
|
15
|
+
* rewrites code nodes whose `lang` is in its bundled set; the Phase 6
|
|
16
|
+
* users (`plantuml`, future `mermaid`, `katex` math is NOT a code
|
|
17
|
+
* block — it's `math` / `inlineMath` nodes) are not in the shiki
|
|
18
|
+
* bundled list, so the `code` node survives untouched into this
|
|
19
|
+
* dispatch step. No ordering surgery is needed inside the unified
|
|
20
|
+
* pipeline itself.
|
|
21
|
+
*
|
|
22
|
+
* The walker is block-level (recurses into root / blockquote / listItem
|
|
23
|
+
* / etc.) because fenced code blocks are block-level constructs. Inline
|
|
24
|
+
* code (`inlineCode`) is intentionally NOT visited — those are
|
|
25
|
+
* phrasing-level and never carry a `lang` tag.
|
|
26
|
+
*/
|
|
27
|
+
export interface CodeBlockDispatchDeps {
|
|
28
|
+
cache: MongoCacheStorage;
|
|
29
|
+
pageId: string;
|
|
30
|
+
}
|
|
31
|
+
export declare const makeCodeBlockDispatch: (registry: RendererRegistryImpl, ctx: RenderContext, deps: CodeBlockDispatchDeps) => (tree: Root) => Promise<void>;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeCodeBlockDispatch = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const cache_1 = require("../cache");
|
|
6
|
+
const registry_1 = require("../registry");
|
|
7
|
+
const makeCodeBlockDispatch = (registry, ctx, deps) => async (tree) => {
|
|
8
|
+
if (!registry.hasCodeBlockRenderers())
|
|
9
|
+
return;
|
|
10
|
+
const candidates = collectCandidates(tree, registry);
|
|
11
|
+
if (candidates.length === 0)
|
|
12
|
+
return;
|
|
13
|
+
await Promise.all(candidates.map(async (candidate) => {
|
|
14
|
+
const registration = registry.getCodeBlockRenderer(candidate.lang);
|
|
15
|
+
if (!registration)
|
|
16
|
+
return; // defensive — collectCandidates already filtered
|
|
17
|
+
const scopedCtx = {
|
|
18
|
+
...ctx,
|
|
19
|
+
cache: (0, cache_1.scopeForPlugin)(deps.cache, registration.plugin),
|
|
20
|
+
auth: (0, registry_1.createAuthContextStub)(),
|
|
21
|
+
};
|
|
22
|
+
const adaptor = codeBlockAsEmbedRenderer(registration.renderer);
|
|
23
|
+
// We re-pack the code-block info into the EmbedInput shape so
|
|
24
|
+
// the shared `cachedRender` path can route it. The adaptor
|
|
25
|
+
// unpacks lang from `tag` and source from `url` on the render
|
|
26
|
+
// side — internal abstraction leak, but contained here.
|
|
27
|
+
const input = {
|
|
28
|
+
tag: candidate.lang,
|
|
29
|
+
url: candidate.source,
|
|
30
|
+
pageId: deps.pageId,
|
|
31
|
+
};
|
|
32
|
+
const rendered = await (0, cache_1.cachedRender)(deps.cache, registration.plugin, adaptor, input, scopedCtx);
|
|
33
|
+
candidate.replacementHtml = rendered.html;
|
|
34
|
+
}));
|
|
35
|
+
// Rewrite each parent's children in-place. Multiple matches in
|
|
36
|
+
// the same parent are spliced together so indices stay stable.
|
|
37
|
+
for (const group of groupByParent(candidates)) {
|
|
38
|
+
group.parent.children = rewriteChildren(group.parent.children, group.matches);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.makeCodeBlockDispatch = makeCodeBlockDispatch;
|
|
42
|
+
/**
|
|
43
|
+
* Block-level walker that finds `code` nodes whose `lang` has a
|
|
44
|
+
* registered renderer. Recurses into any block container with a
|
|
45
|
+
* `children` array — root, blockquote, list, listItem, etc. — but
|
|
46
|
+
* skips phrasing-only nodes (no point descending into them; fenced
|
|
47
|
+
* code is never inside a paragraph / link / etc.).
|
|
48
|
+
*/
|
|
49
|
+
function collectCandidates(tree, registry) {
|
|
50
|
+
const out = [];
|
|
51
|
+
walkBlocks(tree, (parent) => {
|
|
52
|
+
const children = parent.children;
|
|
53
|
+
if (!children)
|
|
54
|
+
return;
|
|
55
|
+
for (let i = 0; i < children.length; i++) {
|
|
56
|
+
const child = children[i];
|
|
57
|
+
if (child.type !== 'code')
|
|
58
|
+
continue;
|
|
59
|
+
const code = child;
|
|
60
|
+
const lang = (code.lang ?? '').trim();
|
|
61
|
+
if (!lang)
|
|
62
|
+
continue;
|
|
63
|
+
const registration = registry.getCodeBlockRenderer(lang);
|
|
64
|
+
if (!registration)
|
|
65
|
+
continue;
|
|
66
|
+
out.push({
|
|
67
|
+
parent: parent,
|
|
68
|
+
codeIndex: i,
|
|
69
|
+
lang,
|
|
70
|
+
source: code.value ?? '',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
function walkBlocks(node, visit) {
|
|
77
|
+
if (!Array.isArray(node.children))
|
|
78
|
+
return;
|
|
79
|
+
visit(node);
|
|
80
|
+
for (const child of node.children) {
|
|
81
|
+
// `code` and `inlineCode` are leaves — no descent. `html` is also
|
|
82
|
+
// a leaf. Everything else may carry block children we want to
|
|
83
|
+
// visit (blockquote, listItem, list, root).
|
|
84
|
+
if (child.type === 'code' || child.type === 'inlineCode' || child.type === 'html')
|
|
85
|
+
continue;
|
|
86
|
+
walkBlocks(child, visit);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Adapt a `CodeBlockRenderer` to the `EmbedRenderer` shape that
|
|
91
|
+
* `cachedRender` expects. Mirrors `url-inline-expand.ts:ruleAsRenderer`.
|
|
92
|
+
* The cacheVersion / reservation / computeEmbedKey flow through; the
|
|
93
|
+
* key compute pulls lang + source out of the synthetic EmbedInput.
|
|
94
|
+
*/
|
|
95
|
+
function codeBlockAsEmbedRenderer(cb) {
|
|
96
|
+
return {
|
|
97
|
+
cacheVersion: cb.cacheVersion,
|
|
98
|
+
reservation: cb.reservation,
|
|
99
|
+
computeEmbedKey: (input) => {
|
|
100
|
+
// Default: hash the code-block info. Plugin override consults
|
|
101
|
+
// CodeBlockInfo shape, not EmbedInput, so we unpack first.
|
|
102
|
+
const info = { lang: input.tag, source: input.url };
|
|
103
|
+
if (cb.computeEmbedKey)
|
|
104
|
+
return cb.computeEmbedKey(info);
|
|
105
|
+
return defaultCodeBlockEmbedKey(info);
|
|
106
|
+
},
|
|
107
|
+
async render(input, ctx) {
|
|
108
|
+
const info = { lang: input.tag, source: input.url };
|
|
109
|
+
const result = await cb.render(info, ctx);
|
|
110
|
+
// The plugin may return either a bare `EmbedFragment` (html +
|
|
111
|
+
// assets) or a full `RenderResult` (with ttlSec / error). The
|
|
112
|
+
// `error` field is the discriminator — pass `RenderResult`
|
|
113
|
+
// through verbatim so error caching applies, otherwise wrap the
|
|
114
|
+
// fragment as a successful RenderResult with the default code-
|
|
115
|
+
// block TTL (1h).
|
|
116
|
+
if (isRenderResult(result))
|
|
117
|
+
return result;
|
|
118
|
+
const fragment = result;
|
|
119
|
+
return { html: fragment.html, assets: fragment.assets, ttlSec: 60 * 60 };
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function isRenderResult(value) {
|
|
124
|
+
// `'error' in value` would mis-classify a fragment with an explicit
|
|
125
|
+
// `error: undefined` property; check actual presence instead.
|
|
126
|
+
const candidate = value;
|
|
127
|
+
return candidate.error !== undefined || typeof candidate.ttlSec === 'number';
|
|
128
|
+
}
|
|
129
|
+
function defaultCodeBlockEmbedKey(info) {
|
|
130
|
+
const json = JSON.stringify({ lang: info.lang, source: info.source });
|
|
131
|
+
return (0, node_crypto_1.createHash)('sha256').update(json).digest('hex');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Group matched candidates by reference-identical parent and sort each
|
|
135
|
+
* group by child index so the splice walks left-to-right. Drops
|
|
136
|
+
* candidates the dispatch did not fill in (`replacementHtml` missing).
|
|
137
|
+
*/
|
|
138
|
+
function groupByParent(candidates) {
|
|
139
|
+
const groups = new Map();
|
|
140
|
+
for (const c of candidates) {
|
|
141
|
+
if (!c.replacementHtml)
|
|
142
|
+
continue;
|
|
143
|
+
const list = groups.get(c.parent) ?? [];
|
|
144
|
+
list.push(c);
|
|
145
|
+
groups.set(c.parent, list);
|
|
146
|
+
}
|
|
147
|
+
return Array.from(groups.entries()).map(([parent, matches]) => ({
|
|
148
|
+
parent,
|
|
149
|
+
matches: matches.slice().sort((a, b) => a.codeIndex - b.codeIndex),
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
function rewriteChildren(children, matches) {
|
|
153
|
+
const byIndex = new Map(matches.map((m) => [m.codeIndex, m]));
|
|
154
|
+
const out = [];
|
|
155
|
+
for (let i = 0; i < children.length; i++) {
|
|
156
|
+
const match = byIndex.get(i);
|
|
157
|
+
if (!match) {
|
|
158
|
+
out.push(children[i]);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
const html = { type: 'html', value: match.replacementHtml ?? '' };
|
|
162
|
+
out.push(html);
|
|
163
|
+
}
|
|
164
|
+
return out;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=code-block-dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-block-dispatch.js","sourceRoot":"","sources":["../../../src/renderer/core/code-block-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { UnifiedTransformPlugin } from './headings';
|
|
2
|
+
/**
|
|
3
|
+
* Core renderer transform — observe each fenced code block's `lang`
|
|
4
|
+
* tag and aggregate the unique set into `metadata.codeBlockLanguages`.
|
|
5
|
+
* Pure observer, doesn't mutate the AST.
|
|
6
|
+
*
|
|
7
|
+
* Used by the admin UI ("which languages does this wiki need
|
|
8
|
+
* highlighter coverage for?") and by RFC-0002 Phase 3 plugins
|
|
9
|
+
* (`@crowi/plugin-renderer-mermaid` etc.) to decide whether to
|
|
10
|
+
* activate themselves on a given page.
|
|
11
|
+
*/
|
|
12
|
+
export declare const remarkCodeBlockLanguages: UnifiedTransformPlugin;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.remarkCodeBlockLanguages = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Core renderer transform — observe each fenced code block's `lang`
|
|
6
|
+
* tag and aggregate the unique set into `metadata.codeBlockLanguages`.
|
|
7
|
+
* Pure observer, doesn't mutate the AST.
|
|
8
|
+
*
|
|
9
|
+
* Used by the admin UI ("which languages does this wiki need
|
|
10
|
+
* highlighter coverage for?") and by RFC-0002 Phase 3 plugins
|
|
11
|
+
* (`@crowi/plugin-renderer-mermaid` etc.) to decide whether to
|
|
12
|
+
* activate themselves on a given page.
|
|
13
|
+
*/
|
|
14
|
+
const remarkCodeBlockLanguages = (metadata) => (tree) => {
|
|
15
|
+
const langs = new Set();
|
|
16
|
+
walk(tree);
|
|
17
|
+
metadata.codeBlockLanguages = Array.from(langs).sort();
|
|
18
|
+
function walk(node) {
|
|
19
|
+
if (node.type === 'code') {
|
|
20
|
+
const lang = node.lang;
|
|
21
|
+
if (lang && lang.trim())
|
|
22
|
+
langs.add(lang.trim());
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(node.children)) {
|
|
26
|
+
for (const child of node.children)
|
|
27
|
+
walk(child);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.remarkCodeBlockLanguages = remarkCodeBlockLanguages;
|
|
32
|
+
//# sourceMappingURL=code-blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-blocks.js","sourceRoot":"","sources":["../../../src/renderer/core/code-blocks.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;GASG;AACI,MAAM,wBAAwB,GAA2B,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;IACrF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvD,SAAS,IAAI,CAAC,IAAmE;QAC/E,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAI,IAAa,CAAC,IAAI,CAAC;YACjC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,KAAgD,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,wBAAwB,4BAenC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
import type { RenderContext } from '@crowi/plugin-api';
|
|
3
|
+
import { type MongoCacheStorage } from '../cache';
|
|
4
|
+
import { type RendererRegistryImpl } from '../registry';
|
|
5
|
+
export interface EmbedTagDispatchDeps {
|
|
6
|
+
cache: MongoCacheStorage;
|
|
7
|
+
pageId: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Build the async post-processor. Returns a function that walks the
|
|
11
|
+
* transformed mdast tree, finds embed-tag triples, and rewrites them
|
|
12
|
+
* in-place with rendered html nodes.
|
|
13
|
+
*/
|
|
14
|
+
export declare const makeEmbedTagDispatch: (registry: RendererRegistryImpl, ctx: RenderContext, deps: EmbedTagDispatchDeps) => (tree: Root) => Promise<void>;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeEmbedTagDispatch = 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
|
|
9
|
+
* detects `@[tag](url)` and, when `tag` matches a registered embed
|
|
10
|
+
* renderer, replaces the construct with an `html` node containing the
|
|
11
|
+
* renderer's `RenderResult.html` (after SWR + cache resolution).
|
|
12
|
+
*
|
|
13
|
+
* Important parse subtlety: CommonMark / GFM does NOT see
|
|
14
|
+
* `@[tag](url)` as one token. The parser splits it into THREE mdast
|
|
15
|
+
* nodes:
|
|
16
|
+
*
|
|
17
|
+
* text node "@" + link(url='url', children=[text 'tag']) + text node "<rest>"
|
|
18
|
+
*
|
|
19
|
+
* — because `[label](url)` is just an inline link, and the leading
|
|
20
|
+
* `@` is unrelated trailing text. So we walk **sibling triples** of
|
|
21
|
+
* (text, link, text) instead of regex-scanning text values. When we
|
|
22
|
+
* see:
|
|
23
|
+
*
|
|
24
|
+
* 1. text node whose value ends with `@`,
|
|
25
|
+
* 2. immediately followed by a link node with children matching
|
|
26
|
+
* `[text:'tag']` where tag is `[A-Za-z0-9_-]{1,64}`, and
|
|
27
|
+
* 3. the link's url is non-empty (anything is accepted; plugin
|
|
28
|
+
* validates per-renderer),
|
|
29
|
+
*
|
|
30
|
+
* AND there is a registered embed renderer for that tag, we splice in
|
|
31
|
+
* the rendered html and trim the trailing `@` off the previous text
|
|
32
|
+
* node. Unregistered tags pass through as `@` + `[tag](url)` (a plain
|
|
33
|
+
* inline link), matching the RFC plain-text fallback.
|
|
34
|
+
*
|
|
35
|
+
* Note: this triple-match deliberately matches *more* than just the
|
|
36
|
+
* literal `@[tag](url)` substring — it also catches cases where the
|
|
37
|
+
* link's url contains escape sequences (`@[t](a%20b)`) that would
|
|
38
|
+
* have broken a regex on the raw text. The cost is that an author
|
|
39
|
+
* who writes `[tag](url)` with a trailing `@` immediately before it
|
|
40
|
+
* (`text ending in @ ` followed by `[t](u)`) will trigger a match
|
|
41
|
+
* even if the visual intent wasn't an embed. Tests + real-world use
|
|
42
|
+
* will tell us if this is too aggressive; the alternative would be
|
|
43
|
+
* a `remark-parse` pre-pass to recognise the `@[...](…)` token, but
|
|
44
|
+
* that requires shipping a forked extension.
|
|
45
|
+
*
|
|
46
|
+
* Skipped node types: `code`, `inlineCode` (verbatim) — the walker
|
|
47
|
+
* does not descend into them.
|
|
48
|
+
*/
|
|
49
|
+
const TAG_NAME_RE = /^[A-Za-z0-9_-]{1,64}$/;
|
|
50
|
+
/**
|
|
51
|
+
* Build the async post-processor. Returns a function that walks the
|
|
52
|
+
* transformed mdast tree, finds embed-tag triples, and rewrites them
|
|
53
|
+
* in-place with rendered html nodes.
|
|
54
|
+
*/
|
|
55
|
+
const makeEmbedTagDispatch = (registry, ctx, deps) => async (tree) => {
|
|
56
|
+
const candidates = collectCandidates(tree, registry);
|
|
57
|
+
if (candidates.length === 0)
|
|
58
|
+
return;
|
|
59
|
+
await Promise.all(candidates.map(async (candidate) => {
|
|
60
|
+
const registration = registry.getEmbedTag(candidate.tag);
|
|
61
|
+
if (!registration)
|
|
62
|
+
return; // defensive — collectCandidates filtered
|
|
63
|
+
const scopedCtx = {
|
|
64
|
+
...ctx,
|
|
65
|
+
cache: (0, cache_1.scopeForPlugin)(deps.cache, registration.plugin),
|
|
66
|
+
auth: (0, registry_1.createAuthContextStub)(),
|
|
67
|
+
};
|
|
68
|
+
const input = {
|
|
69
|
+
tag: candidate.tag,
|
|
70
|
+
url: candidate.url,
|
|
71
|
+
pageId: deps.pageId,
|
|
72
|
+
};
|
|
73
|
+
const rendered = await (0, cache_1.cachedRender)(deps.cache, registration.plugin, registration.renderer, input, scopedCtx);
|
|
74
|
+
candidate.replacementHtml = rendered.html;
|
|
75
|
+
}));
|
|
76
|
+
// Apply rewrites per parent. Each parent may contain multiple
|
|
77
|
+
// triples — we rebuild its children list in one pass.
|
|
78
|
+
for (const group of (0, _mdast_walk_1.groupByParent)(candidates, (c) => c.linkIndex)) {
|
|
79
|
+
group.parent.children = rewriteChildren(group.parent.children, group.matches);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
exports.makeEmbedTagDispatch = makeEmbedTagDispatch;
|
|
83
|
+
function collectCandidates(tree, registry) {
|
|
84
|
+
const out = [];
|
|
85
|
+
(0, _mdast_walk_1.walkPhrasingTree)(tree, (node, insideLink) => {
|
|
86
|
+
if (insideLink)
|
|
87
|
+
return;
|
|
88
|
+
const children = node.children;
|
|
89
|
+
// Sibling-triple scan for (text-ending-in-`@`, link, …)
|
|
90
|
+
for (let i = 0; i < children.length - 1; i++) {
|
|
91
|
+
const prev = children[i];
|
|
92
|
+
const next = children[i + 1];
|
|
93
|
+
if (prev.type !== 'text')
|
|
94
|
+
continue;
|
|
95
|
+
if (next.type !== 'link')
|
|
96
|
+
continue;
|
|
97
|
+
const text = prev;
|
|
98
|
+
if (!text.value.endsWith('@'))
|
|
99
|
+
continue;
|
|
100
|
+
const link = next;
|
|
101
|
+
const linkChildren = link.children ?? [];
|
|
102
|
+
if (linkChildren.length !== 1)
|
|
103
|
+
continue;
|
|
104
|
+
const inner = linkChildren[0];
|
|
105
|
+
if (inner.type !== 'text')
|
|
106
|
+
continue;
|
|
107
|
+
const tag = inner.value;
|
|
108
|
+
if (!TAG_NAME_RE.test(tag))
|
|
109
|
+
continue;
|
|
110
|
+
const url = link.url;
|
|
111
|
+
if (!url)
|
|
112
|
+
continue;
|
|
113
|
+
if (!registry.getEmbedTag(tag))
|
|
114
|
+
continue;
|
|
115
|
+
out.push({
|
|
116
|
+
parent: node,
|
|
117
|
+
textBeforeIndex: i,
|
|
118
|
+
linkIndex: i + 1,
|
|
119
|
+
tag,
|
|
120
|
+
url,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Rebuild `children` by walking it left-to-right and rewriting each
|
|
128
|
+
* matched (text-ending-in-`@`, link) pair into (text-with-`@`-stripped,
|
|
129
|
+
* html-node). All other children pass through.
|
|
130
|
+
*/
|
|
131
|
+
function rewriteChildren(children, matches) {
|
|
132
|
+
const byLinkIndex = new Map(matches.map((m) => [m.linkIndex, m]));
|
|
133
|
+
const out = [];
|
|
134
|
+
let i = 0;
|
|
135
|
+
while (i < children.length) {
|
|
136
|
+
const next = i + 1 < children.length ? children[i + 1] : null;
|
|
137
|
+
const matchOnNext = next ? byLinkIndex.get(i + 1) : undefined;
|
|
138
|
+
if (matchOnNext && matchOnNext.textBeforeIndex === i) {
|
|
139
|
+
const leadingText = children[i];
|
|
140
|
+
const stripped = leadingText.value.slice(0, -1); // drop the trailing `@`
|
|
141
|
+
if (stripped) {
|
|
142
|
+
out.push({ type: 'text', value: stripped });
|
|
143
|
+
}
|
|
144
|
+
const html = { type: 'html', value: matchOnNext.replacementHtml ?? '' };
|
|
145
|
+
out.push(html);
|
|
146
|
+
i += 2;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
out.push(children[i]);
|
|
150
|
+
i++;
|
|
151
|
+
}
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=embed-tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed-tags.js","sourceRoot":"","sources":["../../../src/renderer/core/embed-tags.ts"],"names":[],"mappings":"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"}
|