@rakun-kit/core 1.6.0 → 1.7.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/README.md +1387 -1279
- package/dist/cjs/api/operations/manager-contract.js +49 -0
- package/dist/cjs/api/operations/manager-contract.js.map +1 -1
- package/dist/cjs/api/operations/manager-manifest.js +30 -0
- package/dist/cjs/api/operations/manager-manifest.js.map +1 -1
- package/dist/cjs/api/operations/manager.js +20 -0
- package/dist/cjs/api/operations/manager.js.map +1 -1
- package/dist/cjs/api/realtime.js +144 -0
- package/dist/cjs/api/realtime.js.map +1 -0
- package/dist/cjs/api/routes/manager/auth/externalLogin.js +7 -5
- package/dist/cjs/api/routes/manager/auth/externalLogin.js.map +1 -1
- package/dist/cjs/api/routes/manager/auth/mfa/verifyRecoveryCode.js +2 -1
- package/dist/cjs/api/routes/manager/auth/mfa/verifyRecoveryCode.js.map +1 -1
- package/dist/cjs/api/routes/manager/auth/passwordRecovery.js +3 -3
- package/dist/cjs/api/routes/manager/auth/passwordRecovery.js.map +1 -1
- package/dist/cjs/api/routes/manager/auth/totp/enrollTotp.js +2 -2
- package/dist/cjs/api/routes/manager/auth/totp/enrollTotp.js.map +1 -1
- package/dist/cjs/api/routes/manager/auth/totp/verifyTotp.js +2 -1
- package/dist/cjs/api/routes/manager/auth/totp/verifyTotp.js.map +1 -1
- package/dist/cjs/api/routes/manager/auth/webauthn/webauthnAuthVerify.js +2 -1
- package/dist/cjs/api/routes/manager/auth/webauthn/webauthnAuthVerify.js.map +1 -1
- package/dist/cjs/api/routes/manager/auth/webauthn/webauthnRegisterOptions.js +2 -2
- package/dist/cjs/api/routes/manager/auth/webauthn/webauthnRegisterOptions.js.map +1 -1
- package/dist/cjs/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js +2 -1
- package/dist/cjs/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js.map +1 -1
- package/dist/cjs/api/routes/manager/collaborationBinary.js +8 -0
- package/dist/cjs/api/routes/manager/collaborationBinary.js.map +1 -0
- package/dist/cjs/api/routes/manager/comments.js +4 -0
- package/dist/cjs/api/routes/manager/comments.js.map +1 -1
- package/dist/cjs/api/routes/manager/contentCollaboration.js +102 -0
- package/dist/cjs/api/routes/manager/contentCollaboration.js.map +1 -0
- package/dist/cjs/api/routes/manager/contentVersions.js +3 -0
- package/dist/cjs/api/routes/manager/contentVersions.js.map +1 -1
- package/dist/cjs/api/routes/manager/delete.js +15 -0
- package/dist/cjs/api/routes/manager/delete.js.map +1 -1
- package/dist/cjs/api/routes/manager/duplicate.js +2 -2
- package/dist/cjs/api/routes/manager/duplicate.js.map +1 -1
- package/dist/cjs/api/routes/manager/localeVariants.js +9 -1
- package/dist/cjs/api/routes/manager/localeVariants.js.map +1 -1
- package/dist/cjs/api/routes/manager/notifications.js +2 -0
- package/dist/cjs/api/routes/manager/notifications.js.map +1 -1
- package/dist/cjs/api/routes/manager/template.js +3 -2
- package/dist/cjs/api/routes/manager/template.js.map +1 -1
- package/dist/cjs/api/routes/manager/templateCollaboration.js +101 -0
- package/dist/cjs/api/routes/manager/templateCollaboration.js.map +1 -0
- package/dist/cjs/api/routes/manager/translateDocument.js +4 -22
- package/dist/cjs/api/routes/manager/translateDocument.js.map +1 -1
- package/dist/cjs/api/routes/manager/trash.js +4 -0
- package/dist/cjs/api/routes/manager/trash.js.map +1 -1
- package/dist/cjs/api/routes/manager/uiLocales.js +47 -5
- package/dist/cjs/api/routes/manager/uiLocales.js.map +1 -1
- package/dist/cjs/api/routes/manager/update.js +4 -0
- package/dist/cjs/api/routes/manager/update.js.map +1 -1
- package/dist/cjs/api/routes/web/llms.js +5 -5
- package/dist/cjs/api/routes/web/llms.js.map +1 -1
- package/dist/cjs/api/routes/web/seo.js +2 -2
- package/dist/cjs/api/routes/web/seo.js.map +1 -1
- package/dist/cjs/api/utils/contentTemplate.js +11 -14
- package/dist/cjs/api/utils/contentTemplate.js.map +1 -1
- package/dist/cjs/api/utils/iteratorVisibility.js +5 -5
- package/dist/cjs/api/utils/iteratorVisibility.js.map +1 -1
- package/dist/cjs/api/utils/managerNotifications.js +4 -1
- package/dist/cjs/api/utils/managerNotifications.js.map +1 -1
- package/dist/cjs/api/utils/mediaUploadToken.js +3 -3
- package/dist/cjs/api/utils/mediaUploadToken.js.map +1 -1
- package/dist/cjs/api/utils/passwords.js +13 -0
- package/dist/cjs/api/utils/passwords.js.map +1 -1
- package/dist/cjs/api/utils/previewToken.js +2 -2
- package/dist/cjs/api/utils/previewToken.js.map +1 -1
- package/dist/cjs/api/utils/realtime.js +20 -0
- package/dist/cjs/api/utils/realtime.js.map +1 -0
- package/dist/cjs/api/utils/recoveryCodes.js +7 -4
- package/dist/cjs/api/utils/recoveryCodes.js.map +1 -1
- package/dist/cjs/api/utils/safeManagerQuery.js +5 -5
- package/dist/cjs/api/utils/safeManagerQuery.js.map +1 -1
- package/dist/cjs/api/utils/sanitizeManagerOutput.js +2 -2
- package/dist/cjs/api/utils/sanitizeManagerOutput.js.map +1 -1
- package/dist/cjs/auth/completePrimaryAuthentication.js +3 -3
- package/dist/cjs/auth/completePrimaryAuthentication.js.map +1 -1
- package/dist/cjs/bootstrapState.js.map +1 -1
- package/dist/cjs/client.js +12 -1
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/collaboration/document.js +170 -0
- package/dist/cjs/collaboration/document.js.map +1 -0
- package/dist/cjs/collaboration/index.js +31 -0
- package/dist/cjs/collaboration/index.js.map +1 -0
- package/dist/cjs/collaboration/memory.js +38 -0
- package/dist/cjs/collaboration/memory.js.map +1 -0
- package/dist/cjs/collaboration/rooms.js +39 -0
- package/dist/cjs/collaboration/rooms.js.map +1 -0
- package/dist/cjs/collaboration/service.js +237 -0
- package/dist/cjs/collaboration/service.js.map +1 -0
- package/dist/cjs/collaboration/types.js +3 -0
- package/dist/cjs/collaboration/types.js.map +1 -0
- package/dist/cjs/contracts.js +2 -0
- package/dist/cjs/contracts.js.map +1 -1
- package/dist/cjs/index.js +19 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/utils/isRecord.js +9 -0
- package/dist/cjs/lib/utils/isRecord.js.map +1 -0
- package/dist/cjs/mail/mailService.js +2 -1
- package/dist/cjs/mail/mailService.js.map +1 -1
- package/dist/cjs/media/imageOptimization.js +22 -32
- package/dist/cjs/media/imageOptimization.js.map +1 -1
- package/dist/cjs/media/mediaService.js +2 -2
- package/dist/cjs/media/mediaService.js.map +1 -1
- package/dist/cjs/media/videoOptimization.js +11 -24
- package/dist/cjs/media/videoOptimization.js.map +1 -1
- package/dist/cjs/platform/image.js +140 -0
- package/dist/cjs/platform/image.js.map +1 -0
- package/dist/cjs/platform/index.js +55 -0
- package/dist/cjs/platform/index.js.map +1 -0
- package/dist/cjs/platform/node.js +53 -0
- package/dist/cjs/platform/node.js.map +1 -0
- package/dist/cjs/platform/realtime.js +55 -0
- package/dist/cjs/platform/realtime.js.map +1 -0
- package/dist/cjs/platform/realtimeServer.js +126 -0
- package/dist/cjs/platform/realtimeServer.js.map +1 -0
- package/dist/cjs/platform/realtimeTopics.js +16 -0
- package/dist/cjs/platform/realtimeTopics.js.map +1 -0
- package/dist/cjs/platform/runtime.js +8 -0
- package/dist/cjs/platform/runtime.js.map +1 -0
- package/dist/cjs/platform/types.js +3 -0
- package/dist/cjs/platform/types.js.map +1 -0
- package/dist/cjs/schemas/manager/collaborationPresence.js +22 -0
- package/dist/cjs/schemas/manager/collaborationPresence.js.map +1 -0
- package/dist/cjs/schemas/manager/contentCollaboration.js +36 -0
- package/dist/cjs/schemas/manager/contentCollaboration.js.map +1 -0
- package/dist/cjs/schemas/manager/templateCollaboration.js +36 -0
- package/dist/cjs/schemas/manager/templateCollaboration.js.map +1 -0
- package/dist/cjs/schemas/manager/uiLocales.js +13 -0
- package/dist/cjs/schemas/manager/uiLocales.js.map +1 -1
- package/dist/cjs/translation/document.js +19 -19
- package/dist/cjs/translation/document.js.map +1 -1
- package/dist/docs/index.md +555 -423
- package/dist/esm/api/operations/index.d.ts +93 -0
- package/dist/esm/api/operations/index.d.ts.map +1 -1
- package/dist/esm/api/operations/manager-contract.d.ts +93 -0
- package/dist/esm/api/operations/manager-contract.d.ts.map +1 -1
- package/dist/esm/api/operations/manager-contract.js +50 -1
- package/dist/esm/api/operations/manager-contract.js.map +1 -1
- package/dist/esm/api/operations/manager-manifest.d.ts +30 -0
- package/dist/esm/api/operations/manager-manifest.d.ts.map +1 -1
- package/dist/esm/api/operations/manager-manifest.js +30 -0
- package/dist/esm/api/operations/manager-manifest.js.map +1 -1
- package/dist/esm/api/operations/manager.d.ts +93 -0
- package/dist/esm/api/operations/manager.d.ts.map +1 -1
- package/dist/esm/api/operations/manager.js +20 -0
- package/dist/esm/api/operations/manager.js.map +1 -1
- package/dist/esm/api/realtime.d.ts +16 -0
- package/dist/esm/api/realtime.d.ts.map +1 -0
- package/dist/esm/api/realtime.js +140 -0
- package/dist/esm/api/realtime.js.map +1 -0
- package/dist/esm/api/routes/manager/auth/externalLogin.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/externalLogin.js +7 -5
- package/dist/esm/api/routes/manager/auth/externalLogin.js.map +1 -1
- package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.d.ts +1 -1
- package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.js +2 -1
- package/dist/esm/api/routes/manager/auth/mfa/verifyRecoveryCode.js.map +1 -1
- package/dist/esm/api/routes/manager/auth/passwordRecovery.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/passwordRecovery.js +3 -3
- package/dist/esm/api/routes/manager/auth/passwordRecovery.js.map +1 -1
- package/dist/esm/api/routes/manager/auth/totp/enrollTotp.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/totp/enrollTotp.js +2 -2
- package/dist/esm/api/routes/manager/auth/totp/enrollTotp.js.map +1 -1
- package/dist/esm/api/routes/manager/auth/totp/verifyTotp.d.ts +1 -1
- package/dist/esm/api/routes/manager/auth/totp/verifyTotp.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/totp/verifyTotp.js +2 -1
- package/dist/esm/api/routes/manager/auth/totp/verifyTotp.js.map +1 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnAuthVerify.d.ts +1 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnAuthVerify.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnAuthVerify.js +2 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnAuthVerify.js.map +1 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterOptions.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterOptions.js +2 -2
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterOptions.js.map +1 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterVerify.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js +2 -1
- package/dist/esm/api/routes/manager/auth/webauthn/webauthnRegisterVerify.js.map +1 -1
- package/dist/esm/api/routes/manager/collaborationBinary.d.ts +3 -0
- package/dist/esm/api/routes/manager/collaborationBinary.d.ts.map +1 -0
- package/dist/esm/api/routes/manager/collaborationBinary.js +3 -0
- package/dist/esm/api/routes/manager/collaborationBinary.js.map +1 -0
- package/dist/esm/api/routes/manager/comments.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/comments.js +4 -0
- package/dist/esm/api/routes/manager/comments.js.map +1 -1
- package/dist/esm/api/routes/manager/contentCollaboration.d.ts +21 -0
- package/dist/esm/api/routes/manager/contentCollaboration.d.ts.map +1 -0
- package/dist/esm/api/routes/manager/contentCollaboration.js +95 -0
- package/dist/esm/api/routes/manager/contentCollaboration.js.map +1 -0
- package/dist/esm/api/routes/manager/contentVersions.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/contentVersions.js +3 -0
- package/dist/esm/api/routes/manager/contentVersions.js.map +1 -1
- package/dist/esm/api/routes/manager/delete.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/delete.js +15 -0
- package/dist/esm/api/routes/manager/delete.js.map +1 -1
- package/dist/esm/api/routes/manager/duplicate.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/duplicate.js +1 -1
- package/dist/esm/api/routes/manager/duplicate.js.map +1 -1
- package/dist/esm/api/routes/manager/localeVariants.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/localeVariants.js +9 -1
- package/dist/esm/api/routes/manager/localeVariants.js.map +1 -1
- package/dist/esm/api/routes/manager/notifications.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/notifications.js +2 -0
- package/dist/esm/api/routes/manager/notifications.js.map +1 -1
- package/dist/esm/api/routes/manager/template.d.ts +1 -0
- package/dist/esm/api/routes/manager/template.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/template.js +1 -1
- package/dist/esm/api/routes/manager/template.js.map +1 -1
- package/dist/esm/api/routes/manager/templateCollaboration.d.ts +17 -0
- package/dist/esm/api/routes/manager/templateCollaboration.d.ts.map +1 -0
- package/dist/esm/api/routes/manager/templateCollaboration.js +95 -0
- package/dist/esm/api/routes/manager/templateCollaboration.js.map +1 -0
- package/dist/esm/api/routes/manager/translateDocument.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/translateDocument.js +5 -23
- package/dist/esm/api/routes/manager/translateDocument.js.map +1 -1
- package/dist/esm/api/routes/manager/trash.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/trash.js +4 -0
- package/dist/esm/api/routes/manager/trash.js.map +1 -1
- package/dist/esm/api/routes/manager/uiLocales.d.ts +3 -0
- package/dist/esm/api/routes/manager/uiLocales.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/uiLocales.js +45 -5
- package/dist/esm/api/routes/manager/uiLocales.js.map +1 -1
- package/dist/esm/api/routes/manager/update.d.ts.map +1 -1
- package/dist/esm/api/routes/manager/update.js +4 -0
- package/dist/esm/api/routes/manager/update.js.map +1 -1
- package/dist/esm/api/routes/web/llms.d.ts.map +1 -1
- package/dist/esm/api/routes/web/llms.js +1 -1
- package/dist/esm/api/routes/web/llms.js.map +1 -1
- package/dist/esm/api/routes/web/seo.d.ts.map +1 -1
- package/dist/esm/api/routes/web/seo.js +1 -1
- package/dist/esm/api/routes/web/seo.js.map +1 -1
- package/dist/esm/api/utils/contentTemplate.d.ts.map +1 -1
- package/dist/esm/api/utils/contentTemplate.js +1 -4
- package/dist/esm/api/utils/contentTemplate.js.map +1 -1
- package/dist/esm/api/utils/iteratorVisibility.d.ts.map +1 -1
- package/dist/esm/api/utils/iteratorVisibility.js +1 -1
- package/dist/esm/api/utils/iteratorVisibility.js.map +1 -1
- package/dist/esm/api/utils/managerNotifications.d.ts.map +1 -1
- package/dist/esm/api/utils/managerNotifications.js +4 -1
- package/dist/esm/api/utils/managerNotifications.js.map +1 -1
- package/dist/esm/api/utils/mediaUploadToken.d.ts.map +1 -1
- package/dist/esm/api/utils/mediaUploadToken.js +3 -3
- package/dist/esm/api/utils/mediaUploadToken.js.map +1 -1
- package/dist/esm/api/utils/passwords.d.ts.map +1 -1
- package/dist/esm/api/utils/passwords.js +13 -0
- package/dist/esm/api/utils/passwords.js.map +1 -1
- package/dist/esm/api/utils/previewToken.d.ts.map +1 -1
- package/dist/esm/api/utils/previewToken.js +2 -2
- package/dist/esm/api/utils/previewToken.js.map +1 -1
- package/dist/esm/api/utils/realtime.d.ts +3 -0
- package/dist/esm/api/utils/realtime.d.ts.map +1 -0
- package/dist/esm/api/utils/realtime.js +15 -0
- package/dist/esm/api/utils/realtime.js.map +1 -0
- package/dist/esm/api/utils/recoveryCodes.d.ts.map +1 -1
- package/dist/esm/api/utils/recoveryCodes.js +7 -4
- package/dist/esm/api/utils/recoveryCodes.js.map +1 -1
- package/dist/esm/api/utils/safeManagerQuery.d.ts.map +1 -1
- package/dist/esm/api/utils/safeManagerQuery.js +1 -1
- package/dist/esm/api/utils/safeManagerQuery.js.map +1 -1
- package/dist/esm/api/utils/sanitizeManagerOutput.d.ts.map +1 -1
- package/dist/esm/api/utils/sanitizeManagerOutput.js +1 -1
- package/dist/esm/api/utils/sanitizeManagerOutput.js.map +1 -1
- package/dist/esm/auth/completePrimaryAuthentication.d.ts.map +1 -1
- package/dist/esm/auth/completePrimaryAuthentication.js +3 -3
- package/dist/esm/auth/completePrimaryAuthentication.js.map +1 -1
- package/dist/esm/bootstrapState.d.ts +11 -1
- package/dist/esm/bootstrapState.d.ts.map +1 -1
- package/dist/esm/bootstrapState.js.map +1 -1
- package/dist/esm/client.d.ts +6 -0
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +3 -0
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/collaboration/document.d.ts +7 -0
- package/dist/esm/collaboration/document.d.ts.map +1 -0
- package/dist/esm/collaboration/document.js +130 -0
- package/dist/esm/collaboration/document.js.map +1 -0
- package/dist/esm/collaboration/index.d.ts +12 -0
- package/dist/esm/collaboration/index.d.ts.map +1 -0
- package/dist/esm/collaboration/index.js +19 -0
- package/dist/esm/collaboration/index.js.map +1 -0
- package/dist/esm/collaboration/memory.d.ts +3 -0
- package/dist/esm/collaboration/memory.d.ts.map +1 -0
- package/dist/esm/collaboration/memory.js +34 -0
- package/dist/esm/collaboration/memory.js.map +1 -0
- package/dist/esm/collaboration/rooms.d.ts +10 -0
- package/dist/esm/collaboration/rooms.d.ts.map +1 -0
- package/dist/esm/collaboration/rooms.js +33 -0
- package/dist/esm/collaboration/rooms.js.map +1 -0
- package/dist/esm/collaboration/service.d.ts +48 -0
- package/dist/esm/collaboration/service.d.ts.map +1 -0
- package/dist/esm/collaboration/service.js +200 -0
- package/dist/esm/collaboration/service.js.map +1 -0
- package/dist/esm/collaboration/types.d.ts +30 -0
- package/dist/esm/collaboration/types.d.ts.map +1 -0
- package/dist/esm/collaboration/types.js +2 -0
- package/dist/esm/collaboration/types.js.map +1 -0
- package/dist/esm/contracts.d.ts +2 -0
- package/dist/esm/contracts.d.ts.map +1 -1
- package/dist/esm/contracts.js +2 -0
- package/dist/esm/contracts.js.map +1 -1
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/utils/isRecord.d.ts +2 -0
- package/dist/esm/lib/utils/isRecord.d.ts.map +1 -0
- package/dist/esm/lib/utils/isRecord.js +5 -0
- package/dist/esm/lib/utils/isRecord.js.map +1 -0
- package/dist/esm/mail/mailService.d.ts.map +1 -1
- package/dist/esm/mail/mailService.js +2 -1
- package/dist/esm/mail/mailService.js.map +1 -1
- package/dist/esm/manager.d.ts +30 -0
- package/dist/esm/manager.d.ts.map +1 -1
- package/dist/esm/media/imageOptimization.d.ts.map +1 -1
- package/dist/esm/media/imageOptimization.js +22 -32
- package/dist/esm/media/imageOptimization.js.map +1 -1
- package/dist/esm/media/mediaService.d.ts.map +1 -1
- package/dist/esm/media/mediaService.js +2 -2
- package/dist/esm/media/mediaService.js.map +1 -1
- package/dist/esm/media/videoOptimization.d.ts.map +1 -1
- package/dist/esm/media/videoOptimization.js +11 -24
- package/dist/esm/media/videoOptimization.js.map +1 -1
- package/dist/esm/platform/image.d.ts +5 -0
- package/dist/esm/platform/image.d.ts.map +1 -0
- package/dist/esm/platform/image.js +134 -0
- package/dist/esm/platform/image.js.map +1 -0
- package/dist/esm/platform/index.d.ts +13 -0
- package/dist/esm/platform/index.d.ts.map +1 -0
- package/dist/esm/platform/index.js +34 -0
- package/dist/esm/platform/index.js.map +1 -0
- package/dist/esm/platform/node.d.ts +6 -0
- package/dist/esm/platform/node.d.ts.map +1 -0
- package/dist/esm/platform/node.js +43 -0
- package/dist/esm/platform/node.js.map +1 -0
- package/dist/esm/platform/realtime.d.ts +10 -0
- package/dist/esm/platform/realtime.d.ts.map +1 -0
- package/dist/esm/platform/realtime.js +49 -0
- package/dist/esm/platform/realtime.js.map +1 -0
- package/dist/esm/platform/realtimeServer.d.ts +26 -0
- package/dist/esm/platform/realtimeServer.d.ts.map +1 -0
- package/dist/esm/platform/realtimeServer.js +118 -0
- package/dist/esm/platform/realtimeServer.js.map +1 -0
- package/dist/esm/platform/realtimeTopics.d.ts +7 -0
- package/dist/esm/platform/realtimeTopics.d.ts.map +1 -0
- package/dist/esm/platform/realtimeTopics.js +7 -0
- package/dist/esm/platform/realtimeTopics.js.map +1 -0
- package/dist/esm/platform/runtime.d.ts +4 -0
- package/dist/esm/platform/runtime.d.ts.map +1 -0
- package/dist/esm/platform/runtime.js +3 -0
- package/dist/esm/platform/runtime.js.map +1 -0
- package/dist/esm/platform/types.d.ts +94 -0
- package/dist/esm/platform/types.d.ts.map +1 -0
- package/dist/esm/platform/types.js +2 -0
- package/dist/esm/platform/types.js.map +1 -0
- package/dist/esm/schemas/manager/collaborationPresence.d.ts +20 -0
- package/dist/esm/schemas/manager/collaborationPresence.d.ts.map +1 -0
- package/dist/esm/schemas/manager/collaborationPresence.js +16 -0
- package/dist/esm/schemas/manager/collaborationPresence.js.map +1 -0
- package/dist/esm/schemas/manager/contentCollaboration.d.ts +51 -0
- package/dist/esm/schemas/manager/contentCollaboration.d.ts.map +1 -0
- package/dist/esm/schemas/manager/contentCollaboration.js +30 -0
- package/dist/esm/schemas/manager/contentCollaboration.js.map +1 -0
- package/dist/esm/schemas/manager/templateCollaboration.d.ts +54 -0
- package/dist/esm/schemas/manager/templateCollaboration.d.ts.map +1 -0
- package/dist/esm/schemas/manager/templateCollaboration.js +30 -0
- package/dist/esm/schemas/manager/templateCollaboration.js.map +1 -0
- package/dist/esm/schemas/manager/uiLocales.d.ts +10 -0
- package/dist/esm/schemas/manager/uiLocales.d.ts.map +1 -1
- package/dist/esm/schemas/manager/uiLocales.js +13 -0
- package/dist/esm/schemas/manager/uiLocales.js.map +1 -1
- package/dist/esm/translation/document.d.ts.map +1 -1
- package/dist/esm/translation/document.js +1 -1
- package/dist/esm/translation/document.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +150 -140
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MediaErrorNotFound = exports.MediaErrorInvalidData = exports.MediaErrorUnknown = exports.MediaError = void 0;
|
|
4
4
|
exports.createMediaServiceFromAdapter = createMediaServiceFromAdapter;
|
|
5
|
-
const
|
|
5
|
+
const platform_1 = require("../platform");
|
|
6
6
|
class MediaError extends Error {
|
|
7
7
|
constructor(message, details, status = 500) {
|
|
8
8
|
super(message);
|
|
@@ -72,7 +72,7 @@ const buildObjectKey = (input, access) => {
|
|
|
72
72
|
const safeFolder = input.folder ? sanitizeSegment(input.folder) : "uploads";
|
|
73
73
|
const ext = getExtension(input.fileName);
|
|
74
74
|
const date = new Date().toISOString().slice(0, 10);
|
|
75
|
-
const id = (0,
|
|
75
|
+
const id = (0, platform_1.getPlatform)().crypto.randomUUID().replace(/-/g, "");
|
|
76
76
|
return `${access}/${safeFolder}/${date}/${id}${ext ? `.${ext}` : ""}`;
|
|
77
77
|
};
|
|
78
78
|
function createMediaServiceFromAdapter(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaService.js","sourceRoot":"","sources":["../../../src/media/mediaService.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"mediaService.js","sourceRoot":"","sources":["../../../src/media/mediaService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.optimizeVideoUpload = optimizeVideoUpload;
|
|
7
|
-
const child_process_1 = require("child_process");
|
|
8
|
-
const promises_1 = require("fs/promises");
|
|
9
|
-
const os_1 = __importDefault(require("os"));
|
|
10
7
|
const path_1 = __importDefault(require("path"));
|
|
11
8
|
const File_1 = require("../lib/fields/File");
|
|
12
9
|
const peerDependencies_1 = require("../lib/utils/peerDependencies");
|
|
10
|
+
const platform_1 = require("../platform");
|
|
13
11
|
const formatMetadata = {
|
|
14
12
|
mp4: { extension: "mp4", mime: "video/mp4" },
|
|
15
13
|
webm: { extension: "webm", mime: "video/webm" },
|
|
@@ -35,31 +33,20 @@ const getFfmpegPath = () => {
|
|
|
35
33
|
};
|
|
36
34
|
const runFfmpeg = async (args) => {
|
|
37
35
|
const ffmpegPath = getFfmpegPath();
|
|
38
|
-
await
|
|
39
|
-
|
|
40
|
-
stdio: ["ignore", "ignore", "pipe"],
|
|
41
|
-
windowsHide: true,
|
|
42
|
-
});
|
|
43
|
-
let stderr = "";
|
|
44
|
-
child.stderr?.on("data", (chunk) => {
|
|
45
|
-
stderr = `${stderr}${String(chunk)}`.slice(-16384);
|
|
46
|
-
});
|
|
47
|
-
child.on("error", reject);
|
|
48
|
-
child.on("close", (code) => {
|
|
49
|
-
if (code === 0) {
|
|
50
|
-
resolve();
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
reject(new Error(`FFmpeg video conversion failed${stderr.trim() ? `: ${stderr.trim()}` : ""}`));
|
|
54
|
-
});
|
|
36
|
+
const result = await (0, platform_1.getPlatform)().workers.runProcess(ffmpegPath, args, {
|
|
37
|
+
windowsHide: true,
|
|
55
38
|
});
|
|
39
|
+
if (result.exitCode !== 0) {
|
|
40
|
+
throw new Error(`FFmpeg video conversion failed${result.stderr.trim() ? `: ${result.stderr.trim()}` : ''}`);
|
|
41
|
+
}
|
|
56
42
|
};
|
|
57
43
|
const transcodeWithFfmpeg = async ({ buffer, format, quality, }) => {
|
|
58
|
-
const
|
|
44
|
+
const filesystem = (0, platform_1.getPlatform)().filesystem;
|
|
45
|
+
const temporaryDirectory = await filesystem.makeTemporaryDirectory('rakun-video-');
|
|
59
46
|
const inputPath = path_1.default.join(temporaryDirectory, "input.video");
|
|
60
47
|
const outputPath = path_1.default.join(temporaryDirectory, `output.${format}`);
|
|
61
48
|
try {
|
|
62
|
-
await
|
|
49
|
+
await filesystem.writeFile(inputPath, buffer);
|
|
63
50
|
const commonArgs = ["-y", "-i", inputPath, "-map", "0:v:0", "-map", "0:a?"];
|
|
64
51
|
if (format === "mp4") {
|
|
65
52
|
await runFfmpeg([
|
|
@@ -99,10 +86,10 @@ const transcodeWithFfmpeg = async ({ buffer, format, quality, }) => {
|
|
|
99
86
|
outputPath,
|
|
100
87
|
]);
|
|
101
88
|
}
|
|
102
|
-
return await
|
|
89
|
+
return Buffer.from(await filesystem.readFile(outputPath));
|
|
103
90
|
}
|
|
104
91
|
finally {
|
|
105
|
-
await
|
|
92
|
+
await filesystem.remove(temporaryDirectory, { recursive: true, force: true });
|
|
106
93
|
}
|
|
107
94
|
};
|
|
108
95
|
async function optimizeVideoUpload(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoOptimization.js","sourceRoot":"","sources":["../../../src/media/videoOptimization.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"videoOptimization.js","sourceRoot":"","sources":["../../../src/media/videoOptimization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bunImage = exports.hasBunImage = exports.sharpImage = void 0;
|
|
4
|
+
const peerDependencies_1 = require("../lib/utils/peerDependencies");
|
|
5
|
+
const getSharp = () => {
|
|
6
|
+
const sharp = (0, peerDependencies_1.requirePeerDependency)('sharp', 'npm install sharp', 'Rakun uses sharp to read image dimensions and optimize media uploads on Node.js.');
|
|
7
|
+
return sharp.default ?? sharp;
|
|
8
|
+
};
|
|
9
|
+
const applySharpFormat = (pipeline, format, quality) => {
|
|
10
|
+
if (format === 'webp')
|
|
11
|
+
return pipeline.webp({ quality });
|
|
12
|
+
if (format === 'jpeg')
|
|
13
|
+
return pipeline.jpeg({ quality });
|
|
14
|
+
if (format === 'png')
|
|
15
|
+
return pipeline.png({ quality });
|
|
16
|
+
return pipeline.avif({ quality });
|
|
17
|
+
};
|
|
18
|
+
const imageFormatMime = {
|
|
19
|
+
avif: 'image/avif',
|
|
20
|
+
jpeg: 'image/jpeg',
|
|
21
|
+
png: 'image/png',
|
|
22
|
+
webp: 'image/webp',
|
|
23
|
+
};
|
|
24
|
+
const transformWithSharp = async (input, options) => {
|
|
25
|
+
let pipeline = getSharp()(input, { failOn: 'none' });
|
|
26
|
+
if (options.autoOrient !== false)
|
|
27
|
+
pipeline = pipeline.rotate();
|
|
28
|
+
if (options.width) {
|
|
29
|
+
pipeline = pipeline.resize({
|
|
30
|
+
width: options.width,
|
|
31
|
+
withoutEnlargement: options.withoutEnlargement,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return await applySharpFormat(pipeline, options.format, options.quality).toBuffer();
|
|
35
|
+
};
|
|
36
|
+
const placeholderFromTransform = async (input, options) => {
|
|
37
|
+
const content = await transformWithSharp(input, options);
|
|
38
|
+
const mime = imageFormatMime[options.format];
|
|
39
|
+
return {
|
|
40
|
+
dataUrl: `data:${mime};base64,${content.toString('base64')}`,
|
|
41
|
+
mime,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
const sharpImage = () => ({
|
|
45
|
+
id: 'sharp',
|
|
46
|
+
async metadata(input) {
|
|
47
|
+
const metadata = await getSharp()(input, { failOn: 'none' }).metadata();
|
|
48
|
+
return {
|
|
49
|
+
width: metadata.width,
|
|
50
|
+
height: metadata.height,
|
|
51
|
+
format: metadata.format,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
placeholder: placeholderFromTransform,
|
|
55
|
+
transform: transformWithSharp,
|
|
56
|
+
});
|
|
57
|
+
exports.sharpImage = sharpImage;
|
|
58
|
+
const getBunImage = () => {
|
|
59
|
+
const BunImage = globalThis.Bun?.Image;
|
|
60
|
+
if (!BunImage) {
|
|
61
|
+
throw new Error('Bun.Image is not available in this Bun runtime.');
|
|
62
|
+
}
|
|
63
|
+
return BunImage;
|
|
64
|
+
};
|
|
65
|
+
const hasBunImage = () => typeof globalThis.Bun?.Image === 'function';
|
|
66
|
+
exports.hasBunImage = hasBunImage;
|
|
67
|
+
const applyBunFormat = (pipeline, options) => {
|
|
68
|
+
if (options.format === 'webp')
|
|
69
|
+
return pipeline.webp({ quality: options.quality });
|
|
70
|
+
if (options.format === 'jpeg')
|
|
71
|
+
return pipeline.jpeg({ quality: options.quality });
|
|
72
|
+
if (options.format === 'png') {
|
|
73
|
+
return pipeline.png({
|
|
74
|
+
compressionLevel: Math.max(0, Math.min(9, Math.round((options.quality / 100) * 9))),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return pipeline.avif({ quality: options.quality });
|
|
78
|
+
};
|
|
79
|
+
const shouldFallbackFromBunImage = (error) => !!error &&
|
|
80
|
+
typeof error === 'object' &&
|
|
81
|
+
'code' in error &&
|
|
82
|
+
(error.code === 'ERR_IMAGE_FORMAT_UNSUPPORTED' || error.code === 'ERR_IMAGE_ENCODE_FAILED');
|
|
83
|
+
const bunPlaceholder = async (input, options) => {
|
|
84
|
+
const pipeline = new (getBunImage())(input, {
|
|
85
|
+
autoOrient: options.autoOrient !== false,
|
|
86
|
+
});
|
|
87
|
+
if (!pipeline.placeholder)
|
|
88
|
+
return await placeholderFromTransform(input, options);
|
|
89
|
+
const dataUrl = await pipeline.placeholder('dataurl');
|
|
90
|
+
const mime = /^data:([^;,]+)[;,]/.exec(dataUrl)?.[1];
|
|
91
|
+
if (!mime)
|
|
92
|
+
throw new Error('Bun.Image.placeholder() returned an invalid data URL.');
|
|
93
|
+
return { dataUrl, mime };
|
|
94
|
+
};
|
|
95
|
+
const bunImage = () => ({
|
|
96
|
+
id: 'bun',
|
|
97
|
+
async metadata(input) {
|
|
98
|
+
try {
|
|
99
|
+
return await new (getBunImage())(input, { autoOrient: false }).metadata();
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (shouldFallbackFromBunImage(error)) {
|
|
103
|
+
return await (0, exports.sharpImage)().metadata(input);
|
|
104
|
+
}
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
async placeholder(input, options) {
|
|
109
|
+
try {
|
|
110
|
+
return await bunPlaceholder(input, options);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
if (shouldFallbackFromBunImage(error)) {
|
|
114
|
+
return await placeholderFromTransform(input, options);
|
|
115
|
+
}
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
async transform(input, options) {
|
|
120
|
+
let pipeline = new (getBunImage())(input, {
|
|
121
|
+
autoOrient: options.autoOrient !== false,
|
|
122
|
+
});
|
|
123
|
+
if (options.width) {
|
|
124
|
+
pipeline = pipeline.resize(options.width, undefined, {
|
|
125
|
+
withoutEnlargement: options.withoutEnlargement,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
return await applyBunFormat(pipeline, options).bytes();
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
if (shouldFallbackFromBunImage(error)) {
|
|
133
|
+
return await (0, exports.sharpImage)().transform(input, options);
|
|
134
|
+
}
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
exports.bunImage = bunImage;
|
|
140
|
+
//# sourceMappingURL=image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/platform/image.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.resolvePlatform = exports.setPlatform = exports.getPlatform = exports.createPlatform = void 0;
|
|
18
|
+
const image_1 = require("./image");
|
|
19
|
+
const node_1 = require("./node");
|
|
20
|
+
const realtime_1 = require("./realtime");
|
|
21
|
+
const runtime_1 = require("./runtime");
|
|
22
|
+
let defaultPlatform = null;
|
|
23
|
+
const createPlatform = (options = {}) => {
|
|
24
|
+
const runtime = options.runtime ?? (0, runtime_1.detectRuntime)();
|
|
25
|
+
return {
|
|
26
|
+
runtime,
|
|
27
|
+
framework: options.framework ?? 'standalone',
|
|
28
|
+
deployment: options.deployment ?? 'persistent',
|
|
29
|
+
image: options.image ?? (runtime === 'bun' && (0, image_1.hasBunImage)() ? (0, image_1.bunImage)() : (0, image_1.sharpImage)()),
|
|
30
|
+
realtime: options.realtime ?? (0, realtime_1.pollingRealtime)(),
|
|
31
|
+
crypto: options.crypto ?? (0, node_1.nodeCrypto)(),
|
|
32
|
+
filesystem: options.filesystem ?? (0, node_1.nodeFilesystem)(),
|
|
33
|
+
compression: options.compression ?? (0, node_1.nodeCompression)(),
|
|
34
|
+
workers: options.workers ?? (0, node_1.nodeWorkers)(),
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
exports.createPlatform = createPlatform;
|
|
38
|
+
const getPlatform = () => {
|
|
39
|
+
defaultPlatform ?? (defaultPlatform = (0, exports.createPlatform)());
|
|
40
|
+
return defaultPlatform;
|
|
41
|
+
};
|
|
42
|
+
exports.getPlatform = getPlatform;
|
|
43
|
+
const setPlatform = (platform) => {
|
|
44
|
+
defaultPlatform = platform;
|
|
45
|
+
};
|
|
46
|
+
exports.setPlatform = setPlatform;
|
|
47
|
+
const resolvePlatform = (platform) => platform ?? (0, exports.createPlatform)();
|
|
48
|
+
exports.resolvePlatform = resolvePlatform;
|
|
49
|
+
__exportStar(require("./image"), exports);
|
|
50
|
+
__exportStar(require("./node"), exports);
|
|
51
|
+
__exportStar(require("./realtime"), exports);
|
|
52
|
+
__exportStar(require("./realtimeServer"), exports);
|
|
53
|
+
__exportStar(require("./realtimeTopics"), exports);
|
|
54
|
+
__exportStar(require("./runtime"), exports);
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platform/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAA2D;AAC3D,iCAAiF;AACjF,yCAA4C;AAC5C,uCAAyC;AAGzC,IAAI,eAAe,GAAoB,IAAI,CAAA;AAEpC,MAAM,cAAc,GAAG,CAAC,UAA2B,EAAE,EAAY,EAAE;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAA,uBAAa,GAAE,CAAA;IAElD,OAAO;QACL,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,YAAY;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAA,mBAAW,GAAE,CAAC,CAAC,CAAC,IAAA,gBAAQ,GAAE,CAAC,CAAC,CAAC,IAAA,kBAAU,GAAE,CAAC;QACxF,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAA,0BAAe,GAAE;QAC/C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAA,iBAAU,GAAE;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAA,qBAAc,GAAE;QAClD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAA,sBAAe,GAAE;QACrD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAA,kBAAW,GAAE;KAC1C,CAAA;AACH,CAAC,CAAA;AAdY,QAAA,cAAc,kBAc1B;AAEM,MAAM,WAAW,GAAG,GAAa,EAAE;IACxC,eAAe,KAAf,eAAe,GAAK,IAAA,sBAAc,GAAE,EAAA;IACpC,OAAO,eAAe,CAAA;AACxB,CAAC,CAAA;AAHY,QAAA,WAAW,eAGvB;AAEM,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAQ,EAAE;IACtD,eAAe,GAAG,QAAQ,CAAA;AAC5B,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB;AAEM,MAAM,eAAe,GAAG,CAAC,QAAmB,EAAY,EAAE,CAAC,QAAQ,IAAI,IAAA,sBAAc,GAAE,CAAA;AAAjF,QAAA,eAAe,mBAAkE;AAE9F,0CAAuB;AACvB,yCAAsB;AACtB,6CAA0B;AAC1B,mDAAgC;AAChC,mDAAgC;AAChC,4CAAyB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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.nodeWorkers = exports.nodeCompression = exports.nodeFilesystem = exports.nodeCrypto = void 0;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const node_child_process_1 = require("node:child_process");
|
|
12
|
+
const node_util_1 = require("node:util");
|
|
13
|
+
const node_zlib_1 = require("node:zlib");
|
|
14
|
+
const nodeCrypto = () => ({
|
|
15
|
+
randomBytes: node_crypto_1.randomBytes,
|
|
16
|
+
randomUUID: node_crypto_1.randomUUID,
|
|
17
|
+
hash: (algorithm, value, encoding) => (0, node_crypto_1.createHash)(algorithm).update(value).digest(encoding),
|
|
18
|
+
hmac: (algorithm, secret, value, encoding) => (0, node_crypto_1.createHmac)(algorithm, secret).update(value).digest(encoding),
|
|
19
|
+
timingSafeEqual: node_crypto_1.timingSafeEqual,
|
|
20
|
+
});
|
|
21
|
+
exports.nodeCrypto = nodeCrypto;
|
|
22
|
+
const nodeFilesystem = () => ({
|
|
23
|
+
makeTemporaryDirectory: (prefix) => (0, promises_1.mkdtemp)(node_path_1.default.join(node_os_1.default.tmpdir(), prefix)),
|
|
24
|
+
readFile: promises_1.readFile,
|
|
25
|
+
writeFile: promises_1.writeFile,
|
|
26
|
+
remove: promises_1.rm,
|
|
27
|
+
});
|
|
28
|
+
exports.nodeFilesystem = nodeFilesystem;
|
|
29
|
+
const gzipAsync = (0, node_util_1.promisify)(node_zlib_1.gzip);
|
|
30
|
+
const gunzipAsync = (0, node_util_1.promisify)(node_zlib_1.gunzip);
|
|
31
|
+
const nodeCompression = () => ({
|
|
32
|
+
gzip: gzipAsync,
|
|
33
|
+
gunzip: gunzipAsync,
|
|
34
|
+
});
|
|
35
|
+
exports.nodeCompression = nodeCompression;
|
|
36
|
+
const nodeWorkers = () => ({
|
|
37
|
+
runProcess(executable, args, options) {
|
|
38
|
+
return new Promise((resolve, reject) => {
|
|
39
|
+
const child = (0, node_child_process_1.spawn)(executable, [...args], {
|
|
40
|
+
stdio: ['ignore', 'ignore', 'pipe'],
|
|
41
|
+
windowsHide: options?.windowsHide ?? true,
|
|
42
|
+
});
|
|
43
|
+
let stderr = '';
|
|
44
|
+
child.stderr?.on('data', (chunk) => {
|
|
45
|
+
stderr = `${stderr}${String(chunk)}`.slice(-16384);
|
|
46
|
+
});
|
|
47
|
+
child.on('error', reject);
|
|
48
|
+
child.on('close', (exitCode) => resolve({ exitCode, stderr }));
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
exports.nodeWorkers = nodeWorkers;
|
|
53
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/platform/node.ts"],"names":[],"mappings":";;;;;;AAAA,6CAA8F;AAC9F,+CAAmE;AACnE,sDAAwB;AACxB,0DAA4B;AAC5B,2DAA0C;AAC1C,yCAAqC;AACrC,yCAAwC;AASjC,MAAM,UAAU,GAAG,GAAmB,EAAE,CAAC,CAAC;IAC/C,WAAW,EAAX,yBAAW;IACX,UAAU,EAAV,wBAAU;IACV,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAA,wBAAU,EAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC1F,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAC3C,IAAA,wBAAU,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9D,eAAe,EAAf,6BAAe;CAChB,CAAC,CAAA;AAPW,QAAA,UAAU,cAOrB;AAEK,MAAM,cAAc,GAAG,GAAuB,EAAE,CAAC,CAAC;IACvD,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,kBAAO,EAAC,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3E,QAAQ,EAAR,mBAAQ;IACR,SAAS,EAAT,oBAAS;IACT,MAAM,EAAE,aAAE;CACX,CAAC,CAAA;AALW,QAAA,cAAc,kBAKzB;AAEF,MAAM,SAAS,GAAG,IAAA,qBAAS,EAAC,gBAAI,CAAC,CAAA;AACjC,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,kBAAM,CAAC,CAAA;AAE9B,MAAM,eAAe,GAAG,GAAwB,EAAE,CAAC,CAAC;IACzD,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;CACpB,CAAC,CAAA;AAHW,QAAA,eAAe,mBAG1B;AAEK,MAAM,WAAW,GAAG,GAAoB,EAAE,CAAC,CAAC;IACjD,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;gBACzC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;gBACnC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;aAC1C,CAAC,CAAA;YACF,IAAI,MAAM,GAAG,EAAE,CAAA;YACf,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;gBAClD,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAM,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;YACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACzB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA;AAfW,QAAA,WAAW,eAetB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.realtimeFromMetadata = exports.sseRealtime = exports.pollingRealtime = exports.DEFAULT_SSE_ENDPOINT = void 0;
|
|
4
|
+
const normalizeInterval = (value) => typeof value === 'number' && Number.isFinite(value) && value >= 250 ? Math.round(value) : 3000;
|
|
5
|
+
exports.DEFAULT_SSE_ENDPOINT = '/realtime';
|
|
6
|
+
const eventRealtime = (metadata) => {
|
|
7
|
+
const listeners = new Map();
|
|
8
|
+
return {
|
|
9
|
+
metadata,
|
|
10
|
+
subscribe(topic, onChange) {
|
|
11
|
+
const topicListeners = listeners.get(topic) ?? new Set();
|
|
12
|
+
topicListeners.add(onChange);
|
|
13
|
+
listeners.set(topic, topicListeners);
|
|
14
|
+
return () => {
|
|
15
|
+
topicListeners.delete(onChange);
|
|
16
|
+
if (topicListeners.size === 0)
|
|
17
|
+
listeners.delete(topic);
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
publish(topic) {
|
|
21
|
+
for (const listener of listeners.get(topic) ?? []) {
|
|
22
|
+
try {
|
|
23
|
+
listener();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// A stale connection must not block other subscribers or the mutation.
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const pollingRealtime = (options = {}) => {
|
|
33
|
+
const intervalMs = normalizeInterval(options.intervalMs);
|
|
34
|
+
return {
|
|
35
|
+
metadata: { transport: 'polling', intervalMs },
|
|
36
|
+
subscribe(_topic, onChange, subscriptionOptions) {
|
|
37
|
+
const timer = setInterval(onChange, normalizeInterval(subscriptionOptions?.intervalMs ?? intervalMs));
|
|
38
|
+
return () => clearInterval(timer);
|
|
39
|
+
},
|
|
40
|
+
publish() {
|
|
41
|
+
// Polling consumers discover changes on their next scheduled refresh.
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
exports.pollingRealtime = pollingRealtime;
|
|
46
|
+
const sseRealtime = (options = {}) => eventRealtime({ transport: 'sse', endpoint: options.endpoint ?? exports.DEFAULT_SSE_ENDPOINT });
|
|
47
|
+
exports.sseRealtime = sseRealtime;
|
|
48
|
+
const realtimeFromMetadata = (metadata) => {
|
|
49
|
+
if (metadata.transport === 'sse') {
|
|
50
|
+
return (0, exports.sseRealtime)({ endpoint: metadata.endpoint });
|
|
51
|
+
}
|
|
52
|
+
return (0, exports.pollingRealtime)({ intervalMs: metadata.intervalMs });
|
|
53
|
+
};
|
|
54
|
+
exports.realtimeFromMetadata = realtimeFromMetadata;
|
|
55
|
+
//# sourceMappingURL=realtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../../src/platform/realtime.ts"],"names":[],"mappings":";;;AAEA,MAAM,iBAAiB,GAAG,CAAC,KAAyB,EAAU,EAAE,CAC9D,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAK,CAAA;AAEpF,QAAA,oBAAoB,GAAG,WAAW,CAAA;AAE/C,MAAM,aAAa,GAAG,CAAC,QAA0B,EAAoB,EAAE;IACrE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEpD,OAAO;QACL,QAAQ;QACR,SAAS,CAAC,KAAK,EAAE,QAAQ;YACvB,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAc,CAAA;YACpE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC5B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;YAEpC,OAAO,GAAG,EAAE;gBACV,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAC/B,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC;oBAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACxD,CAAC,CAAA;QACH,CAAC;QACD,OAAO,CAAC,KAAK;YACX,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC;oBACH,QAAQ,EAAE,CAAA;gBACZ,CAAC;gBAAC,MAAM,CAAC;oBACP,uEAAuE;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAEM,MAAM,eAAe,GAAG,CAAC,UAAmC,EAAE,EAAoB,EAAE;IACzF,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACxD,OAAO;QACL,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;QAC9C,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB;YAC7C,MAAM,KAAK,GAAG,WAAW,CACvB,QAAQ,EACR,iBAAiB,CAAC,mBAAmB,EAAE,UAAU,IAAI,UAAU,CAAC,CACjE,CAAA;YACD,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;QACD,OAAO;YACL,sEAAsE;QACxE,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAfY,QAAA,eAAe,mBAe3B;AAEM,MAAM,WAAW,GAAG,CAAC,UAAiC,EAAE,EAAoB,EAAE,CACnF,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,4BAAoB,EAAE,CAAC,CAAA;AAD5E,QAAA,WAAW,eACiE;AAElF,MAAM,oBAAoB,GAAG,CAAC,QAA0B,EAAoB,EAAE;IACnF,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACjC,OAAO,IAAA,mBAAW,EAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,IAAA,uBAAe,EAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;AAC7D,CAAC,CAAA;AALY,QAAA,oBAAoB,wBAKhC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRealtimeSseStream = exports.isRealtimeEndpointRequest = exports.resolveRealtimeEndpointPath = exports.parseRealtimePresenceBindings = exports.parseRealtimeTopics = void 0;
|
|
4
|
+
const DEFAULT_HEARTBEAT_MS = 15000;
|
|
5
|
+
const MAX_TOPIC_LENGTH = 2048;
|
|
6
|
+
const MAX_TOPICS = 64;
|
|
7
|
+
const MAX_PRESENCE_CLIENT_ID_LENGTH = 128;
|
|
8
|
+
const REQUEST_URL_BASE = 'http://rakun.local';
|
|
9
|
+
const parseRequestUrl = (value) => value instanceof URL ? value : new URL(value, REQUEST_URL_BASE);
|
|
10
|
+
const parseRealtimeTopics = (requestUrl) => {
|
|
11
|
+
const topics = parseRequestUrl(requestUrl)
|
|
12
|
+
.searchParams.getAll('topic')
|
|
13
|
+
.map((topic) => topic.trim())
|
|
14
|
+
.filter((topic, index, values) => topic.length > 0 && values.indexOf(topic) === index);
|
|
15
|
+
if (topics.length === 0 ||
|
|
16
|
+
topics.length > MAX_TOPICS ||
|
|
17
|
+
topics.some((topic) => topic.length > MAX_TOPIC_LENGTH)) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return topics;
|
|
21
|
+
};
|
|
22
|
+
exports.parseRealtimeTopics = parseRealtimeTopics;
|
|
23
|
+
const parseRealtimePresenceBindings = (requestUrl, topics) => {
|
|
24
|
+
const values = parseRequestUrl(requestUrl).searchParams.getAll('presence');
|
|
25
|
+
const bindings = [];
|
|
26
|
+
for (const value of values) {
|
|
27
|
+
try {
|
|
28
|
+
const binding = JSON.parse(value);
|
|
29
|
+
if (!Array.isArray(binding) ||
|
|
30
|
+
binding.length !== 2 ||
|
|
31
|
+
typeof binding[0] !== 'string' ||
|
|
32
|
+
!topics.includes(binding[0]) ||
|
|
33
|
+
typeof binding[1] !== 'string' ||
|
|
34
|
+
!binding[1] ||
|
|
35
|
+
binding[1].length > MAX_PRESENCE_CLIENT_ID_LENGTH) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
if (bindings.some((current) => current.topic === binding[0]))
|
|
39
|
+
return null;
|
|
40
|
+
bindings.push({ topic: binding[0], clientId: binding[1] });
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return bindings;
|
|
47
|
+
};
|
|
48
|
+
exports.parseRealtimePresenceBindings = parseRealtimePresenceBindings;
|
|
49
|
+
const normalizePath = (value) => {
|
|
50
|
+
const segments = value.split('/').filter(Boolean);
|
|
51
|
+
return segments.length > 0 ? `/${segments.join('/')}` : '';
|
|
52
|
+
};
|
|
53
|
+
const resolveRealtimeEndpointPath = (endpoint, basePath = '') => {
|
|
54
|
+
if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(endpoint)) {
|
|
55
|
+
return new URL(endpoint).pathname;
|
|
56
|
+
}
|
|
57
|
+
const normalizedEndpoint = normalizePath(parseRequestUrl(endpoint).pathname);
|
|
58
|
+
const normalizedBasePath = normalizePath(basePath);
|
|
59
|
+
if (!normalizedBasePath ||
|
|
60
|
+
normalizedEndpoint === normalizedBasePath ||
|
|
61
|
+
normalizedEndpoint.startsWith(`${normalizedBasePath}/`)) {
|
|
62
|
+
return normalizedEndpoint;
|
|
63
|
+
}
|
|
64
|
+
return `${normalizedBasePath}${normalizedEndpoint}`;
|
|
65
|
+
};
|
|
66
|
+
exports.resolveRealtimeEndpointPath = resolveRealtimeEndpointPath;
|
|
67
|
+
const isRealtimeEndpointRequest = ({ basePath, endpoint, method, requestUrl, }) => {
|
|
68
|
+
if (method !== 'GET')
|
|
69
|
+
return false;
|
|
70
|
+
const resolvedRequestUrl = parseRequestUrl(requestUrl);
|
|
71
|
+
return resolvedRequestUrl.pathname === (0, exports.resolveRealtimeEndpointPath)(endpoint, basePath);
|
|
72
|
+
};
|
|
73
|
+
exports.isRealtimeEndpointRequest = isRealtimeEndpointRequest;
|
|
74
|
+
const createRealtimeSseStream = ({ heartbeatMs = DEFAULT_HEARTBEAT_MS, realtime, signal, lifecycle, topics, }) => {
|
|
75
|
+
const encoder = new TextEncoder();
|
|
76
|
+
const normalizedHeartbeatMs = Number.isFinite(heartbeatMs)
|
|
77
|
+
? Math.max(1000, heartbeatMs)
|
|
78
|
+
: DEFAULT_HEARTBEAT_MS;
|
|
79
|
+
let cleanup = () => undefined;
|
|
80
|
+
let sequence = 0;
|
|
81
|
+
return new ReadableStream({
|
|
82
|
+
start(controller) {
|
|
83
|
+
let active = true;
|
|
84
|
+
const send = (topic) => {
|
|
85
|
+
if (!active)
|
|
86
|
+
return;
|
|
87
|
+
sequence += 1;
|
|
88
|
+
controller.enqueue(encoder.encode(`id: ${sequence}\ndata: ${JSON.stringify({ topic })}\n\n`));
|
|
89
|
+
};
|
|
90
|
+
const unsubscribers = topics.map((topic) => realtime.subscribe(topic, () => send(topic)));
|
|
91
|
+
const heartbeat = setInterval(() => {
|
|
92
|
+
if (active) {
|
|
93
|
+
lifecycle?.heartbeat?.();
|
|
94
|
+
controller.enqueue(encoder.encode(': heartbeat\n\n'));
|
|
95
|
+
}
|
|
96
|
+
}, normalizedHeartbeatMs);
|
|
97
|
+
let abort;
|
|
98
|
+
const close = () => {
|
|
99
|
+
if (!active)
|
|
100
|
+
return;
|
|
101
|
+
active = false;
|
|
102
|
+
clearInterval(heartbeat);
|
|
103
|
+
for (const unsubscribe of unsubscribers)
|
|
104
|
+
unsubscribe();
|
|
105
|
+
lifecycle?.close?.();
|
|
106
|
+
signal?.removeEventListener('abort', abort);
|
|
107
|
+
};
|
|
108
|
+
abort = () => {
|
|
109
|
+
close();
|
|
110
|
+
controller.close();
|
|
111
|
+
};
|
|
112
|
+
cleanup = close;
|
|
113
|
+
if (signal?.aborted) {
|
|
114
|
+
abort();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
118
|
+
controller.enqueue(encoder.encode(': connected\n\n'));
|
|
119
|
+
},
|
|
120
|
+
cancel() {
|
|
121
|
+
cleanup();
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
exports.createRealtimeSseStream = createRealtimeSseStream;
|
|
126
|
+
//# sourceMappingURL=realtimeServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtimeServer.js","sourceRoot":"","sources":["../../../src/platform/realtimeServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.managerNotificationsRealtimeTopic = exports.contentCommentsRealtimeTopic = exports.contentVersionsRealtimeTopic = exports.localeVariantsRealtimeTopic = exports.collaborationRealtimeTopic = exports.createRealtimeTopic = void 0;
|
|
4
|
+
const createRealtimeTopic = (...parts) => JSON.stringify(parts);
|
|
5
|
+
exports.createRealtimeTopic = createRealtimeTopic;
|
|
6
|
+
const collaborationRealtimeTopic = (resource, contentType, documentId) => (0, exports.createRealtimeTopic)('collaboration', resource, contentType, documentId);
|
|
7
|
+
exports.collaborationRealtimeTopic = collaborationRealtimeTopic;
|
|
8
|
+
const localeVariantsRealtimeTopic = (contentType) => (0, exports.createRealtimeTopic)('locale-variants', contentType);
|
|
9
|
+
exports.localeVariantsRealtimeTopic = localeVariantsRealtimeTopic;
|
|
10
|
+
const contentVersionsRealtimeTopic = (contentType) => (0, exports.createRealtimeTopic)('content-versions', contentType);
|
|
11
|
+
exports.contentVersionsRealtimeTopic = contentVersionsRealtimeTopic;
|
|
12
|
+
const contentCommentsRealtimeTopic = (contentType, documentId) => (0, exports.createRealtimeTopic)('content-comments', contentType, documentId);
|
|
13
|
+
exports.contentCommentsRealtimeTopic = contentCommentsRealtimeTopic;
|
|
14
|
+
const managerNotificationsRealtimeTopic = () => (0, exports.createRealtimeTopic)('manager-notifications');
|
|
15
|
+
exports.managerNotificationsRealtimeTopic = managerNotificationsRealtimeTopic;
|
|
16
|
+
//# sourceMappingURL=realtimeTopics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtimeTopics.js","sourceRoot":"","sources":["../../../src/platform/realtimeTopics.ts"],"names":[],"mappings":";;;AAAO,MAAM,mBAAmB,GAAG,CAAC,GAAG,KAAgD,EAAU,EAAE,CACjG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AADV,QAAA,mBAAmB,uBACT;AAEhB,MAAM,0BAA0B,GAAG,CACxC,QAAgC,EAChC,WAAmB,EACnB,UAAmB,EACX,EAAE,CAAC,IAAA,2BAAmB,EAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;AAJvE,QAAA,0BAA0B,8BAI6C;AAE7E,MAAM,2BAA2B,GAAG,CAAC,WAAmB,EAAU,EAAE,CACzE,IAAA,2BAAmB,EAAC,iBAAiB,EAAE,WAAW,CAAC,CAAA;AADxC,QAAA,2BAA2B,+BACa;AAE9C,MAAM,4BAA4B,GAAG,CAAC,WAAmB,EAAU,EAAE,CAC1E,IAAA,2BAAmB,EAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;AADzC,QAAA,4BAA4B,gCACa;AAE/C,MAAM,4BAA4B,GAAG,CAAC,WAAmB,EAAE,UAAkB,EAAU,EAAE,CAC9F,IAAA,2BAAmB,EAAC,kBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;AADrD,QAAA,4BAA4B,gCACyB;AAE3D,MAAM,iCAAiC,GAAG,GAAW,EAAE,CAC5D,IAAA,2BAAmB,EAAC,uBAAuB,CAAC,CAAA;AADjC,QAAA,iCAAiC,qCACA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBun = exports.detectRuntime = void 0;
|
|
4
|
+
const detectRuntime = () => typeof process !== 'undefined' && process.versions?.bun ? 'bun' : 'node';
|
|
5
|
+
exports.detectRuntime = detectRuntime;
|
|
6
|
+
const isBun = () => (0, exports.detectRuntime)() === 'bun';
|
|
7
|
+
exports.isBun = isBun;
|
|
8
|
+
//# sourceMappingURL=runtime.js.map
|