vinext 0.0.22 → 0.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/build/static-export.d.ts.map +1 -1
  2. package/dist/build/static-export.js +9 -7
  3. package/dist/build/static-export.js.map +1 -1
  4. package/dist/config/config-matchers.d.ts.map +1 -1
  5. package/dist/config/config-matchers.js +13 -3
  6. package/dist/config/config-matchers.js.map +1 -1
  7. package/dist/config/next-config.d.ts +4 -1
  8. package/dist/config/next-config.d.ts.map +1 -1
  9. package/dist/config/next-config.js +10 -5
  10. package/dist/config/next-config.js.map +1 -1
  11. package/dist/deploy.d.ts.map +1 -1
  12. package/dist/deploy.js +83 -24
  13. package/dist/deploy.js.map +1 -1
  14. package/dist/index.d.ts +36 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +230 -40
  17. package/dist/index.js.map +1 -1
  18. package/dist/routing/app-router.d.ts +2 -1
  19. package/dist/routing/app-router.d.ts.map +1 -1
  20. package/dist/routing/app-router.js +73 -66
  21. package/dist/routing/app-router.js.map +1 -1
  22. package/dist/routing/file-matcher.d.ts +24 -0
  23. package/dist/routing/file-matcher.d.ts.map +1 -0
  24. package/dist/routing/file-matcher.js +75 -0
  25. package/dist/routing/file-matcher.js.map +1 -0
  26. package/dist/routing/pages-router.d.ts +3 -2
  27. package/dist/routing/pages-router.d.ts.map +1 -1
  28. package/dist/routing/pages-router.js +24 -17
  29. package/dist/routing/pages-router.js.map +1 -1
  30. package/dist/server/app-dev-server.d.ts.map +1 -1
  31. package/dist/server/app-dev-server.js +110 -64
  32. package/dist/server/app-dev-server.js.map +1 -1
  33. package/dist/server/dev-server.d.ts +2 -1
  34. package/dist/server/dev-server.d.ts.map +1 -1
  35. package/dist/server/dev-server.js +16 -14
  36. package/dist/server/dev-server.js.map +1 -1
  37. package/dist/server/prod-server.d.ts +8 -2
  38. package/dist/server/prod-server.d.ts.map +1 -1
  39. package/dist/server/prod-server.js +71 -16
  40. package/dist/server/prod-server.js.map +1 -1
  41. package/dist/server/worker-utils.d.ts +15 -0
  42. package/dist/server/worker-utils.d.ts.map +1 -0
  43. package/dist/server/worker-utils.js +41 -0
  44. package/dist/server/worker-utils.js.map +1 -0
  45. package/dist/shims/cache.d.ts +1 -1
  46. package/dist/shims/cache.d.ts.map +1 -1
  47. package/dist/shims/cache.js +8 -3
  48. package/dist/shims/cache.js.map +1 -1
  49. package/dist/shims/headers.d.ts +6 -0
  50. package/dist/shims/headers.d.ts.map +1 -1
  51. package/dist/shims/headers.js +8 -0
  52. package/dist/shims/headers.js.map +1 -1
  53. package/dist/shims/metadata.d.ts +1 -0
  54. package/dist/shims/metadata.d.ts.map +1 -1
  55. package/dist/shims/metadata.js +5 -1
  56. package/dist/shims/metadata.js.map +1 -1
  57. package/dist/utils/project.d.ts +13 -1
  58. package/dist/utils/project.d.ts.map +1 -1
  59. package/dist/utils/project.js +63 -13
  60. package/dist/utils/project.js.map +1 -1
  61. package/package.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/shims/metadata.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Metadata support for App Router.\n *\n * Handles `export const metadata` and `export async function generateMetadata()`.\n * Resolves metadata from layouts and pages (pages override layouts).\n */\nimport React from \"react\";\n\n// ---------------------------------------------------------------------------\n// Viewport types and resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Normalize null-prototype objects from matchPattern() into thenable objects.\n * See app-dev-server.ts makeThenableParams() for full explanation.\n */\nfunction makeThenableParams<T extends Record<string, unknown>>(obj: T): Promise<T> & T {\n const plain = { ...obj } as T;\n return Object.assign(Promise.resolve(plain), plain);\n}\n\nexport interface Viewport {\n /** Viewport width (default: \"device-width\") */\n width?: string | number;\n /** Viewport height */\n height?: string | number;\n /** Initial scale */\n initialScale?: number;\n /** Minimum scale */\n minimumScale?: number;\n /** Maximum scale */\n maximumScale?: number;\n /** Whether user can scale */\n userScalable?: boolean;\n /** Theme color — single color or array of { media, color } */\n themeColor?:\n | string\n | Array<{ media?: string; color: string }>;\n /** Color scheme: 'light' | 'dark' | 'light dark' | 'normal' */\n colorScheme?: string;\n}\n\n/**\n * Resolve viewport config from a module. Handles both static `viewport` export\n * and async `generateViewport()` function.\n */\nexport async function resolveModuleViewport(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n): Promise<Viewport | null> {\n if (typeof mod.generateViewport === \"function\") {\n const asyncParams = makeThenableParams(params);\n return await mod.generateViewport({ params: asyncParams });\n }\n if (mod.viewport && typeof mod.viewport === \"object\") {\n return mod.viewport as Viewport;\n }\n return null;\n}\n\n/**\n * Merge viewport configs from multiple sources (layouts + page).\n * Later entries override earlier ones.\n */\nexport function mergeViewport(viewportList: Viewport[]): Viewport {\n const merged: Viewport = {};\n for (const vp of viewportList) {\n Object.assign(merged, vp);\n }\n return merged;\n}\n\n/**\n * React component that renders viewport meta tags into <head>.\n */\nexport function ViewportHead({ viewport }: { viewport: Viewport }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Build viewport content string\n const parts: string[] = [];\n if (viewport.width !== undefined) parts.push(`width=${viewport.width}`);\n if (viewport.height !== undefined) parts.push(`height=${viewport.height}`);\n if (viewport.initialScale !== undefined) parts.push(`initial-scale=${viewport.initialScale}`);\n if (viewport.minimumScale !== undefined) parts.push(`minimum-scale=${viewport.minimumScale}`);\n if (viewport.maximumScale !== undefined) parts.push(`maximum-scale=${viewport.maximumScale}`);\n if (viewport.userScalable !== undefined) parts.push(`user-scalable=${viewport.userScalable ? \"yes\" : \"no\"}`);\n\n if (parts.length > 0) {\n elements.push(\n <meta key={key++} name=\"viewport\" content={parts.join(\", \")} />,\n );\n }\n\n // Theme color\n if (viewport.themeColor) {\n if (typeof viewport.themeColor === \"string\") {\n elements.push(\n <meta key={key++} name=\"theme-color\" content={viewport.themeColor} />,\n );\n } else if (Array.isArray(viewport.themeColor)) {\n for (const entry of viewport.themeColor) {\n elements.push(\n <meta\n key={key++}\n name=\"theme-color\"\n content={entry.color}\n {...(entry.media ? { media: entry.media } : {})}\n />,\n );\n }\n }\n }\n\n // Color scheme\n if (viewport.colorScheme) {\n elements.push(\n <meta key={key++} name=\"color-scheme\" content={viewport.colorScheme} />,\n );\n }\n\n return <>{elements}</>;\n}\n\n// ---------------------------------------------------------------------------\n// Metadata types and resolution\n// ---------------------------------------------------------------------------\n\nexport interface Metadata {\n title?: string | { default?: string; template?: string; absolute?: string };\n description?: string;\n generator?: string;\n applicationName?: string;\n referrer?: string;\n keywords?: string | string[];\n authors?: Array<{ name?: string; url?: string }> | { name?: string; url?: string };\n creator?: string;\n publisher?: string;\n robots?: string | { index?: boolean; follow?: boolean; googleBot?: string | { index?: boolean; follow?: boolean; [key: string]: unknown }; [key: string]: unknown };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string;\n siteName?: string;\n images?: string | Array<{ url: string; width?: number; height?: number; alt?: string }>;\n videos?: Array<{ url: string; width?: number; height?: number }>;\n audio?: Array<{ url: string }>;\n locale?: string;\n type?: string;\n publishedTime?: string;\n modifiedTime?: string;\n authors?: string[];\n };\n twitter?: {\n card?: string;\n site?: string;\n siteId?: string;\n title?: string;\n description?: string;\n images?: string | string[] | Array<{ url: string; alt?: string; width?: number; height?: number }>;\n creator?: string;\n creatorId?: string;\n };\n icons?: {\n icon?: string | Array<{ url: string; sizes?: string; type?: string; media?: string }>;\n shortcut?: string | string[];\n apple?: string | Array<{ url: string; sizes?: string; type?: string }>;\n other?: Array<{ rel: string; url: string; sizes?: string; type?: string }>;\n };\n manifest?: string;\n alternates?: {\n canonical?: string;\n languages?: Record<string, string>;\n media?: Record<string, string>;\n types?: Record<string, string>;\n };\n verification?: {\n google?: string;\n yahoo?: string;\n yandex?: string;\n other?: Record<string, string | string[]>;\n };\n metadataBase?: URL | null;\n appleWebApp?: {\n capable?: boolean;\n title?: string;\n statusBarStyle?: string;\n startupImage?: string | Array<{ url: string; media?: string }>;\n };\n formatDetection?: {\n email?: boolean;\n address?: boolean;\n telephone?: boolean;\n };\n category?: string;\n other?: Record<string, string | string[]>;\n [key: string]: unknown;\n}\n\n/**\n * Merge metadata from multiple sources (layouts + page).\n *\n * The list is ordered [rootLayout, nestedLayout, ..., page].\n * Title template from layouts applies to the page title but NOT to\n * the segment that defines the template itself. `title.absolute`\n * skips all templates. `title.default` is the fallback when no\n * child provides a title.\n *\n * Shallow merge: later entries override earlier ones (per Next.js docs).\n */\nexport function mergeMetadata(metadataList: Metadata[]): Metadata {\n if (metadataList.length === 0) return {};\n\n const merged: Metadata = {};\n\n // Track the most recent title template from LAYOUTS (not from page).\n // The page is always the last entry in metadataList.\n let parentTemplate: string | undefined;\n\n for (let i = 0; i < metadataList.length; i++) {\n const meta = metadataList[i];\n const isPage = i === metadataList.length - 1;\n\n // Collect template from layouts only (page templates are ignored per Next.js spec)\n if (!isPage && meta.title && typeof meta.title === \"object\" && meta.title.template) {\n parentTemplate = meta.title.template;\n }\n\n // Shallow merge — later entries override earlier for top-level keys\n for (const key of Object.keys(meta)) {\n if (key === \"title\") continue; // Handle title separately below\n (merged as Record<string, unknown>)[key] = (meta as Record<string, unknown>)[key];\n }\n\n // Title resolution\n if (meta.title !== undefined) {\n merged.title = meta.title;\n }\n }\n\n // Now resolve the final title, applying the parent template if applicable\n const finalTitle = merged.title;\n if (finalTitle) {\n if (typeof finalTitle === \"string\") {\n // Simple string title — apply parent template\n if (parentTemplate) {\n merged.title = parentTemplate.replace(\"%s\", finalTitle);\n }\n } else if (typeof finalTitle === \"object\") {\n if (finalTitle.absolute) {\n // Absolute title — skip all templates\n merged.title = finalTitle.absolute;\n } else if (finalTitle.default) {\n // Title object with default — this is used when the segment IS the\n // defining layout (its own default doesn't get template-wrapped)\n merged.title = finalTitle.default;\n } else if (finalTitle.template && !finalTitle.default && !finalTitle.absolute) {\n // Template only with no default — no title to render\n merged.title = undefined;\n }\n }\n }\n\n return merged;\n}\n\n/**\n * Resolve metadata from a module. Handles both static `metadata` export\n * and async `generateMetadata()` function.\n */\nexport async function resolveModuleMetadata(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n searchParams?: Record<string, string>,\n): Promise<Metadata | null> {\n if (typeof mod.generateMetadata === \"function\") {\n // Next.js 16 passes params/searchParams as Promises (async pattern).\n // makeThenableParams() normalises null-prototype + preserves sync access.\n const asyncParams = makeThenableParams(params);\n const sp = searchParams ?? {};\n const asyncSp = makeThenableParams(sp);\n return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp });\n }\n if (mod.metadata && typeof mod.metadata === \"object\") {\n return mod.metadata as Metadata;\n }\n return null;\n}\n\n/**\n * React component that renders metadata as HTML head elements.\n * Used by the RSC entry to inject into the <head>.\n */\nexport function MetadataHead({ metadata }: { metadata: Metadata }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Resolve metadataBase for URL composition\n const base = metadata.metadataBase;\n function resolveUrl(url: string | undefined): string | undefined {\n if (!url) return undefined;\n if (!base) return url;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\") || url.startsWith(\"//\")) return url;\n try {\n return new URL(url, base).toString();\n } catch {\n return url;\n }\n }\n\n // Title\n const title =\n typeof metadata.title === \"string\"\n ? metadata.title\n : typeof metadata.title === \"object\"\n ? metadata.title.absolute || metadata.title.default\n : undefined;\n if (title) {\n elements.push(<title key={key++}>{title}</title>);\n }\n\n // Description\n if (metadata.description) {\n elements.push(\n <meta key={key++} name=\"description\" content={metadata.description} />,\n );\n }\n\n // Generator\n if (metadata.generator) {\n elements.push(<meta key={key++} name=\"generator\" content={metadata.generator} />);\n }\n\n // Application name\n if (metadata.applicationName) {\n elements.push(<meta key={key++} name=\"application-name\" content={metadata.applicationName} />);\n }\n\n // Referrer\n if (metadata.referrer) {\n elements.push(<meta key={key++} name=\"referrer\" content={metadata.referrer} />);\n }\n\n // Keywords\n if (metadata.keywords) {\n const kw = Array.isArray(metadata.keywords)\n ? metadata.keywords.join(\",\")\n : metadata.keywords;\n elements.push(<meta key={key++} name=\"keywords\" content={kw} />);\n }\n\n // Authors\n if (metadata.authors) {\n const authorList = Array.isArray(metadata.authors)\n ? metadata.authors\n : [metadata.authors];\n for (const author of authorList) {\n if (author.name) {\n elements.push(<meta key={key++} name=\"author\" content={author.name} />);\n }\n if (author.url) {\n elements.push(<link key={key++} rel=\"author\" href={author.url} />);\n }\n }\n }\n\n // Creator\n if (metadata.creator) {\n elements.push(<meta key={key++} name=\"creator\" content={metadata.creator} />);\n }\n\n // Publisher\n if (metadata.publisher) {\n elements.push(<meta key={key++} name=\"publisher\" content={metadata.publisher} />);\n }\n\n // Format detection\n if (metadata.formatDetection) {\n const parts: string[] = [];\n if (metadata.formatDetection.telephone === false) parts.push(\"telephone=no\");\n if (metadata.formatDetection.address === false) parts.push(\"address=no\");\n if (metadata.formatDetection.email === false) parts.push(\"email=no\");\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"format-detection\" content={parts.join(\", \")} />);\n }\n }\n\n // Category\n if (metadata.category) {\n elements.push(<meta key={key++} name=\"category\" content={metadata.category} />);\n }\n\n // Robots\n if (metadata.robots) {\n if (typeof metadata.robots === \"string\") {\n elements.push(<meta key={key++} name=\"robots\" content={metadata.robots} />);\n } else {\n const { googleBot, ...robotsRest } = metadata.robots;\n const robotParts: string[] = [];\n for (const [k, v] of Object.entries(robotsRest)) {\n if (v === true) robotParts.push(k);\n else if (v === false) robotParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") robotParts.push(`${k}:${v}`);\n }\n if (robotParts.length > 0) {\n elements.push(<meta key={key++} name=\"robots\" content={robotParts.join(\", \")} />);\n }\n // googlebot\n if (googleBot) {\n if (typeof googleBot === \"string\") {\n elements.push(<meta key={key++} name=\"googlebot\" content={googleBot} />);\n } else {\n const gbParts: string[] = [];\n for (const [k, v] of Object.entries(googleBot)) {\n if (v === true) gbParts.push(k);\n else if (v === false) gbParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") gbParts.push(`${k}:${v}`);\n }\n if (gbParts.length > 0) {\n elements.push(<meta key={key++} name=\"googlebot\" content={gbParts.join(\", \")} />);\n }\n }\n }\n }\n }\n\n // Open Graph\n if (metadata.openGraph) {\n const og = metadata.openGraph;\n if (og.title)\n elements.push(<meta key={key++} property=\"og:title\" content={og.title} />);\n if (og.description)\n elements.push(<meta key={key++} property=\"og:description\" content={og.description} />);\n if (og.url)\n elements.push(<meta key={key++} property=\"og:url\" content={resolveUrl(og.url) ?? og.url} />);\n if (og.siteName)\n elements.push(<meta key={key++} property=\"og:site_name\" content={og.siteName} />);\n if (og.type)\n elements.push(<meta key={key++} property=\"og:type\" content={og.type} />);\n if (og.locale)\n elements.push(<meta key={key++} property=\"og:locale\" content={og.locale} />);\n if (og.publishedTime)\n elements.push(<meta key={key++} property=\"article:published_time\" content={og.publishedTime} />);\n if (og.modifiedTime)\n elements.push(<meta key={key++} property=\"article:modified_time\" content={og.modifiedTime} />);\n if (og.authors) {\n for (const author of og.authors) {\n elements.push(<meta key={key++} property=\"article:author\" content={author} />);\n }\n }\n if (og.images) {\n const imgList = typeof og.images === \"string\" ? [{ url: og.images }] : og.images;\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(<meta key={key++} property=\"og:image\" content={resolveUrl(imgUrl) ?? imgUrl} />);\n if (typeof img !== \"string\") {\n if (img.width)\n elements.push(<meta key={key++} property=\"og:image:width\" content={String(img.width)} />);\n if (img.height)\n elements.push(<meta key={key++} property=\"og:image:height\" content={String(img.height)} />);\n if (img.alt)\n elements.push(<meta key={key++} property=\"og:image:alt\" content={img.alt} />);\n }\n }\n }\n if (og.videos) {\n for (const video of og.videos) {\n elements.push(<meta key={key++} property=\"og:video\" content={resolveUrl(video.url) ?? video.url} />);\n if (video.width) elements.push(<meta key={key++} property=\"og:video:width\" content={String(video.width)} />);\n if (video.height) elements.push(<meta key={key++} property=\"og:video:height\" content={String(video.height)} />);\n }\n }\n if (og.audio) {\n for (const audio of og.audio) {\n elements.push(<meta key={key++} property=\"og:audio\" content={resolveUrl(audio.url) ?? audio.url} />);\n }\n }\n }\n\n // Twitter\n if (metadata.twitter) {\n const tw = metadata.twitter;\n if (tw.card)\n elements.push(<meta key={key++} name=\"twitter:card\" content={tw.card} />);\n if (tw.site)\n elements.push(<meta key={key++} name=\"twitter:site\" content={tw.site} />);\n if (tw.siteId)\n elements.push(<meta key={key++} name=\"twitter:site:id\" content={tw.siteId} />);\n if (tw.title)\n elements.push(<meta key={key++} name=\"twitter:title\" content={tw.title} />);\n if (tw.description)\n elements.push(<meta key={key++} name=\"twitter:description\" content={tw.description} />);\n if (tw.creator)\n elements.push(<meta key={key++} name=\"twitter:creator\" content={tw.creator} />);\n if (tw.creatorId)\n elements.push(<meta key={key++} name=\"twitter:creator:id\" content={tw.creatorId} />);\n if (tw.images) {\n const imgList = typeof tw.images === \"string\"\n ? [tw.images]\n : Array.isArray(tw.images) ? tw.images : [];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(<meta key={key++} name=\"twitter:image\" content={resolveUrl(imgUrl) ?? imgUrl} />);\n if (typeof img !== \"string\" && img.alt) {\n elements.push(<meta key={key++} name=\"twitter:image:alt\" content={img.alt} />);\n }\n }\n }\n }\n\n // Icons\n if (metadata.icons) {\n const { icon, shortcut, apple, other } = metadata.icons;\n // Shortcut icon\n if (shortcut) {\n const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];\n for (const s of shortcuts) {\n elements.push(<link key={key++} rel=\"shortcut icon\" href={resolveUrl(s) ?? s} />);\n }\n }\n // Icon\n if (icon) {\n const icons = typeof icon === \"string\" ? [{ url: icon }] : icon;\n for (const i of icons) {\n elements.push(\n <link\n key={key++}\n rel=\"icon\"\n href={resolveUrl(i.url) ?? i.url}\n {...(i.sizes ? { sizes: i.sizes } : {})}\n {...(i.type ? { type: i.type } : {})}\n {...(i.media ? { media: i.media } : {})}\n />,\n );\n }\n }\n // Apple touch icon\n if (apple) {\n const apples = typeof apple === \"string\" ? [{ url: apple }] : apple;\n for (const a of apples) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-icon\"\n href={resolveUrl(a.url) ?? a.url}\n {...(a.sizes ? { sizes: a.sizes } : {})}\n {...(a.type ? { type: a.type } : {})}\n />,\n );\n }\n }\n // Other custom icon relations\n if (other) {\n for (const o of other) {\n elements.push(\n <link key={key++} rel={o.rel} href={resolveUrl(o.url) ?? o.url} {...(o.sizes ? { sizes: o.sizes } : {})} />,\n );\n }\n }\n }\n\n // Manifest\n if (metadata.manifest) {\n elements.push(<link key={key++} rel=\"manifest\" href={resolveUrl(metadata.manifest) ?? metadata.manifest} />);\n }\n\n // Alternates\n if (metadata.alternates) {\n const alt = metadata.alternates;\n if (alt.canonical) {\n elements.push(<link key={key++} rel=\"canonical\" href={resolveUrl(alt.canonical) ?? alt.canonical} />);\n }\n if (alt.languages) {\n for (const [lang, href] of Object.entries(alt.languages)) {\n elements.push(<link key={key++} rel=\"alternate\" hrefLang={lang} href={resolveUrl(href) ?? href} />);\n }\n }\n if (alt.media) {\n for (const [media, href] of Object.entries(alt.media)) {\n elements.push(<link key={key++} rel=\"alternate\" media={media} href={resolveUrl(href) ?? href} />);\n }\n }\n if (alt.types) {\n for (const [type, href] of Object.entries(alt.types)) {\n elements.push(<link key={key++} rel=\"alternate\" type={type} href={resolveUrl(href) ?? href} />);\n }\n }\n }\n\n // Verification\n if (metadata.verification) {\n const v = metadata.verification;\n if (v.google) elements.push(<meta key={key++} name=\"google-site-verification\" content={v.google} />);\n if (v.yahoo) elements.push(<meta key={key++} name=\"y_key\" content={v.yahoo} />);\n if (v.yandex) elements.push(<meta key={key++} name=\"yandex-verification\" content={v.yandex} />);\n if (v.other) {\n for (const [name, content] of Object.entries(v.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n }\n\n // Apple Web App\n if (metadata.appleWebApp) {\n const awa = metadata.appleWebApp;\n if (awa.capable !== false) {\n elements.push(<meta key={key++} name=\"mobile-web-app-capable\" content=\"yes\" />);\n }\n if (awa.title) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-title\" content={awa.title} />);\n }\n if (awa.statusBarStyle) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-status-bar-style\" content={awa.statusBarStyle} />);\n }\n if (awa.startupImage) {\n const imgs = typeof awa.startupImage === \"string\" ? [{ url: awa.startupImage }] : awa.startupImage;\n for (const img of imgs) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-startup-image\"\n href={resolveUrl(img.url) ?? img.url}\n {...(img.media ? { media: img.media } : {})}\n />,\n );\n }\n }\n }\n\n // Other custom meta tags\n if (metadata.other) {\n for (const [name, content] of Object.entries(metadata.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n\n return <>{elements}</>;\n}\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/shims/metadata.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Metadata support for App Router.\n *\n * Handles `export const metadata` and `export async function generateMetadata()`.\n * Resolves metadata from layouts and pages (pages override layouts).\n */\nimport React from \"react\";\n\n// ---------------------------------------------------------------------------\n// Viewport types and resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Normalize null-prototype objects from matchPattern() into thenable objects.\n * See app-dev-server.ts makeThenableParams() for full explanation.\n */\nfunction makeThenableParams<T extends Record<string, unknown>>(obj: T): Promise<T> & T {\n const plain = { ...obj } as T;\n return Object.assign(Promise.resolve(plain), plain);\n}\n\nexport interface Viewport {\n /** Viewport width (default: \"device-width\") */\n width?: string | number;\n /** Viewport height */\n height?: string | number;\n /** Initial scale */\n initialScale?: number;\n /** Minimum scale */\n minimumScale?: number;\n /** Maximum scale */\n maximumScale?: number;\n /** Whether user can scale */\n userScalable?: boolean;\n /** Theme color — single color or array of { media, color } */\n themeColor?:\n | string\n | Array<{ media?: string; color: string }>;\n /** Color scheme: 'light' | 'dark' | 'light dark' | 'normal' */\n colorScheme?: string;\n}\n\n/**\n * Resolve viewport config from a module. Handles both static `viewport` export\n * and async `generateViewport()` function.\n */\nexport async function resolveModuleViewport(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n): Promise<Viewport | null> {\n if (typeof mod.generateViewport === \"function\") {\n const asyncParams = makeThenableParams(params);\n return await mod.generateViewport({ params: asyncParams });\n }\n if (mod.viewport && typeof mod.viewport === \"object\") {\n return mod.viewport as Viewport;\n }\n return null;\n}\n\n/**\n * Merge viewport configs from multiple sources (layouts + page).\n * Later entries override earlier ones.\n */\nexport const DEFAULT_VIEWPORT: Viewport = {\n width: \"device-width\",\n initialScale: 1,\n};\n\nexport function mergeViewport(viewportList: Viewport[]): Viewport {\n const merged: Viewport = { ...DEFAULT_VIEWPORT };\n for (const vp of viewportList) {\n Object.assign(merged, vp);\n }\n return merged;\n}\n\n/**\n * React component that renders viewport meta tags into <head>.\n */\nexport function ViewportHead({ viewport }: { viewport: Viewport }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Build viewport content string\n const parts: string[] = [];\n if (viewport.width !== undefined) parts.push(`width=${viewport.width}`);\n if (viewport.height !== undefined) parts.push(`height=${viewport.height}`);\n if (viewport.initialScale !== undefined) parts.push(`initial-scale=${viewport.initialScale}`);\n if (viewport.minimumScale !== undefined) parts.push(`minimum-scale=${viewport.minimumScale}`);\n if (viewport.maximumScale !== undefined) parts.push(`maximum-scale=${viewport.maximumScale}`);\n if (viewport.userScalable !== undefined) parts.push(`user-scalable=${viewport.userScalable ? \"yes\" : \"no\"}`);\n\n if (parts.length > 0) {\n elements.push(\n <meta key={key++} name=\"viewport\" content={parts.join(\", \")} />,\n );\n }\n\n // Theme color\n if (viewport.themeColor) {\n if (typeof viewport.themeColor === \"string\") {\n elements.push(\n <meta key={key++} name=\"theme-color\" content={viewport.themeColor} />,\n );\n } else if (Array.isArray(viewport.themeColor)) {\n for (const entry of viewport.themeColor) {\n elements.push(\n <meta\n key={key++}\n name=\"theme-color\"\n content={entry.color}\n {...(entry.media ? { media: entry.media } : {})}\n />,\n );\n }\n }\n }\n\n // Color scheme\n if (viewport.colorScheme) {\n elements.push(\n <meta key={key++} name=\"color-scheme\" content={viewport.colorScheme} />,\n );\n }\n\n return <>{elements}</>;\n}\n\n// ---------------------------------------------------------------------------\n// Metadata types and resolution\n// ---------------------------------------------------------------------------\n\nexport interface Metadata {\n title?: string | { default?: string; template?: string; absolute?: string };\n description?: string;\n generator?: string;\n applicationName?: string;\n referrer?: string;\n keywords?: string | string[];\n authors?: Array<{ name?: string; url?: string }> | { name?: string; url?: string };\n creator?: string;\n publisher?: string;\n robots?: string | { index?: boolean; follow?: boolean; googleBot?: string | { index?: boolean; follow?: boolean; [key: string]: unknown }; [key: string]: unknown };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string;\n siteName?: string;\n images?: string | Array<{ url: string; width?: number; height?: number; alt?: string }>;\n videos?: Array<{ url: string; width?: number; height?: number }>;\n audio?: Array<{ url: string }>;\n locale?: string;\n type?: string;\n publishedTime?: string;\n modifiedTime?: string;\n authors?: string[];\n };\n twitter?: {\n card?: string;\n site?: string;\n siteId?: string;\n title?: string;\n description?: string;\n images?: string | string[] | Array<{ url: string; alt?: string; width?: number; height?: number }>;\n creator?: string;\n creatorId?: string;\n };\n icons?: {\n icon?: string | Array<{ url: string; sizes?: string; type?: string; media?: string }>;\n shortcut?: string | string[];\n apple?: string | Array<{ url: string; sizes?: string; type?: string }>;\n other?: Array<{ rel: string; url: string; sizes?: string; type?: string }>;\n };\n manifest?: string;\n alternates?: {\n canonical?: string;\n languages?: Record<string, string>;\n media?: Record<string, string>;\n types?: Record<string, string>;\n };\n verification?: {\n google?: string;\n yahoo?: string;\n yandex?: string;\n other?: Record<string, string | string[]>;\n };\n metadataBase?: URL | null;\n appleWebApp?: {\n capable?: boolean;\n title?: string;\n statusBarStyle?: string;\n startupImage?: string | Array<{ url: string; media?: string }>;\n };\n formatDetection?: {\n email?: boolean;\n address?: boolean;\n telephone?: boolean;\n };\n category?: string;\n other?: Record<string, string | string[]>;\n [key: string]: unknown;\n}\n\n/**\n * Merge metadata from multiple sources (layouts + page).\n *\n * The list is ordered [rootLayout, nestedLayout, ..., page].\n * Title template from layouts applies to the page title but NOT to\n * the segment that defines the template itself. `title.absolute`\n * skips all templates. `title.default` is the fallback when no\n * child provides a title.\n *\n * Shallow merge: later entries override earlier ones (per Next.js docs).\n */\nexport function mergeMetadata(metadataList: Metadata[]): Metadata {\n if (metadataList.length === 0) return {};\n\n const merged: Metadata = {};\n\n // Track the most recent title template from LAYOUTS (not from page).\n // The page is always the last entry in metadataList.\n let parentTemplate: string | undefined;\n\n for (let i = 0; i < metadataList.length; i++) {\n const meta = metadataList[i];\n const isPage = i === metadataList.length - 1;\n\n // Collect template from layouts only (page templates are ignored per Next.js spec)\n if (!isPage && meta.title && typeof meta.title === \"object\" && meta.title.template) {\n parentTemplate = meta.title.template;\n }\n\n // Shallow merge — later entries override earlier for top-level keys\n for (const key of Object.keys(meta)) {\n if (key === \"title\") continue; // Handle title separately below\n (merged as Record<string, unknown>)[key] = (meta as Record<string, unknown>)[key];\n }\n\n // Title resolution\n if (meta.title !== undefined) {\n merged.title = meta.title;\n }\n }\n\n // Now resolve the final title, applying the parent template if applicable\n const finalTitle = merged.title;\n if (finalTitle) {\n if (typeof finalTitle === \"string\") {\n // Simple string title — apply parent template\n if (parentTemplate) {\n merged.title = parentTemplate.replace(\"%s\", finalTitle);\n }\n } else if (typeof finalTitle === \"object\") {\n if (finalTitle.absolute) {\n // Absolute title — skip all templates\n merged.title = finalTitle.absolute;\n } else if (finalTitle.default) {\n // Title object with default — this is used when the segment IS the\n // defining layout (its own default doesn't get template-wrapped)\n merged.title = finalTitle.default;\n } else if (finalTitle.template && !finalTitle.default && !finalTitle.absolute) {\n // Template only with no default — no title to render\n merged.title = undefined;\n }\n }\n }\n\n return merged;\n}\n\n/**\n * Resolve metadata from a module. Handles both static `metadata` export\n * and async `generateMetadata()` function.\n */\nexport async function resolveModuleMetadata(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n searchParams?: Record<string, string>,\n): Promise<Metadata | null> {\n if (typeof mod.generateMetadata === \"function\") {\n // Next.js 16 passes params/searchParams as Promises (async pattern).\n // makeThenableParams() normalises null-prototype + preserves sync access.\n const asyncParams = makeThenableParams(params);\n const sp = searchParams ?? {};\n const asyncSp = makeThenableParams(sp);\n return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp });\n }\n if (mod.metadata && typeof mod.metadata === \"object\") {\n return mod.metadata as Metadata;\n }\n return null;\n}\n\n/**\n * React component that renders metadata as HTML head elements.\n * Used by the RSC entry to inject into the <head>.\n */\nexport function MetadataHead({ metadata }: { metadata: Metadata }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Resolve metadataBase for URL composition\n const base = metadata.metadataBase;\n function resolveUrl(url: string | undefined): string | undefined {\n if (!url) return undefined;\n if (!base) return url;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\") || url.startsWith(\"//\")) return url;\n try {\n return new URL(url, base).toString();\n } catch {\n return url;\n }\n }\n\n // Title\n const title =\n typeof metadata.title === \"string\"\n ? metadata.title\n : typeof metadata.title === \"object\"\n ? metadata.title.absolute || metadata.title.default\n : undefined;\n if (title) {\n elements.push(<title key={key++}>{title}</title>);\n }\n\n // Description\n if (metadata.description) {\n elements.push(\n <meta key={key++} name=\"description\" content={metadata.description} />,\n );\n }\n\n // Generator\n if (metadata.generator) {\n elements.push(<meta key={key++} name=\"generator\" content={metadata.generator} />);\n }\n\n // Application name\n if (metadata.applicationName) {\n elements.push(<meta key={key++} name=\"application-name\" content={metadata.applicationName} />);\n }\n\n // Referrer\n if (metadata.referrer) {\n elements.push(<meta key={key++} name=\"referrer\" content={metadata.referrer} />);\n }\n\n // Keywords\n if (metadata.keywords) {\n const kw = Array.isArray(metadata.keywords)\n ? metadata.keywords.join(\",\")\n : metadata.keywords;\n elements.push(<meta key={key++} name=\"keywords\" content={kw} />);\n }\n\n // Authors\n if (metadata.authors) {\n const authorList = Array.isArray(metadata.authors)\n ? metadata.authors\n : [metadata.authors];\n for (const author of authorList) {\n if (author.name) {\n elements.push(<meta key={key++} name=\"author\" content={author.name} />);\n }\n if (author.url) {\n elements.push(<link key={key++} rel=\"author\" href={author.url} />);\n }\n }\n }\n\n // Creator\n if (metadata.creator) {\n elements.push(<meta key={key++} name=\"creator\" content={metadata.creator} />);\n }\n\n // Publisher\n if (metadata.publisher) {\n elements.push(<meta key={key++} name=\"publisher\" content={metadata.publisher} />);\n }\n\n // Format detection\n if (metadata.formatDetection) {\n const parts: string[] = [];\n if (metadata.formatDetection.telephone === false) parts.push(\"telephone=no\");\n if (metadata.formatDetection.address === false) parts.push(\"address=no\");\n if (metadata.formatDetection.email === false) parts.push(\"email=no\");\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"format-detection\" content={parts.join(\", \")} />);\n }\n }\n\n // Category\n if (metadata.category) {\n elements.push(<meta key={key++} name=\"category\" content={metadata.category} />);\n }\n\n // Robots\n if (metadata.robots) {\n if (typeof metadata.robots === \"string\") {\n elements.push(<meta key={key++} name=\"robots\" content={metadata.robots} />);\n } else {\n const { googleBot, ...robotsRest } = metadata.robots;\n const robotParts: string[] = [];\n for (const [k, v] of Object.entries(robotsRest)) {\n if (v === true) robotParts.push(k);\n else if (v === false) robotParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") robotParts.push(`${k}:${v}`);\n }\n if (robotParts.length > 0) {\n elements.push(<meta key={key++} name=\"robots\" content={robotParts.join(\", \")} />);\n }\n // googlebot\n if (googleBot) {\n if (typeof googleBot === \"string\") {\n elements.push(<meta key={key++} name=\"googlebot\" content={googleBot} />);\n } else {\n const gbParts: string[] = [];\n for (const [k, v] of Object.entries(googleBot)) {\n if (v === true) gbParts.push(k);\n else if (v === false) gbParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") gbParts.push(`${k}:${v}`);\n }\n if (gbParts.length > 0) {\n elements.push(<meta key={key++} name=\"googlebot\" content={gbParts.join(\", \")} />);\n }\n }\n }\n }\n }\n\n // Open Graph\n if (metadata.openGraph) {\n const og = metadata.openGraph;\n if (og.title)\n elements.push(<meta key={key++} property=\"og:title\" content={og.title} />);\n if (og.description)\n elements.push(<meta key={key++} property=\"og:description\" content={og.description} />);\n if (og.url)\n elements.push(<meta key={key++} property=\"og:url\" content={resolveUrl(og.url) ?? og.url} />);\n if (og.siteName)\n elements.push(<meta key={key++} property=\"og:site_name\" content={og.siteName} />);\n if (og.type)\n elements.push(<meta key={key++} property=\"og:type\" content={og.type} />);\n if (og.locale)\n elements.push(<meta key={key++} property=\"og:locale\" content={og.locale} />);\n if (og.publishedTime)\n elements.push(<meta key={key++} property=\"article:published_time\" content={og.publishedTime} />);\n if (og.modifiedTime)\n elements.push(<meta key={key++} property=\"article:modified_time\" content={og.modifiedTime} />);\n if (og.authors) {\n for (const author of og.authors) {\n elements.push(<meta key={key++} property=\"article:author\" content={author} />);\n }\n }\n if (og.images) {\n const imgList = typeof og.images === \"string\" ? [{ url: og.images }] : og.images;\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(<meta key={key++} property=\"og:image\" content={resolveUrl(imgUrl) ?? imgUrl} />);\n if (typeof img !== \"string\") {\n if (img.width)\n elements.push(<meta key={key++} property=\"og:image:width\" content={String(img.width)} />);\n if (img.height)\n elements.push(<meta key={key++} property=\"og:image:height\" content={String(img.height)} />);\n if (img.alt)\n elements.push(<meta key={key++} property=\"og:image:alt\" content={img.alt} />);\n }\n }\n }\n if (og.videos) {\n for (const video of og.videos) {\n elements.push(<meta key={key++} property=\"og:video\" content={resolveUrl(video.url) ?? video.url} />);\n if (video.width) elements.push(<meta key={key++} property=\"og:video:width\" content={String(video.width)} />);\n if (video.height) elements.push(<meta key={key++} property=\"og:video:height\" content={String(video.height)} />);\n }\n }\n if (og.audio) {\n for (const audio of og.audio) {\n elements.push(<meta key={key++} property=\"og:audio\" content={resolveUrl(audio.url) ?? audio.url} />);\n }\n }\n }\n\n // Twitter\n if (metadata.twitter) {\n const tw = metadata.twitter;\n if (tw.card)\n elements.push(<meta key={key++} name=\"twitter:card\" content={tw.card} />);\n if (tw.site)\n elements.push(<meta key={key++} name=\"twitter:site\" content={tw.site} />);\n if (tw.siteId)\n elements.push(<meta key={key++} name=\"twitter:site:id\" content={tw.siteId} />);\n if (tw.title)\n elements.push(<meta key={key++} name=\"twitter:title\" content={tw.title} />);\n if (tw.description)\n elements.push(<meta key={key++} name=\"twitter:description\" content={tw.description} />);\n if (tw.creator)\n elements.push(<meta key={key++} name=\"twitter:creator\" content={tw.creator} />);\n if (tw.creatorId)\n elements.push(<meta key={key++} name=\"twitter:creator:id\" content={tw.creatorId} />);\n if (tw.images) {\n const imgList = typeof tw.images === \"string\"\n ? [tw.images]\n : Array.isArray(tw.images) ? tw.images : [];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(<meta key={key++} name=\"twitter:image\" content={resolveUrl(imgUrl) ?? imgUrl} />);\n if (typeof img !== \"string\" && img.alt) {\n elements.push(<meta key={key++} name=\"twitter:image:alt\" content={img.alt} />);\n }\n }\n }\n }\n\n // Icons\n if (metadata.icons) {\n const { icon, shortcut, apple, other } = metadata.icons;\n // Shortcut icon\n if (shortcut) {\n const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];\n for (const s of shortcuts) {\n elements.push(<link key={key++} rel=\"shortcut icon\" href={resolveUrl(s) ?? s} />);\n }\n }\n // Icon\n if (icon) {\n const icons = typeof icon === \"string\" ? [{ url: icon }] : icon;\n for (const i of icons) {\n elements.push(\n <link\n key={key++}\n rel=\"icon\"\n href={resolveUrl(i.url) ?? i.url}\n {...(i.sizes ? { sizes: i.sizes } : {})}\n {...(i.type ? { type: i.type } : {})}\n {...(i.media ? { media: i.media } : {})}\n />,\n );\n }\n }\n // Apple touch icon\n if (apple) {\n const apples = typeof apple === \"string\" ? [{ url: apple }] : apple;\n for (const a of apples) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-icon\"\n href={resolveUrl(a.url) ?? a.url}\n {...(a.sizes ? { sizes: a.sizes } : {})}\n {...(a.type ? { type: a.type } : {})}\n />,\n );\n }\n }\n // Other custom icon relations\n if (other) {\n for (const o of other) {\n elements.push(\n <link key={key++} rel={o.rel} href={resolveUrl(o.url) ?? o.url} {...(o.sizes ? { sizes: o.sizes } : {})} />,\n );\n }\n }\n }\n\n // Manifest\n if (metadata.manifest) {\n elements.push(<link key={key++} rel=\"manifest\" href={resolveUrl(metadata.manifest) ?? metadata.manifest} />);\n }\n\n // Alternates\n if (metadata.alternates) {\n const alt = metadata.alternates;\n if (alt.canonical) {\n elements.push(<link key={key++} rel=\"canonical\" href={resolveUrl(alt.canonical) ?? alt.canonical} />);\n }\n if (alt.languages) {\n for (const [lang, href] of Object.entries(alt.languages)) {\n elements.push(<link key={key++} rel=\"alternate\" hrefLang={lang} href={resolveUrl(href) ?? href} />);\n }\n }\n if (alt.media) {\n for (const [media, href] of Object.entries(alt.media)) {\n elements.push(<link key={key++} rel=\"alternate\" media={media} href={resolveUrl(href) ?? href} />);\n }\n }\n if (alt.types) {\n for (const [type, href] of Object.entries(alt.types)) {\n elements.push(<link key={key++} rel=\"alternate\" type={type} href={resolveUrl(href) ?? href} />);\n }\n }\n }\n\n // Verification\n if (metadata.verification) {\n const v = metadata.verification;\n if (v.google) elements.push(<meta key={key++} name=\"google-site-verification\" content={v.google} />);\n if (v.yahoo) elements.push(<meta key={key++} name=\"y_key\" content={v.yahoo} />);\n if (v.yandex) elements.push(<meta key={key++} name=\"yandex-verification\" content={v.yandex} />);\n if (v.other) {\n for (const [name, content] of Object.entries(v.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n }\n\n // Apple Web App\n if (metadata.appleWebApp) {\n const awa = metadata.appleWebApp;\n if (awa.capable !== false) {\n elements.push(<meta key={key++} name=\"mobile-web-app-capable\" content=\"yes\" />);\n }\n if (awa.title) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-title\" content={awa.title} />);\n }\n if (awa.statusBarStyle) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-status-bar-style\" content={awa.statusBarStyle} />);\n }\n if (awa.startupImage) {\n const imgs = typeof awa.startupImage === \"string\" ? [{ url: awa.startupImage }] : awa.startupImage;\n for (const img of imgs) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-startup-image\"\n href={resolveUrl(img.url) ?? img.url}\n {...(img.media ? { media: img.media } : {})}\n />,\n );\n }\n }\n }\n\n // Other custom meta tags\n if (metadata.other) {\n for (const [name, content] of Object.entries(metadata.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n\n return <>{elements}</>;\n}\n"]}
