diff --git a/apps/dashboard/.gitignore b/apps/dashboard/.gitignore
new file mode 100644
index 00000000..2a2fd04f
--- /dev/null
+++ b/apps/dashboard/.gitignore
@@ -0,0 +1,44 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/versions
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# env files (can opt-in for committing if needed)
+.env*
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
+
+# open-next
+.open-next
diff --git a/apps/dashboard/app/data.json b/apps/dashboard/app/data.json
new file mode 100644
index 00000000..ec087364
--- /dev/null
+++ b/apps/dashboard/app/data.json
@@ -0,0 +1,614 @@
+[
+ {
+ "id": 1,
+ "header": "Cover page",
+ "type": "Cover page",
+ "status": "In Process",
+ "target": "18",
+ "limit": "5",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 2,
+ "header": "Table of contents",
+ "type": "Table of contents",
+ "status": "Done",
+ "target": "29",
+ "limit": "24",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 3,
+ "header": "Executive summary",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "10",
+ "limit": "13",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 4,
+ "header": "Technical approach",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "27",
+ "limit": "23",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 5,
+ "header": "Design",
+ "type": "Narrative",
+ "status": "In Process",
+ "target": "2",
+ "limit": "16",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 6,
+ "header": "Capabilities",
+ "type": "Narrative",
+ "status": "In Process",
+ "target": "20",
+ "limit": "8",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 7,
+ "header": "Integration with existing systems",
+ "type": "Narrative",
+ "status": "In Process",
+ "target": "19",
+ "limit": "21",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 8,
+ "header": "Innovation and Advantages",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "25",
+ "limit": "26",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 9,
+ "header": "Overview of EMR's Innovative Solutions",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "7",
+ "limit": "23",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 10,
+ "header": "Advanced Algorithms and Machine Learning",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "30",
+ "limit": "28",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 11,
+ "header": "Adaptive Communication Protocols",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "9",
+ "limit": "31",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 12,
+ "header": "Advantages Over Current Technologies",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "12",
+ "limit": "0",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 13,
+ "header": "Past Performance",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "22",
+ "limit": "33",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 14,
+ "header": "Customer Feedback and Satisfaction Levels",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "15",
+ "limit": "34",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 15,
+ "header": "Implementation Challenges and Solutions",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "3",
+ "limit": "35",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 16,
+ "header": "Security Measures and Data Protection Policies",
+ "type": "Narrative",
+ "status": "In Process",
+ "target": "6",
+ "limit": "36",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 17,
+ "header": "Scalability and Future Proofing",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "4",
+ "limit": "37",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 18,
+ "header": "Cost-Benefit Analysis",
+ "type": "Plain language",
+ "status": "Done",
+ "target": "14",
+ "limit": "38",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 19,
+ "header": "User Training and Onboarding Experience",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "17",
+ "limit": "39",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 20,
+ "header": "Future Development Roadmap",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "11",
+ "limit": "40",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 21,
+ "header": "System Architecture Overview",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "24",
+ "limit": "18",
+ "reviewer": "Maya Johnson"
+ },
+ {
+ "id": 22,
+ "header": "Risk Management Plan",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "15",
+ "limit": "22",
+ "reviewer": "Carlos Rodriguez"
+ },
+ {
+ "id": 23,
+ "header": "Compliance Documentation",
+ "type": "Legal",
+ "status": "In Process",
+ "target": "31",
+ "limit": "27",
+ "reviewer": "Sarah Chen"
+ },
+ {
+ "id": 24,
+ "header": "API Documentation",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "8",
+ "limit": "12",
+ "reviewer": "Raj Patel"
+ },
+ {
+ "id": 25,
+ "header": "User Interface Mockups",
+ "type": "Visual",
+ "status": "In Process",
+ "target": "19",
+ "limit": "25",
+ "reviewer": "Leila Ahmadi"
+ },
+ {
+ "id": 26,
+ "header": "Database Schema",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "22",
+ "limit": "20",
+ "reviewer": "Thomas Wilson"
+ },
+ {
+ "id": 27,
+ "header": "Testing Methodology",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "17",
+ "limit": "14",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 28,
+ "header": "Deployment Strategy",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "26",
+ "limit": "30",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 29,
+ "header": "Budget Breakdown",
+ "type": "Financial",
+ "status": "In Process",
+ "target": "13",
+ "limit": "16",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 30,
+ "header": "Market Analysis",
+ "type": "Research",
+ "status": "Done",
+ "target": "29",
+ "limit": "32",
+ "reviewer": "Sophia Martinez"
+ },
+ {
+ "id": 31,
+ "header": "Competitor Comparison",
+ "type": "Research",
+ "status": "In Process",
+ "target": "21",
+ "limit": "19",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 32,
+ "header": "Maintenance Plan",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "16",
+ "limit": "23",
+ "reviewer": "Alex Thompson"
+ },
+ {
+ "id": 33,
+ "header": "User Personas",
+ "type": "Research",
+ "status": "In Process",
+ "target": "27",
+ "limit": "24",
+ "reviewer": "Nina Patel"
+ },
+ {
+ "id": 34,
+ "header": "Accessibility Compliance",
+ "type": "Legal",
+ "status": "Done",
+ "target": "18",
+ "limit": "21",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 35,
+ "header": "Performance Metrics",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "23",
+ "limit": "26",
+ "reviewer": "David Kim"
+ },
+ {
+ "id": 36,
+ "header": "Disaster Recovery Plan",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "14",
+ "limit": "17",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 37,
+ "header": "Third-party Integrations",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "25",
+ "limit": "28",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 38,
+ "header": "User Feedback Summary",
+ "type": "Research",
+ "status": "Done",
+ "target": "20",
+ "limit": "15",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 39,
+ "header": "Localization Strategy",
+ "type": "Narrative",
+ "status": "In Process",
+ "target": "12",
+ "limit": "19",
+ "reviewer": "Maria Garcia"
+ },
+ {
+ "id": 40,
+ "header": "Mobile Compatibility",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "28",
+ "limit": "31",
+ "reviewer": "James Wilson"
+ },
+ {
+ "id": 41,
+ "header": "Data Migration Plan",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "19",
+ "limit": "22",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 42,
+ "header": "Quality Assurance Protocols",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "30",
+ "limit": "33",
+ "reviewer": "Priya Singh"
+ },
+ {
+ "id": 43,
+ "header": "Stakeholder Analysis",
+ "type": "Research",
+ "status": "In Process",
+ "target": "11",
+ "limit": "14",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 44,
+ "header": "Environmental Impact Assessment",
+ "type": "Research",
+ "status": "Done",
+ "target": "24",
+ "limit": "27",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 45,
+ "header": "Intellectual Property Rights",
+ "type": "Legal",
+ "status": "In Process",
+ "target": "17",
+ "limit": "20",
+ "reviewer": "Sarah Johnson"
+ },
+ {
+ "id": 46,
+ "header": "Customer Support Framework",
+ "type": "Narrative",
+ "status": "Done",
+ "target": "22",
+ "limit": "25",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 47,
+ "header": "Version Control Strategy",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "15",
+ "limit": "18",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 48,
+ "header": "Continuous Integration Pipeline",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "26",
+ "limit": "29",
+ "reviewer": "Michael Chen"
+ },
+ {
+ "id": 49,
+ "header": "Regulatory Compliance",
+ "type": "Legal",
+ "status": "In Process",
+ "target": "13",
+ "limit": "16",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 50,
+ "header": "User Authentication System",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "28",
+ "limit": "31",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 51,
+ "header": "Data Analytics Framework",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "21",
+ "limit": "24",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 52,
+ "header": "Cloud Infrastructure",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "16",
+ "limit": "19",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 53,
+ "header": "Network Security Measures",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "29",
+ "limit": "32",
+ "reviewer": "Lisa Wong"
+ },
+ {
+ "id": 54,
+ "header": "Project Timeline",
+ "type": "Planning",
+ "status": "Done",
+ "target": "14",
+ "limit": "17",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 55,
+ "header": "Resource Allocation",
+ "type": "Planning",
+ "status": "In Process",
+ "target": "27",
+ "limit": "30",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 56,
+ "header": "Team Structure and Roles",
+ "type": "Planning",
+ "status": "Done",
+ "target": "20",
+ "limit": "23",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 57,
+ "header": "Communication Protocols",
+ "type": "Planning",
+ "status": "In Process",
+ "target": "15",
+ "limit": "18",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 58,
+ "header": "Success Metrics",
+ "type": "Planning",
+ "status": "Done",
+ "target": "30",
+ "limit": "33",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 59,
+ "header": "Internationalization Support",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "23",
+ "limit": "26",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 60,
+ "header": "Backup and Recovery Procedures",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "18",
+ "limit": "21",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 61,
+ "header": "Monitoring and Alerting System",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "25",
+ "limit": "28",
+ "reviewer": "Daniel Park"
+ },
+ {
+ "id": 62,
+ "header": "Code Review Guidelines",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "12",
+ "limit": "15",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 63,
+ "header": "Documentation Standards",
+ "type": "Technical content",
+ "status": "In Process",
+ "target": "27",
+ "limit": "30",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 64,
+ "header": "Release Management Process",
+ "type": "Planning",
+ "status": "Done",
+ "target": "22",
+ "limit": "25",
+ "reviewer": "Assign reviewer"
+ },
+ {
+ "id": 65,
+ "header": "Feature Prioritization Matrix",
+ "type": "Planning",
+ "status": "In Process",
+ "target": "19",
+ "limit": "22",
+ "reviewer": "Emma Davis"
+ },
+ {
+ "id": 66,
+ "header": "Technical Debt Assessment",
+ "type": "Technical content",
+ "status": "Done",
+ "target": "24",
+ "limit": "27",
+ "reviewer": "Eddie Lake"
+ },
+ {
+ "id": 67,
+ "header": "Capacity Planning",
+ "type": "Planning",
+ "status": "In Process",
+ "target": "21",
+ "limit": "24",
+ "reviewer": "Jamik Tashpulatov"
+ },
+ {
+ "id": 68,
+ "header": "Service Level Agreements",
+ "type": "Legal",
+ "status": "Done",
+ "target": "26",
+ "limit": "29",
+ "reviewer": "Assign reviewer"
+ }
+]
diff --git a/apps/dashboard/app/favicon.ico b/apps/dashboard/app/favicon.ico
new file mode 100644
index 00000000..718d6fea
Binary files /dev/null and b/apps/dashboard/app/favicon.ico differ
diff --git a/apps/dashboard/app/globals.css b/apps/dashboard/app/globals.css
new file mode 100644
index 00000000..31ec2d75
--- /dev/null
+++ b/apps/dashboard/app/globals.css
@@ -0,0 +1,122 @@
+@import 'tailwindcss';
+@import 'tw-animate-css';
+
+@custom-variant dark (&:is(.dark *));
+
+@theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --font-sans: var(--font-geist-sans);
+ --font-mono: var(--font-geist-mono);
+ --color-sidebar-ring: var(--sidebar-ring);
+ --color-sidebar-border: var(--sidebar-border);
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
+ --color-sidebar-accent: var(--sidebar-accent);
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
+ --color-sidebar-primary: var(--sidebar-primary);
+ --color-sidebar-foreground: var(--sidebar-foreground);
+ --color-sidebar: var(--sidebar);
+ --color-chart-5: var(--chart-5);
+ --color-chart-4: var(--chart-4);
+ --color-chart-3: var(--chart-3);
+ --color-chart-2: var(--chart-2);
+ --color-chart-1: var(--chart-1);
+ --color-ring: var(--ring);
+ --color-input: var(--input);
+ --color-border: var(--border);
+ --color-destructive: var(--destructive);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-accent: var(--accent);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-muted: var(--muted);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-secondary: var(--secondary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-primary: var(--primary);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-popover: var(--popover);
+ --color-card-foreground: var(--card-foreground);
+ --color-card: var(--card);
+ --radius-sm: calc(var(--radius) - 4px);
+ --radius-md: calc(var(--radius) - 2px);
+ --radius-lg: var(--radius);
+ --radius-xl: calc(var(--radius) + 4px);
+}
+
+:root {
+ --radius: 0.625rem;
+ --background: oklch(1 0 0);
+ --foreground: oklch(0.145 0 0);
+ --card: oklch(1 0 0);
+ --card-foreground: oklch(0.145 0 0);
+ --popover: oklch(1 0 0);
+ --popover-foreground: oklch(0.145 0 0);
+ --primary: oklch(0.205 0 0);
+ --primary-foreground: oklch(0.985 0 0);
+ --secondary: oklch(0.97 0 0);
+ --secondary-foreground: oklch(0.205 0 0);
+ --muted: oklch(0.97 0 0);
+ --muted-foreground: oklch(0.556 0 0);
+ --accent: oklch(0.97 0 0);
+ --accent-foreground: oklch(0.205 0 0);
+ --destructive: oklch(0.577 0.245 27.325);
+ --border: oklch(0.922 0 0);
+ --input: oklch(0.922 0 0);
+ --ring: oklch(0.708 0 0);
+ --chart-1: oklch(0.646 0.222 41.116);
+ --chart-2: oklch(0.6 0.118 184.704);
+ --chart-3: oklch(0.398 0.07 227.392);
+ --chart-4: oklch(0.828 0.189 84.429);
+ --chart-5: oklch(0.769 0.188 70.08);
+ --sidebar: oklch(0.985 0 0);
+ --sidebar-foreground: oklch(0.145 0 0);
+ --sidebar-primary: oklch(0.205 0 0);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.97 0 0);
+ --sidebar-accent-foreground: oklch(0.205 0 0);
+ --sidebar-border: oklch(0.922 0 0);
+ --sidebar-ring: oklch(0.708 0 0);
+}
+
+.dark {
+ --background: oklch(0.145 0 0);
+ --foreground: oklch(0.985 0 0);
+ --card: oklch(0.205 0 0);
+ --card-foreground: oklch(0.985 0 0);
+ --popover: oklch(0.205 0 0);
+ --popover-foreground: oklch(0.985 0 0);
+ --primary: oklch(0.922 0 0);
+ --primary-foreground: oklch(0.205 0 0);
+ --secondary: oklch(0.269 0 0);
+ --secondary-foreground: oklch(0.985 0 0);
+ --muted: oklch(0.269 0 0);
+ --muted-foreground: oklch(0.708 0 0);
+ --accent: oklch(0.269 0 0);
+ --accent-foreground: oklch(0.985 0 0);
+ --destructive: oklch(0.704 0.191 22.216);
+ --border: oklch(1 0 0 / 10%);
+ --input: oklch(1 0 0 / 15%);
+ --ring: oklch(0.556 0 0);
+ --chart-1: oklch(0.488 0.243 264.376);
+ --chart-2: oklch(0.696 0.17 162.48);
+ --chart-3: oklch(0.769 0.188 70.08);
+ --chart-4: oklch(0.627 0.265 303.9);
+ --chart-5: oklch(0.645 0.246 16.439);
+ --sidebar: oklch(0.205 0 0);
+ --sidebar-foreground: oklch(0.985 0 0);
+ --sidebar-primary: oklch(0.488 0.243 264.376);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.269 0 0);
+ --sidebar-accent-foreground: oklch(0.985 0 0);
+ --sidebar-border: oklch(1 0 0 / 10%);
+ --sidebar-ring: oklch(0.556 0 0);
+}
+
+@layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
diff --git a/apps/dashboard/app/layout.tsx b/apps/dashboard/app/layout.tsx
new file mode 100644
index 00000000..0a57d2ce
--- /dev/null
+++ b/apps/dashboard/app/layout.tsx
@@ -0,0 +1,34 @@
+import type { Metadata } from 'next'
+import { Geist, Geist_Mono } from 'next/font/google'
+import './globals.css'
+
+const geistSans = Geist({
+ variable: '--font-geist-sans',
+ subsets: ['latin']
+})
+
+const geistMono = Geist_Mono({
+ variable: '--font-geist-mono',
+ subsets: ['latin']
+})
+
+export const metadata: Metadata = {
+ title: 'Create Next App',
+ description: 'Generated by create next app'
+}
+
+export default function RootLayout({
+ children
+}: Readonly<{
+ children: React.ReactNode
+}>) {
+ return (
+
+
+ {children}
+
+
+ )
+}
diff --git a/apps/dashboard/app/page.tsx b/apps/dashboard/app/page.tsx
new file mode 100644
index 00000000..bbb77503
--- /dev/null
+++ b/apps/dashboard/app/page.tsx
@@ -0,0 +1,36 @@
+import { AppSidebar } from '@/components/app-sidebar'
+import { ChartAreaInteractive } from '@/components/chart-area-interactive'
+import { DataTable } from '@/components/data-table'
+import { SectionCards } from '@/components/section-cards'
+import { SiteHeader } from '@/components/site-header'
+import { SidebarInset, SidebarProvider } from '@/components/ui/sidebar'
+import data from './data.json'
+
+export default function Home() {
+ return (
+
+
+
+
+
+
+
+ )
+}
diff --git a/apps/dashboard/cloudflare-env.d.ts b/apps/dashboard/cloudflare-env.d.ts
new file mode 100644
index 00000000..830e953a
--- /dev/null
+++ b/apps/dashboard/cloudflare-env.d.ts
@@ -0,0 +1,8348 @@
+/* eslint-disable */
+// Generated by Wrangler by running `wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts` (hash: 508754d496fd9e0dd697301273fd295d)
+// Runtime types generated with workerd@1.20251008.0 2025-03-25 nodejs_compat
+declare namespace Cloudflare {
+ interface GlobalProps {
+ mainModule: typeof import("./.open-next/worker");
+ }
+ interface Env {
+ ASSETS: Fetcher;
+ }
+}
+interface CloudflareEnv extends Cloudflare.Env {}
+
+// Begin runtime types
+/*! *****************************************************************************
+Copyright (c) Cloudflare. All rights reserved.
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+/* eslint-disable */
+// noinspection JSUnusedGlobalSymbols
+declare var onmessage: never;
+/**
+ * An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API.
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException)
+ */
+declare class DOMException extends Error {
+ constructor(message?: string, name?: string);
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/message) */
+ readonly message: string;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) */
+ readonly name: string;
+ /**
+ * @deprecated
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/code)
+ */
+ readonly code: number;
+ static readonly INDEX_SIZE_ERR: number;
+ static readonly DOMSTRING_SIZE_ERR: number;
+ static readonly HIERARCHY_REQUEST_ERR: number;
+ static readonly WRONG_DOCUMENT_ERR: number;
+ static readonly INVALID_CHARACTER_ERR: number;
+ static readonly NO_DATA_ALLOWED_ERR: number;
+ static readonly NO_MODIFICATION_ALLOWED_ERR: number;
+ static readonly NOT_FOUND_ERR: number;
+ static readonly NOT_SUPPORTED_ERR: number;
+ static readonly INUSE_ATTRIBUTE_ERR: number;
+ static readonly INVALID_STATE_ERR: number;
+ static readonly SYNTAX_ERR: number;
+ static readonly INVALID_MODIFICATION_ERR: number;
+ static readonly NAMESPACE_ERR: number;
+ static readonly INVALID_ACCESS_ERR: number;
+ static readonly VALIDATION_ERR: number;
+ static readonly TYPE_MISMATCH_ERR: number;
+ static readonly SECURITY_ERR: number;
+ static readonly NETWORK_ERR: number;
+ static readonly ABORT_ERR: number;
+ static readonly URL_MISMATCH_ERR: number;
+ static readonly QUOTA_EXCEEDED_ERR: number;
+ static readonly TIMEOUT_ERR: number;
+ static readonly INVALID_NODE_TYPE_ERR: number;
+ static readonly DATA_CLONE_ERR: number;
+ get stack(): any;
+ set stack(value: any);
+}
+type WorkerGlobalScopeEventMap = {
+ fetch: FetchEvent;
+ scheduled: ScheduledEvent;
+ queue: QueueEvent;
+ unhandledrejection: PromiseRejectionEvent;
+ rejectionhandled: PromiseRejectionEvent;
+};
+declare abstract class WorkerGlobalScope extends EventTarget {
+ EventTarget: typeof EventTarget;
+}
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console) */
+interface Console {
+ "assert"(condition?: boolean, ...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/clear_static) */
+ clear(): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/count_static) */
+ count(label?: string): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/countReset_static) */
+ countReset(label?: string): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/debug_static) */
+ debug(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dir_static) */
+ dir(item?: any, options?: any): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dirxml_static) */
+ dirxml(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/error_static) */
+ error(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/group_static) */
+ group(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupCollapsed_static) */
+ groupCollapsed(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupEnd_static) */
+ groupEnd(): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/info_static) */
+ info(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/log_static) */
+ log(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/table_static) */
+ table(tabularData?: any, properties?: string[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/time_static) */
+ time(label?: string): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeEnd_static) */
+ timeEnd(label?: string): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeLog_static) */
+ timeLog(label?: string, ...data: any[]): void;
+ timeStamp(label?: string): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/trace_static) */
+ trace(...data: any[]): void;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/warn_static) */
+ warn(...data: any[]): void;
+}
+declare const console: Console;
+type BufferSource = ArrayBufferView | ArrayBuffer;
+type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
+declare namespace WebAssembly {
+ class CompileError extends Error {
+ constructor(message?: string);
+ }
+ class RuntimeError extends Error {
+ constructor(message?: string);
+ }
+ type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128";
+ interface GlobalDescriptor {
+ value: ValueType;
+ mutable?: boolean;
+ }
+ class Global {
+ constructor(descriptor: GlobalDescriptor, value?: any);
+ value: any;
+ valueOf(): any;
+ }
+ type ImportValue = ExportValue | number;
+ type ModuleImports = Record;
+ type Imports = Record;
+ type ExportValue = Function | Global | Memory | Table;
+ type Exports = Record;
+ class Instance {
+ constructor(module: Module, imports?: Imports);
+ readonly exports: Exports;
+ }
+ interface MemoryDescriptor {
+ initial: number;
+ maximum?: number;
+ shared?: boolean;
+ }
+ class Memory {
+ constructor(descriptor: MemoryDescriptor);
+ readonly buffer: ArrayBuffer;
+ grow(delta: number): number;
+ }
+ type ImportExportKind = "function" | "global" | "memory" | "table";
+ interface ModuleExportDescriptor {
+ kind: ImportExportKind;
+ name: string;
+ }
+ interface ModuleImportDescriptor {
+ kind: ImportExportKind;
+ module: string;
+ name: string;
+ }
+ abstract class Module {
+ static customSections(module: Module, sectionName: string): ArrayBuffer[];
+ static exports(module: Module): ModuleExportDescriptor[];
+ static imports(module: Module): ModuleImportDescriptor[];
+ }
+ type TableKind = "anyfunc" | "externref";
+ interface TableDescriptor {
+ element: TableKind;
+ initial: number;
+ maximum?: number;
+ }
+ class Table {
+ constructor(descriptor: TableDescriptor, value?: any);
+ readonly length: number;
+ get(index: number): any;
+ grow(delta: number, value?: any): number;
+ set(index: number, value?: any): void;
+ }
+ function instantiate(module: Module, imports?: Imports): Promise;
+ function validate(bytes: BufferSource): boolean;
+}
+/**
+ * This ServiceWorker API interface represents the global execution context of a service worker.
+ * Available only in secure contexts.
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope)
+ */
+interface ServiceWorkerGlobalScope extends WorkerGlobalScope {
+ DOMException: typeof DOMException;
+ WorkerGlobalScope: typeof WorkerGlobalScope;
+ btoa(data: string): string;
+ atob(data: string): string;
+ setTimeout(callback: (...args: any[]) => void, msDelay?: number): number;
+ setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number;
+ clearTimeout(timeoutId: number | null): void;
+ setInterval(callback: (...args: any[]) => void, msDelay?: number): number;
+ setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number;
+ clearInterval(timeoutId: number | null): void;
+ queueMicrotask(task: Function): void;
+ structuredClone(value: T, options?: StructuredSerializeOptions): T;
+ reportError(error: any): void;
+ fetch(input: RequestInfo | URL, init?: RequestInit): Promise;
+ self: ServiceWorkerGlobalScope;
+ crypto: Crypto;
+ caches: CacheStorage;
+ scheduler: Scheduler;
+ performance: Performance;
+ Cloudflare: Cloudflare;
+ readonly origin: string;
+ Event: typeof Event;
+ ExtendableEvent: typeof ExtendableEvent;
+ CustomEvent: typeof CustomEvent;
+ PromiseRejectionEvent: typeof PromiseRejectionEvent;
+ FetchEvent: typeof FetchEvent;
+ TailEvent: typeof TailEvent;
+ TraceEvent: typeof TailEvent;
+ ScheduledEvent: typeof ScheduledEvent;
+ MessageEvent: typeof MessageEvent;
+ CloseEvent: typeof CloseEvent;
+ ReadableStreamDefaultReader: typeof ReadableStreamDefaultReader;
+ ReadableStreamBYOBReader: typeof ReadableStreamBYOBReader;
+ ReadableStream: typeof ReadableStream;
+ WritableStream: typeof WritableStream;
+ WritableStreamDefaultWriter: typeof WritableStreamDefaultWriter;
+ TransformStream: typeof TransformStream;
+ ByteLengthQueuingStrategy: typeof ByteLengthQueuingStrategy;
+ CountQueuingStrategy: typeof CountQueuingStrategy;
+ ErrorEvent: typeof ErrorEvent;
+ EventSource: typeof EventSource;
+ ReadableStreamBYOBRequest: typeof ReadableStreamBYOBRequest;
+ ReadableStreamDefaultController: typeof ReadableStreamDefaultController;
+ ReadableByteStreamController: typeof ReadableByteStreamController;
+ WritableStreamDefaultController: typeof WritableStreamDefaultController;
+ TransformStreamDefaultController: typeof TransformStreamDefaultController;
+ CompressionStream: typeof CompressionStream;
+ DecompressionStream: typeof DecompressionStream;
+ TextEncoderStream: typeof TextEncoderStream;
+ TextDecoderStream: typeof TextDecoderStream;
+ Headers: typeof Headers;
+ Body: typeof Body;
+ Request: typeof Request;
+ Response: typeof Response;
+ WebSocket: typeof WebSocket;
+ WebSocketPair: typeof WebSocketPair;
+ WebSocketRequestResponsePair: typeof WebSocketRequestResponsePair;
+ AbortController: typeof AbortController;
+ AbortSignal: typeof AbortSignal;
+ TextDecoder: typeof TextDecoder;
+ TextEncoder: typeof TextEncoder;
+ navigator: Navigator;
+ Navigator: typeof Navigator;
+ URL: typeof URL;
+ URLSearchParams: typeof URLSearchParams;
+ URLPattern: typeof URLPattern;
+ Blob: typeof Blob;
+ File: typeof File;
+ FormData: typeof FormData;
+ Crypto: typeof Crypto;
+ SubtleCrypto: typeof SubtleCrypto;
+ CryptoKey: typeof CryptoKey;
+ CacheStorage: typeof CacheStorage;
+ Cache: typeof Cache;
+ FixedLengthStream: typeof FixedLengthStream;
+ IdentityTransformStream: typeof IdentityTransformStream;
+ HTMLRewriter: typeof HTMLRewriter;
+}
+declare function addEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetAddEventListenerOptions | boolean): void;
+declare function removeEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetEventListenerOptions | boolean): void;
+/**
+ * Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)
+ */
+declare function dispatchEvent(event: WorkerGlobalScopeEventMap[keyof WorkerGlobalScopeEventMap]): boolean;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/btoa) */
+declare function btoa(data: string): string;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/atob) */
+declare function atob(data: string): string;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */
+declare function setTimeout(callback: (...args: any[]) => void, msDelay?: number): number;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */
+declare function setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearTimeout) */
+declare function clearTimeout(timeoutId: number | null): void;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */
+declare function setInterval(callback: (...args: any[]) => void, msDelay?: number): number;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */
+declare function setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearInterval) */
+declare function clearInterval(timeoutId: number | null): void;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/queueMicrotask) */
+declare function queueMicrotask(task: Function): void;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/structuredClone) */
+declare function structuredClone(value: T, options?: StructuredSerializeOptions): T;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/reportError) */
+declare function reportError(error: any): void;
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/fetch) */
+declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise;
+declare const self: ServiceWorkerGlobalScope;
+/**
+* The Web Crypto API provides a set of low-level functions for common cryptographic tasks.
+* The Workers runtime implements the full surface of this API, but with some differences in
+* the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms)
+* compared to those implemented in most browsers.
+*
+* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/)
+*/
+declare const crypto: Crypto;
+/**
+* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache.
+*
+* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/)
+*/
+declare const caches: CacheStorage;
+declare const scheduler: Scheduler;
+/**
+* The Workers runtime supports a subset of the Performance API, used to measure timing and performance,
+* as well as timing of subrequests and other operations.
+*
+* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/)
+*/
+declare const performance: Performance;
+declare const Cloudflare: Cloudflare;
+declare const origin: string;
+declare const navigator: Navigator;
+interface TestController {
+}
+interface ExecutionContext {
+ waitUntil(promise: Promise): void;
+ passThroughOnException(): void;
+ readonly props: Props;
+}
+type ExportedHandlerFetchHandler = (request: Request>, env: Env, ctx: ExecutionContext) => Response | Promise;
+type ExportedHandlerTailHandler = (events: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerTraceHandler = (traces: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerTailStreamHandler = (event: TailStream.TailEvent, env: Env, ctx: ExecutionContext) => TailStream.TailEventHandlerType | Promise;
+type ExportedHandlerScheduledHandler = (controller: ScheduledController, env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerQueueHandler = (batch: MessageBatch, env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerTestHandler = (controller: TestController, env: Env, ctx: ExecutionContext) => void | Promise;
+interface ExportedHandler {
+ fetch?: ExportedHandlerFetchHandler;
+ tail?: ExportedHandlerTailHandler;
+ trace?: ExportedHandlerTraceHandler;
+ tailStream?: ExportedHandlerTailStreamHandler;
+ scheduled?: ExportedHandlerScheduledHandler;
+ test?: ExportedHandlerTestHandler;
+ email?: EmailExportedHandler;
+ queue?: ExportedHandlerQueueHandler;
+}
+interface StructuredSerializeOptions {
+ transfer?: any[];
+}
+/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent) */
+declare abstract class PromiseRejectionEvent extends Event {
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/promise) */
+ readonly promise: Promise;
+ /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/reason) */
+ readonly reason: any;
+}
+declare abstract class Navigator {
+ sendBeacon(url: string, body?: (ReadableStream | string | (ArrayBuffer | ArrayBufferView) | Blob | FormData | URLSearchParams | URLSearchParams)): boolean;
+ readonly userAgent: string;
+ readonly hardwareConcurrency: number;
+}
+interface AlarmInvocationInfo {
+ readonly isRetry: boolean;
+ readonly retryCount: number;
+}
+interface Cloudflare {
+ readonly compatibilityFlags: Record;
+}
+interface DurableObject {
+ fetch(request: Request): Response | Promise;
+ alarm?(alarmInfo?: AlarmInvocationInfo): void | Promise;
+ webSocketMessage?(ws: WebSocket, message: string | ArrayBuffer): void | Promise;
+ webSocketClose?(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise;
+ webSocketError?(ws: WebSocket, error: unknown): void | Promise;
+}
+type DurableObjectStub = Fetcher & {
+ readonly id: DurableObjectId;
+ readonly name?: string;
+};
+interface DurableObjectId {
+ toString(): string;
+ equals(other: DurableObjectId): boolean;
+ readonly name?: string;
+}
+declare abstract class DurableObjectNamespace {
+ newUniqueId(options?: DurableObjectNamespaceNewUniqueIdOptions): DurableObjectId;
+ idFromName(name: string): DurableObjectId;
+ idFromString(id: string): DurableObjectId;
+ get(id: DurableObjectId, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub;
+ getByName(name: string, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub;
+ jurisdiction(jurisdiction: DurableObjectJurisdiction): DurableObjectNamespace;
+}
+type DurableObjectJurisdiction = "eu" | "fedramp" | "fedramp-high";
+interface DurableObjectNamespaceNewUniqueIdOptions {
+ jurisdiction?: DurableObjectJurisdiction;
+}
+type DurableObjectLocationHint = "wnam" | "enam" | "sam" | "weur" | "eeur" | "apac" | "oc" | "afr" | "me";
+interface DurableObjectNamespaceGetDurableObjectOptions {
+ locationHint?: DurableObjectLocationHint;
+}
+interface DurableObjectClass<_T extends Rpc.DurableObjectBranded | undefined = undefined> {
+}
+interface DurableObjectState {
+ waitUntil(promise: Promise): void;
+ readonly props: Props;
+ readonly id: DurableObjectId;
+ readonly storage: DurableObjectStorage;
+ container?: Container;
+ blockConcurrencyWhile(callback: () => Promise): Promise;
+ acceptWebSocket(ws: WebSocket, tags?: string[]): void;
+ getWebSockets(tag?: string): WebSocket[];
+ setWebSocketAutoResponse(maybeReqResp?: WebSocketRequestResponsePair): void;
+ getWebSocketAutoResponse(): WebSocketRequestResponsePair | null;
+ getWebSocketAutoResponseTimestamp(ws: WebSocket): Date | null;
+ setHibernatableWebSocketEventTimeout(timeoutMs?: number): void;
+ getHibernatableWebSocketEventTimeout(): number | null;
+ getTags(ws: WebSocket): string[];
+ abort(reason?: string): void;
+}
+interface DurableObjectTransaction {
+ get(key: string, options?: DurableObjectGetOptions): Promise;
+ get(keys: string[], options?: DurableObjectGetOptions): Promise