@mdxui/do 4.0.1 → 4.0.8

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.
Files changed (125) hide show
  1. package/dist/app/index.d.ts +32 -186
  2. package/dist/app/index.js +19 -11
  3. package/dist/auth/index.d.ts +48 -0
  4. package/dist/auth/index.js +4 -0
  5. package/dist/{breadcrumbs-C9Qn3S7d.d.ts → breadcrumbs-DltlCiHt.d.ts} +3 -3
  6. package/dist/chunk-2FWXT4HH.js +576 -0
  7. package/dist/chunk-2FWXT4HH.js.map +1 -0
  8. package/dist/chunk-5PC6U46L.js +604 -0
  9. package/dist/chunk-5PC6U46L.js.map +1 -0
  10. package/dist/chunk-63VCRTDQ.js +2505 -0
  11. package/dist/chunk-63VCRTDQ.js.map +1 -0
  12. package/dist/chunk-7J3RSIG4.js +178 -0
  13. package/dist/chunk-7J3RSIG4.js.map +1 -0
  14. package/dist/chunk-7QCTRNEJ.js +173 -0
  15. package/dist/chunk-7QCTRNEJ.js.map +1 -0
  16. package/dist/chunk-7TFHUKS7.js +66 -0
  17. package/dist/chunk-7TFHUKS7.js.map +1 -0
  18. package/dist/{chunk-LJIWB7KE.js → chunk-BU5HMHGQ.js} +3 -3
  19. package/dist/chunk-BU5HMHGQ.js.map +1 -0
  20. package/dist/{chunk-GGO5GW72.js → chunk-BZURBNFD.js} +305 -51
  21. package/dist/chunk-BZURBNFD.js.map +1 -0
  22. package/dist/{chunk-XH3LVW7J.js → chunk-FM2RTAHV.js} +5 -65
  23. package/dist/chunk-FM2RTAHV.js.map +1 -0
  24. package/dist/{chunk-OHWWWONS.js → chunk-HC4PBXV4.js} +131 -58
  25. package/dist/chunk-HC4PBXV4.js.map +1 -0
  26. package/dist/{chunk-Y52IEYVM.js → chunk-JPZ6RZJE.js} +78 -45
  27. package/dist/chunk-JPZ6RZJE.js.map +1 -0
  28. package/dist/{chunk-KAZJ43F6.js → chunk-KLN5OTQH.js} +168 -361
  29. package/dist/chunk-KLN5OTQH.js.map +1 -0
  30. package/dist/chunk-LCYBQR35.js +79 -0
  31. package/dist/chunk-LCYBQR35.js.map +1 -0
  32. package/dist/chunk-PJYGRD7N.js +216 -0
  33. package/dist/chunk-PJYGRD7N.js.map +1 -0
  34. package/dist/chunk-QEXY4FZV.js +292 -0
  35. package/dist/chunk-QEXY4FZV.js.map +1 -0
  36. package/dist/chunk-SX4IIE2R.js +53 -0
  37. package/dist/chunk-SX4IIE2R.js.map +1 -0
  38. package/dist/chunk-UCWMSKCW.js +901 -0
  39. package/dist/chunk-UCWMSKCW.js.map +1 -0
  40. package/dist/{chunk-YMQRC6IC.js → chunk-WC6SFBAF.js} +59 -6
  41. package/dist/chunk-WC6SFBAF.js.map +1 -0
  42. package/dist/chunk-WIKU77ZY.js +18 -0
  43. package/dist/chunk-WIKU77ZY.js.map +1 -0
  44. package/dist/chunk-X3AWNFBF.js +47 -0
  45. package/dist/chunk-X3AWNFBF.js.map +1 -0
  46. package/dist/chunk-ZZTQGMLX.js +23 -0
  47. package/dist/chunk-ZZTQGMLX.js.map +1 -0
  48. package/dist/{lib → client}/index.d.ts +97 -345
  49. package/dist/client/index.js +3 -0
  50. package/dist/common-DW_JM2dW.d.ts +454 -0
  51. package/dist/components/index.d.ts +11 -2
  52. package/dist/components/index.js +8 -3
  53. package/dist/{config-CxvpD8Y6.d.ts → config-DB14_LhF.d.ts} +1 -1
  54. package/dist/{do-D27i5bU0.d.ts → do-D37hbmL9.d.ts} +6 -14
  55. package/dist/dotdo-client-2DkwXHM2.d.ts +344 -0
  56. package/dist/errors-BOY11CJs.d.ts +373 -0
  57. package/dist/features/data-browser/index.d.ts +51 -0
  58. package/dist/features/data-browser/index.js +12 -0
  59. package/dist/features/data-browser/index.js.map +1 -0
  60. package/dist/features/data-grid/index.d.ts +22 -0
  61. package/dist/features/data-grid/index.js +12 -0
  62. package/dist/features/data-grid/index.js.map +1 -0
  63. package/dist/features/document-editor/index.d.ts +26 -0
  64. package/dist/features/document-editor/index.js +12 -0
  65. package/dist/features/document-editor/index.js.map +1 -0
  66. package/dist/features/function-editor/index.d.ts +215 -0
  67. package/dist/features/function-editor/index.js +7 -0
  68. package/dist/features/function-editor/index.js.map +1 -0
  69. package/dist/hooks/index.d.ts +64 -7
  70. package/dist/hooks/index.js +8 -7
  71. package/dist/hooks/things/index.d.ts +5 -297
  72. package/dist/hooks/things/index.js +6 -6
  73. package/dist/index-C0m9UI6W.d.ts +444 -0
  74. package/dist/index.d.ts +41 -31
  75. package/dist/index.js +21 -13
  76. package/dist/providers/index.d.ts +16 -28
  77. package/dist/providers/index.js +3 -3
  78. package/dist/schemas/index.d.ts +4551 -109
  79. package/dist/schemas/index.js +2 -260
  80. package/dist/schemas/index.js.map +1 -1
  81. package/dist/shell/index.d.ts +92 -0
  82. package/dist/shell/index.js +6 -0
  83. package/dist/shell/index.js.map +1 -0
  84. package/dist/{thing-BF25aUtJ.d.ts → thing-Dc3AE2XI.d.ts} +22 -22
  85. package/dist/thing-adapters-aMjF0h9u.d.ts +1214 -0
  86. package/dist/types/index.d.ts +954 -7521
  87. package/dist/types/index.js +2 -2
  88. package/dist/ui-filters-BvrjMP_U.d.ts +108 -0
  89. package/dist/{errors-DratdVIz.d.ts → utils/index.d.ts} +38 -77
  90. package/dist/utils/index.js +4 -0
  91. package/dist/utils/index.js.map +1 -0
  92. package/dist-app/assets/index-DWX3479M.js +7 -0
  93. package/dist-app/assets/index-DWX3479M.js.map +1 -0
  94. package/dist-app/assets/main-BptePr_C.js +318 -0
  95. package/dist-app/assets/main-BptePr_C.js.map +1 -0
  96. package/dist-app/assets/main-CS9jgKzj.css +1 -0
  97. package/dist-app/index.html +38 -0
  98. package/package.json +46 -33
  99. package/dist/agents-2_r9e9i7.d.ts +0 -1043
  100. package/dist/capnweb-client-Bq78FtEA.d.ts +0 -229
  101. package/dist/chunk-3XKYQRXY.js +0 -192
  102. package/dist/chunk-3XKYQRXY.js.map +0 -1
  103. package/dist/chunk-4KXVN3EQ.js +0 -56
  104. package/dist/chunk-4KXVN3EQ.js.map +0 -1
  105. package/dist/chunk-GGO5GW72.js.map +0 -1
  106. package/dist/chunk-GYIMQZE7.js +0 -1994
  107. package/dist/chunk-GYIMQZE7.js.map +0 -1
  108. package/dist/chunk-IQ23B4ME.js +0 -944
  109. package/dist/chunk-IQ23B4ME.js.map +0 -1
  110. package/dist/chunk-JJLAES6W.js +0 -76
  111. package/dist/chunk-JJLAES6W.js.map +0 -1
  112. package/dist/chunk-KAZJ43F6.js.map +0 -1
  113. package/dist/chunk-LJIWB7KE.js.map +0 -1
  114. package/dist/chunk-OHWWWONS.js.map +0 -1
  115. package/dist/chunk-VRLUXCLD.js +0 -31
  116. package/dist/chunk-VRLUXCLD.js.map +0 -1
  117. package/dist/chunk-XH3LVW7J.js.map +0 -1
  118. package/dist/chunk-Y52IEYVM.js.map +0 -1
  119. package/dist/chunk-YMQRC6IC.js.map +0 -1
  120. package/dist/lib/index.js +0 -6
  121. package/dist/query-keys-CZNFikIi.d.ts +0 -153
  122. package/dist/views/index.d.ts +0 -131
  123. package/dist/views/index.js +0 -11
  124. /package/dist/{lib → auth}/index.js.map +0 -0
  125. /package/dist/{views → client}/index.js.map +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/app/context.tsx","../src/app/identity-provider.tsx","../src/app/app-providers.tsx","../src/app/auth-gate.tsx","../src/app/user-menu.tsx","../src/app/do-shell-nav.tsx","../src/app/do-shell.tsx","../src/app/pages/databases-page.tsx","../src/app/pages/document-page.tsx","../src/app/pages/functions-page.tsx","../src/app/pages/overview-page.tsx","../src/app/pages/placeholder-page.tsx","../src/app/pages/things-page.tsx","../src/app/pages/typed-things-page.tsx","../src/app/do-app.tsx","../src/app/route-params.ts","../src/app/routes.ts"],"names":["jsx","useAuth","useMemo","jsxs","UserIcon","Settings","SidebarMenuButton","Link","useParams","Database","Shapes","Activity","Network","Code","Users","CreditCard","Building","Card","CardHeader","CardTitle","CardDescription","CardContent","useNavigate"],"mappings":"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","file":"chunk-IQ23B4ME.js","sourcesContent":["'use client'\n\n/**\n * DO Config Context\n *\n * Provides static configuration (branding, routes, identity) to shell components.\n * Dynamic state (endpoint, namespace) is managed via TanStack Query in ../state/\n */\n\nimport { createContext, type ReactNode, useContext, useMemo } from 'react'\nimport type { DOShellConfig } from '../types/config'\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Static config context value (no state, just config)\n */\nexport interface DOConfigContextValue {\n /** Merged shell configuration */\n config: DOShellConfig\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst DOConfigContext = createContext<DOConfigContextValue | null>(null)\n\n// ============================================================================\n// Defaults\n// ============================================================================\n\nconst defaultIdentity = {\n clientId: '',\n devMode: false,\n required: true,\n onUnauthenticated: 'landing' as const,\n}\n\nconst defaultConfig = {\n basePath: '/',\n defaultNamespace: 'default',\n branding: { name: 'DO Admin' },\n theme: { mode: 'system' as const },\n routes: {},\n customRoutes: [],\n}\n\n// ============================================================================\n// Provider\n// ============================================================================\n\ninterface DOConfigProviderProps {\n config: DOShellConfig\n children: ReactNode\n}\n\n/**\n * DOConfigProvider - Provides static shell configuration\n *\n * This is a minimal context for static config only.\n * Dynamic state (endpoint, namespace) is managed via TanStack Query.\n */\nexport function DOConfigProvider({ config, children }: DOConfigProviderProps) {\n const value = useMemo<DOConfigContextValue>(() => {\n const mergedConfig: DOShellConfig = {\n ...defaultConfig,\n ...config,\n branding: { ...defaultConfig.branding, ...config.branding },\n theme: { ...defaultConfig.theme, ...config.theme },\n identity: { ...defaultIdentity, ...config.identity },\n }\n\n return { config: mergedConfig }\n }, [config])\n\n return <DOConfigContext.Provider value={value}>{children}</DOConfigContext.Provider>\n}\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\n/**\n * Hook to access static shell configuration\n */\nexport function useDOConfig(): DOConfigContextValue {\n const context = useContext(DOConfigContext)\n if (!context) {\n throw new Error('useDOConfig must be used within a DOConfigProvider')\n }\n return context\n}\n\n/**\n * Hook to access enabled routes configuration\n */\nexport function useDORoutes() {\n const { config } = useDOConfig()\n return config.routes ?? {}\n}\n\n/**\n * Hook to access custom routes\n */\nexport function useDOCustomRoutes() {\n const { config } = useDOConfig()\n return config.customRoutes ?? []\n}\n","'use client'\n\nimport { IdentityProvider, WidgetsProvider, useAuth } from '@mdxui/auth'\nimport type { ReactNode } from 'react'\nimport { useDOConfig } from './context'\n\n/**\n * Hook to access identity/auth state.\n * Re-exports useAuth from @mdxui/auth for convenience.\n */\nexport const useIdentity = useAuth\n\nexport interface DOIdentityProviderProps {\n children: ReactNode\n}\n\n/**\n * Identity provider that wraps the shell with WorkOS AuthKit authentication.\n *\n * Provides authentication context to all child components.\n */\nexport function DOIdentityProvider({ children }: DOIdentityProviderProps) {\n const { config } = useDOConfig()\n const { identity } = config\n\n // Build redirect URI - defaults to current origin + basePath\n const redirectUri =\n identity.redirectUri ??\n (typeof window !== 'undefined'\n ? `${window.location.origin}${config.basePath ?? '/'}`\n : undefined)\n\n // Handle redirect callback - clear URL params after successful auth\n const onRedirectCallback = () => {\n // Remove auth params from URL to prevent issues on refresh\n if (typeof window !== 'undefined') {\n const url = new URL(window.location.href)\n url.searchParams.delete('code')\n url.searchParams.delete('state')\n window.history.replaceState({}, '', url.pathname)\n }\n }\n\n return (\n <IdentityProvider\n clientId={identity.clientId}\n apiHostname={identity.apiHostname}\n devMode={identity.devMode}\n redirectUri={redirectUri}\n onRedirectCallback={onRedirectCallback}\n >\n <WidgetsProvider>{children}</WidgetsProvider>\n </IdentityProvider>\n )\n}\n","'use client'\n\n/**\n * AppProviders - Composed provider hierarchy for DOShell\n *\n * Provider hierarchy:\n * - ThemeProvider (next-themes) - Theme mode (light/dark/system)\n * - DOConfigProvider - Static shell config (branding, routes, identity)\n * - DOIdentityProvider - WorkOS AuthKit authentication\n * - DOProviderWithState - RPC client with auth token + dynamic endpoint\n *\n * Dynamic state (endpoint, namespace) is managed via TanStack Query in ../state/\n */\n\nimport { useAuth } from '@mdxui/auth'\nimport { ThemeProvider } from 'next-themes'\nimport { type ReactNode, useEffect, useMemo, useState } from 'react'\nimport { DOProvider } from '../providers/do-provider'\nimport { useEndpoint } from '../state'\nimport type { DOShellConfig } from '../types/config'\nimport type { DOAdminConfig } from '../types/do'\nimport { DOConfigProvider } from './context'\nimport { DOIdentityProvider } from './identity-provider'\n\nexport interface AppProvidersProps {\n config: DOShellConfig\n children: ReactNode\n}\n\n/**\n * Inner component that bridges WorkOS auth token + dynamic endpoint to DOProvider\n */\nfunction DOProviderWithState({\n config,\n initialNamespace,\n children,\n}: {\n config: DOAdminConfig\n initialNamespace?: string\n children: ReactNode\n}) {\n const { getAccessToken, user } = useAuth()\n const [accessToken, setAccessToken] = useState<string | undefined>(undefined)\n\n // Get endpoint from TanStack Query state (falls back to config default)\n const endpoint = useEndpoint(config.apiEndpoint)\n\n // Fetch the access token when user changes\n useEffect(() => {\n if (user) {\n getAccessToken()\n .then(setAccessToken)\n .catch(() => setAccessToken(undefined))\n } else {\n setAccessToken(undefined)\n }\n }, [user, getAccessToken])\n\n // Merge the WorkOS accessToken and dynamic endpoint into the DO config\n const authenticatedConfig = useMemo<DOAdminConfig>(() => {\n const authToken = accessToken ?? config.authToken\n return {\n ...config,\n apiEndpoint: endpoint,\n authToken,\n }\n }, [config, accessToken, endpoint])\n\n return (\n <DOProvider config={authenticatedConfig} initialNamespace={initialNamespace}>\n {children}\n </DOProvider>\n )\n}\n\n/**\n * AppProviders - Composed provider hierarchy for DOShell\n *\n * @example\n * ```tsx\n * <AppProviders\n * config={{\n * do: { apiEndpoint: '...', authMethod: 'jwt', bindings: [], realTimeUpdates: true },\n * identity: { clientId: 'client_xxx', devMode: true },\n * }}\n * >\n * <DOShell />\n * </AppProviders>\n * ```\n */\nexport function AppProviders({ config, children }: AppProvidersProps) {\n const themeMode = config.theme?.mode ?? 'system'\n\n return (\n <ThemeProvider\n attribute=\"class\"\n defaultTheme={themeMode}\n enableSystem={themeMode === 'system'}\n disableTransitionOnChange\n >\n <DOConfigProvider config={config}>\n <DOIdentityProvider>\n <DOProviderWithState\n config={config.do}\n initialNamespace={config.defaultNamespace}\n >\n {children}\n </DOProviderWithState>\n </DOIdentityProvider>\n </DOConfigProvider>\n </ThemeProvider>\n )\n}\n","'use client'\n\nimport { useAuth } from '@mdxui/auth'\nimport type { ReactNode } from 'react'\nimport { useDOConfig } from './context'\n\nexport interface AuthGateProps {\n children: ReactNode\n}\n\n/**\n * Default landing page component shown when user is not authenticated\n */\nfunction DefaultLandingPage() {\n const { signIn } = useAuth()\n\n return (\n <div className=\"min-h-screen bg-background flex flex-col items-center justify-center p-4\">\n <div className=\"text-center max-w-md\">\n <h1 className=\"text-3xl font-bold tracking-tight mb-4\">DO Admin</h1>\n <p className=\"text-muted-foreground mb-8\">\n Sign in to access the admin dashboard and manage your Durable Objects.\n </p>\n <button\n type=\"button\"\n onClick={() => signIn()}\n className=\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[var(--radius-md)] text-sm font-medium transition-colors bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-6\"\n >\n Sign In\n </button>\n </div>\n </div>\n )\n}\n\n/**\n * AuthGate handles authentication state and shows appropriate UI:\n * - Loading state while checking auth\n * - Landing page or redirect when not authenticated\n * - Children (dashboard) when authenticated\n */\nexport function AuthGate({ children }: AuthGateProps) {\n const { config } = useDOConfig()\n const { user, isLoading } = useAuth()\n\n const { identity } = config\n const required = identity.required ?? true\n const onUnauthenticated = identity.onUnauthenticated ?? 'landing'\n\n // If auth is not required, always show children\n if (!required) {\n return <>{children}</>\n }\n\n // Show loading state while checking authentication\n if (isLoading) {\n return (\n <div className=\"min-h-screen bg-background flex items-center justify-center\">\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent\" />\n <p className=\"text-sm text-muted-foreground\">Loading...</p>\n </div>\n </div>\n )\n }\n\n // User is authenticated, show dashboard\n if (user) {\n return <>{children}</>\n }\n\n // User is not authenticated - handle based on config\n switch (onUnauthenticated) {\n case 'redirect':\n // Redirect to external URL\n if (identity.unauthenticatedRedirectUrl && typeof window !== 'undefined') {\n window.location.href = identity.unauthenticatedRedirectUrl\n return (\n <div className=\"min-h-screen bg-background flex items-center justify-center\">\n <p className=\"text-sm text-muted-foreground\">Redirecting...</p>\n </div>\n )\n }\n // Fall through to landing if no redirect URL\n return identity.landingComponent ? <>{identity.landingComponent}</> : <DefaultLandingPage />\n\n case 'allow':\n // Allow access even without auth (rare use case)\n return <>{children}</>\n\n case 'landing':\n default:\n // Show landing page (custom or default)\n return identity.landingComponent ? <>{identity.landingComponent}</> : <DefaultLandingPage />\n }\n}\n","'use client'\n\nimport { useAuth } from '@mdxui/auth'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n SidebarMenuButton,\n Avatar,\n AvatarFallback,\n AvatarImage,\n useSidebar\n} from '@mdxui/primitives'\nimport { ChevronsUpDown, LogOut, Settings, User as UserIcon } from 'lucide-react'\n\ninterface UserMenuProps {\n /** Whether to show in compact mode (icon only) */\n compact?: boolean\n}\n\n/**\n * Get initials from a name (first letter of first and last name)\n */\nfunction getInitials(name: string | undefined): string {\n if (!name) return '?'\n const parts = name.trim().split(/\\s+/)\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase()\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\n}\n\n/**\n * UserMenu - User dropdown with profile info and sign out\n *\n * Displays the current user's avatar and name, with options for\n * settings and signing out.\n */\nexport function UserMenu({ compact = false }: UserMenuProps) {\n const { user, signOut, isLoading } = useAuth()\n const { isMobile } = useSidebar()\n\n if (isLoading) {\n return (\n <div className=\"flex items-center gap-2 p-2\">\n <div className=\"h-8 w-8 animate-pulse rounded-full bg-muted\" />\n {!compact && <div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />}\n </div>\n )\n }\n\n if (!user) {\n return null\n }\n\n const displayName = user.firstName\n ? `${user.firstName}${user.lastName ? ` ${user.lastName}` : ''}`\n : user.email\n\n const initials = getInitials(user.firstName ? `${user.firstName} ${user.lastName ?? ''}` : user.email)\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.profilePictureUrl ?? undefined} alt={displayName} />\n <AvatarFallback className=\"rounded-lg\">{initials}</AvatarFallback>\n </Avatar>\n {!compact && (\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{displayName}</span>\n <span className=\"truncate text-xs text-muted-foreground\">{user.email}</span>\n </div>\n )}\n <ChevronsUpDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.profilePictureUrl ?? undefined} alt={displayName} />\n <AvatarFallback className=\"rounded-lg\">{initials}</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{displayName}</span>\n <span className=\"truncate text-xs text-muted-foreground\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuItem>\n <UserIcon className=\"mr-2 size-4\" />\n Account\n </DropdownMenuItem>\n <DropdownMenuItem>\n <Settings className=\"mr-2 size-4\" />\n Settings\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={() => signOut()}>\n <LogOut className=\"mr-2 size-4\" />\n Sign Out\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","\"use client\"\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n} from \"@mdxui/primitives\"\nimport { Link, useRouterState } from \"@tanstack/react-router\"\nimport {\n Activity,\n // Additional icons for missing routes\n BookOpen,\n Bot,\n Building,\n Code,\n CreditCard,\n Database,\n GitBranch,\n Home,\n Key,\n Network,\n Play,\n Plug,\n Settings,\n Shapes,\n Shield,\n UserCog,\n Users,\n Zap,\n} from \"lucide-react\"\nimport type * as React from \"react\"\nimport { useDOConfig, useDORoutes } from \"./context\"\nimport { UserMenu } from \"./user-menu\"\n\n/**\n * Navigation item definition\n */\ninterface NavItem {\n title: string\n url: string\n icon: React.ComponentType<{ className?: string }>\n routeKey?: string // Key in routes config for enable/disable\n}\n\n/**\n * Navigation structure for the DO Shell.\n * Organized into logical groups.\n */\nconst navGroups: Record<string, NavItem[]> = {\n main: [{ title: \"Overview\", url: \"/\", icon: Home, routeKey: \"overview\" }],\n development: [\n { title: \"Agents\", url: \"/agents\", icon: Bot, routeKey: \"agents\" },\n {\n title: \"Functions\",\n url: \"/functions\",\n icon: Code,\n routeKey: \"functions\",\n },\n {\n title: \"Workflows\",\n url: \"/workflows\",\n icon: GitBranch,\n routeKey: \"workflows\",\n },\n {\n title: \"Databases\",\n url: \"/databases\",\n icon: Database,\n routeKey: \"databases\",\n },\n ],\n dataModel: [\n { title: \"Things\", url: \"/things\", icon: Shapes, routeKey: \"things\" },\n { title: \"Nouns\", url: \"/nouns\", icon: BookOpen, routeKey: \"nouns\" },\n { title: \"Verbs\", url: \"/verbs\", icon: Zap, routeKey: \"verbs\" },\n { title: \"Actions\", url: \"/actions\", icon: Play, routeKey: \"actions\" },\n {\n title: \"Relationships\",\n url: \"/relationships\",\n icon: Network,\n routeKey: \"relationships\",\n },\n { title: \"Events\", url: \"/events\", icon: Activity, routeKey: \"events\" },\n ],\n saas: [\n {\n title: \"Customers\",\n url: \"/customers\",\n icon: Users,\n routeKey: \"customers\",\n },\n {\n title: \"Subscriptions\",\n url: \"/subscriptions\",\n icon: CreditCard,\n routeKey: \"subscriptions\",\n },\n {\n title: \"Integrations\",\n url: \"/integrations\",\n icon: Plug,\n routeKey: \"integrations\",\n },\n ],\n admin: [\n { title: \"Organizations\", url: \"/orgs\", icon: Building, routeKey: \"orgs\" },\n { title: \"Roles\", url: \"/roles\", icon: Shield, routeKey: \"roles\" },\n { title: \"Users\", url: \"/users\", icon: UserCog, routeKey: \"users\" },\n { title: \"API Keys\", url: \"/api-keys\", icon: Key, routeKey: \"apiKeys\" },\n {\n title: \"Settings\",\n url: \"/settings\",\n icon: Settings,\n routeKey: \"settings\",\n },\n ],\n}\n\nexport interface DOShellNavProps extends React.ComponentProps<typeof Sidebar> {\n /** Optional header content to display at the top of the sidebar */\n headerContent?: React.ReactNode\n}\n\n/**\n * DOShellNav - Sidebar navigation component for the DO Shell.\n *\n * Features:\n * - Highlights active route based on current location\n * - Uses lucide-react icons for each navigation item\n * - Collapsible on mobile via the Sidebar component\n * - Supports custom header content\n * - Routes can be enabled/disabled via config\n */\nexport function DOShellNav({ headerContent, ...props }: DOShellNavProps) {\n const routerState = useRouterState()\n const { config } = useDOConfig()\n const routesConfig = useDORoutes()\n\n const branding = config.branding\n const pathname = routerState.location.pathname\n\n /**\n * Determines if a navigation item is active based on the current route.\n * For the overview page, requires exact match. For other pages, uses prefix matching.\n */\n const isActive = (url: string): boolean => {\n if (url === \"/\") {\n return pathname === \"/\" || pathname === \"\"\n }\n return pathname.startsWith(url)\n }\n\n /**\n * Check if a route is enabled\n */\n const isRouteEnabled = (routeKey: string | undefined): boolean => {\n if (!routeKey) return true\n // If explicitly set to false, hide it\n if (routesConfig[routeKey] === false) return false\n return true\n }\n\n /**\n * Filter nav items by enabled routes\n */\n const filterNavItems = (items: NavItem[]): NavItem[] => {\n return items.filter((item) => isRouteEnabled(item.routeKey))\n }\n\n return (\n <Sidebar variant=\"inset\" {...props}>\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton size=\"lg\" asChild>\n <Link to=\"/\">\n <div className=\"bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-(--radius)\">\n {branding?.logo ?? <Database className=\"size-4\" />}\n </div>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">\n {branding?.name ?? \"DO Admin\"}\n </span>\n <span className=\"truncate text-xs\">Dashboard</span>\n </div>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n {headerContent}\n </SidebarHeader>\n\n <SidebarContent>\n {/* Main navigation - no label */}\n <SidebarGroup>\n <SidebarMenu>\n {filterNavItems(navGroups.main).map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n asChild\n isActive={isActive(item.url)}\n tooltip={item.title}\n >\n <Link to={item.url}>\n <item.icon className=\"size-4\" />\n <span>{item.title}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n\n {/* Development group */}\n {filterNavItems(navGroups.development).length > 0 && (\n <SidebarGroup>\n <SidebarGroupLabel>Development</SidebarGroupLabel>\n <SidebarMenu>\n {filterNavItems(navGroups.development).map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n asChild\n isActive={isActive(item.url)}\n tooltip={item.title}\n >\n <Link to={item.url}>\n <item.icon className=\"size-4\" />\n <span>{item.title}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n )}\n\n {/* Data Model group */}\n {filterNavItems(navGroups.dataModel).length > 0 && (\n <SidebarGroup>\n <SidebarGroupLabel>Data Model</SidebarGroupLabel>\n <SidebarMenu>\n {filterNavItems(navGroups.dataModel).map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n asChild\n isActive={isActive(item.url)}\n tooltip={item.title}\n >\n <Link to={item.url}>\n <item.icon className=\"size-4\" />\n <span>{item.title}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n )}\n\n {/* SaaS group */}\n {filterNavItems(navGroups.saas).length > 0 && (\n <SidebarGroup>\n <SidebarGroupLabel>SaaS</SidebarGroupLabel>\n <SidebarMenu>\n {filterNavItems(navGroups.saas).map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n asChild\n isActive={isActive(item.url)}\n tooltip={item.title}\n >\n <Link to={item.url}>\n <item.icon className=\"size-4\" />\n <span>{item.title}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n )}\n\n {/* Admin group */}\n {filterNavItems(navGroups.admin).length > 0 && (\n <SidebarGroup>\n <SidebarGroupLabel>Admin</SidebarGroupLabel>\n <SidebarMenu>\n {filterNavItems(navGroups.admin).map((item) => (\n <SidebarMenuItem key={item.title}>\n <SidebarMenuButton\n asChild\n isActive={isActive(item.url)}\n tooltip={item.title}\n >\n <Link to={item.url}>\n <item.icon className=\"size-4\" />\n <span>{item.title}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n )}\n </SidebarContent>\n\n <SidebarFooter>\n <SidebarMenu>\n <SidebarMenuItem>\n <UserMenu />\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarFooter>\n </Sidebar>\n )\n}\n","\"use client\"\n\nimport {\n Separator,\n SidebarInset,\n SidebarProvider,\n SidebarTrigger,\n Toaster,\n} from \"@mdxui/primitives\"\nimport { Link } from \"@tanstack/react-router\"\nimport type * as React from \"react\"\nimport {\n type BreadcrumbItemConfig,\n type BreadcrumbLinkProps,\n Breadcrumbs,\n} from \"../components/breadcrumbs\"\nimport { useBreadcrumbs } from \"../hooks/use-breadcrumbs\"\nimport { AuthGate } from \"./auth-gate\"\nimport { DOShellNav } from \"./do-shell-nav\"\n\n/**\n * TanStack Router Link adapter for Breadcrumbs\n */\nfunction RouterLink({ href, children, className }: BreadcrumbLinkProps) {\n return (\n <Link to={href} className={className}>\n {children}\n </Link>\n )\n}\n\nexport interface DOShellProps {\n /** Children to render in the main content area (typically TanStack Router Outlet) */\n children: React.ReactNode\n /** Optional header content for the sidebar */\n sidebarHeaderContent?: React.ReactNode\n /** Optional content to render in the header after breadcrumbs */\n headerContent?: React.ReactNode\n /**\n * Breadcrumb items to display.\n * If not provided, auto-generates from current route.\n * Pass empty array to disable breadcrumbs.\n */\n breadcrumbs?: BreadcrumbItemConfig[]\n}\n\n/**\n * DOShell - Main layout wrapper for the DO Admin Dashboard.\n *\n * This layout provides:\n * - Authentication gate (shows landing page if not authenticated)\n * - A collapsible sidebar with navigation on the left\n * - A main content area with a header containing breadcrumbs\n * - Toast notifications via Sonner\n * - Responsive design that works on mobile and desktop\n *\n * Uses TanStack Router for navigation.\n *\n * @example\n * ```tsx\n * <DOShell headerContent={<SearchBar />}>\n * <Outlet />\n * </DOShell>\n * ```\n */\nexport function DOShell({\n children,\n sidebarHeaderContent,\n headerContent,\n breadcrumbs: breadcrumbsProp,\n}: DOShellProps) {\n // Auto-generate breadcrumbs from route if not provided\n const autoBreadcrumbs = useBreadcrumbs()\n const breadcrumbs = breadcrumbsProp ?? autoBreadcrumbs\n\n return (\n <AuthGate>\n <SidebarProvider className=\"h-svh!\">\n <DOShellNav headerContent={sidebarHeaderContent} />\n <SidebarInset className=\"overflow-hidden\">\n <header className=\"relative flex h-16 shrink-0 items-center gap-2 border-b bg-background transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n <div className=\"z-10 flex shrink-0 items-center gap-2 bg-background px-4\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\n {breadcrumbs.length > 0 && (\n <Breadcrumbs items={breadcrumbs} LinkComponent={RouterLink} />\n )}\n </div>\n {headerContent && (\n <div className=\"flex flex-1 items-center px-4 xl:absolute xl:inset-0 xl:justify-center\">\n <div className=\"w-full max-w-md\">{headerContent}</div>\n </div>\n )}\n </header>\n <main className=\"flex-1 overflow-auto\">{children}</main>\n </SidebarInset>\n <Toaster closeButton position=\"top-right\" />\n </SidebarProvider>\n </AuthGate>\n )\n}\n","'use client'\n\n/**\n * DatabasesPage\n *\n * Page wrapper for DataGridView that extracts route params.\n */\n\nimport { useParams } from '@tanstack/react-router'\nimport { DataGridView } from '../../views'\n\n/**\n * DatabasesPage - Renders DataGridView with route params\n *\n * Route: /databases/:ns?/:type?\n */\nexport function DatabasesPage() {\n const params = useParams({ strict: false })\n const ns = params.ns as string | undefined\n const type = params.type as string | undefined\n\n return (\n <DataGridView\n initialNamespace={ns}\n initialType={type}\n className=\"h-full\"\n />\n )\n}\n","'use client'\n\n/**\n * DocumentPage\n *\n * Page wrapper for DocumentEditorView that extracts route params.\n */\n\nimport { useParams, useNavigate } from '@tanstack/react-router'\nimport { DocumentEditorView } from '../../views'\n\n/**\n * DocumentPage - Renders DocumentEditorView with route params\n *\n * Route: /things/$ns/$type/$id\n */\nexport function DocumentPage() {\n const params = useParams({ strict: false })\n const ns = params.ns as string\n const type = params.type as string\n const id = params.id as string\n const navigate = useNavigate()\n\n const handleBack = () => {\n // Navigate back to things browse view\n navigate({ to: `/things/${ns}/${type}` })\n }\n\n const handleDelete = () => {\n // Navigate back to things browse view after delete\n navigate({ to: `/things/${ns}/${type}` })\n }\n\n return (\n <DocumentEditorView\n initialNamespace={ns}\n initialType={type}\n initialId={id}\n onBack={handleBack}\n onDelete={handleDelete}\n className=\"h-full\"\n />\n )\n}\n","'use client'\n\n/**\n * FunctionsPage\n *\n * Page wrapper for FunctionEditorView.\n */\n\nimport { FunctionEditorView } from '../../views'\n\n/**\n * FunctionsPage - Renders FunctionEditorView\n *\n * Route: /functions\n */\nexport function FunctionsPage() {\n return <FunctionEditorView className=\"h-full\" />\n}\n","'use client'\n\n/**\n * OverviewPage\n *\n * Dashboard home page with stats and quick actions.\n */\n\nimport * as React from 'react'\nimport { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@mdxui/primitives'\nimport { Database, Code, Users, Activity, Shapes, Network, CreditCard, Building } from 'lucide-react'\nimport { Link } from '@tanstack/react-router'\nimport { useDO } from '../../providers/do-provider'\nimport { useNamespaces, useTypes, useThings } from '../../hooks'\n\ninterface StatCardProps {\n title: string\n value: string | number\n description?: string\n icon: React.ComponentType<{ className?: string }>\n href?: string\n}\n\nfunction StatCard({ title, value, description, icon: Icon, href }: StatCardProps) {\n const content = (\n <Card className=\"hover:bg-muted/50 transition-colors\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">{title}</CardTitle>\n <Icon className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{value}</div>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </CardContent>\n </Card>\n )\n\n if (href) {\n return (\n <Link to={href} className=\"block\">\n {content}\n </Link>\n )\n }\n\n return content\n}\n\ninterface QuickActionProps {\n title: string\n description: string\n icon: React.ComponentType<{ className?: string }>\n href: string\n}\n\nfunction QuickAction({ title, description, icon: Icon, href }: QuickActionProps) {\n return (\n <Link\n to={href}\n className=\"flex items-center gap-4 rounded-(--radius) border p-4 hover:bg-muted/50 transition-colors\"\n >\n <div className=\"flex h-10 w-10 items-center justify-center rounded-(--radius) bg-primary/10\">\n <Icon className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <h3 className=\"font-medium\">{title}</h3>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n </div>\n </Link>\n )\n}\n\n/**\n * OverviewPage - Main dashboard landing page\n *\n * Shows stats, quick actions, and recent activity.\n */\nexport function OverviewPage() {\n const { namespace, isConnected } = useDO()\n\n // Fetch stats data\n const { data: namespaces } = useNamespaces()\n const { data: types } = useTypes({ ns: namespace })\n const { data: thingsResult } = useThings({ ns: namespace, limit: 1 })\n\n const namespaceCount = namespaces?.length ?? 0\n const typeCount = types?.length ?? 0\n const thingCount = thingsResult?.total ?? 0\n\n return (\n <div className=\"space-y-8\">\n {/* Header */}\n <div>\n <h1 className=\"text-3xl font-bold tracking-tight\">Dashboard</h1>\n <p className=\"text-muted-foreground\">\n Welcome to DO Admin. Manage your Durable Objects and data.\n </p>\n </div>\n\n {/* Connection Status */}\n {!isConnected && (\n <Card className=\"border-destructive\">\n <CardHeader>\n <CardTitle className=\"text-destructive\">Connection Error</CardTitle>\n <CardDescription>\n Unable to connect to the backend. Please check your configuration.\n </CardDescription>\n </CardHeader>\n </Card>\n )}\n\n {/* Stats Grid */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n title=\"Namespaces\"\n value={namespaceCount}\n description=\"Active namespaces\"\n icon={Database}\n href=\"/databases\"\n />\n <StatCard\n title=\"Types\"\n value={typeCount}\n description=\"Defined types\"\n icon={Shapes}\n href=\"/things\"\n />\n <StatCard\n title=\"Things\"\n value={thingCount}\n description=\"Total records\"\n icon={Activity}\n href=\"/things\"\n />\n <StatCard\n title=\"Namespace\"\n value={namespace}\n description=\"Currently selected\"\n icon={Network}\n />\n </div>\n\n {/* Quick Actions */}\n <div>\n <h2 className=\"text-lg font-semibold mb-4\">Quick Actions</h2>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <QuickAction\n title=\"Browse Things\"\n description=\"View and manage all your Things\"\n icon={Shapes}\n href=\"/things\"\n />\n <QuickAction\n title=\"Query Database\"\n description=\"Run queries on your data\"\n icon={Database}\n href=\"/databases\"\n />\n <QuickAction\n title=\"Run Functions\"\n description=\"Execute code against your DO\"\n icon={Code}\n href=\"/functions\"\n />\n <QuickAction\n title=\"Manage Customers\"\n description=\"View and manage customers\"\n icon={Users}\n href=\"/customers\"\n />\n <QuickAction\n title=\"View Subscriptions\"\n description=\"Manage billing and subscriptions\"\n icon={CreditCard}\n href=\"/subscriptions\"\n />\n <QuickAction\n title=\"Organizations\"\n description=\"Manage organizations and teams\"\n icon={Building}\n href=\"/orgs\"\n />\n </div>\n </div>\n\n {/* Current Namespace Info */}\n <Card>\n <CardHeader>\n <CardTitle>Current Namespace: {namespace}</CardTitle>\n <CardDescription>\n You are currently working in the \"{namespace}\" namespace.\n Switch namespaces from the Things or Databases view.\n </CardDescription>\n </CardHeader>\n </Card>\n </div>\n )\n}\n","'use client'\n\n/**\n * PlaceholderPage\n *\n * Placeholder component for routes that are not yet implemented.\n */\n\nimport { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@mdxui/primitives'\nimport { Construction } from 'lucide-react'\n\ninterface PlaceholderPageProps {\n /** Title for the page */\n title: string\n /** Description of what this page will contain */\n description?: string\n}\n\n/**\n * PlaceholderPage - Shows a \"coming soon\" message for unimplemented routes\n */\nexport function PlaceholderPage({ title, description }: PlaceholderPageProps) {\n return (\n <div className=\"flex h-full items-center justify-center p-4\">\n <Card className=\"max-w-md\">\n <CardHeader className=\"text-center\">\n <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-muted\">\n <Construction className=\"h-8 w-8 text-muted-foreground\" />\n </div>\n <CardTitle>{title}</CardTitle>\n <CardDescription>\n {description ?? 'This feature is coming soon.'}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"text-center text-sm text-muted-foreground\">\n <p>We're working hard to bring you this functionality.</p>\n <p>Check back soon for updates.</p>\n </CardContent>\n </Card>\n </div>\n )\n}\n\n// Pre-configured placeholder pages for specific routes\n\nexport function AgentsPage() {\n return (\n <PlaceholderPage\n title=\"Agents\"\n description=\"Manage AI agents and their configurations.\"\n />\n )\n}\n\nexport function WorkflowsPage() {\n return (\n <PlaceholderPage\n title=\"Workflows\"\n description=\"Create and manage automated workflows.\"\n />\n )\n}\n\nexport function RelationshipsPage() {\n return (\n <PlaceholderPage\n title=\"Relationships\"\n description=\"View and manage relationships between Things.\"\n />\n )\n}\n\nexport function EventsPage() {\n return (\n <PlaceholderPage\n title=\"Events\"\n description=\"Browse and manage events in your system.\"\n />\n )\n}\n\nexport function CustomersPage() {\n return (\n <PlaceholderPage\n title=\"Customers\"\n description=\"View and manage your customers.\"\n />\n )\n}\n\nexport function SubscriptionsPage() {\n return (\n <PlaceholderPage\n title=\"Subscriptions\"\n description=\"Manage customer subscriptions and billing.\"\n />\n )\n}\n\nexport function IntegrationsPage() {\n return (\n <PlaceholderPage\n title=\"Integrations\"\n description=\"Configure third-party integrations.\"\n />\n )\n}\n\nexport function OrgsPage() {\n return (\n <PlaceholderPage\n title=\"Organizations\"\n description=\"Manage organizations and their settings.\"\n />\n )\n}\n\nexport function RolesPage() {\n return (\n <PlaceholderPage\n title=\"Roles\"\n description=\"Configure roles and permissions.\"\n />\n )\n}\n\nexport function UsersPage() {\n return (\n <PlaceholderPage\n title=\"Users\"\n description=\"Manage users and their access.\"\n />\n )\n}\n\nexport function ApiKeysPage() {\n return (\n <PlaceholderPage\n title=\"API Keys\"\n description=\"Generate and manage API keys.\"\n />\n )\n}\n\nexport function SettingsPage() {\n return (\n <PlaceholderPage\n title=\"Settings\"\n description=\"Configure system settings.\"\n />\n )\n}\n","'use client'\n\n/**\n * ThingsPage\n *\n * Page wrapper for DataBrowserView that extracts route params.\n */\n\nimport { useParams, useNavigate } from '@tanstack/react-router'\nimport { DataBrowserView } from '../../views'\nimport type { Thing } from '../../types'\n\n/**\n * ThingsPage - Renders DataBrowserView with route params\n *\n * Route: /things/$ns?/$type?\n */\nexport function ThingsPage() {\n const params = useParams({ strict: false })\n const ns = params.ns as string | undefined\n const type = params.type as string | undefined\n const navigate = useNavigate()\n\n const handleOpen = (thing: Thing) => {\n // Navigate to document editor view\n navigate({ to: `/things/${thing.ns}/${thing.type}/${thing.id}` })\n }\n\n return (\n <DataBrowserView\n initialNamespace={ns}\n initialType={type}\n onOpen={handleOpen}\n className=\"h-full\"\n />\n )\n}\n","'use client'\n\n/**\n * TypedThingsPage\n *\n * Reusable page wrapper for DataBrowserView with a pre-set type filter.\n * Used for routes like /nouns, /verbs, /actions, etc.\n */\n\nimport { useNavigate } from '@tanstack/react-router'\nimport { DataBrowserView } from '../../views'\nimport type { Thing } from '../../types'\n\nexport interface TypedThingsPageProps {\n /** The type to filter by */\n type: string\n}\n\n/**\n * TypedThingsPage - Renders DataBrowserView filtered to a specific type\n */\nexport function TypedThingsPage({ type }: TypedThingsPageProps) {\n const navigate = useNavigate()\n\n const handleOpen = (thing: Thing) => {\n // Navigate to document editor view under /things\n navigate({ to: `/things/${thing.ns}/${thing.type}/${thing.id}` })\n }\n\n return (\n <DataBrowserView\n initialType={type}\n onOpen={handleOpen}\n className=\"h-full\"\n />\n )\n}\n\n// Pre-configured page components for common types\n\nexport function NounsPage() {\n return <TypedThingsPage type=\"Noun\" />\n}\n\nexport function VerbsPage() {\n return <TypedThingsPage type=\"Verb\" />\n}\n\nexport function ActionsPage() {\n return <TypedThingsPage type=\"Action\" />\n}\n\nexport function RelationshipsPage() {\n return <TypedThingsPage type=\"Relationship\" />\n}\n\nexport function EventsPage() {\n return <TypedThingsPage type=\"Event\" />\n}\n\n// SaaS types\nexport function CustomersPage() {\n return <TypedThingsPage type=\"Customer\" />\n}\n\nexport function SubscriptionsPage() {\n return <TypedThingsPage type=\"Subscription\" />\n}\n\n// Admin types\nexport function OrgsPage() {\n return <TypedThingsPage type=\"Org\" />\n}\n\nexport function RolesPage() {\n return <TypedThingsPage type=\"Role\" />\n}\n\nexport function UsersPage() {\n return <TypedThingsPage type=\"User\" />\n}\n\nexport function APIKeysPage() {\n return <TypedThingsPage type=\"APIKey\" />\n}\n","\"use client\";\n\n/**\n * DOApp - Complete routed application entry point\n *\n * This component provides a complete DO Admin Dashboard with:\n * - WorkOS AuthKit authentication\n * - Theme support (light/dark/system)\n * - TanStack Query for data fetching\n * - TanStack Router for navigation (via @mdxui/navigation)\n * - All shell components and pages\n */\n\nimport { createWebRouter, WebOutlet } from \"@mdxui/navigation/web\";\nimport { RouterProvider } from \"@tanstack/react-router\";\nimport * as React from \"react\";\nimport { EndpointSelector } from \"../components/endpoint-selector\";\nimport { useDOState } from \"../state\";\nimport type { DOShellConfig } from \"../types/config\";\nimport { AppProviders } from \"./app-providers\";\nimport { useDOConfig } from \"./context\";\nimport { DOShell } from \"./do-shell\";\nimport { DatabasesPage } from \"./pages/databases-page\";\nimport { DocumentPage } from \"./pages/document-page\";\nimport { FunctionsPage } from \"./pages/functions-page\";\nimport { OverviewPage } from \"./pages/overview-page\";\nimport { PlaceholderPage } from \"./pages/placeholder-page\";\nimport { ThingsPage } from \"./pages/things-page\";\nimport {\n\tActionsPage,\n\tAPIKeysPage,\n\tCustomersPage,\n\tEventsPage,\n\tNounsPage,\n\tOrgsPage,\n\tRelationshipsPage,\n\tRolesPage,\n\tSubscriptionsPage,\n\tUsersPage,\n\tVerbsPage,\n} from \"./pages/typed-things-page\";\n\nexport interface DOAppProps {\n\t/** Shell configuration */\n\tconfig: DOShellConfig;\n\t/** Optional custom content to render in the shell header */\n\theaderContent?: React.ReactNode;\n\t/** Optional custom content to render in the sidebar header */\n\tsidebarHeaderContent?: React.ReactNode;\n}\n\n/**\n * DO Admin route configuration\n *\n * Defines all routes for the DO Admin dashboard.\n * Routes are organized by section: Main, Development, Data Model, SaaS, Admin.\n */\nexport const doRoutes = {\n\t// Main\n\toverview: {\n\t\tpath: \"/\",\n\t\tcomponent: OverviewPage,\n\t},\n\n\t// Development\n\tagents: {\n\t\tpath: \"/agents\",\n\t\tcomponent: () => (\n\t\t\t<PlaceholderPage title=\"Agents\" description=\"Autonomous AI workers\" />\n\t\t),\n\t},\n\tfunctions: {\n\t\tpath: \"/functions\",\n\t\tcomponent: FunctionsPage,\n\t},\n\tworkflows: {\n\t\tpath: \"/workflows\",\n\t\tcomponent: FunctionsPage, // Uses FunctionEditorView for now\n\t},\n\tdatabases: {\n\t\tpath: \"/databases\",\n\t\tcomponent: DatabasesPage,\n\t},\n\tdatabasesWithParams: {\n\t\tpath: \"/databases/:ns/:type\",\n\t\tcomponent: DatabasesPage,\n\t},\n\n\t// Data Model\n\tthings: {\n\t\tpath: \"/things\",\n\t\tcomponent: ThingsPage,\n\t},\n\tthingsWithNs: {\n\t\tpath: \"/things/:ns\",\n\t\tcomponent: ThingsPage,\n\t},\n\tthingsWithType: {\n\t\tpath: \"/things/:ns/:type\",\n\t\tcomponent: ThingsPage,\n\t},\n\tdocument: {\n\t\tpath: \"/things/:ns/:type/:id\",\n\t\tcomponent: DocumentPage,\n\t},\n\tnouns: {\n\t\tpath: \"/nouns\",\n\t\tcomponent: NounsPage,\n\t},\n\tverbs: {\n\t\tpath: \"/verbs\",\n\t\tcomponent: VerbsPage,\n\t},\n\tactions: {\n\t\tpath: \"/actions\",\n\t\tcomponent: ActionsPage,\n\t},\n\trelationships: {\n\t\tpath: \"/relationships\",\n\t\tcomponent: RelationshipsPage,\n\t},\n\tevents: {\n\t\tpath: \"/events\",\n\t\tcomponent: EventsPage,\n\t},\n\n\t// SaaS\n\tcustomers: {\n\t\tpath: \"/customers\",\n\t\tcomponent: CustomersPage,\n\t},\n\tsubscriptions: {\n\t\tpath: \"/subscriptions\",\n\t\tcomponent: SubscriptionsPage,\n\t},\n\tintegrations: {\n\t\tpath: \"/integrations\",\n\t\tcomponent: () => (\n\t\t\t<PlaceholderPage\n\t\t\t\ttitle=\"Integrations\"\n\t\t\t\tdescription=\"External service connections\"\n\t\t\t/>\n\t\t),\n\t},\n\n\t// Admin\n\torgs: {\n\t\tpath: \"/orgs\",\n\t\tcomponent: OrgsPage,\n\t},\n\troles: {\n\t\tpath: \"/roles\",\n\t\tcomponent: RolesPage,\n\t},\n\tusers: {\n\t\tpath: \"/users\",\n\t\tcomponent: UsersPage,\n\t},\n\tapiKeys: {\n\t\tpath: \"/api-keys\",\n\t\tcomponent: APIKeysPage,\n\t},\n\tsettings: {\n\t\tpath: \"/settings\",\n\t\tcomponent: () => (\n\t\t\t<PlaceholderPage title=\"Settings\" description=\"Application settings\" />\n\t\t),\n\t},\n};\n\n/**\n * Default header content with endpoint selector\n */\nfunction DefaultHeaderContent() {\n\tconst { config } = useDOConfig();\n\tconst { endpoint, setEndpoint, recentEndpoints } = useDOState({\n\t\tendpoint: config.do.apiEndpoint,\n\t});\n\treturn (\n\t\t<EndpointSelector\n\t\t\tendpoint={endpoint}\n\t\t\tonEndpointChange={setEndpoint}\n\t\t\trecentEndpoints={recentEndpoints}\n\t\t\tclassName=\"w-full max-w-md\"\n\t\t/>\n\t);\n}\n\n/**\n * Creates a shell layout component with the given props\n */\nfunction createShellComponent(\n\theaderContent?: React.ReactNode,\n\tsidebarHeaderContent?: React.ReactNode,\n): React.ComponentType<unknown> {\n\treturn function ShellLayout() {\n\t\treturn (\n\t\t\t<DOShell\n\t\t\t\theaderContent={headerContent ?? <DefaultHeaderContent />}\n\t\t\t\tsidebarHeaderContent={sidebarHeaderContent}\n\t\t\t>\n\t\t\t\t<WebOutlet />\n\t\t\t</DOShell>\n\t\t);\n\t};\n}\n\n/**\n * DOApp - Complete routed DO Admin Dashboard application with authentication\n *\n * This is the main entry point for using DO Admin with WorkOS authentication and routing.\n * It sets up all necessary providers, routing, and the shell.\n *\n * @example\n * ```tsx\n * import { DOApp } from '@mdxui/do'\n *\n * function App() {\n * return (\n * <DOApp\n * config={{\n * do: {\n * apiEndpoint: 'https://api.do.ai',\n * authMethod: 'jwt',\n * bindings: [],\n * realTimeUpdates: true,\n * },\n * identity: {\n * clientId: 'client_xxx',\n * devMode: true,\n * },\n * branding: {\n * name: 'My DO Admin',\n * },\n * defaultNamespace: 'production',\n * }}\n * />\n * )\n * }\n * ```\n */\nexport function DOApp({\n\tconfig,\n\theaderContent,\n\tsidebarHeaderContent,\n}: DOAppProps) {\n\tconst basePath = config.basePath ?? \"\";\n\n\t// Create router with routes - memoize to prevent recreation on every render\n\tconst router = React.useMemo(() => {\n\t\t// Create shell component with props baked in\n\t\tconst ShellComponent = createShellComponent(\n\t\t\theaderContent,\n\t\t\tsidebarHeaderContent,\n\t\t);\n\n\t\t// Create router with shell as root component\n\t\treturn createWebRouter(doRoutes, {\n\t\t\trootComponent: ShellComponent,\n\t\t\tbasepath: basePath || undefined,\n\t\t});\n\t}, [basePath, headerContent, sidebarHeaderContent]);\n\n\treturn (\n\t\t<AppProviders config={config}>\n\t\t\t<RouterProvider\n\t\t\t\trouter={\n\t\t\t\t\trouter as unknown as Parameters<typeof RouterProvider>[0][\"router\"]\n\t\t\t\t}\n\t\t\t/>\n\t\t</AppProviders>\n\t);\n}\n","/**\n * Route parameter schemas for DO Shell routes\n *\n * These Zod schemas define and validate route parameters.\n */\n\nimport { z } from 'zod'\n\n/**\n * Schema for database route params\n */\nexport const DatabaseRouteParams = z.object({\n ns: z.string().optional(),\n type: z.string().optional(),\n})\n\nexport type DatabaseRouteParamsType = z.infer<typeof DatabaseRouteParams>\n\n/**\n * Schema for things browse route params\n */\nexport const ThingsRouteParams = z.object({\n ns: z.string().optional(),\n type: z.string().optional(),\n})\n\nexport type ThingsRouteParamsType = z.infer<typeof ThingsRouteParams>\n\n/**\n * Schema for document route params\n */\nexport const DocumentRouteParams = z.object({\n ns: z.string(),\n type: z.string(),\n id: z.string(),\n})\n\nexport type DocumentRouteParamsType = z.infer<typeof DocumentRouteParams>\n\n/**\n * Schema for generic type-filtered route params\n */\nexport const TypeFilteredRouteParams = z.object({\n type: z.string().optional(),\n})\n\nexport type TypeFilteredRouteParamsType = z.infer<typeof TypeFilteredRouteParams>\n","/**\n * DO Shell Routes\n *\n * Route definitions and parameter schemas for the DO Admin Dashboard.\n */\n\nexport {\n DatabaseRouteParams,\n ThingsRouteParams,\n DocumentRouteParams,\n TypeFilteredRouteParams,\n type DatabaseRouteParamsType,\n type ThingsRouteParamsType,\n type DocumentRouteParamsType,\n type TypeFilteredRouteParamsType,\n} from './route-params'\n\n/**\n * Route paths for DO Shell navigation\n *\n * These paths are used throughout the shell for navigation links\n * and route matching.\n */\nexport const doRoutePaths = {\n // Main\n overview: '/',\n\n // Development\n agents: '/agents',\n functions: '/functions',\n workflows: '/workflows',\n databases: '/databases',\n databaseTable: '/databases/:ns/:type',\n\n // Data Model\n things: '/things',\n thingsBrowse: '/things/:ns/:type?',\n document: '/things/:ns/:type/:id',\n nouns: '/nouns',\n verbs: '/verbs',\n actions: '/actions',\n relationships: '/relationships',\n events: '/events',\n\n // SaaS\n customers: '/customers',\n subscriptions: '/subscriptions',\n integrations: '/integrations',\n\n // Admin\n orgs: '/orgs',\n roles: '/roles',\n users: '/users',\n apiKeys: '/api-keys',\n settings: '/settings',\n} as const\n\nexport type DORoutePath = typeof doRoutePaths[keyof typeof doRoutePaths]\n"]}
@@ -1,76 +0,0 @@
1
- // src/lib/errors.ts
2
- var APIError = class _APIError extends Error {
3
- constructor(code, message, status, details) {
4
- super(message);
5
- this.code = code;
6
- this.status = status;
7
- this.details = details;
8
- this.name = "APIError";
9
- Object.setPrototypeOf(this, _APIError.prototype);
10
- }
11
- /**
12
- * Create an APIError from a fetch Response
13
- *
14
- * @param response - The Response object from fetch
15
- * @param body - Optional response body text (if already read)
16
- * @returns An APIError with HTTP status information
17
- *
18
- * @example
19
- * ```typescript
20
- * const response = await fetch('/api/things')
21
- * if (!response.ok) {
22
- * throw APIError.fromResponse(response, await response.text())
23
- * }
24
- * ```
25
- */
26
- static fromResponse(response, body) {
27
- return new _APIError(`HTTP_${response.status}`, body || response.statusText, response.status);
28
- }
29
- /**
30
- * Type guard to check if an error is an APIError
31
- */
32
- static isAPIError(error) {
33
- return error instanceof _APIError;
34
- }
35
- };
36
- var NetworkError = class _NetworkError extends Error {
37
- constructor(message, cause) {
38
- super(message);
39
- this.cause = cause;
40
- this.name = "NetworkError";
41
- Object.setPrototypeOf(this, _NetworkError.prototype);
42
- }
43
- };
44
- var ValidationError = class _ValidationError extends Error {
45
- constructor(message, fields) {
46
- super(message);
47
- this.fields = fields;
48
- this.name = "ValidationError";
49
- Object.setPrototypeOf(this, _ValidationError.prototype);
50
- }
51
- };
52
- var SyncError = class _SyncError extends Error {
53
- constructor(message, operation, recoverable) {
54
- super(message);
55
- this.operation = operation;
56
- this.recoverable = recoverable;
57
- this.name = "SyncError";
58
- Object.setPrototypeOf(this, _SyncError.prototype);
59
- }
60
- };
61
- function isAPIError(error) {
62
- return error instanceof APIError;
63
- }
64
- function isNetworkError(error) {
65
- return error instanceof NetworkError;
66
- }
67
- function isValidationError(error) {
68
- return error instanceof ValidationError;
69
- }
70
- function isSyncError(error) {
71
- return error instanceof SyncError;
72
- }
73
-
74
- export { APIError, NetworkError, SyncError, ValidationError, isAPIError, isNetworkError, isSyncError, isValidationError };
75
- //# sourceMappingURL=chunk-JJLAES6W.js.map
76
- //# sourceMappingURL=chunk-JJLAES6W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/errors.ts"],"names":[],"mappings":";AAwCO,IAAM,QAAA,GAAN,MAAM,SAAA,SAAiB,KAAA,CAAM;AAAA,EAClC,WAAA,CACkB,IAAA,EAChB,OAAA,EACgB,MAAA,EACA,OAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AALG,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AAEZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,SAAA,CAAS,SAAS,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,OAAO,YAAA,CAAa,QAAA,EAAoB,IAAA,EAAyB;AAC/D,IAAA,OAAO,IAAI,SAAA,CAAS,CAAA,KAAA,EAAQ,QAAA,CAAS,MAAM,IAAI,IAAA,IAAQ,QAAA,CAAS,UAAA,EAAY,QAAA,CAAS,MAAM,CAAA;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,WAAW,KAAA,EAAmC;AACnD,IAAA,OAAO,KAAA,YAAiB,SAAA;AAAA,EAC1B;AACF;AAWO,IAAM,YAAA,GAAN,MAAM,aAAA,SAAqB,KAAA,CAAM;AAAA,EACtC,WAAA,CACE,SACgB,KAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAFG,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,cAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,aAAA,CAAa,SAAS,CAAA;AAAA,EACpD;AACF;AAgBO,IAAM,eAAA,GAAN,MAAM,gBAAA,SAAwB,KAAA,CAAM;AAAA,EACzC,WAAA,CACE,SACgB,MAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAFG,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,gBAAA,CAAgB,SAAS,CAAA;AAAA,EACvD;AACF;AAkBO,IAAM,SAAA,GAAN,MAAM,UAAA,SAAkB,KAAA,CAAM;AAAA,EACnC,WAAA,CACE,OAAA,EACgB,SAAA,EACA,WAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,UAAA,CAAU,SAAS,CAAA;AAAA,EACjD;AACF;AAKO,SAAS,WAAW,KAAA,EAAmC;AAC5D,EAAA,OAAO,KAAA,YAAiB,QAAA;AAC1B;AAKO,SAAS,eAAe,KAAA,EAAuC;AACpE,EAAA,OAAO,KAAA,YAAiB,YAAA;AAC1B;AAKO,SAAS,kBAAkB,KAAA,EAA0C;AAC1E,EAAA,OAAO,KAAA,YAAiB,eAAA;AAC1B;AAKO,SAAS,YAAY,KAAA,EAAoC;AAC9D,EAAA,OAAO,KAAA,YAAiB,SAAA;AAC1B","file":"chunk-JJLAES6W.js","sourcesContent":["/**\n * Standardized error classes for @mdxui/do\n *\n * These classes provide consistent error handling across the package:\n * - APIError: HTTP/RPC errors from the backend\n * - NetworkError: Connection/fetch failures\n * - ValidationError: Input validation errors\n * - SyncError: Real-time sync errors\n *\n * @example\n * ```typescript\n * import { APIError, NetworkError, isAPIError } from '@mdxui/do'\n *\n * try {\n * const response = await fetch(url)\n * if (!response.ok) {\n * throw APIError.fromResponse(response)\n * }\n * } catch (error) {\n * if (isAPIError(error)) {\n * console.log(`API error ${error.code}: ${error.message}`)\n * if (error.status === 401) {\n * // Handle auth error\n * }\n * } else if (isNetworkError(error)) {\n * console.log('Network unavailable, will retry...')\n * }\n * }\n * ```\n */\n\n/**\n * API error from HTTP/RPC calls\n *\n * Provides structured error information including:\n * - code: Machine-readable error code (e.g., 'HTTP_404', 'VALIDATION_ERROR')\n * - message: Human-readable error message\n * - status: HTTP status code (when applicable)\n * - details: Additional error details from the server\n */\nexport class APIError extends Error {\n constructor(\n public readonly code: string,\n message: string,\n public readonly status?: number,\n public readonly details?: Record<string, unknown>\n ) {\n super(message)\n this.name = 'APIError'\n // Maintain proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, APIError.prototype)\n }\n\n /**\n * Create an APIError from a fetch Response\n *\n * @param response - The Response object from fetch\n * @param body - Optional response body text (if already read)\n * @returns An APIError with HTTP status information\n *\n * @example\n * ```typescript\n * const response = await fetch('/api/things')\n * if (!response.ok) {\n * throw APIError.fromResponse(response, await response.text())\n * }\n * ```\n */\n static fromResponse(response: Response, body?: string): APIError {\n return new APIError(`HTTP_${response.status}`, body || response.statusText, response.status)\n }\n\n /**\n * Type guard to check if an error is an APIError\n */\n static isAPIError(error: unknown): error is APIError {\n return error instanceof APIError\n }\n}\n\n/**\n * Network-level error (connection failures, timeouts, etc.)\n *\n * Use for errors that occur before an HTTP response is received:\n * - DNS resolution failures\n * - Connection refused\n * - Request timeouts\n * - CORS errors\n */\nexport class NetworkError extends Error {\n constructor(\n message: string,\n public readonly cause?: Error\n ) {\n super(message)\n this.name = 'NetworkError'\n Object.setPrototypeOf(this, NetworkError.prototype)\n }\n}\n\n/**\n * Validation error with field-level details\n *\n * Use when input data fails validation checks.\n * The fields property maps field names to arrays of error messages.\n *\n * @example\n * ```typescript\n * throw new ValidationError('Invalid input', {\n * email: ['Invalid email format'],\n * name: ['Name is required', 'Name must be at least 2 characters'],\n * })\n * ```\n */\nexport class ValidationError extends Error {\n constructor(\n message: string,\n public readonly fields: Record<string, string[]>\n ) {\n super(message)\n this.name = 'ValidationError'\n Object.setPrototypeOf(this, ValidationError.prototype)\n }\n}\n\n/**\n * Real-time sync error\n *\n * Use for errors in the sync protocol (WebSocket, EventSource, etc.).\n * The operation property indicates what sync operation failed.\n * The recoverable property indicates whether the client should retry.\n *\n * @example\n * ```typescript\n * // Recoverable connection error - client should retry\n * throw new SyncError('WebSocket disconnected', 'connect', true)\n *\n * // Non-recoverable push error - user intervention needed\n * throw new SyncError('Conflict: record modified by another user', 'push', false)\n * ```\n */\nexport class SyncError extends Error {\n constructor(\n message: string,\n public readonly operation: 'push' | 'pull' | 'connect',\n public readonly recoverable: boolean\n ) {\n super(message)\n this.name = 'SyncError'\n Object.setPrototypeOf(this, SyncError.prototype)\n }\n}\n\n/**\n * Type guard to check if an error is an APIError\n */\nexport function isAPIError(error: unknown): error is APIError {\n return error instanceof APIError\n}\n\n/**\n * Type guard to check if an error is a NetworkError\n */\nexport function isNetworkError(error: unknown): error is NetworkError {\n return error instanceof NetworkError\n}\n\n/**\n * Type guard to check if an error is a ValidationError\n */\nexport function isValidationError(error: unknown): error is ValidationError {\n return error instanceof ValidationError\n}\n\n/**\n * Type guard to check if an error is a SyncError\n */\nexport function isSyncError(error: unknown): error is SyncError {\n return error instanceof SyncError\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/capnweb-client.ts","../src/lib/json-rpc-client.ts","../src/lib/mock-data.ts","../src/lib/mock-client.ts","../src/lib/url-utils.ts","../src/lib/fetch-with-timeout.ts","../src/lib/use-health-check.ts"],"names":["options"],"mappings":"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","file":"chunk-KAZJ43F6.js","sourcesContent":["/**\n * Cap'n Web Client Wrapper for DO Admin API\n *\n * This wraps the raw capnweb HTTP batch client to provide a structured interface\n * matching the DOClient interface (client.Thing.list, client.Schema.discover, etc.)\n *\n * @module\n */\n\nimport { newWebSocketRpcSession } from 'capnweb'\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface ListResponse<T> {\n data?: T[]\n items?: T[]\n result?: T[]\n count?: number\n}\n\n/** SQL execution result */\nexport interface SQLResult {\n rows: Record<string, unknown>[]\n columns: { name: string; type: string }[]\n rowsAffected?: number\n executionTimeMs?: number\n}\n\nexport interface CapnwebClientOptions {\n /** Auth token to include in Authorization header */\n authToken?: string\n}\n\n// =============================================================================\n// Cap'n Web Client Wrapper\n// =============================================================================\n\n/**\n * Create a Cap'n Web client that matches the DOClient interface\n *\n * @param baseUrl - The base URL for the RPC endpoint\n * @param options - Client options including auth token\n */\nexport function createCapnwebClient(baseUrl: string, options: CapnwebClientOptions = {}) {\n // Normalize URL - strip trailing slash and /rpc suffix, then add /rpc\n // Convert http(s) to ws(s) for WebSocket connection\n const httpUrl = `${baseUrl.replace(/\\/$/, '').replace(/\\/rpc$/, '')}/rpc`\n const wsUrl = httpUrl.replace(/^http/, 'ws')\n\n // Build WebSocket URL with auth token as query param if provided\n // WebSocket doesn't support custom headers, so we pass token in URL\n const rpcUrl = options.authToken\n ? `${wsUrl}?token=${encodeURIComponent(options.authToken)}`\n : wsUrl\n\n // Create the capnweb WebSocket session\n const session = newWebSocketRpcSession(rpcUrl) as any\n\n // The capnweb client provides methods directly - we need to call them as:\n // session.methodName(args) where methodName matches server's exposed methods\n //\n // Server API (from GET /rpc):\n // methods: [\"create\", \"get\", \"update\", \"delete\", \"list\", \"search\", \"getRelated\", \"generate\", \"getStats\", \"getSchemas\", \"getSchema\"]\n const rpc = session as unknown as {\n create: (...args: unknown[]) => Promise<unknown>\n get: (...args: unknown[]) => Promise<unknown>\n update: (...args: unknown[]) => Promise<unknown>\n delete: (...args: unknown[]) => Promise<unknown>\n list: (...args: unknown[]) => Promise<unknown>\n search: (...args: unknown[]) => Promise<unknown>\n getRelated: (...args: unknown[]) => Promise<unknown>\n generate: (...args: unknown[]) => Promise<unknown>\n getStats: (...args: unknown[]) => Promise<unknown>\n getSchemas: (...args: unknown[]) => Promise<unknown>\n getSchema: (...args: unknown[]) => Promise<unknown>\n }\n\n // Return a client object that matches the DOClient interface\n return {\n /**\n * Namespace operations\n */\n Namespace: {\n async list(_params?: { includeSystem?: boolean }) {\n // Server doesn't have explicit namespaces, return default\n return [{ id: 'default', name: 'default' }]\n },\n },\n\n /**\n * Schema operations\n */\n Schema: {\n async discover(_params?: { ns?: string }) {\n try {\n const schemas = await rpc.getSchemas() as string[] | undefined\n return {\n namespaces: ['default'],\n types: schemas ?? [],\n schemas: schemas ?? [],\n }\n } catch (error) {\n console.error('[@mdxui/do] Failed to get schemas:', error)\n return { namespaces: ['default'], types: [], schemas: [] }\n }\n },\n\n async get(params: { ns?: string; type: string }) {\n try {\n const result = await rpc.getSchema(params.type)\n return result\n } catch {\n return null\n }\n },\n },\n\n /**\n * Thing operations\n */\n Thing: {\n async types(params: { ns?: string; includeSystem?: boolean }) {\n try {\n const schemas = await rpc.getSchemas() as string[] | undefined\n return (schemas ?? []).map((name: string) => ({\n name,\n ns: params.ns || 'default',\n }))\n } catch (error) {\n console.error('[@mdxui/do] Failed to get types:', error)\n return []\n }\n },\n\n async list(params: { ns?: string; type?: string; limit?: number; offset?: number }) {\n try {\n const options: Record<string, unknown> = {}\n if (params.type) options.type = params.type\n if (params.limit !== undefined) options.limit = params.limit\n if (params.offset !== undefined) options.offset = params.offset\n\n const result = await rpc.list(options) as ListResponse<unknown> | unknown[] | undefined\n if (Array.isArray(result)) {\n return { data: result, total: result.length }\n }\n if (result) {\n const items = result.data || result.items || result.result || []\n return { data: items, total: result.count ?? items.length }\n }\n return { data: [], total: 0 }\n } catch (error) {\n console.error('[@mdxui/do] Failed to list things:', error)\n return { data: [], total: 0 }\n }\n },\n\n async get(params: { ns?: string; type: string; id: string }) {\n try {\n const result = await rpc.get({ type: params.type, id: params.id })\n return result\n } catch {\n return null\n }\n },\n\n async create(params: { ns?: string; type: string; data: unknown }) {\n const result = await rpc.create({ type: params.type, data: params.data })\n return result\n },\n\n async update(params: { ns?: string; type: string; id: string; data: unknown }) {\n const result = await rpc.update({ type: params.type, id: params.id, data: params.data })\n return result\n },\n\n async delete(params: { ns?: string; type: string; id: string; hard?: boolean }) {\n await rpc.delete({ type: params.type, id: params.id })\n return { success: true }\n },\n\n async versions(_params: { ns?: string; type: string; id: string }) {\n return []\n },\n\n async stats(_params: { ns?: string; type?: string }) {\n try {\n const options: Record<string, unknown> = {}\n if (_params.type) options.type = _params.type\n const result = await rpc.getStats(options) as { total?: number; byType?: Record<string, number> } | undefined\n return {\n total: result?.total ?? 0,\n byType: result?.byType ?? {},\n }\n } catch (error) {\n console.error('[@mdxui/do] Failed to get stats:', error)\n return { total: 0, byType: {} }\n }\n },\n },\n\n /**\n * SQL operations (not supported by capnweb servers)\n */\n SQL: {\n async execute(_params: { query: string; params?: unknown[] }): Promise<SQLResult> {\n throw new Error('SQL execution is not supported by this server')\n },\n },\n\n // Required for interface compatibility\n dup: () => createCapnwebClient(baseUrl, options),\n onRpcBroken: (callback: (error: unknown) => void) => {\n if ('onRpcBroken' in session && typeof session.onRpcBroken === 'function') {\n (session as { onRpcBroken: (cb: (error: unknown) => void) => void }).onRpcBroken(callback)\n }\n },\n [Symbol.dispose]: () => {\n if (Symbol.dispose in session) {\n (session as { [Symbol.dispose]: () => void })[Symbol.dispose]()\n }\n },\n }\n}\n\n/**\n * Create a capnweb client context - factory function matching DOClient interface\n */\nexport function $CapnwebContext(url: string, options?: CapnwebClientOptions) {\n return createCapnwebClient(url, options)\n}\n\n// Keep these exports for backward compatibility\nexport const $CapnwebHttpContext = $CapnwebContext\nexport const $CapnwebWsContext = $CapnwebContext\n\n\n// https://github.com/dot-do/do/blob/main/types/collections.ts\n// connect locally with the DO('http://localhost:3000')\n","/**\n * JSON-RPC Client for DO Admin API\n *\n * This client wraps the JSON-RPC API exposed by DO admin servers,\n * translating the standard Thing/Schema interface to the server's\n * actual RPC methods.\n *\n * Auto-discovers available types and endpoints from the server.\n *\n * @module\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface RpcResponse<T = unknown> {\n result?: T\n error?: {\n code: string\n message: string\n data?: unknown\n }\n}\n\ninterface ListResponse<T> {\n data?: T[]\n items?: T[]\n result?: T[]\n count?: number\n}\n\n/** SQL execution result */\nexport interface SQLResult {\n rows: Record<string, unknown>[]\n columns: { name: string; type: string }[]\n rowsAffected?: number\n executionTimeMs?: number\n}\n\n/** Cache for discovered endpoints that exist */\nconst endpointCache = new Map<string, Set<string>>()\n\n// =============================================================================\n// JSON-RPC Client Implementation\n// =============================================================================\n\nexport interface JsonRpcClientOptions {\n /** Auth token to include in Authorization header */\n authToken?: string\n}\n\n/**\n * Create a JSON-RPC compatible client that matches the DOClient interface\n */\nexport function createJsonRpcClient(baseUrl: string, options: JsonRpcClientOptions = {}) {\n // Normalize URL: strip trailing slash and any existing /rpc suffix\n // This prevents double /rpc when the baseUrl already ends with /rpc\n const rpcUrl = baseUrl.replace(/\\/$/, '').replace(/\\/rpc$/, '')\n\n /**\n * Get auth headers if token is available\n */\n function getAuthHeaders(): Record<string, string> {\n if (options.authToken) {\n return { Authorization: `Bearer ${options.authToken}` }\n }\n return {}\n }\n\n /**\n * Make a JSON-RPC call\n */\n async function rpcCall<T>(method: string, args: unknown[] = []): Promise<T> {\n const response = await fetch(`${rpcUrl}/rpc`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...getAuthHeaders(),\n },\n body: JSON.stringify({ method, args }),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n const data: RpcResponse<T> = await response.json()\n\n if (data.error) {\n throw new Error(data.error.message || data.error.code)\n }\n\n return data.result as T\n }\n\n /**\n * Make a REST call\n */\n async function restCall<T>(path: string, init?: RequestInit): Promise<T> {\n const response = await fetch(`${rpcUrl}${path}`, {\n ...init,\n headers: {\n 'Content-Type': 'application/json',\n ...getAuthHeaders(),\n ...init?.headers,\n },\n })\n\n if (!response.ok) {\n // Return empty data structure for 404s on GET requests (endpoint doesn't exist)\n // POST/PUT/DELETE 404s should still throw\n const method = init?.method?.toUpperCase() ?? 'GET'\n if (response.status === 404 && method === 'GET') {\n return { data: [], count: 0 } as T\n }\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n return response.json()\n }\n\n // Return a client object that matches the DOClient interface\n return {\n /**\n * Namespace operations\n */\n Namespace: {\n async list(_params?: { includeSystem?: boolean }) {\n // The server doesn't have explicit namespaces, return default\n return [{ id: 'default', name: 'default' }]\n },\n },\n\n /**\n * Schema operations\n */\n Schema: {\n async discover(_params?: { ns?: string }) {\n // Get schemas from RPC\n const schemas = await rpcCall<string[]>('schemas.list', [])\n return {\n namespaces: ['default'],\n types: schemas,\n schemas,\n }\n },\n\n async get(params: { ns?: string; type: string }) {\n const result = await rpcCall<unknown>('schemas.get', [params.type])\n return result\n },\n },\n\n /**\n * Thing operations (maps to REST endpoints)\n */\n Thing: {\n async types(params: { ns?: string; includeSystem?: boolean }) {\n // Discover types from schema and probe which have REST endpoints\n try {\n // Get all schema types from RPC\n const schemas = await rpcCall<string[]>('schemas.list', [])\n\n // Check cache first\n let validEndpoints = endpointCache.get(rpcUrl)\n\n if (!validEndpoints) {\n // Probe each type's endpoint to see if it exists\n validEndpoints = new Set<string>()\n\n const probeResults = await Promise.all(\n schemas.map(async (type) => {\n const endpoint = getEndpointForType(type)\n try {\n const response = await fetch(`${rpcUrl}${endpoint}`, { method: 'HEAD' })\n return { type, exists: response.ok }\n } catch {\n // Network error or CORS - try GET with limit=0\n try {\n const response = await fetch(`${rpcUrl}${endpoint}?limit=0`)\n return { type, exists: response.ok }\n } catch {\n return { type, exists: false }\n }\n }\n })\n )\n\n for (const { type, exists } of probeResults) {\n if (exists) {\n validEndpoints.add(type)\n }\n }\n\n // Cache the results\n endpointCache.set(rpcUrl, validEndpoints)\n }\n\n return Array.from(validEndpoints).map((name) => ({\n name,\n ns: params.ns || 'default',\n }))\n } catch {\n // Fallback: return common types if schema discovery fails\n return ['Noun', 'Verb', 'Action', 'Function'].map((name) => ({\n name,\n ns: params.ns || 'default',\n }))\n }\n },\n\n async list(params: { ns?: string; type?: string; limit?: number; offset?: number }) {\n // Map type to endpoint (lowercase + plural heuristic)\n const endpoint = getEndpointForType(params.type || 'Thing')\n const response = await restCall<ListResponse<unknown>>(endpoint)\n\n // Normalize response\n const items = response.data || response.items || response.result || []\n return {\n data: items,\n total: response.count ?? items.length,\n }\n },\n\n async get(params: { ns?: string; type: string; id: string }) {\n const endpoint = getEndpointForType(params.type)\n const response = await restCall<{ data: unknown }>(`${endpoint}/${params.id}`)\n return response.data\n },\n\n async create(params: { ns?: string; type: string; data: unknown }) {\n const endpoint = getEndpointForType(params.type)\n const response = await restCall<{ data: unknown }>(endpoint, {\n method: 'POST',\n body: JSON.stringify(params.data),\n })\n return response.data\n },\n\n async update(params: { ns?: string; type: string; id: string; data: unknown }) {\n const endpoint = getEndpointForType(params.type)\n const response = await restCall<{ data: unknown }>(`${endpoint}/${params.id}`, {\n method: 'PUT',\n body: JSON.stringify(params.data),\n })\n return response.data\n },\n\n async delete(params: { ns?: string; type: string; id: string; hard?: boolean }) {\n const endpoint = getEndpointForType(params.type)\n await restCall(`${endpoint}/${params.id}`, { method: 'DELETE' })\n return { success: true }\n },\n\n async versions(_params: { ns?: string; type: string; id: string }) {\n // Versions not supported by this server\n return []\n },\n\n async stats(_params: { ns?: string; type?: string }) {\n // Get valid endpoints from cache or discover them\n let validEndpoints = endpointCache.get(rpcUrl)\n\n if (!validEndpoints) {\n // Trigger discovery by calling types()\n await this.types({ ns: _params.ns })\n validEndpoints = endpointCache.get(rpcUrl) || new Set()\n }\n\n // Get counts from discovered endpoints\n const types = Array.from(validEndpoints)\n const results = await Promise.all(\n types.map(async (type) => {\n const endpoint = getEndpointForType(type)\n const response = await restCall<ListResponse<unknown>>(endpoint).catch(() => ({ count: 0 }))\n return { type, count: response.count || 0 }\n })\n )\n\n const byType: Record<string, number> = {}\n let total = 0\n for (const { type, count } of results) {\n byType[type] = count\n total += count\n }\n\n return { total, byType }\n },\n },\n\n /**\n * SQL operations\n */\n SQL: {\n async execute(params: { query: string; params?: unknown[] }): Promise<SQLResult> {\n const startTime = Date.now()\n\n // Try RPC method first\n try {\n const result = await rpcCall<{\n rows: Record<string, unknown>[]\n columns: { name: string; type: string }[]\n rowsAffected?: number\n executionTimeMs?: number\n }>('sql.execute', [params.query, params.params || []])\n\n return {\n rows: result.rows ?? [],\n columns: result.columns ?? [],\n rowsAffected: result.rowsAffected,\n executionTimeMs: result.executionTimeMs ?? (Date.now() - startTime),\n }\n } catch (rpcError) {\n // Check if this is a \"not supported\" error\n const errorMessage = rpcError instanceof Error ? rpcError.message : String(rpcError)\n const isNotSupported =\n errorMessage.includes('not found') ||\n errorMessage.includes('not supported') ||\n errorMessage.includes('unknown method')\n\n // Fallback to REST endpoint if exists\n try {\n const response = await restCall<{\n rows: Record<string, unknown>[]\n columns: { name: string; type: string }[]\n rowsAffected?: number\n }>('/sql', {\n method: 'POST',\n body: JSON.stringify({ query: params.query, params: params.params }),\n })\n\n return {\n rows: response.rows ?? [],\n columns: response.columns ?? [],\n rowsAffected: response.rowsAffected,\n executionTimeMs: Date.now() - startTime,\n }\n } catch (restError) {\n // If both methods fail and RPC indicated not supported, throw clearer error\n if (isNotSupported) {\n throw new Error(\n 'SQL execution is not supported by this server. The server does not expose sql.execute RPC method or /sql REST endpoint.'\n )\n }\n throw restError\n }\n }\n },\n },\n\n // Required for interface compatibility\n dup: () => createJsonRpcClient(baseUrl, options),\n onRpcBroken: (_callback: (error: unknown) => void) => {},\n [Symbol.dispose]: () => {},\n }\n}\n\n/**\n * Map a type name to its REST endpoint\n *\n * Supports two patterns:\n * 1. Standard DO types use lowercase plural (e.g., Noun -> /nouns)\n * 2. Custom collection types use the type name directly (e.g., Author -> /Author)\n */\nfunction getEndpointForType(type: string): string {\n // Standard DO types use lowercase plural\n const typeMap: Record<string, string> = {\n Noun: '/nouns',\n Verb: '/verbs',\n Action: '/actions',\n Function: '/functions',\n Event: '/events',\n Relationship: '/relationships',\n Thing: '/things',\n Workflow: '/workflows',\n }\n\n // If it's a known DO type, use the mapped endpoint\n // Otherwise, use the type name directly (for custom collections like Author, Post, etc.)\n return typeMap[type] || `/${type}`\n}\n\n/**\n * Create a client context - factory function matching $Context interface\n */\nexport function $JsonRpcContext(url: string, options?: JsonRpcClientOptions) {\n return createJsonRpcClient(url, options)\n}\n","/**\n * Mock Data Generators for DO Admin\n *\n * Generates realistic mock data for Things, Schemas, and other entities.\n * Used by the mock client for demo/development mode.\n *\n * @module\n */\n\nimport type { Thing, SemanticType, SemanticProperty } from '../types'\n\n// =============================================================================\n// ID Generation\n// =============================================================================\n\nlet idCounter = 0\n\nfunction generateId(prefix = 'mock'): string {\n return `${prefix}_${Date.now().toString(36)}_${(++idCounter).toString(36)}`\n}\n\n// =============================================================================\n// Mock Types / Schemas\n// =============================================================================\n\nconst mockProperties: Record<string, SemanticProperty[]> = {\n User: [\n { name: 'email', label: 'Email', description: 'Email address', rangeIncludes: ['string'], domainIncludes: ['User'], required: true, isArray: false },\n { name: 'role', label: 'Role', description: 'User role', rangeIncludes: ['string'], domainIncludes: ['User'], required: false, isArray: false },\n { name: 'avatar', label: 'Avatar', description: 'Profile picture URL', rangeIncludes: ['string'], domainIncludes: ['User'], required: false, isArray: false },\n { name: 'status', label: 'Status', description: 'Account status', rangeIncludes: ['string'], domainIncludes: ['User'], required: false, isArray: false },\n ],\n Project: [\n { name: 'description', label: 'Description', description: 'Project description', rangeIncludes: ['string'], domainIncludes: ['Project'], required: false, isArray: false },\n { name: 'status', label: 'Status', description: 'Project status', rangeIncludes: ['string'], domainIncludes: ['Project'], required: true, isArray: false },\n { name: 'owner', label: 'Owner', description: 'Project owner', rangeIncludes: ['User'], domainIncludes: ['Project'], required: true, isArray: false },\n { name: 'tags', label: 'Tags', description: 'Project tags', rangeIncludes: ['string'], domainIncludes: ['Project'], required: false, isArray: true },\n ],\n Task: [\n { name: 'description', label: 'Description', description: 'Task description', rangeIncludes: ['string'], domainIncludes: ['Task'], required: false, isArray: false },\n { name: 'status', label: 'Status', description: 'Task status', rangeIncludes: ['string'], domainIncludes: ['Task'], required: true, isArray: false },\n { name: 'priority', label: 'Priority', description: 'Task priority', rangeIncludes: ['string'], domainIncludes: ['Task'], required: false, isArray: false },\n { name: 'assignee', label: 'Assignee', description: 'Assigned user', rangeIncludes: ['User'], domainIncludes: ['Task'], required: false, isArray: false },\n { name: 'project', label: 'Project', description: 'Parent project', rangeIncludes: ['Project'], domainIncludes: ['Task'], required: false, isArray: false },\n { name: 'dueDate', label: 'Due Date', description: 'Task due date', rangeIncludes: ['date'], domainIncludes: ['Task'], required: false, isArray: false },\n ],\n Document: [\n { name: 'content', label: 'Content', description: 'Document content', rangeIncludes: ['string'], domainIncludes: ['Document'], required: true, isArray: false },\n { name: 'format', label: 'Format', description: 'Content format', rangeIncludes: ['string'], domainIncludes: ['Document'], required: false, isArray: false },\n { name: 'author', label: 'Author', description: 'Document author', rangeIncludes: ['User'], domainIncludes: ['Document'], required: false, isArray: false },\n { name: 'tags', label: 'Tags', description: 'Document tags', rangeIncludes: ['string'], domainIncludes: ['Document'], required: false, isArray: true },\n ],\n Function: [\n { name: 'description', label: 'Description', description: 'Function description', rangeIncludes: ['string'], domainIncludes: ['Function'], required: false, isArray: false },\n { name: 'code', label: 'Code', description: 'Function code', rangeIncludes: ['string'], domainIncludes: ['Function'], required: true, isArray: false },\n { name: 'runtime', label: 'Runtime', description: 'Execution runtime', rangeIncludes: ['string'], domainIncludes: ['Function'], required: true, isArray: false },\n { name: 'triggers', label: 'Triggers', description: 'Event triggers', rangeIncludes: ['string'], domainIncludes: ['Function'], required: false, isArray: true },\n ],\n Workflow: [\n { name: 'description', label: 'Description', description: 'Workflow description', rangeIncludes: ['string'], domainIncludes: ['Workflow'], required: false, isArray: false },\n { name: 'steps', label: 'Steps', description: 'Workflow steps', rangeIncludes: ['object'], domainIncludes: ['Workflow'], required: true, isArray: true },\n { name: 'status', label: 'Status', description: 'Workflow status', rangeIncludes: ['string'], domainIncludes: ['Workflow'], required: true, isArray: false },\n ],\n Agent: [\n { name: 'description', label: 'Description', description: 'Agent description', rangeIncludes: ['string'], domainIncludes: ['Agent'], required: false, isArray: false },\n { name: 'model', label: 'Model', description: 'AI model', rangeIncludes: ['string'], domainIncludes: ['Agent'], required: true, isArray: false },\n { name: 'systemPrompt', label: 'System Prompt', description: 'Agent system prompt', rangeIncludes: ['string'], domainIncludes: ['Agent'], required: false, isArray: false },\n { name: 'tools', label: 'Tools', description: 'Available tools', rangeIncludes: ['string'], domainIncludes: ['Agent'], required: false, isArray: true },\n ],\n}\n\nexport const MOCK_TYPES = Object.keys(mockProperties)\n\nexport function generateMockSchema(typeName: string): SemanticType {\n const properties = mockProperties[typeName] || []\n return {\n namespace: 'default',\n name: typeName,\n id: `default/${typeName}`,\n label: typeName,\n description: `${typeName} entity type`,\n parentTypes: ['Thing'],\n properties,\n subtypes: [],\n }\n}\n\n// =============================================================================\n// Mock Thing Generators\n// =============================================================================\n\nconst firstNames = ['Alice', 'Bob', 'Charlie', 'Diana', 'Eve', 'Frank', 'Grace', 'Henry', 'Iris', 'Jack']\nconst lastNames = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Garcia', 'Miller', 'Davis', 'Rodriguez', 'Martinez']\nconst projectNames = ['Apollo', 'Mercury', 'Gemini', 'Voyager', 'Pioneer', 'Horizon', 'Nebula', 'Cosmos', 'Atlas', 'Phoenix']\nconst taskPrefixes = ['Implement', 'Fix', 'Update', 'Review', 'Design', 'Test', 'Deploy', 'Document', 'Refactor', 'Optimize']\nconst statuses = ['active', 'pending', 'completed', 'archived']\nconst priorities = ['low', 'medium', 'high', 'critical']\nconst roles = ['admin', 'editor', 'viewer', 'developer']\n\nfunction randomItem<T>(arr: T[]): T {\n return arr[Math.floor(Math.random() * arr.length)]\n}\n\nfunction randomDate(daysBack = 30): Date {\n const date = new Date()\n date.setDate(date.getDate() - Math.floor(Math.random() * daysBack))\n return date\n}\n\nfunction generateMockUser(id?: string): Thing {\n const firstName = randomItem(firstNames)\n const lastName = randomItem(lastNames)\n const name = `${firstName} ${lastName}`\n const now = new Date()\n const created = randomDate(60)\n\n return {\n ns: 'default',\n type: 'User',\n id: id || generateId('user'),\n ts: now,\n name,\n createdAt: created,\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': 'User',\n email: `${firstName.toLowerCase()}.${lastName.toLowerCase()}@example.com`,\n role: randomItem(roles),\n avatar: `https://api.dicebear.com/7.x/avataaars/svg?seed=${firstName}`,\n status: randomItem(['active', 'inactive']),\n },\n }\n}\n\nfunction generateMockProject(id?: string): Thing {\n const name = `Project ${randomItem(projectNames)}`\n const now = new Date()\n const created = randomDate(90)\n\n return {\n ns: 'default',\n type: 'Project',\n id: id || generateId('proj'),\n ts: now,\n name,\n createdAt: created,\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': 'Project',\n description: `A ${randomItem(['web', 'mobile', 'API', 'data', 'ML'])} project focused on ${randomItem(['performance', 'scalability', 'user experience', 'automation', 'analytics'])}`,\n status: randomItem(statuses),\n owner: `user_${Math.floor(Math.random() * 10)}`,\n tags: [randomItem(['frontend', 'backend', 'fullstack']), randomItem(['react', 'node', 'python', 'go'])],\n },\n }\n}\n\nfunction generateMockTask(id?: string): Thing {\n const action = randomItem(taskPrefixes)\n const target = randomItem(['authentication', 'dashboard', 'API endpoint', 'database schema', 'user flow', 'notification system', 'search feature', 'export functionality'])\n const name = `${action} ${target}`\n const now = new Date()\n const created = randomDate(14)\n\n return {\n ns: 'default',\n type: 'Task',\n id: id || generateId('task'),\n ts: now,\n name,\n createdAt: created,\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': 'Task',\n description: `${action} the ${target} to improve ${randomItem(['performance', 'reliability', 'usability', 'security'])}`,\n status: randomItem(['todo', 'in_progress', 'review', 'done']),\n priority: randomItem(priorities),\n assignee: `user_${Math.floor(Math.random() * 10)}`,\n dueDate: new Date(Date.now() + Math.random() * 14 * 24 * 60 * 60 * 1000).toISOString(),\n },\n }\n}\n\nfunction generateMockDocument(id?: string): Thing {\n const docTypes = ['README', 'API Documentation', 'Architecture Guide', 'User Manual', 'Release Notes', 'Meeting Notes', 'Technical Spec', 'Design Document']\n const name = randomItem(docTypes)\n const now = new Date()\n const created = randomDate(30)\n\n return {\n ns: 'default',\n type: 'Document',\n id: id || generateId('doc'),\n ts: now,\n name,\n createdAt: created,\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': 'Document',\n content: `# ${name}\\n\\nThis is a sample document with mock content.\\n\\n## Overview\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit.`,\n format: 'markdown',\n author: `user_${Math.floor(Math.random() * 10)}`,\n tags: [randomItem(['documentation', 'guide', 'reference']), randomItem(['v1', 'v2', 'draft'])],\n },\n }\n}\n\nfunction generateMockFunction(id?: string): Thing {\n const funcNames = ['processOrder', 'sendNotification', 'validateInput', 'transformData', 'generateReport', 'syncData', 'handleWebhook', 'calculateMetrics']\n const name = randomItem(funcNames)\n const now = new Date()\n const created = randomDate(45)\n\n return {\n ns: 'default',\n type: 'Function',\n id: id || generateId('fn'),\n ts: now,\n name,\n createdAt: created,\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': 'Function',\n description: `Handles ${name.replace(/([A-Z])/g, ' $1').toLowerCase().trim()} operations`,\n code: `export default async function ${name}(ctx, args) {\\n // Implementation\\n return { success: true }\\n}`,\n runtime: randomItem(['typescript', 'javascript', 'python']),\n triggers: [randomItem(['http', 'schedule', 'event', 'queue'])],\n },\n }\n}\n\nfunction generateMockWorkflow(id?: string): Thing {\n const workflowNames = ['Order Processing', 'User Onboarding', 'Content Approval', 'Data Pipeline', 'Release Deploy', 'Support Ticket']\n const name = randomItem(workflowNames)\n const now = new Date()\n const created = randomDate(60)\n\n return {\n ns: 'default',\n type: 'Workflow',\n id: id || generateId('wf'),\n ts: now,\n name,\n createdAt: created,\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': 'Workflow',\n description: `Automated workflow for ${name.toLowerCase()}`,\n steps: [\n { id: 'step1', name: 'Initialize', type: 'function' },\n { id: 'step2', name: 'Process', type: 'function' },\n { id: 'step3', name: 'Notify', type: 'notification' },\n ],\n status: randomItem(['active', 'paused', 'draft']),\n },\n }\n}\n\nfunction generateMockAgent(id?: string): Thing {\n const agentNames = ['Code Assistant', 'Data Analyst', 'Support Bot', 'Content Writer', 'Research Agent', 'QA Tester']\n const name = randomItem(agentNames)\n const now = new Date()\n const created = randomDate(30)\n\n return {\n ns: 'default',\n type: 'Agent',\n id: id || generateId('agent'),\n ts: now,\n name,\n createdAt: created,\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': 'Agent',\n description: `AI agent specialized in ${name.toLowerCase()} tasks`,\n model: randomItem(['claude-3-opus', 'claude-3-sonnet', 'gpt-4', 'gpt-4-turbo']),\n systemPrompt: `You are a helpful ${name.toLowerCase()} assistant.`,\n tools: [randomItem(['search', 'code', 'browse', 'analyze'])],\n },\n }\n}\n\n// =============================================================================\n// Unified Generator\n// =============================================================================\n\nconst generators: Record<string, (id?: string) => Thing> = {\n User: generateMockUser,\n Project: generateMockProject,\n Task: generateMockTask,\n Document: generateMockDocument,\n Function: generateMockFunction,\n Workflow: generateMockWorkflow,\n Agent: generateMockAgent,\n}\n\nexport function generateMockThing(type: string, id?: string): Thing {\n const generator = generators[type]\n if (generator) {\n return generator(id)\n }\n\n // Generic fallback for unknown types\n const now = new Date()\n return {\n ns: 'default',\n type,\n id: id || generateId(type.toLowerCase()),\n ts: now,\n name: `${type} ${Math.floor(Math.random() * 1000)}`,\n createdAt: randomDate(30),\n updatedAt: now,\n createdBy: 'system',\n data: {\n '@type': type,\n },\n }\n}\n\nexport function generateMockThings(type: string, count: number): Thing[] {\n return Array.from({ length: count }, () => generateMockThing(type))\n}\n\n/**\n * Generate initial mock data set with various types\n */\nexport function generateInitialMockData(): Thing[] {\n return [\n ...generateMockThings('User', 8),\n ...generateMockThings('Project', 5),\n ...generateMockThings('Task', 15),\n ...generateMockThings('Document', 6),\n ...generateMockThings('Function', 4),\n ...generateMockThings('Workflow', 3),\n ...generateMockThings('Agent', 3),\n ]\n}\n","/**\n * Mock Client for DO Admin\n *\n * Provides a mock implementation of the DOClient interface for demo/development mode.\n * All data is stored in memory and persists for the session.\n *\n * @module\n */\n\nimport type { Thing } from '../types'\nimport {\n MOCK_TYPES,\n generateMockSchema,\n generateMockThing,\n generateInitialMockData,\n} from './mock-data'\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface MockClientOptions {\n /** Initial data to populate the store */\n initialData?: Thing[]\n /** Simulated network delay in ms (default: 100) */\n delay?: number\n /** Whether to log operations (default: false) */\n verbose?: boolean\n}\n\ninterface MockStore {\n things: Map<string, Thing>\n deletedThings: Set<string>\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\nfunction thingKey(ns: string, type: string, id: string): string {\n return `${ns}:${type}:${id}`\n}\n\nasync function delay(ms: number): Promise<void> {\n if (ms > 0) {\n await new Promise((resolve) => setTimeout(resolve, ms))\n }\n}\n\n// =============================================================================\n// Mock Client Implementation\n// =============================================================================\n\n/**\n * Create a mock client that matches the DOClient interface\n */\nexport function createMockClient(options: MockClientOptions = {}) {\n const { delay: delayMs = 100, verbose = false, initialData } = options\n\n // Initialize store\n const store: MockStore = {\n things: new Map(),\n deletedThings: new Set(),\n }\n\n // Populate with initial data\n const data = initialData ?? generateInitialMockData()\n for (const thing of data) {\n const key = thingKey(thing.ns, thing.type, thing.id)\n store.things.set(key, thing)\n }\n\n if (verbose) {\n console.log(`[MockClient] Initialized with ${store.things.size} things`)\n }\n\n // Helper to log operations\n function log(operation: string, ...args: unknown[]) {\n if (verbose) {\n console.log(`[MockClient] ${operation}`, ...args)\n }\n }\n\n return {\n /**\n * Namespace operations\n */\n Namespace: {\n async list(_params?: { includeSystem?: boolean }) {\n await delay(delayMs)\n log('Namespace.list')\n\n // Get unique namespaces from things\n const namespaces = new Set<string>()\n for (const thing of store.things.values()) {\n namespaces.add(thing.ns)\n }\n\n // Always include default\n namespaces.add('default')\n\n return Array.from(namespaces).map((ns) => ({\n id: ns,\n name: ns,\n }))\n },\n },\n\n /**\n * Schema operations\n */\n Schema: {\n async discover(_params?: { ns?: string }) {\n await delay(delayMs)\n log('Schema.discover')\n\n // Get unique types from things\n const types = new Set<string>()\n for (const thing of store.things.values()) {\n types.add(thing.type)\n }\n\n // Add standard mock types\n for (const type of MOCK_TYPES) {\n types.add(type)\n }\n\n const typeList = Array.from(types).sort()\n\n return {\n namespaces: ['default'],\n types: typeList,\n schemas: typeList,\n }\n },\n\n async get(params: { ns?: string; type: string }) {\n await delay(delayMs)\n log('Schema.get', params.type)\n\n return generateMockSchema(params.type)\n },\n },\n\n /**\n * Thing operations\n */\n Thing: {\n async types(params: { ns?: string; includeSystem?: boolean }) {\n await delay(delayMs)\n log('Thing.types')\n\n // Get unique types from things in namespace\n const types = new Set<string>()\n for (const thing of store.things.values()) {\n if (!params.ns || thing.ns === params.ns) {\n types.add(thing.type)\n }\n }\n\n // Add standard mock types\n for (const type of MOCK_TYPES) {\n types.add(type)\n }\n\n return Array.from(types)\n .sort()\n .map((name) => ({\n name,\n ns: params.ns || 'default',\n }))\n },\n\n async list(params: { ns?: string; type?: string; limit?: number; offset?: number }) {\n await delay(delayMs)\n log('Thing.list', params)\n\n let things = Array.from(store.things.values())\n\n // Filter by namespace\n if (params.ns) {\n things = things.filter((t) => t.ns === params.ns)\n }\n\n // Filter by type\n if (params.type) {\n things = things.filter((t) => t.type === params.type)\n }\n\n // Filter out deleted\n things = things.filter((t) => {\n const key = thingKey(t.ns, t.type, t.id)\n return !store.deletedThings.has(key)\n })\n\n // Sort by updatedAt descending\n things.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime())\n\n const total = things.length\n\n // Apply pagination\n const offset = params.offset || 0\n const limit = params.limit || 50\n things = things.slice(offset, offset + limit)\n\n return { data: things, total }\n },\n\n async get(params: { ns?: string; type: string; id: string }) {\n await delay(delayMs)\n log('Thing.get', params)\n\n const key = thingKey(params.ns || 'default', params.type, params.id)\n\n if (store.deletedThings.has(key)) {\n return null\n }\n\n return store.things.get(key) || null\n },\n\n async create(params: { ns?: string; type: string; name?: string; data: unknown }) {\n await delay(delayMs)\n log('Thing.create', params)\n\n const ns = params.ns || 'default'\n const now = new Date()\n\n // Generate a new thing with provided data\n const baseThing = generateMockThing(params.type)\n const thing: Thing = {\n ...baseThing,\n ns,\n id: baseThing.id,\n name: params.name || baseThing.name,\n createdAt: now,\n updatedAt: now,\n ts: now,\n data: {\n '@type': params.type,\n ...(params.data as Record<string, unknown>),\n },\n }\n\n const key = thingKey(ns, params.type, thing.id)\n store.things.set(key, thing)\n\n return thing\n },\n\n async update(params: { ns?: string; type: string; id: string; data: unknown }) {\n await delay(delayMs)\n log('Thing.update', params)\n\n const ns = params.ns || 'default'\n const key = thingKey(ns, params.type, params.id)\n\n const existing = store.things.get(key)\n if (!existing || store.deletedThings.has(key)) {\n throw new Error(`Thing not found: ${key}`)\n }\n\n const now = new Date()\n const updated: Thing = {\n ...existing,\n updatedAt: now,\n ts: now,\n data: {\n ...existing.data,\n ...(params.data as Record<string, unknown>),\n },\n }\n\n store.things.set(key, updated)\n\n return updated\n },\n\n async delete(params: { ns?: string; type: string; id: string; hard?: boolean }) {\n await delay(delayMs)\n log('Thing.delete', params)\n\n const ns = params.ns || 'default'\n const key = thingKey(ns, params.type, params.id)\n\n if (params.hard) {\n store.things.delete(key)\n } else {\n store.deletedThings.add(key)\n }\n\n return { success: true }\n },\n\n async versions(_params: { ns?: string; type: string; id: string }) {\n await delay(delayMs)\n log('Thing.versions', _params)\n\n // Mock: return empty versions (version history not implemented in mock)\n return []\n },\n\n async stats(_params: { ns?: string; type?: string }) {\n await delay(delayMs)\n log('Thing.stats', _params)\n\n const byType: Record<string, number> = {}\n let total = 0\n\n for (const thing of store.things.values()) {\n const key = thingKey(thing.ns, thing.type, thing.id)\n if (store.deletedThings.has(key)) continue\n if (_params.ns && thing.ns !== _params.ns) continue\n if (_params.type && thing.type !== _params.type) continue\n\n byType[thing.type] = (byType[thing.type] || 0) + 1\n total++\n }\n\n return { total, byType }\n },\n },\n\n /**\n * SQL operations (mock implementation)\n */\n SQL: {\n async execute(params: { query: string; params?: unknown[] }) {\n await delay(delayMs)\n log('SQL.execute', params.query)\n\n // Simple mock SQL that returns things as rows\n const query = params.query.toLowerCase().trim()\n\n if (query.startsWith('select')) {\n // Parse simple SELECT * FROM <type> queries\n const match = query.match(/select\\s+\\*\\s+from\\s+(\\w+)/i)\n if (match) {\n const type = match[1]\n const things = Array.from(store.things.values()).filter(\n (t) => t.type.toLowerCase() === type.toLowerCase()\n )\n\n const rows = things.map((t) => ({\n id: t.id,\n ns: t.ns,\n type: t.type,\n name: t.name,\n createdAt: t.createdAt,\n updatedAt: t.updatedAt,\n data: JSON.stringify(t.data),\n }))\n\n return {\n rows,\n columns: [\n { name: 'id', type: 'string' },\n { name: 'ns', type: 'string' },\n { name: 'type', type: 'string' },\n { name: 'name', type: 'string' },\n { name: 'createdAt', type: 'datetime' },\n { name: 'updatedAt', type: 'datetime' },\n { name: 'data', type: 'json' },\n ],\n rowsAffected: rows.length,\n executionTimeMs: delayMs,\n }\n }\n }\n\n // Default: return empty result\n return {\n rows: [],\n columns: [],\n rowsAffected: 0,\n executionTimeMs: delayMs,\n }\n },\n },\n\n // Required for interface compatibility\n dup: () => createMockClient(options),\n onRpcBroken: (_callback: (error: unknown) => void) => {\n // Mock client never breaks\n },\n [Symbol.dispose]: () => {\n // Nothing to dispose\n },\n\n // Mock-specific methods for testing\n _store: store,\n _reset: () => {\n store.things.clear()\n store.deletedThings.clear()\n const freshData = initialData ?? generateInitialMockData()\n for (const thing of freshData) {\n const key = thingKey(thing.ns, thing.type, thing.id)\n store.things.set(key, thing)\n }\n },\n }\n}\n\n/**\n * Create a mock client context - factory function matching DOClient interface\n */\nexport function $MockContext(options?: MockClientOptions) {\n return createMockClient(options)\n}\n","/**\n * URL utilities for @mdxui/do\n *\n * Provides functions to normalize and derive URLs from the configuration.\n * These utilities ensure consistent URL formatting across the package.\n *\n * @module\n */\n\n/**\n * Normalize a URL to an RPC endpoint\n *\n * Transforms various URL formats into a consistent RPC endpoint URL:\n * - Converts wss:// to https:// and ws:// to http://\n * - Strips trailing /sync or /rpc if present\n * - Appends /rpc\n *\n * @param url - The base URL (e.g., 'https://api.do/admin' or 'wss://api.do/do/workspace')\n * @returns The normalized RPC URL (e.g., 'https://api.do/admin/rpc')\n *\n * @example\n * ```typescript\n * deriveRpcUrl('https://api.do/admin')\n * // => 'https://api.do/admin/rpc'\n *\n * deriveRpcUrl('wss://api.do/do/workspace/sync')\n * // => 'https://api.do/do/workspace/rpc'\n *\n * deriveRpcUrl('https://api.do/admin/rpc')\n * // => 'https://api.do/admin/rpc' (unchanged)\n * ```\n */\nexport function deriveRpcUrl(url: string): string {\n // Convert WebSocket to HTTP if needed\n let rpcUrl = url.replace(/^wss:/, 'https:').replace(/^ws:/, 'http:')\n // Strip any existing /sync or /rpc suffix\n rpcUrl = rpcUrl.replace(/\\/(sync|rpc)$/, '')\n // Strip trailing slash\n rpcUrl = rpcUrl.replace(/\\/$/, '')\n // Append /rpc\n return `${rpcUrl}/rpc`\n}\n","/**\n * Fetch wrapper with configurable timeout\n *\n * Prevents indefinite hangs on slow networks or unresponsive servers\n * by wrapping fetch with AbortController-based timeout.\n *\n * @module\n */\n\n/**\n * Default timeout in milliseconds (30 seconds)\n */\nexport const DEFAULT_REQUEST_TIMEOUT = 30000\n\n/**\n * Extended RequestInit that includes optional timeout\n */\nexport interface FetchWithTimeoutOptions extends RequestInit {\n /** Timeout in milliseconds. Defaults to 30000 (30 seconds) */\n timeout?: number\n}\n\n/**\n * Fetch wrapper with configurable timeout\n *\n * Uses AbortController to cancel requests that exceed the timeout.\n * If the request already has a signal, a composite abort will be used\n * that respects both the existing signal and the timeout.\n *\n * @param url - The URL to fetch\n * @param options - Fetch options including optional timeout\n * @returns Promise resolving to the Response\n * @throws {DOMException} AbortError if the request times out\n *\n * @example\n * ```typescript\n * // Basic usage with default 30s timeout\n * const response = await fetchWithTimeout('https://api.example.com/data')\n *\n * // Custom timeout\n * const response = await fetchWithTimeout('https://api.example.com/data', {\n * timeout: 5000, // 5 seconds\n * })\n *\n * // With other fetch options\n * const response = await fetchWithTimeout('https://api.example.com/data', {\n * method: 'POST',\n * headers: { 'Content-Type': 'application/json' },\n * body: JSON.stringify({ key: 'value' }),\n * timeout: 10000,\n * })\n * ```\n */\nexport async function fetchWithTimeout(\n url: string,\n options: FetchWithTimeoutOptions = {}\n): Promise<Response> {\n const { timeout = DEFAULT_REQUEST_TIMEOUT, signal: existingSignal, ...fetchOptions } = options\n\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), timeout)\n\n // If there's an existing signal, listen for its abort\n const existingAbortHandler = existingSignal\n ? () => controller.abort(existingSignal.reason)\n : null\n\n if (existingSignal) {\n if (existingSignal.aborted) {\n clearTimeout(timeoutId)\n controller.abort(existingSignal.reason)\n } else {\n existingSignal.addEventListener('abort', existingAbortHandler!)\n }\n }\n\n try {\n const response = await fetch(url, {\n ...fetchOptions,\n signal: controller.signal,\n })\n return response\n } finally {\n clearTimeout(timeoutId)\n if (existingSignal && existingAbortHandler) {\n existingSignal.removeEventListener('abort', existingAbortHandler)\n }\n }\n}\n\n/**\n * Create a fetch wrapper with a default timeout from config\n *\n * Useful for creating a configured fetch function that can be shared\n * across multiple hooks/components with consistent timeout behavior.\n *\n * @param defaultTimeout - Default timeout in milliseconds\n * @returns A fetch function with the default timeout applied\n *\n * @example\n * ```typescript\n * // Create a configured fetch\n * const configuredFetch = createFetchWithTimeout(5000)\n *\n * // Use it (timeout defaults to 5000ms)\n * const response = await configuredFetch('https://api.example.com/data')\n *\n * // Override the default timeout\n * const response = await configuredFetch('https://api.example.com/data', {\n * timeout: 10000,\n * })\n * ```\n */\nexport function createFetchWithTimeout(defaultTimeout: number) {\n return (url: string, options: FetchWithTimeoutOptions = {}): Promise<Response> =>\n fetchWithTimeout(url, { timeout: defaultTimeout, ...options })\n}\n","'use client'\n\n/**\n * Health check hook for @mdxui/do\n *\n * Provides a reusable hook for checking API endpoint connectivity\n * with retry logic and exponential backoff.\n *\n * @module\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react'\nimport { fetchWithTimeout, DEFAULT_REQUEST_TIMEOUT } from './fetch-with-timeout'\nimport { retryWithBackoff } from './utils'\n\n/**\n * Configuration for health check behavior\n */\nexport interface HealthCheckConfig {\n /** API endpoint base URL (e.g., 'https://api.do/admin') */\n apiEndpoint: string\n /** Optional auth token for Bearer authentication */\n authToken?: string\n /** Request timeout in milliseconds (defaults to DEFAULT_REQUEST_TIMEOUT) */\n requestTimeout?: number\n /** Number of retry attempts (defaults to 3) */\n healthCheckRetries?: number\n}\n\n/**\n * Result of the health check hook\n */\nexport interface HealthCheckResult {\n /** Whether the API is reachable */\n isConnected: boolean\n /** Error from the last failed attempt, if any */\n connectionError?: Error\n /** Manually trigger a health check */\n checkConnection: () => Promise<void>\n /** Whether a check is currently in progress */\n isChecking: boolean\n}\n\n/**\n * Hook to perform health checks against an API endpoint\n *\n * Automatically checks connection on mount with retry and exponential backoff.\n * Can also be manually triggered via the returned `checkConnection` function.\n *\n * @param config - Health check configuration\n * @returns Health check state and manual trigger function\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { isConnected, connectionError, checkConnection } = useHealthCheck({\n * apiEndpoint: 'https://api.do/admin',\n * authToken: 'my-token',\n * healthCheckRetries: 3,\n * })\n *\n * if (connectionError) {\n * return <div>Connection failed: {connectionError.message}</div>\n * }\n *\n * if (!isConnected) {\n * return <div>Connecting...</div>\n * }\n *\n * return <div>Connected!</div>\n * }\n * ```\n */\nexport function useHealthCheck(config: HealthCheckConfig): HealthCheckResult {\n const [isConnected, setIsConnected] = useState(false)\n const [connectionError, setConnectionError] = useState<Error>()\n const [isChecking, setIsChecking] = useState(true)\n\n const { apiEndpoint, authToken, requestTimeout, healthCheckRetries = 3 } = config\n\n // AbortController for cancellation support in useEffect\n const abortControllerRef = useRef<AbortController | null>(null)\n\n /**\n * Performs a single health check request\n * Shared between manual checkConnection and useEffect\n * Uses root endpoint (/) for broader compatibility\n */\n const performHealthCheck = useCallback(async (): Promise<void> => {\n const response = await fetchWithTimeout(apiEndpoint, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n },\n timeout: requestTimeout ?? DEFAULT_REQUEST_TIMEOUT,\n })\n\n if (!response.ok) {\n throw new Error(`Health check failed: ${response.status}`)\n }\n }, [apiEndpoint, authToken, requestTimeout])\n\n const checkConnection = useCallback(async () => {\n setIsChecking(true)\n\n try {\n await retryWithBackoff(performHealthCheck, {\n maxRetries: healthCheckRetries,\n backoffMultiplier: 1000,\n })\n\n setIsConnected(true)\n setConnectionError(undefined)\n } catch (error) {\n setIsConnected(false)\n setConnectionError(error instanceof Error ? error : new Error('Connection failed'))\n } finally {\n setIsChecking(false)\n }\n }, [performHealthCheck, healthCheckRetries])\n\n // Check connection on mount\n useEffect(() => {\n abortControllerRef.current = new AbortController()\n const { signal } = abortControllerRef.current\n\n async function runCheck() {\n try {\n await retryWithBackoff(performHealthCheck, {\n maxRetries: healthCheckRetries,\n backoffMultiplier: 1000,\n signal,\n })\n\n if (!signal.aborted) {\n setIsConnected(true)\n setConnectionError(undefined)\n setIsChecking(false)\n }\n } catch (error) {\n if (!signal.aborted) {\n setIsConnected(false)\n setConnectionError(error instanceof Error ? error : new Error('Connection failed'))\n setIsChecking(false)\n }\n }\n }\n\n runCheck()\n\n return () => {\n abortControllerRef.current?.abort()\n }\n }, [performHealthCheck, healthCheckRetries])\n\n return {\n isConnected,\n connectionError,\n checkConnection,\n isChecking,\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/error-boundary.tsx"],"names":[],"mappings":"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","file":"chunk-LJIWB7KE.js","sourcesContent":["'use client'\n\n/**\n * Error Boundary Component for @mdxui/do\n *\n * Catches JavaScript errors anywhere in the child component tree,\n * logs errors, and displays a fallback UI.\n *\n * @example\n * ```tsx\n * <DOErrorBoundary>\n * <ThingsList />\n * </DOErrorBoundary>\n *\n * // With custom fallback\n * <DOErrorBoundary fallback={<CustomErrorUI />}>\n * <Dashboard />\n * </DOErrorBoundary>\n *\n * // With fallback function\n * <DOErrorBoundary\n * fallback={(error, reset) => (\n * <div>\n * <p>Error: {error.message}</p>\n * <button onClick={reset}>Retry</button>\n * </div>\n * )}\n * >\n * <DataView />\n * </DOErrorBoundary>\n * ```\n */\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface DOErrorBoundaryProps {\n /** Child components to render */\n children: React.ReactNode\n /** Custom fallback UI - can be ReactNode or render function */\n fallback?: React.ReactNode | ((error: Error, reset: () => void) => React.ReactNode)\n /** Callback when error is caught */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void\n /** Key that triggers reset when changed (useful for route changes) */\n resetKey?: string | number\n /** Additional className for the error container */\n className?: string\n}\n\ninterface DOErrorBoundaryState {\n hasError: boolean\n error: Error | null\n}\n\n/**\n * DOErrorBoundary - Catches and handles errors in child components\n *\n * Features:\n * - Catches render errors in child tree\n * - Displays customizable error UI\n * - Provides retry functionality\n * - Supports error callbacks for logging\n * - Resets on resetKey change (e.g., route changes)\n */\nexport class DOErrorBoundary extends React.Component<\n DOErrorBoundaryProps,\n DOErrorBoundaryState\n> {\n constructor(props: DOErrorBoundaryProps) {\n super(props)\n this.state = { hasError: false, error: null }\n }\n\n static getDerivedStateFromError(error: Error): DOErrorBoundaryState {\n return { hasError: true, error }\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n // Log error to console\n console.error('DOErrorBoundary caught error:', error, errorInfo)\n\n // Call optional error callback\n if (this.props.onError) {\n this.props.onError(error, errorInfo)\n }\n }\n\n componentDidUpdate(prevProps: DOErrorBoundaryProps): void {\n // Reset error state when resetKey changes\n if (\n this.state.hasError &&\n prevProps.resetKey !== this.props.resetKey\n ) {\n this.reset()\n }\n }\n\n reset = (): void => {\n this.setState({ hasError: false, error: null })\n }\n\n render(): React.ReactNode {\n if (this.state.hasError) {\n const { fallback, className } = this.props\n const error = this.state.error ?? new Error('Unknown error')\n\n // Render function fallback\n if (typeof fallback === 'function') {\n return fallback(error, this.reset)\n }\n\n // ReactNode fallback\n if (fallback) {\n return fallback\n }\n\n // Default error UI\n return (\n <div\n className={cn(\n 'p-6 rounded-lg bg-destructive/10 border border-destructive/20',\n className\n )}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n <div className=\"flex-shrink-0 mt-0.5\">\n <svg\n className=\"h-5 w-5 text-destructive\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n <div className=\"flex-1\">\n <h2 className=\"text-sm font-semibold text-destructive\">\n Something went wrong\n </h2>\n {error.message && (\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {error.message}\n </p>\n )}\n <button\n type=\"button\"\n onClick={this.reset}\n className=\"mt-4 inline-flex items-center rounded-md bg-destructive px-3 py-2 text-sm font-semibold text-destructive-foreground shadow-sm hover:bg-destructive/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-destructive\"\n >\n Try again\n </button>\n </div>\n </div>\n </div>\n )\n }\n\n return this.props.children\n }\n}\n\n/**\n * Hook to manually trigger error boundary\n * Useful for catching errors in async operations\n */\nexport function useErrorBoundary() {\n const [error, setError] = React.useState<Error | null>(null)\n\n if (error) {\n throw error\n }\n\n return {\n showBoundary: setError,\n }\n}\n\nexport default DOErrorBoundary\n"]}