@@ -19,7 +19,7 @@ type PackageManagerName = "pnpm" | "yarn" | "bun" | "npm";
19
19
  /**
20
20
  * Detect which package manager name is used.
21
21
  * Priority:
22
- * 1) lock files in the project
22
+ * 1) lock files (walks up parent directories for monorepo support)
23
23
  * 2) package.json#packageManager
24
24
  * 3) invoking CLI user agent (npm_config_user_agent)
25
25
  * 4) npm fallback
@@ -30,6 +30,18 @@ export declare function detectPackageManagerName(root: string, env?: Record<stri
30
30
  * Returns the dev-install command string (e.g. "pnpm add -D").
31
31
  */
32
32
  export declare function detectPackageManager(root: string): string;
33
+ /**
34
+ * Walk from `start` up to the filesystem root looking for a path inside
35
+ * node_modules. Returns the first absolute path found, or null.
36
+ *
37
+ * Handles monorepos where packages are hoisted to the workspace root's
38
+ * node_modules rather than installed in each app's own node_modules.
39
+ *
40
+ * @param start - Directory to begin the search (usually the project root)
41
+ * @param subPath - Path relative to a node_modules dir, e.g. ".bin/wrangler"
42
+ * or "@cloudflare/vite-plugin"
43
+ */
44
+ export declare function findInNodeModules(start: string, subPath: string): string | null;
33
45
  /**
34
46
  * Check if a vite.config file exists in the project root.
35
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAepD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAsBtE;AAID,KAAK,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAgC1D;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,kBAAkB,CAuBpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzD;AAID;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMnD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK/C"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAepD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAsBtE;AA0BD,KAAK,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAuD1D;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,kBAAkB,CAWpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzD;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/E;AAID;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMnD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK/C"}
@@ -67,6 +67,27 @@ export function renameCJSConfigs(root) {
67
67
  }
68
68
  return renamed;
69
69
  }
70
+ // ─── Ancestor Directory Walking ──────────────────────────────────────────────
71
+ /**
72
+ * Walk from `start` up to the filesystem root, calling `check` on each
73
+ * directory. Returns the first non-null value returned by `check`, or null.
74
+ *
75
+ * This is the shared primitive used by both lock-file detection and
76
+ * node_modules resolution to support monorepo layouts where the relevant
77
+ * files live at the workspace root rather than inside each app package.
78
+ */
79
+ function walkUpUntil(start, check) {
80
+ let dir = path.resolve(start);
81
+ const { root: fsRoot } = path.parse(dir);
82
+ while (true) {
83
+ const result = check(dir);
84
+ if (result !== null)
85
+ return result;
86
+ if (dir === fsRoot)
87
+ return null;
88
+ dir = path.dirname(dir);
89
+ }
90
+ }
70
91
  function parsePackageManagerName(value) {
71
92
  if (!value)
72
93
  return null;
@@ -95,26 +116,37 @@ function detectPackageManagerFromPackageJson(root) {
95
116
  }
96
117
  }
