CLI: add assets to Orama Cloud template

This commit is contained in:
Fuma Nama
2025-10-23 21:30:38 +08:00
parent 574d92e360
commit 91d75094fa
19 changed files with 326 additions and 142 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'create-fumadocs-app': patch
---
Support Orama Cloud template
@@ -8,6 +8,7 @@
"@content-collections/core": "^0.11.1",
"@content-collections/mdx": "^0.2.2",
"@content-collections/next": "^0.2.8",
"@orama/core": "^1.2.13",
"@react-router/dev": "^7.9.4",
"@react-router/node": "^7.9.4",
"@react-router/serve": "^7.9.4",
+1
View File
@@ -8,6 +8,7 @@ export default [
{
rules: {
'import/no-relative-packages': 'off',
'@typescript-eslint/no-explicit-any': 'off',
},
},
];
+7
View File
@@ -1,4 +1,6 @@
import { fileURLToPath } from 'node:url';
import { versions as localVersions } from '@/versions';
import versionPkg from '../../create-app-versions/package.json';
export const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);
export const cwd = process.cwd();
@@ -40,3 +42,8 @@ export const templates = [
componentsDir: 'src/components',
},
] satisfies TemplateInfo[];
export const depVersions = {
...localVersions,
...versionPkg.dependencies,
};
+73 -77
View File
@@ -1,11 +1,15 @@
import path from 'node:path';
import fs from 'node:fs/promises';
import { copy, tryGitInit } from '@/utils';
import { versions as localVersions } from '@/versions';
import versionPkg from '../../create-app-versions/package.json';
import { copy, pick, tryGitInit } from '@/utils';
import type { PackageManager } from './auto-install';
import { autoInstall } from './auto-install';
import { cwd, sourceDir, TemplateInfo, templates } from './constants';
import {
cwd,
depVersions,
sourceDir,
type TemplateInfo,
templates,
} from './constants';
export type Template = (typeof templates)[number]['value'];
export interface Options {
@@ -45,15 +49,26 @@ export interface TemplatePluginContext {
dest: string;
}
type Awaitable<T> = T | Promise<T>;
export interface TemplatePlugin {
afterWrite?: (context: TemplatePluginContext) => Promise<void>;
packageJson?: (
this: TemplatePluginContext,
packageJson: any,
) => Awaitable<void | any>;
afterWrite?: (this: TemplatePluginContext) => Awaitable<void>;
readme?: (
this: TemplatePluginContext,
content: string,
) => Awaitable<void | string>;
}
function defaults(options: Options): Required<Options> {
return {
...options,
plugins: options.plugins ?? [],
useSrcDir: options.useSrcDir ?? false,
useSrcDir:
options.template.startsWith('+next') && options.useSrcDir === true,
lint: options.lint ?? false,
initializeGit: options.initializeGit ?? false,
installDeps: options.installDeps ?? false,
@@ -61,6 +76,10 @@ function defaults(options: Options): Required<Options> {
};
}
function isRelative(dir: string, file: string) {
return !path.relative(dir, file).startsWith(`..${path.sep}`);
}
export async function create(createOptions: Options): Promise<void> {
const options = defaults(createOptions);
const {
@@ -84,71 +103,63 @@ export async function create(createOptions: Options): Promise<void> {
options,
};
function isRelative(dir: string, file: string) {
return !path
.relative(path.join(dest, dir), file)
.startsWith(`..${path.sep}`);
}
function defaultRename(file: string): string {
file = file.replace('example.gitignore', '.gitignore');
if (!useSrcDir || !isNext) {
return file;
}
if (
path.basename(file) === 'mdx-components.tsx' ||
isRelative('app', file) ||
isRelative('lib', file)
) {
return path.join(dest, 'src', path.relative(dest, file));
}
return file;
}
await copy(path.join(sourceDir, `template/${template}`), dest, {
rename: defaultRename,
});
rename(file) {
file = file.replace('example.gitignore', '.gitignore');
if (isNext) {
// optional ESLint configuration
if (lint) {
await copy(path.join(sourceDir, `template/+next+${lint}`), dest, {
rename: defaultRename,
});
log('Configured Linter');
}
// update tsconfig.json for src dir
if (useSrcDir) {
const tsconfigPath = path.join(dest, 'tsconfig.json');
const content = (await fs.readFile(tsconfigPath)).toString();
const config = JSON.parse(content);
if (config.compilerOptions?.paths) {
Object.assign(config.compilerOptions.paths, {
'@/*': ['./src/*'],
});
if (
useSrcDir &&
(path.basename(file) === 'mdx-components.tsx' ||
isRelative(path.join(dest, 'app'), file) ||
isRelative(path.join(dest, 'lib'), file))
) {
return path.join(dest, 'src', path.relative(dest, file));
}
await fs.writeFile(tsconfigPath, JSON.stringify(config, null, 2));
}
return file;
},
});
// optional ESLint configuration
if (isNext && lint) {
await copy(path.join(sourceDir, `template/+next+${lint}`), dest);
log('Configured Linter');
}
const packageJson = await createPackageJson(projectName, dest, options);
// update tsconfig.json for src dir
if (isNext && useSrcDir) {
const tsconfigPath = path.join(dest, 'tsconfig.json');
const content = (await fs.readFile(tsconfigPath)).toString();
const config = JSON.parse(content);
if (config.compilerOptions?.paths) {
Object.assign(config.compilerOptions.paths, {
'@/*': ['./src/*'],
});
}
await fs.writeFile(tsconfigPath, JSON.stringify(config, null, 2));
}
let packageJson = await createPackageJson(projectName, dest, options);
for (const plugin of plugins) {
const result = await plugin.packageJson?.call(pluginContext, packageJson);
if (result) packageJson = result;
}
await fs.writeFile(
path.join(dest, 'package.json'),
JSON.stringify(packageJson, null, 2),
);
const readMe = await getReadme(dest, projectName);
await fs.writeFile(path.join(dest, 'README.md'), readMe);
let readme = await getReadme(dest, projectName);
for (const plugin of plugins) {
readme = (await plugin.readme?.call(pluginContext, readme)) ?? readme;
}
await fs.writeFile(path.join(dest, 'README.md'), readme);
for (const plugin of plugins) {
await plugin.afterWrite?.(pluginContext);
await plugin.afterWrite?.call(pluginContext);
}
if (installDeps) {
@@ -181,8 +192,8 @@ async function createPackageJson(
const isNext = template.startsWith('+next');
function replaceWorkspaceDeps(deps: Record<string, string>) {
for (const k in deps) {
if (deps[k].startsWith('workspace:') && k in localVersions) {
deps[k] = localVersions[k as keyof typeof localVersions];
if (deps[k].startsWith('workspace:') && k in depVersions) {
deps[k] = depVersions[k as keyof typeof depVersions];
}
}
@@ -222,7 +233,7 @@ async function createPackageJson(
},
devDependencies: {
...packageJson.devDependencies,
...pick(versionPkg.dependencies, ['@biomejs/biome']),
...pick(depVersions, ['@biomejs/biome']),
},
};
}
@@ -237,7 +248,7 @@ async function createPackageJson(
devDependencies: {
...packageJson.devDependencies,
eslint: '^9',
'eslint-config-next': versionPkg.dependencies.next,
'eslint-config-next': depVersions.next,
'@eslint/eslintrc': '^3',
},
};
@@ -245,18 +256,3 @@ async function createPackageJson(
return packageJson;
}
function pick<T extends object, K extends keyof T>(
obj: T,
keys: K[],
): Pick<T, K> {
const result: Partial<T> = {};
for (const key of keys) {
if (key in obj) {
result[key] = obj[key];
}
}
return result as Pick<T, K>;
}
+68 -8
View File
@@ -1,19 +1,79 @@
import { TemplatePlugin } from '@/create-app';
import { copy } from '@/utils';
import { copy, pick } from '@/utils';
import path from 'node:path';
import { sourceDir } from '@/constants';
import { depVersions, sourceDir } from '@/constants';
import fs from 'node:fs/promises';
const oramaCloud: TemplatePlugin = {
async afterWrite({ dest, template, options }) {
const baseDir = path.join(dest, options.useSrcDir ? 'src' : '.');
await copy(
path.join(sourceDir, 'template/+orama-cloud/search.tsx'),
path.join(baseDir, template.componentsDir, 'search.tsx'),
packageJson(packageJson) {
return {
...packageJson,
scripts: {
...packageJson.scripts,
build: `${packageJson.build} && bun scripts/sync-content.ts`,
},
dependencies: {
...packageJson.dependencies,
...pick(depVersions, ['@orama/core']),
},
};
},
readme(content) {
return `${content}\n\n## Orama Cloud
This project uses Orama Cloud for 3rd party search solution.
See https://fumadocs.dev/docs/headless/search/orama-cloud for integrating Orama Cloud to Fumadocs.`;
},
async afterWrite() {
const { dest, template, options } = this;
const appDir = path.join(dest, options.useSrcDir ? 'src' : '.');
await copy(path.join(sourceDir, 'template/+orama-cloud/@root'), dest);
await copy(path.join(sourceDir, 'template/+orama-cloud/@app'), appDir);
const filePath = {
'+next+fuma-docs-mdx': '.next/server/app/static.json.body',
'tanstack-start': '.output/public/static.json',
'react-router': 'build/client/static.json',
'react-router-spa': 'build/client/static.json',
waku: 'dist/public/static.json',
}[template.value];
const SyncContentScript = `import { type OramaDocument, sync } from 'fumadocs-core/search/orama-cloud';
import * as fs from 'node:fs/promises';
import { OramaCloud } from '@orama/core';
// the path of pre-rendered \`static.json\`
const filePath = ${JSON.stringify(filePath)};
async function main() {
const orama = new OramaCloud({
projectId: process.env.NEXT_PUBLIC_ORAMA_PROJECT_ID,
apiKey: process.env.ORAMA_PRIVATE_API_KEY,
});
const content = await fs.readFile(filePath);
const records = JSON.parse(content.toString()) as OramaDocument[];
await sync(orama, {
index: process.env.NEXT_PUBLIC_ORAMA_DATASOURCE_ID,
documents: records,
});
console.log(\`search updated: \${records.length} records\`);
}
void main();
`;
await fs.mkdir(path.join(dest, 'scripts'), { recursive: true });
await fs.writeFile(
path.join(dest, 'scripts/sync-content.ts'),
SyncContentScript,
);
await copy(
path.join(sourceDir, `template/+orama-cloud/${template.value}`),
baseDir,
appDir,
);
},
};
+15
View File
@@ -101,3 +101,18 @@ export async function tryGitInit(cwd: string): Promise<boolean> {
return false;
}
}
export function pick<T extends object, K extends keyof T>(
obj: T,
keys: K[],
): Pick<T, K> {
const result: Partial<T> = {};
for (const key of keys) {
if (key in obj) {
result[key] = obj[key];
}
}
return result as Pick<T, K>;
}
@@ -0,0 +1,7 @@
import { exportSearchIndexes } from '@/lib/export-search-indexes';
export const revalidate = false;
export async function GET() {
return Response.json(await exportSearchIndexes());
}
@@ -17,8 +17,8 @@ import { OramaCloud } from '@orama/core';
import { useI18n } from 'fumadocs-ui/contexts/i18n';
const client = new OramaCloud({
projectId: '',
apiKey: '',
projectId: process.env.NEXT_PUBLIC_ORAMA_DATASOURCE_ID,
apiKey: process.env.NEXT_PUBLIC_ORAMA_API_KEY,
});
export default function CustomSearchDialog(props: SharedProps) {
@@ -0,0 +1,14 @@
import { source } from '@/lib/source';
import type { OramaDocument } from 'fumadocs-core/search/orama-cloud';
export async function exportSearchIndexes() {
return source.getPages().map((page) => {
return {
id: page.url,
structured: page.data.structuredData,
url: page.url,
title: page.data.title,
description: page.data.description,
} satisfies OramaDocument;
});
}
@@ -0,0 +1,6 @@
NEXT_PUBLIC_ORAMA_DATASOURCE_ID="Rest API data source ID"
NEXT_PUBLIC_ORAMA_PROJECT_ID="project ID"
NEXT_PUBLIC_ORAMA_API_KEY="public API key"
# keep it secretly!
ORAMA_PRIVATE_API_KEY="private API key"
@@ -0,0 +1,8 @@
import { index, route, type RouteConfig } from '@react-router/dev/routes';
export default [
index('routes/home.tsx'),
route('docs/*', 'docs/page.tsx'),
route('api/search', 'docs/search.ts'),
route('static.json', 'routes/static.ts'),
] satisfies RouteConfig;
@@ -0,0 +1,5 @@
import { exportSearchIndexes } from '@/lib/export-search-indexes';
export async function loader() {
return Response.json(await exportSearchIndexes());
}
@@ -0,0 +1,8 @@
import { index, route, type RouteConfig } from '@react-router/dev/routes';
export default [
index('routes/home.tsx'),
route('docs/*', 'docs/page.tsx'),
route('api/search', 'docs/search.ts'),
route('static.json', 'routes/static.ts'),
] satisfies RouteConfig;
@@ -0,0 +1,5 @@
import { exportSearchIndexes } from '@/lib/export-search-indexes';
export async function loader() {
return Response.json(await exportSearchIndexes());
}
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router';
import { exportSearchIndexes } from '@/lib/export-search-indexes';
export const Route = createFileRoute('/static.json')({
server: {
handlers: {
GET: async () => Response.json(await exportSearchIndexes()),
},
},
});
@@ -0,0 +1,27 @@
import react from '@vitejs/plugin-react';
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
import { defineConfig } from 'vite';
import tsConfigPaths from 'vite-tsconfig-paths';
import tailwindcss from '@tailwindcss/vite';
import mdx from 'fumadocs-mdx/vite';
export default defineConfig({
server: {
port: 3000,
},
plugins: [
mdx(await import('./source.config')),
tailwindcss(),
tsConfigPaths({
projects: ['./tsconfig.json'],
}),
tanstackStart({
prerender: {
enabled: true,
// pre-render the static file
pages: [{ path: '/static.json' }],
},
}),
react(),
],
});
@@ -0,0 +1,9 @@
import { exportSearchIndexes } from '@/lib/export-search-indexes';
export async function GET() {
return Response.json(await exportSearchIndexes());
}
export const getConfig = () => ({
render: 'static',
});
+55 -55
View File
@@ -43,7 +43,7 @@ importers:
version: 6.0.1
tsup:
specifier: 8.5.0
version: 8.5.0(@swc/[email protected](@swc/[email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])
version: 8.5.0(@swc/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
turbo:
specifier: 2.5.8
version: 2.5.8
@@ -756,7 +756,7 @@ importers:
devDependencies:
'@react-router/dev':
specifier: ^7.9.4
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
'@tailwindcss/vite':
specifier: ^4.1.15
version: 4.1.15([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
@@ -823,7 +823,7 @@ importers:
devDependencies:
'@react-router/dev':
specifier: ^7.9.4
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
'@tailwindcss/vite':
specifier: ^4.1.15
version: 4.1.15([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
@@ -887,7 +887,7 @@ importers:
devDependencies:
'@react-router/dev':
specifier: ^7.9.4
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
'@tailwindcss/vite':
specifier: ^4.1.15
version: 4.1.15([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
@@ -905,7 +905,7 @@ importers:
version: 19.2.2(@types/[email protected])
'@vitejs/plugin-rsc':
specifier: ^0.5.0
version: 0.5.0([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
version: 0.5.0([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
react-router-devtools:
specifier: ^5.1.3
version: 5.1.3(@types/[email protected](@types/[email protected]))(@types/[email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
@@ -954,7 +954,7 @@ importers:
devDependencies:
'@react-router/dev':
specifier: ^7.9.4
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
'@tailwindcss/vite':
specifier: ^4.1.15
version: 4.1.15([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
@@ -1036,7 +1036,7 @@ importers:
version: 1.133.21(@tanstack/[email protected]([email protected]([email protected]))([email protected]))(@tanstack/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
'@tanstack/react-start':
specifier: ^1.133.21
version: 1.133.21([email protected]([email protected]))([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
version: 1.133.21([email protected])([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))
fumadocs-core:
specifier: workspace:*
version: link:../../packages/core
@@ -1103,7 +1103,7 @@ importers:
version: 1.133.21(@tanstack/[email protected]([email protected]([email protected]))([email protected]))(@tanstack/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
'@tanstack/react-start':
specifier: ^1.133.21
version: 1.133.21([email protected]([email protected]))([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
version: 1.133.21([email protected])([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))
fumadocs-core:
specifier: workspace:*
version: link:../../packages/core
@@ -1167,7 +1167,7 @@ importers:
version: 1.133.21(@tanstack/[email protected]([email protected]([email protected]))([email protected]))(@tanstack/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
'@tanstack/react-start':
specifier: ^1.133.21
version: 1.133.21([email protected]([email protected]))([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
version: 1.133.21([email protected])([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))
'@tanstack/start-static-server-functions':
specifier: ^1.133.20
version: 1.133.20
@@ -1243,10 +1243,10 @@ importers:
version: 19.2.0([email protected])
react-server-dom-webpack:
specifier: ^19.2.0
version: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
version: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected]))
waku:
specifier: ^0.26.1
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected])([email protected])([email protected])
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])
devDependencies:
'@tailwindcss/vite':
specifier: ^4.1.15
@@ -1298,10 +1298,10 @@ importers:
version: 19.2.0([email protected])
react-server-dom-webpack:
specifier: ^19.2.0
version: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
version: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected]))
waku:
specifier: ^0.26.1
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected])([email protected])([email protected])
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])
devDependencies:
'@tailwindcss/vite':
specifier: ^4.1.15
@@ -1353,10 +1353,10 @@ importers:
version: 19.2.0([email protected])
react-server-dom-webpack:
specifier: ^19.2.0
version: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
version: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected]))
waku:
specifier: ^0.26.1
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected])([email protected])([email protected])
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])
devDependencies:
'@tailwindcss/postcss':
specifier: ^4.1.15
@@ -1587,7 +1587,7 @@ importers:
version: 6.0.3
waku:
specifier: ^0.26.1
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected])([email protected])([email protected])
version: 0.26.1(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])
packages/create-app:
dependencies:
@@ -1637,9 +1637,12 @@ importers:
'@content-collections/next':
specifier: ^0.2.8
version: 0.2.8(@content-collections/[email protected]([email protected]))([email protected](@babel/[email protected])(@opentelemetry/[email protected])([email protected]([email protected]))([email protected]))
'@orama/core':
specifier: ^1.2.13
version: 1.2.13
'@react-router/dev':
specifier: ^7.9.4
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
version: 7.9.4(@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])
'@react-router/node':
specifier: ^7.9.4
version: 7.9.4([email protected]([email protected]([email protected]))([email protected]))([email protected])
@@ -1657,7 +1660,7 @@ importers:
version: 1.133.21([email protected]([email protected]))([email protected])
'@tanstack/react-start':
specifier: ^1.133.21
version: 1.133.21([email protected]([email protected]))([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
version: 1.133.21([email protected])([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))
'@types/mdx':
specifier: ^2.0.13
version: 2.0.13
@@ -1901,7 +1904,7 @@ importers:
version: 7.1.11(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
webpack:
specifier: ^5.102.1
version: 5.102.1(@swc/[email protected](@swc/[email protected]))([email protected])
version: 5.102.1(@swc/[email protected])([email protected])
packages/mdx-remote:
dependencies:
@@ -2135,7 +2138,7 @@ importers:
version: 5.0.4([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@vitejs/plugin-rsc':
specifier: ^0.5.0
version: 0.5.0([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
version: 0.5.0([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
commander:
specifier: ^14.0.1
version: 14.0.1
@@ -13791,7 +13794,7 @@ snapshots:
'@radix-ui/[email protected]': {}
'@react-router/[email protected](@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])':
'@react-router/[email protected](@react-router/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected]))(@types/[email protected])(@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected])':
dependencies:
'@babel/core': 7.28.4
'@babel/generator': 7.28.3
@@ -13824,7 +13827,7 @@ snapshots:
vite-node: 3.2.4(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
optionalDependencies:
'@react-router/serve': 7.9.4([email protected]([email protected]([email protected]))([email protected]))([email protected])
'@vitejs/plugin-rsc': 0.5.0([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@vitejs/plugin-rsc': 0.5.0([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
typescript: 5.9.3
transitivePeerDependencies:
- '@types/node'
@@ -14489,7 +14492,7 @@ snapshots:
'@swc/[email protected]':
optional: true
'@swc/[email protected](@swc/[email protected])':
'@swc/[email protected]':
dependencies:
'@swc/counter': 0.1.3
'@swc/types': 0.1.25
@@ -14504,7 +14507,6 @@ snapshots:
'@swc/core-win32-arm64-msvc': 1.13.19
'@swc/core-win32-ia32-msvc': 1.13.19
'@swc/core-win32-x64-msvc': 1.13.19
'@swc/helpers': 0.5.17
optional: true
'@swc/[email protected](@swc/[email protected])':
@@ -14727,27 +14729,27 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
'@tanstack/[email protected]([email protected]([email protected]))([email protected]([email protected]))([email protected])':
'@tanstack/[email protected]([email protected])([email protected]([email protected]))([email protected])':
dependencies:
'@tanstack/history': 1.133.19
'@tanstack/react-router': 1.133.21([email protected]([email protected]))([email protected])
'@tanstack/router-core': 1.133.20
'@tanstack/start-client-core': 1.133.20
'@tanstack/start-server-core': 1.133.20([email protected]([email protected]))
'@tanstack/start-server-core': 1.133.20([email protected])
react: 19.2.0
react-dom: 19.2.0([email protected])
transitivePeerDependencies:
- crossws
'@tanstack/[email protected]([email protected]([email protected]))([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))':
'@tanstack/[email protected]([email protected])([email protected]([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))':
dependencies:
'@tanstack/react-router': 1.133.21([email protected]([email protected]))([email protected])
'@tanstack/react-start-client': 1.133.21([email protected]([email protected]))([email protected])
'@tanstack/react-start-server': 1.133.21([email protected]([email protected]))([email protected]([email protected]))([email protected])
'@tanstack/react-start-server': 1.133.21([email protected])([email protected]([email protected]))([email protected])
'@tanstack/router-utils': 1.133.19
'@tanstack/start-client-core': 1.133.20
'@tanstack/start-plugin-core': 1.133.21(@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
'@tanstack/start-server-core': 1.133.20([email protected]([email protected]))
'@tanstack/start-plugin-core': 1.133.21(@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))
'@tanstack/start-server-core': 1.133.20([email protected])
pathe: 2.0.3
react: 19.2.0
react-dom: 19.2.0([email protected])
@@ -14812,7 +14814,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@tanstack/[email protected](@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))':
'@tanstack/[email protected](@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))':
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-syntax-jsx': 7.27.1(@babel/[email protected])
@@ -14831,7 +14833,7 @@ snapshots:
optionalDependencies:
'@tanstack/react-router': 1.133.21([email protected]([email protected]))([email protected])
vite: 7.1.11(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
webpack: 5.102.1(@swc/[email protected](@swc/[email protected]))([email protected])
webpack: 5.102.1(@swc/[email protected])([email protected])
transitivePeerDependencies:
- supports-color
@@ -14872,7 +14874,7 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
'@tanstack/[email protected](@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))':
'@tanstack/[email protected](@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/core': 7.28.4
@@ -14880,11 +14882,11 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-beta.40
'@tanstack/router-core': 1.133.20
'@tanstack/router-generator': 1.133.20
'@tanstack/router-plugin': 1.133.21(@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
'@tanstack/router-plugin': 1.133.21(@tanstack/[email protected]([email protected]([email protected]))([email protected]))([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))([email protected](@swc/[email protected])([email protected]))
'@tanstack/router-utils': 1.133.19
'@tanstack/server-functions-plugin': 1.133.19([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@tanstack/start-client-core': 1.133.20
'@tanstack/start-server-core': 1.133.20([email protected]([email protected]))
'@tanstack/start-server-core': 1.133.20([email protected])
babel-dead-code-elimination: 1.0.10
cheerio: 1.1.2
exsolve: 1.0.7
@@ -14904,13 +14906,13 @@ snapshots:
- vite-plugin-solid
- webpack
'@tanstack/[email protected]([email protected]([email protected]))':
'@tanstack/[email protected]([email protected])':
dependencies:
'@tanstack/history': 1.133.19
'@tanstack/router-core': 1.133.20
'@tanstack/start-client-core': 1.133.20
'@tanstack/start-storage-context': 1.133.20
h3-v2: [email protected]([email protected]([email protected]))
h3-v2: [email protected]([email protected])
seroval: 1.3.2
tiny-invariant: 1.3.3
transitivePeerDependencies:
@@ -15392,7 +15394,7 @@ snapshots:
vite: 7.1.5(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
vitefu: 1.1.1([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
'@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))':
'@vitejs/[email protected]([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))':
dependencies:
'@remix-run/node-fetch-server': 0.10.0
es-module-lexer: 1.7.0
@@ -15405,7 +15407,7 @@ snapshots:
vite: 7.1.11(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
vitefu: 1.1.1([email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
optionalDependencies:
react-server-dom-webpack: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
react-server-dom-webpack: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected]))
'@vitest/[email protected]':
dependencies:
@@ -16449,9 +16451,7 @@ snapshots:
dependencies:
uncrypto: 0.1.3
[email protected]([email protected]):
optionalDependencies:
srvx: 0.8.16
[email protected]:
optional: true
[email protected]:
@@ -17732,14 +17732,14 @@ snapshots:
ufo: 1.6.1
uncrypto: 0.1.3
[email protected]([email protected]([email protected])):
[email protected]([email protected]):
dependencies:
cookie-es: 2.0.0
fetchdts: 0.1.7
rou3: 0.7.8
srvx: 0.8.16
optionalDependencies:
crossws: 0.4.1([email protected])
crossws: 0.4.1
[email protected]: {}
@@ -20172,13 +20172,13 @@ snapshots:
optionalDependencies:
react-dom: 19.2.0([email protected])
[email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])):
[email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected])):
dependencies:
acorn-loose: 8.5.2
neo-async: 2.6.2
react: 19.2.0
react-dom: 19.2.0([email protected])
webpack: 5.102.1(@swc/[email protected](@swc/[email protected]))([email protected])
webpack: 5.102.1(@swc/[email protected])([email protected])
webpack-sources: 3.3.3
[email protected](@types/[email protected])([email protected]):
@@ -21180,16 +21180,16 @@ snapshots:
[email protected]: {}
[email protected](@swc/[email protected](@swc/[email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])):
[email protected](@swc/[email protected])([email protected])([email protected](@swc/[email protected])([email protected])):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
terser: 5.44.0
webpack: 5.102.1(@swc/[email protected](@swc/[email protected]))([email protected])
webpack: 5.102.1(@swc/[email protected])([email protected])
optionalDependencies:
'@swc/core': 1.13.19(@swc/[email protected])
'@swc/core': 1.13.19
esbuild: 0.25.11
[email protected]:
@@ -21316,7 +21316,7 @@ snapshots:
[email protected]: {}
[email protected](@swc/[email protected](@swc/[email protected]))([email protected])([email protected])([email protected])([email protected])([email protected]):
[email protected](@swc/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]):
dependencies:
bundle-require: 5.1.0([email protected])
cac: 6.7.14
@@ -21336,7 +21336,7 @@ snapshots:
tinyglobby: 0.2.15
tree-kill: 1.2.2
optionalDependencies:
'@swc/core': 1.13.19(@swc/[email protected])
'@swc/core': 1.13.19
postcss: 8.5.6
typescript: 5.9.3
transitivePeerDependencies:
@@ -21967,7 +21967,7 @@ snapshots:
[email protected]: {}
[email protected](@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected])))([email protected])([email protected])([email protected])([email protected]):
[email protected](@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected])))([email protected])([email protected])([email protected])([email protected]):
dependencies:
'@hono/node-server': 1.19.1([email protected])
'@swc/core': 1.13.5(@swc/[email protected])
@@ -21977,7 +21977,7 @@ snapshots:
hono: 4.9.6
react: 19.2.0
react-dom: 19.2.0([email protected])
react-server-dom-webpack: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
react-server-dom-webpack: 19.2.0([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected]))
rsc-html-stream: 0.0.7
vite: 7.1.5(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])
transitivePeerDependencies:
@@ -22035,7 +22035,7 @@ snapshots:
[email protected]: {}
[email protected](@swc/[email protected](@swc/[email protected]))([email protected]):
[email protected](@swc/[email protected])([email protected]):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.8
@@ -22059,7 +22059,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.0
terser-webpack-plugin: 5.3.14(@swc/[email protected](@swc/[email protected]))([email protected])([email protected](@swc/[email protected](@swc/[email protected]))([email protected]))
terser-webpack-plugin: 5.3.14(@swc/[email protected])([email protected])([email protected](@swc/[email protected])([email protected]))
watchpack: 2.4.4
webpack-sources: 3.3.3
transitivePeerDependencies: