@jazzmind/busibox-app 3.0.18 → 3.0.19
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/dist/components/UserDropdown.d.ts +0 -16
- package/dist/components/UserDropdown.d.ts.map +1 -1
- package/dist/components/UserDropdown.js +2 -2
- package/dist/components/UserDropdown.js.map +1 -1
- package/dist/components/auth/PasskeyRequiredWrapper.d.ts +0 -8
- package/dist/components/auth/PasskeyRequiredWrapper.d.ts.map +1 -1
- package/dist/components/auth/PasskeyRequiredWrapper.js +2 -2
- package/dist/components/auth/PasskeyRequiredWrapper.js.map +1 -1
- package/dist/components/auth/ProtectedRoute.d.ts +0 -9
- package/dist/components/auth/ProtectedRoute.d.ts.map +1 -1
- package/dist/components/auth/ProtectedRoute.js +2 -2
- package/dist/components/auth/ProtectedRoute.js.map +1 -1
- package/dist/components/auth/SessionProvider.d.ts +0 -40
- package/dist/components/auth/SessionProvider.d.ts.map +1 -1
- package/dist/components/auth/SessionProvider.js +2 -2
- package/dist/components/auth/SessionProvider.js.map +1 -1
- package/dist/components/chat/AgentBadge.d.ts +0 -5
- package/dist/components/chat/AgentBadge.d.ts.map +1 -1
- package/dist/components/chat/AgentBadge.js +2 -2
- package/dist/components/chat/AgentBadge.js.map +1 -1
- package/dist/components/chat/AgentSelectionPanel.d.ts +0 -6
- package/dist/components/chat/AgentSelectionPanel.d.ts.map +1 -1
- package/dist/components/chat/AgentSelectionPanel.js +2 -2
- package/dist/components/chat/AgentSelectionPanel.js.map +1 -1
- package/dist/components/chat/AgentSelector.d.ts +0 -6
- package/dist/components/chat/AgentSelector.d.ts.map +1 -1
- package/dist/components/chat/AgentSelector.js +2 -2
- package/dist/components/chat/AgentSelector.js.map +1 -1
- package/dist/components/chat/AgentToolSelector.d.ts +0 -7
- package/dist/components/chat/AgentToolSelector.d.ts.map +1 -1
- package/dist/components/chat/AgentToolSelector.js +2 -2
- package/dist/components/chat/AgentToolSelector.js.map +1 -1
- package/dist/components/chat/AttachmentPreview.d.ts.map +1 -1
- package/dist/components/chat/AttachmentPreview.js +0 -5
- package/dist/components/chat/AttachmentPreview.js.map +1 -1
- package/dist/components/chat/AttachmentUploader.d.ts +0 -5
- package/dist/components/chat/AttachmentUploader.d.ts.map +1 -1
- package/dist/components/chat/AttachmentUploader.js +2 -2
- package/dist/components/chat/AttachmentUploader.js.map +1 -1
- package/dist/components/chat/ChatContainer.d.ts +0 -6
- package/dist/components/chat/ChatContainer.d.ts.map +1 -1
- package/dist/components/chat/ChatContainer.js +2 -2
- package/dist/components/chat/ChatContainer.js.map +1 -1
- package/dist/components/chat/ConversationSidebar.d.ts +0 -5
- package/dist/components/chat/ConversationSidebar.d.ts.map +1 -1
- package/dist/components/chat/ConversationSidebar.js +2 -2
- package/dist/components/chat/ConversationSidebar.js.map +1 -1
- package/dist/components/chat/DeleteConversationModal.d.ts +0 -3
- package/dist/components/chat/DeleteConversationModal.d.ts.map +1 -1
- package/dist/components/chat/DeleteConversationModal.js +2 -2
- package/dist/components/chat/DeleteConversationModal.js.map +1 -1
- package/dist/components/chat/FullChatInterface.d.ts +0 -23
- package/dist/components/chat/FullChatInterface.d.ts.map +1 -1
- package/dist/components/chat/FullChatInterface.js +2 -2
- package/dist/components/chat/FullChatInterface.js.map +1 -1
- package/dist/components/chat/InsightEditModal.d.ts +0 -5
- package/dist/components/chat/InsightEditModal.d.ts.map +1 -1
- package/dist/components/chat/InsightEditModal.js +2 -2
- package/dist/components/chat/InsightEditModal.js.map +1 -1
- package/dist/components/chat/LibrarySelector.d.ts +0 -6
- package/dist/components/chat/LibrarySelector.d.ts.map +1 -1
- package/dist/components/chat/LibrarySelector.js +2 -2
- package/dist/components/chat/LibrarySelector.js.map +1 -1
- package/dist/components/chat/MessageInput.d.ts +0 -5
- package/dist/components/chat/MessageInput.d.ts.map +1 -1
- package/dist/components/chat/MessageInput.js +2 -2
- package/dist/components/chat/MessageInput.js.map +1 -1
- package/dist/components/chat/MessageList.d.ts +0 -5
- package/dist/components/chat/MessageList.d.ts.map +1 -1
- package/dist/components/chat/MessageList.js +2 -2
- package/dist/components/chat/MessageList.js.map +1 -1
- package/dist/components/chat/RawContentToggle.d.ts.map +1 -1
- package/dist/components/chat/RawContentToggle.js +0 -6
- package/dist/components/chat/RawContentToggle.js.map +1 -1
- package/dist/components/chat/SearchToggles.d.ts +0 -5
- package/dist/components/chat/SearchToggles.d.ts.map +1 -1
- package/dist/components/chat/SearchToggles.js +2 -2
- package/dist/components/chat/SearchToggles.js.map +1 -1
- package/dist/components/chat/SimpleChatInterface.d.ts +0 -25
- package/dist/components/chat/SimpleChatInterface.d.ts.map +1 -1
- package/dist/components/chat/SimpleChatInterface.js +2 -2
- package/dist/components/chat/SimpleChatInterface.js.map +1 -1
- package/dist/components/chat/ThinkingSection.d.ts +0 -7
- package/dist/components/chat/ThinkingSection.d.ts.map +1 -1
- package/dist/components/chat/ThinkingSection.js +2 -2
- package/dist/components/chat/ThinkingSection.js.map +1 -1
- package/dist/components/chat/ThinkingToggle.d.ts +0 -6
- package/dist/components/chat/ThinkingToggle.d.ts.map +1 -1
- package/dist/components/chat/ThinkingToggle.js +2 -2
- package/dist/components/chat/ThinkingToggle.js.map +1 -1
- package/dist/components/chat/ToolSelector.d.ts +0 -6
- package/dist/components/chat/ToolSelector.d.ts.map +1 -1
- package/dist/components/chat/ToolSelector.js +2 -2
- package/dist/components/chat/ToolSelector.js.map +1 -1
- package/dist/components/shared/AppIcon.d.ts.map +1 -1
- package/dist/components/shared/AppIcon.js +2 -2
- package/dist/components/shared/AppIcon.js.map +1 -1
- package/dist/components/shared/Modal.d.ts.map +1 -1
- package/dist/components/shared/Modal.js +2 -2
- package/dist/components/shared/Modal.js.map +1 -1
- package/dist/components/workflow/WorkflowList.d.ts.map +1 -1
- package/dist/components/workflow/WorkflowList.js +2 -2
- package/dist/components/workflow/WorkflowList.js.map +1 -1
- package/dist/contexts/AuthContext.d.ts.map +1 -1
- package/dist/contexts/AuthContext.js +2 -2
- package/dist/contexts/AuthContext.js.map +1 -1
- package/dist/contexts/CustomizationContext.d.ts.map +1 -1
- package/dist/contexts/CustomizationContext.js +2 -2
- package/dist/contexts/CustomizationContext.js.map +1 -1
- package/dist/contexts/ThemeContext.d.ts.map +1 -1
- package/dist/contexts/ThemeContext.js +2 -2
- package/dist/contexts/ThemeContext.js.map +1 -1
- package/dist/layout/AdminHeader.d.ts +0 -5
- package/dist/layout/AdminHeader.d.ts.map +1 -1
- package/dist/layout/AdminHeader.js +2 -2
- package/dist/layout/AdminHeader.js.map +1 -1
- package/dist/layout/Footer.d.ts +0 -5
- package/dist/layout/Footer.d.ts.map +1 -1
- package/dist/layout/Footer.js +2 -2
- package/dist/layout/Footer.js.map +1 -1
- package/dist/layout/Header.d.ts.map +1 -1
- package/dist/layout/Header.js +2 -2
- package/dist/layout/Header.js.map +1 -1
- package/dist/layout/ThemeToggle.d.ts +0 -5
- package/dist/layout/ThemeToggle.d.ts.map +1 -1
- package/dist/layout/ThemeToggle.js +2 -2
- package/dist/layout/ThemeToggle.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/agent/agent-api-helpers.d.ts +0 -16
- package/dist/lib/agent/agent-api-helpers.d.ts.map +0 -1
- package/dist/lib/agent/agent-api-helpers.js +0 -50
- package/dist/lib/agent/agent-api-helpers.js.map +0 -1
- package/dist/lib/agent/api-helpers.d.ts +0 -16
- package/dist/lib/agent/api-helpers.d.ts.map +0 -1
- package/dist/lib/agent/api-helpers.js +0 -50
- package/dist/lib/agent/api-helpers.js.map +0 -1
- package/dist/lib/agent/chat-cleanup.d.ts +0 -34
- package/dist/lib/agent/chat-cleanup.d.ts.map +0 -1
- package/dist/lib/agent/chat-cleanup.js +0 -133
- package/dist/lib/agent/chat-cleanup.js.map +0 -1
- package/dist/lib/agent/client.d.ts +0 -55
- package/dist/lib/agent/client.d.ts.map +0 -1
- package/dist/lib/agent/client.js +0 -103
- package/dist/lib/agent/client.js.map +0 -1
- package/dist/lib/agent/openai.d.ts +0 -94
- package/dist/lib/agent/openai.d.ts.map +0 -1
- package/dist/lib/agent/openai.js +0 -290
- package/dist/lib/agent/openai.js.map +0 -1
- package/dist/lib/ai/dual-model-router.d.ts +0 -130
- package/dist/lib/ai/dual-model-router.d.ts.map +0 -1
- package/dist/lib/ai/dual-model-router.js +0 -413
- package/dist/lib/ai/dual-model-router.js.map +0 -1
- package/dist/lib/ai/openai.d.ts +0 -94
- package/dist/lib/ai/openai.d.ts.map +0 -1
- package/dist/lib/ai/openai.js +0 -290
- package/dist/lib/ai/openai.js.map +0 -1
- package/dist/lib/ai/tools.d.ts +0 -64
- package/dist/lib/ai/tools.d.ts.map +0 -1
- package/dist/lib/ai/tools.js +0 -159
- package/dist/lib/ai/tools.js.map +0 -1
- package/dist/lib/audit/client.d.ts +0 -138
- package/dist/lib/audit/client.d.ts.map +0 -1
- package/dist/lib/audit/client.js +0 -486
- package/dist/lib/audit/client.js.map +0 -1
- package/dist/lib/audit/index.d.ts +0 -6
- package/dist/lib/audit/index.d.ts.map +0 -1
- package/dist/lib/audit/index.js +0 -6
- package/dist/lib/audit/index.js.map +0 -1
- package/dist/lib/auth/auth-helper.d.ts +0 -167
- package/dist/lib/auth/auth-helper.d.ts.map +0 -1
- package/dist/lib/auth/auth-helper.js +0 -345
- package/dist/lib/auth/auth-helper.js.map +0 -1
- package/dist/lib/auth/auth-state-manager.d.ts +0 -201
- package/dist/lib/auth/auth-state-manager.d.ts.map +0 -1
- package/dist/lib/auth/auth-state-manager.js +0 -597
- package/dist/lib/auth/auth-state-manager.js.map +0 -1
- package/dist/lib/auth/client.d.ts +0 -276
- package/dist/lib/auth/client.d.ts.map +0 -1
- package/dist/lib/auth/client.js +0 -325
- package/dist/lib/auth/client.js.map +0 -1
- package/dist/lib/auth/index.d.ts +0 -10
- package/dist/lib/auth/index.d.ts.map +0 -1
- package/dist/lib/auth/index.js +0 -10
- package/dist/lib/auth/index.js.map +0 -1
- package/dist/lib/auth/sso-route-handler.d.ts +0 -114
- package/dist/lib/auth/sso-route-handler.d.ts.map +0 -1
- package/dist/lib/auth/sso-route-handler.js +0 -199
- package/dist/lib/auth/sso-route-handler.js.map +0 -1
- package/dist/lib/auth/sso.d.ts +0 -162
- package/dist/lib/auth/sso.d.ts.map +0 -1
- package/dist/lib/auth/sso.js +0 -282
- package/dist/lib/auth/sso.js.map +0 -1
- package/dist/lib/authz/email.d.ts +0 -65
- package/dist/lib/authz/email.d.ts.map +0 -1
- package/dist/lib/authz/email.js +0 -112
- package/dist/lib/authz/email.js.map +0 -1
- package/dist/lib/authz/permissions.d.ts +0 -109
- package/dist/lib/authz/permissions.d.ts.map +0 -1
- package/dist/lib/authz/permissions.js +0 -238
- package/dist/lib/authz/permissions.js.map +0 -1
- package/dist/lib/authz/service-audit.d.ts +0 -41
- package/dist/lib/authz/service-audit.d.ts.map +0 -1
- package/dist/lib/authz/service-audit.js +0 -60
- package/dist/lib/authz/service-audit.js.map +0 -1
- package/dist/lib/chat-server/agent-api-client.d.ts +0 -151
- package/dist/lib/chat-server/agent-api-client.d.ts.map +0 -1
- package/dist/lib/chat-server/agent-api-client.js +0 -162
- package/dist/lib/chat-server/agent-api-client.js.map +0 -1
- package/dist/lib/chat-server/attachments.d.ts +0 -118
- package/dist/lib/chat-server/attachments.d.ts.map +0 -1
- package/dist/lib/chat-server/attachments.js +0 -317
- package/dist/lib/chat-server/attachments.js.map +0 -1
- package/dist/lib/chat-server/cleanup.d.ts +0 -34
- package/dist/lib/chat-server/cleanup.d.ts.map +0 -1
- package/dist/lib/chat-server/cleanup.js +0 -133
- package/dist/lib/chat-server/cleanup.js.map +0 -1
- package/dist/lib/chat-server/conversations.d.ts +0 -159
- package/dist/lib/chat-server/conversations.d.ts.map +0 -1
- package/dist/lib/chat-server/conversations.js +0 -278
- package/dist/lib/chat-server/conversations.js.map +0 -1
- package/dist/lib/chat-server/insights.d.ts +0 -84
- package/dist/lib/chat-server/insights.d.ts.map +0 -1
- package/dist/lib/chat-server/insights.js +0 -193
- package/dist/lib/chat-server/insights.js.map +0 -1
- package/dist/lib/chat-server/messages.d.ts +0 -154
- package/dist/lib/chat-server/messages.d.ts.map +0 -1
- package/dist/lib/chat-server/messages.js +0 -282
- package/dist/lib/chat-server/messages.js.map +0 -1
- package/dist/lib/chat-server/middleware.d.ts +0 -119
- package/dist/lib/chat-server/middleware.d.ts.map +0 -1
- package/dist/lib/chat-server/middleware.js +0 -234
- package/dist/lib/chat-server/middleware.js.map +0 -1
- package/dist/lib/chat-server/models.d.ts +0 -60
- package/dist/lib/chat-server/models.d.ts.map +0 -1
- package/dist/lib/chat-server/models.js +0 -205
- package/dist/lib/chat-server/models.js.map +0 -1
- package/dist/lib/chat-server/search.d.ts +0 -89
- package/dist/lib/chat-server/search.d.ts.map +0 -1
- package/dist/lib/chat-server/search.js +0 -203
- package/dist/lib/chat-server/search.js.map +0 -1
- package/dist/lib/chat-server/sharing.d.ts +0 -70
- package/dist/lib/chat-server/sharing.d.ts.map +0 -1
- package/dist/lib/chat-server/sharing.js +0 -146
- package/dist/lib/chat-server/sharing.js.map +0 -1
- package/dist/lib/data/embeddings-app-client.d.ts +0 -37
- package/dist/lib/data/embeddings-app-client.d.ts.map +0 -1
- package/dist/lib/data/embeddings-app-client.js +0 -72
- package/dist/lib/data/embeddings-app-client.js.map +0 -1
- package/dist/lib/deploy/manifest-validator.d.ts +0 -25
- package/dist/lib/deploy/manifest-validator.d.ts.map +0 -1
- package/dist/lib/deploy/manifest-validator.js +0 -142
- package/dist/lib/deploy/manifest-validator.js.map +0 -1
- package/dist/lib/embeddings/data-client.d.ts +0 -37
- package/dist/lib/embeddings/data-client.d.ts.map +0 -1
- package/dist/lib/embeddings/data-client.js +0 -72
- package/dist/lib/embeddings/data-client.js.map +0 -1
- package/dist/lib/hooks/useMediaQuery.d.ts +0 -6
- package/dist/lib/hooks/useMediaQuery.d.ts.map +0 -1
- package/dist/lib/hooks/useMediaQuery.js +0 -18
- package/dist/lib/hooks/useMediaQuery.js.map +0 -1
- package/dist/lib/insights/client.d.ts +0 -131
- package/dist/lib/insights/client.d.ts.map +0 -1
- package/dist/lib/insights/client.js +0 -306
- package/dist/lib/insights/client.js.map +0 -1
- package/dist/lib/insights/index.d.ts +0 -5
- package/dist/lib/insights/index.d.ts.map +0 -1
- package/dist/lib/insights/index.js +0 -5
- package/dist/lib/insights/index.js.map +0 -1
- package/dist/lib/next/authz-client.d.ts +0 -120
- package/dist/lib/next/authz-client.d.ts.map +0 -1
- package/dist/lib/next/authz-client.js +0 -203
- package/dist/lib/next/authz-client.js.map +0 -1
- package/dist/lib/next/passkey.d.ts +0 -78
- package/dist/lib/next/passkey.d.ts.map +0 -1
- package/dist/lib/next/passkey.js +0 -380
- package/dist/lib/next/passkey.js.map +0 -1
- package/dist/lib/next/sso.d.ts +0 -51
- package/dist/lib/next/sso.d.ts.map +0 -1
- package/dist/lib/next/sso.js +0 -167
- package/dist/lib/next/sso.js.map +0 -1
- package/dist/lib/rbac/client.d.ts +0 -320
- package/dist/lib/rbac/client.d.ts.map +0 -1
- package/dist/lib/rbac/client.js +0 -532
- package/dist/lib/rbac/client.js.map +0 -1
- package/dist/lib/rbac/index.d.ts +0 -6
- package/dist/lib/rbac/index.d.ts.map +0 -1
- package/dist/lib/rbac/index.js +0 -6
- package/dist/lib/rbac/index.js.map +0 -1
- package/dist/lib/search/providers.d.ts +0 -105
- package/dist/lib/search/providers.d.ts.map +0 -1
- package/dist/lib/search/providers.js +0 -140
- package/dist/lib/search/providers.js.map +0 -1
- package/dist/lib/services/api-client.d.ts +0 -46
- package/dist/lib/services/api-client.d.ts.map +0 -1
- package/dist/lib/services/api-client.js +0 -80
- package/dist/lib/services/api-client.js.map +0 -1
- package/dist/lib/services/app-library.d.ts +0 -36
- package/dist/lib/services/app-library.d.ts.map +0 -1
- package/dist/lib/services/app-library.js +0 -123
- package/dist/lib/services/app-library.js.map +0 -1
- package/dist/lib/services/app-utils.d.ts +0 -22
- package/dist/lib/services/app-utils.d.ts.map +0 -1
- package/dist/lib/services/app-utils.js +0 -36
- package/dist/lib/services/app-utils.js.map +0 -1
- package/dist/lib/services/audit.d.ts +0 -41
- package/dist/lib/services/audit.d.ts.map +0 -1
- package/dist/lib/services/audit.js +0 -60
- package/dist/lib/services/audit.js.map +0 -1
- package/dist/lib/services/database-cloner.d.ts +0 -28
- package/dist/lib/services/database-cloner.d.ts.map +0 -1
- package/dist/lib/services/database-cloner.js +0 -197
- package/dist/lib/services/database-cloner.js.map +0 -1
- package/dist/lib/services/default-apps.d.ts +0 -31
- package/dist/lib/services/default-apps.d.ts.map +0 -1
- package/dist/lib/services/default-apps.js +0 -121
- package/dist/lib/services/default-apps.js.map +0 -1
- package/dist/lib/services/deploy-api-client.d.ts +0 -184
- package/dist/lib/services/deploy-api-client.d.ts.map +0 -1
- package/dist/lib/services/deploy-api-client.js +0 -208
- package/dist/lib/services/deploy-api-client.js.map +0 -1
- package/dist/lib/services/deployment-service-client.d.ts +0 -122
- package/dist/lib/services/deployment-service-client.d.ts.map +0 -1
- package/dist/lib/services/deployment-service-client.js +0 -245
- package/dist/lib/services/deployment-service-client.js.map +0 -1
- package/dist/lib/services/docs.d.ts +0 -80
- package/dist/lib/services/docs.d.ts.map +0 -1
- package/dist/lib/services/docs.js +0 -160
- package/dist/lib/services/docs.js.map +0 -1
- package/dist/lib/services/email-validation.d.ts +0 -33
- package/dist/lib/services/email-validation.d.ts.map +0 -1
- package/dist/lib/services/email-validation.js +0 -70
- package/dist/lib/services/email-validation.js.map +0 -1
- package/dist/lib/services/email.d.ts +0 -65
- package/dist/lib/services/email.d.ts.map +0 -1
- package/dist/lib/services/email.js +0 -112
- package/dist/lib/services/email.js.map +0 -1
- package/dist/lib/services/github-manifest-fetcher.d.ts +0 -74
- package/dist/lib/services/github-manifest-fetcher.d.ts.map +0 -1
- package/dist/lib/services/github-manifest-fetcher.js +0 -168
- package/dist/lib/services/github-manifest-fetcher.js.map +0 -1
- package/dist/lib/services/libraries.d.ts +0 -124
- package/dist/lib/services/libraries.d.ts.map +0 -1
- package/dist/lib/services/libraries.js +0 -507
- package/dist/lib/services/libraries.js.map +0 -1
- package/dist/lib/services/litellm.d.ts +0 -33
- package/dist/lib/services/litellm.d.ts.map +0 -1
- package/dist/lib/services/litellm.js +0 -222
- package/dist/lib/services/litellm.js.map +0 -1
- package/dist/lib/services/manifest-schema.d.ts +0 -66
- package/dist/lib/services/manifest-schema.d.ts.map +0 -1
- package/dist/lib/services/manifest-schema.js +0 -86
- package/dist/lib/services/manifest-schema.js.map +0 -1
- package/dist/lib/services/manifest-validator.d.ts +0 -25
- package/dist/lib/services/manifest-validator.d.ts.map +0 -1
- package/dist/lib/services/manifest-validator.js +0 -142
- package/dist/lib/services/manifest-validator.js.map +0 -1
- package/dist/lib/services/manifest.d.ts +0 -45
- package/dist/lib/services/manifest.d.ts.map +0 -1
- package/dist/lib/services/manifest.js +0 -137
- package/dist/lib/services/manifest.js.map +0 -1
- package/dist/lib/services/permissions.d.ts +0 -109
- package/dist/lib/services/permissions.d.ts.map +0 -1
- package/dist/lib/services/permissions.js +0 -238
- package/dist/lib/services/permissions.js.map +0 -1
- package/dist/lib/services/service-client.d.ts +0 -99
- package/dist/lib/services/service-client.d.ts.map +0 -1
- package/dist/lib/services/service-client.js +0 -146
- package/dist/lib/services/service-client.js.map +0 -1
- package/dist/lib/services/tags.d.ts +0 -37
- package/dist/lib/services/tags.d.ts.map +0 -1
- package/dist/lib/services/tags.js +0 -189
- package/dist/lib/services/tags.js.map +0 -1
- package/dist/lib/services/url-validation.d.ts +0 -22
- package/dist/lib/services/url-validation.d.ts.map +0 -1
- package/dist/lib/services/url-validation.js +0 -86
- package/dist/lib/services/url-validation.js.map +0 -1
- package/dist/lib/services/user-management.d.ts +0 -81
- package/dist/lib/services/user-management.d.ts.map +0 -1
- package/dist/lib/services/user-management.js +0 -154
- package/dist/lib/services/user-management.js.map +0 -1
- package/dist/lib/storage/index.d.ts +0 -11
- package/dist/lib/storage/index.d.ts.map +0 -1
- package/dist/lib/storage/index.js +0 -12
- package/dist/lib/storage/index.js.map +0 -1
- package/dist/lib/storage/types.d.ts +0 -61
- package/dist/lib/storage/types.d.ts.map +0 -1
- package/dist/lib/storage/types.js +0 -8
- package/dist/lib/storage/types.js.map +0 -1
- package/dist/lib/stores/app-config-store.d.ts +0 -90
- package/dist/lib/stores/app-config-store.d.ts.map +0 -1
- package/dist/lib/stores/app-config-store.js +0 -491
- package/dist/lib/stores/app-config-store.js.map +0 -1
- package/dist/lib/stores/bridge-config-store.d.ts +0 -44
- package/dist/lib/stores/bridge-config-store.d.ts.map +0 -1
- package/dist/lib/stores/bridge-config-store.js +0 -207
- package/dist/lib/stores/bridge-config-store.js.map +0 -1
- package/dist/lib/stores/chat-config-store.d.ts +0 -28
- package/dist/lib/stores/chat-config-store.d.ts.map +0 -1
- package/dist/lib/stores/chat-config-store.js +0 -152
- package/dist/lib/stores/chat-config-store.js.map +0 -1
- package/dist/lib/stores/data-settings-store.d.ts +0 -44
- package/dist/lib/stores/data-settings-store.d.ts.map +0 -1
- package/dist/lib/stores/data-settings-store.js +0 -202
- package/dist/lib/stores/data-settings-store.js.map +0 -1
- package/dist/lib/stores/email-config-store.d.ts +0 -45
- package/dist/lib/stores/email-config-store.d.ts.map +0 -1
- package/dist/lib/stores/email-config-store.js +0 -185
- package/dist/lib/stores/email-config-store.js.map +0 -1
- package/dist/lib/stores/portal-config-store.d.ts +0 -38
- package/dist/lib/stores/portal-config-store.d.ts.map +0 -1
- package/dist/lib/stores/portal-config-store.js +0 -238
- package/dist/lib/stores/portal-config-store.js.map +0 -1
- package/dist/lib/stores/video-store.d.ts +0 -91
- package/dist/lib/stores/video-store.d.ts.map +0 -1
- package/dist/lib/stores/video-store.js +0 -451
- package/dist/lib/stores/video-store.js.map +0 -1
- package/dist/lib/videos/access-control.d.ts +0 -35
- package/dist/lib/videos/access-control.d.ts.map +0 -1
- package/dist/lib/videos/access-control.js +0 -63
- package/dist/lib/videos/access-control.js.map +0 -1
- package/dist/lib/videos/agent-api-client.d.ts +0 -46
- package/dist/lib/videos/agent-api-client.d.ts.map +0 -1
- package/dist/lib/videos/agent-api-client.js +0 -75
- package/dist/lib/videos/agent-api-client.js.map +0 -1
- package/dist/lib/videos/creation.d.ts +0 -24
- package/dist/lib/videos/creation.d.ts.map +0 -1
- package/dist/lib/videos/creation.js +0 -112
- package/dist/lib/videos/creation.js.map +0 -1
- package/dist/lib/videos/expiration.d.ts +0 -13
- package/dist/lib/videos/expiration.d.ts.map +0 -1
- package/dist/lib/videos/expiration.js +0 -95
- package/dist/lib/videos/expiration.js.map +0 -1
- package/dist/lib/videos/image-resize.d.ts +0 -42
- package/dist/lib/videos/image-resize.d.ts.map +0 -1
- package/dist/lib/videos/image-resize.js +0 -106
- package/dist/lib/videos/image-resize.js.map +0 -1
- package/dist/lib/videos/processing.d.ts +0 -35
- package/dist/lib/videos/processing.d.ts.map +0 -1
- package/dist/lib/videos/processing.js +0 -154
- package/dist/lib/videos/processing.js.map +0 -1
- package/dist/lib/videos/status.d.ts +0 -2
- package/dist/lib/videos/status.d.ts.map +0 -1
- package/dist/lib/videos/status.js +0 -141
- package/dist/lib/videos/status.js.map +0 -1
- package/dist/lib/videos/upload.d.ts +0 -41
- package/dist/lib/videos/upload.d.ts.map +0 -1
- package/dist/lib/videos/upload.js +0 -118
- package/dist/lib/videos/upload.js.map +0 -1
- package/dist/lib/videos/url-normalization.d.ts +0 -29
- package/dist/lib/videos/url-normalization.d.ts.map +0 -1
- package/dist/lib/videos/url-normalization.js +0 -61
- package/dist/lib/videos/url-normalization.js.map +0 -1
- package/dist/sso/index.d.ts +0 -3
- package/dist/sso/index.d.ts.map +0 -1
- package/dist/sso/index.js +0 -3
- package/dist/sso/index.js.map +0 -1
- package/dist/sso/token.d.ts +0 -17
- package/dist/sso/token.d.ts.map +0 -1
- package/dist/sso/token.js +0 -57
- package/dist/sso/token.js.map +0 -1
- package/dist/types/sso.d.ts +0 -37
- package/dist/types/sso.d.ts.map +0 -1
- package/dist/types/sso.js +0 -2
- package/dist/types/sso.js.map +0 -1
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authentication Helper Utilities
|
|
3
|
-
*
|
|
4
|
-
* Provides JWT token management including:
|
|
5
|
-
* - Token extraction from requests (Next.js compatible)
|
|
6
|
-
* - Token validation and parsing
|
|
7
|
-
* - Header generation
|
|
8
|
-
* - Role and scope checking
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import {
|
|
13
|
-
* getTokenFromRequest,
|
|
14
|
-
* parseJWTPayload,
|
|
15
|
-
* getUserIdFromToken
|
|
16
|
-
* } from '@jazzmind/busibox-app/lib/auth';
|
|
17
|
-
*
|
|
18
|
-
* // In an API route
|
|
19
|
-
* const token = getTokenFromRequest(request);
|
|
20
|
-
* const userId = getUserIdFromToken(token);
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* Minimal request interface compatible with Next.js NextRequest
|
|
25
|
-
*/
|
|
26
|
-
interface RequestLike {
|
|
27
|
-
headers: {
|
|
28
|
-
get(name: string): string | null;
|
|
29
|
-
};
|
|
30
|
-
cookies: {
|
|
31
|
-
get(name: string): {
|
|
32
|
-
value: string;
|
|
33
|
-
} | undefined;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Extract session JWT from request
|
|
38
|
-
*
|
|
39
|
-
* Zero Trust Architecture:
|
|
40
|
-
* - Checks Authorization header first (Bearer token)
|
|
41
|
-
* - Then checks app-specific auth token cookie (e.g., "myapp-auth-token")
|
|
42
|
-
* - Falls back to generic auth_token cookie (legacy, may be polluted by other apps)
|
|
43
|
-
* - Falls back to busibox-session cookie (portal token - may not validate for app-specific checks)
|
|
44
|
-
*
|
|
45
|
-
* IMPORTANT: Each app should use its own cookie name (${appName}-auth-token) to prevent
|
|
46
|
-
* cross-app token pollution when multiple apps are hosted on the same domain.
|
|
47
|
-
*
|
|
48
|
-
* @param request - Next.js NextRequest or compatible request object
|
|
49
|
-
* @param appName - Optional app name for cookie lookup (default: APP_NAME env or "app")
|
|
50
|
-
* @returns Token string or undefined if not found
|
|
51
|
-
*/
|
|
52
|
-
/**
|
|
53
|
-
* Sanitize app name for use in cookie names
|
|
54
|
-
*
|
|
55
|
-
* Converts to lowercase, replaces spaces with hyphens, removes special characters.
|
|
56
|
-
* This ensures consistent cookie naming across all Busibox apps.
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* sanitizeAppName("Data Analysis") // "data-analysis"
|
|
60
|
-
* sanitizeAppName("Agent Manager") // "busibox-agents"
|
|
61
|
-
* sanitizeAppName("my-app") // "my-app"
|
|
62
|
-
*/
|
|
63
|
-
export declare function sanitizeAppName(name: string): string;
|
|
64
|
-
export declare function getTokenFromRequest(request: RequestLike, appName?: string): string | undefined;
|
|
65
|
-
/**
|
|
66
|
-
* Get session data from app-session cookie
|
|
67
|
-
*
|
|
68
|
-
* @param request - Next.js NextRequest or compatible request object
|
|
69
|
-
* @param appName - App name for cookie lookup (default: APP_NAME env or "app")
|
|
70
|
-
*/
|
|
71
|
-
export declare function getSessionFromRequest(request: RequestLike, appName?: string): {
|
|
72
|
-
userId: string;
|
|
73
|
-
email: string;
|
|
74
|
-
roles: string[];
|
|
75
|
-
displayName?: string;
|
|
76
|
-
firstName?: string;
|
|
77
|
-
lastName?: string;
|
|
78
|
-
avatarUrl?: string;
|
|
79
|
-
favoriteColor?: string;
|
|
80
|
-
} | null;
|
|
81
|
-
/**
|
|
82
|
-
* Require token or throw authentication error
|
|
83
|
-
*/
|
|
84
|
-
export declare function requireToken(request: RequestLike): string;
|
|
85
|
-
/**
|
|
86
|
-
* Generate authorization headers for API requests
|
|
87
|
-
*/
|
|
88
|
-
export declare function getAuthHeaders(token?: string): Record<string, string>;
|
|
89
|
-
/**
|
|
90
|
-
* Generate headers for SSE (Server-Sent Events) requests
|
|
91
|
-
*/
|
|
92
|
-
export declare function getSSEHeaders(token?: string): Record<string, string>;
|
|
93
|
-
/**
|
|
94
|
-
* Check if token is present (basic validation)
|
|
95
|
-
*/
|
|
96
|
-
export declare function hasToken(request: RequestLike): boolean;
|
|
97
|
-
/**
|
|
98
|
-
* Parse JWT token payload (without verification)
|
|
99
|
-
*
|
|
100
|
-
* WARNING: This does NOT verify the signature. Use only for reading claims.
|
|
101
|
-
* For verified validation, use validateSSOToken from './sso'.
|
|
102
|
-
*/
|
|
103
|
-
export declare function parseJWTPayload(token: string): Record<string, unknown> | null;
|
|
104
|
-
/**
|
|
105
|
-
* Check if token is expired (based on exp claim)
|
|
106
|
-
*
|
|
107
|
-
* WARNING: This does NOT verify the signature.
|
|
108
|
-
*/
|
|
109
|
-
export declare function isTokenExpired(token: string): boolean;
|
|
110
|
-
/**
|
|
111
|
-
* Get token expiration time
|
|
112
|
-
*/
|
|
113
|
-
export declare function getTokenExpiration(token: string): Date | null;
|
|
114
|
-
/**
|
|
115
|
-
* Get user ID from token (sub or user_id claim)
|
|
116
|
-
*/
|
|
117
|
-
export declare function getUserIdFromToken(token: string): string | null;
|
|
118
|
-
/**
|
|
119
|
-
* Get user email from token
|
|
120
|
-
*/
|
|
121
|
-
export declare function getUserEmailFromToken(token: string): string | null;
|
|
122
|
-
/**
|
|
123
|
-
* Get user roles from token
|
|
124
|
-
*
|
|
125
|
-
* Handles various role formats:
|
|
126
|
-
* - Array of strings: ["Admin", "User"]
|
|
127
|
-
* - Array of objects: [{ name: "Admin" }, { name: "User" }]
|
|
128
|
-
* - Single string: "Admin"
|
|
129
|
-
*/
|
|
130
|
-
export declare function getUserRolesFromToken(token: string): string[];
|
|
131
|
-
/**
|
|
132
|
-
* Check if token user has specific role
|
|
133
|
-
*
|
|
134
|
-
* Note: For RBAC role checks against the authz service, use hasRole from '@jazzmind/busibox-app/lib/rbac'.
|
|
135
|
-
* This function is for quick client-side checks based on token claims.
|
|
136
|
-
*/
|
|
137
|
-
export declare function tokenHasRole(token: string, role: string): boolean;
|
|
138
|
-
/**
|
|
139
|
-
* Check if token user is admin
|
|
140
|
-
*
|
|
141
|
-
* Note: For RBAC admin checks against the authz service, use isAdmin from '@jazzmind/busibox-app/lib/rbac'.
|
|
142
|
-
* This function is for quick client-side checks based on token claims.
|
|
143
|
-
*/
|
|
144
|
-
export declare function tokenIsAdmin(token: string): boolean;
|
|
145
|
-
/**
|
|
146
|
-
* Check if token needs refresh (within buffer time of expiration)
|
|
147
|
-
*
|
|
148
|
-
* @param token - JWT token string
|
|
149
|
-
* @param bufferMinutes - Minutes before expiration to trigger refresh (default: 5)
|
|
150
|
-
*/
|
|
151
|
-
export declare function shouldRefreshToken(token: string, bufferMinutes?: number): boolean;
|
|
152
|
-
/**
|
|
153
|
-
* Get scopes from token
|
|
154
|
-
*
|
|
155
|
-
* Handles both space-separated string (OAuth2 standard) and array formats.
|
|
156
|
-
*/
|
|
157
|
-
export declare function getScopesFromToken(token: string): string[];
|
|
158
|
-
/**
|
|
159
|
-
* Check if token has specific scope
|
|
160
|
-
*/
|
|
161
|
-
export declare function hasScope(token: string, scope: string): boolean;
|
|
162
|
-
/**
|
|
163
|
-
* Check if token has all required scopes
|
|
164
|
-
*/
|
|
165
|
-
export declare function hasAllScopes(token: string, requiredScopes: string[]): boolean;
|
|
166
|
-
export {};
|
|
167
|
-
//# sourceMappingURL=auth-helper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-helper.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/auth-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authentication Helper Utilities
|
|
3
|
-
*
|
|
4
|
-
* Provides JWT token management including:
|
|
5
|
-
* - Token extraction from requests (Next.js compatible)
|
|
6
|
-
* - Token validation and parsing
|
|
7
|
-
* - Header generation
|
|
8
|
-
* - Role and scope checking
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import {
|
|
13
|
-
* getTokenFromRequest,
|
|
14
|
-
* parseJWTPayload,
|
|
15
|
-
* getUserIdFromToken
|
|
16
|
-
* } from '@jazzmind/busibox-app/lib/auth';
|
|
17
|
-
*
|
|
18
|
-
* // In an API route
|
|
19
|
-
* const token = getTokenFromRequest(request);
|
|
20
|
-
* const userId = getUserIdFromToken(token);
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
// ==========================================================================
|
|
24
|
-
// TOKEN EXTRACTION
|
|
25
|
-
// ==========================================================================
|
|
26
|
-
/**
|
|
27
|
-
* Extract session JWT from request
|
|
28
|
-
*
|
|
29
|
-
* Zero Trust Architecture:
|
|
30
|
-
* - Checks Authorization header first (Bearer token)
|
|
31
|
-
* - Then checks app-specific auth token cookie (e.g., "myapp-auth-token")
|
|
32
|
-
* - Falls back to generic auth_token cookie (legacy, may be polluted by other apps)
|
|
33
|
-
* - Falls back to busibox-session cookie (portal token - may not validate for app-specific checks)
|
|
34
|
-
*
|
|
35
|
-
* IMPORTANT: Each app should use its own cookie name (${appName}-auth-token) to prevent
|
|
36
|
-
* cross-app token pollution when multiple apps are hosted on the same domain.
|
|
37
|
-
*
|
|
38
|
-
* @param request - Next.js NextRequest or compatible request object
|
|
39
|
-
* @param appName - Optional app name for cookie lookup (default: APP_NAME env or "app")
|
|
40
|
-
* @returns Token string or undefined if not found
|
|
41
|
-
*/
|
|
42
|
-
/**
|
|
43
|
-
* Sanitize app name for use in cookie names
|
|
44
|
-
*
|
|
45
|
-
* Converts to lowercase, replaces spaces with hyphens, removes special characters.
|
|
46
|
-
* This ensures consistent cookie naming across all Busibox apps.
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* sanitizeAppName("Data Analysis") // "data-analysis"
|
|
50
|
-
* sanitizeAppName("Agent Manager") // "busibox-agents"
|
|
51
|
-
* sanitizeAppName("my-app") // "my-app"
|
|
52
|
-
*/
|
|
53
|
-
export function sanitizeAppName(name) {
|
|
54
|
-
return name.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
|
|
55
|
-
}
|
|
56
|
-
export function getTokenFromRequest(request, appName) {
|
|
57
|
-
// Check Authorization header (Bearer token)
|
|
58
|
-
const authHeader = request.headers.get("authorization");
|
|
59
|
-
if (authHeader?.startsWith("Bearer ")) {
|
|
60
|
-
return authHeader.substring(7);
|
|
61
|
-
}
|
|
62
|
-
// IMPORTANT: Check app-specific auth_token FIRST
|
|
63
|
-
// Each app has its own cookie (e.g., "estimator-auth-token") to prevent
|
|
64
|
-
// cross-app token pollution when multiple apps are on the same domain
|
|
65
|
-
// Sanitize the name to handle spaces and special characters
|
|
66
|
-
const rawName = appName || process.env.APP_NAME || "app";
|
|
67
|
-
const name = sanitizeAppName(rawName);
|
|
68
|
-
const appTokenCookie = request.cookies.get(`${name}-auth-token`);
|
|
69
|
-
if (appTokenCookie) {
|
|
70
|
-
return appTokenCookie.value;
|
|
71
|
-
}
|
|
72
|
-
// Legacy fallback: generic auth_token (may be polluted by other apps on same domain)
|
|
73
|
-
const tokenCookie = request.cookies.get("auth_token");
|
|
74
|
-
if (tokenCookie) {
|
|
75
|
-
return tokenCookie.value;
|
|
76
|
-
}
|
|
77
|
-
// Fallback to busibox-session (shared portal token)
|
|
78
|
-
// Note: This will have audience "portal" which may not validate for app-specific checks
|
|
79
|
-
const sessionCookie = request.cookies.get("busibox-session");
|
|
80
|
-
if (sessionCookie) {
|
|
81
|
-
return sessionCookie.value;
|
|
82
|
-
}
|
|
83
|
-
const accessTokenCookie = request.cookies.get("access_token");
|
|
84
|
-
if (accessTokenCookie) {
|
|
85
|
-
return accessTokenCookie.value;
|
|
86
|
-
}
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Get session data from app-session cookie
|
|
91
|
-
*
|
|
92
|
-
* @param request - Next.js NextRequest or compatible request object
|
|
93
|
-
* @param appName - App name for cookie lookup (default: APP_NAME env or "app")
|
|
94
|
-
*/
|
|
95
|
-
export function getSessionFromRequest(request, appName) {
|
|
96
|
-
const rawName = appName || process.env.APP_NAME || "app";
|
|
97
|
-
const name = sanitizeAppName(rawName);
|
|
98
|
-
const sessionCookie = request.cookies.get(`${name}-session`);
|
|
99
|
-
if (!sessionCookie) {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
const session = JSON.parse(sessionCookie.value);
|
|
104
|
-
return {
|
|
105
|
-
userId: session.userId || session.user_id,
|
|
106
|
-
email: session.email,
|
|
107
|
-
roles: session.roles || [],
|
|
108
|
-
displayName: session.displayName,
|
|
109
|
-
firstName: session.firstName,
|
|
110
|
-
lastName: session.lastName,
|
|
111
|
-
avatarUrl: session.avatarUrl,
|
|
112
|
-
favoriteColor: session.favoriteColor,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Require token or throw authentication error
|
|
121
|
-
*/
|
|
122
|
-
export function requireToken(request) {
|
|
123
|
-
const token = getTokenFromRequest(request);
|
|
124
|
-
if (!token) {
|
|
125
|
-
throw new Error("Authentication token required");
|
|
126
|
-
}
|
|
127
|
-
return token;
|
|
128
|
-
}
|
|
129
|
-
// ==========================================================================
|
|
130
|
-
// HEADER GENERATION
|
|
131
|
-
// ==========================================================================
|
|
132
|
-
/**
|
|
133
|
-
* Generate authorization headers for API requests
|
|
134
|
-
*/
|
|
135
|
-
export function getAuthHeaders(token) {
|
|
136
|
-
const headers = {
|
|
137
|
-
"Content-Type": "application/json",
|
|
138
|
-
};
|
|
139
|
-
if (token) {
|
|
140
|
-
headers["Authorization"] = `Bearer ${token}`;
|
|
141
|
-
}
|
|
142
|
-
return headers;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Generate headers for SSE (Server-Sent Events) requests
|
|
146
|
-
*/
|
|
147
|
-
export function getSSEHeaders(token) {
|
|
148
|
-
const headers = {
|
|
149
|
-
Accept: "text/event-stream",
|
|
150
|
-
"Cache-Control": "no-cache",
|
|
151
|
-
Connection: "keep-alive",
|
|
152
|
-
};
|
|
153
|
-
if (token) {
|
|
154
|
-
headers["Authorization"] = `Bearer ${token}`;
|
|
155
|
-
}
|
|
156
|
-
return headers;
|
|
157
|
-
}
|
|
158
|
-
// ==========================================================================
|
|
159
|
-
// TOKEN VALIDATION (without cryptographic verification)
|
|
160
|
-
// ==========================================================================
|
|
161
|
-
/**
|
|
162
|
-
* Check if token is present (basic validation)
|
|
163
|
-
*/
|
|
164
|
-
export function hasToken(request) {
|
|
165
|
-
return getTokenFromRequest(request) !== undefined;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Parse JWT token payload (without verification)
|
|
169
|
-
*
|
|
170
|
-
* WARNING: This does NOT verify the signature. Use only for reading claims.
|
|
171
|
-
* For verified validation, use validateSSOToken from './sso'.
|
|
172
|
-
*/
|
|
173
|
-
export function parseJWTPayload(token) {
|
|
174
|
-
try {
|
|
175
|
-
const parts = token.split(".");
|
|
176
|
-
if (parts.length !== 3) {
|
|
177
|
-
return null;
|
|
178
|
-
}
|
|
179
|
-
const payload = parts[1];
|
|
180
|
-
// Use atob for browser compatibility, Buffer for Node.js
|
|
181
|
-
let decoded;
|
|
182
|
-
if (typeof Buffer !== 'undefined') {
|
|
183
|
-
decoded = Buffer.from(payload, "base64").toString("utf-8");
|
|
184
|
-
}
|
|
185
|
-
else if (typeof atob !== 'undefined') {
|
|
186
|
-
decoded = atob(payload);
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
return JSON.parse(decoded);
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
console.error("Failed to parse JWT payload:", error);
|
|
195
|
-
return null;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Check if token is expired (based on exp claim)
|
|
200
|
-
*
|
|
201
|
-
* WARNING: This does NOT verify the signature.
|
|
202
|
-
*/
|
|
203
|
-
export function isTokenExpired(token) {
|
|
204
|
-
const payload = parseJWTPayload(token);
|
|
205
|
-
if (!payload || typeof payload.exp !== "number") {
|
|
206
|
-
return true;
|
|
207
|
-
}
|
|
208
|
-
const expirationTime = payload.exp * 1000;
|
|
209
|
-
return Date.now() >= expirationTime;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Get token expiration time
|
|
213
|
-
*/
|
|
214
|
-
export function getTokenExpiration(token) {
|
|
215
|
-
const payload = parseJWTPayload(token);
|
|
216
|
-
if (!payload || typeof payload.exp !== "number") {
|
|
217
|
-
return null;
|
|
218
|
-
}
|
|
219
|
-
return new Date(payload.exp * 1000);
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Get user ID from token (sub or user_id claim)
|
|
223
|
-
*/
|
|
224
|
-
export function getUserIdFromToken(token) {
|
|
225
|
-
const payload = parseJWTPayload(token);
|
|
226
|
-
if (!payload) {
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
const sub = payload.sub;
|
|
230
|
-
const userId = payload.user_id;
|
|
231
|
-
if (typeof sub === "string")
|
|
232
|
-
return sub;
|
|
233
|
-
if (typeof userId === "string")
|
|
234
|
-
return userId;
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Get user email from token
|
|
239
|
-
*/
|
|
240
|
-
export function getUserEmailFromToken(token) {
|
|
241
|
-
const payload = parseJWTPayload(token);
|
|
242
|
-
if (!payload) {
|
|
243
|
-
return null;
|
|
244
|
-
}
|
|
245
|
-
const email = payload.email || payload.preferred_username || payload.name;
|
|
246
|
-
return typeof email === "string" ? email : null;
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Get user roles from token
|
|
250
|
-
*
|
|
251
|
-
* Handles various role formats:
|
|
252
|
-
* - Array of strings: ["Admin", "User"]
|
|
253
|
-
* - Array of objects: [{ name: "Admin" }, { name: "User" }]
|
|
254
|
-
* - Single string: "Admin"
|
|
255
|
-
*/
|
|
256
|
-
export function getUserRolesFromToken(token) {
|
|
257
|
-
const payload = parseJWTPayload(token);
|
|
258
|
-
if (!payload) {
|
|
259
|
-
return [];
|
|
260
|
-
}
|
|
261
|
-
const roles = payload.roles || payload.role || [];
|
|
262
|
-
if (!Array.isArray(roles)) {
|
|
263
|
-
return typeof roles === "string" ? [roles] : [];
|
|
264
|
-
}
|
|
265
|
-
return roles.map((role) => {
|
|
266
|
-
if (typeof role === "string") {
|
|
267
|
-
return role;
|
|
268
|
-
}
|
|
269
|
-
if (role && typeof role === "object" && "name" in role) {
|
|
270
|
-
return String(role.name);
|
|
271
|
-
}
|
|
272
|
-
return String(role);
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Check if token user has specific role
|
|
277
|
-
*
|
|
278
|
-
* Note: For RBAC role checks against the authz service, use hasRole from '@jazzmind/busibox-app/lib/rbac'.
|
|
279
|
-
* This function is for quick client-side checks based on token claims.
|
|
280
|
-
*/
|
|
281
|
-
export function tokenHasRole(token, role) {
|
|
282
|
-
const roles = getUserRolesFromToken(token);
|
|
283
|
-
return roles.includes(role);
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Check if token user is admin
|
|
287
|
-
*
|
|
288
|
-
* Note: For RBAC admin checks against the authz service, use isAdmin from '@jazzmind/busibox-app/lib/rbac'.
|
|
289
|
-
* This function is for quick client-side checks based on token claims.
|
|
290
|
-
*/
|
|
291
|
-
export function tokenIsAdmin(token) {
|
|
292
|
-
return tokenHasRole(token, "admin") || tokenHasRole(token, "Admin");
|
|
293
|
-
}
|
|
294
|
-
// ==========================================================================
|
|
295
|
-
// TOKEN REFRESH
|
|
296
|
-
// ==========================================================================
|
|
297
|
-
/**
|
|
298
|
-
* Check if token needs refresh (within buffer time of expiration)
|
|
299
|
-
*
|
|
300
|
-
* @param token - JWT token string
|
|
301
|
-
* @param bufferMinutes - Minutes before expiration to trigger refresh (default: 5)
|
|
302
|
-
*/
|
|
303
|
-
export function shouldRefreshToken(token, bufferMinutes = 5) {
|
|
304
|
-
const expiration = getTokenExpiration(token);
|
|
305
|
-
if (!expiration) {
|
|
306
|
-
return false;
|
|
307
|
-
}
|
|
308
|
-
const bufferMs = bufferMinutes * 60 * 1000;
|
|
309
|
-
return Date.now() >= expiration.getTime() - bufferMs;
|
|
310
|
-
}
|
|
311
|
-
// ==========================================================================
|
|
312
|
-
// SCOPE VALIDATION
|
|
313
|
-
// ==========================================================================
|
|
314
|
-
/**
|
|
315
|
-
* Get scopes from token
|
|
316
|
-
*
|
|
317
|
-
* Handles both space-separated string (OAuth2 standard) and array formats.
|
|
318
|
-
*/
|
|
319
|
-
export function getScopesFromToken(token) {
|
|
320
|
-
const payload = parseJWTPayload(token);
|
|
321
|
-
if (!payload) {
|
|
322
|
-
return [];
|
|
323
|
-
}
|
|
324
|
-
const scopes = payload.scope || payload.scopes || [];
|
|
325
|
-
// Handle space-separated string (OAuth2 standard)
|
|
326
|
-
if (typeof scopes === "string") {
|
|
327
|
-
return scopes.split(" ").filter(Boolean);
|
|
328
|
-
}
|
|
329
|
-
return Array.isArray(scopes) ? scopes.map(String) : [];
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* Check if token has specific scope
|
|
333
|
-
*/
|
|
334
|
-
export function hasScope(token, scope) {
|
|
335
|
-
const scopes = getScopesFromToken(token);
|
|
336
|
-
return scopes.includes(scope);
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Check if token has all required scopes
|
|
340
|
-
*/
|
|
341
|
-
export function hasAllScopes(token, requiredScopes) {
|
|
342
|
-
const scopes = getScopesFromToken(token);
|
|
343
|
-
return requiredScopes.every((scope) => scopes.includes(scope));
|
|
344
|
-
}
|
|
345
|
-
//# sourceMappingURL=auth-helper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-helper.js","sourceRoot":"","sources":["../../../src/lib/auth/auth-helper.ts"],"names":[],"mappings":"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"}
|