@tanstack/start-plugin-core 1.121.0-alpha.5 → 1.121.0-alpha.7

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 (59) hide show
  1. package/dist/cjs/build-sitemap.cjs +136 -0
  2. package/dist/cjs/build-sitemap.cjs.map +1 -0
  3. package/dist/cjs/build-sitemap.d.cts +31 -0
  4. package/dist/cjs/index.cjs +2 -0
  5. package/dist/cjs/index.cjs.map +1 -1
  6. package/dist/cjs/index.d.cts +1 -0
  7. package/dist/cjs/nitro/nitro-plugin.cjs +9 -0
  8. package/dist/cjs/nitro/nitro-plugin.cjs.map +1 -1
  9. package/dist/cjs/plugin.cjs +3 -3
  10. package/dist/cjs/plugin.cjs.map +1 -1
  11. package/dist/cjs/plugin.d.cts +88 -481
  12. package/dist/cjs/prerender.cjs +1 -7
  13. package/dist/cjs/prerender.cjs.map +1 -1
  14. package/dist/cjs/routesManifestPlugin.cjs +6 -3
  15. package/dist/cjs/routesManifestPlugin.cjs.map +1 -1
  16. package/dist/cjs/schema.cjs +5 -3
  17. package/dist/cjs/schema.cjs.map +1 -1
  18. package/dist/cjs/schema.d.cts +490 -1601
  19. package/dist/cjs/start-server-routes-plugin/plugin.cjs +2 -1
  20. package/dist/cjs/start-server-routes-plugin/plugin.cjs.map +1 -1
  21. package/dist/cjs/utils.cjs +7 -0
  22. package/dist/cjs/utils.cjs.map +1 -0
  23. package/dist/cjs/utils.d.cts +1 -0
  24. package/dist/esm/build-sitemap.d.ts +31 -0
  25. package/dist/esm/build-sitemap.js +136 -0
  26. package/dist/esm/build-sitemap.js.map +1 -0
  27. package/dist/esm/index.d.ts +1 -0
  28. package/dist/esm/index.js +3 -1
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/nitro/nitro-plugin.js +9 -0
  31. package/dist/esm/nitro/nitro-plugin.js.map +1 -1
  32. package/dist/esm/plugin.d.ts +88 -481
  33. package/dist/esm/plugin.js +3 -3
  34. package/dist/esm/plugin.js.map +1 -1
  35. package/dist/esm/prerender.js +1 -7
  36. package/dist/esm/prerender.js.map +1 -1
  37. package/dist/esm/routesManifestPlugin.js +6 -3
  38. package/dist/esm/routesManifestPlugin.js.map +1 -1
  39. package/dist/esm/schema.d.ts +490 -1601
  40. package/dist/esm/schema.js +5 -3
  41. package/dist/esm/schema.js.map +1 -1
  42. package/dist/esm/start-server-routes-plugin/plugin.js +2 -1
  43. package/dist/esm/start-server-routes-plugin/plugin.js.map +1 -1
  44. package/dist/esm/utils.d.ts +1 -0
  45. package/dist/esm/utils.js +7 -0
  46. package/dist/esm/utils.js.map +1 -0
  47. package/package.json +3 -3
  48. package/src/build-sitemap.ts +210 -0
  49. package/src/index.ts +1 -0
  50. package/src/nitro/nitro-plugin.ts +9 -13
  51. package/src/plugin.ts +3 -3
  52. package/src/prerender.ts +1 -9
  53. package/src/routesManifestPlugin.ts +7 -3
  54. package/src/schema.ts +5 -6
  55. package/src/start-server-routes-plugin/plugin.ts +2 -1
  56. package/src/utils.ts +3 -0
  57. package/dist/cjs/nitro/build-sitemap.d.cts +0 -9
  58. package/dist/esm/nitro/build-sitemap.d.ts +0 -9
  59. package/src/nitro/build-sitemap.ts +0 -79
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const fs = require("node:fs");
4
+ const path = require("node:path");
5
+ const xmlbuilder2 = require("xmlbuilder2");
6
+ function buildSitemapJson(pages, host) {
7
+ const slash = checkSlash(host);
8
+ const urls = pages.filter((page) => {
9
+ var _a;
10
+ return ((_a = page.sitemap) == null ? void 0 : _a.exclude) !== true;
11
+ }).map((page) => {
12
+ var _a, _b, _c, _d, _e, _f;
13
+ return {
14
+ loc: `${host}${slash}${page.path.replace(/^\/+/g, "")}`,
15
+ lastmod: ((_a = page.sitemap) == null ? void 0 : _a.lastmod) ? new Date(page.sitemap.lastmod).toISOString().split("T")[0] : (/* @__PURE__ */ new Date()).toISOString().split("T")[0],
16
+ priority: (_b = page.sitemap) == null ? void 0 : _b.priority,
17
+ changefreq: (_c = page.sitemap) == null ? void 0 : _c.changefreq,
18
+ alternateRefs: (_d = page.sitemap) == null ? void 0 : _d.alternateRefs,
19
+ images: (_e = page.sitemap) == null ? void 0 : _e.images,
20
+ news: (_f = page.sitemap) == null ? void 0 : _f.news
21
+ };
22
+ });
23
+ return { urls };
24
+ }
25
+ function jsonToXml(sitemapData) {
26
+ var _a, _b;
27
+ const sitemap = createXml("urlset");
28
+ for (const item of sitemapData.urls) {
29
+ const page = sitemap.ele("url");
30
+ page.ele("loc").txt(item.loc);
31
+ page.ele("lastmod").txt(item.lastmod);
32
+ if (item.priority !== void 0) {
33
+ page.ele("priority").txt(item.priority.toString());
34
+ }
35
+ if (item.changefreq) {
36
+ page.ele("changefreq").txt(item.changefreq);
37
+ }
38
+ if ((_a = item.alternateRefs) == null ? void 0 : _a.length) {
39
+ for (const ref of item.alternateRefs) {
40
+ const alternateRef = page.ele("xhtml:link");
41
+ alternateRef.att("rel", "alternate");
42
+ alternateRef.att("href", ref.href);
43
+ if (ref.hreflang) {
44
+ alternateRef.att("hreflang", ref.hreflang);
45
+ }
46
+ }
47
+ }
48
+ if ((_b = item.images) == null ? void 0 : _b.length) {
49
+ for (const image of item.images) {
50
+ const imageElement = page.ele("image:image");
51
+ imageElement.ele("image:loc").txt(image.loc);
52
+ if (image.title) {
53
+ imageElement.ele("image:title").txt(image.title);
54
+ }
55
+ if (image.caption) {
56
+ imageElement.ele("image:caption").txt(image.caption);
57
+ }
58
+ }
59
+ }
60
+ if (item.news) {
61
+ const newsElement = page.ele("news:news");
62
+ const publication = newsElement.ele("news:publication");
63
+ publication.ele("news:name").txt(item.news.publication.name);
64
+ publication.ele("news:language").txt(item.news.publication.language);
65
+ newsElement.ele("news:publication_date").txt(new Date(item.news.publicationDate).toISOString().split("T")[0]);
66
+ newsElement.ele("news:title").txt(item.news.title);
67
+ }
68
+ }
69
+ return sitemap.end({ prettyPrint: true });
70
+ }
71
+ async function buildSitemap({
72
+ options,
73
+ publicDir
74
+ }) {
75
+ let sitemapOptions = options.sitemap;
76
+ if (!sitemapOptions && options.pages.length) {
77
+ sitemapOptions = { enabled: true, outputPath: "sitemap.xml" };
78
+ }
79
+ if (!(sitemapOptions == null ? void 0 : sitemapOptions.enabled)) {
80
+ throw new Error("Sitemap is not enabled");
81
+ }
82
+ const { host, outputPath } = sitemapOptions;
83
+ if (!host) {
84
+ if (!options.sitemap) {
85
+ console.info(
86
+ "Hint: Pages found, but no sitemap host has been set. To enable sitemap generation, set the `sitemap.host` option."
87
+ );
88
+ return;
89
+ }
90
+ throw new Error(
91
+ "Sitemap host is not set and required to build the sitemap."
92
+ );
93
+ }
94
+ if (!outputPath) {
95
+ throw new Error("Sitemap output path is not set");
96
+ }
97
+ const { pages } = options;
98
+ if (!pages.length) {
99
+ console.log("No pages were found to build the sitemap. Skipping...");
100
+ return;
101
+ }
102
+ console.log("Building Sitemap...");
103
+ const sitemapData = buildSitemapJson(pages, host);
104
+ const xmlOutputPath = path.join(publicDir, outputPath);
105
+ const pagesOutputPath = path.join(publicDir, "pages.json");
106
+ try {
107
+ console.log(`Writing sitemap XML at ${xmlOutputPath}`);
108
+ fs.writeFileSync(xmlOutputPath, jsonToXml(sitemapData));
109
+ console.log(`Writing pages data at ${pagesOutputPath}`);
110
+ fs.writeFileSync(
111
+ pagesOutputPath,
112
+ JSON.stringify(
113
+ {
114
+ pages,
115
+ host,
116
+ lastBuilt: (/* @__PURE__ */ new Date()).toISOString()
117
+ },
118
+ null,
119
+ 2
120
+ )
121
+ );
122
+ } catch (e) {
123
+ console.error(`Unable to write sitemap files`, e);
124
+ }
125
+ }
126
+ function createXml(elementName) {
127
+ return xmlbuilder2.create({ version: "1.0", encoding: "UTF-8" }).ele(elementName, {
128
+ xmlns: "https://www.sitemaps.org/schemas/sitemap/0.9"
129
+ }).com(`This file was automatically generated by TanStack Start.`);
130
+ }
131
+ function checkSlash(host) {
132
+ const finalChar = host.slice(-1);
133
+ return finalChar === "/" ? "" : "/";
134
+ }
135
+ exports.buildSitemap = buildSitemap;
136
+ //# sourceMappingURL=build-sitemap.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-sitemap.cjs","sources":["../../src/build-sitemap.ts"],"sourcesContent":["import { writeFileSync } from 'node:fs'\nimport path from 'node:path'\nimport { create } from 'xmlbuilder2'\nimport type { TanStackStartOutputConfig } from './plugin'\nimport type { XMLBuilder } from 'xmlbuilder2/lib/interfaces'\n\nexport type SitemapUrl = {\n loc: string\n lastmod: string\n priority?: number\n changefreq?:\n | 'always'\n | 'hourly'\n | 'daily'\n | 'weekly'\n | 'monthly'\n | 'yearly'\n | 'never'\n alternateRefs?: Array<{\n href: string\n hreflang?: string\n }>\n images?: Array<{\n loc: string\n title?: string\n caption?: string\n }>\n news?: {\n publication: {\n name: string\n language: string\n }\n publicationDate: string | Date\n title: string\n }\n}\n\nexport type SitemapData = {\n urls: Array<SitemapUrl>\n}\n\nfunction buildSitemapJson(\n pages: TanStackStartOutputConfig['pages'],\n host: string,\n): SitemapData {\n const slash = checkSlash(host)\n\n const urls: Array<SitemapUrl> = pages\n .filter((page) => {\n return page.sitemap?.exclude !== true\n })\n .map((page) => ({\n loc: `${host}${slash}${page.path.replace(/^\\/+/g, '')}`,\n lastmod: page.sitemap?.lastmod\n ? new Date(page.sitemap.lastmod).toISOString().split('T')[0]!\n : new Date().toISOString().split('T')[0]!,\n priority: page.sitemap?.priority,\n changefreq: page.sitemap?.changefreq,\n alternateRefs: page.sitemap?.alternateRefs,\n images: page.sitemap?.images,\n news: page.sitemap?.news,\n }))\n\n return { urls }\n}\n\nfunction jsonToXml(sitemapData: SitemapData): string {\n const sitemap = createXml('urlset')\n\n for (const item of sitemapData.urls) {\n const page = sitemap.ele('url')\n page.ele('loc').txt(item.loc)\n page.ele('lastmod').txt(item.lastmod)\n\n if (item.priority !== undefined) {\n page.ele('priority').txt(item.priority.toString())\n }\n if (item.changefreq) {\n page.ele('changefreq').txt(item.changefreq)\n }\n\n // Add alternate references\n if (item.alternateRefs?.length) {\n for (const ref of item.alternateRefs) {\n const alternateRef = page.ele('xhtml:link')\n alternateRef.att('rel', 'alternate')\n alternateRef.att('href', ref.href)\n if (ref.hreflang) {\n alternateRef.att('hreflang', ref.hreflang)\n }\n }\n }\n\n // Add images\n if (item.images?.length) {\n for (const image of item.images) {\n const imageElement = page.ele('image:image')\n imageElement.ele('image:loc').txt(image.loc)\n if (image.title) {\n imageElement.ele('image:title').txt(image.title)\n }\n if (image.caption) {\n imageElement.ele('image:caption').txt(image.caption)\n }\n }\n }\n\n // Add news\n if (item.news) {\n const newsElement = page.ele('news:news')\n const publication = newsElement.ele('news:publication')\n publication.ele('news:name').txt(item.news.publication.name)\n publication.ele('news:language').txt(item.news.publication.language)\n newsElement\n .ele('news:publication_date')\n .txt(new Date(item.news.publicationDate).toISOString().split('T')[0]!)\n newsElement.ele('news:title').txt(item.news.title)\n }\n }\n\n return sitemap.end({ prettyPrint: true })\n}\n\nexport async function buildSitemap({\n options,\n publicDir,\n}: {\n options: TanStackStartOutputConfig\n publicDir: string\n}) {\n let sitemapOptions = options.sitemap\n\n if (!sitemapOptions && options.pages.length) {\n sitemapOptions = { enabled: true, outputPath: 'sitemap.xml' }\n }\n\n if (!sitemapOptions?.enabled) {\n throw new Error('Sitemap is not enabled')\n }\n\n const { host, outputPath } = sitemapOptions\n\n if (!host) {\n if (!options.sitemap) {\n console.info(\n 'Hint: Pages found, but no sitemap host has been set. To enable sitemap generation, set the `sitemap.host` option.',\n )\n return\n }\n throw new Error(\n 'Sitemap host is not set and required to build the sitemap.',\n )\n }\n\n if (!outputPath) {\n throw new Error('Sitemap output path is not set')\n }\n\n const { pages } = options\n\n if (!pages.length) {\n console.log('No pages were found to build the sitemap. Skipping...')\n return\n }\n\n console.log('Building Sitemap...')\n\n // Build the sitemap data\n const sitemapData = buildSitemapJson(pages, host)\n\n // Generate output paths\n const xmlOutputPath = path.join(publicDir, outputPath)\n const pagesOutputPath = path.join(publicDir, 'pages.json')\n\n try {\n // Write XML sitemap\n console.log(`Writing sitemap XML at ${xmlOutputPath}`)\n writeFileSync(xmlOutputPath, jsonToXml(sitemapData))\n\n // Write pages data for runtime use\n console.log(`Writing pages data at ${pagesOutputPath}`)\n writeFileSync(\n pagesOutputPath,\n JSON.stringify(\n {\n pages,\n host,\n lastBuilt: new Date().toISOString(),\n },\n null,\n 2,\n ),\n )\n } catch (e) {\n console.error(`Unable to write sitemap files`, e)\n }\n}\n\nfunction createXml(elementName: 'urlset' | 'sitemapindex'): XMLBuilder {\n return create({ version: '1.0', encoding: 'UTF-8' })\n .ele(elementName, {\n xmlns: 'https://www.sitemaps.org/schemas/sitemap/0.9',\n })\n .com(`This file was automatically generated by TanStack Start.`)\n}\n\nfunction checkSlash(host: string): string {\n const finalChar = host.slice(-1)\n return finalChar === '/' ? '' : '/'\n}\n"],"names":["writeFileSync","create"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { TanStackStartOutputConfig } from './plugin.cjs';
2
+ export type SitemapUrl = {
3
+ loc: string;
4
+ lastmod: string;
5
+ priority?: number;
6
+ changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
7
+ alternateRefs?: Array<{
8
+ href: string;
9
+ hreflang?: string;
10
+ }>;
11
+ images?: Array<{
12
+ loc: string;
13
+ title?: string;
14
+ caption?: string;
15
+ }>;
16
+ news?: {
17
+ publication: {
18
+ name: string;
19
+ language: string;
20
+ };
21
+ publicationDate: string | Date;
22
+ title: string;
23
+ };
24
+ };
25
+ export type SitemapData = {
26
+ urls: Array<SitemapUrl>;
27
+ };
28
+ export declare function buildSitemap({ options, publicDir, }: {
29
+ options: TanStackStartOutputConfig;
30
+ publicDir: string;
31
+ }): Promise<void>;
@@ -2,8 +2,10 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const schema = require("./schema.cjs");
4
4
  const plugin = require("./plugin.cjs");
