From bdc9f8c2b36833d81e7533ba8962ec9c55dc2ec2 Mon Sep 17 00:00:00 2001 From: Ravi Suhag Date: Wed, 2 Sep 2026 10:33:35 -0500 Subject: [PATCH] chore: upgrade apsara and fumadocs, move icons to lucide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apsara 1.0.0-rc.7 -> 1.6.0, fumadocs-core 16.12.1 -> 16.15.4, and fumadocs-mdx 14.3.1 -> 15.4.0. Consolidates every icon on lucide, styles apsara's parts through data slots, and clears the typecheck. Apsara breaking changes - `Callout`: `outline` boolean becomes `variant="outline"`. - `Callout`, `Button`: the `width` prop is gone. A callout now defaults to 400px, so prose callouts set their width in CSS; the two menu triggers set it inline, which is what the prop did. - `Sidebar`: `collapsible` takes 'icon' | 'hidden' | 'none', not a boolean. - `ThemeProvider` is deprecated in favour of `Theme`. - `lucide-react` is a required peer, capped below 1.0. Icons Every icon is lucide now, the family apsara itself draws with, so the site ships one icon set instead of three. `components/ui/icons.ts` is the single place they come from: icons apsara already exports are re-exported under apsara's key so a `` override reaches both, and the rest are built with apsara's `createIcon`, which gives them the same 16px frame and 1.5 stroke. Drops @heroicons/react and @radix-ui/react-icons. Two names that used to mean two different drawings — ChevronDownIcon and ArrowLeftIcon came from radix in some files and heroicons in others — are now one drawing each. Data slots Replaces the `classNames` props apsara deprecated on Sidebar.Item, Sidebar.Group and EmptyState with `[data-slot]` selectors. EmptyState needs a host element because apsara spreads `...props` after its own `className`, so passing one would drop apsara's base styles. Typecheck: 95 errors -> 0 Most of it was configuration. `declaration: true` emitted nothing — the package is a CLI built by Bun.build and ships no types — but produced 31 "cannot be named" errors, and `bun:test` had no types, which was 25 more. Four were real defects: - Telemetry read `event.req.headers['x-forwarded-for']`, but h3 v2 headers are a `Headers` object, so bracket access always missed and the socket fallback does not exist in h3 v2. Every request logged an unknown IP. - `externals: ['sharp']` is not a nitro option and was ignored. Sharp is traced into the output as an ordinary external either way. - `lib/get-llm-text.ts` had no callers and called `page.data.getText()`, which nothing produces. It would have thrown. Removed. - The paper theme passed numbers to `Text` `size` and `weight`, which take named steps, so both props were dropped. Behaviour changes - Inactive top-link labels in the default sidebar are grey in production. `.topLinkText` tied with apsara's `.nav-text` on specificity, so it won in dev and lost in the production bundle. A data-slot selector cannot tie, so production now matches dev and the written intent. - The paper theme's site title is medium weight, as its code intended. Verified against the built site, not just the compiler: apsara's type errors are unchanged at every step; shiki, admonitions, the custom TOC, llms.txt, sitemap.xml and the .md routes all still render; image optimisation returns identical bytes fresh and cached; and the sidebar's computed styles and box geometry are byte-identical before and after the data-slot migration. --- bun.lock | 207 +++++++++++------- packages/chronicle/package.json | 12 +- .../analytics/AnalyticsProvider.tsx | 4 +- .../src/components/api/ApiSkeleton.tsx | 2 +- .../src/components/api/api-field-list.tsx | 2 +- .../src/components/api/api-overview.tsx | 2 +- .../src/components/api/playground-dialog.tsx | 9 +- .../src/components/common/callout.module.css | 4 + .../src/components/common/callout.tsx | 4 +- .../src/components/ui/breadcrumbs.tsx | 2 +- .../components/ui/client-theme-switcher.tsx | 2 +- packages/chronicle/src/components/ui/icons.ts | 79 +++++++ .../chronicle/src/components/ui/search.tsx | 18 +- .../src/components/ui/sidebar-links.tsx | 4 +- packages/chronicle/src/lib/config.ts | 6 +- packages/chronicle/src/lib/get-llm-text.ts | 10 - packages/chronicle/src/lib/openapi.ts | 2 +- packages/chronicle/src/lib/source.ts | 21 +- packages/chronicle/src/lib/tree-utils.test.ts | 2 +- packages/chronicle/src/lib/tree-utils.ts | 20 +- packages/chronicle/src/pages/LandingPage.tsx | 2 +- .../chronicle/src/pages/NotFound.module.css | 10 +- packages/chronicle/src/pages/NotFound.tsx | 15 +- packages/chronicle/src/pages/RenderError.tsx | 23 +- packages/chronicle/src/server/App.tsx | 6 +- .../chronicle/src/server/api/apis-proxy.ts | 2 +- packages/chronicle/src/server/api/image.ts | 15 +- .../chronicle/src/server/entry-server.tsx | 4 +- .../chronicle/src/server/plugins/telemetry.ts | 6 +- packages/chronicle/src/server/vite-config.ts | 9 +- .../src/themes/default/ContentDirButtons.tsx | 2 +- .../src/themes/default/Layout.module.css | 28 ++- .../chronicle/src/themes/default/Layout.tsx | 45 ++-- .../chronicle/src/themes/default/OpenInAI.tsx | 11 +- .../src/themes/default/SidebarLogo.tsx | 2 +- packages/chronicle/src/themes/default/Toc.tsx | 4 +- .../src/themes/default/VersionSwitcher.tsx | 2 +- .../chronicle/src/themes/fanfold/Layout.tsx | 6 +- .../src/themes/paper/ContentDirDropdown.tsx | 4 +- .../chronicle/src/themes/paper/Layout.tsx | 8 +- packages/chronicle/src/themes/paper/Page.tsx | 16 +- .../src/themes/paper/VersionSwitcher.tsx | 4 +- packages/chronicle/src/themes/registry.ts | 11 +- .../src/types/analytics-google-analytics.d.ts | 15 ++ packages/chronicle/tsconfig.json | 6 +- 45 files changed, 409 insertions(+), 259 deletions(-) create mode 100644 packages/chronicle/src/components/ui/icons.ts delete mode 100644 packages/chronicle/src/lib/get-llm-text.ts create mode 100644 packages/chronicle/src/types/analytics-google-analytics.d.ts diff --git a/bun.lock b/bun.lock index 18d0e29e..98cf45d7 100644 --- a/bun.lock +++ b/bun.lock @@ -20,12 +20,11 @@ }, "dependencies": { "@analytics/google-analytics": "^1.1.0", - "@base-ui/react": ">=1.5.0 <1.6.0", + "@base-ui/react": "~1.6.0", "@codemirror/lang-json": "^6.0.2", "@codemirror/state": "^6.7.1", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.43.6", - "@heroicons/react": "^2.2.0", "@opentelemetry/api": "^1.9.1", "@opentelemetry/api-logs": "^0.218.0", "@opentelemetry/exporter-prometheus": "^0.214.0", @@ -33,8 +32,7 @@ "@opentelemetry/sdk-logs": "^0.218.0", "@opentelemetry/sdk-metrics": "^2.10.0", "@opentelemetry/semantic-conventions": "^1.43.0", - "@radix-ui/react-icons": "^1.3.2", - "@raystack/apsara": "1.0.0-rc.7", + "@raystack/apsara": "1.6.0", "@shikijs/rehype": "^4.3.1", "@tanstack/react-query": "5.101.4", "@vitejs/plugin-react": "^6.0.4", @@ -43,8 +41,8 @@ "class-variance-authority": "^0.7.1", "codemirror": "^6.0.2", "commander": "^14.0.3", - "fumadocs-core": "16.12.1", - "fumadocs-mdx": "14.3.1", + "fumadocs-core": "16.15.4", + "fumadocs-mdx": "15.4.0", "github-slugger": "^2.0.0", "glob": "^11.1.0", "gray-matter": "^4.0.3", @@ -52,6 +50,7 @@ "html-tag-names": "^2.1.0", "http-status-codes": "^2.3.0", "lodash-es": "^4.18.1", + "lucide-react": "^0.577.0", "mermaid": "^11.16.0", "minisearch": "^7.2.0", "nitro": "3.0.260610-beta", @@ -81,6 +80,7 @@ "@biomejs/biome": "^2.5.5", "@playwright/test": "^1.61.1", "@raystack/tools-config": "0.56.0", + "@types/bun": "^1.4.0", "@types/hast": "^3.0.5", "@types/lodash-es": "^4.17.12", "@types/mdast": "^4.0.4", @@ -118,9 +118,9 @@ "@babel/runtime": ["@babel/runtime@7.29.2", "", {}, "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="], - "@base-ui/react": ["@base-ui/react@1.5.0", "", { "dependencies": { "@babel/runtime": "^7.29.2", "@base-ui/utils": "0.2.9", "@floating-ui/react-dom": "^2.1.8", "@floating-ui/utils": "^0.2.11", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@date-fns/tz": "^1.2.0", "@types/react": "^17 || ^18 || ^19", "date-fns": "^4.0.0", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@date-fns/tz", "@types/react", "date-fns"] }, "sha512-z1gSAlced1yY+iM+mHDEtIkD8UI3Ebs52MuBPxvV6f5hRutk+xvCH/wuB7hDqDzK9JG5FoMz5nhrqtSs1wjt1A=="], + "@base-ui/react": ["@base-ui/react@1.6.0", "", { "dependencies": { "@babel/runtime": "^7.29.2", "@base-ui/utils": "0.3.1", "@floating-ui/react-dom": "^2.1.8", "@floating-ui/utils": "^0.2.11", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@date-fns/tz": "^1.2.0", "@types/react": "^17 || ^18 || ^19", "date-fns": "^4.0.0", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@date-fns/tz", "@types/react", "date-fns"] }, "sha512-/jzjTWJYXhRFO45Bev9lc3cHbmjzCMpUqbMZ2AgKy/z25mY9B6shGSNcXcjQar9n5doM0KYW1W8fcFv2jZBuMw=="], - "@base-ui/utils": ["@base-ui/utils@0.2.9", "", { "dependencies": { "@babel/runtime": "^7.29.2", "@floating-ui/utils": "^0.2.11", "reselect": "^5.1.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-x/PDDCYzoqPpjrdyb3VcyylTI2IjUXEtYDGi5foh7KsnmNJIIaVwA2GLgDH1dps1GgXiJbA60hM+AyuTfQzIvw=="], + "@base-ui/utils": ["@base-ui/utils@0.3.1", "", { "dependencies": { "@babel/runtime": "^7.29.2", "@floating-ui/utils": "^0.2.11", "reselect": "^5.2.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-gFFiltORVmW/N6IILTGxizP3PBpVpysqML1ALY5Vk0mH+7faVkCknOU31goYHN5Aoek2dkjxva1XOD2Ce9WuIg=="], "@biomejs/biome": ["@biomejs/biome@2.5.5", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.5.5", "@biomejs/cli-darwin-x64": "2.5.5", "@biomejs/cli-linux-arm64": "2.5.5", "@biomejs/cli-linux-arm64-musl": "2.5.5", "@biomejs/cli-linux-x64": "2.5.5", "@biomejs/cli-linux-x64-musl": "2.5.5", "@biomejs/cli-win32-arm64": "2.5.5", "@biomejs/cli-win32-x64": "2.5.5" }, "bin": { "biome": "bin/biome" } }, "sha512-r1S8nFsAG1MY+vJFZALzIvwXAJv6ejDQ0mxP21Tgr9YK3ZFtjrvbBwDdNhx1rUqvccEIeNg20cYCNzl6Cr69pQ=="], @@ -164,63 +164,69 @@ "@date-fns/tz": ["@date-fns/tz@1.4.1", "", {}, "sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA=="], + "@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="], + + "@dnd-kit/core": ["@dnd-kit/core@6.3.1", "", { "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ=="], + + "@dnd-kit/utilities": ["@dnd-kit/utilities@3.2.2", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg=="], + "@emnapi/core": ["@emnapi/core@1.11.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ=="], "@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="], "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.28.2", "", { "os": "android", "cpu": "arm" }, "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.2", "", { "os": "android", "cpu": "arm64" }, "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.28.0", "", { "os": "android", "cpu": "x64" }, "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.28.2", "", { "os": "android", "cpu": "x64" }, "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.2", "", { "os": "linux", "cpu": "arm" }, "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.2", "", { "os": "linux", "cpu": "x64" }, "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.0", "", { "os": "none", "cpu": "x64" }, "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.2", "", { "os": "none", "cpu": "x64" }, "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], "@floating-ui/core": ["@floating-ui/core@1.7.5", "", { "dependencies": { "@floating-ui/utils": "^0.2.11" } }, "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ=="], @@ -230,7 +236,7 @@ "@floating-ui/utils": ["@floating-ui/utils@0.2.11", "", {}, "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg=="], - "@heroicons/react": ["@heroicons/react@2.2.0", "", { "peerDependencies": { "react": ">= 16 || ^19.0.0-rc" } }, "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ=="], + "@fumari/image-size": ["@fumari/image-size@0.1.0", "", {}, "sha512-x2o9u6P8uKUK15B8XgEoRhR3PgLoLSbQKK6FUCd14JzumEw+e8FXZPelij/dZ4VQVMp4r61VD3DcvSo3aEhLAA=="], "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], @@ -288,6 +294,8 @@ "@isaacs/cliui": ["@isaacs/cliui@9.0.0", "", {}, "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], + "@lezer/common": ["@lezer/common@1.5.1", "", {}, "sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw=="], "@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], @@ -320,15 +328,11 @@ "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.43.0", "", {}, "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg=="], - "@orama/orama": ["@orama/orama@3.1.18", "", {}, "sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA=="], - "@oxc-project/types": ["@oxc-project/types@0.139.0", "", {}, "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw=="], "@playwright/test": ["@playwright/test@1.61.1", "", { "dependencies": { "playwright": "1.61.1" }, "bin": { "playwright": "cli.js" } }, "sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig=="], - "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], - - "@raystack/apsara": ["@raystack/apsara@1.0.0-rc.7", "", { "dependencies": { "@base-ui/react": "^1.4.1", "@base-ui/utils": "^0.2.6", "@radix-ui/react-icons": "^1.3.2", "@tanstack/match-sorter-utils": "^8.8.4", "@tanstack/react-table": "^8.9.2", "@tanstack/react-virtual": "^3.13.13", "@tanstack/table-core": "^8.9.2", "class-variance-authority": "^0.7.1", "color": "^5.0.0", "dayjs": "^1.11.11", "prism-react-renderer": "^2.4.1", "react-day-picker": "^9.6.7" }, "peerDependencies": { "@types/react": "^19", "react": "^19", "react-dom": "^19" }, "optionalPeers": ["@types/react"] }, "sha512-Rtg2BaehnAh1ypDmA5PEEkx5wNDnwZHaxoe+gBA7dkZB5YYaSiIdL1MPaGA7D2dahVl8aZ82vklfm0c9+xyRqw=="], + "@raystack/apsara": ["@raystack/apsara@1.6.0", "", { "dependencies": { "@base-ui/react": "~1.6.0", "@base-ui/utils": "~0.3.1", "@dnd-kit/core": "^6.3.1", "@tanstack/match-sorter-utils": "^8.8.4", "@tanstack/react-table": "^8.9.2", "@tanstack/react-virtual": "^3.13.13", "@tanstack/table-core": "^8.9.2", "class-variance-authority": "^0.7.1", "culori": "^4.0.2", "dayjs": "^1.11.20", "prism-react-renderer": "^2.4.1", "prosemirror-commands": "^1.7.1", "prosemirror-history": "^1.4.1", "prosemirror-keymap": "^1.2.2", "prosemirror-model": "^1.25.1", "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.40.0", "react-day-picker": "^9.6.7" }, "peerDependencies": { "@types/react": "^19", "lucide-react": ">=0.500.0 <1.0.0", "react": "^19", "react-dom": "^19" }, "optionalPeers": ["@types/react"] }, "sha512-xb9+WrDarK0jwpUQ1nAfdbBCuB3DW4EmFQRz6Pnjqv12vitgd/HNiP6ffesWeOU/cgia+3DdPioPhc0Bu2rBFg=="], "@raystack/chronicle": ["@raystack/chronicle@workspace:packages/chronicle"], @@ -404,6 +408,8 @@ "@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + "@types/bun": ["@types/bun@1.4.0", "", { "dependencies": { "bun-types": "1.4.0" } }, "sha512-K+lZULY23vRgK/CfTjFIV+tyifaNdSMlPh9j+6mQ/cLfpOznLyAuzgV/JQysyECpkBQLVMSyvjlr2fBUSA9wFQ=="], + "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], @@ -508,6 +514,32 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.4", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg=="], + "@yuku-analyzer/binding-android-arm64": ["@yuku-analyzer/binding-android-arm64@0.9.3", "", { "os": "android", "cpu": "arm64" }, "sha512-6dOwkawiJYtUUBchfjrFo7poz460Yg+aQNgr4lHUPZ2fNW+llpMEZkbznTq25BEmmiBGPJr+L15dzTvR8zP4vQ=="], + + "@yuku-analyzer/binding-darwin-arm64": ["@yuku-analyzer/binding-darwin-arm64@0.9.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DTRoWK7AqNfshN+DcCS/s4n86br0ZusISeXLZWWNuvnZ3b9LCVXdWRVPlnMpEwsmSH3c3QSwL7MAOPyEHMe+FA=="], + + "@yuku-analyzer/binding-darwin-x64": ["@yuku-analyzer/binding-darwin-x64@0.9.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-EWzaR0/AL3ikZfUiADG1SmbB+wF7GGhXFKhMWm3RbOTf+ATyEW7Fa9nsjo1K70pWEeVZHRm9MU4iq7LIUEEgfg=="], + + "@yuku-analyzer/binding-freebsd-x64": ["@yuku-analyzer/binding-freebsd-x64@0.9.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Ao4/v+ppzIFVs2SldvBM2hc9NsijXNsKc1xUY+d+Nv20HrjRdm96HtrkIViw7zI5i6Ca77jkd8VbhWE8E4kgyg=="], + + "@yuku-analyzer/binding-linux-arm-gnu": ["@yuku-analyzer/binding-linux-arm-gnu@0.9.3", "", { "os": "linux", "cpu": "arm" }, "sha512-EZc2H6bAyl4u3z48Jtqf4Un1657TpOkBWEmSdPCY1tHCO4YUFaNAz4dPA93yWgo5t38oRQT9UoXlwse/4aLtxw=="], + + "@yuku-analyzer/binding-linux-arm-musl": ["@yuku-analyzer/binding-linux-arm-musl@0.9.3", "", { "os": "linux", "cpu": "arm" }, "sha512-pKny3wEa2Xl4kPoqNU8fO5NCzcp9VgMAkLpN3GZ5TOkdz23ppuzUqddlhad43/9puxfckX5aZqfxML/1vGoxBw=="], + + "@yuku-analyzer/binding-linux-arm64-gnu": ["@yuku-analyzer/binding-linux-arm64-gnu@0.9.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-bfpsIupfbX7N4ueSjo3Zm+Mob0q7MjrZX+INMGcPjNnXBcyKjkzrTotkqbEbwgfiNKhqyDVjynwsh64xsv5IPg=="], + + "@yuku-analyzer/binding-linux-arm64-musl": ["@yuku-analyzer/binding-linux-arm64-musl@0.9.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Q+AAUrrsgYgHb0/Wrm+HnSKN7xOpkC+6Y2812dZw5/rrSX7+qjRjJ+3uNnCZlkHpH3Hy7WXbLIa/IncP4bcHQA=="], + + "@yuku-analyzer/binding-linux-x64-gnu": ["@yuku-analyzer/binding-linux-x64-gnu@0.9.3", "", { "os": "linux", "cpu": "x64" }, "sha512-ZQyjmSDRHTkDlddrzmIG1/nMUYDZC21XUguzQ4qvSWtfq6CsfJvIDFBPfJ03YDNQ+wR0px9Ly/xAa8VC0p9rHQ=="], + + "@yuku-analyzer/binding-linux-x64-musl": ["@yuku-analyzer/binding-linux-x64-musl@0.9.3", "", { "os": "linux", "cpu": "x64" }, "sha512-EIYzThB5pI3BiZHFNYyY8nMQ38z9l8/kT8uYvfYVpZ9TNEC0YgqX95MH61l9RILCYFDx+DbLoGajGY55JFvb6Q=="], + + "@yuku-analyzer/binding-win32-arm64": ["@yuku-analyzer/binding-win32-arm64@0.9.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-KF+Ho3jtjikfPYJ76NL1KiPYwF+0UjnsASX0k461BZ1Er4pRQG39o8WvsngLT+fDg6JxB3v5J+ScDrto29RVnA=="], + + "@yuku-analyzer/binding-win32-x64": ["@yuku-analyzer/binding-win32-x64@0.9.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4pdUfYVYPf05vyygvWiXsiI/tdPqn5bBiHs7c1TBIm3Kx7/w5pq++myNQ/8CUH/Proz+1kHtCr/lDJF9k67fqg=="], + + "@yuku-toolchain/types": ["@yuku-toolchain/types@0.9.3", "", {}, "sha512-rFE+5P4g2wxko5C85MugJOlVjBHEQq87dIkhLkniLXLp63PEtgaFjD954i5HXlfnyzLxPcZHsSOVDVgmo1HToA=="], + "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], @@ -516,7 +548,7 @@ "analytics-utils": ["analytics-utils@1.1.1", "", { "dependencies": { "@analytics/type-utils": "^0.6.4", "dlv": "^1.1.3" }, "peerDependencies": { "@types/dlv": "^1.0.0" } }, "sha512-nRybjTpRAcHVhWb1cvYaOLJaI3R79r8XjMbu5c0wd2jKmANNqSrYwybiU0X3mp+CQQdm4YiAggTXb2cIA8XhUg=="], - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], @@ -528,6 +560,8 @@ "brace-expansion": ["brace-expansion@5.0.4", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg=="], + "bun-types": ["bun-types@1.4.0", "", { "dependencies": { "@types/node": "*" } }, "sha512-iIKw23BspnQQYd3prITOBxeUsxBHnwzX6YJfGMuNOZzeNcMmVqzIIVGRm1l69ogaPQmb4wB6BN8mA5bE9YuC5Q=="], + "camelize": ["camelize@1.0.1", "", {}, "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -552,14 +586,8 @@ "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - "color": ["color@5.0.3", "", { "dependencies": { "color-convert": "^3.1.3", "color-string": "^2.1.3" } }, "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA=="], - - "color-convert": ["color-convert@3.1.3", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg=="], - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - "color-string": ["color-string@2.1.4", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg=="], - "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], @@ -592,6 +620,8 @@ "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + "culori": ["culori@4.0.2", "", {}, "sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw=="], + "cytoscape": ["cytoscape@3.34.0", "", {}, "sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg=="], "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], @@ -668,7 +698,7 @@ "date-fns-jalali": ["date-fns-jalali@4.1.0-0", "", {}, "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg=="], - "dayjs": ["dayjs@1.11.19", "", {}, "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="], + "dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="], "db0": ["db0@0.3.4", "", { "peerDependencies": { "@electric-sql/pglite": "*", "@libsql/client": "*", "better-sqlite3": "*", "drizzle-orm": "*", "mysql2": "*", "sqlite3": "*" }, "optionalPeers": ["@electric-sql/pglite", "@libsql/client", "better-sqlite3", "drizzle-orm", "mysql2", "sqlite3"] }, "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw=="], @@ -698,7 +728,7 @@ "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], + "esbuild": ["esbuild@0.28.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.2", "@esbuild/android-arm": "0.28.2", "@esbuild/android-arm64": "0.28.2", "@esbuild/android-x64": "0.28.2", "@esbuild/darwin-arm64": "0.28.2", "@esbuild/darwin-x64": "0.28.2", "@esbuild/freebsd-arm64": "0.28.2", "@esbuild/freebsd-x64": "0.28.2", "@esbuild/linux-arm": "0.28.2", "@esbuild/linux-arm64": "0.28.2", "@esbuild/linux-ia32": "0.28.2", "@esbuild/linux-loong64": "0.28.2", "@esbuild/linux-mips64el": "0.28.2", "@esbuild/linux-ppc64": "0.28.2", "@esbuild/linux-riscv64": "0.28.2", "@esbuild/linux-s390x": "0.28.2", "@esbuild/linux-x64": "0.28.2", "@esbuild/netbsd-arm64": "0.28.2", "@esbuild/netbsd-x64": "0.28.2", "@esbuild/openbsd-arm64": "0.28.2", "@esbuild/openbsd-x64": "0.28.2", "@esbuild/openharmony-arm64": "0.28.2", "@esbuild/sunos-x64": "0.28.2", "@esbuild/win32-arm64": "0.28.2", "@esbuild/win32-ia32": "0.28.2", "@esbuild/win32-x64": "0.28.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA=="], "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], @@ -740,9 +770,9 @@ "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], - "fumadocs-core": ["fumadocs-core@16.12.1", "", { "dependencies": { "@orama/orama": "^3.1.18", "estree-util-value-to-estree": "^3.5.0", "github-slugger": "^2.0.0", "hast-util-to-estree": "^3.1.3", "hast-util-to-jsx-runtime": "^2.3.6", "mdast-util-mdx": "^3.0.0", "mdast-util-to-markdown": "^2.1.2", "npm-to-yarn": "3.1.0", "remark": "^15.0.1", "remark-gfm": "^4.0.1", "remark-rehype": "^11.1.2", "scroll-into-view-if-needed": "^3.1.0", "shiki": "^4.3.1", "tinyglobby": "^0.2.17", "unified": "^11.0.5", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3", "yaml": "^2.9.0" }, "peerDependencies": { "@mdx-js/mdx": "*", "@mixedbread/sdk": "0.x.x", "@orama/core": "1.x.x", "@oramacloud/client": "2.x.x", "@tanstack/react-router": "1.x.x", "@types/estree-jsx": "*", "@types/hast": "*", "@types/mdast": "*", "@types/react": "*", "algoliasearch": "5.x.x", "flexsearch": "*", "lucide-react": "*", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0", "react-router": "7.x.x || 8.x.x", "waku": "*", "zod": "4.x.x" }, "optionalPeers": ["@mdx-js/mdx", "@mixedbread/sdk", "@orama/core", "@oramacloud/client", "@tanstack/react-router", "@types/estree-jsx", "@types/hast", "@types/mdast", "@types/react", "algoliasearch", "flexsearch", "lucide-react", "next", "react", "react-dom", "react-router", "waku", "zod"] }, "sha512-6NnDxUqe0hIiShbWjqvLXvPYV0n0gi01UHmDAkDs5KVcfxfgOPz5bAbj45JDY0Ykq39Mr8z1xRt9h/HwIhe8fw=="], + "fumadocs-core": ["fumadocs-core@16.15.4", "", { "dependencies": { "@fumari/image-size": "^0.1.0", "estree-util-value-to-estree": "^3.5.0", "github-slugger": "^2.0.0", "hast-util-to-estree": "^3.1.3", "hast-util-to-jsx-runtime": "^2.3.6", "mdast-util-mdx": "^3.0.0", "mdast-util-to-markdown": "^2.1.2", "npm-to-yarn": "3.2.0", "remark": "^15.0.1", "remark-gfm": "^4.0.1", "remark-rehype": "^11.1.2", "scroll-into-view-if-needed": "^3.1.0", "shiki": "^4.4.3", "tinyglobby": "^0.2.17", "unified": "^11.0.5", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3", "yaml": "^2.9.0", "zbsearch": "^4.0.0" }, "peerDependencies": { "@mdx-js/mdx": "*", "@mixedbread/sdk": "0.x.x", "@orama/core": "1.x.x", "@oramacloud/client": "2.x.x", "@tanstack/react-router": "1.x.x", "@types/estree-jsx": "*", "@types/hast": "*", "@types/mdast": "*", "@types/react": "*", "algoliasearch": "5.x.x", "flexsearch": "*", "lucide-react": "*", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0", "react-router": "7.x.x || 8.x.x", "waku": "*", "zod": "4.x.x" }, "optionalPeers": ["@mdx-js/mdx", "@mixedbread/sdk", "@orama/core", "@oramacloud/client", "@tanstack/react-router", "@types/estree-jsx", "@types/hast", "@types/mdast", "@types/react", "algoliasearch", "flexsearch", "lucide-react", "next", "react", "react-dom", "react-router", "waku", "zod"] }, "sha512-kdOuM0tvHkLWajnDu73BmtryPuUq4xsu610ssl1YMAm9fYF7BRmvYxx2apHbyf2Lt+7w8OEiWDTmB8Ja3zqp4Q=="], - "fumadocs-mdx": ["fumadocs-mdx@14.3.1", "", { "dependencies": { "@mdx-js/mdx": "^3.1.1", "@standard-schema/spec": "^1.1.0", "chokidar": "^5.0.0", "esbuild": "^0.28.0", "estree-util-value-to-estree": "^3.5.0", "js-yaml": "^4.1.1", "mdast-util-mdx": "^3.0.0", "mdast-util-to-markdown": "^2.1.2", "picocolors": "^1.1.1", "picomatch": "^4.0.4", "tinyexec": "^1.1.1", "tinyglobby": "^0.2.16", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3", "zod": "^4.3.6" }, "peerDependencies": { "@types/mdast": "*", "@types/mdx": "*", "@types/react": "*", "fumadocs-core": "^15.0.0 || ^16.0.0", "mdast-util-directive": "*", "next": "^15.3.0 || ^16.0.0", "react": "^19.2.0", "vite": "6.x.x || 7.x.x || 8.x.x" }, "optionalPeers": ["@types/mdast", "@types/mdx", "@types/react", "mdast-util-directive", "next", "react", "vite"], "bin": { "fumadocs-mdx": "dist/bin.js" } }, "sha512-0u2eXvYrZtrJB14y6fDhP0hhxLgmH8JOmRv6IVHALt5MqR9JIJxV5LJYlho8g8CJXRE8w12rVNFZN0rtUVAqGw=="], + "fumadocs-mdx": ["fumadocs-mdx@15.4.0", "", { "dependencies": { "@mdx-js/mdx": "^3.1.1", "@standard-schema/spec": "^1.1.0", "chokidar": "^5.0.0", "esbuild": "^0.28.2", "estree-util-value-to-estree": "^3.5.0", "github-slugger": "^2.0.0", "magic-string": "^1.2.2", "mdast-util-mdx": "^3.0.0", "picocolors": "^1.1.1", "picomatch": "^4.0.7", "tinyexec": "^1.3.0", "tinyglobby": "^0.2.17", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3", "yaml": "^2.9.0", "yuku-analyzer": "^0.9.1", "zod": "^4.4.3" }, "peerDependencies": { "@fumadocs/satteri": "0.x.x", "@types/mdast": "*", "@types/mdx": "*", "@types/react": "*", "fumadocs-core": "^16.15.3", "mdast-util-directive": "*", "next": "^15.3.0 || ^16.0.0", "react": "^19.2.0", "rolldown": "*", "satteri": "^0.10.5", "vite": "7.x.x || 8.x.x" }, "optionalPeers": ["@fumadocs/satteri", "@types/mdast", "@types/mdx", "@types/react", "mdast-util-directive", "next", "react", "rolldown", "satteri", "vite"], "bin": { "fumadocs-mdx": "./bin.js" } }, "sha512-bJCQfsckKUQ4x2pyz8OdASEAARVMB49kOej7njaJ3t+tYsP1HnwkmqiO8e/jdQHcv6JH3XkXWidTho3ZC/WBcA=="], "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], @@ -800,7 +830,7 @@ "jackspeak": ["jackspeak@4.2.3", "", { "dependencies": { "@isaacs/cliui": "^9.0.0" } }, "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg=="], - "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], "katex": ["katex@0.16.47", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg=="], @@ -842,6 +872,10 @@ "lru-cache": ["lru-cache@11.2.7", "", {}, "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA=="], + "lucide-react": ["lucide-react@0.577.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A=="], + + "magic-string": ["magic-string@1.2.3", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g=="], + "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], @@ -976,7 +1010,7 @@ "nitro": ["nitro@3.0.260610-beta", "", { "dependencies": { "consola": "^3.4.2", "crossws": "^0.4.6", "db0": "^0.3.4", "env-runner": "^0.1.12", "h3": "2.0.1-rc.22", "hookable": "^6.1.1", "nf3": "^0.3.17", "ocache": "^0.1.5", "ofetch": "2.0.0-alpha.3", "ohash": "^2.0.11", "rolldown": "^1.1.0", "srvx": "^0.11.16", "unenv": "2.0.0-rc.24", "unstorage": "2.0.0-alpha.7" }, "peerDependencies": { "@vercel/queue": "^0.3.0", "dotenv": "*", "giget": "*", "jiti": "^2.7.0", "rollup": "^4.61.1", "vite": "^7 || ^8", "xml2js": "^0.6.2", "zephyr-agent": "^0.2.0" }, "optionalPeers": ["@vercel/queue", "dotenv", "giget", "jiti", "rollup", "vite", "xml2js", "zephyr-agent"], "bin": { "nitro": "dist/cli/index.mjs" } }, "sha512-KPb4L5yaF/Rx/xoGMpgHRJvZhbhGiqbRKOwwPLCH9jKTKTsEUHLjnJas85AeCzaswqa8Wi52eQBtRsODC4PS0Q=="], - "npm-to-yarn": ["npm-to-yarn@3.1.0", "", {}, "sha512-9gNsO/JB3LeWOZXBX09cKMsCPwVcu1ExIf+GUuTN9G+0zZvLIK0nU9+lE9jue3MSKAxPdrh0rO072mWNvciqeQ=="], + "npm-to-yarn": ["npm-to-yarn@3.2.0", "", {}, "sha512-K1HmQeZT2HrjpsR6KgqbN2FAXL2NrJJmNUSD9ck7HGTVu1JKXox8n9SB+tjbU8m8JGLF4OscrroPepew/L7/Xw=="], "ocache": ["ocache@0.1.5", "", { "dependencies": { "ohash": "^2.0.11" } }, "sha512-kNNnkkVQup/QDvmTz8Q84wc2ntiyoVHDxa6eHWKt5qdGAmFRBIxy83rxgCYEjW0x06UJ9E3P6VgM2yY4rOBH4w=="], @@ -990,6 +1024,8 @@ "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], + "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], + "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], @@ -1010,7 +1046,7 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], + "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], @@ -1030,6 +1066,20 @@ "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + "prosemirror-commands": ["prosemirror-commands@1.7.2", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-q6Q6szxqdu9Xd6EcdKsqXghu5nQdZTpB4Q9yd04WRc7/jt763e/rT60Owh0L1GYY+T46o5rD+9lEN36dZS43tw=="], + + "prosemirror-history": ["prosemirror-history@1.5.0", "", { "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.31.0", "rope-sequence": "^1.3.0" } }, "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg=="], + + "prosemirror-keymap": ["prosemirror-keymap@1.2.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw=="], + + "prosemirror-model": ["prosemirror-model@1.25.11", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-QWg9RhnpLlogAmp3p96uEFrE5txQpFynd4vhBAELkwgOCWQs/X0yCzB3/hrHqiPwf91RG5KyWq6553zs9JqIOQ=="], + + "prosemirror-state": ["prosemirror-state@1.4.4", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.27.0" } }, "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw=="], + + "prosemirror-transform": ["prosemirror-transform@1.12.1", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-t4F5615FycnCqsX7ShTUs8+jfnwcf46kuFRvSl/3qFx2QTZ4DjgowesLHQXcFP7G//TjesqZG3WtgL7vdyVJyA=="], + + "prosemirror-view": ["prosemirror-view@1.42.3", "", { "dependencies": { "prosemirror-model": "^1.25.8", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-oTN7EtH+CpwxU9NrwEYWd0UZ4JUx7l048l5A2Xppm4p/60isZYLnth9QVQmC3VRIvdrIWCxwZSd+Uz791G31/w=="], + "react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], "react-day-picker": ["react-day-picker@9.13.2", "", { "dependencies": { "@date-fns/tz": "^1.4.1", "date-fns": "^4.1.0", "date-fns-jalali": "^4.1.0-0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-IMPiXfXVIAuR5Yk58DDPBC8QKClrhdXV+Tr/alBrwrHUw0qDDYB1m5zPNuTnnPIr/gmJ4ChMxmtqPdxm8+R4Eg=="], @@ -1082,12 +1132,14 @@ "remove-accents": ["remove-accents@0.5.0", "", {}, "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A=="], - "reselect": ["reselect@5.1.1", "", {}, "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w=="], + "reselect": ["reselect@5.3.0", "", {}, "sha512-XGoLeRAVzUTcJ1qkxPQhDJyIZ5d6zzZD9nT7AEZOaaU9UbWclhycElmhO+VD5bFeLuzhPBaOV2oXC8uG35ZSpg=="], "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], "rolldown": ["rolldown@1.1.5", "", { "dependencies": { "@oxc-project/types": "=0.139.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.1.5", "@rolldown/binding-darwin-arm64": "1.1.5", "@rolldown/binding-darwin-x64": "1.1.5", "@rolldown/binding-freebsd-x64": "1.1.5", "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", "@rolldown/binding-linux-arm64-gnu": "1.1.5", "@rolldown/binding-linux-arm64-musl": "1.1.5", "@rolldown/binding-linux-ppc64-gnu": "1.1.5", "@rolldown/binding-linux-s390x-gnu": "1.1.5", "@rolldown/binding-linux-x64-gnu": "1.1.5", "@rolldown/binding-linux-x64-musl": "1.1.5", "@rolldown/binding-openharmony-arm64": "1.1.5", "@rolldown/binding-wasm32-wasi": "1.1.5", "@rolldown/binding-win32-arm64-msvc": "1.1.5", "@rolldown/binding-win32-x64-msvc": "1.1.5" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA=="], + "rope-sequence": ["rope-sequence@1.3.4", "", {}, "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="], + "rou3": ["rou3@0.9.1", "", {}, "sha512-z/sSmzvtwMDDnxsPVhfWMuG6F6mbmhFDXoVqLmMfbpDD9qfV3GDmSQpf0+W296/ZDIpW2wcMmBfpVFzcnOi/nA=="], "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], @@ -1152,7 +1204,7 @@ "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], - "tinyexec": ["tinyexec@1.1.1", "", {}, "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg=="], + "tinyexec": ["tinyexec@1.3.0", "", {}, "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ=="], "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], @@ -1216,28 +1268,28 @@ "yoga-layout": ["yoga-layout@3.2.1", "", {}, "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ=="], + "yuku-analyzer": ["yuku-analyzer@0.9.3", "", { "dependencies": { "@yuku-toolchain/types": "^0.9.3", "yuku-ast": "^0.9.3" }, "optionalDependencies": { "@yuku-analyzer/binding-android-arm64": "0.9.3", "@yuku-analyzer/binding-darwin-arm64": "0.9.3", "@yuku-analyzer/binding-darwin-x64": "0.9.3", "@yuku-analyzer/binding-freebsd-x64": "0.9.3", "@yuku-analyzer/binding-linux-arm-gnu": "0.9.3", "@yuku-analyzer/binding-linux-arm-musl": "0.9.3", "@yuku-analyzer/binding-linux-arm64-gnu": "0.9.3", "@yuku-analyzer/binding-linux-arm64-musl": "0.9.3", "@yuku-analyzer/binding-linux-x64-gnu": "0.9.3", "@yuku-analyzer/binding-linux-x64-musl": "0.9.3", "@yuku-analyzer/binding-win32-arm64": "0.9.3", "@yuku-analyzer/binding-win32-x64": "0.9.3" } }, "sha512-2xSREErroEF8boH7XyKfVO5hbjP6PCIYYnLR2Abg6PGJaFVbETLucmbzIebBOHeyY4GO6VXzloTuhUldR/zyew=="], + + "yuku-ast": ["yuku-ast@0.9.3", "", { "dependencies": { "@yuku-toolchain/types": "^0.9.3" } }, "sha512-Kt0PXlPCXdKF1fWFTl7N3DaxsVk6DHF8VAXHJMkwPtJnWYgbx20pYgGSweuC/86mIM7k1NUITQ4JffgOLUWTCw=="], + + "zbsearch": ["zbsearch@4.0.0", "", {}, "sha512-gm4zfO31n2ZdruTTRQoWVWO4Q2+zrDt2GlrvIc+5JulRQNAm4IanCxER82vQ7Ug96FYkGqWUJBXFe1kGAcDWaQ=="], + "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], "@antfu/install-pkg/tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], - "@codemirror/autocomplete/@codemirror/view": ["@codemirror/view@6.39.14", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg=="], - "@codemirror/commands/@codemirror/view": ["@codemirror/view@6.39.14", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg=="], - "@codemirror/language/@codemirror/view": ["@codemirror/view@6.39.14", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg=="], - "@codemirror/lint/@codemirror/view": ["@codemirror/view@6.39.14", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg=="], - "@codemirror/search/@codemirror/view": ["@codemirror/view@6.39.14", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg=="], - "@codemirror/theme-one-dark/@codemirror/view": ["@codemirror/view@6.39.14", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg=="], "@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], @@ -1264,23 +1316,14 @@ "@opentelemetry/sdk-metrics/@opentelemetry/core": ["@opentelemetry/core@2.10.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ=="], - "@raystack/apsara/@base-ui/react": ["@base-ui/react@1.4.1", "", { "dependencies": { "@babel/runtime": "^7.29.2", "@base-ui/utils": "0.2.8", "@floating-ui/react-dom": "^2.1.8", "@floating-ui/utils": "^0.2.11", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@date-fns/tz": "^1.2.0", "@types/react": "^17 || ^18 || ^19", "date-fns": "^4.0.0", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@date-fns/tz", "@types/react", "date-fns"] }, "sha512-Ab5/LIhcmL8BQcsBUYiOfkSDRdLpvgUBzMK30cu684JPcLclYlztharvCZyNNgzJtbAiREzI9q0pI5erHCMgCw=="], - - "@raystack/apsara/@base-ui/utils": ["@base-ui/utils@0.2.8", "", { "dependencies": { "@babel/runtime": "^7.29.2", "@floating-ui/utils": "^0.2.11", "reselect": "^5.1.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-jvOi+c+ftGlGotNcKnzPVg2IhCaDTB6/6R3JeqdjdXktuAJi3wKH9T7+svuaKh1mmfVU11UWzUZVH74JDfi/wQ=="], - "@shikijs/core/@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], "@shikijs/primitive/@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], "@shikijs/types/@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], - "codemirror/@codemirror/view": ["@codemirror/view@6.39.14", "", { "dependencies": { "@codemirror/state": "^6.5.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WJcvgHm/6Q7dvGT0YFv/6PSkoc36QlR0VCESS6x9tGsnF1lWLmmYxOgX3HH6v8fo6AvSLgpcs+H0Olre6MKXlg=="], - "color-convert/color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], - - "color-string/color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], - "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], @@ -1291,11 +1334,7 @@ "dagre-d3-es/lodash-es": ["lodash-es@4.17.23", "", {}, "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg=="], - "fumadocs-mdx/tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], - - "fumadocs-mdx/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - - "gray-matter/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "fumadocs-core/shiki": ["shiki@4.4.3", "", { "dependencies": { "@shikijs/core": "4.4.3", "@shikijs/engine-javascript": "4.4.3", "@shikijs/engine-oniguruma": "4.4.3", "@shikijs/langs": "4.4.3", "@shikijs/themes": "4.4.3", "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g=="], "hast-util-to-estree/@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], @@ -1317,8 +1356,6 @@ "mdast-util-to-hast/@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], - "mermaid/dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="], - "nitro/h3": ["h3@2.0.1-rc.22", "", { "dependencies": { "rou3": "^0.8.1", "srvx": "^0.11.15" }, "peerDependencies": { "crossws": "^0.4.1" }, "optionalPeers": ["crossws"], "bin": { "h3": "bin/h3.mjs" } }, "sha512-Esv0DMIuPkCTSWCA0vO73vcTqwzH1wjSrAO1TXNu/K3up1sZHa9EKMapbmxCDYBeymC3fVTk4qxp7ogQWQ+KgA=="], "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], @@ -1347,8 +1384,20 @@ "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "fumadocs-core/shiki/@shikijs/core": ["@shikijs/core@4.4.3", "", { "dependencies": { "@shikijs/primitive": "4.4.3", "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5", "hast-util-to-html": "^9.0.5" } }, "sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg=="], + + "fumadocs-core/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.4.3", "", { "dependencies": { "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ=="], + + "fumadocs-core/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.4.3", "", { "dependencies": { "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w=="], + + "fumadocs-core/shiki/@shikijs/langs": ["@shikijs/langs@4.4.3", "", { "dependencies": { "@shikijs/types": "4.4.3" } }, "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A=="], + + "fumadocs-core/shiki/@shikijs/themes": ["@shikijs/themes@4.4.3", "", { "dependencies": { "@shikijs/types": "4.4.3" } }, "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw=="], + + "fumadocs-core/shiki/@shikijs/types": ["@shikijs/types@4.4.3", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g=="], "nitro/h3/rou3": ["rou3@0.8.1", "", {}, "sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA=="], + + "fumadocs-core/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.4.3", "", { "dependencies": { "@shikijs/types": "4.4.3", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ=="], } } diff --git a/packages/chronicle/package.json b/packages/chronicle/package.json index de71ed5f..0214278a 100644 --- a/packages/chronicle/package.json +++ b/packages/chronicle/package.json @@ -27,6 +27,7 @@ "@types/lodash-es": "^4.17.12", "@types/mdast": "^4.0.4", "@types/mdx": "^2.0.14", + "@types/bun": "^1.4.0", "@types/node": "^25.9.5", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", @@ -39,12 +40,11 @@ }, "dependencies": { "@analytics/google-analytics": "^1.1.0", - "@base-ui/react": ">=1.5.0 <1.6.0", + "@base-ui/react": "~1.6.0", "@codemirror/lang-json": "^6.0.2", "@codemirror/state": "^6.7.1", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.43.6", - "@heroicons/react": "^2.2.0", "@opentelemetry/api": "^1.9.1", "@opentelemetry/api-logs": "^0.218.0", "@opentelemetry/exporter-prometheus": "^0.214.0", @@ -52,8 +52,7 @@ "@opentelemetry/sdk-logs": "^0.218.0", "@opentelemetry/sdk-metrics": "^2.10.0", "@opentelemetry/semantic-conventions": "^1.43.0", - "@radix-ui/react-icons": "^1.3.2", - "@raystack/apsara": "1.0.0-rc.7", + "@raystack/apsara": "1.6.0", "@shikijs/rehype": "^4.3.1", "@tanstack/react-query": "5.101.4", "@vitejs/plugin-react": "^6.0.4", @@ -62,8 +61,8 @@ "class-variance-authority": "^0.7.1", "codemirror": "^6.0.2", "commander": "^14.0.3", - "fumadocs-core": "16.12.1", - "fumadocs-mdx": "14.3.1", + "fumadocs-core": "16.15.4", + "fumadocs-mdx": "15.4.0", "github-slugger": "^2.0.0", "glob": "^11.1.0", "gray-matter": "^4.0.3", @@ -71,6 +70,7 @@ "html-tag-names": "^2.1.0", "http-status-codes": "^2.3.0", "lodash-es": "^4.18.1", + "lucide-react": "^0.577.0", "mermaid": "^11.16.0", "minisearch": "^7.2.0", "nitro": "3.0.260610-beta", diff --git a/packages/chronicle/src/components/analytics/AnalyticsProvider.tsx b/packages/chronicle/src/components/analytics/AnalyticsProvider.tsx index 345746f7..f3759d08 100644 --- a/packages/chronicle/src/components/analytics/AnalyticsProvider.tsx +++ b/packages/chronicle/src/components/analytics/AnalyticsProvider.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react' import { useLocation } from 'react-router' import type { ReactNode } from 'react' import type { AnalyticsConfig } from '@/types' -import type { AnalyticsInstance } from 'analytics' +import type { AnalyticsInstance, AnalyticsPlugin } from 'analytics' function PageViewTracker({ analytics }: { analytics: AnalyticsInstance }) { const { pathname } = useLocation() @@ -35,7 +35,7 @@ export function AnalyticsProvider({ const init = async () => { try { - const plugins: unknown[] = [] + const plugins: AnalyticsPlugin[] = [] if (config.googleAnalytics?.measurementId) { const { default: googleAnalytics } = await import('@analytics/google-analytics') plugins.push( diff --git a/packages/chronicle/src/components/api/ApiSkeleton.tsx b/packages/chronicle/src/components/api/ApiSkeleton.tsx index ebf1e055..cd638c0a 100644 --- a/packages/chronicle/src/components/api/ApiSkeleton.tsx +++ b/packages/chronicle/src/components/api/ApiSkeleton.tsx @@ -73,7 +73,7 @@ export function ApiFullSkeleton() { diff --git a/packages/chronicle/src/components/api/api-field-list.tsx b/packages/chronicle/src/components/api/api-field-list.tsx index a4f2da4f..93646208 100644 --- a/packages/chronicle/src/components/api/api-field-list.tsx +++ b/packages/chronicle/src/components/api/api-field-list.tsx @@ -2,7 +2,7 @@ import { useState, type ReactNode } from 'react' import { Badge, Flex } from '@raystack/apsara' -import { ChevronRightIcon, ChevronDownIcon } from '@radix-ui/react-icons' +import { ChevronDownIcon, ChevronRightIcon } from '@/components/ui/icons'; import type { SchemaField } from '@/lib/schema' import styles from './api-field-list.module.css' diff --git a/packages/chronicle/src/components/api/api-overview.tsx b/packages/chronicle/src/components/api/api-overview.tsx index 8fc4aaf6..fe0bd345 100644 --- a/packages/chronicle/src/components/api/api-overview.tsx +++ b/packages/chronicle/src/components/api/api-overview.tsx @@ -3,7 +3,7 @@ import { useState } from 'react' import type { OpenAPIV3 } from 'openapi-types' import { Flex, Button, Menu, CopyButton, Separator } from '@raystack/apsara' -import { ChevronDownIcon } from '@radix-ui/react-icons' +import { ChevronDownIcon } from '@/components/ui/icons'; import { MethodBadge } from '@/components/api/method-badge' import { ApiCodeSnippet } from './api-code-snippet' import { ApiResponsePanel } from './api-response-panel' diff --git a/packages/chronicle/src/components/api/playground-dialog.tsx b/packages/chronicle/src/components/api/playground-dialog.tsx index c2b3c9b3..ce54c567 100644 --- a/packages/chronicle/src/components/api/playground-dialog.tsx +++ b/packages/chronicle/src/components/api/playground-dialog.tsx @@ -3,8 +3,7 @@ import { useState, useCallback, useMemo, useEffect } from 'react' import type { OpenAPIV3 } from 'openapi-types' import { Dialog, Button, Badge, IconButton, Input, CopyButton, Select, Menu } from '@raystack/apsara' -import { Cross2Icon, ChevronDownIcon, ChevronUpIcon, PlayIcon, PlusIcon } from '@radix-ui/react-icons' -import { CounterClockwiseClockIcon, CodeIcon } from '@radix-ui/react-icons' +import { ChevronDownIcon, ChevronUpIcon, CodeIcon, HistoryIcon, PlayIcon, PlusIcon, XIcon } from '@/components/ui/icons'; import { MethodBadge } from '@/components/api/method-badge' import { flattenSchema, generateExampleJson, toKind, type SchemaField } from '@/lib/schema' import { generateCurl } from '@/lib/snippet-generators' @@ -289,10 +288,10 @@ export function PlaygroundDialog({ {operation.summary ?? `${method} ${path}`}
- + onOpenChange(false)} aria-label="Close"> - +
@@ -586,7 +585,7 @@ function BodyFieldRow({ field, value, onChange }: { /> onChange(items.filter((_, j) => j !== i))} aria-label="Remove item"> - + ))} diff --git a/packages/chronicle/src/components/common/callout.module.css b/packages/chronicle/src/components/common/callout.module.css index 26ba7603..7459d138 100644 --- a/packages/chronicle/src/components/common/callout.module.css +++ b/packages/chronicle/src/components/common/callout.module.css @@ -1,5 +1,9 @@ +/* Apsara sizes a Callout at 400px by default. Prose callouts should fill the + content column instead. This used to be the component's `width` prop, which + apsara 1.6 dropped. */ .callout { margin: var(--rs-space-5) 0; + width: 100%; } .callout p:last-child { diff --git a/packages/chronicle/src/components/common/callout.tsx b/packages/chronicle/src/components/common/callout.tsx index 36d82141..1803e010 100644 --- a/packages/chronicle/src/components/common/callout.tsx +++ b/packages/chronicle/src/components/common/callout.tsx @@ -5,7 +5,7 @@ import { Callout } from '@raystack/apsara' import styles from './callout.module.css' function CalloutContainer(props: React.ComponentProps) { - return + return } function CalloutTitle({ children }: { children: React.ReactNode }) { @@ -18,7 +18,7 @@ function CalloutDescription({ children }: { children: React.ReactNode }) { function MdxBlockquote(props: React.ComponentProps<'blockquote'>) { return ( - + {props.children} ) diff --git a/packages/chronicle/src/components/ui/breadcrumbs.tsx b/packages/chronicle/src/components/ui/breadcrumbs.tsx index 7f9c2afc..e91f067b 100644 --- a/packages/chronicle/src/components/ui/breadcrumbs.tsx +++ b/packages/chronicle/src/components/ui/breadcrumbs.tsx @@ -25,7 +25,7 @@ export function Breadcrumbs({ slug, tree, className }: BreadcrumbsProps) { } + render={isCurrent || !item.url ? undefined : } > {item.name} diff --git a/packages/chronicle/src/components/ui/client-theme-switcher.tsx b/packages/chronicle/src/components/ui/client-theme-switcher.tsx index b5044108..a55096c6 100644 --- a/packages/chronicle/src/components/ui/client-theme-switcher.tsx +++ b/packages/chronicle/src/components/ui/client-theme-switcher.tsx @@ -1,6 +1,6 @@ 'use client' -import { MoonIcon, SunIcon } from '@heroicons/react/24/outline' +import { MoonIcon, SunIcon } from '@/components/ui/icons'; import { IconButton, useTheme } from '@raystack/apsara' import { useEffect, useState } from 'react' diff --git a/packages/chronicle/src/components/ui/icons.ts b/packages/chronicle/src/components/ui/icons.ts new file mode 100644 index 00000000..edb82ff8 --- /dev/null +++ b/packages/chronicle/src/components/ui/icons.ts @@ -0,0 +1,79 @@ +/** + * Chronicle's icon set. + * + * Every icon is a Lucide drawing, the same family Apsara draws with. Import + * icons from here rather than from `lucide-react` directly, so one idea keeps + * one drawing across the whole site. + * + * Icons Apsara already ships are re-exported under Apsara's own key, so a + * `` override reaches Apsara's components and Chronicle's pages + * alike. The rest are built with `createIcon`, which gives them the same 16px + * frame, the same 1.5 stroke, and the same `data-icon` attribute. + */ +export { + ChevronDownIcon, + ChevronRightIcon, + /** Copies the page as markdown. */ + CopyIcon, + /** A documentation page. */ + FileTextIcon, + MoonIcon, + PlusIcon, + SearchIcon, + SunIcon, + /** An error state. Draws a warning triangle. */ + WarningIcon, + /** Closes a dialog or panel. */ + XIcon +} from '@raystack/apsara/icons'; + +import { createIcon } from '@raystack/apsara/icons'; +import { + AlignLeft, + ArrowLeft, + ArrowRight, + BookOpen, + ChevronUp, + CircleQuestionMark, + Code, + Eye, + File, + Folder, + Hash, + History, + Layers, + Menu, + Play, + Sparkles, + SlidersHorizontal, + SquareCode +} from 'lucide-react'; + +/** An API reference section. */ +export const ApiIcon = createIcon('ApiIcon', SquareCode); +export const ArrowLeftIcon = createIcon('ArrowLeftIcon', ArrowLeft); +export const ArrowRightIcon = createIcon('ArrowRightIcon', ArrowRight); +export const BookOpenIcon = createIcon('BookOpenIcon', BookOpen); +export const ChevronUpIcon = createIcon('ChevronUpIcon', ChevronUp); +/** A code block or an API endpoint. */ +export const CodeIcon = createIcon('CodeIcon', Code); +export const EyeIcon = createIcon('EyeIcon', Eye); +/** A page with no text match — the fallback search result. */ +export const FileIcon = createIcon('FileIcon', File); +export const FolderIcon = createIcon('FolderIcon', Folder); +/** A heading match in search results. */ +export const HashIcon = createIcon('HashIcon', Hash); +export const HelpIcon = createIcon('HelpIcon', CircleQuestionMark); +/** Recent requests in the API playground. */ +export const HistoryIcon = createIcon('HistoryIcon', History); +export const LayersIcon = createIcon('LayersIcon', Layers); +/** Opens the mobile navigation. */ +export const MenuIcon = createIcon('MenuIcon', Menu); +/** Sends a request in the API playground. */ +export const PlayIcon = createIcon('PlayIcon', Play); +/** Reader display settings. */ +export const SettingsIcon = createIcon('SettingsIcon', SlidersHorizontal); +/** Marks an AI affordance. Shares a drawing with Apsara's `CoPilotIcon`. */ +export const SparklesIcon = createIcon('SparklesIcon', Sparkles); +/** Opens the table of contents. */ +export const TocIcon = createIcon('TocIcon', AlignLeft); diff --git a/packages/chronicle/src/components/ui/search.tsx b/packages/chronicle/src/components/ui/search.tsx index d573ed0c..d8cc92a9 100644 --- a/packages/chronicle/src/components/ui/search.tsx +++ b/packages/chronicle/src/components/ui/search.tsx @@ -1,10 +1,4 @@ -import { - DocumentIcon, - HashtagIcon, - MagnifyingGlassIcon, - CodeBracketIcon, - ChevronRightIcon -} from '@heroicons/react/24/outline'; +import { ChevronRightIcon, CodeIcon, FileIcon, HashIcon, SearchIcon } from '@/components/ui/icons'; import { Command, IconButton, Text } from '@raystack/apsara'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; import GithubSlugger from 'github-slugger'; @@ -201,7 +195,7 @@ export function Search({ classNames }: SearchProps) { onClick={() => setOpen(true)} className={classNames?.trigger} > - + ); } @@ -277,7 +271,7 @@ export function SearchDialog() { } + leadingIcon={} value={search} onChange={onSearchChange} className={styles.input} @@ -405,12 +399,12 @@ function HighlightQuery({ text, query }: { text: string; query: string }) { function getResultIcon(result: SearchResult): React.ReactNode { if (result.url.startsWith('/apis/')) { - return ; + return ; } if (result.match === SearchMatchType.Heading) { - return ; + return ; } - return ; + return ; } function getPageTitle(url: string): string { diff --git a/packages/chronicle/src/components/ui/sidebar-links.tsx b/packages/chronicle/src/components/ui/sidebar-links.tsx index b1182e8f..ec10fd08 100644 --- a/packages/chronicle/src/components/ui/sidebar-links.tsx +++ b/packages/chronicle/src/components/ui/sidebar-links.tsx @@ -1,6 +1,6 @@ 'use client' -import { QuestionMarkCircledIcon } from '@radix-ui/react-icons' +import { HelpIcon } from '@/components/ui/icons'; import { IconButton, Menu, Sidebar } from '@raystack/apsara' import { useNavigate } from 'react-router' import { usePageContext } from '@/lib/page-context' @@ -86,7 +86,7 @@ export function SidebarLinks({ variant = 'menu' }: SidebarLinksProps) { } > - + {links.map(link => ( diff --git a/packages/chronicle/src/lib/config.ts b/packages/chronicle/src/lib/config.ts index ed9d34f2..55674a22 100644 --- a/packages/chronicle/src/lib/config.ts +++ b/packages/chronicle/src/lib/config.ts @@ -26,7 +26,11 @@ export function loadConfig(): ChronicleConfig { return { ...defaultConfig, ...parsed, - theme: { ...defaultConfig.theme, ...parsed.theme }, + theme: { + ...defaultConfig.theme, + ...parsed.theme, + name: parsed.theme?.name ?? defaultConfig.theme?.name ?? 'default', + }, search: { ...defaultConfig.search, ...parsed.search }, } } diff --git a/packages/chronicle/src/lib/get-llm-text.ts b/packages/chronicle/src/lib/get-llm-text.ts deleted file mode 100644 index ca218b17..00000000 --- a/packages/chronicle/src/lib/get-llm-text.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { source } from '@/lib/source' -import type { InferPageType } from 'fumadocs-core/source' - -export async function getLLMText(page: InferPageType) { - const processed = await page.data.getText('processed') - - return `# ${page.data.title} (${page.url}) - -${processed}` -} diff --git a/packages/chronicle/src/lib/openapi.ts b/packages/chronicle/src/lib/openapi.ts index 5f351c58..4585866b 100644 --- a/packages/chronicle/src/lib/openapi.ts +++ b/packages/chronicle/src/lib/openapi.ts @@ -138,7 +138,7 @@ function convertV2SecurityDefs(defs: Record = {} for (const [name, def] of Object.entries(defs)) { if (def.type === 'apiKey') { - result[name] = { type: 'apiKey', name: (def as JsonObject).name as string, in: def.in as string } as OpenAPIV3.ApiKeySecurityScheme + result[name] = { type: 'apiKey', name: def.name, in: def.in } as OpenAPIV3.ApiKeySecurityScheme } else if (def.type === 'basic') { result[name] = { type: 'http', scheme: 'basic' } as OpenAPIV3.HttpSecurityScheme } else if (def.type === 'oauth2') { diff --git a/packages/chronicle/src/lib/source.ts b/packages/chronicle/src/lib/source.ts index acd31a74..17cf761e 100644 --- a/packages/chronicle/src/lib/source.ts +++ b/packages/chronicle/src/lib/source.ts @@ -112,17 +112,22 @@ function buildSyntheticMeta(): { return entries; } -let cachedSource: ReturnType | null = null; +// Built through a named factory so the cache keeps the loader's concrete +// type. `ReturnType` would widen it to the default type +// arguments, which then fails to match what `loader()` actually returned. +function createSource() { + return loader({ + source: { files: buildFiles() }, + baseUrl: '/' + }); +} + +let cachedSource: ReturnType | null = null; let cachedTree: Root | null = null; let cachedNavMap: Map | null = null; -async function getSource() { - if (cachedSource) return cachedSource; - const files = buildFiles(); - cachedSource = loader({ - source: { files }, - baseUrl: '/' - }); +async function getSource(): Promise> { + cachedSource ??= createSource(); return cachedSource; } diff --git a/packages/chronicle/src/lib/tree-utils.test.ts b/packages/chronicle/src/lib/tree-utils.test.ts index 4d5d56bb..0c4aaca8 100644 --- a/packages/chronicle/src/lib/tree-utils.test.ts +++ b/packages/chronicle/src/lib/tree-utils.test.ts @@ -314,7 +314,7 @@ describe('compactTree', () => { const result = compactTree(tree) expect(result.children[0]).toEqual({ type: 'page', name: 'Space Packet Protocol', short: 'SPP', url: '/protocols/spp', - }) + } as Node) }) test('keeps short on a folder index page', () => { diff --git a/packages/chronicle/src/lib/tree-utils.ts b/packages/chronicle/src/lib/tree-utils.ts index be6db86e..70eab8a1 100644 --- a/packages/chronicle/src/lib/tree-utils.ts +++ b/packages/chronicle/src/lib/tree-utils.ts @@ -19,7 +19,8 @@ function compactLeaf(node: Node): Node { for (const [k, v] of Object.entries(node)) { if (KEEP_FIELDS.has(k)) out[k] = v; } - return out as Node; + // Assembled key by key from a Node, so the result is one again. + return out as unknown as Node; } function compactNode(node: Node): Node { @@ -31,7 +32,7 @@ function compactNode(node: Node): Node { else if (k === 'index') out.index = compactLeaf(v as Node); else out[k] = v; } - return out as Node; + return out as unknown as Node; } export function compactTree(tree: Root): Root { @@ -103,15 +104,22 @@ export function resolveDocsRedirect( return findFolderFirstPage(tree.children, `/${slug.join('/')}`); } -interface ResolvePageDeps { - getPage: (slug: string[]) => Promise; +/** + * Generic over the page so this module stays free of fumadocs types while + * callers keep the concrete page type on the way out. + */ +interface ResolvePageDeps { + getPage: (slug: string[]) => Promise; getPageTree: () => Promise<{ children: Node[] }>; - isDraft: (page: unknown) => boolean; + isDraft: (page: TPage) => boolean; config: ChronicleConfig; version: VersionContext; } -export async function resolvePageAndSlug(slug: string[], deps: ResolvePageDeps) { +export async function resolvePageAndSlug( + slug: string[], + deps: ResolvePageDeps, +): Promise<{ page: TPage; slug: string[] } | null> { const { getPage, getPageTree, isDraft, config, version } = deps; const page = await getPage(slug); diff --git a/packages/chronicle/src/pages/LandingPage.tsx b/packages/chronicle/src/pages/LandingPage.tsx index 5319afbe..f56e610a 100644 --- a/packages/chronicle/src/pages/LandingPage.tsx +++ b/packages/chronicle/src/pages/LandingPage.tsx @@ -1,4 +1,4 @@ -import { FolderIcon } from '@heroicons/react/24/outline'; +import { FolderIcon } from '@/components/ui/icons'; import { Link as RouterLink } from 'react-router'; import { getLandingEntries } from '@/lib/config'; import { Head } from '@/lib/head'; diff --git a/packages/chronicle/src/pages/NotFound.module.css b/packages/chronicle/src/pages/NotFound.module.css index 29dbeebc..aa22b8c9 100644 --- a/packages/chronicle/src/pages/NotFound.module.css +++ b/packages/chronicle/src/pages/NotFound.module.css @@ -1,4 +1,12 @@ -.emptyState { +/* EmptyState is styled through its `empty-state` slot rather than a + `classNames` prop. Reaching the slot needs an ancestor to scope the selector, + and that host also has to pass the height through, because EmptyState is + `height: 100%` and centres its content within it. */ +.emptyStateHost { + height: 100%; +} + +.emptyStateHost :global([data-slot='empty-state']) { justify-content: center; } diff --git a/packages/chronicle/src/pages/NotFound.tsx b/packages/chronicle/src/pages/NotFound.tsx index a12043d6..7ae60c2a 100644 --- a/packages/chronicle/src/pages/NotFound.tsx +++ b/packages/chronicle/src/pages/NotFound.tsx @@ -1,14 +1,15 @@ -import { DocumentTextIcon } from '@heroicons/react/24/outline'; +import { FileTextIcon } from '@/components/ui/icons'; import { EmptyState } from '@raystack/apsara'; import styles from './NotFound.module.css'; export function NotFound() { return ( - } - heading="404" - subHeading="Page not found" - classNames={{ container: styles.emptyState }} - /> +
+ } + heading="404" + subHeading="Page not found" + /> +
); } diff --git a/packages/chronicle/src/pages/RenderError.tsx b/packages/chronicle/src/pages/RenderError.tsx index 00c5a21d..e797e18b 100644 --- a/packages/chronicle/src/pages/RenderError.tsx +++ b/packages/chronicle/src/pages/RenderError.tsx @@ -1,18 +1,19 @@ -import { ExclamationTriangleIcon } from '@heroicons/react/24/outline'; +import { WarningIcon } from '@/components/ui/icons'; import { EmptyState } from '@raystack/apsara'; import styles from './NotFound.module.css'; export function RenderError({ message }: { message: string | null }) { return ( - } - heading="Failed to render page" - subHeading={ - message - ?
{message}
- : 'Something went wrong while rendering this page.' - } - classNames={{ container: styles.emptyState }} - /> +
+ } + heading="Failed to render page" + subHeading={ + message + ?
{message}
+ : 'Something went wrong while rendering this page.' + } + /> +
); } diff --git a/packages/chronicle/src/server/App.tsx b/packages/chronicle/src/server/App.tsx index fd8b7e14..667dd892 100644 --- a/packages/chronicle/src/server/App.tsx +++ b/packages/chronicle/src/server/App.tsx @@ -1,4 +1,4 @@ -import { ThemeProvider, Skeleton, Flex } from '@raystack/apsara'; +import { Theme, Skeleton, Flex } from '@raystack/apsara'; import { lazy, Suspense } from 'react'; import { Navigate, useLocation } from 'react-router'; import { AnalyticsProvider } from '@/components/analytics/AnalyticsProvider'; @@ -35,7 +35,7 @@ export function App() { const isAuthors = isAuthorRoute(route); return ( - @@ -64,7 +64,7 @@ export function App() { - +
); } diff --git a/packages/chronicle/src/server/api/apis-proxy.ts b/packages/chronicle/src/server/api/apis-proxy.ts index 79b2c49c..a939bb70 100644 --- a/packages/chronicle/src/server/api/apis-proxy.ts +++ b/packages/chronicle/src/server/api/apis-proxy.ts @@ -33,7 +33,7 @@ export default defineHandler(async event => { const contentLength = parseInt(event.req.headers.get('content-length') ?? '0', 10); if (contentLength > MAX_BODY_SIZE) { - throw new HTTPError({ status: StatusCodes.CONTENT_TOO_LARGE, message: `Request body too large (max ${MAX_BODY_SIZE} bytes)` }); + throw new HTTPError({ status: StatusCodes.REQUEST_TOO_LONG, message: `Request body too large (max ${MAX_BODY_SIZE} bytes)` }); } const { specName, method, path, headers, body } = diff --git a/packages/chronicle/src/server/api/image.ts b/packages/chronicle/src/server/api/image.ts index 2550e9a3..7753433a 100644 --- a/packages/chronicle/src/server/api/image.ts +++ b/packages/chronicle/src/server/api/image.ts @@ -52,6 +52,15 @@ function snapQuality(q: number): number { return closest; } +/** + * `Buffer` is a `Uint8Array` at runtime, but its `ArrayBufferLike` generic + * doesn't satisfy `BodyInit`. A view over the same memory does, and copies + * nothing. + */ +function toBody(buf: Buffer): Uint8Array { + return new Uint8Array(buf.buffer as ArrayBuffer, buf.byteOffset, buf.byteLength) +} + export async function optimizeImage( filePath: string, w: number, @@ -136,13 +145,13 @@ export default defineHandler(async event => { const cached = await storage.getItemRaw(key) if (cached) { - return new Response(cached, { headers }) + return new Response(toBody(cached), { headers }) } const existing = inflight.get(key) if (existing) { const optimized = await existing - return new Response(optimized, { headers }) + return new Response(toBody(optimized), { headers }) } const work = (async () => { @@ -154,7 +163,7 @@ export default defineHandler(async event => { inflight.set(key, work) try { const optimized = await work - return new Response(optimized, { headers }) + return new Response(toBody(optimized), { headers }) } catch { const source = await fs.readFile(filePath).catch(() => null) if (!source) { diff --git a/packages/chronicle/src/server/entry-server.tsx b/packages/chronicle/src/server/entry-server.tsx index dd6fd460..0d4b7662 100644 --- a/packages/chronicle/src/server/entry-server.tsx +++ b/packages/chronicle/src/server/entry-server.tsx @@ -65,7 +65,7 @@ export default { if (route.type === RouteType.Redirect) { // biome-ignore lint/correctness/useHookAtTopLevel: useNitroApp is a Nitro DI accessor, not a React hook - useNitroApp().hooks.callHook('chronicle:ssr-rendered', pathname, route.status, 0); + useNitroApp().hooks?.callHook('chronicle:ssr-rendered', pathname, route.status, 0); return new Response(null, { status: route.status, headers: { Location: route.to }, @@ -241,7 +241,7 @@ export default { const status = route.type === RouteType.DocsPage && !page ? StatusCodes.NOT_FOUND : StatusCodes.OK; // biome-ignore lint/correctness/useHookAtTopLevel: useNitroApp is a Nitro DI accessor, not a React hook - useNitroApp().hooks.callHook('chronicle:ssr-rendered', pathname, status, renderDuration); + useNitroApp().hooks?.callHook('chronicle:ssr-rendered', pathname, status, renderDuration); return new Response(prelude, { status, diff --git a/packages/chronicle/src/server/plugins/telemetry.ts b/packages/chronicle/src/server/plugins/telemetry.ts index 00597c6b..4880f2db 100644 --- a/packages/chronicle/src/server/plugins/telemetry.ts +++ b/packages/chronicle/src/server/plugins/telemetry.ts @@ -99,9 +99,9 @@ export default definePlugin((nitroApp) => { const endpoint = res.status === 404 ? '/api/not-found' : toEndpoint(route) const clientIp = - event.req.headers['x-forwarded-for']?.toString().split(',')[0].trim() ?? - event.req.headers['x-real-ip']?.toString() ?? - event.req.socket?.remoteAddress ?? + event.req.headers.get('x-forwarded-for')?.split(',')[0]?.trim() || + event.req.headers.get('x-real-ip') || + event.req.ip || 'unknown' requestCounter.add(1, { method, endpoint, status: res.status }) diff --git a/packages/chronicle/src/server/vite-config.ts b/packages/chronicle/src/server/vite-config.ts index 472da04b..1583c7df 100644 --- a/packages/chronicle/src/server/vite-config.ts +++ b/packages/chronicle/src/server/vite-config.ts @@ -16,7 +16,11 @@ import type { Pluggable } from 'unified'; import remarkValidateMdx from '../lib/remark-validate-mdx'; import rehypeTocText from '../lib/rehype-toc-text'; -function getDatabaseConnector(preset?: string): { connector: string; options?: Record } { +// Literal names rather than `string`: Nitro types the connector as db0's +// `ConnectorName` union, and each of these is a member of it. +type DatabaseConnector = 'bun-sqlite' | 'cloudflare-d1' | 'sqlite'; + +function getDatabaseConnector(preset?: string): { connector: DatabaseConnector; options?: Record } { switch (preset) { case 'bun': return { connector: 'bun-sqlite', options: { name: 'chronicle-search' } }; @@ -308,11 +312,10 @@ export async function createViteConfig( nitro: { logLevel: 2, errorHandler: path.resolve(packageRoot, 'src/server/error.ts'), - publicAssets: [{ dir: path.resolve(projectRoot, 'public') }], + publicAssets: [{ dir: path.resolve(projectRoot, 'public'), maxAge: 0 }], output: { dir: resolveOutputDir(projectRoot, preset), }, - externals: ['sharp'], storage: { 'image-cache': { driver: 'fs', diff --git a/packages/chronicle/src/themes/default/ContentDirButtons.tsx b/packages/chronicle/src/themes/default/ContentDirButtons.tsx index dc68e7ff..52401cc6 100644 --- a/packages/chronicle/src/themes/default/ContentDirButtons.tsx +++ b/packages/chronicle/src/themes/default/ContentDirButtons.tsx @@ -1,4 +1,4 @@ -import { ChevronDownIcon } from '@heroicons/react/24/outline'; +import { ChevronDownIcon } from '@/components/ui/icons'; import { Button, Menu, Flex } from '@raystack/apsara'; import { Link as RouterLink, useLocation, useNavigate } from 'react-router'; import { getLandingEntries } from '@/lib/config'; diff --git a/packages/chronicle/src/themes/default/Layout.module.css b/packages/chronicle/src/themes/default/Layout.module.css index f68f3a0d..e150cb59 100644 --- a/packages/chronicle/src/themes/default/Layout.module.css +++ b/packages/chronicle/src/themes/default/Layout.module.css @@ -88,7 +88,10 @@ color: var(--rs-color-foreground-base-tertiary); } -.topLinkText { +/* Sidebar.Item wraps its label in a `sidebar-item-text` slot. The label needs + its own colour because Apsara sets one on that span, which would otherwise + win over the colour inherited from the item. */ +.topLinkItem :global([data-slot='sidebar-item-text']) { color: var(--rs-color-foreground-base-tertiary); } @@ -97,7 +100,7 @@ color: var(--rs-color-foreground-base-primary); } -.topLinkItem[data-active='true'] .topLinkText { +.topLinkItem[data-active='true'] :global([data-slot='sidebar-item-text']) { color: var(--rs-color-foreground-base-primary); } @@ -181,13 +184,18 @@ background: var(--rs-color-background-base-primary); } -.groupItems { +/* Sidebar.Group's parts are reached through their `sidebar-group-*` slots, + scoped by `.navGroup` on the group itself. The selectors are descendant, not + child, because groups nest: a rule on an outer group is meant to reach the + inner ones too. */ +.navGroup :global([data-slot='sidebar-group-items']) { padding-left: 0; padding-bottom: 0; gap: 0; } -.navGroup:not([data-depth='0']) .groupItems { +.navGroup:not([data-depth='0']) + :global([data-slot='sidebar-group-items']) { padding-left: var(--rs-space-4); } @@ -199,22 +207,22 @@ margin-top: var(--rs-space-7); } -.navGroup .navGroupHeader { +.navGroup :global([data-slot='sidebar-group-header']) { margin: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; } -.navGroup[data-depth='1'] .navGroupHeader { +.navGroup[data-depth='1'] :global([data-slot='sidebar-group-header']) { height: auto; } -.navGroup[data-depth='1'] .navGroupLabel { +.navGroup[data-depth='1'] :global([data-slot='sidebar-group-label']) { color: var(--rs-color-foreground-base-primary); } -.navGroupTrigger { +.navGroup :global([data-slot='sidebar-group-trigger']) { display: flex; padding: var(--rs-space-3); align-items: center; @@ -226,7 +234,7 @@ box-sizing: border-box; } -.navGroupLabel { +.navGroup :global([data-slot='sidebar-group-label']) { flex: 1; text-align: left; color: var(--rs-color-foreground-base-secondary); @@ -237,7 +245,7 @@ letter-spacing: var(--rs-letter-spacing-small); } -.navGroupChevron { +.navGroup :global([data-slot='sidebar-group-chevron']) { margin-left: auto; } diff --git a/packages/chronicle/src/themes/default/Layout.tsx b/packages/chronicle/src/themes/default/Layout.tsx index 99be9874..87348f6a 100644 --- a/packages/chronicle/src/themes/default/Layout.tsx +++ b/packages/chronicle/src/themes/default/Layout.tsx @@ -1,15 +1,5 @@ -import { - ArrowLeftIcon, - ArrowRightIcon, - CodeBracketSquareIcon, - RectangleStackIcon, - DocumentTextIcon, - Squares2X2Icon, - Bars3Icon, - XMarkIcon -} from '@heroicons/react/24/outline'; +import { ApiIcon, ArrowLeftIcon, ArrowRightIcon, FileTextIcon, LayersIcon, MenuIcon, PlayIcon, XIcon } from '@/components/ui/icons'; import { Flex, IconButton, Button, Sidebar } from '@raystack/apsara'; -import { PlayIcon } from '@radix-ui/react-icons'; import { cx } from 'class-variance-authority'; import { useState, useEffect, useMemo, useRef, lazy, Suspense } from 'react'; import { Link as RouterLink, useLocation, useNavigate } from 'react-router'; @@ -38,7 +28,7 @@ import { VersionSwitcher } from './VersionSwitcher'; const MAX_SIDEBAR_DEPTH = 3; const iconMap: Record = { - 'rectangle-stack': , + 'rectangle-stack': , 'method-get': , 'method-post': , 'method-put': , @@ -135,8 +125,8 @@ export function Layout({ aria-controls='mobile-menu' > {mobileSidebarOpen - ? - : } + ? + : } )}
@@ -149,8 +139,8 @@ export function Layout({ key={entry.href} href={entry.href} active={activeContentDir === entry.contentDir} - leadingIcon={renderConfigIcon(entry.icon, entry.label, )} - classNames={{ root: styles.topLinkItem, text: styles.topLinkText }} + leadingIcon={renderConfigIcon(entry.icon, entry.label, )} + className={styles.topLinkItem} render={} > {entry.label} @@ -161,8 +151,8 @@ export function Layout({ key={`${api.basePath}-${api.name}`} href={api.basePath} active={isApiBase(api.basePath)} - leadingIcon={renderConfigIcon(api.icon, api.name, )} - classNames={{ root: styles.topLinkItem, text: styles.topLinkText }} + leadingIcon={renderConfigIcon(api.icon, api.name, )} + className={styles.topLinkItem} render={} > {api.name} API @@ -196,7 +186,7 @@ export function Layout({ {hideSidebar ? null : ( @@ -217,9 +207,9 @@ export function Layout({ leadingIcon={renderConfigIcon( entry.icon, entry.label, - + )} - classNames={{ root: styles.topLinkItem, text: styles.topLinkText }} + className={styles.topLinkItem} render={} > {entry.label} @@ -233,9 +223,9 @@ export function Layout({ leadingIcon={renderConfigIcon( api.icon, api.name, - + )} - classNames={{ root: styles.topLinkItem, text: styles.topLinkText }} + className={styles.topLinkItem} render={} > {api.name} API @@ -362,13 +352,6 @@ function SidebarNode({ leadingIcon={icon ?? undefined} collapsible={depth >= 1} defaultOpen={hasActiveChild} - classNames={{ - items: styles.groupItems, - header: styles.navGroupHeader, - trigger: styles.navGroupTrigger, - label: styles.navGroupLabel, - chevron: styles.navGroupChevron, - }} > {item.children.map((child, i) => ( } + leadingIcon={} onClick={() => window.open(docsUrl, '_blank', 'noopener,noreferrer')} > View documentation diff --git a/packages/chronicle/src/themes/default/OpenInAI.tsx b/packages/chronicle/src/themes/default/OpenInAI.tsx index 80d97792..f3502627 100644 --- a/packages/chronicle/src/themes/default/OpenInAI.tsx +++ b/packages/chronicle/src/themes/default/OpenInAI.tsx @@ -1,11 +1,6 @@ 'use client'; -import { - ChevronDownIcon, - ClipboardDocumentIcon, - DocumentTextIcon, - SparklesIcon -} from '@heroicons/react/24/outline'; +import { ChevronDownIcon, CopyIcon, FileTextIcon, SparklesIcon } from '@/components/ui/icons'; import { Button, Menu } from '@raystack/apsara'; import { useCallback } from 'react'; @@ -91,11 +86,11 @@ export function OpenInAI() { - + Copy as MD - + View MD diff --git a/packages/chronicle/src/themes/default/SidebarLogo.tsx b/packages/chronicle/src/themes/default/SidebarLogo.tsx index b3e99330..e31c3721 100644 --- a/packages/chronicle/src/themes/default/SidebarLogo.tsx +++ b/packages/chronicle/src/themes/default/SidebarLogo.tsx @@ -1,6 +1,6 @@ 'use client'; -import { BookOpenIcon } from '@heroicons/react/24/outline'; +import { BookOpenIcon } from '@/components/ui/icons'; import { useTheme } from '@raystack/apsara'; import type { ChronicleConfig } from '@/types'; import styles from './Layout.module.css'; diff --git a/packages/chronicle/src/themes/default/Toc.tsx b/packages/chronicle/src/themes/default/Toc.tsx index 76524e4b..2e60bfd9 100644 --- a/packages/chronicle/src/themes/default/Toc.tsx +++ b/packages/chronicle/src/themes/default/Toc.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Bars3BottomLeftIcon } from '@heroicons/react/24/outline'; +import { TocIcon } from '@/components/ui/icons'; import { AnchorProvider, useActiveAnchor } from 'fumadocs-core/toc'; import type { TableOfContents, TOCItemType } from 'fumadocs-core/toc'; import { cx } from 'class-variance-authority'; @@ -69,7 +69,7 @@ function TocContent({ items }: { items: TOCItemType[] }) {
- + On this page
diff --git a/packages/chronicle/src/themes/paper/Page.tsx b/packages/chronicle/src/themes/paper/Page.tsx index d04811cd..730ccb2c 100644 --- a/packages/chronicle/src/themes/paper/Page.tsx +++ b/packages/chronicle/src/themes/paper/Page.tsx @@ -1,14 +1,4 @@ -import { - EyeIcon, - SunIcon, - MoonIcon, -} from '@heroicons/react/24/outline'; -import { - ArrowLeftIcon, - ArrowRightIcon, - MixerHorizontalIcon, - Cross2Icon -} from '@radix-ui/react-icons' +import { ArrowLeftIcon, ArrowRightIcon, EyeIcon, MoonIcon, SettingsIcon, SunIcon, XIcon } from '@/components/ui/icons'; import { IconButton, useTheme } from '@raystack/apsara'; import { useEffect, useMemo, useState } from 'react'; import { Link as RouterLink, useLocation } from 'react-router'; @@ -86,12 +76,12 @@ export function Page({ page, tree }: ThemePageProps) { )} setSettingsOpen(false)} aria-label='Close settings'> - + ) : ( setSettingsOpen(true)} aria-label='Open settings'> - + )} diff --git a/packages/chronicle/src/themes/paper/VersionSwitcher.tsx b/packages/chronicle/src/themes/paper/VersionSwitcher.tsx index 604182e8..7bfc0f98 100644 --- a/packages/chronicle/src/themes/paper/VersionSwitcher.tsx +++ b/packages/chronicle/src/themes/paper/VersionSwitcher.tsx @@ -1,4 +1,4 @@ -import { ChevronDownIcon } from '@heroicons/react/24/outline'; +import { ChevronDownIcon } from '@/components/ui/icons'; import { Badge, Button, Menu, Flex, Text } from '@raystack/apsara'; import { useNavigate } from 'react-router'; import { getAllVersions } from '@/lib/config'; @@ -35,7 +35,7 @@ export function VersionSwitcher() { size='small' variant='outline' color='neutral' - width='100%' + style={{ width: '100%' }} trailingIcon={} /> } diff --git a/packages/chronicle/src/themes/registry.ts b/packages/chronicle/src/themes/registry.ts index d859a2ec..d2d35247 100644 --- a/packages/chronicle/src/themes/registry.ts +++ b/packages/chronicle/src/themes/registry.ts @@ -16,9 +16,12 @@ export function getTheme(name?: string): Theme { return themes[name]; } -export function getThemeConfig(name?: string) { - if (name === 'paper') { - return { enableSystem: true }; - } +export interface ThemeConfig { + enableSystem: boolean; + /** Pin the theme, ignoring the user's choice. No theme sets one today. */ + forcedTheme?: string; +} + +export function getThemeConfig(_name?: string): ThemeConfig { return { enableSystem: true }; } diff --git a/packages/chronicle/src/types/analytics-google-analytics.d.ts b/packages/chronicle/src/types/analytics-google-analytics.d.ts new file mode 100644 index 00000000..3c48eff4 --- /dev/null +++ b/packages/chronicle/src/types/analytics-google-analytics.d.ts @@ -0,0 +1,15 @@ +/** + * `@analytics/google-analytics` ships no types. It is only ever used as an + * `analytics` plugin factory, so that is all this declares. + */ +declare module '@analytics/google-analytics' { + import type { AnalyticsPlugin } from 'analytics' + + interface GoogleAnalyticsOptions { + measurementIds: string[] + } + + export default function googleAnalytics( + options: GoogleAnalyticsOptions, + ): AnalyticsPlugin +} diff --git a/packages/chronicle/tsconfig.json b/packages/chronicle/tsconfig.json index 375a8a10..e84aad56 100644 --- a/packages/chronicle/tsconfig.json +++ b/packages/chronicle/tsconfig.json @@ -1,8 +1,10 @@ { "compilerOptions": { "composite": false, - "declaration": true, - "declarationMap": true, + // The package ships a CLI built by Bun.build, not declarations, so + // emitting them only produces "cannot be named" portability errors. + "declaration": false, + "declarationMap": false, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "inlineSources": false,