97
118
  /**
98
- * Detect which package manager name is used.
99
- * Priority:
100
- * 1) lock files in the project
101
- * 2) package.json#packageManager
102
- * 3) invoking CLI user agent (npm_config_user_agent)
103
- * 4) npm fallback
119
+ * Check a single directory for lock files, returning the package manager name.
120
+ * Used by walkUpUntil to walk ancestor directories in monorepos.
104
121
  */
105
- export function detectPackageManagerName(root, env = process.env) {
106
- if (fs.existsSync(path.join(root, "pnpm-lock.yaml")))
122
+ function checkLockFiles(dir) {
123
+ if (fs.existsSync(path.join(dir, "pnpm-lock.yaml")))
107
124
  return "pnpm";
108
- if (fs.existsSync(path.join(root, "yarn.lock")))
125
+ if (fs.existsSync(path.join(dir, "yarn.lock")))
109
126
  return "yarn";
110
- if (fs.existsSync(path.join(root, "bun.lock")) ||
111
- fs.existsSync(path.join(root, "bun.lockb"))) {
127
+ // bun.lock = text format (Bun v1.0+); bun.lockb = legacy binary format
128
+ if (fs.existsSync(path.join(dir, "bun.lock")) ||
129
+ fs.existsSync(path.join(dir, "bun.lockb"))) {
112
130
  return "bun";
113
131
  }
114
- if (fs.existsSync(path.join(root, "package-lock.json")) ||
115
- fs.existsSync(path.join(root, "npm-shrinkwrap.json"))) {
132
+ if (fs.existsSync(path.join(dir, "package-lock.json")) ||
133
+ fs.existsSync(path.join(dir, "npm-shrinkwrap.json"))) {
116
134
  return "npm";
117
135
  }
136
+ return null;
137
+ }
138
+ /**
139
+ * Detect which package manager name is used.
140
+ * Priority:
141
+ * 1) lock files (walks up parent directories for monorepo support)
142
+ * 2) package.json#packageManager
143
+ * 3) invoking CLI user agent (npm_config_user_agent)
144
+ * 4) npm fallback
145
+ */
146
+ export function detectPackageManagerName(root, env = process.env) {
147
+ const fromLockFile = walkUpUntil(root, checkLockFiles);
148
+ if (fromLockFile)
149
+ return fromLockFile;
118
150
  const fromPkg = detectPackageManagerFromPackageJson(root);
119
151
  if (fromPkg)
120
152
  return fromPkg;
@@ -133,6 +165,24 @@ export function detectPackageManager(root) {
133
165
  return "npm install -D";
134
166
  return `${pm} add -D`;
135
167
  }
168
+ // ─── Node Modules Resolution ─────────────────────────────────────────────────
169
+ /**
170
+ * Walk from `start` up to the filesystem root looking for a path inside
171
+ * node_modules. Returns the first absolute path found, or null.
172
+ *
173
+ * Handles monorepos where packages are hoisted to the workspace root's
174
+ * node_modules rather than installed in each app's own node_modules.
175
+ *
176
+ * @param start - Directory to begin the search (usually the project root)
177
+ * @param subPath - Path relative to a node_modules dir, e.g. ".bin/wrangler"
178
+ * or "@cloudflare/vite-plugin"
179
+ */
180
+ export function findInNodeModules(start, subPath) {
181
+ return walkUpUntil(start, (dir) => {
182
+ const candidate = path.join(dir, "node_modules", subPath);
183
+ return fs.existsSync(candidate) ? candidate : null;
184
+ });
185
+ }
136
186
  // ─── Vite Config Detection ───────────────────────────────────────────────────
137
187
  /**
138
188
  * Check if a vite.config file exists in the project root.
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared project utilities — used by both `vinext init` and `vinext deploy`.\n *\n * These functions detect and modify project configuration without touching\n * any Next.js source files, config files, or tsconfig.json.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\n// ─── CJS Config Handling ─────────────────────────────────────────────────────\n\n/** Common CJS config files that may need renaming when adding \"type\": \"module\" */\nconst CJS_CONFIG_FILES = [\n \"postcss.config.js\",\n \"tailwind.config.js\",\n \".eslintrc.js\",\n \"prettier.config.js\",\n \"stylelint.config.js\",\n \"commitlint.config.js\",\n \"jest.config.js\",\n \"babel.config.js\",\n \".babelrc.js\",\n];\n\n/**\n * Ensure package.json has \"type\": \"module\".\n * Returns true if it was added (i.e. it wasn't already there).\n */\nexport function ensureESModule(root: string): boolean {\n const pkgPath = path.join(root, \"package.json\");\n if (!fs.existsSync(pkgPath)) return false;\n\n try {\n const raw = fs.readFileSync(pkgPath, \"utf-8\");\n const pkg = JSON.parse(raw);\n if (pkg.type === \"module\") return false;\n\n pkg.type = \"module\";\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\", \"utf-8\");\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Rename CJS config files (that use `module.exports`) to .cjs\n * to avoid breakage when \"type\": \"module\" is added.\n * Returns array of [oldName, newName] pairs that were renamed.\n */\nexport function renameCJSConfigs(root: string): Array<[string, string]> {\n const renamed: Array<[string, string]> = [];\n\n for (const fileName of CJS_CONFIG_FILES) {\n const filePath = path.join(root, fileName);\n if (!fs.existsSync(filePath)) continue;\n\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n // Only rename if it actually uses CJS patterns\n if (/\\bmodule\\.exports\\b/.test(content) || /\\brequire\\s*\\(/.test(content)) {\n const newName = fileName.replace(/\\.js$/, \".cjs\");\n const newPath = path.join(root, newName);\n fs.renameSync(filePath, newPath);\n renamed.push([fileName, newName]);\n }\n } catch {\n // skip unreadable files\n }\n }\n\n return renamed;\n}\n\n// ─── Package Manager Detection ───────────────────────────────────────────────\n\ntype PackageManagerName = \"pnpm\" | \"yarn\" | \"bun\" | \"npm\";\n\nfunction parsePackageManagerName(value: string | undefined): PackageManagerName | null {\n if (!value) return null;\n\n // packageManager: \"pnpm@10.0.0\"\n const fromPkg = value.trim().toLowerCase().split(\"@\")[0];\n if (fromPkg === \"pnpm\" || fromPkg === \"yarn\" || fromPkg === \"bun\" || fromPkg === \"npm\") {\n return fromPkg;\n }\n\n // npm_config_user_agent: \"pnpm/10.0.0 npm/? node/v22...\"\n const fromUA = value.trim().toLowerCase().split(\" \")[0]?.split(\"/\")[0];\n if (fromUA === \"pnpm\" || fromUA === \"yarn\" || fromUA === \"bun\" || fromUA === \"npm\") {\n return fromUA;\n }\n\n return null;\n}\n\nfunction detectPackageManagerFromPackageJson(root: string): PackageManagerName | null {\n const pkgPath = path.join(root, \"package.json\");\n if (!fs.existsSync(pkgPath)) return null;\n\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\")) as { packageManager?: string };\n return parsePackageManagerName(pkg.packageManager);\n } catch {\n return null;\n }\n}\n\n/**\n * Detect which package manager name is used.\n * Priority:\n * 1) lock files in the project\n * 2) package.json#packageManager\n * 3) invoking CLI user agent (npm_config_user_agent)\n * 4) npm fallback\n */\nexport function detectPackageManagerName(\n root: string,\n env: Record<string, string | undefined> = process.env,\n): PackageManagerName {\n if (fs.existsSync(path.join(root, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(root, \"yarn.lock\"))) return \"yarn\";\n if (\n fs.existsSync(path.join(root, \"bun.lock\")) ||\n fs.existsSync(path.join(root, \"bun.lockb\"))\n ) {\n return \"bun\";\n }\n if (\n fs.existsSync(path.join(root, \"package-lock.json\")) ||\n fs.existsSync(path.join(root, \"npm-shrinkwrap.json\"))\n ) {\n return \"npm\";\n }\n\n const fromPkg = detectPackageManagerFromPackageJson(root);\n if (fromPkg) return fromPkg;\n\n const fromUA = parsePackageManagerName(env.npm_config_user_agent);\n if (fromUA) return fromUA;\n\n return \"npm\";\n}\n\n/**\n * Detect which package manager install command to use.\n * Returns the dev-install command string (e.g. \"pnpm add -D\").\n */\nexport function detectPackageManager(root: string): string {\n const pm = detectPackageManagerName(root);\n if (pm === \"npm\") return \"npm install -D\";\n return `${pm} add -D`;\n}\n\n// ─── Vite Config Detection ───────────────────────────────────────────────────\n\n/**\n * Check if a vite.config file exists in the project root.\n */\nexport function hasViteConfig(root: string): boolean {\n return (\n fs.existsSync(path.join(root, \"vite.config.ts\")) ||\n fs.existsSync(path.join(root, \"vite.config.js\")) ||\n fs.existsSync(path.join(root, \"vite.config.mjs\"))\n );\n}\n\n/**\n * Check if the project uses App Router (has an app/ directory).\n */\nexport function hasAppDir(root: string): boolean {\n return (\n fs.existsSync(path.join(root, \"app\")) ||\n fs.existsSync(path.join(root, \"src\", \"app\"))\n );\n}\n"]}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,gFAAgF;AAEhF,kFAAkF;AAClF,MAAM,gBAAgB,GAAG;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,cAAc;IACd,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;CACd,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAExC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;QACpB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEvC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,+CAA+C;YAC/C,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1E,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAEhF;;;;;;;GAOG;AACH,SAAS,WAAW,CAAI,KAAa,EAAE,KAAgC;IACrE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACnC,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAMD,SAAS,uBAAuB,CAAC,KAAyB;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,gCAAgC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACvF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,yDAAyD;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mCAAmC,CAAC,IAAY;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAgC,CAAC;QACzF,OAAO,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACnE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9D,uEAAuE;IACvE,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACzC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAC1C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAClD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,EACpD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,OAAO,GAAG,mCAAmC,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,gBAAgB,CAAC;IAC1C,OAAO,GAAG,EAAE,SAAS,CAAC;AACxB,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,OAAe;IAC9D,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,CACL,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAChD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAChD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,CACL,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Shared project utilities — used by both `vinext init` and `vinext deploy`.\n *\n * These functions detect and modify project configuration without touching\n * any Next.js source files, config files, or tsconfig.json.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\n// ─── CJS Config Handling ─────────────────────────────────────────────────────\n\n/** Common CJS config files that may need renaming when adding \"type\": \"module\" */\nconst CJS_CONFIG_FILES = [\n \"postcss.config.js\",\n \"tailwind.config.js\",\n \".eslintrc.js\",\n \"prettier.config.js\",\n \"stylelint.config.js\",\n \"commitlint.config.js\",\n \"jest.config.js\",\n \"babel.config.js\",\n \".babelrc.js\",\n];\n\n/**\n * Ensure package.json has \"type\": \"module\".\n * Returns true if it was added (i.e. it wasn't already there).\n */\nexport function ensureESModule(root: string): boolean {\n const pkgPath = path.join(root, \"package.json\");\n if (!fs.existsSync(pkgPath)) return false;\n\n try {\n const raw = fs.readFileSync(pkgPath, \"utf-8\");\n const pkg = JSON.parse(raw);\n if (pkg.type === \"module\") return false;\n\n pkg.type = \"module\";\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\", \"utf-8\");\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Rename CJS config files (that use `module.exports`) to .cjs\n * to avoid breakage when \"type\": \"module\" is added.\n * Returns array of [oldName, newName] pairs that were renamed.\n */\nexport function renameCJSConfigs(root: string): Array<[string, string]> {\n const renamed: Array<[string, string]> = [];\n\n for (const fileName of CJS_CONFIG_FILES) {\n const filePath = path.join(root, fileName);\n if (!fs.existsSync(filePath)) continue;\n\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n // Only rename if it actually uses CJS patterns\n if (/\\bmodule\\.exports\\b/.test(content) || /\\brequire\\s*\\(/.test(content)) {\n const newName = fileName.replace(/\\.js$/, \".cjs\");\n const newPath = path.join(root, newName);\n fs.renameSync(filePath, newPath);\n renamed.push([fileName, newName]);\n }\n } catch {\n // skip unreadable files\n }\n }\n\n return renamed;\n}\n\n// ─── Ancestor Directory Walking ──────────────────────────────────────────────\n\n/**\n * Walk from `start` up to the filesystem root, calling `check` on each\n * directory. Returns the first non-null value returned by `check`, or null.\n *\n * This is the shared primitive used by both lock-file detection and\n * node_modules resolution to support monorepo layouts where the relevant\n * files live at the workspace root rather than inside each app package.\n */\nfunction walkUpUntil<T>(start: string, check: (dir: string) => T | null): T | null {\n let dir = path.resolve(start);\n const { root: fsRoot } = path.parse(dir);\n\n while (true) {\n const result = check(dir);\n if (result !== null) return result;\n if (dir === fsRoot) return null;\n dir = path.dirname(dir);\n }\n}\n\n// ─── Package Manager Detection ───────────────────────────────────────────────\n\ntype PackageManagerName = \"pnpm\" | \"yarn\" | \"bun\" | \"npm\";\n\nfunction parsePackageManagerName(value: string | undefined): PackageManagerName | null {\n if (!value) return null;\n\n // packageManager: \"pnpm@10.0.0\"\n const fromPkg = value.trim().toLowerCase().split(\"@\")[0];\n if (fromPkg === \"pnpm\" || fromPkg === \"yarn\" || fromPkg === \"bun\" || fromPkg === \"npm\") {\n return fromPkg;\n }\n\n // npm_config_user_agent: \"pnpm/10.0.0 npm/? node/v22...\"\n const fromUA = value.trim().toLowerCase().split(\" \")[0]?.split(\"/\")[0];\n if (fromUA === \"pnpm\" || fromUA === \"yarn\" || fromUA === \"bun\" || fromUA === \"npm\") {\n return fromUA;\n }\n\n return null;\n}\n\nfunction detectPackageManagerFromPackageJson(root: string): PackageManagerName | null {\n const pkgPath = path.join(root, \"package.json\");\n if (!fs.existsSync(pkgPath)) return null;\n\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\")) as { packageManager?: string };\n return parsePackageManagerName(pkg.packageManager);\n } catch {\n return null;\n }\n}\n\n/**\n * Check a single directory for lock files, returning the package manager name.\n * Used by walkUpUntil to walk ancestor directories in monorepos.\n */\nfunction checkLockFiles(dir: string): PackageManagerName | null {\n if (fs.existsSync(path.join(dir, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(dir, \"yarn.lock\"))) return \"yarn\";\n // bun.lock = text format (Bun v1.0+); bun.lockb = legacy binary format\n if (\n fs.existsSync(path.join(dir, \"bun.lock\")) ||\n fs.existsSync(path.join(dir, \"bun.lockb\"))\n ) {\n return \"bun\";\n }\n if (\n fs.existsSync(path.join(dir, \"package-lock.json\")) ||\n fs.existsSync(path.join(dir, \"npm-shrinkwrap.json\"))\n ) {\n return \"npm\";\n }\n return null;\n}\n\n/**\n * Detect which package manager name is used.\n * Priority:\n * 1) lock files (walks up parent directories for monorepo support)\n * 2) package.json#packageManager\n * 3) invoking CLI user agent (npm_config_user_agent)\n * 4) npm fallback\n */\nexport function detectPackageManagerName(\n root: string,\n env: Record<string, string | undefined> = process.env,\n): PackageManagerName {\n const fromLockFile = walkUpUntil(root, checkLockFiles);\n if (fromLockFile) return fromLockFile;\n\n const fromPkg = detectPackageManagerFromPackageJson(root);\n if (fromPkg) return fromPkg;\n\n const fromUA = parsePackageManagerName(env.npm_config_user_agent);\n if (fromUA) return fromUA;\n\n return \"npm\";\n}\n\n/**\n * Detect which package manager install command to use.\n * Returns the dev-install command string (e.g. \"pnpm add -D\").\n */\nexport function detectPackageManager(root: string): string {\n const pm = detectPackageManagerName(root);\n if (pm === \"npm\") return \"npm install -D\";\n return `${pm} add -D`;\n}\n\n// ─── Node Modules Resolution ─────────────────────────────────────────────────\n\n/**\n * Walk from `start` up to the filesystem root looking for a path inside\n * node_modules. Returns the first absolute path found, or null.\n *\n * Handles monorepos where packages are hoisted to the workspace root's\n * node_modules rather than installed in each app's own node_modules.\n *\n * @param start - Directory to begin the search (usually the project root)\n * @param subPath - Path relative to a node_modules dir, e.g. \".bin/wrangler\"\n * or \"@cloudflare/vite-plugin\"\n */\nexport function findInNodeModules(start: string, subPath: string): string | null {\n return walkUpUntil(start, (dir) => {\n const candidate = path.join(dir, \"node_modules\", subPath);\n return fs.existsSync(candidate) ? candidate : null;\n });\n}\n\n// ─── Vite Config Detection ───────────────────────────────────────────────────\n\n/**\n * Check if a vite.config file exists in the project root.\n */\nexport function hasViteConfig(root: string): boolean {\n return (\n fs.existsSync(path.join(root, \"vite.config.ts\")) ||\n fs.existsSync(path.join(root, \"vite.config.js\")) ||\n fs.existsSync(path.join(root, \"vite.config.mjs\"))\n );\n}\n\n/**\n * Check if the project uses App Router (has an app/ directory).\n */\nexport function hasAppDir(root: string): boolean {\n return (\n fs.existsSync(path.join(root, \"app\")) ||\n fs.existsSync(path.join(root, \"src\", \"app\"))\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vinext",
3
- "version": "0.0.22",
3
+ "version": "0.0.24",
4
4
  "description": "Run Next.js apps on Vite. Drop-in replacement for the next CLI.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -44,6 +44,10 @@
44
44
  "./config/config-matchers": {
45
45
  "import": "./dist/config/config-matchers.js",
46
46
  "types": "./dist/config/config-matchers.d.ts"
47
+ },
48
+ "./server/worker-utils": {
49
+ "import": "./dist/server/worker-utils.js",
50
+ "types": "./dist/server/worker-utils.d.ts"
47
51
  }
48
52
  },
49
53
  "files": [
@@ -62,6 +66,7 @@
62
66
  "dependencies": {
63
67
  "@unpic/react": "^1.0.2",
64
68
  "@vercel/og": "^0.8.6",
69
+ "@vitejs/plugin-react": "^5.1.4",
65
70
  "@vitejs/plugin-rsc": "^0.5.19",
66
71
  "magic-string": "^0.30.21",
67
72
  "react-server-dom-webpack": "^19.2.4",