From 76d4e5825aa405511a3614161a0dc133f80039a8 Mon Sep 17 00:00:00 2001 From: Ajay Ghanwat Date: Mon, 3 Aug 2026 00:09:47 +0530 Subject: [PATCH] fix: use patched compiler for docs deployment --- app/routes.gen.ts | 377 ++++++++++++----------- app/types/wrnexus.generated.d.ts | 198 ++++++++++-- app/types/wrnexus.plugins.generated.d.ts | 1 - bun.lock | 15 +- eslint.config.js | 3 + package-lock.json | 31 +- package.json | 5 +- vendor/compiler/README.md | 216 +++++++++++++ vendor/compiler/package.json | 49 +++ 9 files changed, 671 insertions(+), 224 deletions(-) create mode 100644 vendor/compiler/README.md create mode 100644 vendor/compiler/package.json diff --git a/app/routes.gen.ts b/app/routes.gen.ts index ac2b1c27..83d07454 100644 --- a/app/routes.gen.ts +++ b/app/routes.gen.ts @@ -173,13 +173,13 @@ export interface Routes { } export interface RouteNames { - "index": "/"; + index: "/"; "404": "/404"; - "access": "/access"; - "architecture": "/architecture"; - "benchmarks": "/benchmarks"; - "changelog": "/changelog"; - "examples": "/examples"; + access: "/access"; + architecture: "/architecture"; + benchmarks: "/benchmarks"; + changelog: "/changelog"; + examples: "/examples"; "getting.started": "/getting-started"; "guides.api.routes": "/guides/api-routes"; "guides.authentication": "/guides/authentication"; @@ -205,9 +205,9 @@ export interface RouteNames { "guides.upgrading": "/guides/upgrading"; "guides.uploads": "/guides/uploads"; "guides.workspaces.and.gateway": "/guides/workspaces-and-gateway"; - "language": "/language"; - "license": "/license"; - "packages": "/packages"; + language: "/language"; + license: "/license"; + packages: "/packages"; "packages.ai": "/packages/ai"; "packages.auth": "/packages/auth"; "packages.authz": "/packages/authz"; @@ -335,12 +335,12 @@ export interface RouteNames { "releases.0.6.0": "/releases/0.6.0"; "releases.0.7.0": "/releases/0.7.0"; "releases.0.8.0": "/releases/0.8.0"; - "roadmap": "/roadmap"; - "search": "/search"; - "security": "/security"; - "showcase": "/showcase"; - "support": "/support"; - "tutorial": "/tutorial"; + roadmap: "/roadmap"; + search: "/search"; + security: "/security"; + showcase: "/showcase"; + support: "/support"; + tutorial: "/tutorial"; } export interface RouteQueries { @@ -356,7 +356,11 @@ type RouteValue = string | readonly string[] | undefined; function encodeRouteValue(value: RouteValue, catchAll: boolean): string { if (value === undefined) return ""; - const values = Array.isArray(value) ? value : catchAll ? String(value).split("/") : [String(value)]; + const values = Array.isArray(value) + ? value + : catchAll + ? String(value).split("/") + : [String(value)]; return values.map((part) => encodeURIComponent(part)).join("/"); } @@ -386,7 +390,8 @@ function buildHref(path: string, params: Record = {}): strin } const value = params[name]; if (value === undefined && optional) continue; - if (value === undefined) throw new Error(`WRN-ROUTE-MISSING-PARAM: Missing route parameter '${name}'.`); + if (value === undefined) + throw new Error(`WRN-ROUTE-MISSING-PARAM: Missing route parameter '${name}'.`); output.push(encodeRouteValue(value, catchAll)); } return "/" + output.filter(Boolean).join("/"); @@ -413,175 +418,175 @@ export function route( : [params: Routes[RouteNames[N]], query?: RouteQuery] ): string { const paths: Record = { - "404": "/404", - "index": "/", - "access": "/access", - "architecture": "/architecture", - "benchmarks": "/benchmarks", - "changelog": "/changelog", - "examples": "/examples", - "getting.started": "/getting-started", - "guides.api.routes": "/guides/api-routes", - "guides.authentication": "/guides/authentication", - "guides.authorization": "/guides/authorization", - "guides.configuration.and.profiles": "/guides/configuration-and-profiles", - "guides.database": "/guides/database", - "guides.deployment": "/guides/deployment", - "guides.forms.and.validation": "/guides/forms-and-validation", - "guides.i18n.and.themes": "/guides/i18n-and-themes", - "guides.middleware": "/guides/middleware", - "guides.mobile": "/guides/mobile", - "guides.observability": "/guides/observability", - "guides.pages.and.components": "/guides/pages-and-components", - "guides.project.structure": "/guides/project-structure", - "guides.pubsub": "/guides/pubsub", - "guides.queues": "/guides/queues", - "guides.realtime": "/guides/realtime", - "guides.routing": "/guides/routing", - "guides.security": "/guides/security", - "guides.server.data": "/guides/server-data", - "guides.testing": "/guides/testing", - "guides.troubleshooting": "/guides/troubleshooting", - "guides.upgrading": "/guides/upgrading", - "guides.uploads": "/guides/uploads", - "guides.workspaces.and.gateway": "/guides/workspaces-and-gateway", - "language": "/language", - "license": "/license", - "packages": "/packages", - "packages.ai": "/packages/ai", - "packages.auth": "/packages/auth", - "packages.authz": "/packages/authz", - "packages.benchmark": "/packages/benchmark", - "packages.cache": "/packages/cache", - "packages.captcha": "/packages/captcha", - "packages.cli": "/packages/cli", - "packages.compiler": "/packages/compiler", - "packages.content": "/packages/content", - "packages.core": "/packages/core", - "packages.csr": "/packages/csr", - "packages.db": "/packages/db", - "packages.dev.server": "/packages/dev-server", - "packages.dev.toolbar": "/packages/dev-toolbar", - "packages.encryption": "/packages/encryption", - "packages.graphql": "/packages/graphql", - "packages.helpers": "/packages/helpers", - "packages.i18n": "/packages/i18n", - "packages.identity": "/packages/identity", - "packages.image": "/packages/image", - "packages.jwt": "/packages/jwt", - "packages.language.server": "/packages/language-server", - "packages.mcp": "/packages/mcp", - "packages.mobile": "/packages/mobile", - "packages.native": "/packages/native", - "packages.oauth": "/packages/oauth", - "packages.observability": "/packages/observability", - "packages.playground": "/packages/playground", - "packages.plugin": "/packages/plugin", - "packages.pubsub": "/packages/pubsub", - "packages.pwa": "/packages/pwa", - "packages.queue": "/packages/queue", - "packages.reactive": "/packages/reactive", - "packages.realtime": "/packages/realtime", - "packages.router": "/packages/router", - "packages.security": "/packages/security", - "packages.ssr": "/packages/ssr", - "packages.store": "/packages/store", - "packages.styles": "/packages/styles", - "packages.syntax": "/packages/syntax", - "packages.test": "/packages/test", - "packages.tracking": "/packages/tracking", - "packages.typecheck": "/packages/typecheck", - "packages.ui": "/packages/ui", - "packages.uploader": "/packages/uploader", - "packages.validation": "/packages/validation", - "releases.0.2.15": "/releases/0.2.15", - "releases.0.2.17": "/releases/0.2.17", - "releases.0.2.18": "/releases/0.2.18", - "releases.0.2.19": "/releases/0.2.19", - "releases.0.2.20": "/releases/0.2.20", - "releases.0.2.21": "/releases/0.2.21", - "releases.0.2.22": "/releases/0.2.22", - "releases.0.2.23": "/releases/0.2.23", - "releases.0.2.24": "/releases/0.2.24", - "releases.0.2.25": "/releases/0.2.25", - "releases.0.2.26": "/releases/0.2.26", - "releases.0.2.27": "/releases/0.2.27", - "releases.0.2.28": "/releases/0.2.28", - "releases.0.2.29": "/releases/0.2.29", - "releases.0.2.30": "/releases/0.2.30", - "releases.0.2.31": "/releases/0.2.31", - "releases.0.2.32": "/releases/0.2.32", - "releases.0.2.33": "/releases/0.2.33", - "releases.0.2.34": "/releases/0.2.34", - "releases.0.2.35": "/releases/0.2.35", - "releases.0.2.36": "/releases/0.2.36", - "releases.0.2.37": "/releases/0.2.37", - "releases.0.2.38": "/releases/0.2.38", - "releases.0.2.39": "/releases/0.2.39", - "releases.0.2.40": "/releases/0.2.40", - "releases.0.2.41": "/releases/0.2.41", - "releases.0.2.42": "/releases/0.2.42", - "releases.0.2.43": "/releases/0.2.43", - "releases.0.2.44": "/releases/0.2.44", - "releases.0.2.45": "/releases/0.2.45", - "releases.0.2.46": "/releases/0.2.46", - "releases.0.2.47": "/releases/0.2.47", - "releases.0.2.48": "/releases/0.2.48", - "releases.0.2.49": "/releases/0.2.49", - "releases.0.2.50": "/releases/0.2.50", - "releases.0.2.51": "/releases/0.2.51", - "releases.0.2.52": "/releases/0.2.52", - "releases.0.2.53": "/releases/0.2.53", - "releases.0.2.54": "/releases/0.2.54", - "releases.0.2.55": "/releases/0.2.55", - "releases.0.2.56": "/releases/0.2.56", - "releases.0.2.57": "/releases/0.2.57", - "releases.0.2.58": "/releases/0.2.58", - "releases.0.2.59": "/releases/0.2.59", - "releases.0.2.60": "/releases/0.2.60", - "releases.0.2.61": "/releases/0.2.61", - "releases.0.2.62": "/releases/0.2.62", - "releases.0.2.63": "/releases/0.2.63", - "releases.0.2.64": "/releases/0.2.64", - "releases.0.2.65": "/releases/0.2.65", - "releases.0.2.66": "/releases/0.2.66", - "releases.0.2.67": "/releases/0.2.67", - "releases.0.2.68": "/releases/0.2.68", - "releases.0.2.69": "/releases/0.2.69", - "releases.0.2.70": "/releases/0.2.70", - "releases.0.2.71": "/releases/0.2.71", - "releases.0.2.72": "/releases/0.2.72", - "releases.0.2.73": "/releases/0.2.73", - "releases.0.2.74": "/releases/0.2.74", - "releases.0.2.75": "/releases/0.2.75", - "releases.0.2.76": "/releases/0.2.76", - "releases.0.2.77": "/releases/0.2.77", - "releases.0.2.78": "/releases/0.2.78", - "releases.0.2.79": "/releases/0.2.79", - "releases.0.3.0": "/releases/0.3.0", - "releases.0.3.1": "/releases/0.3.1", - "releases.0.3.2": "/releases/0.3.2", - "releases.0.3.3": "/releases/0.3.3", - "releases.0.3.4": "/releases/0.3.4", - "releases.0.3.5": "/releases/0.3.5", - "releases.0.3.6": "/releases/0.3.6", - "releases.0.4.0": "/releases/0.4.0", - "releases.0.5.0": "/releases/0.5.0", - "releases.0.5.1": "/releases/0.5.1", - "releases.0.5.10": "/releases/0.5.10", - "releases.0.5.11": "/releases/0.5.11", - "releases.0.5.12": "/releases/0.5.12", - "releases.0.5.13": "/releases/0.5.13", - "releases.0.6.0": "/releases/0.6.0", - "releases.0.7.0": "/releases/0.7.0", - "releases.0.8.0": "/releases/0.8.0", - "roadmap": "/roadmap", - "search": "/search", - "security": "/security", - "showcase": "/showcase", - "support": "/support", - "tutorial": "/tutorial" -} as Record; + "404": "/404", + index: "/", + access: "/access", + architecture: "/architecture", + benchmarks: "/benchmarks", + changelog: "/changelog", + examples: "/examples", + "getting.started": "/getting-started", + "guides.api.routes": "/guides/api-routes", + "guides.authentication": "/guides/authentication", + "guides.authorization": "/guides/authorization", + "guides.configuration.and.profiles": "/guides/configuration-and-profiles", + "guides.database": "/guides/database", + "guides.deployment": "/guides/deployment", + "guides.forms.and.validation": "/guides/forms-and-validation", + "guides.i18n.and.themes": "/guides/i18n-and-themes", + "guides.middleware": "/guides/middleware", + "guides.mobile": "/guides/mobile", + "guides.observability": "/guides/observability", + "guides.pages.and.components": "/guides/pages-and-components", + "guides.project.structure": "/guides/project-structure", + "guides.pubsub": "/guides/pubsub", + "guides.queues": "/guides/queues", + "guides.realtime": "/guides/realtime", + "guides.routing": "/guides/routing", + "guides.security": "/guides/security", + "guides.server.data": "/guides/server-data", + "guides.testing": "/guides/testing", + "guides.troubleshooting": "/guides/troubleshooting", + "guides.upgrading": "/guides/upgrading", + "guides.uploads": "/guides/uploads", + "guides.workspaces.and.gateway": "/guides/workspaces-and-gateway", + language: "/language", + license: "/license", + packages: "/packages", + "packages.ai": "/packages/ai", + "packages.auth": "/packages/auth", + "packages.authz": "/packages/authz", + "packages.benchmark": "/packages/benchmark", + "packages.cache": "/packages/cache", + "packages.captcha": "/packages/captcha", + "packages.cli": "/packages/cli", + "packages.compiler": "/packages/compiler", + "packages.content": "/packages/content", + "packages.core": "/packages/core", + "packages.csr": "/packages/csr", + "packages.db": "/packages/db", + "packages.dev.server": "/packages/dev-server", + "packages.dev.toolbar": "/packages/dev-toolbar", + "packages.encryption": "/packages/encryption", + "packages.graphql": "/packages/graphql", + "packages.helpers": "/packages/helpers", + "packages.i18n": "/packages/i18n", + "packages.identity": "/packages/identity", + "packages.image": "/packages/image", + "packages.jwt": "/packages/jwt", + "packages.language.server": "/packages/language-server", + "packages.mcp": "/packages/mcp", + "packages.mobile": "/packages/mobile", + "packages.native": "/packages/native", + "packages.oauth": "/packages/oauth", + "packages.observability": "/packages/observability", + "packages.playground": "/packages/playground", + "packages.plugin": "/packages/plugin", + "packages.pubsub": "/packages/pubsub", + "packages.pwa": "/packages/pwa", + "packages.queue": "/packages/queue", + "packages.reactive": "/packages/reactive", + "packages.realtime": "/packages/realtime", + "packages.router": "/packages/router", + "packages.security": "/packages/security", + "packages.ssr": "/packages/ssr", + "packages.store": "/packages/store", + "packages.styles": "/packages/styles", + "packages.syntax": "/packages/syntax", + "packages.test": "/packages/test", + "packages.tracking": "/packages/tracking", + "packages.typecheck": "/packages/typecheck", + "packages.ui": "/packages/ui", + "packages.uploader": "/packages/uploader", + "packages.validation": "/packages/validation", + "releases.0.2.15": "/releases/0.2.15", + "releases.0.2.17": "/releases/0.2.17", + "releases.0.2.18": "/releases/0.2.18", + "releases.0.2.19": "/releases/0.2.19", + "releases.0.2.20": "/releases/0.2.20", + "releases.0.2.21": "/releases/0.2.21", + "releases.0.2.22": "/releases/0.2.22", + "releases.0.2.23": "/releases/0.2.23", + "releases.0.2.24": "/releases/0.2.24", + "releases.0.2.25": "/releases/0.2.25", + "releases.0.2.26": "/releases/0.2.26", + "releases.0.2.27": "/releases/0.2.27", + "releases.0.2.28": "/releases/0.2.28", + "releases.0.2.29": "/releases/0.2.29", + "releases.0.2.30": "/releases/0.2.30", + "releases.0.2.31": "/releases/0.2.31", + "releases.0.2.32": "/releases/0.2.32", + "releases.0.2.33": "/releases/0.2.33", + "releases.0.2.34": "/releases/0.2.34", + "releases.0.2.35": "/releases/0.2.35", + "releases.0.2.36": "/releases/0.2.36", + "releases.0.2.37": "/releases/0.2.37", + "releases.0.2.38": "/releases/0.2.38", + "releases.0.2.39": "/releases/0.2.39", + "releases.0.2.40": "/releases/0.2.40", + "releases.0.2.41": "/releases/0.2.41", + "releases.0.2.42": "/releases/0.2.42", + "releases.0.2.43": "/releases/0.2.43", + "releases.0.2.44": "/releases/0.2.44", + "releases.0.2.45": "/releases/0.2.45", + "releases.0.2.46": "/releases/0.2.46", + "releases.0.2.47": "/releases/0.2.47", + "releases.0.2.48": "/releases/0.2.48", + "releases.0.2.49": "/releases/0.2.49", + "releases.0.2.50": "/releases/0.2.50", + "releases.0.2.51": "/releases/0.2.51", + "releases.0.2.52": "/releases/0.2.52", + "releases.0.2.53": "/releases/0.2.53", + "releases.0.2.54": "/releases/0.2.54", + "releases.0.2.55": "/releases/0.2.55", + "releases.0.2.56": "/releases/0.2.56", + "releases.0.2.57": "/releases/0.2.57", + "releases.0.2.58": "/releases/0.2.58", + "releases.0.2.59": "/releases/0.2.59", + "releases.0.2.60": "/releases/0.2.60", + "releases.0.2.61": "/releases/0.2.61", + "releases.0.2.62": "/releases/0.2.62", + "releases.0.2.63": "/releases/0.2.63", + "releases.0.2.64": "/releases/0.2.64", + "releases.0.2.65": "/releases/0.2.65", + "releases.0.2.66": "/releases/0.2.66", + "releases.0.2.67": "/releases/0.2.67", + "releases.0.2.68": "/releases/0.2.68", + "releases.0.2.69": "/releases/0.2.69", + "releases.0.2.70": "/releases/0.2.70", + "releases.0.2.71": "/releases/0.2.71", + "releases.0.2.72": "/releases/0.2.72", + "releases.0.2.73": "/releases/0.2.73", + "releases.0.2.74": "/releases/0.2.74", + "releases.0.2.75": "/releases/0.2.75", + "releases.0.2.76": "/releases/0.2.76", + "releases.0.2.77": "/releases/0.2.77", + "releases.0.2.78": "/releases/0.2.78", + "releases.0.2.79": "/releases/0.2.79", + "releases.0.3.0": "/releases/0.3.0", + "releases.0.3.1": "/releases/0.3.1", + "releases.0.3.2": "/releases/0.3.2", + "releases.0.3.3": "/releases/0.3.3", + "releases.0.3.4": "/releases/0.3.4", + "releases.0.3.5": "/releases/0.3.5", + "releases.0.3.6": "/releases/0.3.6", + "releases.0.4.0": "/releases/0.4.0", + "releases.0.5.0": "/releases/0.5.0", + "releases.0.5.1": "/releases/0.5.1", + "releases.0.5.10": "/releases/0.5.10", + "releases.0.5.11": "/releases/0.5.11", + "releases.0.5.12": "/releases/0.5.12", + "releases.0.5.13": "/releases/0.5.13", + "releases.0.6.0": "/releases/0.6.0", + "releases.0.7.0": "/releases/0.7.0", + "releases.0.8.0": "/releases/0.8.0", + roadmap: "/roadmap", + search: "/search", + security: "/security", + showcase: "/showcase", + support: "/support", + tutorial: "/tutorial", + } as Record; const output = buildHref(paths[name], (args[0] ?? {}) as Record); const query = args[1]; if (!query) return output; diff --git a/app/types/wrnexus.generated.d.ts b/app/types/wrnexus.generated.d.ts index 0a6b4daa..d1e847db 100644 --- a/app/types/wrnexus.generated.d.ts +++ b/app/types/wrnexus.generated.d.ts @@ -11,32 +11,190 @@ declare namespace WRNexusGenerated { : T extends (db: any, ...rest: any[]) => infer R ? { args: Record; result: Awaited } : never; - type RealtimeMessage = T extends import("@wrnexus/core").RoomDefinition ? M : unknown; + type RealtimeMessage = T extends import("@wrnexus/core").RoomDefinition + ? M + : unknown; type QueuePayload = T extends import("@wrnexus/queue").JobDefinition ? I : unknown; - type RouteName = "404" | "access" | "architecture" | "benchmarks" | "changelog" | "examples" | "getting.started" | "guides.api.routes" | "guides.authentication" | "guides.authorization" | "guides.configuration.and.profiles" | "guides.database" | "guides.deployment" | "guides.forms.and.validation" | "guides.i18n.and.themes" | "guides.middleware" | "guides.mobile" | "guides.observability" | "guides.pages.and.components" | "guides.project.structure" | "guides.pubsub" | "guides.queues" | "guides.realtime" | "guides.routing" | "guides.security" | "guides.server.data" | "guides.testing" | "guides.troubleshooting" | "guides.upgrading" | "guides.uploads" | "guides.workspaces.and.gateway" | "index" | "language" | "license" | "packages" | "packages.ai" | "packages.auth" | "packages.authz" | "packages.benchmark" | "packages.cache" | "packages.captcha" | "packages.cli" | "packages.compiler" | "packages.content" | "packages.core" | "packages.csr" | "packages.db" | "packages.dev.server" | "packages.dev.toolbar" | "packages.encryption" | "packages.graphql" | "packages.helpers" | "packages.i18n" | "packages.identity" | "packages.image" | "packages.jwt" | "packages.language.server" | "packages.mcp" | "packages.mobile" | "packages.native" | "packages.oauth" | "packages.observability" | "packages.playground" | "packages.plugin" | "packages.pubsub" | "packages.pwa" | "packages.queue" | "packages.reactive" | "packages.realtime" | "packages.router" | "packages.security" | "packages.ssr" | "packages.store" | "packages.styles" | "packages.syntax" | "packages.test" | "packages.tracking" | "packages.typecheck" | "packages.ui" | "packages.uploader" | "packages.validation" | "releases.0.2.15" | "releases.0.2.17" | "releases.0.2.18" | "releases.0.2.19" | "releases.0.2.20" | "releases.0.2.21" | "releases.0.2.22" | "releases.0.2.23" | "releases.0.2.24" | "releases.0.2.25" | "releases.0.2.26" | "releases.0.2.27" | "releases.0.2.28" | "releases.0.2.29" | "releases.0.2.30" | "releases.0.2.31" | "releases.0.2.32" | "releases.0.2.33" | "releases.0.2.34" | "releases.0.2.35" | "releases.0.2.36" | "releases.0.2.37" | "releases.0.2.38" | "releases.0.2.39" | "releases.0.2.40" | "releases.0.2.41" | "releases.0.2.42" | "releases.0.2.43" | "releases.0.2.44" | "releases.0.2.45" | "releases.0.2.46" | "releases.0.2.47" | "releases.0.2.48" | "releases.0.2.49" | "releases.0.2.50" | "releases.0.2.51" | "releases.0.2.52" | "releases.0.2.53" | "releases.0.2.54" | "releases.0.2.55" | "releases.0.2.56" | "releases.0.2.57" | "releases.0.2.58" | "releases.0.2.59" | "releases.0.2.60" | "releases.0.2.61" | "releases.0.2.62" | "releases.0.2.63" | "releases.0.2.64" | "releases.0.2.65" | "releases.0.2.66" | "releases.0.2.67" | "releases.0.2.68" | "releases.0.2.69" | "releases.0.2.70" | "releases.0.2.71" | "releases.0.2.72" | "releases.0.2.73" | "releases.0.2.74" | "releases.0.2.75" | "releases.0.2.76" | "releases.0.2.77" | "releases.0.2.78" | "releases.0.2.79" | "releases.0.3.0" | "releases.0.3.1" | "releases.0.3.2" | "releases.0.3.3" | "releases.0.3.4" | "releases.0.3.5" | "releases.0.3.6" | "releases.0.4.0" | "releases.0.5.0" | "releases.0.5.1" | "releases.0.5.10" | "releases.0.5.11" | "releases.0.5.12" | "releases.0.5.13" | "releases.0.6.0" | "releases.0.7.0" | "releases.0.8.0" | "roadmap" | "search" | "security" | "showcase" | "support" | "tutorial"; + type RouteName = + | "404" + | "access" + | "architecture" + | "benchmarks" + | "changelog" + | "examples" + | "getting.started" + | "guides.api.routes" + | "guides.authentication" + | "guides.authorization" + | "guides.configuration.and.profiles" + | "guides.database" + | "guides.deployment" + | "guides.forms.and.validation" + | "guides.i18n.and.themes" + | "guides.middleware" + | "guides.mobile" + | "guides.observability" + | "guides.pages.and.components" + | "guides.project.structure" + | "guides.pubsub" + | "guides.queues" + | "guides.realtime" + | "guides.routing" + | "guides.security" + | "guides.server.data" + | "guides.testing" + | "guides.troubleshooting" + | "guides.upgrading" + | "guides.uploads" + | "guides.workspaces.and.gateway" + | "index" + | "language" + | "license" + | "packages" + | "packages.ai" + | "packages.auth" + | "packages.authz" + | "packages.benchmark" + | "packages.cache" + | "packages.captcha" + | "packages.cli" + | "packages.compiler" + | "packages.content" + | "packages.core" + | "packages.csr" + | "packages.db" + | "packages.dev.server" + | "packages.dev.toolbar" + | "packages.encryption" + | "packages.graphql" + | "packages.helpers" + | "packages.i18n" + | "packages.identity" + | "packages.image" + | "packages.jwt" + | "packages.language.server" + | "packages.mcp" + | "packages.mobile" + | "packages.native" + | "packages.oauth" + | "packages.observability" + | "packages.playground" + | "packages.plugin" + | "packages.pubsub" + | "packages.pwa" + | "packages.queue" + | "packages.reactive" + | "packages.realtime" + | "packages.router" + | "packages.security" + | "packages.ssr" + | "packages.store" + | "packages.styles" + | "packages.syntax" + | "packages.test" + | "packages.tracking" + | "packages.typecheck" + | "packages.ui" + | "packages.uploader" + | "packages.validation" + | "releases.0.2.15" + | "releases.0.2.17" + | "releases.0.2.18" + | "releases.0.2.19" + | "releases.0.2.20" + | "releases.0.2.21" + | "releases.0.2.22" + | "releases.0.2.23" + | "releases.0.2.24" + | "releases.0.2.25" + | "releases.0.2.26" + | "releases.0.2.27" + | "releases.0.2.28" + | "releases.0.2.29" + | "releases.0.2.30" + | "releases.0.2.31" + | "releases.0.2.32" + | "releases.0.2.33" + | "releases.0.2.34" + | "releases.0.2.35" + | "releases.0.2.36" + | "releases.0.2.37" + | "releases.0.2.38" + | "releases.0.2.39" + | "releases.0.2.40" + | "releases.0.2.41" + | "releases.0.2.42" + | "releases.0.2.43" + | "releases.0.2.44" + | "releases.0.2.45" + | "releases.0.2.46" + | "releases.0.2.47" + | "releases.0.2.48" + | "releases.0.2.49" + | "releases.0.2.50" + | "releases.0.2.51" + | "releases.0.2.52" + | "releases.0.2.53" + | "releases.0.2.54" + | "releases.0.2.55" + | "releases.0.2.56" + | "releases.0.2.57" + | "releases.0.2.58" + | "releases.0.2.59" + | "releases.0.2.60" + | "releases.0.2.61" + | "releases.0.2.62" + | "releases.0.2.63" + | "releases.0.2.64" + | "releases.0.2.65" + | "releases.0.2.66" + | "releases.0.2.67" + | "releases.0.2.68" + | "releases.0.2.69" + | "releases.0.2.70" + | "releases.0.2.71" + | "releases.0.2.72" + | "releases.0.2.73" + | "releases.0.2.74" + | "releases.0.2.75" + | "releases.0.2.76" + | "releases.0.2.77" + | "releases.0.2.78" + | "releases.0.2.79" + | "releases.0.3.0" + | "releases.0.3.1" + | "releases.0.3.2" + | "releases.0.3.3" + | "releases.0.3.4" + | "releases.0.3.5" + | "releases.0.3.6" + | "releases.0.4.0" + | "releases.0.5.0" + | "releases.0.5.1" + | "releases.0.5.10" + | "releases.0.5.11" + | "releases.0.5.12" + | "releases.0.5.13" + | "releases.0.6.0" + | "releases.0.7.0" + | "releases.0.8.0" + | "roadmap" + | "search" + | "security" + | "showcase" + | "support" + | "tutorial"; type ApiRoute = never; type RealtimeRoute = never; type EnvironmentKey = never; type TranslationKey = never; type QueueName = never; type CacheKey = never; - interface Components { - - } - interface ApiContracts { - - } - interface MiddlewareContexts { - - } - interface DatabaseQueries { - - } - interface RealtimeMessages { - - } - interface QueuePayloads { - - } + interface Components {} + interface ApiContracts {} + interface MiddlewareContexts {} + interface DatabaseQueries {} + interface RealtimeMessages {} + interface QueuePayloads {} type ApplicationConfig = (typeof import("../../wrnexus.config.ts"))["default"]; } diff --git a/app/types/wrnexus.plugins.generated.d.ts b/app/types/wrnexus.plugins.generated.d.ts index b82c221b..c8d0064d 100644 --- a/app/types/wrnexus.plugins.generated.d.ts +++ b/app/types/wrnexus.plugins.generated.d.ts @@ -1,2 +1 @@ // AUTO-GENERATED plugin type aggregation - do not edit. - diff --git a/bun.lock b/bun.lock index 59dde31d..e3744773 100644 --- a/bun.lock +++ b/bun.lock @@ -13,7 +13,7 @@ "@wrnexus/benchmark": "^0.8.0", "@wrnexus/cache": "^0.8.0", "@wrnexus/captcha": "^0.8.0", - "@wrnexus/compiler": "^0.8.0", + "@wrnexus/compiler": "file:vendor/compiler", "@wrnexus/content": "^0.8.0", "@wrnexus/core": "^0.8.0", "@wrnexus/csr": "^0.8.0", @@ -67,6 +67,9 @@ }, }, }, + "overrides": { + "@wrnexus/compiler": "file:vendor/compiler", + }, "packages": { "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], @@ -246,7 +249,7 @@ "@wrnexus/cli": ["@wrnexus/cli@0.8.0", "", { "dependencies": { "@wrnexus/compiler": "^0.8.0", "@wrnexus/core": "^0.8.0", "@wrnexus/csr": "^0.8.0", "@wrnexus/db": "^0.8.0", "@wrnexus/dev-server": "^0.8.0", "@wrnexus/i18n": "^0.8.0", "@wrnexus/mcp": "^0.8.0", "@wrnexus/playground": "^0.8.0", "@wrnexus/plugin": "^0.8.0", "@wrnexus/router": "^0.8.0", "@wrnexus/security": "^0.8.0", "@wrnexus/styles": "^0.8.0", "@wrnexus/syntax": "^0.8.0", "@wrnexus/typecheck": "^0.8.0", "@wrnexus/ui": "^0.8.0", "@wrnexus/validation": "^0.8.0", "selfsigned": "^5.5.0" }, "bin": { "wrnexus": "dist/index.js" } }, "sha512-6BOf//IY17Gz/C2kzGVHTn0bF5zMAtJWxofVAW96L/pwJQWHzxioqOpNWLVk1bHh6m2Jh59NOzwWtuR3xBpGTQ=="], - "@wrnexus/compiler": ["@wrnexus/compiler@0.8.0", "", { "dependencies": { "@wrnexus/csr": "^0.8.0", "@wrnexus/store": "^0.8.0", "@wrnexus/syntax": "^0.8.0", "@wrnexus/validation": "^0.8.0" } }, "sha512-xRIUer9UrzfXxebLIvEkeIHiZ1VhRhb8/ium/m0ehqyLllLf1oOH8mFT3g6tdnwZs8B4UJXlwdrIfbBs/xWrvg=="], + "@wrnexus/compiler": ["@wrnexus/compiler@file:vendor/compiler", { "dependencies": { "@wrnexus/csr": "^0.8.0", "@wrnexus/store": "^0.8.0", "@wrnexus/syntax": "^0.8.0", "@wrnexus/validation": "^0.8.0" } }], "@wrnexus/content": ["@wrnexus/content@0.8.0", "", {}, "sha512-vE0LR53Pgu7ZVAxJF+QuiyGnlmL/1R9ZJ1fApRHTB6szCSFk1gaNvENiXH0H7LOYWEVvUXI9ITiC1cONfyHNRA=="], @@ -618,6 +621,14 @@ "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], + "@wrnexus/cli/@wrnexus/compiler": ["@wrnexus/compiler@file:vendor/compiler", {}], + + "@wrnexus/dev-server/@wrnexus/compiler": ["@wrnexus/compiler@file:vendor/compiler", {}], + + "@wrnexus/playground/@wrnexus/compiler": ["@wrnexus/compiler@file:vendor/compiler", {}], + + "@wrnexus/router/@wrnexus/compiler": ["@wrnexus/compiler@file:vendor/compiler", {}], + "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], "lightningcss/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], diff --git a/eslint.config.js b/eslint.config.js index 5c86a656..8a2740c9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -9,7 +9,10 @@ export default tseslint.config( { ignores: [ "node_modules/**", + "vendor/**", "dist/**", + "app/types/wrnexus.generated.d.ts", + "app/types/wrnexus.plugins.generated.d.ts", ".wrnexus/**", "**/.wrnexus/**", "mobile/android/**", diff --git a/package-lock.json b/package-lock.json index 292b8bf4..72b08a59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@wrnexus/benchmark": "^0.8.0", "@wrnexus/cache": "^0.8.0", "@wrnexus/captcha": "^0.8.0", - "@wrnexus/compiler": "^0.8.0", + "@wrnexus/compiler": "file:vendor/compiler", "@wrnexus/content": "^0.8.0", "@wrnexus/core": "^0.8.0", "@wrnexus/csr": "^0.8.0", @@ -1611,19 +1611,8 @@ } }, "node_modules/@wrnexus/compiler": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@wrnexus/compiler/-/compiler-0.8.0.tgz", - "integrity": "sha512-xRIUer9UrzfXxebLIvEkeIHiZ1VhRhb8/ium/m0ehqyLllLf1oOH8mFT3g6tdnwZs8B4UJXlwdrIfbBs/xWrvg==", - "license": "MIT", - "dependencies": { - "@wrnexus/csr": "^0.8.0", - "@wrnexus/store": "^0.8.0", - "@wrnexus/syntax": "^0.8.0", - "@wrnexus/validation": "^0.8.0" - }, - "engines": { - "bun": ">=1.3.0" - } + "resolved": "vendor/compiler", + "link": true }, "node_modules/@wrnexus/content": { "version": "0.8.0", @@ -3728,6 +3717,20 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "vendor/compiler": { + "name": "@wrnexus/compiler", + "version": "0.8.0", + "license": "MIT", + "dependencies": { + "@wrnexus/csr": "^0.8.0", + "@wrnexus/store": "^0.8.0", + "@wrnexus/syntax": "^0.8.0", + "@wrnexus/validation": "^0.8.0" + }, + "engines": { + "bun": ">=1.3.0" + } } } } diff --git a/package.json b/package.json index cbd8df99..c3e6dfaa 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@iconify/tailwind4": "^1.2.3", "@wrnexus/ai": "^0.8.0", "@wrnexus/authz": "^0.8.0", - "@wrnexus/compiler": "^0.8.0", + "@wrnexus/compiler": "file:vendor/compiler", "@wrnexus/core": "^0.8.0", "@wrnexus/csr": "^0.8.0", "@wrnexus/db": "^0.8.0", @@ -87,5 +87,8 @@ }, "wrnexus": { "version": "0.8.0" + }, + "overrides": { + "@wrnexus/compiler": "file:vendor/compiler" } } diff --git a/vendor/compiler/README.md b/vendor/compiler/README.md new file mode 100644 index 00000000..4fec3363 --- /dev/null +++ b/vendor/compiler/README.md @@ -0,0 +1,216 @@ +# @wrnexus/compiler + +## Partial-static rendering + +Pages can select `render = "partial-static"` and divide their view with `` and +`` boundaries. The compiler emits a build-only shell renderer that never evaluates +dynamic-boundary children. `wrnexus build` expands static component mounts into +`dist/partial-shells.json`, records byte/region evidence in `build-report.json`, and embeds +the shell in the production route manifest. At request time the production runtime retains +request-aware layouts, locale/theme metadata and security nonces while streaming dynamic +regions into stable placeholders. + +> Compiler for the `.wrn` language — tokenizes, parses, and lowers `.wrn` page and component files to TypeScript. + +Part of the **WrNexus** framework — an SSR-first, Bun-native full-stack web framework. + +Production adapters use `analyzeRuntimeImports` before bundling. Edge, worker, +service-worker, and browser targets reject Node filesystem, TCP, and process +modules with `WRN-RUNTIME-CAPABILITY`. Package manifests can declare supported +`wrnexus.runtimes` and required `wrnexus.requires` capabilities; discovery fails +when the selected deployment cannot satisfy them. + +## Server actions + +```wrn +action createUser using CreateUserSchema { + const user = await users.create(input) + invalidate("users") + return user +} + +view { +
...
+} +``` + +The compiler produces a schema-aware server registry, a fully inferred action +client, and progressively enhanced form metadata. The shared runtime performs +validation, authentication/permission checks, CSRF verification, serialization, +invalidation reporting, and browser lifecycle events. + +## Overview + +`@wrnexus/compiler` turns `.wrn` source into TypeScript that targets the framework's runtime primitives. A `.wrn` file declares either a `page` (a route) or a `component` (a reusable, prop-driven fragment) with blocks for `state`, `view` (plain HTML), `seo`, `style`, `functions`, `api`, `ssr`/`client` data bindings, and `realtime` websocket handlers. The pipeline is `source → Lexer → parse() → PageAst → generate() → TypeScript`. It is a build/server-side library — the WrNexus dev loader calls it to compile `.wrn` files on the fly, surfacing `ParseError` as a readable error page. + +Static ES module imports may appear before the root declaration. Imported values are +available to server-rendered expressions, including component props: + +```wrn +import { appUrl } from "@wrnexus/helpers"; + +layout PublicLayout { + view { + + } +} +``` + +## Installation + +```bash +bun add @wrnexus/compiler +``` + +> Private package — the machine must be authenticated to the `wrnexus` npm org +> (a read token in `~/.npmrc`). Requires **Bun** (Node is not supported). + +## API + +All exports come from the package root (`@wrnexus/compiler`). + +### `compileWireFile(source: string): string` + +Compile `.wrn` source to a TypeScript module string. Throws `ParseError` on invalid input. The output is prefixed with a `// compiled from .wrn` comment. + +### `compile(source: string): CompileResult` + +Richer entry point that returns the generated code, the AST, and any diagnostics. + +```ts +interface CompileResult { + code: string; + ast: PageAst; + diagnostics: string[]; +} +``` + +On a `ParseError` it pushes the message into `diagnostics` and re-throws. + +### `parse(source: string): PageAst` + +Run the lexer + recursive-descent parser and return the AST. Throws `ParseError` (lexer `LexError`s are caught and rethrown as `ParseError`). + +### `generate(ast: PageAst): string` + +Lower a `PageAst` to TypeScript. `page` ASTs become a default-export page component (plus `meta`, optional `layout`, `__wrnexusApi`/method handlers, `websocket`, and SSR/CSR data bindings); `component` ASTs become a module exporting `render(props)` and `__wrnexusComponent`. + +### `Lexer` + +On-demand lexer for `.wrn`. Yields structural tokens and exposes raw-span readers for the parser. + +```ts +class Lexer { + pos: number; + constructor(src: string); + next(): Token; // consume next structural token + peek(): Token; // look ahead without consuming + readPath(): string; // route path, e.g. /users/[id] + readToLineEnd(): string; // rest of line (state/prop initializers) + readBalancedBraces(): string; // inner text of a { ... } block, string-aware +} +``` + +`Token` is `{ type: TokenType; value: string; pos: number }`, where `TokenType` is one of `ident`, `string`, `lbrace`, `rbrace`, `lparen`, `rparen`, `at`, `eq`, `comma`, `eof`. + +### Errors + +| Class | Thrown by | Meaning | +| ------------ | ------------------------------------------------- | --------------------------------------------------------------- | +| `ParseError` | `parse`, `compile`, `compileWireFile`, `generate` | Invalid `.wrn` grammar or (rewrapped) lex failure. | +| `LexError` | `Lexer` | Unexpected character / unterminated string / unbalanced braces. | + +### AST types + +Exported type-only symbols describing the parsed tree: + +| Type | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PageAst` | Root node including top-level `imports`, `kind`, `name`, `types`, typed `props`, typed `states`, `view`, styles, functions, data APIs, lifecycle, and routes. | +| `ViewNode` | `{ type: "text"; value }` or `{ type: "element"; tag; attrs; children }`. | +| `Attr` | `{ name; value; event; boolean? }` — `event` marks `@event` bindings. | +| `StateDecl` | `{ name; valueType?; expr }` — a typed `state x: Type = ` declaration. | +| `PropDecl` | `{ name; valueType?; required; default }` — a typed prop declaration. | +| `SeoBlock` | `Record` from the `seo { ... }` block. | +| `ApiBlock` | `{ method; path; body }` — a top-level `api METHOD /path { ... }`. | +| `DataApiBlock` | `{ mode; name; method; path; body }` — an `api` inside an `ssr`/`client` block. | +| `DataMode` | `"ssr" \| "client"`. | +| `ModeFunctionsBlock` | `{ mode; body }` — a `functions { ... }` inside an `ssr`/`client` block. | +| `RealtimeBlock` | `{ name; handlers }` — a `realtime { on evt(args) { ... } }` block. | + +## Usage + +Compile a page: + +```ts +import { compileWireFile } from "@wrnexus/compiler"; + +const ts = compileWireFile(` +page Home { + state count = 0 + seo { title = "Home" description = "Welcome" } + view { + + } +} +`); +// ts is a TypeScript module: exports `meta`, and a default page component +// returning an HTML string, wrapped in a data-scope for the reactive runtime. +``` + +Inspect the AST and diagnostics: + +```ts +import { compile, ParseError } from "@wrnexus/compiler"; + +try { + const { code, ast, diagnostics } = compile(source); + console.log(ast.kind, ast.name, ast.states.length); +} catch (err) { + if (err instanceof ParseError) console.error(err.message); +} +``` + +Drive the parse/codegen stages directly: + +```ts +import { parse, generate } from "@wrnexus/compiler"; + +const ast = parse(componentSource); // ast.kind === "component" +const module = generate(ast); // exports render(props) + __wrnexusComponent +``` + +Use the lexer standalone: + +```ts +import { Lexer } from "@wrnexus/compiler"; + +const lx = new Lexer("page Home {"); +lx.next(); // { type: "ident", value: "page", pos: 0 } +lx.next(); // { type: "ident", value: "Home", pos: 5 } +lx.next(); // { type: "lbrace", value: "{", pos: 10 } +``` + +## The `.wrn` language (as parsed) + +A file opens with `page ` or `component ` followed by a `{ ... }` body containing zero or more members: + +- `layout = ""` — selects `app/layouts/.wrn` (pages only). +- `types { }` — reusable interfaces and aliases for the current file. +- `props { name: Type = ... }` — typed component props. Omit `= ` to make a prop required. Legacy inferred props remain supported. +- `@event name = function` inside `props` — declares a public component event. Emit it from component behavior with `name(detail)` or `$emit("name", detail)`, and consume it with ``. +- `state : Type = ` — typed reactive state seeded from a raw JS expression, including native array and object literals. The annotation is optional for backward compatibility. +- `view { }` — plain HTML with `{expr}` interpolation in text and attributes, JSX-style component props such as `items={items}`, `items={[...]}`, and `options={{...}}`, hyphenated attributes, boolean attributes, `@event="..."` client bindings, and ``. Structured component props are serialized safely for SSR; expressions that reference `state` retain their initial value and update reactively in the browser. +- `seo { key = "value" ... }` — metadata merged into the generated `meta`. +- `style { }` — inlined page/component stylesheet (repeatable). +- `functions { }` — helpers with typed parameters and return values. Types remain in server output and are safely erased from browser behavior code. +- `api { }` — route handler, lowered to a `METHOD` export (repeatable). +- `ssr { ... }` / `client { ... }` — data blocks holding `api { ... }` bindings and their own `functions { ... }`. +- `realtime { on () { } ... }` — websocket handlers, lowered to a `websocket` export. + +`view` markup is parsed by a lenient dedicated HTML parser (`parseHtmlView`); HTML void elements (`
`, ``, …) take no closing tag. Line comments (`//`) are skipped by the lexer. + +## Requirements / Notes + +- Pure TypeScript with no runtime dependencies; runs under **Bun** as part of the WrNexus toolchain (Node is not supported). +- Generated modules target WrNexus runtime primitives (`data-scope`, `data-text`, `data-on-*`, `data-for`, `data-component`, `__wrnexus*`/`__wire*` helpers) — consume the output within a WrNexus app, e.g. via `@wrnexus/core`'s dev loader. diff --git a/vendor/compiler/package.json b/vendor/compiler/package.json new file mode 100644 index 00000000..8be5a863 --- /dev/null +++ b/vendor/compiler/package.json @@ -0,0 +1,49 @@ +{ + "name": "@wrnexus/compiler", + "version": "0.8.0", + "type": "module", + "description": "@wrnexus/compiler — part of the WrNexus framework.", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://git.workroot.in/WorkRoot/WRNexusJS.git", + "directory": "packages/compiler" + }, + "homepage": "https://wrnexusjs.dev/packages/compiler", + "bugs": { + "url": "https://git.workroot.in/WorkRoot/WRNexusJS/issues" + }, + "keywords": [ + "wrnexus", + "bun", + "typescript", + "compiler" + ], + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "engines": { + "bun": ">=1.3.0" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "restricted" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "dependencies": { + "@wrnexus/csr": "^0.8.0", + "@wrnexus/syntax": "^0.8.0", + "@wrnexus/store": "^0.8.0", + "@wrnexus/validation": "^0.8.0" + }, + "files": [ + "dist", + "README.md" + ] +}