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.
Files changed (65) hide show
  1. package/components/Code.astro +2 -2
  2. package/components/Markdown.astro +1 -1
  3. package/components/Prism.astro +1 -1
  4. package/dist/cli/index.js +29 -75
  5. package/dist/core/build/index.js +10 -10
  6. package/dist/core/build/page-data.js +34 -36
  7. package/dist/core/build/scan-based-build.js +1 -1
  8. package/dist/core/build/static-build.js +51 -27
  9. package/dist/core/build/vite-plugin-hoisted-scripts.js +5 -3
  10. package/dist/core/config.js +39 -7
  11. package/dist/core/create-vite.js +7 -5
  12. package/dist/core/dev/index.js +16 -289
  13. package/dist/core/logger.js +7 -4
  14. package/dist/core/messages.js +37 -0
  15. package/dist/core/preview/index.js +6 -6
  16. package/dist/core/ssr/index.js +27 -27
  17. package/dist/core/ssr/result.js +13 -1
  18. package/dist/core/ssr/route-cache.js +37 -21
  19. package/dist/core/ssr/rss.js +29 -30
  20. package/dist/core/ssr/script.js +8 -0
  21. package/dist/core/util.js +14 -1
  22. package/dist/runtime/server/escape.js +27 -0
  23. package/dist/runtime/server/index.js +69 -30
  24. package/dist/{core/dev/template → template}/4xx.js +1 -1
  25. package/dist/{core/dev/template → template}/5xx.js +1 -1
  26. package/dist/{core/dev/template → template}/css.js +1 -1
  27. package/dist/types/@types/astro.d.ts +17 -2
  28. package/dist/types/core/build/page-data.d.ts +2 -1
  29. package/dist/types/core/build/scan-based-build.d.ts +2 -1
  30. package/dist/types/core/build/static-build.d.ts +2 -1
  31. package/dist/types/core/build/vite-plugin-hoisted-scripts.d.ts +2 -1
  32. package/dist/types/core/config.d.ts +4 -3
  33. package/dist/types/core/create-vite.d.ts +1 -3
  34. package/dist/types/core/dev/index.d.ts +4 -37
  35. package/dist/types/core/logger.d.ts +12 -8
  36. package/dist/types/core/{dev/messages.d.ts → messages.d.ts} +7 -3
  37. package/dist/types/core/ssr/index.d.ts +4 -6
  38. package/dist/types/core/ssr/route-cache.d.ts +22 -8
  39. package/dist/types/core/ssr/rss.d.ts +2 -6
  40. package/dist/types/core/ssr/script.d.ts +2 -0
  41. package/dist/types/core/util.d.ts +4 -0
  42. package/dist/types/runtime/server/escape.d.ts +16 -0
  43. package/dist/types/runtime/server/index.d.ts +5 -3
  44. package/dist/types/{core/dev/template → template}/4xx.d.ts +0 -0
  45. package/dist/types/{core/dev/template → template}/5xx.d.ts +0 -0
  46. package/dist/types/{core/dev/template → template}/css.d.ts +0 -0
  47. package/dist/types/vite-plugin-astro/index.d.ts +1 -3
  48. package/dist/types/vite-plugin-astro-postprocess/index.d.ts +1 -3
  49. package/dist/types/vite-plugin-astro-server/index.d.ts +9 -0
  50. package/dist/types/vite-plugin-build-html/index.d.ts +3 -2
  51. package/dist/types/vite-plugin-jsx/index.d.ts +1 -1
  52. package/dist/types/vite-plugin-markdown/index.d.ts +0 -2
  53. package/dist/vite-plugin-astro/compile.js +10 -2
  54. package/dist/vite-plugin-astro/index.js +11 -3
  55. package/dist/vite-plugin-astro-postprocess/index.js +3 -3
  56. package/dist/vite-plugin-astro-server/index.js +126 -0
  57. package/dist/vite-plugin-build-html/index.js +1 -1
  58. package/dist/vite-plugin-config-alias/index.js +1 -1
  59. package/dist/vite-plugin-jsx/index.js +1 -1
  60. package/dist/vite-plugin-markdown/index.js +2 -2
  61. package/package.json +7 -9
  62. package/vendor/vite/dist/client/client.mjs +14 -2
  63. package/dist/core/dev/messages.js +0 -35
  64. package/dist/types/vite-plugin-fetch/index.d.ts +0 -2
  65. package/dist/vite-plugin-fetch/index.js +0 -72
