tanstack-start-sitemap 0.0.2 → 0.0.3

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.
package/README.md CHANGED
@@ -31,7 +31,8 @@ export default defineConfig({
31
31
  projects: ["./tsconfig.json"],
32
32
  }),
33
33
  sitemapPlugin({
34
- hostname: 'https://example.com'
34
+ hostname: 'https://example.com',
35
+
35
36
  }),
36
37
  ],
37
38
  },
package/dist/index.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=n=>{const s=n.match(/ROUTE_MANIFEST_START([\s\S]*?)ROUTE_MANIFEST_END/);if(!s)return[];try{const e=JSON.parse(s[1]);return Object.keys(e.routes).filter(t=>t!=="__root__").map(t=>t==="/"?t:t.replace(/\/$/,""))}catch(e){return console.error("Error parsing route manifest:",e),[]}},T=n=>{const{hostname:s,routeTreePath:e="app/routeTree.gen.ts",routes:t={},defaultChangefreq:f="weekly",defaultPriority:d=.5}=n;return{name:"vite-plugin-sitemap",apply:"build",closeBundle:async()=>{try{const{promises:r}=await Promise.resolve().then(()=>m),{resolve:u}=await Promise.resolve().then(()=>m),p=[e,`src/${e}`,`${process.cwd()}/${e}`,`${process.cwd()}/src/${e}`];let a=null,i=null;for(const o of p)try{a=await r.readFile(o,"utf-8"),i=o;break}catch{}if(!a||!i)throw new Error(`Could not find route tree file. Tried the following paths:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=n=>{const s=n.match(/ROUTE_MANIFEST_START([\s\S]*?)ROUTE_MANIFEST_END/);if(!s)return[];try{const e=JSON.parse(s[1]);return Object.keys(e.routes).filter(t=>t!=="__root__").map(t=>t==="/"?t:t.replace(/\/$/,""))}catch(e){return console.error("Error parsing route manifest:",e),[]}},T=n=>{const{hostname:s,routeTreePath:e="routeTree.gen.ts",routes:t={},defaultChangefreq:f="weekly",defaultPriority:d=.5}=n;return{name:"vite-plugin-sitemap",apply:"build",closeBundle:async()=>{try{const{promises:r}=await Promise.resolve().then(()=>m),{resolve:u}=await Promise.resolve().then(()=>m),p=[e,`src/${e}`,`${process.cwd()}/${e}`,`${process.cwd()}/src/${e}`];let a=null,i=null;for(const o of p)try{a=await r.readFile(o,"utf-8"),i=o;break}catch{}if(!a||!i)throw new Error(`Could not find route tree file. Tried the following paths:
2
2
  ${p.join(`
3
3
  `)}`);console.log(`Found route tree at: ${i}`);const g=y(a),h=new Date().toISOString().split("T")[0],w=`<?xml version="1.0" encoding="UTF-8"?>
4
4
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["// vite-sitemap-plugin.ts\nimport type { Plugin } from \"vite\";\n\nexport interface SitemapOptions {\n hostname: string;\n routeTreePath?: string;\n routes?: {\n [key: string]: {\n changefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n priority?: number;\n lastmod?: string;\n };\n };\n defaultChangefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n defaultPriority?: number;\n}\n\nconst extractRoutesFromManifest = (content: string): string[] => {\n const manifestMatch = content.match(\n /ROUTE_MANIFEST_START([\\s\\S]*?)ROUTE_MANIFEST_END/\n );\n if (!manifestMatch) return [];\n\n try {\n const manifest = JSON.parse(manifestMatch[1]);\n return Object.keys(manifest.routes)\n .filter((route) => route !== \"__root__\")\n .map((route) => (route === \"/\" ? route : route.replace(/\\/$/, \"\")));\n } catch (e) {\n console.error(\"Error parsing route manifest:\", e);\n return [];\n }\n};\n\nexport const sitemapPlugin = (options: SitemapOptions): Plugin => {\n const {\n hostname,\n routeTreePath = \"app/routeTree.gen.ts\",\n routes = {},\n defaultChangefreq = \"weekly\",\n defaultPriority = 0.5,\n } = options;\n\n return {\n name: \"vite-plugin-sitemap\",\n apply: \"build\",\n closeBundle: async () => {\n try {\n // Dynamically import Node built-in modules to avoid bundling issues\n const { promises: fsPromises } = await import(\"fs\");\n const { resolve } = await import(\"path\");\n\n const possiblePaths = [\n routeTreePath,\n `src/${routeTreePath}`,\n `${process.cwd()}/${routeTreePath}`,\n `${process.cwd()}/src/${routeTreePath}`,\n ];\n\n let routeTreeContent: string | null = null;\n let foundPath: string | null = null;\n\n // Attempt to read the route tree file from the possible paths\n for (const testPath of possiblePaths) {\n try {\n routeTreeContent = await fsPromises.readFile(testPath, \"utf-8\");\n foundPath = testPath;\n break;\n } catch {\n // Try the next path if this one fails\n }\n }\n\n if (!routeTreeContent || !foundPath) {\n throw new Error(\n `Could not find route tree file. Tried the following paths:\\n${possiblePaths.join(\n \"\\n\"\n )}`\n );\n }\n\n console.log(`Found route tree at: ${foundPath}`);\n\n const allRoutes = extractRoutesFromManifest(routeTreeContent);\n const today = new Date().toISOString().split(\"T\")[0];\n\n const sitemapContent = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${allRoutes\n .map((route) => {\n const routeConfig = routes[route] || {};\n return ` <url>\n <loc>${hostname}${route}</loc>\n <lastmod>${routeConfig.lastmod || today}</lastmod>\n <changefreq>${routeConfig.changefreq || defaultChangefreq}</changefreq>\n <priority>${routeConfig.priority || defaultPriority}</priority>\n </url>`;\n })\n .join(\"\\n\")}\n</urlset>`;\n\n const publicDir = resolve(process.cwd(), \"public\");\n\n // Ensure the public directory exists\n try {\n await fsPromises.access(publicDir);\n } catch {\n await fsPromises.mkdir(publicDir, { recursive: true });\n }\n\n // Write the sitemap.xml file to the public directory\n await fsPromises.writeFile(\n resolve(publicDir, \"sitemap.xml\"),\n sitemapContent\n );\n\n console.log(\"✓ Sitemap generated successfully\");\n } catch (error) {\n console.error(\"Error generating sitemap:\", error);\n }\n },\n };\n};\n\nexport default sitemapPlugin;\n"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","fsPromises","__viteBrowserExternal","resolve","possiblePaths","routeTreeContent","foundPath","testPath","allRoutes","today","sitemapContent","routeConfig","publicDir","error"],"mappings":"gFA+BA,MAAMA,EAA6BC,GAA8B,CAC/D,MAAMC,EAAgBD,EAAQ,MAC5B,kDACF,EACI,GAAA,CAACC,EAAe,MAAO,CAAC,EAExB,GAAA,CACF,MAAMC,EAAW,KAAK,MAAMD,EAAc,CAAC,CAAC,EACrC,OAAA,OAAO,KAAKC,EAAS,MAAM,EAC/B,OAAQC,GAAUA,IAAU,UAAU,EACtC,IAAKA,GAAWA,IAAU,IAAMA,EAAQA,EAAM,QAAQ,MAAO,EAAE,CAAE,QAC7D,EAAG,CACF,eAAA,MAAM,gCAAiC,CAAC,EACzC,CAAC,CAAA,CAEZ,EAEaC,EAAiBC,GAAoC,CAC1D,KAAA,CACJ,SAAAC,EACA,cAAAC,EAAgB,uBAChB,OAAAC,EAAS,CAAC,EACV,kBAAAC,EAAoB,SACpB,gBAAAC,EAAkB,EAAA,EAChBL,EAEG,MAAA,CACL,KAAM,sBACN,MAAO,QACP,YAAa,SAAY,CACnB,GAAA,CAEF,KAAM,CAAE,SAAUM,CAAe,EAAA,MAAM,QAAW,QAAA,EAAA,KAAA,IAAAC,CAAA,EAC5C,CAAE,QAAAC,CAAY,EAAA,MAAM,QAAa,QAAA,EAAA,KAAA,IAAAD,CAAA,EAEjCE,EAAgB,CACpBP,EACA,OAAOA,CAAa,GACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa,GACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa,EACvC,EAEA,IAAIQ,EAAkC,KAClCC,EAA2B,KAG/B,UAAWC,KAAYH,EACjB,GAAA,CACFC,EAAmB,MAAMJ,EAAW,SAASM,EAAU,OAAO,EAClDD,EAAAC,EACZ,KAAA,MACM,CAAA,CAKN,GAAA,CAACF,GAAoB,CAACC,EACxB,MAAM,IAAI,MACR;AAAA,EAA+DF,EAAc,KAC3E;AAAA,CAAA,CACD,EACH,EAGM,QAAA,IAAI,wBAAwBE,CAAS,EAAE,EAEzC,MAAAE,EAAYnB,EAA0BgB,CAAgB,EACtDI,MAAY,KAAK,EAAE,cAAc,MAAM,GAAG,EAAE,CAAC,EAE7CC,EAAiB;AAAA;AAAA,EAE7BF,EACC,IAAKf,GAAU,CACd,MAAMkB,EAAcb,EAAOL,CAAK,GAAK,CAAC,EAC/B,MAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZkB,EAAY,SAAWF,CAAK;AAAA,kBACzBE,EAAY,YAAcZ,CAAiB;AAAA,gBAC7CY,EAAY,UAAYX,CAAe;AAAA,SAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,WAGCY,EAAYT,EAAQ,QAAQ,IAAA,EAAO,QAAQ,EAG7C,GAAA,CACI,MAAAF,EAAW,OAAOW,CAAS,CAAA,MAC3B,CACN,MAAMX,EAAW,MAAMW,EAAW,CAAE,UAAW,GAAM,CAAA,CAIvD,MAAMX,EAAW,UACfE,EAAQS,EAAW,aAAa,EAChCF,CACF,EAEA,QAAQ,IAAI,kCAAkC,QACvCG,EAAO,CACN,QAAA,MAAM,4BAA6BA,CAAK,CAAA,CAClD,CAEJ,CACF"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["// vite-sitemap-plugin.ts\nimport type { Plugin } from \"vite\";\n\nexport interface SitemapOptions {\n hostname: string;\n routeTreePath?: string;\n routes?: {\n [key: string]: {\n changefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n priority?: number;\n lastmod?: string;\n };\n };\n defaultChangefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n defaultPriority?: number;\n}\n\nconst extractRoutesFromManifest = (content: string): string[] => {\n const manifestMatch = content.match(\n /ROUTE_MANIFEST_START([\\s\\S]*?)ROUTE_MANIFEST_END/\n );\n if (!manifestMatch) return [];\n\n try {\n const manifest = JSON.parse(manifestMatch[1]);\n return Object.keys(manifest.routes)\n .filter((route) => route !== \"__root__\")\n .map((route) => (route === \"/\" ? route : route.replace(/\\/$/, \"\")));\n } catch (e) {\n console.error(\"Error parsing route manifest:\", e);\n return [];\n }\n};\n\nexport const sitemapPlugin = (options: SitemapOptions): Plugin => {\n const {\n hostname,\n routeTreePath = \"routeTree.gen.ts\",\n routes = {},\n defaultChangefreq = \"weekly\",\n defaultPriority = 0.5,\n } = options;\n\n return {\n name: \"vite-plugin-sitemap\",\n apply: \"build\",\n closeBundle: async () => {\n try {\n // Dynamically import Node built-in modules to avoid bundling issues\n const { promises: fsPromises } = await import(\"fs\");\n const { resolve } = await import(\"path\");\n\n const possiblePaths = [\n routeTreePath,\n `src/${routeTreePath}`,\n `${process.cwd()}/${routeTreePath}`,\n `${process.cwd()}/src/${routeTreePath}`,\n ];\n\n let routeTreeContent: string | null = null;\n let foundPath: string | null = null;\n\n // Attempt to read the route tree file from the possible paths\n for (const testPath of possiblePaths) {\n try {\n routeTreeContent = await fsPromises.readFile(testPath, \"utf-8\");\n foundPath = testPath;\n break;\n } catch {\n // Try the next path if this one fails\n }\n }\n\n if (!routeTreeContent || !foundPath) {\n throw new Error(\n `Could not find route tree file. Tried the following paths:\\n${possiblePaths.join(\n \"\\n\"\n )}`\n );\n }\n\n console.log(`Found route tree at: ${foundPath}`);\n\n const allRoutes = extractRoutesFromManifest(routeTreeContent);\n const today = new Date().toISOString().split(\"T\")[0];\n\n const sitemapContent = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${allRoutes\n .map((route) => {\n const routeConfig = routes[route] || {};\n return ` <url>\n <loc>${hostname}${route}</loc>\n <lastmod>${routeConfig.lastmod || today}</lastmod>\n <changefreq>${routeConfig.changefreq || defaultChangefreq}</changefreq>\n <priority>${routeConfig.priority || defaultPriority}</priority>\n </url>`;\n })\n .join(\"\\n\")}\n</urlset>`;\n\n const publicDir = resolve(process.cwd(), \"public\");\n\n // Ensure the public directory exists\n try {\n await fsPromises.access(publicDir);\n } catch {\n await fsPromises.mkdir(publicDir, { recursive: true });\n }\n\n // Write the sitemap.xml file to the public directory\n await fsPromises.writeFile(\n resolve(publicDir, \"sitemap.xml\"),\n sitemapContent\n );\n\n console.log(\"✓ Sitemap generated successfully\");\n } catch (error) {\n console.error(\"Error generating sitemap:\", error);\n }\n },\n };\n};\n\nexport default sitemapPlugin;\n"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","fsPromises","__viteBrowserExternal","resolve","possiblePaths","routeTreeContent","foundPath","testPath","allRoutes","today","sitemapContent","routeConfig","publicDir","error"],"mappings":"gFA+BA,MAAMA,EAA6BC,GAA8B,CAC/D,MAAMC,EAAgBD,EAAQ,MAC5B,kDACF,EACI,GAAA,CAACC,EAAe,MAAO,CAAC,EAExB,GAAA,CACF,MAAMC,EAAW,KAAK,MAAMD,EAAc,CAAC,CAAC,EACrC,OAAA,OAAO,KAAKC,EAAS,MAAM,EAC/B,OAAQC,GAAUA,IAAU,UAAU,EACtC,IAAKA,GAAWA,IAAU,IAAMA,EAAQA,EAAM,QAAQ,MAAO,EAAE,CAAE,QAC7D,EAAG,CACF,eAAA,MAAM,gCAAiC,CAAC,EACzC,CAAC,CAAA,CAEZ,EAEaC,EAAiBC,GAAoC,CAC1D,KAAA,CACJ,SAAAC,EACA,cAAAC,EAAgB,mBAChB,OAAAC,EAAS,CAAC,EACV,kBAAAC,EAAoB,SACpB,gBAAAC,EAAkB,EAAA,EAChBL,EAEG,MAAA,CACL,KAAM,sBACN,MAAO,QACP,YAAa,SAAY,CACnB,GAAA,CAEF,KAAM,CAAE,SAAUM,CAAe,EAAA,MAAM,QAAW,QAAA,EAAA,KAAA,IAAAC,CAAA,EAC5C,CAAE,QAAAC,CAAY,EAAA,MAAM,QAAa,QAAA,EAAA,KAAA,IAAAD,CAAA,EAEjCE,EAAgB,CACpBP,EACA,OAAOA,CAAa,GACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa,GACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa,EACvC,EAEA,IAAIQ,EAAkC,KAClCC,EAA2B,KAG/B,UAAWC,KAAYH,EACjB,GAAA,CACFC,EAAmB,MAAMJ,EAAW,SAASM,EAAU,OAAO,EAClDD,EAAAC,EACZ,KAAA,MACM,CAAA,CAKN,GAAA,CAACF,GAAoB,CAACC,EACxB,MAAM,IAAI,MACR;AAAA,EAA+DF,EAAc,KAC3E;AAAA,CAAA,CACD,EACH,EAGM,QAAA,IAAI,wBAAwBE,CAAS,EAAE,EAEzC,MAAAE,EAAYnB,EAA0BgB,CAAgB,EACtDI,MAAY,KAAK,EAAE,cAAc,MAAM,GAAG,EAAE,CAAC,EAE7CC,EAAiB;AAAA;AAAA,EAE7BF,EACC,IAAKf,GAAU,CACd,MAAMkB,EAAcb,EAAOL,CAAK,GAAK,CAAC,EAC/B,MAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZkB,EAAY,SAAWF,CAAK;AAAA,kBACzBE,EAAY,YAAcZ,CAAiB;AAAA,gBAC7CY,EAAY,UAAYX,CAAe;AAAA,SAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,WAGCY,EAAYT,EAAQ,QAAQ,IAAA,EAAO,QAAQ,EAG7C,GAAA,CACI,MAAAF,EAAW,OAAOW,CAAS,CAAA,MAC3B,CACN,MAAMX,EAAW,MAAMW,EAAW,CAAE,UAAW,GAAM,CAAA,CAIvD,MAAMX,EAAW,UACfE,EAAQS,EAAW,aAAa,EAChCF,CACF,EAEA,QAAQ,IAAI,kCAAkC,QACvCG,EAAO,CACN,QAAA,MAAM,4BAA6BA,CAAK,CAAA,CAClD,CAEJ,CACF"}
package/dist/index.es.js CHANGED
@@ -12,7 +12,7 @@ const y = (n) => {
12
12
  }, _ = (n) => {
13
13
  const {
14
14
  hostname: s,
15
- routeTreePath: e = "app/routeTree.gen.ts",
15
+ routeTreePath: e = "routeTree.gen.ts",
16
16
  routes: t = {},
17
17
  defaultChangefreq: f = "weekly",
18
18
  defaultPriority: d = 0.5
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["// vite-sitemap-plugin.ts\nimport type { Plugin } from \"vite\";\n\nexport interface SitemapOptions {\n hostname: string;\n routeTreePath?: string;\n routes?: {\n [key: string]: {\n changefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n priority?: number;\n lastmod?: string;\n };\n };\n defaultChangefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n defaultPriority?: number;\n}\n\nconst extractRoutesFromManifest = (content: string): string[] => {\n const manifestMatch = content.match(\n /ROUTE_MANIFEST_START([\\s\\S]*?)ROUTE_MANIFEST_END/\n );\n if (!manifestMatch) return [];\n\n try {\n const manifest = JSON.parse(manifestMatch[1]);\n return Object.keys(manifest.routes)\n .filter((route) => route !== \"__root__\")\n .map((route) => (route === \"/\" ? route : route.replace(/\\/$/, \"\")));\n } catch (e) {\n console.error(\"Error parsing route manifest:\", e);\n return [];\n }\n};\n\nexport const sitemapPlugin = (options: SitemapOptions): Plugin => {\n const {\n hostname,\n routeTreePath = \"app/routeTree.gen.ts\",\n routes = {},\n defaultChangefreq = \"weekly\",\n defaultPriority = 0.5,\n } = options;\n\n return {\n name: \"vite-plugin-sitemap\",\n apply: \"build\",\n closeBundle: async () => {\n try {\n // Dynamically import Node built-in modules to avoid bundling issues\n const { promises: fsPromises } = await import(\"fs\");\n const { resolve } = await import(\"path\");\n\n const possiblePaths = [\n routeTreePath,\n `src/${routeTreePath}`,\n `${process.cwd()}/${routeTreePath}`,\n `${process.cwd()}/src/${routeTreePath}`,\n ];\n\n let routeTreeContent: string | null = null;\n let foundPath: string | null = null;\n\n // Attempt to read the route tree file from the possible paths\n for (const testPath of possiblePaths) {\n try {\n routeTreeContent = await fsPromises.readFile(testPath, \"utf-8\");\n foundPath = testPath;\n break;\n } catch {\n // Try the next path if this one fails\n }\n }\n\n if (!routeTreeContent || !foundPath) {\n throw new Error(\n `Could not find route tree file. Tried the following paths:\\n${possiblePaths.join(\n \"\\n\"\n )}`\n );\n }\n\n console.log(`Found route tree at: ${foundPath}`);\n\n const allRoutes = extractRoutesFromManifest(routeTreeContent);\n const today = new Date().toISOString().split(\"T\")[0];\n\n const sitemapContent = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${allRoutes\n .map((route) => {\n const routeConfig = routes[route] || {};\n return ` <url>\n <loc>${hostname}${route}</loc>\n <lastmod>${routeConfig.lastmod || today}</lastmod>\n <changefreq>${routeConfig.changefreq || defaultChangefreq}</changefreq>\n <priority>${routeConfig.priority || defaultPriority}</priority>\n </url>`;\n })\n .join(\"\\n\")}\n</urlset>`;\n\n const publicDir = resolve(process.cwd(), \"public\");\n\n // Ensure the public directory exists\n try {\n await fsPromises.access(publicDir);\n } catch {\n await fsPromises.mkdir(publicDir, { recursive: true });\n }\n\n // Write the sitemap.xml file to the public directory\n await fsPromises.writeFile(\n resolve(publicDir, \"sitemap.xml\"),\n sitemapContent\n );\n\n console.log(\"✓ Sitemap generated successfully\");\n } catch (error) {\n console.error(\"Error generating sitemap:\", error);\n }\n },\n };\n};\n\nexport default sitemapPlugin;\n"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","fsPromises","__viteBrowserExternal","resolve","possiblePaths","routeTreeContent","foundPath","testPath","allRoutes","today","sitemapContent","routeConfig","publicDir","error"],"mappings":"AA+BA,MAAMA,IAA4B,CAACC,MAA8B;AAC/D,QAAMC,IAAgBD,EAAQ;AAAA,IAC5B;AAAA,EACF;AACI,MAAA,CAACC,EAAe,QAAO,CAAC;AAExB,MAAA;AACF,UAAMC,IAAW,KAAK,MAAMD,EAAc,CAAC,CAAC;AACrC,WAAA,OAAO,KAAKC,EAAS,MAAM,EAC/B,OAAO,CAACC,MAAUA,MAAU,UAAU,EACtC,IAAI,CAACA,MAAWA,MAAU,MAAMA,IAAQA,EAAM,QAAQ,OAAO,EAAE,CAAE;AAAA,WAC7D,GAAG;AACF,mBAAA,MAAM,iCAAiC,CAAC,GACzC,CAAC;AAAA,EAAA;AAEZ,GAEaC,IAAgB,CAACC,MAAoC;AAC1D,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,QAAAC,IAAS,CAAC;AAAA,IACV,mBAAAC,IAAoB;AAAA,IACpB,iBAAAC,IAAkB;AAAA,EAAA,IAChBL;AAEG,SAAA;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa,YAAY;AACnB,UAAA;AAEF,cAAM,EAAE,UAAUM,EAAe,IAAA,MAAM,QAAW,QAAA,EAAA,KAAA,MAAAC,CAAA,GAC5C,EAAE,SAAAC,EAAY,IAAA,MAAM,QAAa,QAAA,EAAA,KAAA,MAAAD,CAAA,GAEjCE,IAAgB;AAAA,UACpBP;AAAA,UACA,OAAOA,CAAa;AAAA,UACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa;AAAA,UACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa;AAAA,QACvC;AAEA,YAAIQ,IAAkC,MAClCC,IAA2B;AAG/B,mBAAWC,KAAYH;AACjB,cAAA;AACF,YAAAC,IAAmB,MAAMJ,EAAW,SAASM,GAAU,OAAO,GAClDD,IAAAC;AACZ;AAAA,UAAA,QACM;AAAA,UAAA;AAKN,YAAA,CAACF,KAAoB,CAACC;AACxB,gBAAM,IAAI;AAAA,YACR;AAAA,EAA+DF,EAAc;AAAA,cAC3E;AAAA;AAAA,YAAA,CACD;AAAA,UACH;AAGM,gBAAA,IAAI,wBAAwBE,CAAS,EAAE;AAEzC,cAAAE,IAAYnB,EAA0BgB,CAAgB,GACtDI,yBAAY,KAAK,GAAE,cAAc,MAAM,GAAG,EAAE,CAAC,GAE7CC,IAAiB;AAAA;AAAA,EAE7BF,EACC,IAAI,CAACf,MAAU;AACd,gBAAMkB,IAAcb,EAAOL,CAAK,KAAK,CAAC;AAC/B,iBAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZkB,EAAY,WAAWF,CAAK;AAAA,kBACzBE,EAAY,cAAcZ,CAAiB;AAAA,gBAC7CY,EAAY,YAAYX,CAAe;AAAA;AAAA,QAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,YAGCY,IAAYT,EAAQ,QAAQ,IAAA,GAAO,QAAQ;AAG7C,YAAA;AACI,gBAAAF,EAAW,OAAOW,CAAS;AAAA,QAAA,QAC3B;AACN,gBAAMX,EAAW,MAAMW,GAAW,EAAE,WAAW,IAAM;AAAA,QAAA;AAIvD,cAAMX,EAAW;AAAA,UACfE,EAAQS,GAAW,aAAa;AAAA,UAChCF;AAAA,QACF,GAEA,QAAQ,IAAI,kCAAkC;AAAA,eACvCG,GAAO;AACN,gBAAA,MAAM,6BAA6BA,CAAK;AAAA,MAAA;AAAA,IAClD;AAAA,EAEJ;AACF;;;"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["// vite-sitemap-plugin.ts\nimport type { Plugin } from \"vite\";\n\nexport interface SitemapOptions {\n hostname: string;\n routeTreePath?: string;\n routes?: {\n [key: string]: {\n changefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n priority?: number;\n lastmod?: string;\n };\n };\n defaultChangefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n defaultPriority?: number;\n}\n\nconst extractRoutesFromManifest = (content: string): string[] => {\n const manifestMatch = content.match(\n /ROUTE_MANIFEST_START([\\s\\S]*?)ROUTE_MANIFEST_END/\n );\n if (!manifestMatch) return [];\n\n try {\n const manifest = JSON.parse(manifestMatch[1]);\n return Object.keys(manifest.routes)\n .filter((route) => route !== \"__root__\")\n .map((route) => (route === \"/\" ? route : route.replace(/\\/$/, \"\")));\n } catch (e) {\n console.error(\"Error parsing route manifest:\", e);\n return [];\n }\n};\n\nexport const sitemapPlugin = (options: SitemapOptions): Plugin => {\n const {\n hostname,\n routeTreePath = \"routeTree.gen.ts\",\n routes = {},\n defaultChangefreq = \"weekly\",\n defaultPriority = 0.5,\n } = options;\n\n return {\n name: \"vite-plugin-sitemap\",\n apply: \"build\",\n closeBundle: async () => {\n try {\n // Dynamically import Node built-in modules to avoid bundling issues\n const { promises: fsPromises } = await import(\"fs\");\n const { resolve } = await import(\"path\");\n\n const possiblePaths = [\n routeTreePath,\n `src/${routeTreePath}`,\n `${process.cwd()}/${routeTreePath}`,\n `${process.cwd()}/src/${routeTreePath}`,\n ];\n\n let routeTreeContent: string | null = null;\n let foundPath: string | null = null;\n\n // Attempt to read the route tree file from the possible paths\n for (const testPath of possiblePaths) {\n try {\n routeTreeContent = await fsPromises.readFile(testPath, \"utf-8\");\n foundPath = testPath;\n break;\n } catch {\n // Try the next path if this one fails\n }\n }\n\n if (!routeTreeContent || !foundPath) {\n throw new Error(\n `Could not find route tree file. Tried the following paths:\\n${possiblePaths.join(\n \"\\n\"\n )}`\n );\n }\n\n console.log(`Found route tree at: ${foundPath}`);\n\n const allRoutes = extractRoutesFromManifest(routeTreeContent);\n const today = new Date().toISOString().split(\"T\")[0];\n\n const sitemapContent = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${allRoutes\n .map((route) => {\n const routeConfig = routes[route] || {};\n return ` <url>\n <loc>${hostname}${route}</loc>\n <lastmod>${routeConfig.lastmod || today}</lastmod>\n <changefreq>${routeConfig.changefreq || defaultChangefreq}</changefreq>\n <priority>${routeConfig.priority || defaultPriority}</priority>\n </url>`;\n })\n .join(\"\\n\")}\n</urlset>`;\n\n const publicDir = resolve(process.cwd(), \"public\");\n\n // Ensure the public directory exists\n try {\n await fsPromises.access(publicDir);\n } catch {\n await fsPromises.mkdir(publicDir, { recursive: true });\n }\n\n // Write the sitemap.xml file to the public directory\n await fsPromises.writeFile(\n resolve(publicDir, \"sitemap.xml\"),\n sitemapContent\n );\n\n console.log(\"✓ Sitemap generated successfully\");\n } catch (error) {\n console.error(\"Error generating sitemap:\", error);\n }\n },\n };\n};\n\nexport default sitemapPlugin;\n"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","fsPromises","__viteBrowserExternal","resolve","possiblePaths","routeTreeContent","foundPath","testPath","allRoutes","today","sitemapContent","routeConfig","publicDir","error"],"mappings":"AA+BA,MAAMA,IAA4B,CAACC,MAA8B;AAC/D,QAAMC,IAAgBD,EAAQ;AAAA,IAC5B;AAAA,EACF;AACI,MAAA,CAACC,EAAe,QAAO,CAAC;AAExB,MAAA;AACF,UAAMC,IAAW,KAAK,MAAMD,EAAc,CAAC,CAAC;AACrC,WAAA,OAAO,KAAKC,EAAS,MAAM,EAC/B,OAAO,CAACC,MAAUA,MAAU,UAAU,EACtC,IAAI,CAACA,MAAWA,MAAU,MAAMA,IAAQA,EAAM,QAAQ,OAAO,EAAE,CAAE;AAAA,WAC7D,GAAG;AACF,mBAAA,MAAM,iCAAiC,CAAC,GACzC,CAAC;AAAA,EAAA;AAEZ,GAEaC,IAAgB,CAACC,MAAoC;AAC1D,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,QAAAC,IAAS,CAAC;AAAA,IACV,mBAAAC,IAAoB;AAAA,IACpB,iBAAAC,IAAkB;AAAA,EAAA,IAChBL;AAEG,SAAA;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa,YAAY;AACnB,UAAA;AAEF,cAAM,EAAE,UAAUM,EAAe,IAAA,MAAM,QAAW,QAAA,EAAA,KAAA,MAAAC,CAAA,GAC5C,EAAE,SAAAC,EAAY,IAAA,MAAM,QAAa,QAAA,EAAA,KAAA,MAAAD,CAAA,GAEjCE,IAAgB;AAAA,UACpBP;AAAA,UACA,OAAOA,CAAa;AAAA,UACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa;AAAA,UACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa;AAAA,QACvC;AAEA,YAAIQ,IAAkC,MAClCC,IAA2B;AAG/B,mBAAWC,KAAYH;AACjB,cAAA;AACF,YAAAC,IAAmB,MAAMJ,EAAW,SAASM,GAAU,OAAO,GAClDD,IAAAC;AACZ;AAAA,UAAA,QACM;AAAA,UAAA;AAKN,YAAA,CAACF,KAAoB,CAACC;AACxB,gBAAM,IAAI;AAAA,YACR;AAAA,EAA+DF,EAAc;AAAA,cAC3E;AAAA;AAAA,YAAA,CACD;AAAA,UACH;AAGM,gBAAA,IAAI,wBAAwBE,CAAS,EAAE;AAEzC,cAAAE,IAAYnB,EAA0BgB,CAAgB,GACtDI,yBAAY,KAAK,GAAE,cAAc,MAAM,GAAG,EAAE,CAAC,GAE7CC,IAAiB;AAAA;AAAA,EAE7BF,EACC,IAAI,CAACf,MAAU;AACd,gBAAMkB,IAAcb,EAAOL,CAAK,KAAK,CAAC;AAC/B,iBAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZkB,EAAY,WAAWF,CAAK;AAAA,kBACzBE,EAAY,cAAcZ,CAAiB;AAAA,gBAC7CY,EAAY,YAAYX,CAAe;AAAA;AAAA,QAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,YAGCY,IAAYT,EAAQ,QAAQ,IAAA,GAAO,QAAQ;AAG7C,YAAA;AACI,gBAAAF,EAAW,OAAOW,CAAS;AAAA,QAAA,QAC3B;AACN,gBAAMX,EAAW,MAAMW,GAAW,EAAE,WAAW,IAAM;AAAA,QAAA;AAIvD,cAAMX,EAAW;AAAA,UACfE,EAAQS,GAAW,aAAa;AAAA,UAChCF;AAAA,QACF,GAEA,QAAQ,IAAI,kCAAkC;AAAA,eACvCG,GAAO;AACN,gBAAA,MAAM,6BAA6BA,CAAK;AAAA,MAAA;AAAA,IAClD;AAAA,EAEJ;AACF;;;"}
package/dist/index.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(r,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(r=typeof globalThis<"u"?globalThis:r||self,s(r["tanstack-start-sitemap"]={}))})(this,function(r){"use strict";const s=a=>{const i=a.match(/ROUTE_MANIFEST_START([\s\S]*?)ROUTE_MANIFEST_END/);if(!i)return[];try{const e=JSON.parse(i[1]);return Object.keys(e.routes).filter(t=>t!=="__root__").map(t=>t==="/"?t:t.replace(/\/$/,""))}catch(e){return console.error("Error parsing route manifest:",e),[]}},h=a=>{const{hostname:i,routeTreePath:e="app/routeTree.gen.ts",routes:t={},defaultChangefreq:g="weekly",defaultPriority:y=.5}=a;return{name:"vite-plugin-sitemap",apply:"build",closeBundle:async()=>{try{const{promises:o}=await Promise.resolve().then(()=>f),{resolve:m}=await Promise.resolve().then(()=>f),d=[e,`src/${e}`,`${process.cwd()}/${e}`,`${process.cwd()}/src/${e}`];let l=null,c=null;for(const n of d)try{l=await o.readFile(n,"utf-8"),c=n;break}catch{}if(!l||!c)throw new Error(`Could not find route tree file. Tried the following paths:
1
+ (function(r,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(r=typeof globalThis<"u"?globalThis:r||self,s(r["tanstack-start-sitemap"]={}))})(this,function(r){"use strict";const s=a=>{const i=a.match(/ROUTE_MANIFEST_START([\s\S]*?)ROUTE_MANIFEST_END/);if(!i)return[];try{const e=JSON.parse(i[1]);return Object.keys(e.routes).filter(t=>t!=="__root__").map(t=>t==="/"?t:t.replace(/\/$/,""))}catch(e){return console.error("Error parsing route manifest:",e),[]}},h=a=>{const{hostname:i,routeTreePath:e="routeTree.gen.ts",routes:t={},defaultChangefreq:g="weekly",defaultPriority:y=.5}=a;return{name:"vite-plugin-sitemap",apply:"build",closeBundle:async()=>{try{const{promises:o}=await Promise.resolve().then(()=>f),{resolve:m}=await Promise.resolve().then(()=>f),d=[e,`src/${e}`,`${process.cwd()}/${e}`,`${process.cwd()}/src/${e}`];let l=null,c=null;for(const n of d)try{l=await o.readFile(n,"utf-8"),c=n;break}catch{}if(!l||!c)throw new Error(`Could not find route tree file. Tried the following paths:
2
2
  ${d.join(`
3
3
  `)}`);console.log(`Found route tree at: ${c}`);const w=s(l),T=new Date().toISOString().split("T")[0],_=`<?xml version="1.0" encoding="UTF-8"?>
4
4
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["// vite-sitemap-plugin.ts\nimport type { Plugin } from \"vite\";\n\nexport interface SitemapOptions {\n hostname: string;\n routeTreePath?: string;\n routes?: {\n [key: string]: {\n changefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n priority?: number;\n lastmod?: string;\n };\n };\n defaultChangefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n defaultPriority?: number;\n}\n\nconst extractRoutesFromManifest = (content: string): string[] => {\n const manifestMatch = content.match(\n /ROUTE_MANIFEST_START([\\s\\S]*?)ROUTE_MANIFEST_END/\n );\n if (!manifestMatch) return [];\n\n try {\n const manifest = JSON.parse(manifestMatch[1]);\n return Object.keys(manifest.routes)\n .filter((route) => route !== \"__root__\")\n .map((route) => (route === \"/\" ? route : route.replace(/\\/$/, \"\")));\n } catch (e) {\n console.error(\"Error parsing route manifest:\", e);\n return [];\n }\n};\n\nexport const sitemapPlugin = (options: SitemapOptions): Plugin => {\n const {\n hostname,\n routeTreePath = \"app/routeTree.gen.ts\",\n routes = {},\n defaultChangefreq = \"weekly\",\n defaultPriority = 0.5,\n } = options;\n\n return {\n name: \"vite-plugin-sitemap\",\n apply: \"build\",\n closeBundle: async () => {\n try {\n // Dynamically import Node built-in modules to avoid bundling issues\n const { promises: fsPromises } = await import(\"fs\");\n const { resolve } = await import(\"path\");\n\n const possiblePaths = [\n routeTreePath,\n `src/${routeTreePath}`,\n `${process.cwd()}/${routeTreePath}`,\n `${process.cwd()}/src/${routeTreePath}`,\n ];\n\n let routeTreeContent: string | null = null;\n let foundPath: string | null = null;\n\n // Attempt to read the route tree file from the possible paths\n for (const testPath of possiblePaths) {\n try {\n routeTreeContent = await fsPromises.readFile(testPath, \"utf-8\");\n foundPath = testPath;\n break;\n } catch {\n // Try the next path if this one fails\n }\n }\n\n if (!routeTreeContent || !foundPath) {\n throw new Error(\n `Could not find route tree file. Tried the following paths:\\n${possiblePaths.join(\n \"\\n\"\n )}`\n );\n }\n\n console.log(`Found route tree at: ${foundPath}`);\n\n const allRoutes = extractRoutesFromManifest(routeTreeContent);\n const today = new Date().toISOString().split(\"T\")[0];\n\n const sitemapContent = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${allRoutes\n .map((route) => {\n const routeConfig = routes[route] || {};\n return ` <url>\n <loc>${hostname}${route}</loc>\n <lastmod>${routeConfig.lastmod || today}</lastmod>\n <changefreq>${routeConfig.changefreq || defaultChangefreq}</changefreq>\n <priority>${routeConfig.priority || defaultPriority}</priority>\n </url>`;\n })\n .join(\"\\n\")}\n</urlset>`;\n\n const publicDir = resolve(process.cwd(), \"public\");\n\n // Ensure the public directory exists\n try {\n await fsPromises.access(publicDir);\n } catch {\n await fsPromises.mkdir(publicDir, { recursive: true });\n }\n\n // Write the sitemap.xml file to the public directory\n await fsPromises.writeFile(\n resolve(publicDir, \"sitemap.xml\"),\n sitemapContent\n );\n\n console.log(\"✓ Sitemap generated successfully\");\n } catch (error) {\n console.error(\"Error generating sitemap:\", error);\n }\n },\n };\n};\n\nexport default sitemapPlugin;\n"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","fsPromises","__viteBrowserExternal","resolve","possiblePaths","routeTreeContent","foundPath","testPath","allRoutes","today","sitemapContent","routeConfig","publicDir","error"],"mappings":"iPA+BA,MAAMA,EAA6BC,GAA8B,CAC/D,MAAMC,EAAgBD,EAAQ,MAC5B,kDACF,EACI,GAAA,CAACC,EAAe,MAAO,CAAC,EAExB,GAAA,CACF,MAAMC,EAAW,KAAK,MAAMD,EAAc,CAAC,CAAC,EACrC,OAAA,OAAO,KAAKC,EAAS,MAAM,EAC/B,OAAQC,GAAUA,IAAU,UAAU,EACtC,IAAKA,GAAWA,IAAU,IAAMA,EAAQA,EAAM,QAAQ,MAAO,EAAE,CAAE,QAC7D,EAAG,CACF,eAAA,MAAM,gCAAiC,CAAC,EACzC,CAAC,CAAA,CAEZ,EAEaC,EAAiBC,GAAoC,CAC1D,KAAA,CACJ,SAAAC,EACA,cAAAC,EAAgB,uBAChB,OAAAC,EAAS,CAAC,EACV,kBAAAC,EAAoB,SACpB,gBAAAC,EAAkB,EAAA,EAChBL,EAEG,MAAA,CACL,KAAM,sBACN,MAAO,QACP,YAAa,SAAY,CACnB,GAAA,CAEF,KAAM,CAAE,SAAUM,CAAe,EAAA,MAAM,QAAW,QAAA,EAAA,KAAA,IAAAC,CAAA,EAC5C,CAAE,QAAAC,CAAY,EAAA,MAAM,QAAa,QAAA,EAAA,KAAA,IAAAD,CAAA,EAEjCE,EAAgB,CACpBP,EACA,OAAOA,CAAa,GACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa,GACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa,EACvC,EAEA,IAAIQ,EAAkC,KAClCC,EAA2B,KAG/B,UAAWC,KAAYH,EACjB,GAAA,CACFC,EAAmB,MAAMJ,EAAW,SAASM,EAAU,OAAO,EAClDD,EAAAC,EACZ,KAAA,MACM,CAAA,CAKN,GAAA,CAACF,GAAoB,CAACC,EACxB,MAAM,IAAI,MACR;AAAA,EAA+DF,EAAc,KAC3E;AAAA,CAAA,CACD,EACH,EAGM,QAAA,IAAI,wBAAwBE,CAAS,EAAE,EAEzC,MAAAE,EAAYnB,EAA0BgB,CAAgB,EACtDI,MAAY,KAAK,EAAE,cAAc,MAAM,GAAG,EAAE,CAAC,EAE7CC,EAAiB;AAAA;AAAA,EAE7BF,EACC,IAAKf,GAAU,CACd,MAAMkB,EAAcb,EAAOL,CAAK,GAAK,CAAC,EAC/B,MAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZkB,EAAY,SAAWF,CAAK;AAAA,kBACzBE,EAAY,YAAcZ,CAAiB;AAAA,gBAC7CY,EAAY,UAAYX,CAAe;AAAA,SAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,WAGCY,EAAYT,EAAQ,QAAQ,IAAA,EAAO,QAAQ,EAG7C,GAAA,CACI,MAAAF,EAAW,OAAOW,CAAS,CAAA,MAC3B,CACN,MAAMX,EAAW,MAAMW,EAAW,CAAE,UAAW,GAAM,CAAA,CAIvD,MAAMX,EAAW,UACfE,EAAQS,EAAW,aAAa,EAChCF,CACF,EAEA,QAAQ,IAAI,kCAAkC,QACvCG,EAAO,CACN,QAAA,MAAM,4BAA6BA,CAAK,CAAA,CAClD,CAEJ,CACF"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["// vite-sitemap-plugin.ts\nimport type { Plugin } from \"vite\";\n\nexport interface SitemapOptions {\n hostname: string;\n routeTreePath?: string;\n routes?: {\n [key: string]: {\n changefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n priority?: number;\n lastmod?: string;\n };\n };\n defaultChangefreq?:\n | \"always\"\n | \"hourly\"\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"yearly\"\n | \"never\";\n defaultPriority?: number;\n}\n\nconst extractRoutesFromManifest = (content: string): string[] => {\n const manifestMatch = content.match(\n /ROUTE_MANIFEST_START([\\s\\S]*?)ROUTE_MANIFEST_END/\n );\n if (!manifestMatch) return [];\n\n try {\n const manifest = JSON.parse(manifestMatch[1]);\n return Object.keys(manifest.routes)\n .filter((route) => route !== \"__root__\")\n .map((route) => (route === \"/\" ? route : route.replace(/\\/$/, \"\")));\n } catch (e) {\n console.error(\"Error parsing route manifest:\", e);\n return [];\n }\n};\n\nexport const sitemapPlugin = (options: SitemapOptions): Plugin => {\n const {\n hostname,\n routeTreePath = \"routeTree.gen.ts\",\n routes = {},\n defaultChangefreq = \"weekly\",\n defaultPriority = 0.5,\n } = options;\n\n return {\n name: \"vite-plugin-sitemap\",\n apply: \"build\",\n closeBundle: async () => {\n try {\n // Dynamically import Node built-in modules to avoid bundling issues\n const { promises: fsPromises } = await import(\"fs\");\n const { resolve } = await import(\"path\");\n\n const possiblePaths = [\n routeTreePath,\n `src/${routeTreePath}`,\n `${process.cwd()}/${routeTreePath}`,\n `${process.cwd()}/src/${routeTreePath}`,\n ];\n\n let routeTreeContent: string | null = null;\n let foundPath: string | null = null;\n\n // Attempt to read the route tree file from the possible paths\n for (const testPath of possiblePaths) {\n try {\n routeTreeContent = await fsPromises.readFile(testPath, \"utf-8\");\n foundPath = testPath;\n break;\n } catch {\n // Try the next path if this one fails\n }\n }\n\n if (!routeTreeContent || !foundPath) {\n throw new Error(\n `Could not find route tree file. Tried the following paths:\\n${possiblePaths.join(\n \"\\n\"\n )}`\n );\n }\n\n console.log(`Found route tree at: ${foundPath}`);\n\n const allRoutes = extractRoutesFromManifest(routeTreeContent);\n const today = new Date().toISOString().split(\"T\")[0];\n\n const sitemapContent = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n${allRoutes\n .map((route) => {\n const routeConfig = routes[route] || {};\n return ` <url>\n <loc>${hostname}${route}</loc>\n <lastmod>${routeConfig.lastmod || today}</lastmod>\n <changefreq>${routeConfig.changefreq || defaultChangefreq}</changefreq>\n <priority>${routeConfig.priority || defaultPriority}</priority>\n </url>`;\n })\n .join(\"\\n\")}\n</urlset>`;\n\n const publicDir = resolve(process.cwd(), \"public\");\n\n // Ensure the public directory exists\n try {\n await fsPromises.access(publicDir);\n } catch {\n await fsPromises.mkdir(publicDir, { recursive: true });\n }\n\n // Write the sitemap.xml file to the public directory\n await fsPromises.writeFile(\n resolve(publicDir, \"sitemap.xml\"),\n sitemapContent\n );\n\n console.log(\"✓ Sitemap generated successfully\");\n } catch (error) {\n console.error(\"Error generating sitemap:\", error);\n }\n },\n };\n};\n\nexport default sitemapPlugin;\n"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","fsPromises","__viteBrowserExternal","resolve","possiblePaths","routeTreeContent","foundPath","testPath","allRoutes","today","sitemapContent","routeConfig","publicDir","error"],"mappings":"iPA+BA,MAAMA,EAA6BC,GAA8B,CAC/D,MAAMC,EAAgBD,EAAQ,MAC5B,kDACF,EACI,GAAA,CAACC,EAAe,MAAO,CAAC,EAExB,GAAA,CACF,MAAMC,EAAW,KAAK,MAAMD,EAAc,CAAC,CAAC,EACrC,OAAA,OAAO,KAAKC,EAAS,MAAM,EAC/B,OAAQC,GAAUA,IAAU,UAAU,EACtC,IAAKA,GAAWA,IAAU,IAAMA,EAAQA,EAAM,QAAQ,MAAO,EAAE,CAAE,QAC7D,EAAG,CACF,eAAA,MAAM,gCAAiC,CAAC,EACzC,CAAC,CAAA,CAEZ,EAEaC,EAAiBC,GAAoC,CAC1D,KAAA,CACJ,SAAAC,EACA,cAAAC,EAAgB,mBAChB,OAAAC,EAAS,CAAC,EACV,kBAAAC,EAAoB,SACpB,gBAAAC,EAAkB,EAAA,EAChBL,EAEG,MAAA,CACL,KAAM,sBACN,MAAO,QACP,YAAa,SAAY,CACnB,GAAA,CAEF,KAAM,CAAE,SAAUM,CAAe,EAAA,MAAM,QAAW,QAAA,EAAA,KAAA,IAAAC,CAAA,EAC5C,CAAE,QAAAC,CAAY,EAAA,MAAM,QAAa,QAAA,EAAA,KAAA,IAAAD,CAAA,EAEjCE,EAAgB,CACpBP,EACA,OAAOA,CAAa,GACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa,GACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa,EACvC,EAEA,IAAIQ,EAAkC,KAClCC,EAA2B,KAG/B,UAAWC,KAAYH,EACjB,GAAA,CACFC,EAAmB,MAAMJ,EAAW,SAASM,EAAU,OAAO,EAClDD,EAAAC,EACZ,KAAA,MACM,CAAA,CAKN,GAAA,CAACF,GAAoB,CAACC,EACxB,MAAM,IAAI,MACR;AAAA,EAA+DF,EAAc,KAC3E;AAAA,CAAA,CACD,EACH,EAGM,QAAA,IAAI,wBAAwBE,CAAS,EAAE,EAEzC,MAAAE,EAAYnB,EAA0BgB,CAAgB,EACtDI,MAAY,KAAK,EAAE,cAAc,MAAM,GAAG,EAAE,CAAC,EAE7CC,EAAiB;AAAA;AAAA,EAE7BF,EACC,IAAKf,GAAU,CACd,MAAMkB,EAAcb,EAAOL,CAAK,GAAK,CAAC,EAC/B,MAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZkB,EAAY,SAAWF,CAAK;AAAA,kBACzBE,EAAY,YAAcZ,CAAiB;AAAA,gBAC7CY,EAAY,UAAYX,CAAe;AAAA,SAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,WAGCY,EAAYT,EAAQ,QAAQ,IAAA,EAAO,QAAQ,EAG7C,GAAA,CACI,MAAAF,EAAW,OAAOW,CAAS,CAAA,MAC3B,CACN,MAAMX,EAAW,MAAMW,EAAW,CAAE,UAAW,GAAM,CAAA,CAIvD,MAAMX,EAAW,UACfE,EAAQS,EAAW,aAAa,EAChCF,CACF,EAEA,QAAQ,IAAI,kCAAkC,QACvCG,EAAO,CACN,QAAA,MAAM,4BAA6BA,CAAK,CAAA,CAClD,CAEJ,CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tanstack-start-sitemap",
3
3
  "private": false,
4
- "version": "0.0.2",
4
+ "version": "0.0.3",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "MIT",