@nuxtjs/sitemap 8.0.14 → 8.0.15
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/devtools/200.html +1 -1
- package/dist/devtools/404.html +1 -1
- package/dist/devtools/_nuxt/6e7EVM9D.js +1 -0
- package/dist/devtools/_nuxt/B-mzd7ax.js +1 -0
- package/dist/devtools/_nuxt/{DmbPSlf_.js → B9WcJBuc.js} +1 -1
- package/dist/devtools/_nuxt/{uUQkUixz.js → CU6z_fY3.js} +1 -1
- package/dist/devtools/_nuxt/CnYZ0nz4.js +181 -0
- package/dist/devtools/_nuxt/{Bps53xiY.js → D8q6Bo8T.js} +1 -1
- package/dist/devtools/_nuxt/DevtoolsEmptyState.DlsL4HGP.css +1 -0
- package/dist/devtools/_nuxt/DevtoolsSnippet.Crn-Jli8.css +1 -0
- package/dist/devtools/_nuxt/Dfz508oS.js +1 -0
- package/dist/devtools/_nuxt/{Source.CqReLZgs.css → Source.BJXCd4ey.css} +1 -1
- package/dist/devtools/_nuxt/builds/latest.json +1 -1
- package/dist/devtools/_nuxt/builds/meta/6a13e94e-54b2-4e42-b5dc-6941d3a319d9.json +1 -0
- package/dist/devtools/_nuxt/{siXT-W_N.js → dhgsCGhG.js} +1 -1
- package/dist/devtools/_nuxt/{entry.DU7QPSAx.css → entry.l1zFHB5e.css} +1 -1
- package/dist/devtools/_nuxt/h6WhJoib.js +1 -0
- package/dist/devtools/_nuxt/{CDDzqGso.js → h7zQ0TxP.js} +1 -1
- package/dist/devtools/_nuxt/pages.BDuS3Qx_.css +1 -0
- package/dist/devtools/app-sources/index.html +1 -1
- package/dist/devtools/debug/index.html +1 -1
- package/dist/devtools/docs/index.html +1 -1
- package/dist/devtools/index.html +1 -1
- package/dist/devtools/user-sources/index.html +1 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/server/plugins/warm-up.js +19 -5
- package/dist/runtime/server/routes/__sitemap__/debug.js +1 -1
- package/dist/runtime/server/routes/__sitemap__/nuxt-content-urls-v2.js +1 -1
- package/dist/runtime/server/routes/__sitemap__/nuxt-content-urls-v3.js +2 -2
- package/dist/runtime/server/routes/sitemap.xsl.js +2 -2
- package/dist/runtime/server/sitemap/builder/sitemap-index.js +31 -83
- package/dist/runtime/server/sitemap/builder/sitemap.d.ts +7 -2
- package/dist/runtime/server/sitemap/builder/sitemap.js +64 -48
- package/dist/runtime/server/sitemap/nitro.js +6 -5
- package/dist/runtime/server/utils.js +1 -1
- package/dist/runtime/types.d.ts +10 -0
- package/package.json +11 -11
- package/dist/devtools/_nuxt/C2pUG4va.js +0 -1
- package/dist/devtools/_nuxt/CyvyCK6P.js +0 -1
- package/dist/devtools/_nuxt/D6bB4cSl.js +0 -1
- package/dist/devtools/_nuxt/DevtoolsEmptyState.0UhhkvNL.css +0 -1
- package/dist/devtools/_nuxt/DevtoolsSnippet.DFV_ZzPt.css +0 -1
- package/dist/devtools/_nuxt/Dh6ZicPT.js +0 -181
- package/dist/devtools/_nuxt/builds/meta/fd52c715-00b6-4524-85bf-ca451c76ea4a.json +0 -1
- package/dist/devtools/_nuxt/gMbbZ4Is.js +0 -1
- package/dist/devtools/_nuxt/pages.BJpQykfA.css +0 -1
package/dist/module.mjs
CHANGED
|
@@ -1082,7 +1082,7 @@ ${onUrlEntries.join("\n")}`;
|
|
|
1082
1082
|
cacheMaxAgeSeconds: runtimeConfig.cacheMaxAgeSeconds,
|
|
1083
1083
|
debug: runtimeConfig.debug
|
|
1084
1084
|
};
|
|
1085
|
-
const {
|
|
1085
|
+
const { debug: _d, ...staticRuntimeConfig } = runtimeConfig;
|
|
1086
1086
|
nuxt.options.runtimeConfig.sitemap = dynamicRuntimeConfig;
|
|
1087
1087
|
nuxt.hook("nitro:config", (nitroConfig) => {
|
|
1088
1088
|
nitroConfig.virtual = nitroConfig.virtual || {};
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
import { defineNitroPlugin } from "nitropack/runtime";
|
|
2
|
-
import { withLeadingSlash } from "ufo";
|
|
2
|
+
import { joinURL, withLeadingSlash } from "ufo";
|
|
3
3
|
import { useSitemapRuntimeConfig } from "../utils.js";
|
|
4
4
|
export default defineNitroPlugin((nitroApp) => {
|
|
5
|
-
const { sitemaps } = useSitemapRuntimeConfig();
|
|
5
|
+
const { sitemaps, sitemapsPathPrefix } = useSitemapRuntimeConfig();
|
|
6
6
|
const queue = [];
|
|
7
7
|
const timeoutIds = [];
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const enqueue = (path) => {
|
|
9
|
+
queue.push(() => nitroApp.localFetch(withLeadingSlash(path), {}));
|
|
10
|
+
};
|
|
11
|
+
for (const [name, sitemap] of Object.entries(sitemaps)) {
|
|
12
|
+
if (!sitemap._route)
|
|
13
|
+
continue;
|
|
14
|
+
if (name === "index") {
|
|
15
|
+
enqueue(sitemap._route);
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const def = sitemap;
|
|
19
|
+
if (def.chunks || def._isChunking) {
|
|
20
|
+
enqueue(joinURL(sitemapsPathPrefix || "/", `${name}-0.xml`));
|
|
21
|
+
} else {
|
|
22
|
+
enqueue(sitemap._route);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
11
25
|
const initialTimeout = setTimeout(
|
|
12
26
|
() => {
|
|
13
27
|
const next = async () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getNitroOrigin, getSiteConfig } from "#site-config/server/composables";
|
|
2
1
|
import { defineEventHandler } from "h3";
|
|
2
|
+
import { getNitroOrigin, getSiteConfig } from "#site-config/server/composables";
|
|
3
3
|
import { validateSitemapUrl } from "../../sitemap/urlset/normalise.js";
|
|
4
4
|
import {
|
|
5
5
|
childSitemapSources,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { serverQueryContent } from "#content/server";
|
|
2
1
|
import { defineEventHandler } from "h3";
|
|
2
|
+
import { serverQueryContent } from "#content/server";
|
|
3
3
|
export default defineEventHandler(async (e) => {
|
|
4
4
|
const contentList = await serverQueryContent(e).find();
|
|
5
5
|
return contentList.map((c) => c.sitemap).filter(Boolean);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { queryCollection } from "@nuxt/content/server";
|
|
2
|
+
import { defineEventHandler } from "h3";
|
|
1
3
|
import manifest from "#content/manifest";
|
|
2
4
|
import { filters } from "#sitemap/content-filters";
|
|
3
5
|
import { onUrlFns } from "#sitemap/content-on-url";
|
|
4
|
-
import { queryCollection } from "@nuxt/content/server";
|
|
5
|
-
import { defineEventHandler } from "h3";
|
|
6
6
|
export default defineEventHandler(async (e) => {
|
|
7
7
|
const collections = [];
|
|
8
8
|
for (const collection in manifest) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { getSiteConfig } from "#site-config/server/composables";
|
|
2
|
-
import { createSitePathResolver } from "#site-config/server/composables/utils";
|
|
3
1
|
import { defineEventHandler, getHeader, getQuery as h3GetQuery, setHeader } from "h3";
|
|
4
2
|
import { getQuery, parseURL, withQuery } from "ufo";
|
|
3
|
+
import { getSiteConfig } from "#site-config/server/composables";
|
|
4
|
+
import { createSitePathResolver } from "#site-config/server/composables/utils";
|
|
5
5
|
import { useSitemapRuntimeConfig, xmlEscape } from "../utils.js";
|
|
6
6
|
export default defineEventHandler(async (e) => {
|
|
7
7
|
const fixPath = createSitePathResolver(e, { absolute: false, withBase: true });
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { defu } from "defu";
|
|
2
1
|
import { getHeader } from "h3";
|
|
3
|
-
import { defineCachedFunction
|
|
2
|
+
import { defineCachedFunction } from "nitropack/runtime";
|
|
4
3
|
import { joinURL, withQuery } from "ufo";
|
|
4
|
+
import staticConfig from "#sitemap-virtual/static-config.mjs";
|
|
5
5
|
import { normaliseDate } from "../urlset/normalise.js";
|
|
6
|
-
import {
|
|
7
|
-
import { childSitemapSources, globalSitemapSources, resolveSitemapSources } from "../urlset/sources.js";
|
|
8
|
-
import { resolveSitemapEntries } from "./sitemap.js";
|
|
6
|
+
import { getResolvedSitemapUrls } from "./sitemap.js";
|
|
9
7
|
import { escapeValueForXml } from "./xml.js";
|
|
8
|
+
const SERVER_CACHE_MAX_AGE = staticConfig.cacheMaxAgeSeconds || 60 * 10;
|
|
10
9
|
const buildSitemapIndexCached = defineCachedFunction(
|
|
11
10
|
async (event, resolvers, runtimeConfig, nitro) => {
|
|
12
11
|
return buildSitemapIndexInternal(resolvers, runtimeConfig, nitro);
|
|
@@ -14,8 +13,7 @@ const buildSitemapIndexCached = defineCachedFunction(
|
|
|
14
13
|
{
|
|
15
14
|
name: "sitemap:index",
|
|
16
15
|
group: "sitemap",
|
|
17
|
-
maxAge:
|
|
18
|
-
// 10 minutes default
|
|
16
|
+
maxAge: SERVER_CACHE_MAX_AGE,
|
|
19
17
|
base: "sitemap",
|
|
20
18
|
// Use the sitemap storage
|
|
21
19
|
getKey: (event) => {
|
|
@@ -30,21 +28,13 @@ const buildSitemapIndexCached = defineCachedFunction(
|
|
|
30
28
|
async function buildSitemapIndexInternal(resolvers, runtimeConfig, nitro) {
|
|
31
29
|
const {
|
|
32
30
|
sitemaps,
|
|
33
|
-
// enhancing
|
|
34
31
|
autoLastmod,
|
|
35
|
-
// chunking
|
|
36
32
|
defaultSitemapsChunkSize,
|
|
37
|
-
autoI18n,
|
|
38
|
-
isI18nMapped,
|
|
39
|
-
sortEntries,
|
|
40
33
|
sitemapsPathPrefix
|
|
41
34
|
} = runtimeConfig;
|
|
42
35
|
if (!sitemaps)
|
|
43
36
|
throw new Error("Attempting to build a sitemap index without required `sitemaps` configuration.");
|
|
44
|
-
|
|
45
|
-
return sortEntries ? sortInPlace(urls) : urls;
|
|
46
|
-
}
|
|
47
|
-
const chunks = {};
|
|
37
|
+
const nonChunkedNames = [];
|
|
48
38
|
const allFailedSources = [];
|
|
49
39
|
for (const sitemapName in sitemaps) {
|
|
50
40
|
if (sitemapName === "index" || sitemapName === "chunks")
|
|
@@ -54,85 +44,47 @@ async function buildSitemapIndexInternal(resolvers, runtimeConfig, nitro) {
|
|
|
54
44
|
sitemapConfig._isChunking = true;
|
|
55
45
|
sitemapConfig._chunkSize = sitemapConfig.chunkSize || (typeof sitemapConfig.chunks === "number" ? sitemapConfig.chunks : defaultSitemapsChunkSize || 1e3);
|
|
56
46
|
} else {
|
|
57
|
-
|
|
47
|
+
nonChunkedNames.push(sitemapName);
|
|
58
48
|
}
|
|
59
49
|
}
|
|
50
|
+
const indexLastmod = autoLastmod ? normaliseDate(/* @__PURE__ */ new Date()) : void 0;
|
|
51
|
+
const entries = [];
|
|
60
52
|
if (typeof sitemaps.chunks !== "undefined") {
|
|
61
53
|
const sitemap = sitemaps.chunks;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
54
|
+
const resolved = await getResolvedSitemapUrls(sitemap, "sitemap", true, resolvers, runtimeConfig, nitro);
|
|
55
|
+
allFailedSources.push(...resolved.failedSources);
|
|
56
|
+
const chunkCount = Math.ceil(resolved.urls.length / defaultSitemapsChunkSize);
|
|
57
|
+
for (let i = 0; i < chunkCount; i++) {
|
|
58
|
+
const entry = {
|
|
59
|
+
_sitemapName: String(i),
|
|
60
|
+
sitemap: resolvers.canonicalUrlResolver(joinURL(sitemapsPathPrefix || "", `/${i}.xml`))
|
|
68
61
|
};
|
|
69
|
-
|
|
70
|
-
|
|
62
|
+
if (indexLastmod)
|
|
63
|
+
entry.lastmod = indexLastmod;
|
|
64
|
+
entries.push(entry);
|
|
71
65
|
}
|
|
72
|
-
const sources = await resolveSitemapSources(sourcesInput, resolvers.event);
|
|
73
|
-
const failedSources = sources.filter((source) => source.error && source._isFailure).map((source) => ({
|
|
74
|
-
url: typeof source.fetch === "string" ? source.fetch : source.fetch?.[0] || "unknown",
|
|
75
|
-
error: source.error || "Unknown error"
|
|
76
|
-
}));
|
|
77
|
-
allFailedSources.push(...failedSources);
|
|
78
|
-
const resolvedCtx = {
|
|
79
|
-
urls: sources.flatMap((s) => s.urls),
|
|
80
|
-
sitemapName: sitemap.sitemapName,
|
|
81
|
-
event: resolvers.event
|
|
82
|
-
};
|
|
83
|
-
await nitro?.hooks.callHook("sitemap:input", resolvedCtx);
|
|
84
|
-
const normalisedUrls = resolveSitemapEntries(sitemap, resolvedCtx.urls, { autoI18n, isI18nMapped }, resolvers, useRuntimeConfig().app.baseURL);
|
|
85
|
-
const enhancedUrls = normalisedUrls.map((e) => defu(e, sitemap.defaults));
|
|
86
|
-
const sortedUrls = maybeSort(enhancedUrls);
|
|
87
|
-
sortedUrls.forEach((url, i) => {
|
|
88
|
-
const chunkIndex = Math.floor(i / defaultSitemapsChunkSize);
|
|
89
|
-
chunks[chunkIndex] = chunks[chunkIndex] || { urls: [] };
|
|
90
|
-
chunks[chunkIndex].urls.push(url);
|
|
91
|
-
});
|
|
92
66
|
}
|
|
93
|
-
const
|
|
94
|
-
for (const name in chunks) {
|
|
95
|
-
const sitemap = chunks[name];
|
|
67
|
+
for (const name of nonChunkedNames) {
|
|
96
68
|
const entry = {
|
|
97
69
|
_sitemapName: name,
|
|
98
70
|
sitemap: resolvers.canonicalUrlResolver(joinURL(sitemapsPathPrefix || "", `/${name}.xml`))
|
|
99
71
|
};
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
lastmod = /* @__PURE__ */ new Date();
|
|
103
|
-
if (lastmod)
|
|
104
|
-
entry.lastmod = normaliseDate(lastmod);
|
|
72
|
+
if (indexLastmod)
|
|
73
|
+
entry.lastmod = indexLastmod;
|
|
105
74
|
entries.push(entry);
|
|
106
75
|
}
|
|
107
76
|
for (const sitemapName in sitemaps) {
|
|
108
77
|
const sitemapConfig = sitemaps[sitemapName];
|
|
109
78
|
if (sitemapName !== "index" && sitemapConfig._isChunking) {
|
|
110
79
|
const chunkSize = sitemapConfig._chunkSize || defaultSitemapsChunkSize || 1e3;
|
|
111
|
-
let
|
|
112
|
-
if (
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
await nitro.hooks.callHook("sitemap:sources", ctx);
|
|
119
|
-
sourcesInput = ctx.sources;
|
|
80
|
+
let chunkCount;
|
|
81
|
+
if (typeof sitemapConfig.chunkCount === "number" && sitemapConfig.chunkCount > 0) {
|
|
82
|
+
chunkCount = sitemapConfig.chunkCount;
|
|
83
|
+
} else {
|
|
84
|
+
const resolved = await getResolvedSitemapUrls(sitemapConfig, sitemapName, true, resolvers, runtimeConfig, nitro);
|
|
85
|
+
allFailedSources.push(...resolved.failedSources);
|
|
86
|
+
chunkCount = Math.ceil(resolved.urls.length / chunkSize);
|
|
120
87
|
}
|
|
121
|
-
const sources = await resolveSitemapSources(sourcesInput, resolvers.event);
|
|
122
|
-
const failedSources = sources.filter((source) => source.error && source._isFailure).map((source) => ({
|
|
123
|
-
url: typeof source.fetch === "string" ? source.fetch : source.fetch?.[0] || "unknown",
|
|
124
|
-
error: source.error || "Unknown error"
|
|
125
|
-
}));
|
|
126
|
-
allFailedSources.push(...failedSources);
|
|
127
|
-
const resolvedCtx = {
|
|
128
|
-
urls: sources.flatMap((s) => s.urls),
|
|
129
|
-
sitemapName: sitemapConfig.sitemapName,
|
|
130
|
-
event: resolvers.event
|
|
131
|
-
};
|
|
132
|
-
await nitro?.hooks.callHook("sitemap:input", resolvedCtx);
|
|
133
|
-
const normalisedUrls = resolveSitemapEntries(sitemapConfig, resolvedCtx.urls, { autoI18n, isI18nMapped }, resolvers, useRuntimeConfig().app.baseURL);
|
|
134
|
-
const totalUrls = normalisedUrls.length;
|
|
135
|
-
const chunkCount = Math.ceil(totalUrls / chunkSize);
|
|
136
88
|
sitemapConfig._chunkCount = chunkCount;
|
|
137
89
|
for (let i = 0; i < chunkCount; i++) {
|
|
138
90
|
const chunkName = `${sitemapName}-${i}`;
|
|
@@ -140,12 +92,8 @@ async function buildSitemapIndexInternal(resolvers, runtimeConfig, nitro) {
|
|
|
140
92
|
_sitemapName: chunkName,
|
|
141
93
|
sitemap: resolvers.canonicalUrlResolver(joinURL(sitemapsPathPrefix || "", `/${chunkName}.xml`))
|
|
142
94
|
};
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (!lastmod && autoLastmod)
|
|
146
|
-
lastmod = /* @__PURE__ */ new Date();
|
|
147
|
-
if (lastmod)
|
|
148
|
-
entry.lastmod = normaliseDate(lastmod);
|
|
95
|
+
if (indexLastmod)
|
|
96
|
+
entry.lastmod = indexLastmod;
|
|
149
97
|
entries.push(entry);
|
|
150
98
|
}
|
|
151
99
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { H3Event } from 'h3';
|
|
1
2
|
import type { NitroApp } from 'nitropack/types';
|
|
2
3
|
import type { AutoI18nConfig, ModuleRuntimeConfig, NitroUrlResolvers, ResolvedSitemapUrl, SitemapDefinition, SitemapUrlInput } from '../../../types.js';
|
|
3
4
|
export interface NormalizedI18n extends ResolvedSitemapUrl {
|
|
@@ -6,11 +7,15 @@ export interface NormalizedI18n extends ResolvedSitemapUrl {
|
|
|
6
7
|
_index?: number;
|
|
7
8
|
}
|
|
8
9
|
export declare function resolveSitemapEntries(sitemap: SitemapDefinition, urls: SitemapUrlInput[], runtimeConfig: Pick<ModuleRuntimeConfig, 'autoI18n' | 'isI18nMapped'>, resolvers?: NitroUrlResolvers, baseURL?: string): ResolvedSitemapUrl[];
|
|
9
|
-
export
|
|
10
|
+
export interface ResolvedSitemapUrlsResult {
|
|
10
11
|
urls: ResolvedSitemapUrl[];
|
|
11
12
|
failedSources: Array<{
|
|
12
13
|
url: string;
|
|
13
14
|
error: string;
|
|
14
15
|
}>;
|
|
15
|
-
}
|
|
16
|
+
}
|
|
17
|
+
export declare function buildResolvedSitemapUrls(effectiveSitemap: SitemapDefinition, matchName: string, isChunked: boolean, resolvers: NitroUrlResolvers, runtimeConfig: ModuleRuntimeConfig, nitro?: NitroApp): Promise<ResolvedSitemapUrlsResult>;
|
|
18
|
+
export declare const buildResolvedSitemapUrlsCached: (_event: H3Event<import("h3").EventHandlerRequest>, effectiveSitemap: SitemapDefinition, matchName: string, isChunked: boolean, resolvers: NitroUrlResolvers, runtimeConfig: ModuleRuntimeConfig, nitro?: NitroApp | undefined) => Promise<ResolvedSitemapUrlsResult>;
|
|
19
|
+
export declare function getResolvedSitemapUrls(effectiveSitemap: SitemapDefinition, matchName: string, isChunked: boolean, resolvers: NitroUrlResolvers, runtimeConfig: ModuleRuntimeConfig, nitro?: NitroApp): Promise<ResolvedSitemapUrlsResult>;
|
|
20
|
+
export declare function buildSitemapUrls(sitemap: SitemapDefinition, resolvers: NitroUrlResolvers, runtimeConfig: ModuleRuntimeConfig, nitro?: NitroApp): Promise<ResolvedSitemapUrlsResult>;
|
|
16
21
|
export { urlsToXml } from './xml.js';
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getHeader } from "h3";
|
|
2
|
+
import { defineCachedFunction, useRuntimeConfig } from "nitropack/runtime";
|
|
2
3
|
import { resolveSitePath } from "nuxt-site-config/urls";
|
|
3
4
|
import { joinURL, withHttps } from "ufo";
|
|
5
|
+
import staticConfig from "#sitemap-virtual/static-config.mjs";
|
|
4
6
|
import { applyDynamicParams, createPathFilter, findPageMapping, logger, splitForLocales } from "../../../utils-pure.js";
|
|
5
7
|
import { preNormalizeEntry } from "../urlset/normalise.js";
|
|
6
8
|
import { sortInPlace } from "../urlset/sort.js";
|
|
7
9
|
import { childSitemapSources, globalSitemapSources, resolveSitemapSources } from "../urlset/sources.js";
|
|
8
10
|
import { parseChunkInfo, sliceUrlsForChunk } from "../utils/chunk.js";
|
|
11
|
+
const SERVER_CACHE_MAX_AGE = staticConfig.cacheMaxAgeSeconds || 60 * 10;
|
|
9
12
|
export function resolveSitemapEntries(sitemap, urls, runtimeConfig, resolvers, baseURL) {
|
|
10
13
|
const {
|
|
11
14
|
autoI18n,
|
|
@@ -162,49 +165,13 @@ export function resolveSitemapEntries(sitemap, urls, runtimeConfig, resolvers, b
|
|
|
162
165
|
}
|
|
163
166
|
return _urls;
|
|
164
167
|
}
|
|
165
|
-
export async function
|
|
166
|
-
const {
|
|
167
|
-
sitemaps,
|
|
168
|
-
// enhancing
|
|
169
|
-
autoI18n,
|
|
170
|
-
isI18nMapped,
|
|
171
|
-
isMultiSitemap,
|
|
172
|
-
// sorting
|
|
173
|
-
sortEntries,
|
|
174
|
-
// chunking
|
|
175
|
-
defaultSitemapsChunkSize
|
|
176
|
-
} = runtimeConfig;
|
|
177
|
-
const chunkSize = defaultSitemapsChunkSize || void 0;
|
|
178
|
-
const chunkInfo = parseChunkInfo(sitemap.sitemapName, sitemaps, chunkSize);
|
|
179
|
-
function maybeSort(urls2) {
|
|
180
|
-
return sortEntries ? sortInPlace(urls2) : urls2;
|
|
181
|
-
}
|
|
182
|
-
function maybeSlice(urls2) {
|
|
183
|
-
return sliceUrlsForChunk(urls2, sitemap.sitemapName, sitemaps, chunkSize);
|
|
184
|
-
}
|
|
185
|
-
if (autoI18n?.differentDomains) {
|
|
186
|
-
const domain = autoI18n.locales.find((e) => e.language === sitemap.sitemapName || e.code === sitemap.sitemapName)?.domain;
|
|
187
|
-
if (domain) {
|
|
188
|
-
const _tester = resolvers.canonicalUrlResolver;
|
|
189
|
-
resolvers.canonicalUrlResolver = (path) => resolveSitePath(path, {
|
|
190
|
-
absolute: true,
|
|
191
|
-
withBase: false,
|
|
192
|
-
siteUrl: withHttps(domain),
|
|
193
|
-
trailingSlash: _tester("/test/").endsWith("/"),
|
|
194
|
-
base: "/"
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
let effectiveSitemap = sitemap;
|
|
199
|
-
const baseSitemapName = chunkInfo.baseSitemapName;
|
|
200
|
-
if (chunkInfo.isChunked && baseSitemapName !== sitemap.sitemapName && sitemaps[baseSitemapName]) {
|
|
201
|
-
effectiveSitemap = sitemaps[baseSitemapName];
|
|
202
|
-
}
|
|
168
|
+
export async function buildResolvedSitemapUrls(effectiveSitemap, matchName, isChunked, resolvers, runtimeConfig, nitro) {
|
|
169
|
+
const { sitemaps, autoI18n, isI18nMapped, isMultiSitemap, sortEntries } = runtimeConfig;
|
|
203
170
|
let sourcesInput = effectiveSitemap.includeAppSources ? [...await globalSitemapSources(), ...await childSitemapSources(effectiveSitemap)] : await childSitemapSources(effectiveSitemap);
|
|
204
171
|
if (nitro && resolvers.event) {
|
|
205
172
|
const ctx = {
|
|
206
173
|
event: resolvers.event,
|
|
207
|
-
sitemapName:
|
|
174
|
+
sitemapName: matchName,
|
|
208
175
|
sources: sourcesInput
|
|
209
176
|
};
|
|
210
177
|
await nitro.hooks.callHook("sitemap:sources", ctx);
|
|
@@ -217,11 +184,11 @@ export async function buildSitemapUrls(sitemap, resolvers, runtimeConfig, nitro)
|
|
|
217
184
|
}));
|
|
218
185
|
const resolvedCtx = {
|
|
219
186
|
urls: sources.flatMap((s) => s.urls),
|
|
220
|
-
sitemapName:
|
|
187
|
+
sitemapName: matchName,
|
|
221
188
|
event: resolvers.event
|
|
222
189
|
};
|
|
223
190
|
await nitro?.hooks.callHook("sitemap:input", resolvedCtx);
|
|
224
|
-
const enhancedUrls = resolveSitemapEntries(
|
|
191
|
+
const enhancedUrls = resolveSitemapEntries(effectiveSitemap, resolvedCtx.urls, { autoI18n, isI18nMapped }, resolvers, useRuntimeConfig().app.baseURL);
|
|
225
192
|
if (isMultiSitemap) {
|
|
226
193
|
const sitemapNames = Object.keys(sitemaps).filter((k) => k !== "index");
|
|
227
194
|
const warnedSitemaps = nitro?._sitemapWarnedSitemaps || /* @__PURE__ */ new Set();
|
|
@@ -241,15 +208,64 @@ export async function buildSitemapUrls(sitemap, resolvers, runtimeConfig, nitro)
|
|
|
241
208
|
const filteredUrls = enhancedUrls.filter((e) => {
|
|
242
209
|
if (e._sitemap === false)
|
|
243
210
|
return false;
|
|
244
|
-
if (isMultiSitemap && e._sitemap &&
|
|
245
|
-
if (
|
|
246
|
-
return e._sitemap ===
|
|
247
|
-
return e._sitemap ===
|
|
211
|
+
if (isMultiSitemap && e._sitemap && matchName) {
|
|
212
|
+
if (isChunked)
|
|
213
|
+
return e._sitemap === matchName;
|
|
214
|
+
return e._sitemap === matchName || isI18nMapped && matchName.startsWith(`${e._sitemap}-`);
|
|
248
215
|
}
|
|
249
216
|
return true;
|
|
250
217
|
});
|
|
251
|
-
const
|
|
252
|
-
const urls = maybeSlice(sortedUrls);
|
|
218
|
+
const urls = sortEntries ? sortInPlace(filteredUrls) : filteredUrls;
|
|
253
219
|
return { urls, failedSources };
|
|
254
220
|
}
|
|
221
|
+
export const buildResolvedSitemapUrlsCached = defineCachedFunction(
|
|
222
|
+
async (_event, effectiveSitemap, matchName, isChunked, resolvers, runtimeConfig, nitro) => buildResolvedSitemapUrls(effectiveSitemap, matchName, isChunked, resolvers, runtimeConfig, nitro),
|
|
223
|
+
{
|
|
224
|
+
name: "sitemap:resolved-urls",
|
|
225
|
+
group: "sitemap",
|
|
226
|
+
base: "sitemap",
|
|
227
|
+
maxAge: SERVER_CACHE_MAX_AGE,
|
|
228
|
+
getKey: (event, _effectiveSitemap, matchName, isChunked) => {
|
|
229
|
+
const host = getHeader(event, "host") || getHeader(event, "x-forwarded-host") || "";
|
|
230
|
+
const proto = getHeader(event, "x-forwarded-proto") || "https";
|
|
231
|
+
return `resolved-${isChunked ? "chunked-" : ""}${matchName}-${proto}-${host}`;
|
|
232
|
+
},
|
|
233
|
+
swr: true
|
|
234
|
+
}
|
|
235
|
+
);
|
|
236
|
+
export async function getResolvedSitemapUrls(effectiveSitemap, matchName, isChunked, resolvers, runtimeConfig, nitro) {
|
|
237
|
+
const event = resolvers.event;
|
|
238
|
+
const shouldCache = !import.meta.dev && !import.meta.prerender && typeof runtimeConfig.cacheMaxAgeSeconds === "number" && runtimeConfig.cacheMaxAgeSeconds > 0;
|
|
239
|
+
if (shouldCache && event) {
|
|
240
|
+
return buildResolvedSitemapUrlsCached(event, effectiveSitemap, matchName, isChunked, resolvers, runtimeConfig, nitro);
|
|
241
|
+
}
|
|
242
|
+
return buildResolvedSitemapUrls(effectiveSitemap, matchName, isChunked, resolvers, runtimeConfig, nitro);
|
|
243
|
+
}
|
|
244
|
+
export async function buildSitemapUrls(sitemap, resolvers, runtimeConfig, nitro) {
|
|
245
|
+
const { sitemaps, autoI18n, defaultSitemapsChunkSize } = runtimeConfig;
|
|
246
|
+
const chunkSize = defaultSitemapsChunkSize || void 0;
|
|
247
|
+
const chunkInfo = parseChunkInfo(sitemap.sitemapName, sitemaps, chunkSize);
|
|
248
|
+
if (autoI18n?.differentDomains) {
|
|
249
|
+
const domain = autoI18n.locales.find((e) => e.language === sitemap.sitemapName || e.code === sitemap.sitemapName)?.domain;
|
|
250
|
+
if (domain) {
|
|
251
|
+
const _tester = resolvers.canonicalUrlResolver;
|
|
252
|
+
resolvers.canonicalUrlResolver = (path) => resolveSitePath(path, {
|
|
253
|
+
absolute: true,
|
|
254
|
+
withBase: false,
|
|
255
|
+
siteUrl: withHttps(domain),
|
|
256
|
+
trailingSlash: _tester("/test/").endsWith("/"),
|
|
257
|
+
base: "/"
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
let effectiveSitemap = sitemap;
|
|
262
|
+
const baseSitemapName = chunkInfo.baseSitemapName;
|
|
263
|
+
if (chunkInfo.isChunked && baseSitemapName !== sitemap.sitemapName && sitemaps[baseSitemapName]) {
|
|
264
|
+
effectiveSitemap = sitemaps[baseSitemapName];
|
|
265
|
+
}
|
|
266
|
+
const matchName = chunkInfo.isChunked ? baseSitemapName : sitemap.sitemapName;
|
|
267
|
+
const resolved = await getResolvedSitemapUrls(effectiveSitemap, matchName, chunkInfo.isChunked, resolvers, runtimeConfig, nitro);
|
|
268
|
+
const urls = sliceUrlsForChunk(resolved.urls, sitemap.sitemapName, sitemaps, chunkSize);
|
|
269
|
+
return { urls, failedSources: resolved.failedSources };
|
|
270
|
+
}
|
|
255
271
|
export { urlsToXml } from "./xml.js";
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { getPathRobotConfig } from "#internal/nuxt-robots/getPathRobotConfig";
|
|
2
|
-
import { getSiteConfig } from "#site-config/server/composables/getSiteConfig";
|
|
3
|
-
import { createSitePathResolver } from "#site-config/server/composables/utils";
|
|
4
1
|
import { defu } from "defu";
|
|
5
2
|
import { createError, getHeader, getQuery, setHeader } from "h3";
|
|
6
3
|
import { defineCachedFunction, useNitroApp } from "nitropack/runtime";
|
|
7
4
|
import { fixSlashes } from "nuxt-site-config/urls";
|
|
5
|
+
import { getPathRobotConfig } from "#internal/nuxt-robots/getPathRobotConfig";
|
|
6
|
+
import { getSiteConfig } from "#site-config/server/composables/getSiteConfig";
|
|
7
|
+
import { createSitePathResolver } from "#site-config/server/composables/utils";
|
|
8
|
+
import staticConfig from "#sitemap-virtual/static-config.mjs";
|
|
8
9
|
import { logger, mergeOnKey, splitForLocales } from "../../utils-pure.js";
|
|
9
10
|
import { createNitroRouteRuleMatcher } from "../kit.js";
|
|
10
11
|
import { buildSitemapUrls, urlsToXml } from "./builder/sitemap.js";
|
|
11
12
|
import { normaliseEntry, preNormalizeEntry } from "./urlset/normalise.js";
|
|
12
13
|
import { sortInPlace } from "./urlset/sort.js";
|
|
14
|
+
const SERVER_CACHE_MAX_AGE = staticConfig.cacheMaxAgeSeconds || 60 * 10;
|
|
13
15
|
export function useNitroUrlResolvers(e) {
|
|
14
16
|
const canonicalQuery = getQuery(e).canonical;
|
|
15
17
|
const isShowingCanonical = typeof canonicalQuery !== "undefined" && canonicalQuery !== "false";
|
|
@@ -118,8 +120,7 @@ const buildSitemapXmlCached = defineCachedFunction(
|
|
|
118
120
|
{
|
|
119
121
|
name: "sitemap:xml",
|
|
120
122
|
group: "sitemap",
|
|
121
|
-
maxAge:
|
|
122
|
-
// Default 10 minutes
|
|
123
|
+
maxAge: SERVER_CACHE_MAX_AGE,
|
|
123
124
|
base: "sitemap",
|
|
124
125
|
// Use the sitemap storage
|
|
125
126
|
getKey: (event, definition) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import staticConfig from "#sitemap-virtual/static-config.mjs";
|
|
2
1
|
import { useRuntimeConfig } from "nitropack/runtime";
|
|
2
|
+
import staticConfig from "#sitemap-virtual/static-config.mjs";
|
|
3
3
|
import { normalizeRuntimeFilters } from "../utils-pure.js";
|
|
4
4
|
export * from "../utils-pure.js";
|
|
5
5
|
export function xmlEscape(str) {
|
package/dist/runtime/types.d.ts
CHANGED
|
@@ -338,6 +338,16 @@ export interface SitemapDefinition {
|
|
|
338
338
|
* @example 10000
|
|
339
339
|
*/
|
|
340
340
|
chunkSize?: number;
|
|
341
|
+
/**
|
|
342
|
+
* Pre-declare the number of chunks this sitemap will produce. When set, the sitemap index
|
|
343
|
+
* renders this many chunk entries without fetching the source data — useful at very large
|
|
344
|
+
* scale where the cold-start fetch is the bottleneck. Per-chunk renders still fetch on
|
|
345
|
+
* demand and slice. If the actual data produces fewer URLs than declared, tail chunks render
|
|
346
|
+
* empty; if more, the extras are unreachable. Update this when your data set grows.
|
|
347
|
+
*
|
|
348
|
+
* @example 100
|
|
349
|
+
*/
|
|
350
|
+
chunkCount?: number;
|
|
341
351
|
/**
|
|
342
352
|
* @internal
|
|
343
353
|
*/
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuxtjs/sitemap",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "8.0.
|
|
4
|
+
"version": "8.0.15",
|
|
5
5
|
"description": "Powerfully flexible XML Sitemaps that integrate seamlessly, for Nuxt.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@nuxt/kit": "^4.4.
|
|
58
|
+
"@nuxt/kit": "^4.4.4",
|
|
59
59
|
"consola": "^3.4.2",
|
|
60
60
|
"defu": "^6.1.7",
|
|
61
61
|
"fast-xml-parser": "^5.7.2",
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"nuxtseo-shared": "^5.1.3",
|
|
64
64
|
"ofetch": "^1.5.1",
|
|
65
65
|
"pathe": "^2.0.3",
|
|
66
|
-
"pkg-types": "^2.3.
|
|
66
|
+
"pkg-types": "^2.3.1",
|
|
67
67
|
"radix3": "^1.1.2",
|
|
68
|
-
"ufo": "^1.6.
|
|
68
|
+
"ufo": "^1.6.4",
|
|
69
69
|
"ultrahtml": "^1.6.0"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
@@ -74,19 +74,19 @@
|
|
|
74
74
|
"@nuxt/content": "^3.13.0",
|
|
75
75
|
"@nuxt/devtools-kit": "4.0.0-alpha.3",
|
|
76
76
|
"@nuxt/module-builder": "^1.0.2",
|
|
77
|
-
"@nuxt/test-utils": "^4.0.
|
|
78
|
-
"@nuxt/ui": "^4.7.
|
|
77
|
+
"@nuxt/test-utils": "^4.0.3",
|
|
78
|
+
"@nuxt/ui": "^4.7.1",
|
|
79
79
|
"@nuxtjs/i18n": "^10.3.0",
|
|
80
80
|
"@nuxtjs/robots": "^6.0.8",
|
|
81
|
-
"@vue/test-utils": "^2.4.
|
|
81
|
+
"@vue/test-utils": "^2.4.10",
|
|
82
82
|
"better-sqlite3": "^12.9.0",
|
|
83
83
|
"bumpp": "^11.0.1",
|
|
84
84
|
"eslint": "^10.2.1",
|
|
85
85
|
"eslint-plugin-harlanzw": "^0.12.1",
|
|
86
86
|
"execa": "^9.6.1",
|
|
87
87
|
"happy-dom": "^20.9.0",
|
|
88
|
-
"nuxt": "^4.4.
|
|
89
|
-
"nuxt-i18n-micro": "^3.17.
|
|
88
|
+
"nuxt": "^4.4.4",
|
|
89
|
+
"nuxt-i18n-micro": "^3.17.5",
|
|
90
90
|
"nuxtseo-layer-devtools": "^5.1.3",
|
|
91
91
|
"semver": "^7.7.4",
|
|
92
92
|
"sirv": "^3.0.2",
|
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
"typescript": "^6.0.3",
|
|
95
95
|
"vitest": "^4.1.5",
|
|
96
96
|
"vue-tsc": "^3.2.7",
|
|
97
|
-
"zod": "^4.
|
|
98
|
-
"@nuxtjs/sitemap": "8.0.
|
|
97
|
+
"zod": "^4.4.1",
|
|
98
|
+
"@nuxtjs/sitemap": "8.0.15"
|
|
99
99
|
},
|
|
100
100
|
"scripts": {
|
|
101
101
|
"lint": "eslint .",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,Ct as t,G as n,Ot as r,Tt as i,V as a,_ as o,g as s,h as c,m as l,rt as u,v as d,x as f}from"./CDDzqGso.js";import{t as p}from"./tBStlNYu.js";import{_ as m,a as h,o as g,t as _}from"#entry";function v(e=2e3){let{copy:t,copied:n}=m({legacy:!0,copiedDuring:e});return{copy:t,copied:n}}var y=Object.assign(e({__name:`DevtoolsCopyButton`,props:{text:{}},setup(e){let{copy:n,copied:r}=v();return(o,c)=>{let l=h,d=g;return a(),s(d,{text:t(r)?`Copied!`:`Copy`},{default:u(()=>[f(l,{icon:t(r)?`carbon:checkmark`:`carbon:copy`,"aria-label":t(r)?`Copied`:`Copy to clipboard`,class:i(t(r)?`text-[var(--seo-green)]`:``),onClick:c[0]||=r=>t(n)(e.text)},null,8,[`icon`,`aria-label`,`class`])]),_:1},8,[`text`])}}}),{__name:`DevtoolsCopyButton`}),b=[`innerHTML`],x=Object.assign(e({__name:`OCodeBlock`,props:{code:{},lang:{},lines:{type:Boolean,default:!1},transformRendered:{type:Function}},setup(e){let n=l(()=>{let t=_(e.code,e.lang);return e.transformRendered?e.transformRendered(t.value||``):t.value});return(r,o)=>(a(),d(`pre`,{class:i([`code-block p-5`,e.lines?`code-block-lines`:``]),innerHTML:t(n)},null,10,b))}}),{__name:`OCodeBlock`}),S={class:`devtools-snippet`},C={key:0,class:`devtools-snippet-header`},w={class:`devtools-snippet-label`},T=Object.assign(p(e({__name:`DevtoolsSnippet`,props:{label:{},code:{},lang:{default:`js`}},setup(e){return(t,i)=>{let s=y,l=x;return a(),d(`div`,S,[e.label||t.$slots.header?(a(),d(`div`,C,[n(t.$slots,`header`,{},()=>[c(`code`,w,r(e.label),1)],!0),f(s,{text:e.code},null,8,[`text`])])):o(``,!0),f(l,{code:e.code,lang:e.lang,class:`devtools-snippet-block`},null,8,[`code`,`lang`])])}}}),[[`__scopeId`,`data-v-a238cdeb`]]),{__name:`DevtoolsSnippet`});export{y as n,T as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,Ot as t,Tt as n,V as r,W as i,_ as a,b as o,g as s,h as c,l,m as u,rt as d,v as f,x as p}from"./CDDzqGso.js";import{t as m}from"./tBStlNYu.js";import{c as h,i as g,n as _,s as v,v as y}from"#entry";import{t as b}from"./C2pUG4va.js";var x={class:`devtools-metric-value`},S={key:1,class:`devtools-metric-label`},C=Object.assign(m(e({__name:`DevtoolsMetric`,props:{label:{},value:{},icon:{},variant:{default:`default`}},setup(e){return(i,o)=>{let l=v;return r(),f(`div`,{class:n([`devtools-metric`,`devtools-metric-${e.variant}`])},[e.icon?(r(),s(l,{key:0,name:e.icon,class:`devtools-metric-icon`,"aria-hidden":`true`},null,8,[`name`])):a(``,!0),c(`span`,x,t(e.value),1),e.label?(r(),f(`span`,S,t(e.label),1)):a(``,!0)],2)}}}),[[`__scopeId`,`data-v-535382eb`]]),{__name:`DevtoolsMetric`}),w={class:`flex items-center gap-3`},T={key:0,class:`flex items-center gap-1.5`},E={class:`font-semibold`},D={class:`flex items-center gap-3`},O=[`href`],k={key:1,class:`text-xs text-[var(--color-text-muted)]`},A={class:`text-xs font-semibold mb-1`},j={class:`url-warnings-list`},M={class:`space-y-1`},N=[`innerHTML`],P=Object.assign(m(e({__name:`Source`,props:{source:{},showContext:{type:Boolean}},setup(e){let m=e,x=u(()=>{let e=typeof m.source.fetch==`string`?m.source.fetch:m.source.fetch[0];return e.includes(`http`)?e:y(h.value?.nitroOrigin||`localhost`,e)});function S(e){return e.replace(/`([^`]+)`/g,`<code>$1</code>`)}return(u,m)=>{let h=v,y=C,P=g,F=b,I=_;return r(),s(I,{class:n(e.source.error?`source-error`:``)},{text:d(()=>[c(`div`,w,[e.source.fetch?(r(),f(`div`,T,[p(h,{name:`carbon:api-1`,class:`text-[var(--color-text-muted)]`}),e.source.timeTakenMs?(r(),s(y,{key:0,value:e.source.timeTakenMs,label:`ms`,variant:`info`},null,8,[`value`])):a(``,!0)])):a(``,!0),c(`span`,E,t(e.source.context.name),1),p(y,{value:e.source.urls?.length||0,label:`URLs`,variant:e.source.error?`danger`:e.source.urls?.length?`success`:`warning`},null,8,[`value`,`variant`])])]),description:d(()=>[c(`div`,D,[e.source.fetch?(r(),f(`a`,{key:0,href:x.value,target:`_blank`,class:`link-external text-sm`},t(e.source.fetch),9,O)):a(``,!0),e.source.context.description?(r(),f(`span`,k,t(e.source.context.description),1)):a(``,!0)])]),default:d(()=>[e.source.error?(r(),s(P,{key:0,variant:`error`},{default:d(()=>[o(t(e.source.error),1)]),_:1})):(r(),f(l,{key:1},[e.source._urlWarnings?.length?(r(),s(P,{key:0,variant:`warning`},{default:d(()=>[c(`div`,null,[c(`div`,A,t(e.source._urlWarnings.length)+` URL warning`+t(e.source._urlWarnings.length>1?`s`:``),1),c(`ul`,j,[(r(!0),f(l,null,i(e.source._urlWarnings,(e,n)=>(r(),f(`li`,{key:n},[c(`code`,null,t(e.loc),1),o(` — `+t(e.message),1)]))),128))])])]),_:1})):a(``,!0),p(F,{code:JSON.stringify(e.source.urls,null,2),lang:`json`,label:`URLs`},null,8,[`code`])],64)),e.source.context.tips?.length?(r(),s(P,{key:2,variant:!e.source.urls?.length&&!e.source.error?`warning`:`info`},{default:d(()=>[c(`div`,null,[m[0]||=c(`h3`,{class:`text-xs font-semibold mb-1.5 text-[var(--color-text)] uppercase tracking-wide opacity-70`},` Hints `,-1),c(`ul`,M,[(r(!0),f(l,null,i(e.source.context.tips,(e,t)=>(r(),f(`li`,{key:t,class:`text-sm text-[var(--color-text-muted)] leading-relaxed`,innerHTML:S(e)},null,8,N))),128))])])]),_:1},8,[`variant`])):a(``,!0)]),_:1},8,[`class`])}}}),[[`__scopeId`,`data-v-ca804ac3`]]),{__name:`Source`});export{C as n,P as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,G as t,Ot as n,Tt as r,V as i,_ as a,b as o,h as s,v as c,x as l}from"./CDDzqGso.js";import{t as u}from"./tBStlNYu.js";import{s as d}from"#entry";var f={class:`devtools-empty`},p={class:`devtools-empty-title`},m={key:0,class:`devtools-empty-description`},h={key:1,class:`devtools-empty-actions`},g=Object.assign(u(e({__name:`DevtoolsEmptyState`,props:{icon:{default:`carbon:search`},title:{},description:{},variant:{default:`default`}},setup(e){return(u,g)=>{let _=d;return i(),c(`div`,f,[s(`div`,{class:r([`devtools-empty-icon`,`devtools-empty-icon-${e.variant}`])},[l(_,{name:e.icon,class:`w-8 h-8`,"aria-hidden":`true`},null,8,[`name`])],2),s(`h2`,p,n(e.title),1),e.description||u.$slots.description?(i(),c(`p`,m,[t(u.$slots,`description`,{},()=>[o(n(e.description),1)],!0)])):a(``,!0),u.$slots.default?(i(),c(`div`,h,[t(u.$slots,`default`,{},void 0,!0)])):a(``,!0)])}}}),[[`__scopeId`,`data-v-4c35bba2`]]),{__name:`DevtoolsEmptyState`});export{g as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.devtools-empty[data-v-4c35bba2]{text-align:center;flex-direction:column;align-items:center;max-width:32rem;margin:0 auto;display:flex}.devtools-empty-icon[data-v-4c35bba2]{border-radius:var(--radius-lg);justify-content:center;align-items:center;width:4rem;height:4rem;margin-bottom:1.5rem;display:inline-flex}.devtools-empty-icon-default[data-v-4c35bba2]{color:var(--seo-green);background:oklch(65% .2 145/.12)}.dark .devtools-empty-icon-default[data-v-4c35bba2]{background:oklch(65% .2 145/.15)}.devtools-empty-icon-error[data-v-4c35bba2]{color:oklch(55% .2 25);background:oklch(55% .2 25/.12)}.dark .devtools-empty-icon-error[data-v-4c35bba2]{color:oklch(75% .15 25);background:oklch(55% .2 25/.15)}.devtools-empty-title[data-v-4c35bba2]{color:var(--color-text);margin-bottom:.75rem;font-size:1.125rem;font-weight:600}@media (width>=640px){.devtools-empty-title[data-v-4c35bba2]{font-size:1.25rem}}.devtools-empty-description[data-v-4c35bba2]{color:var(--color-text-muted);margin-bottom:1.25rem;font-size:.875rem;line-height:1.5}@media (width>=640px){.devtools-empty-description[data-v-4c35bba2]{font-size:1rem}}.devtools-empty-actions[data-v-4c35bba2]{flex-direction:column;align-items:center;gap:.75rem;display:flex}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.devtools-snippet[data-v-a238cdeb]{margin:.5rem .75rem}.devtools-snippet-header[data-v-a238cdeb]{justify-content:space-between;align-items:center;margin-bottom:.375rem;display:flex}.devtools-snippet-label[data-v-a238cdeb]{color:var(--color-text-muted);font-family:var(--font-mono);letter-spacing:-.01em;font-size:.6875rem;font-weight:500}.devtools-snippet-block[data-v-a238cdeb]{border-radius:var(--radius-sm);max-height:300px;font-size:.6875rem;line-height:1.6;overflow-y:auto;padding:.5rem .625rem!important}
|