tanstack-start-sitemap 0.0.2 → 0.0.5
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 +2 -1
- package/dist/index.cjs.js +9 -9
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +35 -35
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +9 -9
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.cjs.js
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
2
|
-
${
|
3
|
-
`)}`);console.log(`Found route tree at: ${
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("fs"),p=require("path"),w=a=>{const o=a.match(/ROUTE_MANIFEST_START([\s\S]*?)ROUTE_MANIFEST_END/);if(!o)return[];try{const e=JSON.parse(o[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),[]}},y=a=>{const{hostname:o,routeTreePath:e="app/routeTree.gen.ts",routes:t={},defaultChangefreq:m="weekly",defaultPriority:f=.5}=a;return{name:"vite-plugin-sitemap",apply:"build",closeBundle:async()=>{try{const s=[e,`src/${e}`,`${process.cwd()}/${e}`,`${process.cwd()}/src/${e}`];let i=null,c=null;for(const r of s)try{i=await n.promises.readFile(r,"utf-8"),c=r;break}catch{}if(!i||!c)throw new Error(`Could not find route tree file. Tried the following paths:
|
2
|
+
${s.join(`
|
3
|
+
`)}`);console.log(`Found route tree at: ${c}`);const d=w(i),g=new Date().toISOString().split("T")[0],h=`<?xml version="1.0" encoding="UTF-8"?>
|
4
4
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
5
|
-
${
|
6
|
-
<loc>${
|
7
|
-
<lastmod>${
|
8
|
-
<changefreq>${
|
9
|
-
<priority>${
|
5
|
+
${d.map(r=>{const u=t[r]||{};return` <url>
|
6
|
+
<loc>${o}${r}</loc>
|
7
|
+
<lastmod>${u.lastmod||g}</lastmod>
|
8
|
+
<changefreq>${u.changefreq||m}</changefreq>
|
9
|
+
<priority>${u.priority||f}</priority>
|
10
10
|
</url>`}).join(`
|
11
11
|
`)}
|
12
|
-
</urlset>`,l=
|
12
|
+
</urlset>`,l=p.resolve(process.cwd(),"public");try{await n.promises.access(l)}catch{await n.promises.mkdir(l,{recursive:!0})}await n.promises.writeFile(p.resolve(l,"sitemap.xml"),h),console.log("✓ Sitemap generated successfully")}catch(s){console.error("Error generating sitemap:",s)}}}};exports.sitemapPlugin=y;
|
13
13
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport { promises as fsPromises } from \"fs\";\nimport { resolve } from \"path\";\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 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"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","possiblePaths","routeTreeContent","foundPath","testPath","fsPromises","allRoutes","today","sitemapContent","routeConfig","publicDir","resolve","error"],"mappings":"wHAgCMA,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,CACF,MAAMM,EAAgB,CACpBJ,EACA,OAAOA,CAAa,GACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa,GACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa,EACvC,EAEA,IAAIK,EAAkC,KAClCC,EAA2B,KAG/B,UAAWC,KAAYH,EACjB,GAAA,CACFC,EAAmB,MAAMG,EAAA,SAAW,SAASD,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,MAAAG,EAAYjB,EAA0Ba,CAAgB,EACtDK,MAAY,KAAK,EAAE,cAAc,MAAM,GAAG,EAAE,CAAC,EAE7CC,EAAiB;AAAA;AAAA,EAE7BF,EACC,IAAKb,GAAU,CACd,MAAMgB,EAAcX,EAAOL,CAAK,GAAK,CAAC,EAC/B,MAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZgB,EAAY,SAAWF,CAAK;AAAA,kBACzBE,EAAY,YAAcV,CAAiB;AAAA,gBAC7CU,EAAY,UAAYT,CAAe;AAAA,SAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,WAGCU,EAAYC,EAAA,QAAQ,QAAQ,IAAA,EAAO,QAAQ,EAG7C,GAAA,CACI,MAAAN,EAAA,SAAW,OAAOK,CAAS,CAAA,MAC3B,CACN,MAAML,EAAAA,SAAW,MAAMK,EAAW,CAAE,UAAW,GAAM,CAAA,CAIvD,MAAML,EAAW,SAAA,UACfM,EAAA,QAAQD,EAAW,aAAa,EAChCF,CACF,EAEA,QAAQ,IAAI,kCAAkC,QACvCI,EAAO,CACN,QAAA,MAAM,4BAA6BA,CAAK,CAAA,CAClD,CAEJ,CACF"}
|
package/dist/index.es.js
CHANGED
@@ -1,80 +1,80 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
import { promises as n } from "fs";
|
2
|
+
import { resolve as p } from "path";
|
3
|
+
const w = (a) => {
|
4
|
+
const o = a.match(
|
3
5
|
/ROUTE_MANIFEST_START([\s\S]*?)ROUTE_MANIFEST_END/
|
4
6
|
);
|
5
|
-
if (!
|
7
|
+
if (!o) return [];
|
6
8
|
try {
|
7
|
-
const e = JSON.parse(
|
9
|
+
const e = JSON.parse(o[1]);
|
8
10
|
return Object.keys(e.routes).filter((t) => t !== "__root__").map((t) => t === "/" ? t : t.replace(/\/$/, ""));
|
9
11
|
} catch (e) {
|
10
12
|
return console.error("Error parsing route manifest:", e), [];
|
11
13
|
}
|
12
|
-
},
|
14
|
+
}, T = (a) => {
|
13
15
|
const {
|
14
|
-
hostname:
|
16
|
+
hostname: o,
|
15
17
|
routeTreePath: e = "app/routeTree.gen.ts",
|
16
18
|
routes: t = {},
|
17
|
-
defaultChangefreq:
|
18
|
-
defaultPriority:
|
19
|
-
} =
|
19
|
+
defaultChangefreq: m = "weekly",
|
20
|
+
defaultPriority: f = 0.5
|
21
|
+
} = a;
|
20
22
|
return {
|
21
23
|
name: "vite-plugin-sitemap",
|
22
24
|
apply: "build",
|
23
25
|
closeBundle: async () => {
|
24
26
|
try {
|
25
|
-
const
|
27
|
+
const s = [
|
26
28
|
e,
|
27
29
|
`src/${e}`,
|
28
30
|
`${process.cwd()}/${e}`,
|
29
31
|
`${process.cwd()}/src/${e}`
|
30
32
|
];
|
31
|
-
let
|
32
|
-
for (const
|
33
|
+
let i = null, c = null;
|
34
|
+
for (const r of s)
|
33
35
|
try {
|
34
|
-
|
36
|
+
i = await n.readFile(r, "utf-8"), c = r;
|
35
37
|
break;
|
36
38
|
} catch {
|
37
39
|
}
|
38
|
-
if (!
|
40
|
+
if (!i || !c)
|
39
41
|
throw new Error(
|
40
42
|
`Could not find route tree file. Tried the following paths:
|
41
|
-
${
|
43
|
+
${s.join(
|
42
44
|
`
|
43
45
|
`
|
44
46
|
)}`
|
45
47
|
);
|
46
|
-
console.log(`Found route tree at: ${
|
47
|
-
const
|
48
|
+
console.log(`Found route tree at: ${c}`);
|
49
|
+
const d = w(i), h = (/* @__PURE__ */ new Date()).toISOString().split("T")[0], g = `<?xml version="1.0" encoding="UTF-8"?>
|
48
50
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
49
|
-
${
|
50
|
-
const
|
51
|
+
${d.map((r) => {
|
52
|
+
const u = t[r] || {};
|
51
53
|
return ` <url>
|
52
|
-
<loc>${
|
53
|
-
<lastmod>${
|
54
|
-
<changefreq>${
|
55
|
-
<priority>${
|
54
|
+
<loc>${o}${r}</loc>
|
55
|
+
<lastmod>${u.lastmod || h}</lastmod>
|
56
|
+
<changefreq>${u.changefreq || m}</changefreq>
|
57
|
+
<priority>${u.priority || f}</priority>
|
56
58
|
</url>`;
|
57
59
|
}).join(`
|
58
60
|
`)}
|
59
|
-
</urlset>`,
|
61
|
+
</urlset>`, l = p(process.cwd(), "public");
|
60
62
|
try {
|
61
|
-
await
|
63
|
+
await n.access(l);
|
62
64
|
} catch {
|
63
|
-
await
|
65
|
+
await n.mkdir(l, { recursive: !0 });
|
64
66
|
}
|
65
|
-
await
|
66
|
-
|
67
|
-
|
67
|
+
await n.writeFile(
|
68
|
+
p(l, "sitemap.xml"),
|
69
|
+
g
|
68
70
|
), console.log("✓ Sitemap generated successfully");
|
69
|
-
} catch (
|
70
|
-
console.error("Error generating sitemap:",
|
71
|
+
} catch (s) {
|
72
|
+
console.error("Error generating sitemap:", s);
|
71
73
|
}
|
72
74
|
}
|
73
75
|
};
|
74
|
-
}
|
75
|
-
__proto__: null
|
76
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
76
|
+
};
|
77
77
|
export {
|
78
|
-
|
78
|
+
T as sitemapPlugin
|
79
79
|
};
|
80
80
|
//# sourceMappingURL=index.es.js.map
|
package/dist/index.es.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport { promises as fsPromises } from \"fs\";\nimport { resolve } from \"path\";\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 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"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","possiblePaths","routeTreeContent","foundPath","testPath","fsPromises","allRoutes","today","sitemapContent","routeConfig","publicDir","resolve","error"],"mappings":";;AAgCA,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;AACF,cAAMM,IAAgB;AAAA,UACpBJ;AAAA,UACA,OAAOA,CAAa;AAAA,UACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa;AAAA,UACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa;AAAA,QACvC;AAEA,YAAIK,IAAkC,MAClCC,IAA2B;AAG/B,mBAAWC,KAAYH;AACjB,cAAA;AACF,YAAAC,IAAmB,MAAMG,EAAW,SAASD,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,cAAAG,IAAYjB,EAA0Ba,CAAgB,GACtDK,yBAAY,KAAK,GAAE,cAAc,MAAM,GAAG,EAAE,CAAC,GAE7CC,IAAiB;AAAA;AAAA,EAE7BF,EACC,IAAI,CAACb,MAAU;AACd,gBAAMgB,IAAcX,EAAOL,CAAK,KAAK,CAAC;AAC/B,iBAAA;AAAA,WACAG,CAAQ,GAAGH,CAAK;AAAA,eACZgB,EAAY,WAAWF,CAAK;AAAA,kBACzBE,EAAY,cAAcV,CAAiB;AAAA,gBAC7CU,EAAY,YAAYT,CAAe;AAAA;AAAA,QAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,YAGCU,IAAYC,EAAQ,QAAQ,IAAA,GAAO,QAAQ;AAG7C,YAAA;AACI,gBAAAN,EAAW,OAAOK,CAAS;AAAA,QAAA,QAC3B;AACN,gBAAML,EAAW,MAAMK,GAAW,EAAE,WAAW,IAAM;AAAA,QAAA;AAIvD,cAAML,EAAW;AAAA,UACfM,EAAQD,GAAW,aAAa;AAAA,UAChCF;AAAA,QACF,GAEA,QAAQ,IAAI,kCAAkC;AAAA,eACvCI,GAAO;AACN,gBAAA,MAAM,6BAA6BA,CAAK;AAAA,MAAA;AAAA,IAClD;AAAA,EAEJ;AACF;"}
|
package/dist/index.umd.js
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
(function(
|
2
|
-
${
|
3
|
-
`)}`);console.log(`Found route tree at: ${
|
1
|
+
(function(e,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("fs"),require("path")):typeof define=="function"&&define.amd?define(["exports","fs","path"],t):(e=typeof globalThis<"u"?globalThis:e||self,t(e["tanstack-start-sitemap"]={},e.fs,e.path))})(this,function(e,t,f){"use strict";const m=a=>{const n=a.match(/ROUTE_MANIFEST_START([\s\S]*?)ROUTE_MANIFEST_END/);if(!n)return[];try{const r=JSON.parse(n[1]);return Object.keys(r.routes).filter(s=>s!=="__root__").map(s=>s==="/"?s:s.replace(/\/$/,""))}catch(r){return console.error("Error parsing route manifest:",r),[]}},d=a=>{const{hostname:n,routeTreePath:r="app/routeTree.gen.ts",routes:s={},defaultChangefreq:h="weekly",defaultPriority:g=.5}=a;return{name:"vite-plugin-sitemap",apply:"build",closeBundle:async()=>{try{const i=[r,`src/${r}`,`${process.cwd()}/${r}`,`${process.cwd()}/src/${r}`];let c=null,l=null;for(const o of i)try{c=await t.promises.readFile(o,"utf-8"),l=o;break}catch{}if(!c||!l)throw new Error(`Could not find route tree file. Tried the following paths:
|
2
|
+
${i.join(`
|
3
|
+
`)}`);console.log(`Found route tree at: ${l}`);const y=m(c),w=new Date().toISOString().split("T")[0],T=`<?xml version="1.0" encoding="UTF-8"?>
|
4
4
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
5
|
-
${
|
6
|
-
<loc>${
|
7
|
-
<lastmod>${p.lastmod||
|
8
|
-
<changefreq>${p.changefreq||
|
9
|
-
<priority>${p.priority||
|
5
|
+
${y.map(o=>{const p=s[o]||{};return` <url>
|
6
|
+
<loc>${n}${o}</loc>
|
7
|
+
<lastmod>${p.lastmod||w}</lastmod>
|
8
|
+
<changefreq>${p.changefreq||h}</changefreq>
|
9
|
+
<priority>${p.priority||g}</priority>
|
10
10
|
</url>`}).join(`
|
11
11
|
`)}
|
12
|
-
</urlset>`,u=
|
12
|
+
</urlset>`,u=f.resolve(process.cwd(),"public");try{await t.promises.access(u)}catch{await t.promises.mkdir(u,{recursive:!0})}await t.promises.writeFile(f.resolve(u,"sitemap.xml"),T),console.log("✓ Sitemap generated successfully")}catch(i){console.error("Error generating sitemap:",i)}}}};e.sitemapPlugin=d,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|
13
13
|
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/lib/gen-sitemap.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport { promises as fsPromises } from \"fs\";\nimport { resolve } from \"path\";\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 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"],"names":["extractRoutesFromManifest","content","manifestMatch","manifest","route","e","sitemapPlugin","options","hostname","routeTreePath","routes","defaultChangefreq","defaultPriority","possiblePaths","routeTreeContent","foundPath","testPath","fsPromises","allRoutes","today","sitemapContent","routeConfig","publicDir","resolve","error"],"mappings":"2SAgCA,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,QAC7DC,EAAG,CACF,eAAA,MAAM,gCAAiCA,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,CACF,MAAMM,EAAgB,CACpBJ,EACA,OAAOA,CAAa,GACpB,GAAG,QAAQ,IAAK,CAAA,IAAIA,CAAa,GACjC,GAAG,QAAQ,KAAK,QAAQA,CAAa,EACvC,EAEA,IAAIK,EAAkC,KAClCC,EAA2B,KAG/B,UAAWC,KAAYH,EACjB,GAAA,CACFC,EAAmB,MAAMG,EAAA,SAAW,SAASD,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,MAAAG,EAAYlB,EAA0Bc,CAAgB,EACtDK,MAAY,KAAK,EAAE,cAAc,MAAM,GAAG,EAAE,CAAC,EAE7CC,EAAiB;AAAA;AAAA,EAE7BF,EACC,IAAKd,GAAU,CACd,MAAMiB,EAAcX,EAAON,CAAK,GAAK,CAAC,EAC/B,MAAA;AAAA,WACAI,CAAQ,GAAGJ,CAAK;AAAA,eACZiB,EAAY,SAAWF,CAAK;AAAA,kBACzBE,EAAY,YAAcV,CAAiB;AAAA,gBAC7CU,EAAY,UAAYT,CAAe;AAAA,SAAA,CAEpD,EACA,KAAK;AAAA,CAAI,CAAC;AAAA,WAGCU,EAAYC,EAAA,QAAQ,QAAQ,IAAA,EAAO,QAAQ,EAG7C,GAAA,CACI,MAAAN,EAAA,SAAW,OAAOK,CAAS,CAAA,MAC3B,CACN,MAAML,EAAAA,SAAW,MAAMK,EAAW,CAAE,UAAW,GAAM,CAAA,CAIvD,MAAML,EAAW,SAAA,UACfM,EAAA,QAAQD,EAAW,aAAa,EAChCF,CACF,EAEA,QAAQ,IAAI,kCAAkC,QACvCI,EAAO,CACN,QAAA,MAAM,4BAA6BA,CAAK,CAAA,CAClD,CAEJ,CACF"}
|