@@ -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} />
@@ -41,4 +41,4 @@ if (content) {
41
41
  html = htmlContent;
42
42
  ---
43
43
 
44
- {html ? html : <slot />}
44
+ {html ? <Fragment set:html={html} /> : <slot />}
@@ -46,4 +46,4 @@ if (grammar) {
46
46
  }
47
47
  ---
48
48
 
49
- <pre class={[className, classLanguage].join(' ')}><code class={classLanguage}>{html}</code></pre>
49
+ <pre class={[className, classLanguage].join(' ')}><code class={classLanguage}><Fragment set:html={html} /></code></pre>
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 mergeCLIFlags(astroConfig, flags) {
84
- if (typeof flags.sitemap === "boolean")
85
- astroConfig.buildOptions.sitemap = flags.sitemap;
86
- if (typeof flags.site === "string")
87
- astroConfig.buildOptions.site = flags.site;
88
- if (typeof flags.port === "number")
89
- astroConfig.devOptions.port = flags.port;
90
- if (typeof flags.hostname === "string")
91
- astroConfig.devOptions.hostname = flags.hostname;
92
- if (typeof flags.experimentalStaticBuild === "boolean")
93
- astroConfig.buildOptions.experimentalStaticBuild = flags.experimentalStaticBuild;
94
- if (typeof flags.drafts === "boolean")
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 state = resolveArgs(flags);
100
- const options = __spreadValues({}, state.options);
101
- const projectRoot = options.projectRoot || flags._[3];
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, filename: options.config });
121
- mergeCLIFlags(config, options);
72
+ config = await loadConfig({ cwd: projectRoot, flags });
122
73
  } catch (err) {
123
- if (err instanceof z.ZodError) {
124
- console.error(formatConfigError(err));
125
- } else {
126
- console.error(colors.red(err.toString() || err));
127
- }
128
- process.exit(1);
74
+ throwAndExit(err);
75
+ return;
129
76
  }
