one 1.2.35 → 1.2.37
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/dist/cjs/cli/build.cjs +16 -2
- package/dist/cjs/cli/build.js +14 -3
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/build.native.js +20 -5
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/generateSitemap.cjs +86 -0
- package/dist/cjs/cli/generateSitemap.js +69 -0
- package/dist/cjs/cli/generateSitemap.js.map +6 -0
- package/dist/cjs/cli/generateSitemap.native.js +112 -0
- package/dist/cjs/cli/generateSitemap.native.js.map +1 -0
- package/dist/cjs/cli/generateSitemap.test.cjs +156 -0
- package/dist/cjs/cli/generateSitemap.test.js +103 -0
- package/dist/cjs/cli/generateSitemap.test.js.map +6 -0
- package/dist/cjs/cli/generateSitemap.test.native.js +200 -0
- package/dist/cjs/cli/generateSitemap.test.native.js.map +1 -0
- package/dist/cjs/createApp.cjs +6 -5
- package/dist/cjs/createApp.js +7 -3
- package/dist/cjs/createApp.js.map +2 -2
- package/dist/cjs/vite/one.cjs +30 -14
- package/dist/cjs/vite/one.js +30 -14
- package/dist/cjs/vite/one.js.map +1 -1
- package/dist/cjs/vite/one.native.js +30 -14
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/esm/cli/build.js +14 -2
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/build.mjs +16 -2
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +20 -5
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/generateSitemap.js +45 -0
- package/dist/esm/cli/generateSitemap.js.map +6 -0
- package/dist/esm/cli/generateSitemap.mjs +52 -0
- package/dist/esm/cli/generateSitemap.mjs.map +1 -0
- package/dist/esm/cli/generateSitemap.native.js +75 -0
- package/dist/esm/cli/generateSitemap.native.js.map +1 -0
- package/dist/esm/cli/generateSitemap.test.js +104 -0
- package/dist/esm/cli/generateSitemap.test.js.map +6 -0
- package/dist/esm/cli/generateSitemap.test.mjs +157 -0
- package/dist/esm/cli/generateSitemap.test.mjs.map +1 -0
- package/dist/esm/cli/generateSitemap.test.native.js +198 -0
- package/dist/esm/cli/generateSitemap.test.native.js.map +1 -0
- package/dist/esm/createApp.js +6 -4
- package/dist/esm/createApp.js.map +1 -1
- package/dist/esm/createApp.mjs +5 -4
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/vite/one.js +30 -14
- package/dist/esm/vite/one.js.map +1 -1
- package/dist/esm/vite/one.mjs +30 -14
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +30 -14
- package/dist/esm/vite/one.native.js.map +1 -1
- package/package.json +13 -10
- package/src/cli/build.ts +31 -0
- package/src/cli/generateSitemap.test.ts +207 -0
- package/src/cli/generateSitemap.ts +93 -0
- package/src/createApp.tsx +12 -4
- package/src/interfaces/router.ts +28 -0
- package/src/vite/one.ts +28 -11
- package/src/vite/types.ts +50 -0
- package/types/cli/build.d.ts.map +1 -1
- package/types/cli/generateSitemap.d.ts +13 -0
- package/types/cli/generateSitemap.d.ts.map +1 -0
- package/types/cli/generateSitemap.test.d.ts +2 -0
- package/types/cli/generateSitemap.test.d.ts.map +1 -0
- package/types/createApp.d.ts.map +1 -1
- package/types/env.d.ts +43 -0
- package/types/interfaces/router.d.ts +19 -0
- package/types/interfaces/router.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/types.d.ts +46 -0
- package/types/vite/types.d.ts.map +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
var import_vitest = require("vitest"),
|
|
2
|
+
import_generateSitemap = require("./generateSitemap.cjs");
|
|
3
|
+
(0, import_vitest.describe)("generateSitemap", () => {
|
|
4
|
+
(0, import_vitest.it)("generates basic sitemap XML", () => {
|
|
5
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
6
|
+
path: "/"
|
|
7
|
+
}, {
|
|
8
|
+
path: "/about"
|
|
9
|
+
}, {
|
|
10
|
+
path: "/blog"
|
|
11
|
+
}], {});
|
|
12
|
+
(0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'), (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'), (0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/blog</loc>"), (0, import_vitest.expect)(result).toContain("</urlset>");
|
|
13
|
+
}), (0, import_vitest.it)("uses baseUrl when provided", () => {
|
|
14
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
15
|
+
path: "/"
|
|
16
|
+
}, {
|
|
17
|
+
path: "/about"
|
|
18
|
+
}], {
|
|
19
|
+
baseUrl: "https://example.com"
|
|
20
|
+
});
|
|
21
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://example.com/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>");
|
|
22
|
+
}), (0, import_vitest.it)("strips trailing slash from baseUrl", () => {
|
|
23
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
24
|
+
path: "/about"
|
|
25
|
+
}], {
|
|
26
|
+
baseUrl: "https://example.com/"
|
|
27
|
+
});
|
|
28
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>"), (0, import_vitest.expect)(result).not.toContain("https://example.com//about");
|
|
29
|
+
}), (0, import_vitest.it)("uses ONE_SERVER_URL env var when baseUrl not provided", () => {
|
|
30
|
+
const originalEnv = process.env.ONE_SERVER_URL;
|
|
31
|
+
process.env.ONE_SERVER_URL = "https://env-url.com";
|
|
32
|
+
try {
|
|
33
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
34
|
+
path: "/test"
|
|
35
|
+
}], {});
|
|
36
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://env-url.com/test</loc>");
|
|
37
|
+
} finally {
|
|
38
|
+
process.env.ONE_SERVER_URL = originalEnv;
|
|
39
|
+
}
|
|
40
|
+
}), (0, import_vitest.it)("applies default priority to all routes", () => {
|
|
41
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
42
|
+
path: "/"
|
|
43
|
+
}, {
|
|
44
|
+
path: "/about"
|
|
45
|
+
}], {
|
|
46
|
+
priority: 0.8
|
|
47
|
+
});
|
|
48
|
+
(0, import_vitest.expect)(result).toMatch(/<url>\s*<loc>\/about<\/loc>\s*<priority>0\.8<\/priority>\s*<\/url>/s);
|
|
49
|
+
}), (0, import_vitest.it)("applies default changefreq to all routes", () => {
|
|
50
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
51
|
+
path: "/"
|
|
52
|
+
}, {
|
|
53
|
+
path: "/about"
|
|
54
|
+
}], {
|
|
55
|
+
changefreq: "weekly"
|
|
56
|
+
});
|
|
57
|
+
(0, import_vitest.expect)(result).toContain("<changefreq>weekly</changefreq>");
|
|
58
|
+
}), (0, import_vitest.it)("respects route-level sitemap exports", () => {
|
|
59
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
60
|
+
path: "/",
|
|
61
|
+
routeExport: {
|
|
62
|
+
priority: 1,
|
|
63
|
+
changefreq: "daily"
|
|
64
|
+
}
|
|
65
|
+
}, {
|
|
66
|
+
path: "/about",
|
|
67
|
+
routeExport: {
|
|
68
|
+
priority: 0.5,
|
|
69
|
+
changefreq: "monthly"
|
|
70
|
+
}
|
|
71
|
+
}], {
|
|
72
|
+
priority: 0.7,
|
|
73
|
+
changefreq: "weekly"
|
|
74
|
+
});
|
|
75
|
+
(0, import_vitest.expect)(result).toMatch(/<url>\s*<loc>\/<\/loc>\s*<changefreq>daily<\/changefreq>\s*<priority>1\.0<\/priority>\s*<\/url>/s), (0, import_vitest.expect)(result).toMatch(/<url>\s*<loc>\/about<\/loc>\s*<changefreq>monthly<\/changefreq>\s*<priority>0\.5<\/priority>\s*<\/url>/s);
|
|
76
|
+
}), (0, import_vitest.it)("excludes routes with routeExport.exclude = true", () => {
|
|
77
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
78
|
+
path: "/"
|
|
79
|
+
}, {
|
|
80
|
+
path: "/admin",
|
|
81
|
+
routeExport: {
|
|
82
|
+
exclude: !0
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
path: "/about"
|
|
86
|
+
}], {});
|
|
87
|
+
(0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).not.toContain("/admin");
|
|
88
|
+
}), (0, import_vitest.it)("excludes routes matching exclude glob patterns", () => {
|
|
89
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
90
|
+
path: "/"
|
|
91
|
+
}, {
|
|
92
|
+
path: "/admin/dashboard"
|
|
93
|
+
}, {
|
|
94
|
+
path: "/admin/users"
|
|
95
|
+
}, {
|
|
96
|
+
path: "/about"
|
|
97
|
+
}, {
|
|
98
|
+
path: "/api/health"
|
|
99
|
+
}], {
|
|
100
|
+
exclude: ["/admin/*", "/api/*"]
|
|
101
|
+
});
|
|
102
|
+
(0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).not.toContain("/admin"), (0, import_vitest.expect)(result).not.toContain("/api");
|
|
103
|
+
}), (0, import_vitest.it)("includes lastmod when provided in route export", () => {
|
|
104
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
105
|
+
path: "/",
|
|
106
|
+
routeExport: {
|
|
107
|
+
lastmod: "2024-01-15"
|
|
108
|
+
}
|
|
109
|
+
}, {
|
|
110
|
+
path: "/about",
|
|
111
|
+
routeExport: {
|
|
112
|
+
lastmod: /* @__PURE__ */new Date("2024-06-20")
|
|
113
|
+
}
|
|
114
|
+
}], {});
|
|
115
|
+
(0, import_vitest.expect)(result).toContain("<lastmod>2024-01-15</lastmod>"), (0, import_vitest.expect)(result).toContain("<lastmod>2024-06-20</lastmod>");
|
|
116
|
+
}), (0, import_vitest.it)("escapes XML special characters in URLs", () => {
|
|
117
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
118
|
+
path: "/search?q=foo&bar=baz"
|
|
119
|
+
}], {
|
|
120
|
+
baseUrl: "https://example.com"
|
|
121
|
+
});
|
|
122
|
+
(0, import_vitest.expect)(result).toContain("&"), (0, import_vitest.expect)(result).not.toContain("&bar");
|
|
123
|
+
}), (0, import_vitest.it)("generates empty sitemap when no routes", () => {
|
|
124
|
+
const result = (0, import_generateSitemap.generateSitemap)([], {});
|
|
125
|
+
(0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'), (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'), (0, import_vitest.expect)(result).toContain("</urlset>"), (0, import_vitest.expect)(result).not.toContain("<url>");
|
|
126
|
+
}), (0, import_vitest.it)("handles all valid changefreq values", () => {
|
|
127
|
+
const changefreqs = ["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"];
|
|
128
|
+
for (const changefreq of changefreqs) {
|
|
129
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
130
|
+
path: "/",
|
|
131
|
+
routeExport: {
|
|
132
|
+
changefreq
|
|
133
|
+
}
|
|
134
|
+
}], {});
|
|
135
|
+
(0, import_vitest.expect)(result).toContain(`<changefreq>${changefreq}</changefreq>`);
|
|
136
|
+
}
|
|
137
|
+
}), (0, import_vitest.it)("formats priority with one decimal place", () => {
|
|
138
|
+
const result = (0, import_generateSitemap.generateSitemap)([{
|
|
139
|
+
path: "/",
|
|
140
|
+
routeExport: {
|
|
141
|
+
priority: 1
|
|
142
|
+
}
|
|
143
|
+
}, {
|
|
144
|
+
path: "/about",
|
|
145
|
+
routeExport: {
|
|
146
|
+
priority: 0.5
|
|
147
|
+
}
|
|
148
|
+
}, {
|
|
149
|
+
path: "/blog",
|
|
150
|
+
routeExport: {
|
|
151
|
+
priority: 0.75
|
|
152
|
+
}
|
|
153
|
+
}], {});
|
|
154
|
+
(0, import_vitest.expect)(result).toContain("<priority>1.0</priority>"), (0, import_vitest.expect)(result).toContain("<priority>0.5</priority>"), (0, import_vitest.expect)(result).toContain("<priority>0.8</priority>");
|
|
155
|
+
});
|
|
156
|
+
});
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var import_vitest = require("vitest"), import_generateSitemap = require("./generateSitemap");
|
|
2
|
+
(0, import_vitest.describe)("generateSitemap", () => {
|
|
3
|
+
(0, import_vitest.it)("generates basic sitemap XML", () => {
|
|
4
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/" }, { path: "/about" }, { path: "/blog" }], {});
|
|
5
|
+
(0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'), (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'), (0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/blog</loc>"), (0, import_vitest.expect)(result).toContain("</urlset>");
|
|
6
|
+
}), (0, import_vitest.it)("uses baseUrl when provided", () => {
|
|
7
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/" }, { path: "/about" }], {
|
|
8
|
+
baseUrl: "https://example.com"
|
|
9
|
+
});
|
|
10
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://example.com/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>");
|
|
11
|
+
}), (0, import_vitest.it)("strips trailing slash from baseUrl", () => {
|
|
12
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/about" }], {
|
|
13
|
+
baseUrl: "https://example.com/"
|
|
14
|
+
});
|
|
15
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>"), (0, import_vitest.expect)(result).not.toContain("https://example.com//about");
|
|
16
|
+
}), (0, import_vitest.it)("uses ONE_SERVER_URL env var when baseUrl not provided", () => {
|
|
17
|
+
const originalEnv = process.env.ONE_SERVER_URL;
|
|
18
|
+
process.env.ONE_SERVER_URL = "https://env-url.com";
|
|
19
|
+
try {
|
|
20
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/test" }], {});
|
|
21
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://env-url.com/test</loc>");
|
|
22
|
+
} finally {
|
|
23
|
+
process.env.ONE_SERVER_URL = originalEnv;
|
|
24
|
+
}
|
|
25
|
+
}), (0, import_vitest.it)("applies default priority to all routes", () => {
|
|
26
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/" }, { path: "/about" }], {
|
|
27
|
+
priority: 0.8
|
|
28
|
+
});
|
|
29
|
+
(0, import_vitest.expect)(result).toMatch(/<url>\s*<loc>\/about<\/loc>\s*<priority>0\.8<\/priority>\s*<\/url>/s);
|
|
30
|
+
}), (0, import_vitest.it)("applies default changefreq to all routes", () => {
|
|
31
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/" }, { path: "/about" }], {
|
|
32
|
+
changefreq: "weekly"
|
|
33
|
+
});
|
|
34
|
+
(0, import_vitest.expect)(result).toContain("<changefreq>weekly</changefreq>");
|
|
35
|
+
}), (0, import_vitest.it)("respects route-level sitemap exports", () => {
|
|
36
|
+
const result = (0, import_generateSitemap.generateSitemap)([
|
|
37
|
+
{ path: "/", routeExport: { priority: 1, changefreq: "daily" } },
|
|
38
|
+
{ path: "/about", routeExport: { priority: 0.5, changefreq: "monthly" } }
|
|
39
|
+
], {
|
|
40
|
+
priority: 0.7,
|
|
41
|
+
changefreq: "weekly"
|
|
42
|
+
});
|
|
43
|
+
(0, import_vitest.expect)(result).toMatch(
|
|
44
|
+
/<url>\s*<loc>\/<\/loc>\s*<changefreq>daily<\/changefreq>\s*<priority>1\.0<\/priority>\s*<\/url>/s
|
|
45
|
+
), (0, import_vitest.expect)(result).toMatch(
|
|
46
|
+
/<url>\s*<loc>\/about<\/loc>\s*<changefreq>monthly<\/changefreq>\s*<priority>0\.5<\/priority>\s*<\/url>/s
|
|
47
|
+
);
|
|
48
|
+
}), (0, import_vitest.it)("excludes routes with routeExport.exclude = true", () => {
|
|
49
|
+
const result = (0, import_generateSitemap.generateSitemap)([
|
|
50
|
+
{ path: "/" },
|
|
51
|
+
{ path: "/admin", routeExport: { exclude: !0 } },
|
|
52
|
+
{ path: "/about" }
|
|
53
|
+
], {});
|
|
54
|
+
(0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).not.toContain("/admin");
|
|
55
|
+
}), (0, import_vitest.it)("excludes routes matching exclude glob patterns", () => {
|
|
56
|
+
const result = (0, import_generateSitemap.generateSitemap)([
|
|
57
|
+
{ path: "/" },
|
|
58
|
+
{ path: "/admin/dashboard" },
|
|
59
|
+
{ path: "/admin/users" },
|
|
60
|
+
{ path: "/about" },
|
|
61
|
+
{ path: "/api/health" }
|
|
62
|
+
], {
|
|
63
|
+
exclude: ["/admin/*", "/api/*"]
|
|
64
|
+
});
|
|
65
|
+
(0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).not.toContain("/admin"), (0, import_vitest.expect)(result).not.toContain("/api");
|
|
66
|
+
}), (0, import_vitest.it)("includes lastmod when provided in route export", () => {
|
|
67
|
+
const result = (0, import_generateSitemap.generateSitemap)([
|
|
68
|
+
{ path: "/", routeExport: { lastmod: "2024-01-15" } },
|
|
69
|
+
{ path: "/about", routeExport: { lastmod: /* @__PURE__ */ new Date("2024-06-20") } }
|
|
70
|
+
], {});
|
|
71
|
+
(0, import_vitest.expect)(result).toContain("<lastmod>2024-01-15</lastmod>"), (0, import_vitest.expect)(result).toContain("<lastmod>2024-06-20</lastmod>");
|
|
72
|
+
}), (0, import_vitest.it)("escapes XML special characters in URLs", () => {
|
|
73
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/search?q=foo&bar=baz" }], {
|
|
74
|
+
baseUrl: "https://example.com"
|
|
75
|
+
});
|
|
76
|
+
(0, import_vitest.expect)(result).toContain("&"), (0, import_vitest.expect)(result).not.toContain("&bar");
|
|
77
|
+
}), (0, import_vitest.it)("generates empty sitemap when no routes", () => {
|
|
78
|
+
const result = (0, import_generateSitemap.generateSitemap)([], {});
|
|
79
|
+
(0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'), (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'), (0, import_vitest.expect)(result).toContain("</urlset>"), (0, import_vitest.expect)(result).not.toContain("<url>");
|
|
80
|
+
}), (0, import_vitest.it)("handles all valid changefreq values", () => {
|
|
81
|
+
const changefreqs = [
|
|
82
|
+
"always",
|
|
83
|
+
"hourly",
|
|
84
|
+
"daily",
|
|
85
|
+
"weekly",
|
|
86
|
+
"monthly",
|
|
87
|
+
"yearly",
|
|
88
|
+
"never"
|
|
89
|
+
];
|
|
90
|
+
for (const changefreq of changefreqs) {
|
|
91
|
+
const result = (0, import_generateSitemap.generateSitemap)([{ path: "/", routeExport: { changefreq } }], {});
|
|
92
|
+
(0, import_vitest.expect)(result).toContain(`<changefreq>${changefreq}</changefreq>`);
|
|
93
|
+
}
|
|
94
|
+
}), (0, import_vitest.it)("formats priority with one decimal place", () => {
|
|
95
|
+
const result = (0, import_generateSitemap.generateSitemap)([
|
|
96
|
+
{ path: "/", routeExport: { priority: 1 } },
|
|
97
|
+
{ path: "/about", routeExport: { priority: 0.5 } },
|
|
98
|
+
{ path: "/blog", routeExport: { priority: 0.75 } }
|
|
99
|
+
], {});
|
|
100
|
+
(0, import_vitest.expect)(result).toContain("<priority>1.0</priority>"), (0, import_vitest.expect)(result).toContain("<priority>0.5</priority>"), (0, import_vitest.expect)(result).toContain("<priority>0.8</priority>");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=generateSitemap.test.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/cli/generateSitemap.test.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var import_vitest = require("vitest"),
|
|
4
|
+
import_generateSitemap = require("./generateSitemap.native.js");
|
|
5
|
+
(0, import_vitest.describe)("generateSitemap", function () {
|
|
6
|
+
(0, import_vitest.it)("generates basic sitemap XML", function () {
|
|
7
|
+
var routes = [{
|
|
8
|
+
path: "/"
|
|
9
|
+
}, {
|
|
10
|
+
path: "/about"
|
|
11
|
+
}, {
|
|
12
|
+
path: "/blog"
|
|
13
|
+
}],
|
|
14
|
+
options = {},
|
|
15
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
16
|
+
(0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'), (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'), (0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/blog</loc>"), (0, import_vitest.expect)(result).toContain("</urlset>");
|
|
17
|
+
}), (0, import_vitest.it)("uses baseUrl when provided", function () {
|
|
18
|
+
var routes = [{
|
|
19
|
+
path: "/"
|
|
20
|
+
}, {
|
|
21
|
+
path: "/about"
|
|
22
|
+
}],
|
|
23
|
+
options = {
|
|
24
|
+
baseUrl: "https://example.com"
|
|
25
|
+
},
|
|
26
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
27
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://example.com/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>");
|
|
28
|
+
}), (0, import_vitest.it)("strips trailing slash from baseUrl", function () {
|
|
29
|
+
var routes = [{
|
|
30
|
+
path: "/about"
|
|
31
|
+
}],
|
|
32
|
+
options = {
|
|
33
|
+
baseUrl: "https://example.com/"
|
|
34
|
+
},
|
|
35
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
36
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>"), (0, import_vitest.expect)(result).not.toContain("https://example.com//about");
|
|
37
|
+
}), (0, import_vitest.it)("uses ONE_SERVER_URL env var when baseUrl not provided", function () {
|
|
38
|
+
var originalEnv = process.env.ONE_SERVER_URL;
|
|
39
|
+
process.env.ONE_SERVER_URL = "https://env-url.com";
|
|
40
|
+
try {
|
|
41
|
+
var routes = [{
|
|
42
|
+
path: "/test"
|
|
43
|
+
}],
|
|
44
|
+
options = {},
|
|
45
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
46
|
+
(0, import_vitest.expect)(result).toContain("<loc>https://env-url.com/test</loc>");
|
|
47
|
+
} finally {
|
|
48
|
+
process.env.ONE_SERVER_URL = originalEnv;
|
|
49
|
+
}
|
|
50
|
+
}), (0, import_vitest.it)("applies default priority to all routes", function () {
|
|
51
|
+
var routes = [{
|
|
52
|
+
path: "/"
|
|
53
|
+
}, {
|
|
54
|
+
path: "/about"
|
|
55
|
+
}],
|
|
56
|
+
options = {
|
|
57
|
+
priority: 0.8
|
|
58
|
+
},
|
|
59
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
60
|
+
(0, import_vitest.expect)(result).toMatch(RegExp("<url>\\s*<loc>\\/about<\\/loc>\\s*<priority>0\\.8<\\/priority>\\s*<\\/url>", "s"));
|
|
61
|
+
}), (0, import_vitest.it)("applies default changefreq to all routes", function () {
|
|
62
|
+
var routes = [{
|
|
63
|
+
path: "/"
|
|
64
|
+
}, {
|
|
65
|
+
path: "/about"
|
|
66
|
+
}],
|
|
67
|
+
options = {
|
|
68
|
+
changefreq: "weekly"
|
|
69
|
+
},
|
|
70
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
71
|
+
(0, import_vitest.expect)(result).toContain("<changefreq>weekly</changefreq>");
|
|
72
|
+
}), (0, import_vitest.it)("respects route-level sitemap exports", function () {
|
|
73
|
+
var routes = [{
|
|
74
|
+
path: "/",
|
|
75
|
+
routeExport: {
|
|
76
|
+
priority: 1,
|
|
77
|
+
changefreq: "daily"
|
|
78
|
+
}
|
|
79
|
+
}, {
|
|
80
|
+
path: "/about",
|
|
81
|
+
routeExport: {
|
|
82
|
+
priority: 0.5,
|
|
83
|
+
changefreq: "monthly"
|
|
84
|
+
}
|
|
85
|
+
}],
|
|
86
|
+
options = {
|
|
87
|
+
priority: 0.7,
|
|
88
|
+
changefreq: "weekly"
|
|
89
|
+
},
|
|
90
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
91
|
+
(0, import_vitest.expect)(result).toMatch(RegExp("<url>\\s*<loc>\\/<\\/loc>\\s*<changefreq>daily<\\/changefreq>\\s*<priority>1\\.0<\\/priority>\\s*<\\/url>", "s")), (0, import_vitest.expect)(result).toMatch(RegExp("<url>\\s*<loc>\\/about<\\/loc>\\s*<changefreq>monthly<\\/changefreq>\\s*<priority>0\\.5<\\/priority>\\s*<\\/url>", "s"));
|
|
92
|
+
}), (0, import_vitest.it)("excludes routes with routeExport.exclude = true", function () {
|
|
93
|
+
var routes = [{
|
|
94
|
+
path: "/"
|
|
95
|
+
}, {
|
|
96
|
+
path: "/admin",
|
|
97
|
+
routeExport: {
|
|
98
|
+
exclude: !0
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
path: "/about"
|
|
102
|
+
}],
|
|
103
|
+
options = {},
|
|
104
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
105
|
+
(0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).not.toContain("/admin");
|
|
106
|
+
}), (0, import_vitest.it)("excludes routes matching exclude glob patterns", function () {
|
|
107
|
+
var routes = [{
|
|
108
|
+
path: "/"
|
|
109
|
+
}, {
|
|
110
|
+
path: "/admin/dashboard"
|
|
111
|
+
}, {
|
|
112
|
+
path: "/admin/users"
|
|
113
|
+
}, {
|
|
114
|
+
path: "/about"
|
|
115
|
+
}, {
|
|
116
|
+
path: "/api/health"
|
|
117
|
+
}],
|
|
118
|
+
options = {
|
|
119
|
+
exclude: ["/admin/*", "/api/*"]
|
|
120
|
+
},
|
|
121
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
122
|
+
(0, import_vitest.expect)(result).toContain("<loc>/</loc>"), (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"), (0, import_vitest.expect)(result).not.toContain("/admin"), (0, import_vitest.expect)(result).not.toContain("/api");
|
|
123
|
+
}), (0, import_vitest.it)("includes lastmod when provided in route export", function () {
|
|
124
|
+
var routes = [{
|
|
125
|
+
path: "/",
|
|
126
|
+
routeExport: {
|
|
127
|
+
lastmod: "2024-01-15"
|
|
128
|
+
}
|
|
129
|
+
}, {
|
|
130
|
+
path: "/about",
|
|
131
|
+
routeExport: {
|
|
132
|
+
lastmod: /* @__PURE__ */new Date("2024-06-20")
|
|
133
|
+
}
|
|
134
|
+
}],
|
|
135
|
+
options = {},
|
|
136
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
137
|
+
(0, import_vitest.expect)(result).toContain("<lastmod>2024-01-15</lastmod>"), (0, import_vitest.expect)(result).toContain("<lastmod>2024-06-20</lastmod>");
|
|
138
|
+
}), (0, import_vitest.it)("escapes XML special characters in URLs", function () {
|
|
139
|
+
var routes = [{
|
|
140
|
+
path: "/search?q=foo&bar=baz"
|
|
141
|
+
}],
|
|
142
|
+
options = {
|
|
143
|
+
baseUrl: "https://example.com"
|
|
144
|
+
},
|
|
145
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
146
|
+
(0, import_vitest.expect)(result).toContain("&"), (0, import_vitest.expect)(result).not.toContain("&bar");
|
|
147
|
+
}), (0, import_vitest.it)("generates empty sitemap when no routes", function () {
|
|
148
|
+
var routes = [],
|
|
149
|
+
options = {},
|
|
150
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
151
|
+
(0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'), (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'), (0, import_vitest.expect)(result).toContain("</urlset>"), (0, import_vitest.expect)(result).not.toContain("<url>");
|
|
152
|
+
}), (0, import_vitest.it)("handles all valid changefreq values", function () {
|
|
153
|
+
var changefreqs = ["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"],
|
|
154
|
+
_iteratorNormalCompletion = !0,
|
|
155
|
+
_didIteratorError = !1,
|
|
156
|
+
_iteratorError = void 0;
|
|
157
|
+
try {
|
|
158
|
+
for (var _iterator = changefreqs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
159
|
+
var changefreq = _step.value,
|
|
160
|
+
routes = [{
|
|
161
|
+
path: "/",
|
|
162
|
+
routeExport: {
|
|
163
|
+
changefreq
|
|
164
|
+
}
|
|
165
|
+
}],
|
|
166
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, {});
|
|
167
|
+
(0, import_vitest.expect)(result).toContain(`<changefreq>${changefreq}</changefreq>`);
|
|
168
|
+
}
|
|
169
|
+
} catch (err) {
|
|
170
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
171
|
+
} finally {
|
|
172
|
+
try {
|
|
173
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
174
|
+
} finally {
|
|
175
|
+
if (_didIteratorError) throw _iteratorError;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}), (0, import_vitest.it)("formats priority with one decimal place", function () {
|
|
179
|
+
var routes = [{
|
|
180
|
+
path: "/",
|
|
181
|
+
routeExport: {
|
|
182
|
+
priority: 1
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
path: "/about",
|
|
186
|
+
routeExport: {
|
|
187
|
+
priority: 0.5
|
|
188
|
+
}
|
|
189
|
+
}, {
|
|
190
|
+
path: "/blog",
|
|
191
|
+
routeExport: {
|
|
192
|
+
priority: 0.75
|
|
193
|
+
}
|
|
194
|
+
}],
|
|
195
|
+
options = {},
|
|
196
|
+
result = (0, import_generateSitemap.generateSitemap)(routes, options);
|
|
197
|
+
(0, import_vitest.expect)(result).toContain("<priority>1.0</priority>"), (0, import_vitest.expect)(result).toContain("<priority>0.5</priority>"), (0, import_vitest.expect)(result).toContain("<priority>0.8</priority>");
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
//# sourceMappingURL=generateSitemap.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["import_vitest","require","import_generateSitemap","describe","it","routes","path","options","result","generateSitemap","expect","toContain","baseUrl","not","originalEnv","process","env","ONE_SERVER_URL","priority","toMatch","RegExp","changefreq","routeExport"],"sources":["../../../src/cli/generateSitemap.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/createApp.cjs
CHANGED
|
@@ -36,13 +36,11 @@ __export(createApp_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(createApp_exports);
|
|
37
37
|
var import_setup = require("./setup.cjs"),
|
|
38
38
|
import_react = require("react"),
|
|
39
|
-
import_server = __toESM(require("react-dom/server.browser"), 1),
|
|
40
39
|
import_react_native = require("react-native-web"),
|
|
41
40
|
import_clientLoaderResolver = require("./clientLoaderResolver.cjs"),
|
|
42
|
-
import_Root = require("./Root.cjs"),
|
|
43
41
|
import_render = require("./render.cjs"),
|
|
42
|
+
import_Root = require("./Root.cjs"),
|
|
44
43
|
import_useViteRoutes = require("./router/useViteRoutes.cjs"),
|
|
45
|
-
import_server_render = require("./server-render.cjs"),
|
|
46
44
|
import_useServerHeadInsertion = require("./useServerHeadInsertion.cjs"),
|
|
47
45
|
import_ensureExists = require("./utils/ensureExists.cjs"),
|
|
48
46
|
import_constants = require("./vite/constants.cjs"),
|
|
@@ -53,6 +51,9 @@ function createApp(options) {
|
|
|
53
51
|
if (import_meta.env.SSR) return {
|
|
54
52
|
options,
|
|
55
53
|
render: async props => {
|
|
54
|
+
const [ReactDOMServer, serverRender] = await Promise.all([import("react-dom/server.browser"), import("./server-render")]),
|
|
55
|
+
renderToStaticMarkup = ReactDOMServer.renderToStaticMarkup || ReactDOMServer.default?.renderToStaticMarkup,
|
|
56
|
+
renderToString = serverRender.renderToString;
|
|
56
57
|
let {
|
|
57
58
|
loaderData,
|
|
58
59
|
loaderProps,
|
|
@@ -84,7 +85,7 @@ function createApp(options) {
|
|
|
84
85
|
import_react_native.AppRegistry.registerComponent("App", () => App);
|
|
85
86
|
const Application = import_react_native.AppRegistry.getApplication("App", {}),
|
|
86
87
|
rootElement = Application.element.props.children;
|
|
87
|
-
let html = await
|
|
88
|
+
let html = await renderToString(rootElement, {
|
|
88
89
|
preloads: props.preloads
|
|
89
90
|
});
|
|
90
91
|
try {
|
|
@@ -99,7 +100,7 @@ function createApp(options) {
|
|
|
99
100
|
out && extraHeadElements.push(out);
|
|
100
101
|
}
|
|
101
102
|
if (extraHeadElements.length) {
|
|
102
|
-
const extraHeadHTML =
|
|
103
|
+
const extraHeadHTML = renderToStaticMarkup(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
|
|
103
104
|
children: extraHeadElements.map((x, i) => (0, import_react.cloneElement)(x, {
|
|
104
105
|
key: i
|
|
105
106
|
}))
|
package/dist/cjs/createApp.js
CHANGED
|
@@ -25,13 +25,17 @@ __export(createApp_exports, {
|
|
|
25
25
|
createApp: () => createApp
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(createApp_exports);
|
|
28
|
-
var import_setup = require("./setup"), import_react = require("react"),
|
|
28
|
+
var import_setup = require("./setup"), import_react = require("react"), import_react_native = require("react-native-web"), import_clientLoaderResolver = require("./clientLoaderResolver"), import_render = require("./render"), import_Root = require("./Root"), import_useViteRoutes = require("./router/useViteRoutes"), import_useServerHeadInsertion = require("./useServerHeadInsertion"), import_ensureExists = require("./utils/ensureExists"), import_constants = require("./vite/constants"), import_one_server_only = require("./vite/one-server-only"), import_jsx_runtime = require("react/jsx-runtime");
|
|
29
29
|
const import_meta = {};
|
|
30
30
|
function createApp(options) {
|
|
31
31
|
if (import_meta.env.SSR)
|
|
32
32
|
return {
|
|
33
33
|
options,
|
|
34
34
|
render: async (props) => {
|
|
35
|
+
const [ReactDOMServer, serverRender] = await Promise.all([
|
|
36
|
+
import("react-dom/server.browser"),
|
|
37
|
+
import("./server-render")
|
|
38
|
+
]), renderToStaticMarkup = ReactDOMServer.renderToStaticMarkup || ReactDOMServer.default?.renderToStaticMarkup, renderToString = serverRender.renderToString;
|
|
35
39
|
let { loaderData, loaderProps, css, cssContents, mode, loaderServerData, routePreloads: routePreloads2 } = props;
|
|
36
40
|
(0, import_one_server_only.setServerContext)({
|
|
37
41
|
postRenderData: loaderServerData,
|
|
@@ -57,7 +61,7 @@ function createApp(options) {
|
|
|
57
61
|
);
|
|
58
62
|
import_react_native.AppRegistry.registerComponent("App", () => App);
|
|
59
63
|
const Application = import_react_native.AppRegistry.getApplication("App", {}), rootElement = Application.element.props.children;
|
|
60
|
-
let html = await
|
|
64
|
+
let html = await renderToString(rootElement, {
|
|
61
65
|
preloads: props.preloads
|
|
62
66
|
});
|
|
63
67
|
try {
|
|
@@ -70,7 +74,7 @@ function createApp(options) {
|
|
|
70
74
|
out && extraHeadElements.push(out);
|
|
71
75
|
}
|
|
72
76
|
if (extraHeadElements.length) {
|
|
73
|
-
const extraHeadHTML =
|
|
77
|
+
const extraHeadHTML = renderToStaticMarkup(
|
|
74
78
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: extraHeadElements.map((x, i) => (0, import_react.cloneElement)(x, { key: i })) })
|
|
75
79
|
);
|
|
76
80
|
extraHeadHTML && (html = html.replace("</head>", `${extraHeadHTML}</head>`));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createApp.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAO,oBAEP,eAA6B,kBAC7B,
|
|
5
|
-
"names": ["routePreloads"
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["routePreloads"]
|
|
6
6
|
}
|