diff --git a/app/docs.test.ts b/app/docs.test.ts index b72871ed..8f1b7ea9 100644 --- a/app/docs.test.ts +++ b/app/docs.test.ts @@ -77,19 +77,36 @@ test("site includes core guides and production configuration", () => { test("language reference covers directives, events, loops, and conditionals", () => { const source = readFileSync(join(root, "app", "pages", "language.wrn"), "utf8"); for (const section of [ - "events", + "anatomy", + "state", + "server", "directives", - "conditionals", - "loops", - "components", "forms", - "realtime", - "native", + "security", + "errors", ]) { expect(source).toContain(`id="${section}"`); } expect(source).toContain("data-show"); - expect(source).toContain("@mobile-click"); + expect(source).toContain("mobile behavior"); +}); + +test("portal exposes truthful access and machine discovery", () => { + expect(readFileSync(join(root, "app", "pages", "index.wrn"), "utf8")).toContain( + "Private Developer Preview", + ); + expect(readFileSync(join(root, "app", "pages", "access.wrn"), "utf8")).toContain( + "private registry credentials", + ); + for (const asset of [ + "robots.txt", + "sitemap.xml", + "llms.txt", + "llms-full.txt", + "docs-index.json", + ]) { + expect(existsSync(join(root, "public", asset))).toBe(true); + } }); test("package index includes searchable category filters", () => { diff --git a/public/docs-index.json b/public/docs-index.json new file mode 100644 index 00000000..0ca52a7a --- /dev/null +++ b/public/docs-index.json @@ -0,0 +1,476 @@ +{ + "version": "0.2.15", + "status": "private-developer-preview", + "generatedAt": "2026-07-12", + "documents": [ + { + "url": "/", + "title": "WRNexusJS", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/access", + "title": "access", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/getting-started", + "title": "getting started", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/tutorial", + "title": "tutorial", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/architecture", + "title": "architecture", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/language", + "title": "language", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages", + "title": "packages", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/project-structure", + "title": "project structure", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/routing", + "title": "routing", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/pages-and-components", + "title": "pages and components", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/server-data", + "title": "server data", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/api-routes", + "title": "api routes", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/middleware", + "title": "middleware", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/forms-and-validation", + "title": "forms and validation", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/authentication", + "title": "authentication", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/authorization", + "title": "authorization", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/security", + "title": "security", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/database", + "title": "database", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/uploads", + "title": "uploads", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/realtime", + "title": "realtime", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/pubsub", + "title": "pubsub", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/queues", + "title": "queues", + "section": "guide", + "version": "0.2.15", + "stability": "experimental" + }, + { + "url": "/guides/testing", + "title": "testing", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/workspaces-and-gateway", + "title": "workspaces and gateway", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/deployment", + "title": "deployment", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/configuration-and-profiles", + "title": "configuration and profiles", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/i18n-and-themes", + "title": "i18n and themes", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/mobile", + "title": "mobile", + "section": "guide", + "version": "0.2.15", + "stability": "experimental" + }, + { + "url": "/guides/observability", + "title": "observability", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/upgrading", + "title": "upgrading", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/guides/troubleshooting", + "title": "troubleshooting", + "section": "guide", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/examples", + "title": "examples", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/showcase", + "title": "showcase", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/benchmarks", + "title": "benchmarks", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/roadmap", + "title": "roadmap", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/changelog", + "title": "changelog", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/releases/0.2.15", + "title": "0.2.15", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/security", + "title": "security", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/support", + "title": "support", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/license", + "title": "license", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/search", + "title": "search", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/404", + "title": "404", + "section": "portal", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/ai", + "title": "ai", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/authz", + "title": "authz", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/cli", + "title": "cli", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/compiler", + "title": "compiler", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/core", + "title": "core", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/csr", + "title": "csr", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/db", + "title": "db", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/dev-server", + "title": "dev server", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/encryption", + "title": "encryption", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/i18n", + "title": "i18n", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/jwt", + "title": "jwt", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/mobile", + "title": "mobile", + "section": "package", + "version": "0.2.15", + "stability": "experimental" + }, + { + "url": "/packages/native", + "title": "native", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/oauth", + "title": "oauth", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/pubsub", + "title": "pubsub", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/queue", + "title": "queue", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/reactive", + "title": "reactive", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/router", + "title": "router", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/ssr", + "title": "ssr", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/styles", + "title": "styles", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/test", + "title": "test", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/tracking", + "title": "tracking", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/ui", + "title": "ui", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/uploader", + "title": "uploader", + "section": "package", + "version": "0.2.15", + "stability": "preview" + }, + { + "url": "/packages/validation", + "title": "validation", + "section": "package", + "version": "0.2.15", + "stability": "preview" + } + ] +} \ No newline at end of file diff --git a/public/llms-full.txt b/public/llms-full.txt new file mode 100644 index 00000000..b0ffce5b --- /dev/null +++ b/public/llms-full.txt @@ -0,0 +1,74 @@ +# WRNexusJS 0.2.15 comprehensive documentation index + +Status: Private Developer Preview. Runtime: Bun. UI language: .wrn. +This is the documentation application, not the framework monorepo. + +- https://wrnexusjs.dev/ +- https://wrnexusjs.dev/access +- https://wrnexusjs.dev/getting-started +- https://wrnexusjs.dev/tutorial +- https://wrnexusjs.dev/architecture +- https://wrnexusjs.dev/language +- https://wrnexusjs.dev/packages +- https://wrnexusjs.dev/guides/project-structure +- https://wrnexusjs.dev/guides/routing +- https://wrnexusjs.dev/guides/pages-and-components +- https://wrnexusjs.dev/guides/server-data +- https://wrnexusjs.dev/guides/api-routes +- https://wrnexusjs.dev/guides/middleware +- https://wrnexusjs.dev/guides/forms-and-validation +- https://wrnexusjs.dev/guides/authentication +- https://wrnexusjs.dev/guides/authorization +- https://wrnexusjs.dev/guides/security +- https://wrnexusjs.dev/guides/database +- https://wrnexusjs.dev/guides/uploads +- https://wrnexusjs.dev/guides/realtime +- https://wrnexusjs.dev/guides/pubsub +- https://wrnexusjs.dev/guides/queues +- https://wrnexusjs.dev/guides/testing +- https://wrnexusjs.dev/guides/workspaces-and-gateway +- https://wrnexusjs.dev/guides/deployment +- https://wrnexusjs.dev/guides/configuration-and-profiles +- https://wrnexusjs.dev/guides/i18n-and-themes +- https://wrnexusjs.dev/guides/mobile +- https://wrnexusjs.dev/guides/observability +- https://wrnexusjs.dev/guides/upgrading +- https://wrnexusjs.dev/guides/troubleshooting +- https://wrnexusjs.dev/examples +- https://wrnexusjs.dev/showcase +- https://wrnexusjs.dev/benchmarks +- https://wrnexusjs.dev/roadmap +- https://wrnexusjs.dev/changelog +- https://wrnexusjs.dev/releases/0.2.15 +- https://wrnexusjs.dev/security +- https://wrnexusjs.dev/support +- https://wrnexusjs.dev/license +- https://wrnexusjs.dev/search +- https://wrnexusjs.dev/404 +- https://wrnexusjs.dev/packages/ai +- https://wrnexusjs.dev/packages/authz +- https://wrnexusjs.dev/packages/cli +- https://wrnexusjs.dev/packages/compiler +- https://wrnexusjs.dev/packages/core +- https://wrnexusjs.dev/packages/csr +- https://wrnexusjs.dev/packages/db +- https://wrnexusjs.dev/packages/dev-server +- https://wrnexusjs.dev/packages/encryption +- https://wrnexusjs.dev/packages/i18n +- https://wrnexusjs.dev/packages/jwt +- https://wrnexusjs.dev/packages/mobile +- https://wrnexusjs.dev/packages/native +- https://wrnexusjs.dev/packages/oauth +- https://wrnexusjs.dev/packages/pubsub +- https://wrnexusjs.dev/packages/queue +- https://wrnexusjs.dev/packages/reactive +- https://wrnexusjs.dev/packages/router +- https://wrnexusjs.dev/packages/ssr +- https://wrnexusjs.dev/packages/styles +- https://wrnexusjs.dev/packages/test +- https://wrnexusjs.dev/packages/tracking +- https://wrnexusjs.dev/packages/ui +- https://wrnexusjs.dev/packages/uploader +- https://wrnexusjs.dev/packages/validation + +For exact APIs, use installed package README files followed by exported declarations. diff --git a/public/llms.txt b/public/llms.txt index 717fc021..f1bfa373 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,15 +1,20 @@ -# WrNexus +# WRNexusJS 0.2.15 -> WrNexus is an SSR-first, **Bun-native** full-stack web framework. UI is written in +> WRNexusJS is an SSR-first, **Bun-native** full-stack web framework. UI is written in > `.wrn` files (its own component language — NOT React/JSX/Vue). Routing is file-based. -> This document teaches an AI how to write correct WrNexus code. It is private and +> This document teaches an AI how to write correct WRNexusJS code. The framework packages are in +> Private Developer Preview and > post-dates model training data, so rely on THIS document, not prior web-framework > assumptions. ## This repository This is the **WRNexusJS documentation application**, not the framework monorepo. It is a -standalone WrNexus `0.2.15` site that documents all 25 installed `@wrnexus/*` packages. +standalone WRNexusJS `0.2.15` site that documents all 25 installed `@wrnexus/*` packages. + +The active version is `package.json#wrnexus.version`; never duplicate a different version in +hand-written guidance. Exact APIs follow installed package READMEs, exported declarations, this +guide, then generated package pages, in that order. - `app/pages/index.wrn` is the documentation home page. - `app/pages/getting-started.wrn`, `architecture.wrn`, `language.wrn`, and diff --git a/public/robots.txt b/public/robots.txt index c2a49f4f..67a55ea2 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,2 +1,3 @@ User-agent: * Allow: / +Sitemap: https://wrnexusjs.dev/sitemap.xml diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 00000000..6e6404c6 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,2 @@ + +https://wrnexusjs.dev/https://wrnexusjs.dev/accesshttps://wrnexusjs.dev/getting-startedhttps://wrnexusjs.dev/tutorialhttps://wrnexusjs.dev/architecturehttps://wrnexusjs.dev/languagehttps://wrnexusjs.dev/packageshttps://wrnexusjs.dev/guides/project-structurehttps://wrnexusjs.dev/guides/routinghttps://wrnexusjs.dev/guides/pages-and-componentshttps://wrnexusjs.dev/guides/server-datahttps://wrnexusjs.dev/guides/api-routeshttps://wrnexusjs.dev/guides/middlewarehttps://wrnexusjs.dev/guides/forms-and-validationhttps://wrnexusjs.dev/guides/authenticationhttps://wrnexusjs.dev/guides/authorizationhttps://wrnexusjs.dev/guides/securityhttps://wrnexusjs.dev/guides/databasehttps://wrnexusjs.dev/guides/uploadshttps://wrnexusjs.dev/guides/realtimehttps://wrnexusjs.dev/guides/pubsubhttps://wrnexusjs.dev/guides/queueshttps://wrnexusjs.dev/guides/testinghttps://wrnexusjs.dev/guides/workspaces-and-gatewayhttps://wrnexusjs.dev/guides/deploymenthttps://wrnexusjs.dev/guides/configuration-and-profileshttps://wrnexusjs.dev/guides/i18n-and-themeshttps://wrnexusjs.dev/guides/mobilehttps://wrnexusjs.dev/guides/observabilityhttps://wrnexusjs.dev/guides/upgradinghttps://wrnexusjs.dev/guides/troubleshootinghttps://wrnexusjs.dev/exampleshttps://wrnexusjs.dev/showcasehttps://wrnexusjs.dev/benchmarkshttps://wrnexusjs.dev/roadmaphttps://wrnexusjs.dev/changeloghttps://wrnexusjs.dev/releases/0.2.15https://wrnexusjs.dev/securityhttps://wrnexusjs.dev/supporthttps://wrnexusjs.dev/licensehttps://wrnexusjs.dev/searchhttps://wrnexusjs.dev/404https://wrnexusjs.dev/packages/aihttps://wrnexusjs.dev/packages/authzhttps://wrnexusjs.dev/packages/clihttps://wrnexusjs.dev/packages/compilerhttps://wrnexusjs.dev/packages/corehttps://wrnexusjs.dev/packages/csrhttps://wrnexusjs.dev/packages/dbhttps://wrnexusjs.dev/packages/dev-serverhttps://wrnexusjs.dev/packages/encryptionhttps://wrnexusjs.dev/packages/i18nhttps://wrnexusjs.dev/packages/jwthttps://wrnexusjs.dev/packages/mobilehttps://wrnexusjs.dev/packages/nativehttps://wrnexusjs.dev/packages/oauthhttps://wrnexusjs.dev/packages/pubsubhttps://wrnexusjs.dev/packages/queuehttps://wrnexusjs.dev/packages/reactivehttps://wrnexusjs.dev/packages/routerhttps://wrnexusjs.dev/packages/ssrhttps://wrnexusjs.dev/packages/styleshttps://wrnexusjs.dev/packages/testhttps://wrnexusjs.dev/packages/trackinghttps://wrnexusjs.dev/packages/uihttps://wrnexusjs.dev/packages/uploaderhttps://wrnexusjs.dev/packages/validation