5
+ const utils = require("./utils.cjs");
5
6
  exports.createTanStackConfig = schema.createTanStackConfig;
6
7
  exports.createTanStackStartOptionsSchema = schema.createTanStackStartOptionsSchema;
7
8
  exports.pageSchema = schema.pageSchema;
8
9
  exports.TanStackStartVitePluginCore = plugin.TanStackStartVitePluginCore;
10
+ exports.resolveViteId = utils.resolveViteId;
9
11
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,2 +1,3 @@
1
1
  export { createTanStackConfig, createTanStackStartOptionsSchema, pageSchema, } from './schema.cjs';
2
2
  export { TanStackStartVitePluginCore } from './plugin.cjs';
3
+ export { resolveViteId } from './utils.cjs';
@@ -7,6 +7,7 @@ const pathe = require("pathe");
7
7
  const plugin = require("../plugin.cjs");
8
8
  const prerender = require("../prerender.cjs");
9
9
  const constants = require("../constants.cjs");
10
+ const buildSitemap = require("../build-sitemap.cjs");
10
11
  const devServerPlugin = require("./dev-server-plugin.cjs");
11
12
  const buildNitro = require("./build-nitro.cjs");
12
13
  function nitroPlugin(options, getSsrBundle) {
@@ -108,6 +109,14 @@ function nitroPlugin(options, getSsrBundle) {
108
109
  builder
109
110
  });
