astro 0.22.17 → 0.23.0-next.0
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/components/Code.astro +2 -2
- package/components/Markdown.astro +1 -1
- package/components/Prism.astro +1 -1
- package/dist/cli/index.js +29 -75
- package/dist/core/build/index.js +10 -10
- package/dist/core/build/page-data.js +34 -36
- package/dist/core/build/scan-based-build.js +1 -1
- package/dist/core/build/static-build.js +51 -27
- package/dist/core/build/vite-plugin-hoisted-scripts.js +5 -3
- package/dist/core/config.js +39 -7
- package/dist/core/create-vite.js +7 -5
- package/dist/core/dev/index.js +16 -289
- package/dist/core/logger.js +7 -4
- package/dist/core/messages.js +37 -0
- package/dist/core/preview/index.js +6 -6
- package/dist/core/ssr/index.js +27 -27
- package/dist/core/ssr/result.js +13 -1
- package/dist/core/ssr/route-cache.js +37 -21
- package/dist/core/ssr/rss.js +29 -30
- package/dist/core/ssr/script.js +8 -0
- package/dist/core/util.js +14 -1
- package/dist/runtime/server/escape.js +27 -0
- package/dist/runtime/server/index.js +69 -30
- package/dist/{core/dev/template → template}/4xx.js +1 -1
- package/dist/{core/dev/template → template}/5xx.js +1 -1
- package/dist/{core/dev/template → template}/css.js +1 -1
- package/dist/types/@types/astro.d.ts +17 -2
- package/dist/types/core/build/page-data.d.ts +2 -1
- package/dist/types/core/build/scan-based-build.d.ts +2 -1
- package/dist/types/core/build/static-build.d.ts +2 -1
- package/dist/types/core/build/vite-plugin-hoisted-scripts.d.ts +2 -1
- package/dist/types/core/config.d.ts +4 -3
- package/dist/types/core/create-vite.d.ts +1 -3
- package/dist/types/core/dev/index.d.ts +4 -37
- package/dist/types/core/logger.d.ts +12 -8
- package/dist/types/core/{dev/messages.d.ts → messages.d.ts} +7 -3
- package/dist/types/core/ssr/index.d.ts +4 -6
- package/dist/types/core/ssr/route-cache.d.ts +22 -8
- package/dist/types/core/ssr/rss.d.ts +2 -6
- package/dist/types/core/ssr/script.d.ts +2 -0
- package/dist/types/core/util.d.ts +4 -0
- package/dist/types/runtime/server/escape.d.ts +16 -0
- package/dist/types/runtime/server/index.d.ts +5 -3
- package/dist/types/{core/dev/template → template}/4xx.d.ts +0 -0
- package/dist/types/{core/dev/template → template}/5xx.d.ts +0 -0
- package/dist/types/{core/dev/template → template}/css.d.ts +0 -0
- package/dist/types/vite-plugin-astro/index.d.ts +1 -3
- package/dist/types/vite-plugin-astro-postprocess/index.d.ts +1 -3
- package/dist/types/vite-plugin-astro-server/index.d.ts +9 -0
- package/dist/types/vite-plugin-build-html/index.d.ts +3 -2
- package/dist/types/vite-plugin-jsx/index.d.ts +1 -1
- package/dist/types/vite-plugin-markdown/index.d.ts +0 -2
- package/dist/vite-plugin-astro/compile.js +10 -2
- package/dist/vite-plugin-astro/index.js +11 -3
- package/dist/vite-plugin-astro-postprocess/index.js +3 -3
- package/dist/vite-plugin-astro-server/index.js +126 -0
- package/dist/vite-plugin-build-html/index.js +1 -1
- package/dist/vite-plugin-config-alias/index.js +1 -1
- package/dist/vite-plugin-jsx/index.js +1 -1
- package/dist/vite-plugin-markdown/index.js +2 -2
- package/package.json +7 -9
- package/vendor/vite/dist/client/client.mjs +14 -2
- package/dist/core/dev/messages.js +0 -35
- package/dist/types/vite-plugin-fetch/index.d.ts +0 -2
- package/dist/vite-plugin-fetch/index.js +0 -72
package/components/Code.astro
CHANGED
|
@@ -43,8 +43,8 @@ function repairShikiTheme(html: string): string {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
const highlighter = await shiki.getHighlighter({ theme });
|
|
46
|
-
const _html = highlighter.codeToHtml(code, lang);
|
|
46
|
+
const _html = highlighter.codeToHtml(code, { lang });
|
|
47
47
|
const html = repairShikiTheme(_html);
|
|
48
48
|
---
|
|
49
49
|
|
|
50
|
-
{html}
|
|
50
|
+
<Fragment set:html={html} />
|
package/components/Prism.astro
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __spreadValues = (a, b) => {
|
|
7
|
-
for (var prop in b || (b = {}))
|
|
8
|
-
if (__hasOwnProp.call(b, prop))
|
|
9
|
-
__defNormalProp(a, prop, b[prop]);
|
|
10
|
-
if (__getOwnPropSymbols)
|
|
11
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
-
if (__propIsEnum.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
}
|
|
15
|
-
return a;
|
|
16
|
-
};
|
|
17
1
|
import * as colors from "kleur/colors";
|
|
18
2
|
import fs from "fs";
|
|
19
3
|
import yargs from "yargs-parser";
|
|
@@ -24,36 +8,6 @@ import devServer from "../core/dev/index.js";
|
|
|
24
8
|
import preview from "../core/preview/index.js";
|
|
25
9
|
import { check } from "./check.js";
|
|
26
10
|
import { formatConfigError, loadConfig } from "../core/config.js";
|
|
27
|
-
function resolveArgs(flags) {
|
|
28
|
-
const options = {
|
|
29
|
-
projectRoot: typeof flags.projectRoot === "string" ? flags.projectRoot : void 0,
|
|
30
|
-
site: typeof flags.site === "string" ? flags.site : void 0,
|
|
31
|
-
sitemap: typeof flags.sitemap === "boolean" ? flags.sitemap : void 0,
|
|
32
|
-
port: typeof flags.port === "number" ? flags.port : void 0,
|
|
33
|
-
config: typeof flags.config === "string" ? flags.config : void 0,
|
|
34
|
-
hostname: typeof flags.hostname === "string" ? flags.hostname : void 0,
|
|
35
|
-
experimentalStaticBuild: typeof flags.experimentalStaticBuild === "boolean" ? flags.experimentalStaticBuild : false,
|
|
36
|
-
drafts: typeof flags.drafts === "boolean" ? flags.drafts : false
|
|
37
|
-
};
|
|
38
|
-
if (flags.version) {
|
|
39
|
-
return { cmd: "version", options };
|
|
40
|
-
} else if (flags.help) {
|
|
41
|
-
return { cmd: "help", options };
|
|
42
|
-
}
|
|
43
|
-
const cmd = flags._[2];
|
|
44
|
-
switch (cmd) {
|
|
45
|
-
case "dev":
|
|
46
|
-
return { cmd: "dev", options };
|
|
47
|
-
case "build":
|
|
48
|
-
return { cmd: "build", options };
|
|
49
|
-
case "preview":
|
|
50
|
-
return { cmd: "preview", options };
|
|
51
|
-
case "check":
|
|
52
|
-
return { cmd: "check", options };
|
|
53
|
-
default:
|
|
54
|
-
return { cmd: "help", options };
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
11
|
function printHelp() {
|
|
58
12
|
console.log(` ${colors.bold("astro")} - Futuristic web development tool.
|
|
59
13
|
${colors.bold("Commands:")}
|
|
@@ -80,26 +34,24 @@ async function printVersion() {
|
|
|
80
34
|
const pkgVersion = pkg.version;
|
|
81
35
|
console.log(pkgVersion);
|
|
82
36
|
}
|
|
83
|
-
function
|
|
84
|
-
if (
|
|
85
|
-
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
astroConfig.buildOptions.drafts = flags.drafts;
|
|
37
|
+
function resolveCommand(flags) {
|
|
38
|
+
if (flags.version) {
|
|
39
|
+
return "version";
|
|
40
|
+
} else if (flags.help) {
|
|
41
|
+
return "help";
|
|
42
|
+
}
|
|
43
|
+
const cmd = flags._[2];
|
|
44
|
+
const supportedCommands = new Set(["dev", "build", "preview", "check"]);
|
|
45
|
+
if (supportedCommands.has(cmd)) {
|
|
46
|
+
return cmd;
|
|
47
|
+
}
|
|
48
|
+
return "help";
|
|
96
49
|
}
|
|
97
50
|
async function cli(args) {
|
|
98
51
|
const flags = yargs(args);
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
switch (state.cmd) {
|
|
52
|
+
const cmd = resolveCommand(flags);
|
|
53
|
+
const projectRoot = flags.projectRoot || flags._[3];
|
|
54
|
+
switch (cmd) {
|
|
103
55
|
case "help":
|
|
104
56
|
printHelp();
|
|
105
57
|
return process.exit(0);
|
|
@@ -117,17 +69,12 @@ async function cli(args) {
|
|
|
117
69
|
logging.level = "silent";
|
|
118
70
|
let config;
|
|
119
71
|
try {
|
|
120
|
-
config = await loadConfig({ cwd: projectRoot,
|
|
121
|
-
mergeCLIFlags(config, options);
|
|
72
|
+
config = await loadConfig({ cwd: projectRoot, flags });
|
|
122
73
|
} catch (err) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
} else {
|
|
126
|
-
console.error(colors.red(err.toString() || err));
|
|
127
|
-
}
|
|
128
|
-
process.exit(1);
|
|
74
|
+
throwAndExit(err);
|
|
75
|
+
return;
|
|
129
76
|
}
|
|
130
|
-
switch (
|
|
77
|
+
switch (cmd) {
|
|
131
78
|
case "dev": {
|
|
132
79
|
try {
|
|
133
80
|
await devServer(config, { logging });
|
|
@@ -160,15 +107,22 @@ async function cli(args) {
|
|
|
160
107
|
return;
|
|
161
108
|
}
|
|
162
109
|
default: {
|
|
163
|
-
throw new Error(`Error running ${
|
|
110
|
+
throw new Error(`Error running ${cmd}`);
|
|
164
111
|
}
|
|
165
112
|
}
|
|
166
113
|
}
|
|
167
114
|
function throwAndExit(err) {
|
|
168
|
-
|
|
115
|
+
if (err instanceof z.ZodError) {
|
|
116
|
+
console.error(formatConfigError(err));
|
|
117
|
+
} else if (err.stack) {
|
|
118
|
+
const [mainMsg, ...stackMsg] = err.stack.split("\n");
|
|
119
|
+
console.error(colors.red(mainMsg) + "\n" + colors.dim(stackMsg.join("\n")));
|
|
120
|
+
} else {
|
|
121
|
+
console.error(colors.red(err.toString() || err));
|
|
122
|
+
}
|
|
169
123
|
process.exit(1);
|
|
170
124
|
}
|
|
171
125
|
export {
|
|
172
126
|
cli
|
|
173
127
|
};
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NsaS9pbmRleC50cyJdLAogICJtYXBwaW5ncyI6ICJBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUEscUJBQXFCO0FBQ3BCLFVBQVEsSUFBSSxLQUFLLE9BQU8sS0FBSztBQUFBLElBQzFCLE9BQU8sS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQU1aLE9BQU8sS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjaEIsOEJBQThCO0FBQzdCLFFBQU0sU0FBUyxJQUFJLElBQUksc0JBQXNCLFlBQVk7QUFDekQsUUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEdBQUcsU0FBUyxTQUFTLFFBQVE7QUFDMUQsUUFBTSxhQUFhLElBQUk7QUFFdkIsVUFBUSxJQUFJO0FBQUE7QUFJYix3QkFBd0IsT0FBOEI7QUFDckQsTUFBSSxNQUFNLFNBQVM7QUFDbEIsV0FBTztBQUFBLGFBQ0csTUFBTSxNQUFNO0FBQ3RCLFdBQU87QUFBQTtBQUVSLFFBQU0sTUFBTSxNQUFNLEVBQUU7QUFDcEIsUUFBTSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsT0FBTyxTQUFTLFdBQVc7QUFDOUQsTUFBSSxrQkFBa0IsSUFBSSxNQUFNO0FBQy9CLFdBQU87QUFBQTtBQUVSLFNBQU87QUFBQTtBQUlSLG1CQUEwQixNQUFnQjtBQUN6QyxRQUFNLFFBQVEsTUFBTTtBQUNwQixRQUFNLE1BQU0sZUFBZTtBQUMzQixRQUFNLGNBQWMsTUFBTSxlQUFlLE1BQU0sRUFBRTtBQUVqRCxVQUFRO0FBQUEsU0FDRjtBQUNKO0FBQ0EsYUFBTyxRQUFRLEtBQUs7QUFBQSxTQUNoQjtBQUNKLFlBQU07QUFDTixhQUFPLFFBQVEsS0FBSztBQUFBO0FBSXRCLE1BQUksVUFBc0I7QUFBQSxJQUN6QixNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUE7QUFHUixNQUFJLE1BQU07QUFBUyxZQUFRLFFBQVE7QUFDbkMsTUFBSSxNQUFNO0FBQVEsWUFBUSxRQUFRO0FBQ2xDLE1BQUk7QUFDSixNQUFJO0FBQ0gsYUFBUyxNQUFNLFdBQVcsRUFBRSxLQUFLLGFBQWE7QUFBQSxXQUN0QyxLQUFQO0FBQ0QsaUJBQWE7QUFDYjtBQUFBO0FBR0QsVUFBUTtBQUFBLFNBQ0YsT0FBTztBQUNYLFVBQUk7QUFDSCxjQUFNLFVBQVUsUUFBUSxFQUFFO0FBRTFCLGNBQU0sSUFBSSxRQUFRLE1BQU07QUFBQTtBQUFBLGVBQ2hCLEtBQVA7QUFDRCxxQkFBYTtBQUFBO0FBR2Q7QUFBQTtBQUFBLFNBR0ksU0FBUztBQUNiLFVBQUk7QUFDSCxjQUFNLE1BQU0sUUFBUSxFQUFFO0FBQ3RCLGdCQUFRLEtBQUs7QUFBQSxlQUNMLEtBQVA7QUFDRCxxQkFBYTtBQUFBO0FBRWQ7QUFBQTtBQUFBLFNBR0ksU0FBUztBQUNiLFlBQU0sTUFBTSxNQUFNLE1BQU07QUFDeEIsYUFBTyxRQUFRLEtBQUs7QUFBQTtBQUFBLFNBR2hCLFdBQVc7QUFDZixVQUFJO0FBQ0gsY0FBTSxRQUFRLFFBQVEsRUFBRTtBQUFBLGVBQ2hCLEtBQVA7QUFDRCxxQkFBYTtBQUFBO0FBRWQ7QUFBQTtBQUFBLGFBR1E7QUFDUixZQUFNLElBQUksTUFBTSxpQkFBaUI7QUFBQTtBQUFBO0FBQUE7QUFNcEMsc0JBQXNCLEtBQVU7QUFDL0IsTUFBSSxlQUFlLEVBQUUsVUFBVTtBQUM5QixZQUFRLE1BQU0sa0JBQWtCO0FBQUEsYUFDdEIsSUFBSSxPQUFPO0FBQ3JCLFVBQU0sQ0FBQyxZQUFZLFlBQVksSUFBSSxNQUFNLE1BQU07QUFDL0MsWUFBUSxNQUFNLE9BQU8sSUFBSSxXQUFXLE9BQU8sT0FBTyxJQUFJLFNBQVMsS0FBSztBQUFBLFNBQzlEO0FBQ04sWUFBUSxNQUFNLE9BQU8sSUFBSSxJQUFJLGNBQWM7QUFBQTtBQUU1QyxVQUFRLEtBQUs7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/core/build/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { generateSitemap } from "../ssr/sitemap.js";
|
|
|
10
10
|
import { collectPagesData } from "./page-data.js";
|
|
11
11
|
import { build as scanBasedBuild } from "./scan-based-build.js";
|
|
12
12
|
import { staticBuild } from "./static-build.js";
|
|
13
|
+
import { RouteCache } from "../ssr/route-cache.js";
|
|
13
14
|
async function build(config, options = { logging: defaultLogOptions }) {
|
|
14
15
|
polyfill(globalThis, {
|
|
15
16
|
exclude: "window document"
|
|
@@ -20,7 +21,6 @@ async function build(config, options = { logging: defaultLogOptions }) {
|
|
|
20
21
|
class AstroBuilder {
|
|
21
22
|
constructor(config, options) {
|
|
22
23
|
this.mode = "production";
|
|
23
|
-
this.routeCache = {};
|
|
24
24
|
if (!config.buildOptions.site && config.buildOptions.sitemap !== false) {
|
|
25
25
|
warn(options.logging, "config", `Set "buildOptions.site" to generate correct canonical URLs and sitemap`);
|
|
26
26
|
}
|
|
@@ -29,6 +29,7 @@ class AstroBuilder {
|
|
|
29
29
|
this.config = config;
|
|
30
30
|
const port = config.devOptions.port;
|
|
31
31
|
this.logging = options.logging;
|
|
32
|
+
this.routeCache = new RouteCache(this.logging);
|
|
32
33
|
this.origin = config.buildOptions.site ? new URL(config.buildOptions.site).origin : `http://localhost:${port}`;
|
|
33
34
|
this.manifest = createRouteManifest({ config }, this.logging);
|
|
34
35
|
}
|
|
@@ -47,7 +48,7 @@ class AstroBuilder {
|
|
|
47
48
|
this.viteConfig = viteConfig;
|
|
48
49
|
const viteServer = await vite.createServer(viteConfig);
|
|
49
50
|
this.viteServer = viteServer;
|
|
50
|
-
debug(
|
|
51
|
+
debug("build", timerMessage("Vite started", timer.viteStart));
|
|
51
52
|
timer.loadStart = performance.now();
|
|
52
53
|
const { assets, allPages } = await collectPagesData({
|
|
53
54
|
astroConfig: this.config,
|
|
@@ -61,12 +62,12 @@ class AstroBuilder {
|
|
|
61
62
|
if ("frontmatter" in data.preload[1]) {
|
|
62
63
|
const frontmatter = data.preload[1].frontmatter;
|
|
63
64
|
if (Boolean(frontmatter.draft) && !this.config.buildOptions.drafts) {
|
|
64
|
-
debug(
|
|
65
|
+
debug("build", timerMessage(`Skipping draft page ${page}`, timer.loadStart));
|
|
65
66
|
delete allPages[page];
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
});
|
|
69
|
-
debug(
|
|
70
|
+
debug("build", timerMessage("All pages loaded", timer.loadStart));
|
|
70
71
|
const pageNames = [];
|
|
71
72
|
timer.buildStart = performance.now();
|
|
72
73
|
if (this.config.buildOptions.experimentalStaticBuild) {
|
|
@@ -91,7 +92,7 @@ class AstroBuilder {
|
|
|
91
92
|
viteServer: this.viteServer
|
|
92
93
|
});
|
|
93
94
|
}
|
|
94
|
-
debug(
|
|
95
|
+
debug("build", timerMessage("Vite build finished", timer.buildStart));
|
|
95
96
|
timer.assetsStart = performance.now();
|
|
96
97
|
Object.keys(assets).map((k) => {
|
|
97
98
|
if (!assets[k])
|
|
@@ -101,22 +102,21 @@ class AstroBuilder {
|
|
|
101
102
|
fs.writeFileSync(filePath, assets[k], "utf8");
|
|
102
103
|
delete assets[k];
|
|
103
104
|
});
|
|
104
|
-
debug(
|
|
105
|
+
debug("build", timerMessage("Additional assets copied", timer.assetsStart));
|
|
105
106
|
timer.sitemapStart = performance.now();
|
|
106
107
|
if (this.config.buildOptions.sitemap && this.config.buildOptions.site) {
|
|
107
|
-
const sitemap = generateSitemap(pageNames.map((pageName) => new URL(
|
|
108
|
+
const sitemap = generateSitemap(pageNames.map((pageName) => new URL(pageName, this.config.buildOptions.site).href));
|
|
108
109
|
const sitemapPath = new URL("./sitemap.xml", this.config.dist);
|
|
109
110
|
await fs.promises.mkdir(new URL("./", sitemapPath), { recursive: true });
|
|
110
111
|
await fs.promises.writeFile(sitemapPath, sitemap, "utf8");
|
|
111
112
|
}
|
|
112
|
-
debug(
|
|
113
|
+
debug("build", timerMessage("Sitemap built", timer.sitemapStart));
|
|
113
114
|
await viteServer.close();
|
|
114
115
|
if (logging.level && levels[logging.level] <= levels["info"]) {
|
|
115
116
|
await this.printStats({ logging, timeStart: timer.init, pageCount: pageNames.length });
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
async printStats({ logging, timeStart, pageCount }) {
|
|
119
|
-
debug(logging, "");
|
|
120
120
|
const buildTime = performance.now() - timeStart;
|
|
121
121
|
const total = buildTime < 750 ? `${Math.round(buildTime)}ms` : `${(buildTime / 1e3).toFixed(2)}s`;
|
|
122
122
|
const perPage = `${Math.round(buildTime / pageCount)}ms`;
|
|
@@ -127,4 +127,4 @@ class AstroBuilder {
|
|
|
127
127
|
export {
|
|
128
128
|
build as default
|
|
129
129
|
};
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvYnVpbGQvaW5kZXgudHMiXSwKICAibWFwcGluZ3MiOiAiQUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBLHFCQUFvQyxRQUFxQixVQUF3QixFQUFFLFNBQVMscUJBQW9DO0FBRS9ILFdBQVMsWUFBWTtBQUFBLElBQ3BCLFNBQVM7QUFBQTtBQUdWLFFBQU0sVUFBVSxJQUFJLGFBQWEsUUFBUTtBQUN6QyxRQUFNLFFBQVE7QUFBQTtBQUdmLG1CQUFtQjtBQUFBLEVBVWxCLFlBQVksUUFBcUIsU0FBdUI7QUFQaEQsZ0JBQU87QUFRZCxRQUFJLENBQUMsT0FBTyxhQUFhLFFBQVEsT0FBTyxhQUFhLFlBQVksT0FBTztBQUN2RSxXQUFLLFFBQVEsU0FBUyxVQUFVO0FBQUE7QUFHakMsUUFBSSxRQUFRO0FBQU0sV0FBSyxPQUFPLFFBQVE7QUFDdEMsU0FBSyxTQUFTO0FBQ2QsVUFBTSxPQUFPLE9BQU8sV0FBVztBQUMvQixTQUFLLFVBQVUsUUFBUTtBQUN2QixTQUFLLGFBQWEsSUFBSSxXQUFXLEtBQUs7QUFDdEMsU0FBSyxTQUFTLE9BQU8sYUFBYSxPQUFPLElBQUksSUFBSSxPQUFPLGFBQWEsTUFBTSxTQUFTLG9CQUFvQjtBQUN4RyxTQUFLLFdBQVcsb0JBQW9CLEVBQUUsVUFBVSxLQUFLO0FBQUE7QUFBQSxRQUdoRCxRQUFRO0FBQ2IsVUFBTSxFQUFFLFNBQVMsV0FBVztBQUM1QixVQUFNLFFBQWdDO0FBQ3RDLFVBQU0sT0FBTyxZQUFZO0FBQ3pCLFVBQU0sWUFBWSxZQUFZO0FBQzlCLFVBQU0sYUFBYSxNQUFNLFdBQ3hCLEtBQUssWUFDSjtBQUFBLE1BQ0MsTUFBTSxLQUFLO0FBQUEsTUFDWCxRQUFRO0FBQUEsUUFDUCxLQUFLLEVBQUUsU0FBUztBQUFBLFFBQ2hCLGdCQUFnQjtBQUFBO0FBQUEsT0FHbEIsS0FBSyxPQUFPLFFBQVEsS0FFckIsRUFBRSxhQUFhLEtBQUssUUFBUTtBQUU3QixTQUFLLGFBQWE7QUFDbEIsVUFBTSxhQUFhLE1BQU0sS0FBSyxhQUFhO0FBQzNDLFNBQUssYUFBYTtBQUNsQixVQUFNLFNBQVMsYUFBYSxnQkFBZ0IsTUFBTTtBQUVsRCxVQUFNLFlBQVksWUFBWTtBQUM5QixVQUFNLEVBQUUsUUFBUSxhQUFhLE1BQU0saUJBQWlCO0FBQUEsTUFDbkQsYUFBYSxLQUFLO0FBQUEsTUFDbEIsU0FBUyxLQUFLO0FBQUEsTUFDZCxVQUFVLEtBQUs7QUFBQSxNQUNmO0FBQUEsTUFDQSxZQUFZLEtBQUs7QUFBQSxNQUNqQixZQUFZLEtBQUs7QUFBQTtBQUlsQixXQUFPLFFBQVEsVUFBVSxRQUFRLENBQUMsQ0FBQyxNQUFNLFVBQVU7QUFDbEQsVUFBSSxpQkFBaUIsS0FBSyxRQUFRLElBQUk7QUFFckMsY0FBTSxjQUFlLEtBQUssUUFBUSxHQUFXO0FBQzdDLFlBQUksUUFBUSxZQUFZLFVBQVUsQ0FBQyxLQUFLLE9BQU8sYUFBYSxRQUFRO0FBQ25FLGdCQUFNLFNBQVMsYUFBYSx1QkFBdUIsUUFBUSxNQUFNO0FBQ2pFLGlCQUFPLFNBQVM7QUFBQTtBQUFBO0FBQUE7QUFLbkIsVUFBTSxTQUFTLGFBQWEsb0JBQW9CLE1BQU07QUFHdEQsVUFBTSxZQUFzQjtBQUk1QixVQUFNLGFBQWEsWUFBWTtBQUcvQixRQUFJLEtBQUssT0FBTyxhQUFhLHlCQUF5QjtBQUNyRCxZQUFNLFlBQVk7QUFBQSxRQUNqQjtBQUFBLFFBQ0EsYUFBYSxLQUFLO0FBQUEsUUFDbEIsU0FBUyxLQUFLO0FBQUEsUUFDZCxRQUFRLEtBQUs7QUFBQSxRQUNiO0FBQUEsUUFDQSxZQUFZLEtBQUs7QUFBQSxRQUNqQixZQUFZLEtBQUs7QUFBQTtBQUFBLFdBRVo7QUFDTixZQUFNLGVBQWU7QUFBQSxRQUNwQjtBQUFBLFFBQ0EsYUFBYSxLQUFLO0FBQUEsUUFDbEIsU0FBUyxLQUFLO0FBQUEsUUFDZCxRQUFRLEtBQUs7QUFBQSxRQUNiO0FBQUEsUUFDQSxZQUFZLEtBQUs7QUFBQSxRQUNqQixZQUFZLEtBQUs7QUFBQSxRQUNqQixZQUFZLEtBQUs7QUFBQTtBQUFBO0FBR25CLFVBQU0sU0FBUyxhQUFhLHVCQUF1QixNQUFNO0FBR3pELFVBQU0sY0FBYyxZQUFZO0FBQ2hDLFdBQU8sS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNO0FBQzlCLFVBQUksQ0FBQyxPQUFPO0FBQUk7QUFDaEIsWUFBTSxXQUFXLElBQUksSUFBSSxVQUFVO0FBQ25DLFNBQUcsVUFBVSxJQUFJLElBQUksTUFBTSxXQUFXLEVBQUUsV0FBVztBQUNuRCxTQUFHLGNBQWMsVUFBVSxPQUFPLElBQUk7QUFDdEMsYUFBTyxPQUFPO0FBQUE7QUFFZixVQUFNLFNBQVMsYUFBYSw0QkFBNEIsTUFBTTtBQUc5RCxVQUFNLGVBQWUsWUFBWTtBQUNqQyxRQUFJLEtBQUssT0FBTyxhQUFhLFdBQVcsS0FBSyxPQUFPLGFBQWEsTUFBTTtBQUN0RSxZQUFNLFVBQVUsZ0JBQWdCLFVBQVUsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLFVBQVUsS0FBSyxPQUFPLGFBQWEsTUFBTTtBQUM3RyxZQUFNLGNBQWMsSUFBSSxJQUFJLGlCQUFpQixLQUFLLE9BQU87QUFDekQsWUFBTSxHQUFHLFNBQVMsTUFBTSxJQUFJLElBQUksTUFBTSxjQUFjLEVBQUUsV0FBVztBQUNqRSxZQUFNLEdBQUcsU0FBUyxVQUFVLGFBQWEsU0FBUztBQUFBO0FBRW5ELFVBQU0sU0FBUyxhQUFhLGlCQUFpQixNQUFNO0FBR25ELFVBQU0sV0FBVztBQUNqQixRQUFJLFFBQVEsU0FBUyxPQUFPLFFBQVEsVUFBVSxPQUFPLFNBQVM7QUFDN0QsWUFBTSxLQUFLLFdBQVcsRUFBRSxTQUFTLFdBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVTtBQUFBO0FBQUE7QUFBQSxRQUtqRSxXQUFXLEVBQUUsU0FBUyxXQUFXLGFBQTRFO0FBQzFILFVBQU0sWUFBWSxZQUFZLFFBQVE7QUFDdEMsVUFBTSxRQUFRLFlBQVksTUFBTSxHQUFHLEtBQUssTUFBTSxpQkFBaUIsR0FBSSxhQUFZLEtBQU0sUUFBUTtBQUM3RixVQUFNLFVBQVUsR0FBRyxLQUFLLE1BQU0sWUFBWTtBQUMxQyxTQUFLLFNBQVMsU0FBUyxHQUFHLDRCQUE0QixPQUFPLEtBQUssVUFBVSxPQUFPLElBQUksSUFBSTtBQUMzRixTQUFLLFNBQVMsU0FBUyxhQUFNLE9BQU8sS0FBSyxPQUFPLEtBQUs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -2,15 +2,14 @@ import { fileURLToPath } from "url";
|
|
|
2
2
|
import * as colors from "kleur/colors";
|
|
3
3
|
import { debug } from "../logger.js";
|
|
4
4
|
import { preload as ssrPreload } from "../ssr/index.js";
|
|
5
|
-
import { validateGetStaticPathsModule, validateGetStaticPathsResult } from "../ssr/routing.js";
|
|
6
5
|
import { generateRssFunction } from "../ssr/rss.js";
|
|
7
|
-
import {
|
|
6
|
+
import { callGetStaticPaths } from "../ssr/route-cache.js";
|
|
8
7
|
async function collectPagesData(opts) {
|
|
9
8
|
const { astroConfig, logging, manifest, origin, routeCache, viteServer } = opts;
|
|
10
9
|
const assets = {};
|
|
11
10
|
const allPages = {};
|
|
12
11
|
await Promise.all(manifest.routes.map(async (route) => {
|
|
13
|
-
var _a
|
|
12
|
+
var _a;
|
|
14
13
|
if (route.pathname) {
|
|
15
14
|
allPages[route.component] = {
|
|
16
15
|
route,
|
|
@@ -27,53 +26,58 @@ async function collectPagesData(opts) {
|
|
|
27
26
|
viteServer
|
|
28
27
|
}).then((routes) => {
|
|
29
28
|
const html = `${route.pathname}`.replace(/\/?$/, "/index.html");
|
|
30
|
-
debug(
|
|
29
|
+
debug("build", `\u251C\u2500\u2500 ${colors.bold(colors.green("\u2714"))} ${route.component} \u2192 ${colors.yellow(html)}`);
|
|
31
30
|
return routes;
|
|
32
31
|
}).catch((err) => {
|
|
33
|
-
debug(
|
|
32
|
+
debug("build", `\u251C\u2500\u2500 ${colors.bold(colors.red("\u2718"))} ${route.component}`);
|
|
34
33
|
throw err;
|
|
35
34
|
})
|
|
36
35
|
};
|
|
37
36
|
return;
|
|
38
37
|
}
|
|
39
|
-
const result = await getStaticPathsForRoute(opts, route).then((
|
|
40
|
-
const label =
|
|
41
|
-
debug(
|
|
42
|
-
return
|
|
38
|
+
const result = await getStaticPathsForRoute(opts, route).then((_result) => {
|
|
39
|
+
const label = _result.staticPaths.length === 1 ? "page" : "pages";
|
|
40
|
+
debug("build", `\u251C\u2500\u2500 ${colors.bold(colors.green("\u2714"))} ${route.component} \u2192 ${colors.magenta(`[${_result.staticPaths.length} ${label}]`)}`);
|
|
41
|
+
return _result;
|
|
43
42
|
}).catch((err) => {
|
|
44
|
-
debug(
|
|
43
|
+
debug("build", `\u251C\u2500\u2500 ${colors.bold(colors.red("\u2717"))} ${route.component}`);
|
|
45
44
|
throw err;
|
|
46
45
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
const rssFn = generateRssFunction(astroConfig.buildOptions.site, route);
|
|
47
|
+
for (const rssCallArg of result.rss) {
|
|
48
|
+
const rssResult = rssFn(rssCallArg);
|
|
49
|
+
if (rssResult.xml) {
|
|
50
|
+
const { url, content } = rssResult.xml;
|
|
51
|
+
if (content) {
|
|
52
|
+
const rssFile = new URL(url.replace(/^\/?/, "./"), astroConfig.dist);
|
|
53
|
+
if (assets[fileURLToPath(rssFile)]) {
|
|
54
|
+
throw new Error(`[getStaticPaths] RSS feed ${url} already exists.
|
|
53
55
|
Use \`rss(data, {url: '...'})\` to choose a unique, custom URL. (${route.component})`);
|
|
56
|
+
}
|
|
57
|
+
assets[fileURLToPath(rssFile)] = content;
|
|
54
58
|
}
|
|
55
|
-
assets[fileURLToPath(rssFile)] = content;
|
|
56
59
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
throw new Error(`[getStaticPaths] RSS feed stylesheet ${url} already exists.
|
|
60
|
+
if ((_a = rssResult.xsl) == null ? void 0 : _a.content) {
|
|
61
|
+
const { url, content } = rssResult.xsl;
|
|
62
|
+
const stylesheetFile = new URL(url.replace(/^\/?/, "./"), astroConfig.dist);
|
|
63
|
+
if (assets[fileURLToPath(stylesheetFile)]) {
|
|
64
|
+
throw new Error(`[getStaticPaths] RSS feed stylesheet ${url} already exists.
|
|
63
65
|
Use \`rss(data, {stylesheet: '...'})\` to choose a unique, custom URL. (${route.component})`);
|
|
66
|
+
}
|
|
67
|
+
assets[fileURLToPath(stylesheetFile)] = content;
|
|
64
68
|
}
|
|
65
|
-
assets[fileURLToPath(stylesheetFile)] = content;
|
|
66
69
|
}
|
|
70
|
+
const finalPaths = result.staticPaths.map((staticPath) => staticPath.params && route.generate(staticPath.params)).filter(Boolean);
|
|
67
71
|
allPages[route.component] = {
|
|
68
72
|
route,
|
|
69
|
-
paths:
|
|
73
|
+
paths: finalPaths,
|
|
70
74
|
preload: await ssrPreload({
|
|
71
75
|
astroConfig,
|
|
72
76
|
filePath: new URL(`./${route.component}`, astroConfig.projectRoot),
|
|
73
77
|
logging,
|
|
74
78
|
mode: "production",
|
|
75
79
|
origin,
|
|
76
|
-
pathname:
|
|
80
|
+
pathname: finalPaths[0],
|
|
77
81
|
route,
|
|
78
82
|
routeCache,
|
|
79
83
|
viteServer
|
|
@@ -88,17 +92,11 @@ async function getStaticPathsForRoute(opts, route) {
|
|
|
88
92
|
throw new Error(`vite.createServer() not called!`);
|
|
89
93
|
const filePath = new URL(`./${route.component}`, astroConfig.projectRoot);
|
|
90
94
|
const mod = await viteServer.ssrLoadModule(fileURLToPath(filePath));
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const staticPaths = routeCache[route.component];
|
|
95
|
-
validateGetStaticPathsResult(staticPaths, logging);
|
|
96
|
-
return {
|
|
97
|
-
paths: staticPaths.map((staticPath) => staticPath.params && route.generate(staticPath.params)).filter(Boolean),
|
|
98
|
-
rss: rss.rss
|
|
99
|
-
};
|
|
95
|
+
const result = await callGetStaticPaths(mod, route, false, logging);
|
|
96
|
+
routeCache.set(route, result);
|
|
97
|
+
return result;
|
|
100
98
|
}
|
|
101
99
|
export {
|
|
102
100
|
collectPagesData
|
|
103
101
|
};
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvYnVpbGQvcGFnZS1kYXRhLnRzIl0sCiAgIm1hcHBpbmdzIjogIkFBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaUJBLGdDQUF1QyxNQUFnRTtBQUN0RyxRQUFNLEVBQUUsYUFBYSxTQUFTLFVBQVUsUUFBUSxZQUFZLGVBQWU7QUFFM0UsUUFBTSxTQUFpQztBQUN2QyxRQUFNLFdBQXlCO0FBTS9CLFFBQU0sUUFBUSxJQUNiLFNBQVMsT0FBTyxJQUFJLE9BQU8sVUFBVTtBQXRDdkM7QUF3Q0csUUFBSSxNQUFNLFVBQVU7QUFDbkIsZUFBUyxNQUFNLGFBQWE7QUFBQSxRQUMzQjtBQUFBLFFBQ0EsT0FBTyxDQUFDLE1BQU07QUFBQSxRQUNkLFNBQVMsTUFBTSxXQUFXO0FBQUEsVUFDekI7QUFBQSxVQUNBLFVBQVUsSUFBSSxJQUFJLEtBQUssTUFBTSxhQUFhLFlBQVk7QUFBQSxVQUN0RDtBQUFBLFVBQ0EsTUFBTTtBQUFBLFVBQ047QUFBQSxVQUNBLFVBQVUsTUFBTTtBQUFBLFVBQ2hCO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxXQUVDLEtBQUssQ0FBQyxXQUFXO0FBQ2pCLGdCQUFNLE9BQU8sR0FBRyxNQUFNLFdBQVcsUUFBUSxRQUFRO0FBQ2pELGdCQUFNLFNBQVMsc0JBQU8sT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFTLE1BQU0sb0JBQWUsT0FBTyxPQUFPO0FBQzNGLGlCQUFPO0FBQUEsV0FFUCxNQUFNLENBQUMsUUFBUTtBQUNmLGdCQUFNLFNBQVMsc0JBQU8sT0FBTyxLQUFLLE9BQU8sSUFBSSxjQUFTLE1BQU07QUFDNUQsZ0JBQU07QUFBQTtBQUFBO0FBR1Q7QUFBQTtBQUdELFVBQU0sU0FBUyxNQUFNLHVCQUF1QixNQUFNLE9BQ2hELEtBQUssQ0FBQyxZQUFZO0FBQ2xCLFlBQU0sUUFBUSxRQUFRLFlBQVksV0FBVyxJQUFJLFNBQVM7QUFDMUQsWUFBTSxTQUFTLHNCQUFPLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBUyxNQUFNLG9CQUFlLE9BQU8sUUFBUSxJQUFJLFFBQVEsWUFBWSxVQUFVO0FBQzlILGFBQU87QUFBQSxPQUVQLE1BQU0sQ0FBQyxRQUFRO0FBQ2YsWUFBTSxTQUFTLHNCQUFPLE9BQU8sS0FBSyxPQUFPLElBQUksY0FBUyxNQUFNO0FBQzVELFlBQU07QUFBQTtBQUVSLFVBQU0sUUFBUSxvQkFBb0IsWUFBWSxhQUFhLE1BQU07QUFDakUsZUFBVyxjQUFjLE9BQU8sS0FBSztBQUNwQyxZQUFNLFlBQVksTUFBTTtBQUN4QixVQUFJLFVBQVUsS0FBSztBQUNsQixjQUFNLEVBQUUsS0FBSyxZQUFZLFVBQVU7QUFDbkMsWUFBSSxTQUFTO0FBQ1osZ0JBQU0sVUFBVSxJQUFJLElBQUksSUFBSSxRQUFRLFFBQVEsT0FBTyxZQUFZO0FBQy9ELGNBQUksT0FBTyxjQUFjLFdBQVc7QUFDbkMsa0JBQU0sSUFBSSxNQUFNLDZCQUE2QjtBQUFBLG1FQUF5RixNQUFNO0FBQUE7QUFFN0ksaUJBQU8sY0FBYyxZQUFZO0FBQUE7QUFBQTtBQUduQyxVQUFJLGdCQUFVLFFBQVYsbUJBQWUsU0FBUztBQUMzQixjQUFNLEVBQUUsS0FBSyxZQUFZLFVBQVU7QUFDbkMsY0FBTSxpQkFBaUIsSUFBSSxJQUFJLElBQUksUUFBUSxRQUFRLE9BQU8sWUFBWTtBQUN0RSxZQUFJLE9BQU8sY0FBYyxrQkFBa0I7QUFDMUMsZ0JBQU0sSUFBSSxNQUNULHdDQUF3QztBQUFBLDBFQUFnRyxNQUFNO0FBQUE7QUFHaEosZUFBTyxjQUFjLG1CQUFtQjtBQUFBO0FBQUE7QUFHMUMsVUFBTSxhQUFhLE9BQU8sWUFBWSxJQUFJLENBQUMsZUFBZSxXQUFXLFVBQVUsTUFBTSxTQUFTLFdBQVcsU0FBUyxPQUFPO0FBQ3pILGFBQVMsTUFBTSxhQUFhO0FBQUEsTUFDM0I7QUFBQSxNQUNBLE9BQU87QUFBQSxNQUNQLFNBQVMsTUFBTSxXQUFXO0FBQUEsUUFDekI7QUFBQSxRQUNBLFVBQVUsSUFBSSxJQUFJLEtBQUssTUFBTSxhQUFhLFlBQVk7QUFBQSxRQUN0RDtBQUFBLFFBQ0EsTUFBTTtBQUFBLFFBQ047QUFBQSxRQUNBLFVBQVUsV0FBVztBQUFBLFFBQ3JCO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNSixTQUFPLEVBQUUsUUFBUTtBQUFBO0FBR2xCLHNDQUFzQyxNQUErQixPQUE0QztBQUNoSCxRQUFNLEVBQUUsYUFBYSxTQUFTLFlBQVksZUFBZTtBQUN6RCxNQUFJLENBQUM7QUFBWSxVQUFNLElBQUksTUFBTTtBQUNqQyxRQUFNLFdBQVcsSUFBSSxJQUFJLEtBQUssTUFBTSxhQUFhLFlBQVk7QUFDN0QsUUFBTSxNQUFPLE1BQU0sV0FBVyxjQUFjLGNBQWM7QUFDMUQsUUFBTSxTQUFTLE1BQU0sbUJBQW1CLEtBQUssT0FBTyxPQUFPO0FBQzNELGFBQVcsSUFBSSxPQUFPO0FBQ3RCLFNBQU87QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -47,4 +47,4 @@ async function build(opts) {
|
|
|
47
47
|
export {
|
|
48
48
|
build
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvYnVpbGQvc2Nhbi1iYXNlZC1idWlsZC50cyJdLAogICJtYXBwaW5ncyI6ICJBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFjQSxxQkFBNEIsTUFBNkI7QUFDeEQsUUFBTSxFQUFFLFVBQVUsYUFBYSxTQUFTLFFBQVEsV0FBVyxZQUFZLFlBQVksZUFBZTtBQUdsRyxRQUFNLFlBQVk7QUFFbEIsU0FBTyxNQUFNLEtBQUssTUFBTTtBQUFBLElBQ3ZCLFVBQVU7QUFBQSxJQUNWLE1BQU07QUFBQSxJQUNOLE9BQU87QUFBQSxNQUNOLGFBQWE7QUFBQSxNQUNiLFFBQVE7QUFBQSxNQUNSLFFBQVEsY0FBYyxZQUFZO0FBQUEsTUFDbEMsZUFBZTtBQUFBLFFBRWQsT0FBTztBQUFBLFFBQ1AsUUFBUTtBQUFBLFVBQ1AsUUFBUTtBQUFBO0FBQUE7QUFBQSxNQUdWLFFBQVE7QUFBQTtBQUFBLElBRVQsU0FBUztBQUFBLE1BQ1IsMkJBQTJCO0FBQUEsUUFDMUI7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUE7QUFBQSxNQUVELDBCQUEwQjtBQUFBLFFBQ3pCO0FBQUE7QUFBQSxNQUVELEdBQUksV0FBVyxXQUFXO0FBQUE7QUFBQSxJQUUzQixXQUFXLFdBQVc7QUFBQSxJQUN0QixNQUFNLFdBQVc7QUFBQSxJQUNqQixXQUFXO0FBQUEsSUFDWCxRQUFRLFdBQVc7QUFBQSxJQUNuQixNQUFNLFlBQVksYUFBYSxPQUFPLElBQUksSUFBSSxZQUFZLGFBQWEsTUFBTSxXQUFXO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
|