diff --git a/biome.json b/biome.json index 9b2557d22..e3ef0f337 100644 --- a/biome.json +++ b/biome.json @@ -11,8 +11,8 @@ "**/brisa/client/*", "**/brisa/jsx-runtime/*", "**/brisa/jsx-dev-runtime/*", - "**/docs/.vitepress/cache/*", - "**/docs/.vitepress/dist/*" + "**/www/src/public/*", + "**/www/.vercel/*" ] }, "formatter": { diff --git a/bun.lockb b/bun.lockb index 74603acd7..1147da3f3 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/packages/brisa/package.json b/packages/brisa/package.json index 15a2fc4e5..ded219976 100644 --- a/packages/brisa/package.json +++ b/packages/brisa/package.json @@ -131,12 +131,10 @@ "devDependencies": { "@happy-dom/global-registrator": "15.7.3", "@types/bun": "1.1.8", - "brisa": "0.0.208-canary.1", + "brisa": "latest", "@types/mime-types": "2.1.4", - "mime-types": "2.1.35" - }, - "peerDependencies": { - "typescript": "5.5.4" + "mime-types": "2.1.35", + "typescript": "5.6.2" }, "packageManager": "bun@1.1.28", "engines": { diff --git a/packages/brisa/src/utils/get-client-code-in-page/index.test.ts b/packages/brisa/src/utils/get-client-code-in-page/index.test.ts index 2c11f4cbd..46bf69e51 100644 --- a/packages/brisa/src/utils/get-client-code-in-page/index.test.ts +++ b/packages/brisa/src/utils/get-client-code-in-page/index.test.ts @@ -20,9 +20,9 @@ const pageWebComponents = { const i18nCode = 3072; const brisaSize = 5743; // TODO: Reduce this size :/ -const webComponents = 1130; +const webComponents = 1144; const unsuspenseSize = 217; -const rpcSize = 2468; // TODO: Reduce this size +const rpcSize = 2467; // TODO: Reduce this size const lazyRPCSize = 4171; // TODO: Reduce this size // lazyRPC is loaded after user interaction (action, link), // so it's not included in the initial size diff --git a/packages/create-brisa/create-brisa.cjs b/packages/create-brisa/create-brisa.cjs index 5dfd0817f..9a4ec636b 100755 --- a/packages/create-brisa/create-brisa.cjs +++ b/packages/create-brisa/create-brisa.cjs @@ -57,8 +57,6 @@ function createProject(PROJECT_NAME) { }, devDependencies: { '@types/bun': 'latest', - }, - peerDependencies: { typescript: 'latest', }, }; diff --git a/packages/create-brisa/package.json b/packages/create-brisa/package.json index c622d3296..22f3da5c0 100644 --- a/packages/create-brisa/package.json +++ b/packages/create-brisa/package.json @@ -28,6 +28,6 @@ "pnpm": "please-use-bun" }, "devDependencies": { - "brisa": "0.0.208-canary.1" + "brisa": "latest" } } diff --git a/packages/www/.gitignore b/packages/www/.gitignore index a20db6fe9..bd560656e 100644 --- a/packages/www/.gitignore +++ b/packages/www/.gitignore @@ -2,4 +2,5 @@ build node_modules out .vercel -.DS_Store \ No newline at end of file +.DS_Store +src/public/monaco-editor/* \ No newline at end of file diff --git a/packages/www/package.json b/packages/www/package.json index 0a300e14e..1ff3de735 100644 --- a/packages/www/package.json +++ b/packages/www/package.json @@ -22,7 +22,7 @@ "search-engine-wc": "0.2.2", "shikiji-transformers": "0.10.2", "slugify": "1.6.6", - "@swc/wasm-web": "1.7.26" + "@swc/wasm-web": "1.7.28" }, "devDependencies": { "@types/bun": "1.1.10", diff --git a/packages/www/src/helpers/monaco-extra-libs/index.ts b/packages/www/src/helpers/monaco-extra-libs/index.ts new file mode 100644 index 000000000..403abdaac --- /dev/null +++ b/packages/www/src/helpers/monaco-extra-libs/index.ts @@ -0,0 +1,38 @@ +import path from 'node:path'; +import fs from 'node:fs'; +import { fileSystemRouter } from 'brisa/server'; + +/** + * TODO: It's not working yet ... We are missing some configuration after that + */ +export default function getMonacoEditorExtraLibs() { + const fileExtensions = ['.d.ts', '.json']; + const root = path.resolve(path.join(process.cwd(), '..', '..')); + const nodeModules = path.join(root, 'node_modules'); + const brisaDep = fileSystemRouter({ + dir: path.join(nodeModules, 'brisa'), + fileExtensions, + }); + const cssType = fileSystemRouter({ + dir: path.join(nodeModules, 'csstype'), + fileExtensions, + }); + let extraLibs = ''; + + for (const [pathname] of brisaDep.routes) { + if (pathname.includes('node_modules') || pathname.includes('src')) continue; + const route = brisaDep.match(pathname); + const filePath = route.filePath.replace(root, ''); + const fileRaw = fs.readFileSync(route.filePath, 'utf-8'); + extraLibs += `monaco.languages.typescript.typescriptDefaults.addExtraLib(\`${fileRaw}\`, 'file://${filePath}');`; + } + + for (const [pathname] of cssType.routes) { + const route = cssType.match(pathname); + const filePath = route.filePath.replace(root, ''); + const fileRaw = fs.readFileSync(route.filePath, 'utf-8'); + extraLibs += `monaco.languages.typescript.typescriptDefaults.addExtraLib(\`${fileRaw}\`, 'file://${filePath}');`; + } + + return extraLibs; +} diff --git a/packages/www/src/layout/index.tsx b/packages/www/src/layout/index.tsx index 517bc62d8..5690f45bc 100644 --- a/packages/www/src/layout/index.tsx +++ b/packages/www/src/layout/index.tsx @@ -1,6 +1,6 @@ import Nav from '@/components/navigation'; import Footer from '@/components/footer'; -import { dangerHTML } from 'brisa'; +import { dangerHTML, type RequestContext } from 'brisa'; const meta = { title: 'Brisa - The Web Platform Framework', @@ -22,7 +22,14 @@ const speculationrules = { ], }; -export default function Layout({ children }: { children: JSX.Element }) { +export default function Layout( + { children }: { children: JSX.Element }, + { route }: RequestContext, +) { + if (route.pathname === '/playground/preview') { + return {children}; + } + return ( @@ -88,6 +95,25 @@ export default function Layout({ children }: { children: JSX.Element }) { ); } +function PreviewLayout({ children }: { children: JSX.Element }) { + return ( + + + + + {children} + + ); +} + function initTheme() { if (document.body.classList.length) return; diff --git a/packages/www/src/pages/playground.tsx b/packages/www/src/pages/playground.tsx deleted file mode 100644 index b2dfe995d..000000000 --- a/packages/www/src/pages/playground.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Playground() { - return ( -
-
-
- Brisa Framework logo -

Brisa Playground

-
-
- -
- ); -} diff --git a/packages/www/src/pages/playground/index.tsx b/packages/www/src/pages/playground/index.tsx new file mode 100644 index 000000000..92f456ca5 --- /dev/null +++ b/packages/www/src/pages/playground/index.tsx @@ -0,0 +1,105 @@ +import { dangerHTML } from 'brisa'; +import getMonacoEditorExtraLibs from '@/helpers/monaco-extra-libs'; + +const defaultValue = `// src/web-components/wc-counter.tsx +import type { WebContext } from 'brisa'; + +export default function Counter({ name }: { name: string }, { state }: WebContext) { + const count = state(0); + + return ( +

+ + {name} {count.value} + +

+ ) +}`; + +export default function Playground() { + return ( + <> +
+ +
+ +
+