110
111
  }
112
+ if (options.pages.length) {
113
+ await buildSitemap.buildSitemap({
114
+ options,
115
+ publicDir: nitro.options.output.publicDir
116
+ });
117
+ }
118
+ console.log(`
119
+ ✅ Client and server bundles successfully built.`);
111
120
  }
112
121
  }
113
122
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nitro-plugin.cjs","sources":["../../../src/nitro/nitro-plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { rmSync } from 'node:fs'\nimport { build, createNitro } from 'nitropack'\nimport { dirname, resolve } from 'pathe'\nimport { clientDistDir, ssrEntryFile } from '../plugin'\nimport { prerender } from '../prerender'\nimport { VITE_ENVIRONMENT_NAMES } from '../constants'\nimport { devServerPlugin } from './dev-server-plugin'\nimport { buildNitroEnvironment } from './build-nitro'\nimport type { EnvironmentOptions, PluginOption, Rollup } from 'vite'\nimport type { NitroConfig } from 'nitropack'\nimport type { TanStackStartOutputConfig } from '../plugin'\n\nexport function nitroPlugin(\n options: TanStackStartOutputConfig,\n getSsrBundle: () => Rollup.OutputBundle,\n): Array<PluginOption> {\n const buildPreset =\n process.env['START_TARGET'] ?? (options.target as string | undefined)\n\n return [\n devServerPlugin(),\n {\n name: 'tanstack-vite-plugin-nitro',\n configEnvironment(name) {\n if (name === VITE_ENVIRONMENT_NAMES.server) {\n return {\n build: {\n commonjsOptions: {\n include: [],\n },\n ssr: true,\n sourcemap: true,\n rollupOptions: {\n input: '/~start/server-entry',\n },\n },\n } satisfies EnvironmentOptions\n }\n\n return null\n },\n config() {\n return {\n builder: {\n sharedPlugins: true,\n async buildApp(builder) {\n const clientEnv =\n builder.environments[VITE_ENVIRONMENT_NAMES.client]\n const serverEnv =\n builder.environments[VITE_ENVIRONMENT_NAMES.server]\n\n if (!clientEnv) {\n throw new Error('Client environment not found')\n }\n\n if (!serverEnv) {\n throw new Error('SSR environment not found')\n }\n\n const clientOutputDir = resolve(options.root, clientDistDir)\n rmSync(clientOutputDir, { recursive: true, force: true })\n await builder.build(clientEnv)\n\n await builder.build(serverEnv)\n\n const nitroConfig: NitroConfig = {\n dev: false,\n // TODO do we need this? should this be made configurable?\n compatibilityDate: '2024-11-19',\n logLevel: 3,\n preset: buildPreset,\n publicAssets: [\n {\n dir: path.resolve(options.root, clientDistDir),\n },\n ],\n typescript: {\n generateTsConfig: false,\n },\n prerender: undefined,\n renderer: ssrEntryFile,\n rollupConfig: {\n plugins: [virtualBundlePlugin(getSsrBundle())],\n },\n }\n\n const nitro = await createNitro(nitroConfig)\n\n await buildNitroEnvironment(nitro, () => build(nitro))\n\n // If the user has not set a prerender option, we need to set it to true\n // if the pages array is not empty and has sub options requiring for prerendering\n if (options.prerender?.enabled !== false) {\n options.prerender = {\n ...options.prerender,\n enabled: options.pages.some((d) =>\n typeof d === 'string' ? false : !!d.prerender?.enabled,\n ),\n }\n }\n\n // Setup the options for prerendering the SPA shell (i.e `src/routes/__root.tsx`)\n if (options.spa?.enabled) {\n options.prerender = {\n ...options.prerender,\n enabled: true,\n }\n\n const maskUrl = new URL(\n options.spa.maskPath,\n 'http://localhost',\n )\n\n maskUrl.searchParams.set('__TSS_SHELL', 'true')\n\n options.pages.push({\n path: maskUrl.toString().replace('http://localhost', ''),\n prerender: options.spa.prerender,\n sitemap: {\n exclude: true,\n },\n })\n }\n\n // Start prerendering!!!\n if (options.prerender.enabled) {\n await prerender({\n options,\n nitro,\n builder,\n })\n }\n\n // if (nitroConfig.prerender?.routes?.length && options.sitemap) {\n // console.log('Building Sitemap...')\n // // sitemap needs to be built after all directories are built\n // await buildSitemap({\n // host: options.sitemap.host,\n // routes: nitroConfig.prerender.routes,\n // outputDir: resolve(options.root, 'dist/public'),\n // })\n // }\n\n // console.log(\n // `\\n\\n✅ Client and server bundles successfully built.`,\n // )\n },\n },\n }\n },\n },\n ]\n}\n\nfunction virtualBundlePlugin(ssrBundle: Rollup.OutputBundle): Rollup.Plugin {\n type VirtualModule = { code: string; map: string | null }\n const _modules = new Map<string, VirtualModule>()\n\n // group chunks and source maps\n for (const [fileName, content] of Object.entries(ssrBundle)) {\n if (content.type === 'chunk') {\n const virtualModule: VirtualModule = {\n code: content.code,\n map: null,\n }\n const maybeMap = ssrBundle[`${fileName}.map`]\n if (maybeMap && maybeMap.type === 'asset') {\n virtualModule.map = maybeMap.source as string\n }\n _modules.set(fileName, virtualModule)\n _modules.set(resolve(fileName), virtualModule)\n }\n }\n\n return {\n name: 'virtual-bundle',\n resolveId(id, importer) {\n if (_modules.has(id)) {\n return resolve(id)\n }\n\n if (importer) {\n const resolved = resolve(dirname(importer), id)\n if (_modules.has(resolved)) {\n return resolved\n }\n }\n return null\n },\n load(id) {\n const m = _modules.get(id)\n if (!m) {\n return null\n }\n return m\n },\n }\n}\n"],"names":["devServerPlugin","VITE_ENVIRONMENT_NAMES","resolve","clientDistDir","rmSync","ssrEntryFile","createNitro","buildNitroEnvironment","build","_a","prerender","dirname"],"mappings":"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"}
1
+ {"version":3,"file":"nitro-plugin.cjs","sources":["../../../src/nitro/nitro-plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { rmSync } from 'node:fs'\nimport { build, createNitro } from 'nitropack'\nimport { dirname, resolve } from 'pathe'\nimport { clientDistDir, ssrEntryFile } from '../plugin'\nimport { prerender } from '../prerender'\nimport { VITE_ENVIRONMENT_NAMES } from '../constants'\nimport { buildSitemap } from '../build-sitemap'\nimport { devServerPlugin } from './dev-server-plugin'\nimport { buildNitroEnvironment } from './build-nitro'\nimport type { EnvironmentOptions, PluginOption, Rollup } from 'vite'\nimport type { NitroConfig } from 'nitropack'\nimport type { TanStackStartOutputConfig } from '../plugin'\n\nexport function nitroPlugin(\n options: TanStackStartOutputConfig,\n getSsrBundle: () => Rollup.OutputBundle,\n): Array<PluginOption> {\n const buildPreset =\n process.env['START_TARGET'] ?? (options.target as string | undefined)\n\n return [\n devServerPlugin(),\n {\n name: 'tanstack-vite-plugin-nitro',\n configEnvironment(name) {\n if (name === VITE_ENVIRONMENT_NAMES.server) {\n return {\n build: {\n commonjsOptions: {\n include: [],\n },\n ssr: true,\n sourcemap: true,\n rollupOptions: {\n input: '/~start/server-entry',\n },\n },\n } satisfies EnvironmentOptions\n }\n\n return null\n },\n config() {\n return {\n builder: {\n sharedPlugins: true,\n async buildApp(builder) {\n const clientEnv =\n builder.environments[VITE_ENVIRONMENT_NAMES.client]\n const serverEnv =\n builder.environments[VITE_ENVIRONMENT_NAMES.server]\n\n if (!clientEnv) {\n throw new Error('Client environment not found')\n }\n\n if (!serverEnv) {\n throw new Error('SSR environment not found')\n }\n\n const clientOutputDir = resolve(options.root, clientDistDir)\n rmSync(clientOutputDir, { recursive: true, force: true })\n await builder.build(clientEnv)\n\n await builder.build(serverEnv)\n\n const nitroConfig: NitroConfig = {\n dev: false,\n // TODO do we need this? should this be made configurable?\n compatibilityDate: '2024-11-19',\n logLevel: 3,\n preset: buildPreset,\n publicAssets: [\n {\n dir: path.resolve(options.root, clientDistDir),\n },\n ],\n typescript: {\n generateTsConfig: false,\n },\n prerender: undefined,\n renderer: ssrEntryFile,\n rollupConfig: {\n plugins: [virtualBundlePlugin(getSsrBundle())],\n },\n }\n\n const nitro = await createNitro(nitroConfig)\n\n await buildNitroEnvironment(nitro, () => build(nitro))\n\n // If the user has not set a prerender option, we need to set it to true\n // if the pages array is not empty and has sub options requiring for prerendering\n if (options.prerender?.enabled !== false) {\n options.prerender = {\n ...options.prerender,\n enabled: options.pages.some((d) =>\n typeof d === 'string' ? false : !!d.prerender?.enabled,\n ),\n }\n }\n\n // Setup the options for prerendering the SPA shell (i.e `src/routes/__root.tsx`)\n if (options.spa?.enabled) {\n options.prerender = {\n ...options.prerender,\n enabled: true,\n }\n\n const maskUrl = new URL(\n options.spa.maskPath,\n 'http://localhost',\n )\n\n maskUrl.searchParams.set('__TSS_SHELL', 'true')\n\n options.pages.push({\n path: maskUrl.toString().replace('http://localhost', ''),\n prerender: options.spa.prerender,\n sitemap: {\n exclude: true,\n },\n })\n }\n\n // Start prerendering!!!\n if (options.prerender.enabled) {\n await prerender({\n options,\n nitro,\n builder,\n })\n }\n\n if (options.pages.length) {\n await buildSitemap({\n options,\n publicDir: nitro.options.output.publicDir,\n })\n }\n\n console.log(`\\n✅ Client and server bundles successfully built.`)\n },\n },\n }\n },\n },\n ]\n}\n\nfunction virtualBundlePlugin(ssrBundle: Rollup.OutputBundle): Rollup.Plugin {\n type VirtualModule = { code: string; map: string | null }\n const _modules = new Map<string, VirtualModule>()\n\n // group chunks and source maps\n for (const [fileName, content] of Object.entries(ssrBundle)) {\n if (content.type === 'chunk') {\n const virtualModule: VirtualModule = {\n code: content.code,\n map: null,\n }\n const maybeMap = ssrBundle[`${fileName}.map`]\n if (maybeMap && maybeMap.type === 'asset') {\n virtualModule.map = maybeMap.source as string\n }\n _modules.set(fileName, virtualModule)\n _modules.set(resolve(fileName), virtualModule)\n }\n }\n\n return {\n name: 'virtual-bundle',\n resolveId(id, importer) {\n if (_modules.has(id)) {\n return resolve(id)\n }\n\n if (importer) {\n const resolved = resolve(dirname(importer), id)\n if (_modules.has(resolved)) {\n return resolved\n }\n }\n return null\n },\n load(id) {\n const m = _modules.get(id)\n if (!m) {\n return null\n }\n return m\n },\n }\n}\n"],"names":["devServerPlugin","VITE_ENVIRONMENT_NAMES","resolve","clientDistDir","rmSync","ssrEntryFile","createNitro","buildNitroEnvironment","build","_a","prerender","buildSitemap","dirname"],"mappings":"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"}
@@ -119,8 +119,8 @@ function TanStackStartVitePluginCore(opts, startConfig) {
119
119
  "@tanstack/start-router-manifest",
120
120
  "@tanstack/start-config",
121
121
  "@tanstack/server-functions-plugin",
122
- "tanstack:start-manifest",
123
- "tanstack:server-fn-manifest",
122
+ "tanstack-start-router-manifest:v",
123
+ "tanstack-start-server-fn-manifest:v",
124
124
  "nitropack",
125
125
  "@tanstack/**"
126
126
  ]
@@ -145,7 +145,7 @@ function TanStackStartVitePluginCore(opts, startConfig) {
145
145
  serverFunctionsPlugin.TanStackServerFnPluginEnv({
146
146
  // This is the ID that will be available to look up and import
147
147
  // our server function manifest and resolve its module
148
- manifestVirtualImportId: "tanstack:server-fn-manifest",
148
+ manifestVirtualImportId: "tanstack-start-server-fn-manifest:v",
149
149
  client: {
150
150
  getRuntimeCode: () => `import { createClientRpc } from '@tanstack/${opts.framework}-start/server-functions-client'`,
151
151
  replacer: (d) => `createClientRpc('${d.functionId}', '${startConfig.serverFns.base}')`,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs","sources":["../../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createNitro } from 'nitropack'\nimport { tanstackRouter } from '@tanstack/router-plugin/vite'\nimport { TanStackServerFnPluginEnv } from '@tanstack/server-functions-plugin'\nimport * as vite from 'vite'\nimport {\n createTanStackConfig,\n createTanStackStartOptionsSchema,\n} from './schema'\nimport { nitroPlugin } from './nitro/nitro-plugin'\nimport { startManifestPlugin } from './routesManifestPlugin'\nimport { TanStackStartCompilerPlugin } from './start-compiler-plugin'\nimport { VITE_ENVIRONMENT_NAMES } from './constants'\nimport { TanStackStartServerRoutesVite } from './start-server-routes-plugin/plugin'\nimport type { PluginOption, Rollup } from 'vite'\nimport type { z } from 'zod'\nimport type { CompileStartFrameworkOptions } from './compilers'\n\nconst TanStackStartOptionsSchema = createTanStackStartOptionsSchema()\nexport type TanStackStartInputConfig = z.input<\n typeof TanStackStartOptionsSchema\n>\n\nconst defaultConfig = createTanStackConfig()\nexport function getTanStackStartOptions(opts?: TanStackStartInputConfig) {\n return defaultConfig.parse(opts)\n}\n\nexport type TanStackStartOutputConfig = ReturnType<\n typeof getTanStackStartOptions\n>\n\nexport const clientDistDir = '.tanstack-start/build/client-dist'\nexport const ssrEntryFile = 'ssr.mjs'\n\nexport interface TanStackStartVitePluginCoreOptions {\n framework: CompileStartFrameworkOptions\n}\n// this needs to live outside of the TanStackStartVitePluginCore since it will be invoked multiple times by vite\nlet ssrBundle: Rollup.OutputBundle\n\nexport function TanStackStartVitePluginCore(\n opts: TanStackStartVitePluginCoreOptions,\n startConfig: TanStackStartOutputConfig,\n): Array<PluginOption> {\n return [\n tanstackRouter({\n verboseFileRoutes: false,\n ...startConfig.tsr,\n target: opts.framework,\n enableRouteGeneration: true,\n autoCodeSplitting: true,\n }),\n {\n name: 'tanstack-start-core:config-client',\n async config() {\n const nitroOutputPublicDir = await (async () => {\n // Create a dummy nitro app to get the resolved public output path\n const dummyNitroApp = await createNitro({\n preset: startConfig.target,\n compatibilityDate: '2024-12-01',\n })\n\n const nitroOutputPublicDir = dummyNitroApp.options.output.publicDir\n await dummyNitroApp.close()\n\n return nitroOutputPublicDir\n })()\n\n const getClientEntryPath = (startConfig: TanStackStartOutputConfig) => {\n // when the user specifies a custom client entry path, we need to resolve it\n // relative to the root of the project, keeping in mind that if not specified\n // it will be /~start/default-client-entry which is a virtual path\n // that is resolved by vite to the actual client entry path\n const entry = startConfig.clientEntryPath.startsWith(\n '/~start/default-client-entry',\n )\n ? startConfig.clientEntryPath\n : vite.normalizePath(\n path.resolve(startConfig.root, startConfig.clientEntryPath),\n )\n\n return entry\n }\n\n return {\n environments: {\n [VITE_ENVIRONMENT_NAMES.client]: {\n consumer: 'client',\n build: {\n manifest: true,\n rollupOptions: {\n input: {\n main: getClientEntryPath(startConfig),\n },\n output: {\n dir: path.resolve(startConfig.root, clientDistDir),\n },\n // TODO this should be removed\n external: ['node:fs', 'node:path', 'node:os', 'node:crypto'],\n },\n },\n },\n [VITE_ENVIRONMENT_NAMES.server]: {\n consumer: 'server',\n build: {\n ssr: true,\n // we don't write to the file system as the below 'capture-output' plugin will\n // capture the output and write it to the virtual file system\n write: false,\n copyPublicDir: false,\n rollupOptions: {\n output: {\n entryFileNames: ssrEntryFile,\n },\n plugins: [\n {\n name: 'capture-output',\n generateBundle(options, bundle) {\n // TODO can this hook be called more than once?\n ssrBundle = bundle\n },\n },\n ],\n },\n commonjsOptions: {\n include: [/node_modules/],\n },\n },\n },\n },\n resolve: {\n noExternal: [\n '@tanstack/start-client',\n '@tanstack/start-client-core',\n '@tanstack/start-server',\n '@tanstack/start-server-core',\n '@tanstack/start-server-functions-fetcher',\n '@tanstack/start-server-functions-client',\n '@tanstack/start-server-functions-server',\n '@tanstack/start-router-manifest',\n '@tanstack/start-config',\n '@tanstack/server-functions-plugin',\n 'tanstack:start-manifest',\n 'tanstack:server-fn-manifest',\n 'nitropack',\n '@tanstack/**',\n ],\n },\n /* prettier-ignore */\n define: {\n ...injectDefineEnv('TSS_PUBLIC_BASE', startConfig.public.base),\n ...injectDefineEnv('TSS_CLIENT_BASE', startConfig.client.base),\n ...injectDefineEnv('TSS_CLIENT_ENTRY', getClientEntryPath(startConfig)), // This is consumed by the router-manifest, where the entry point is imported after the dev refresh runtime is resolved\n ...injectDefineEnv('TSS_SERVER_FN_BASE', startConfig.serverFns.base),\n ...injectDefineEnv('TSS_OUTPUT_PUBLIC_DIR', nitroOutputPublicDir),\n },\n }\n },\n },\n // N.B. TanStackStartCompilerPlugin must be before the TanStackServerFnPluginEnv\n TanStackStartCompilerPlugin(opts.framework, {\n client: { envName: VITE_ENVIRONMENT_NAMES.client },\n server: { envName: VITE_ENVIRONMENT_NAMES.server },\n }),\n TanStackServerFnPluginEnv({\n // This is the ID that will be available to look up and import\n // our server function manifest and resolve its module\n manifestVirtualImportId: 'tanstack:server-fn-manifest',\n client: {\n getRuntimeCode: () =>\n `import { createClientRpc } from '@tanstack/${opts.framework}-start/server-functions-client'`,\n replacer: (d) =>\n `createClientRpc('${d.functionId}', '${startConfig.serverFns.base}')`,\n envName: VITE_ENVIRONMENT_NAMES.client,\n },\n server: {\n getRuntimeCode: () =>\n `import { createServerRpc } from '@tanstack/${opts.framework}-start/server-functions-server'`,\n replacer: (d) =>\n `createServerRpc('${d.functionId}', '${startConfig.serverFns.base}', ${d.fn})`,\n envName: VITE_ENVIRONMENT_NAMES.server,\n },\n importer: (fn) => {\n const serverEnv = (globalThis as any).viteDevServer.environments[\n VITE_ENVIRONMENT_NAMES.server\n ]\n if (!serverEnv) {\n throw new Error(`'ssr' vite dev environment not found`)\n }\n return serverEnv.runner.import(fn.extractedFilename)\n },\n }),\n startManifestPlugin(startConfig),\n nitroPlugin(startConfig, () => ssrBundle),\n TanStackStartServerRoutesVite({\n ...startConfig.tsr,\n target: opts.framework,\n }),\n ]\n}\n\nfunction injectDefineEnv<TKey extends string, TValue extends string>(\n key: TKey,\n value: TValue,\n): { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue } {\n return {\n [`process.env.${key}`]: JSON.stringify(value),\n [`import.meta.env.${key}`]: JSON.stringify(value),\n } as { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue }\n}\n"],"names":["createTanStackStartOptionsSchema","createTanStackConfig","tanstackRouter","createNitro","nitroOutputPublicDir","startConfig","vite","VITE_ENVIRONMENT_NAMES","TanStackStartCompilerPlugin","TanStackServerFnPluginEnv","startManifestPlugin","nitroPlugin","TanStackStartServerRoutesVite"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs","sources":["../../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createNitro } from 'nitropack'\nimport { tanstackRouter } from '@tanstack/router-plugin/vite'\nimport { TanStackServerFnPluginEnv } from '@tanstack/server-functions-plugin'\nimport * as vite from 'vite'\nimport {\n createTanStackConfig,\n createTanStackStartOptionsSchema,\n} from './schema'\nimport { nitroPlugin } from './nitro/nitro-plugin'\nimport { startManifestPlugin } from './routesManifestPlugin'\nimport { TanStackStartCompilerPlugin } from './start-compiler-plugin'\nimport { VITE_ENVIRONMENT_NAMES } from './constants'\nimport { TanStackStartServerRoutesVite } from './start-server-routes-plugin/plugin'\nimport type { PluginOption, Rollup } from 'vite'\nimport type { z } from 'zod'\nimport type { CompileStartFrameworkOptions } from './compilers'\n\nconst TanStackStartOptionsSchema = createTanStackStartOptionsSchema()\nexport type TanStackStartInputConfig = z.input<\n typeof TanStackStartOptionsSchema\n>\n\nconst defaultConfig = createTanStackConfig()\nexport function getTanStackStartOptions(opts?: TanStackStartInputConfig) {\n return defaultConfig.parse(opts)\n}\n\nexport type TanStackStartOutputConfig = ReturnType<\n typeof getTanStackStartOptions\n>\n\nexport const clientDistDir = '.tanstack-start/build/client-dist'\nexport const ssrEntryFile = 'ssr.mjs'\n\nexport interface TanStackStartVitePluginCoreOptions {\n framework: CompileStartFrameworkOptions\n}\n// this needs to live outside of the TanStackStartVitePluginCore since it will be invoked multiple times by vite\nlet ssrBundle: Rollup.OutputBundle\n\nexport function TanStackStartVitePluginCore(\n opts: TanStackStartVitePluginCoreOptions,\n startConfig: TanStackStartOutputConfig,\n): Array<PluginOption> {\n return [\n tanstackRouter({\n verboseFileRoutes: false,\n ...startConfig.tsr,\n target: opts.framework,\n enableRouteGeneration: true,\n autoCodeSplitting: true,\n }),\n {\n name: 'tanstack-start-core:config-client',\n async config() {\n const nitroOutputPublicDir = await (async () => {\n // Create a dummy nitro app to get the resolved public output path\n const dummyNitroApp = await createNitro({\n preset: startConfig.target,\n compatibilityDate: '2024-12-01',\n })\n\n const nitroOutputPublicDir = dummyNitroApp.options.output.publicDir\n await dummyNitroApp.close()\n\n return nitroOutputPublicDir\n })()\n\n const getClientEntryPath = (startConfig: TanStackStartOutputConfig) => {\n // when the user specifies a custom client entry path, we need to resolve it\n // relative to the root of the project, keeping in mind that if not specified\n // it will be /~start/default-client-entry which is a virtual path\n // that is resolved by vite to the actual client entry path\n const entry = startConfig.clientEntryPath.startsWith(\n '/~start/default-client-entry',\n )\n ? startConfig.clientEntryPath\n : vite.normalizePath(\n path.resolve(startConfig.root, startConfig.clientEntryPath),\n )\n\n return entry\n }\n\n return {\n environments: {\n [VITE_ENVIRONMENT_NAMES.client]: {\n consumer: 'client',\n build: {\n manifest: true,\n rollupOptions: {\n input: {\n main: getClientEntryPath(startConfig),\n },\n output: {\n dir: path.resolve(startConfig.root, clientDistDir),\n },\n // TODO this should be removed\n external: ['node:fs', 'node:path', 'node:os', 'node:crypto'],\n },\n },\n },\n [VITE_ENVIRONMENT_NAMES.server]: {\n consumer: 'server',\n build: {\n ssr: true,\n // we don't write to the file system as the below 'capture-output' plugin will\n // capture the output and write it to the virtual file system\n write: false,\n copyPublicDir: false,\n rollupOptions: {\n output: {\n entryFileNames: ssrEntryFile,\n },\n plugins: [\n {\n name: 'capture-output',\n generateBundle(options, bundle) {\n // TODO can this hook be called more than once?\n ssrBundle = bundle\n },\n },\n ],\n },\n commonjsOptions: {\n include: [/node_modules/],\n },\n },\n },\n },\n resolve: {\n noExternal: [\n '@tanstack/start-client',\n '@tanstack/start-client-core',\n '@tanstack/start-server',\n '@tanstack/start-server-core',\n '@tanstack/start-server-functions-fetcher',\n '@tanstack/start-server-functions-client',\n '@tanstack/start-server-functions-server',\n '@tanstack/start-router-manifest',\n '@tanstack/start-config',\n '@tanstack/server-functions-plugin',\n 'tanstack-start-router-manifest:v',\n 'tanstack-start-server-fn-manifest:v',\n 'nitropack',\n '@tanstack/**',\n ],\n },\n /* prettier-ignore */\n define: {\n ...injectDefineEnv('TSS_PUBLIC_BASE', startConfig.public.base),\n ...injectDefineEnv('TSS_CLIENT_BASE', startConfig.client.base),\n ...injectDefineEnv('TSS_CLIENT_ENTRY', getClientEntryPath(startConfig)), // This is consumed by the router-manifest, where the entry point is imported after the dev refresh runtime is resolved\n ...injectDefineEnv('TSS_SERVER_FN_BASE', startConfig.serverFns.base),\n ...injectDefineEnv('TSS_OUTPUT_PUBLIC_DIR', nitroOutputPublicDir),\n },\n }\n },\n },\n // N.B. TanStackStartCompilerPlugin must be before the TanStackServerFnPluginEnv\n TanStackStartCompilerPlugin(opts.framework, {\n client: { envName: VITE_ENVIRONMENT_NAMES.client },\n server: { envName: VITE_ENVIRONMENT_NAMES.server },\n }),\n TanStackServerFnPluginEnv({\n // This is the ID that will be available to look up and import\n // our server function manifest and resolve its module\n manifestVirtualImportId: 'tanstack-start-server-fn-manifest:v',\n client: {\n getRuntimeCode: () =>\n `import { createClientRpc } from '@tanstack/${opts.framework}-start/server-functions-client'`,\n replacer: (d) =>\n `createClientRpc('${d.functionId}', '${startConfig.serverFns.base}')`,\n envName: VITE_ENVIRONMENT_NAMES.client,\n },\n server: {\n getRuntimeCode: () =>\n `import { createServerRpc } from '@tanstack/${opts.framework}-start/server-functions-server'`,\n replacer: (d) =>\n `createServerRpc('${d.functionId}', '${startConfig.serverFns.base}', ${d.fn})`,\n envName: VITE_ENVIRONMENT_NAMES.server,\n },\n importer: (fn) => {\n const serverEnv = (globalThis as any).viteDevServer.environments[\n VITE_ENVIRONMENT_NAMES.server\n ]\n if (!serverEnv) {\n throw new Error(`'ssr' vite dev environment not found`)\n }\n return serverEnv.runner.import(fn.extractedFilename)\n },\n }),\n startManifestPlugin(startConfig),\n nitroPlugin(startConfig, () => ssrBundle),\n TanStackStartServerRoutesVite({\n ...startConfig.tsr,\n target: opts.framework,\n }),\n ]\n}\n\nfunction injectDefineEnv<TKey extends string, TValue extends string>(\n key: TKey,\n value: TValue,\n): { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue } {\n return {\n [`process.env.${key}`]: JSON.stringify(value),\n [`import.meta.env.${key}`]: JSON.stringify(value),\n } as { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue }\n}\n"],"names":["createTanStackStartOptionsSchema","createTanStackConfig","tanstackRouter","createNitro","nitroOutputPublicDir","startConfig","vite","VITE_ENVIRONMENT_NAMES","TanStackStartCompilerPlugin","TanStackServerFnPluginEnv","startManifestPlugin","nitroPlugin","TanStackStartServerRoutesVite"],"mappings":"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"}