130
- switch (state.cmd) {
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 ${state.cmd}`);
110
+ throw new Error(`Error running ${cmd}`);
164
111
  }
165
112
  }
166
113
  }
167
114
  function throwAndExit(err) {
168
- console.error(colors.red(err.toString() || err));
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,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
128
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NsaS9pbmRleC50cyJdLAogICJtYXBwaW5ncyI6ICJBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUEscUJBQXFCO0FBQ3BCLFVBQVEsSUFBSSxLQUFLLE9BQU8sS0FBSztBQUFBLElBQzFCLE9BQU8sS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQU1aLE9BQU8sS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjaEIsOEJBQThCO0FBQzdCLFFBQU0sU0FBUyxJQUFJLElBQUksc0JBQXNCLFlBQVk7QUFDekQsUUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEdBQUcsU0FBUyxTQUFTLFFBQVE7QUFDMUQsUUFBTSxhQUFhLElBQUk7QUFFdkIsVUFBUSxJQUFJO0FBQUE7QUFJYix3QkFBd0IsT0FBOEI7QUFDckQsTUFBSSxNQUFNLFNBQVM7QUFDbEIsV0FBTztBQUFBLGFBQ0csTUFBTSxNQUFNO0FBQ3RCLFdBQU87QUFBQTtBQUVSLFFBQU0sTUFBTSxNQUFNLEVBQUU7QUFDcEIsUUFBTSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsT0FBTyxTQUFTLFdBQVc7QUFDOUQsTUFBSSxrQkFBa0IsSUFBSSxNQUFNO0FBQy9CLFdBQU87QUFBQTtBQUVSLFNBQU87QUFBQTtBQUlSLG1CQUEwQixNQUFnQjtBQUN6QyxRQUFNLFFBQVEsTUFBTTtBQUNwQixRQUFNLE1BQU0sZUFBZTtBQUMzQixRQUFNLGNBQWMsTUFBTSxlQUFlLE1BQU0sRUFBRTtBQUVqRCxVQUFRO0FBQUEsU0FDRjtBQUNKO0FBQ0EsYUFBTyxRQUFRLEtBQUs7QUFBQSxTQUNoQjtBQUNKLFlBQU07QUFDTixhQUFPLFFBQVEsS0FBSztBQUFBO0FBSXRCLE1BQUksVUFBc0I7QUFBQSxJQUN6QixNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUE7QUFHUixNQUFJLE1BQU07QUFBUyxZQUFRLFFBQVE7QUFDbkMsTUFBSSxNQUFNO0FBQVEsWUFBUSxRQUFRO0FBQ2xDLE1BQUk7QUFDSixNQUFJO0FBQ0gsYUFBUyxNQUFNLFdBQVcsRUFBRSxLQUFLLGFBQWE7QUFBQSxXQUN0QyxLQUFQO0FBQ0QsaUJBQWE7QUFDYjtBQUFBO0FBR0QsVUFBUTtBQUFBLFNBQ0YsT0FBTztBQUNYLFVBQUk7QUFDSCxjQUFNLFVBQVUsUUFBUSxFQUFFO0FBRTFCLGNBQU0sSUFBSSxRQUFRLE1BQU07QUFBQTtBQUFBLGVBQ2hCLEtBQVA7QUFDRCxxQkFBYTtBQUFBO0FBR2Q7QUFBQTtBQUFBLFNBR0ksU0FBUztBQUNiLFVBQUk7QUFDSCxjQUFNLE1BQU0sUUFBUSxFQUFFO0FBQ3RCLGdCQUFRLEtBQUs7QUFBQSxlQUNMLEtBQVA7QUFDRCxxQkFBYTtBQUFBO0FBRWQ7QUFBQTtBQUFBLFNBR0ksU0FBUztBQUNiLFlBQU0sTUFBTSxNQUFNLE1BQU07QUFDeEIsYUFBTyxRQUFRLEtBQUs7QUFBQTtBQUFBLFNBR2hCLFdBQVc7QUFDZixVQUFJO0FBQ0gsY0FBTSxRQUFRLFFBQVEsRUFBRTtBQUFBLGVBQ2hCLEtBQVA7QUFDRCxxQkFBYTtBQUFBO0FBRWQ7QUFBQTtBQUFBLGFBR1E7QUFDUixZQUFNLElBQUksTUFBTSxpQkFBaUI7QUFBQTtBQUFBO0FBQUE7QUFNcEMsc0JBQXNCLEtBQVU7QUFDL0IsTUFBSSxlQUFlLEVBQUUsVUFBVTtBQUM5QixZQUFRLE1BQU0sa0JBQWtCO0FBQUEsYUFDdEIsSUFBSSxPQUFPO0FBQ3JCLFVBQU0sQ0FBQyxZQUFZLFlBQVksSUFBSSxNQUFNLE1BQU07QUFDL0MsWUFBUSxNQUFNLE9BQU8sSUFBSSxXQUFXLE9BQU8sT0FBTyxJQUFJLFNBQVMsS0FBSztBQUFBLFNBQzlEO0FBQ04sWUFBUSxNQUFNLE9BQU8sSUFBSSxJQUFJLGNBQWM7QUFBQTtBQUU1QyxVQUFRLEtBQUs7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -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(logging, "build", timerMessage("Vite started", timer.viteStart));
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(logging, "build", timerMessage(`Skipping draft page ${page}`, timer.loadStart));
65
+ debug("build", timerMessage(`Skipping draft page ${page}`, timer.loadStart));
65
66
  delete allPages[page];
66
67
  }
67
68
  }
68
69
  });
69
- debug(logging, "build", timerMessage("All pages loaded", timer.loadStart));
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(logging, "build", timerMessage("Vite build finished", timer.buildStart));
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(logging, "build", timerMessage("Additional assets copied", timer.assetsStart));
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(`/${pageName}`, this.config.buildOptions.site).href));
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(logging, "build", timerMessage("Sitemap built", timer.sitemapStart));
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvYnVpbGQvaW5kZXgudHMiXSwKICAibWFwcGluZ3MiOiAiQUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQSxxQkFBb0MsUUFBcUIsVUFBd0IsRUFBRSxTQUFTLHFCQUFvQztBQUUvSCxXQUFTLFlBQVk7QUFBQSxJQUNwQixTQUFTO0FBQUE7QUFHVixRQUFNLFVBQVUsSUFBSSxhQUFhLFFBQVE7QUFDekMsUUFBTSxRQUFRO0FBQUE7QUFHZixtQkFBbUI7QUFBQSxFQVVsQixZQUFZLFFBQXFCLFNBQXVCO0FBUGhELGdCQUFPO0FBRVAsc0JBQXlCO0FBTWhDLFFBQUksQ0FBQyxPQUFPLGFBQWEsUUFBUSxPQUFPLGFBQWEsWUFBWSxPQUFPO0FBQ3ZFLFdBQUssUUFBUSxTQUFTLFVBQVU7QUFBQTtBQUdqQyxRQUFJLFFBQVE7QUFBTSxXQUFLLE9BQU8sUUFBUTtBQUN0QyxTQUFLLFNBQVM7QUFDZCxVQUFNLE9BQU8sT0FBTyxXQUFXO0FBQy9CLFNBQUssVUFBVSxRQUFRO0FBQ3ZCLFNBQUssU0FBUyxPQUFPLGFBQWEsT0FBTyxJQUFJLElBQUksT0FBTyxhQUFhLE1BQU0sU0FBUyxvQkFBb0I7QUFDeEcsU0FBSyxXQUFXLG9CQUFvQixFQUFFLFVBQVUsS0FBSztBQUFBO0FBQUEsUUFHaEQsUUFBUTtBQUNiLFVBQU0sRUFBRSxTQUFTLFdBQVc7QUFDNUIsVUFBTSxRQUFnQztBQUN0QyxVQUFNLE9BQU8sWUFBWTtBQUN6QixVQUFNLFlBQVksWUFBWTtBQUM5QixVQUFNLGFBQWEsTUFBTSxXQUN4QixLQUFLLFlBQ0o7QUFBQSxNQUNDLE1BQU0sS0FBSztBQUFBLE1BQ1gsUUFBUTtBQUFBLFFBQ1AsS0FBSyxFQUFFLFNBQVM7QUFBQSxRQUNoQixnQkFBZ0I7QUFBQTtBQUFBLE9BR2xCLEtBQUssT0FBTyxRQUFRLEtBRXJCLEVBQUUsYUFBYSxLQUFLLFFBQVE7QUFFN0IsU0FBSyxhQUFhO0FBQ2xCLFVBQU0sYUFBYSxNQUFNLEtBQUssYUFBYTtBQUMzQyxTQUFLLGFBQWE7QUFDbEIsVUFBTSxTQUFTLFNBQVMsYUFBYSxnQkFBZ0IsTUFBTTtBQUUzRCxVQUFNLFlBQVksWUFBWTtBQUM5QixVQUFNLEVBQUUsUUFBUSxhQUFhLE1BQU0saUJBQWlCO0FBQUEsTUFDbkQsYUFBYSxLQUFLO0FBQUEsTUFDbEIsU0FBUyxLQUFLO0FBQUEsTUFDZCxVQUFVLEtBQUs7QUFBQSxNQUNmO0FBQUEsTUFDQSxZQUFZLEtBQUs7QUFBQSxNQUNqQixZQUFZLEtBQUs7QUFBQTtBQUlsQixXQUFPLFFBQVEsVUFBVSxRQUFRLENBQUMsQ0FBQyxNQUFNLFVBQVU7QUFDbEQsVUFBSSxpQkFBaUIsS0FBSyxRQUFRLElBQUk7QUFFckMsY0FBTSxjQUFlLEtBQUssUUFBUSxHQUFXO0FBQzdDLFlBQUksUUFBUSxZQUFZLFVBQVUsQ0FBQyxLQUFLLE9BQU8sYUFBYSxRQUFRO0FBQ25FLGdCQUFNLFNBQVMsU0FBUyxhQUFhLHVCQUF1QixRQUFRLE1BQU07QUFDMUUsaUJBQU8sU0FBUztBQUFBO0FBQUE7QUFBQTtBQUtuQixVQUFNLFNBQVMsU0FBUyxhQUFhLG9CQUFvQixNQUFNO0FBRy9ELFVBQU0sWUFBc0I7QUFJNUIsVUFBTSxhQUFhLFlBQVk7QUFHL0IsUUFBSSxLQUFLLE9BQU8sYUFBYSx5QkFBeUI7QUFDckQsWUFBTSxZQUFZO0FBQUEsUUFDakI7QUFBQSxRQUNBLGFBQWEsS0FBSztBQUFBLFFBQ2xCLFNBQVMsS0FBSztBQUFBLFFBQ2QsUUFBUSxLQUFLO0FBQUEsUUFDYjtBQUFBLFFBQ0EsWUFBWSxLQUFLO0FBQUEsUUFDakIsWUFBWSxLQUFLO0FBQUE7QUFBQSxXQUVaO0FBQ04sWUFBTSxlQUFlO0FBQUEsUUFDcEI7QUFBQSxRQUNBLGFBQWEsS0FBSztBQUFBLFFBQ2xCLFNBQVMsS0FBSztBQUFBLFFBQ2QsUUFBUSxLQUFLO0FBQUEsUUFDYjtBQUFBLFFBQ0EsWUFBWSxLQUFLO0FBQUEsUUFDakIsWUFBWSxLQUFLO0FBQUEsUUFDakIsWUFBWSxLQUFLO0FBQUE7QUFBQTtBQUduQixVQUFNLFNBQVMsU0FBUyxhQUFhLHVCQUF1QixNQUFNO0FBR2xFLFVBQU0sY0FBYyxZQUFZO0FBQ2hDLFdBQU8sS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNO0FBQzlCLFVBQUksQ0FBQyxPQUFPO0FBQUk7QUFDaEIsWUFBTSxXQUFXLElBQUksSUFBSSxVQUFVO0FBQ25DLFNBQUcsVUFBVSxJQUFJLElBQUksTUFBTSxXQUFXLEVBQUUsV0FBVztBQUNuRCxTQUFHLGNBQWMsVUFBVSxPQUFPLElBQUk7QUFDdEMsYUFBTyxPQUFPO0FBQUE7QUFFZixVQUFNLFNBQVMsU0FBUyxhQUFhLDRCQUE0QixNQUFNO0FBR3ZFLFVBQU0sZUFBZSxZQUFZO0FBQ2pDLFFBQUksS0FBSyxPQUFPLGFBQWEsV0FBVyxLQUFLLE9BQU8sYUFBYSxNQUFNO0FBQ3RFLFlBQU0sVUFBVSxnQkFBZ0IsVUFBVSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxZQUFZLEtBQUssT0FBTyxhQUFhLE1BQU07QUFDbkgsWUFBTSxjQUFjLElBQUksSUFBSSxpQkFBaUIsS0FBSyxPQUFPO0FBQ3pELFlBQU0sR0FBRyxTQUFTLE1BQU0sSUFBSSxJQUFJLE1BQU0sY0FBYyxFQUFFLFdBQVc7QUFDakUsWUFBTSxHQUFHLFNBQVMsVUFBVSxhQUFhLFNBQVM7QUFBQTtBQUVuRCxVQUFNLFNBQVMsU0FBUyxhQUFhLGlCQUFpQixNQUFNO0FBRzVELFVBQU0sV0FBVztBQUNqQixRQUFJLFFBQVEsU0FBUyxPQUFPLFFBQVEsVUFBVSxPQUFPLFNBQVM7QUFDN0QsWUFBTSxLQUFLLFdBQVcsRUFBRSxTQUFTLFdBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVTtBQUFBO0FBQUE7QUFBQSxRQUtqRSxXQUFXLEVBQUUsU0FBUyxXQUFXLGFBQTRFO0FBRTFILFVBQU0sU0FBUztBQUNmLFVBQU0sWUFBWSxZQUFZLFFBQVE7QUFDdEMsVUFBTSxRQUFRLFlBQVksTUFBTSxHQUFHLEtBQUssTUFBTSxpQkFBaUIsR0FBSSxhQUFZLEtBQU0sUUFBUTtBQUM3RixVQUFNLFVBQVUsR0FBRyxLQUFLLE1BQU0sWUFBWTtBQUMxQyxTQUFLLFNBQVMsU0FBUyxHQUFHLDRCQUE0QixPQUFPLEtBQUssVUFBVSxPQUFPLElBQUksSUFBSTtBQUMzRixTQUFLLFNBQVMsU0FBUyxhQUFNLE9BQU8sS0FBSyxPQUFPLEtBQUs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
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 { assignStaticPaths } from "../ssr/route-cache.js";
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, _b, _c;
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(logging, "build", `\u251C\u2500\u2500 ${colors.bold(colors.green("\u2714"))} ${route.component} \u2192 ${colors.yellow(html)}`);
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(logging, "build", `\u251C\u2500\u2500 ${colors.bold(colors.red("\u2718"))} ${route.component}`);
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((routes) => {
40
- const label = routes.paths.length === 1 ? "page" : "pages";
41
- debug(logging, "build", `\u251C\u2500\u2500 ${colors.bold(colors.green("\u2714"))} ${route.component} \u2192 ${colors.magenta(`[${routes.paths.length} ${label}]`)}`);
42
- return routes;
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(logging, "build", `\u251C\u2500\u2500 ${colors.bold(colors.red("\u2717"))} ${route.component}`);
43
+ debug("build", `\u251C\u2500\u2500 ${colors.bold(colors.red("\u2717"))} ${route.component}`);
45
44
  throw err;
46
45
  });
47
- if ((_a = result.rss) == null ? void 0 : _a.xml) {
48
- const { url, content } = result.rss.xml;
49
- if (content) {
50
- const rssFile = new URL(url.replace(/^\/?/, "./"), astroConfig.dist);
51
- if (assets[fileURLToPath(rssFile)]) {
52
- throw new Error(`[getStaticPaths] RSS feed ${url} already exists.
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
- if ((_c = (_b = result.rss) == null ? void 0 : _b.xsl) == null ? void 0 : _c.content) {
59
- const { url, content } = result.rss.xsl;
60
- const stylesheetFile = new URL(url.replace(/^\/?/, "./"), astroConfig.dist);
61
- if (assets[fileURLToPath(stylesheetFile)]) {
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: result.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: result.paths[0],
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
- validateGetStaticPathsModule(mod);
92
- const rss = generateRssFunction(astroConfig.buildOptions.site, route);
93
- await assignStaticPaths(routeCache, route, mod, rss.generator);
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvYnVpbGQvcGFnZS1kYXRhLnRzIl0sCiAgIm1hcHBpbmdzIjogIkFBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFpQkEsZ0NBQXVDLE1BQWdFO0FBQ3RHLFFBQU0sRUFBRSxhQUFhLFNBQVMsVUFBVSxRQUFRLFlBQVksZUFBZTtBQUUzRSxRQUFNLFNBQWlDO0FBQ3ZDLFFBQU0sV0FBeUI7QUFNL0IsUUFBTSxRQUFRLElBQ2IsU0FBUyxPQUFPLElBQUksT0FBTyxVQUFVO0FBeEN2QztBQTBDRyxRQUFJLE1BQU0sVUFBVTtBQUNuQixlQUFTLE1BQU0sYUFBYTtBQUFBLFFBQzNCO0FBQUEsUUFDQSxPQUFPLENBQUMsTUFBTTtBQUFBLFFBQ2QsU0FBUyxNQUFNLFdBQVc7QUFBQSxVQUN6QjtBQUFBLFVBQ0EsVUFBVSxJQUFJLElBQUksS0FBSyxNQUFNLGFBQWEsWUFBWTtBQUFBLFVBQ3REO0FBQUEsVUFDQSxNQUFNO0FBQUEsVUFDTjtBQUFBLFVBQ0EsVUFBVSxNQUFNO0FBQUEsVUFDaEI7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFdBRUMsS0FBSyxDQUFDLFdBQVc7QUFDakIsZ0JBQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxRQUFRLFFBQVE7QUFDakQsZ0JBQU0sU0FBUyxTQUFTLHNCQUFPLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBUyxNQUFNLG9CQUFlLE9BQU8sT0FBTztBQUNwRyxpQkFBTztBQUFBLFdBRVAsTUFBTSxDQUFDLFFBQVE7QUFDZixnQkFBTSxTQUFTLFNBQVMsc0JBQU8sT0FBTyxLQUFLLE9BQU8sSUFBSSxjQUFTLE1BQU07QUFDckUsZ0JBQU07QUFBQTtBQUFBO0FBR1Q7QUFBQTtBQUdELFVBQU0sU0FBUyxNQUFNLHVCQUF1QixNQUFNLE9BQ2hELEtBQUssQ0FBQyxXQUFXO0FBQ2pCLFlBQU0sUUFBUSxPQUFPLE1BQU0sV0FBVyxJQUFJLFNBQVM7QUFDbkQsWUFBTSxTQUFTLFNBQVMsc0JBQU8sT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFTLE1BQU0sb0JBQWUsT0FBTyxRQUFRLElBQUksT0FBTyxNQUFNLFVBQVU7QUFDaEksYUFBTztBQUFBLE9BRVAsTUFBTSxDQUFDLFFBQVE7QUFDZixZQUFNLFNBQVMsU0FBUyxzQkFBTyxPQUFPLEtBQUssT0FBTyxJQUFJLGNBQVMsTUFBTTtBQUNyRSxZQUFNO0FBQUE7QUFFUixRQUFJLGFBQU8sUUFBUCxtQkFBWSxLQUFLO0FBQ3BCLFlBQU0sRUFBRSxLQUFLLFlBQVksT0FBTyxJQUFJO0FBQ3BDLFVBQUksU0FBUztBQUNaLGNBQU0sVUFBVSxJQUFJLElBQUksSUFBSSxRQUFRLFFBQVEsT0FBTyxZQUFZO0FBQy9ELFlBQUksT0FBTyxjQUFjLFdBQVc7QUFDbkMsZ0JBQU0sSUFBSSxNQUFNLDZCQUE2QjtBQUFBLG1FQUF5RixNQUFNO0FBQUE7QUFFN0ksZUFBTyxjQUFjLFlBQVk7QUFBQTtBQUFBO0FBR25DLFFBQUksbUJBQU8sUUFBUCxtQkFBWSxRQUFaLG1CQUFpQixTQUFTO0FBQzdCLFlBQU0sRUFBRSxLQUFLLFlBQVksT0FBTyxJQUFJO0FBQ3BDLFlBQU0saUJBQWlCLElBQUksSUFBSSxJQUFJLFFBQVEsUUFBUSxPQUFPLFlBQVk7QUFDdEUsVUFBSSxPQUFPLGNBQWMsa0JBQWtCO0FBQzFDLGNBQU0sSUFBSSxNQUNULHdDQUF3QztBQUFBLDBFQUFnRyxNQUFNO0FBQUE7QUFHaEosYUFBTyxjQUFjLG1CQUFtQjtBQUFBO0FBRXpDLGFBQVMsTUFBTSxhQUFhO0FBQUEsTUFDM0I7QUFBQSxNQUNBLE9BQU8sT0FBTztBQUFBLE1BQ2QsU0FBUyxNQUFNLFdBQVc7QUFBQSxRQUN6QjtBQUFBLFFBQ0EsVUFBVSxJQUFJLElBQUksS0FBSyxNQUFNLGFBQWEsWUFBWTtBQUFBLFFBQ3REO0FBQUEsUUFDQSxNQUFNO0FBQUEsUUFDTjtBQUFBLFFBQ0EsVUFBVSxPQUFPLE1BQU07QUFBQSxRQUN2QjtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUosU0FBTyxFQUFFLFFBQVE7QUFBQTtBQUdsQixzQ0FBc0MsTUFBK0IsT0FBaUU7QUFDckksUUFBTSxFQUFFLGFBQWEsU0FBUyxZQUFZLGVBQWU7QUFDekQsTUFBSSxDQUFDO0FBQVksVUFBTSxJQUFJLE1BQU07QUFDakMsUUFBTSxXQUFXLElBQUksSUFBSSxLQUFLLE1BQU0sYUFBYSxZQUFZO0FBQzdELFFBQU0sTUFBTyxNQUFNLFdBQVcsY0FBYyxjQUFjO0FBQzFELCtCQUE2QjtBQUM3QixRQUFNLE1BQU0sb0JBQW9CLFlBQVksYUFBYSxNQUFNO0FBQy9ELFFBQU0sa0JBQWtCLFlBQVksT0FBTyxLQUFLLElBQUk7QUFDcEQsUUFBTSxjQUFjLFdBQVcsTUFBTTtBQUNyQywrQkFBNkIsYUFBYTtBQUMxQyxTQUFPO0FBQUEsSUFDTixPQUFPLFlBQVksSUFBSSxDQUFDLGVBQWUsV0FBVyxVQUFVLE1BQU0sU0FBUyxXQUFXLFNBQVMsT0FBTztBQUFBLElBQ3RHLEtBQUssSUFBSTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvYnVpbGQvc2Nhbi1iYXNlZC1idWlsZC50cyJdLAogICJtYXBwaW5ncyI6ICJBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFhQSxxQkFBNEIsTUFBNkI7QUFDeEQsUUFBTSxFQUFFLFVBQVUsYUFBYSxTQUFTLFFBQVEsV0FBVyxZQUFZLFlBQVksZUFBZTtBQUdsRyxRQUFNLFlBQVk7QUFFbEIsU0FBTyxNQUFNLEtBQUssTUFBTTtBQUFBLElBQ3ZCLFVBQVU7QUFBQSxJQUNWLE1BQU07QUFBQSxJQUNOLE9BQU87QUFBQSxNQUNOLGFBQWE7QUFBQSxNQUNiLFFBQVE7QUFBQSxNQUNSLFFBQVEsY0FBYyxZQUFZO0FBQUEsTUFDbEMsZUFBZTtBQUFBLFFBRWQsT0FBTztBQUFBLFFBQ1AsUUFBUTtBQUFBLFVBQ1AsUUFBUTtBQUFBO0FBQUE7QUFBQSxNQUdWLFFBQVE7QUFBQTtBQUFBLElBRVQsU0FBUztBQUFBLE1BQ1IsMkJBQTJCO0FBQUEsUUFDMUI7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUE7QUFBQSxNQUVELDBCQUEwQjtBQUFBLFFBQ3pCO0FBQUE7QUFBQSxNQUVELEdBQUksV0FBVyxXQUFXO0FBQUE7QUFBQSxJQUUzQixXQUFXLFdBQVc7QUFBQSxJQUN0QixNQUFNLFdBQVc7QUFBQSxJQUNqQixXQUFXO0FBQUEsSUFDWCxRQUFRLFdBQVc7QUFBQSxJQUNuQixNQUFNLFlBQVksYUFBYSxPQUFPLElBQUksSUFBSSxZQUFZLGFBQWEsTUFBTSxXQUFXO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
50
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvcmUvYnVpbGQvc2Nhbi1iYXNlZC1idWlsZC50cyJdLAogICJtYXBwaW5ncyI6ICJBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFjQSxxQkFBNEIsTUFBNkI7QUFDeEQsUUFBTSxFQUFFLFVBQVUsYUFBYSxTQUFTLFFBQVEsV0FBVyxZQUFZLFlBQVksZUFBZTtBQUdsRyxRQUFNLFlBQVk7QUFFbEIsU0FBTyxNQUFNLEtBQUssTUFBTTtBQUFBLElBQ3ZCLFVBQVU7QUFBQSxJQUNWLE1BQU07QUFBQSxJQUNOLE9BQU87QUFBQSxNQUNOLGFBQWE7QUFBQSxNQUNiLFFBQVE7QUFBQSxNQUNSLFFBQVEsY0FBYyxZQUFZO0FBQUEsTUFDbEMsZUFBZTtBQUFBLFFBRWQsT0FBTztBQUFBLFFBQ1AsUUFBUTtBQUFBLFVBQ1AsUUFBUTtBQUFBO0FBQUE7QUFBQSxNQUdWLFFBQVE7QUFBQTtBQUFBLElBRVQsU0FBUztBQUFBLE1BQ1IsMkJBQTJCO0FBQUEsUUFDMUI7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUE7QUFBQSxNQUVELDBCQUEwQjtBQUFBLFFBQ3pCO0FBQUE7QUFBQSxNQUVELEdBQUksV0FBVyxXQUFXO0FBQUE7QUFBQSxJQUUzQixXQUFXLFdBQVc7QUFBQSxJQUN0QixNQUFNLFdBQVc7QUFBQSxJQUNqQixXQUFXO0FBQUEsSUFDWCxRQUFRLFdBQVc7QUFBQSxJQUNuQixNQUFNLFlBQVksYUFBYSxPQUFPLElBQUksSUFBSSxZQUFZLGFBQWEsTUFBTSxXQUFXO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K