astro 0.25.4 → 0.26.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 (148) hide show
  1. package/dist/@types/astro.js +0 -0
  2. package/dist/@types/serialize-javascript.d.js +0 -0
  3. package/dist/@types/shorthash.d.js +0 -0
  4. package/dist/adapter-ssg/index.js +0 -0
  5. package/dist/cli/check.js +4 -4
  6. package/dist/cli/index.js +21 -32
  7. package/dist/core/add/babel.js +0 -0
  8. package/dist/core/add/consts.js +0 -0
  9. package/dist/core/add/imports.js +0 -0
  10. package/dist/core/add/index.js +7 -14
  11. package/dist/core/add/wrapper.js +0 -0
  12. package/dist/core/app/common.js +0 -0
  13. package/dist/core/app/index.js +13 -10
  14. package/dist/core/app/node.js +0 -0
  15. package/dist/core/app/types.js +0 -0
  16. package/dist/core/build/add-rollup-input.js +0 -0
  17. package/dist/core/build/common.js +4 -5
  18. package/dist/core/build/generate.js +65 -72
  19. package/dist/core/build/index.js +59 -74
  20. package/dist/core/build/internal.js +0 -0
  21. package/dist/core/build/page-data.js +10 -9
  22. package/dist/core/build/static-build.js +41 -24
  23. package/dist/core/build/types.d.js +0 -0
  24. package/dist/core/build/util.js +0 -0
  25. package/dist/core/build/vite-plugin-hoisted-scripts.js +1 -1
  26. package/dist/core/build/vite-plugin-internals.js +0 -0
  27. package/dist/core/build/vite-plugin-pages.js +0 -0
  28. package/dist/core/build/vite-plugin-ssr.js +4 -2
  29. package/dist/core/config.js +86 -78
  30. package/dist/core/create-vite.js +12 -7
  31. package/dist/core/dev/index.js +8 -7
  32. package/dist/core/endpoint/dev/index.js +5 -10
  33. package/dist/core/endpoint/index.js +1 -3
  34. package/dist/core/errors.js +45 -0
  35. package/dist/core/logger/console.js +43 -0
  36. package/dist/core/logger/core.js +103 -0
  37. package/dist/core/logger/node.js +94 -0
  38. package/dist/core/messages.js +50 -24
  39. package/dist/core/path.js +0 -0
  40. package/dist/core/polyfill.js +0 -0
  41. package/dist/core/preview/index.js +8 -8
  42. package/dist/core/preview/util.js +3 -6
  43. package/dist/core/render/core.js +5 -6
  44. package/dist/core/render/dev/css.js +5 -6
  45. package/dist/core/render/dev/hmr.js +0 -0
  46. package/dist/core/render/dev/html.js +0 -0
  47. package/dist/core/render/dev/index.js +23 -36
  48. package/dist/core/render/paginate.js +0 -0
  49. package/dist/core/render/pretty-feed.js +103 -0
  50. package/dist/core/render/result.js +33 -15
  51. package/dist/core/render/route-cache.js +2 -2
  52. package/dist/core/render/rss.js +5 -4
  53. package/dist/core/render/script.js +0 -0
  54. package/dist/core/render/ssr-element.js +1 -1
  55. package/dist/core/render/util.js +26 -0
  56. package/dist/core/request.js +27 -0
  57. package/dist/core/routing/index.js +0 -0
  58. package/dist/core/routing/manifest/create.js +8 -6
  59. package/dist/core/routing/manifest/serialization.js +0 -0
  60. package/dist/core/routing/match.js +0 -0
  61. package/dist/core/routing/params.js +0 -0
  62. package/dist/core/routing/validation.js +1 -1
  63. package/dist/core/util.js +57 -125
  64. package/dist/integrations/index.js +9 -1
  65. package/dist/runtime/client/hmr.js +0 -0
  66. package/dist/runtime/client/idle.js +0 -0
  67. package/dist/runtime/client/load.js +0 -0
  68. package/dist/runtime/client/media.js +0 -0
  69. package/dist/runtime/client/only.js +0 -0
  70. package/dist/runtime/client/visible.js +0 -0
  71. package/dist/runtime/server/escape.js +0 -0
  72. package/dist/runtime/server/hydration.js +0 -0
  73. package/dist/runtime/server/index.js +42 -36
  74. package/dist/runtime/server/metadata.js +0 -0
  75. package/dist/runtime/server/util.js +0 -0
  76. package/dist/template/4xx.js +1 -1
  77. package/dist/template/5xx.js +0 -0
  78. package/dist/template/css.js +0 -0
  79. package/dist/types/@types/astro.d.ts +291 -233
  80. package/dist/types/cli/index.d.ts +1 -1
  81. package/dist/types/core/add/index.d.ts +1 -1
  82. package/dist/types/core/build/common.d.ts +0 -1
  83. package/dist/types/core/build/generate.d.ts +1 -1
  84. package/dist/types/core/build/index.d.ts +1 -1
  85. package/dist/types/core/build/page-data.d.ts +1 -1
  86. package/dist/types/core/config.d.ts +125 -116
  87. package/dist/types/core/create-vite.d.ts +1 -1
  88. package/dist/types/core/dev/index.d.ts +1 -1
  89. package/dist/types/core/endpoint/index.d.ts +1 -1
  90. package/dist/types/core/errors.d.ts +23 -0
  91. package/dist/types/core/logger/console.d.ts +4 -0
  92. package/dist/types/core/{logger.d.ts → logger/core.d.ts} +7 -22
  93. package/dist/types/core/logger/node.d.ts +34 -0
  94. package/dist/types/core/messages.d.ts +4 -2
  95. package/dist/types/core/preview/index.d.ts +1 -1
  96. package/dist/types/core/preview/util.d.ts +1 -2
  97. package/dist/types/core/render/core.d.ts +2 -3
  98. package/dist/types/core/render/dev/css.d.ts +0 -2
  99. package/dist/types/core/render/dev/index.d.ts +4 -6
  100. package/dist/types/core/render/pretty-feed.d.ts +2 -0
  101. package/dist/types/core/render/result.d.ts +2 -3
  102. package/dist/types/core/render/route-cache.d.ts +1 -1
  103. package/dist/types/core/render/util.d.ts +6 -0
  104. package/dist/types/core/request.d.ts +14 -0
  105. package/dist/types/core/routing/manifest/create.d.ts +1 -1
  106. package/dist/types/core/routing/validation.d.ts +1 -1
  107. package/dist/types/core/util.d.ts +11 -7
  108. package/dist/types/integrations/index.d.ts +6 -0
  109. package/dist/types/runtime/server/index.d.ts +1 -2
  110. package/dist/types/vite-plugin-astro/hmr.d.ts +1 -1
  111. package/dist/types/vite-plugin-astro/index.d.ts +1 -1
  112. package/dist/types/vite-plugin-astro-server/index.d.ts +1 -1
  113. package/dist/types/vite-plugin-build-html/extract-assets.d.ts +1 -1
  114. package/dist/types/vite-plugin-build-html/index.d.ts +3 -3
  115. package/dist/types/vite-plugin-config-alias/index.d.ts +1 -1
  116. package/dist/types/vite-plugin-jsx/index.d.ts +1 -1
  117. package/dist/vite-plugin-astro/compile.js +12 -14
  118. package/dist/vite-plugin-astro/hmr.js +2 -2
  119. package/dist/vite-plugin-astro/index.js +21 -8
  120. package/dist/vite-plugin-astro/query.js +0 -0
  121. package/dist/vite-plugin-astro/styles.js +1 -1
  122. package/dist/vite-plugin-astro-postprocess/index.js +31 -34
  123. package/dist/vite-plugin-astro-server/index.js +50 -22
  124. package/dist/vite-plugin-build-css/index.js +1 -1
  125. package/dist/vite-plugin-build-css/resolve.js +0 -0
  126. package/dist/vite-plugin-build-html/add-rollup-input.js +0 -0
  127. package/dist/vite-plugin-build-html/extract-assets.js +0 -0
  128. package/dist/vite-plugin-build-html/index.js +22 -23
  129. package/dist/vite-plugin-build-html/util.js +0 -0
  130. package/dist/vite-plugin-config-alias/index.js +1 -1
  131. package/dist/vite-plugin-env/index.js +1 -1
  132. package/dist/vite-plugin-integrations-container/index.js +0 -0
  133. package/dist/vite-plugin-jsx/index.js +1 -1
  134. package/dist/vite-plugin-markdown/index.js +89 -18
  135. package/dist/vite-plugin-scripts/index.js +0 -0
  136. package/env.d.ts +1 -1
  137. package/package.json +11 -7
  138. package/dist/core/build/scan-based-build.js +0 -62
  139. package/dist/core/dev/util.js +0 -44
  140. package/dist/core/logger.js +0 -174
  141. package/dist/core/render/dev/error.js +0 -34
  142. package/dist/core/render/request.js +0 -23
  143. package/dist/core/render/sitemap.js +0 -18
  144. package/dist/types/core/build/scan-based-build.d.ts +0 -18
  145. package/dist/types/core/dev/util.d.ts +0 -9
  146. package/dist/types/core/render/dev/error.d.ts +0 -7
  147. package/dist/types/core/render/request.d.ts +0 -15
  148. package/dist/types/core/render/sitemap.d.ts +0 -2
File without changes
File without changes
File without changes
File without changes
package/dist/cli/check.js CHANGED
@@ -42,13 +42,13 @@ function offsetAt({ line, character }, text) {
42
42
  }
43
43
  return i;
44
44
  }
45
- function pad(str, len) {
45
+ function generateString(str, len) {
46
46
  return Array.from({ length: len }, () => str).join("");
47
47
  }
48
48
  async function run() {
49
49
  }
50
50
  async function check(astroConfig) {
51
- const root = astroConfig.projectRoot;
51
+ const root = astroConfig.root;
52
52
  let checker = new AstroCheck(root.toString());
53
53
  await openAllDocuments(root, [], checker);
54
54
  let diagnostics = await checker.getDiagnostics();
@@ -67,8 +67,8 @@ async function check(astroConfig) {
67
67
  const lineNumStr = d.range.start.line.toString();
68
68
  const lineNumLen = lineNumStr.length;
69
69
  console.error(`${bgWhite(black(lineNumStr))} ${str}`);
70
- let tildes = pad("~", d.range.end.character - d.range.start.character);
71
- let spaces = pad(" ", d.range.start.character + lineNumLen - 1);
70
+ let tildes = generateString("~", d.range.end.character - d.range.start.character);
71
+ let spaces = generateString(" ", d.range.start.character + lineNumLen - 1);
72
72
  console.error(` ${spaces}${bold(red(tildes))}
73
73
  `);
74
74
  result.errors++;
package/dist/cli/index.js CHANGED
@@ -1,15 +1,15 @@
1
- import { enableVerboseLogging } from "../core/logger.js";
2
1
  import * as colors from "kleur/colors";
3
2
  import yargs from "yargs-parser";
4
3
  import { z } from "zod";
5
- import { defaultLogDestination } from "../core/logger.js";
4
+ import { nodeLogDestination, enableVerboseLogging } from "../core/logger/node.js";
6
5
  import build from "../core/build/index.js";
7
6
  import add from "../core/add/index.js";
8
7
  import devServer from "../core/dev/index.js";
9
8
  import preview from "../core/preview/index.js";
10
9
  import { check } from "./check.js";
11
- import { formatConfigError, loadConfig } from "../core/config.js";
12
- import { printHelp } from "../core/messages.js";
10
+ import { loadConfig } from "../core/config.js";
11
+ import { printHelp, formatErrorMessage, formatConfigErrorMessage } from "../core/messages.js";
12
+ import { createSafeError } from "../core/util.js";
13
13
  function printAstroHelp() {
14
14
  printHelp({
15
15
  commandName: "astro",
@@ -26,10 +26,9 @@ function printAstroHelp() {
26
26
  flags: [
27
27
  ["--host [optional IP]", "Expose server on network"],
28
28
  ["--config <path>", "Specify the path to the Astro config file."],
29
- ["--project-root <path>", "Specify the path to the project root folder."],
30
- ["--no-sitemap", "Disable sitemap generation (build only)."],
29
+ ["--root <path>", "Specify the path to the project root folder."],
31
30
  ["--legacy-build", "Use the build strategy prior to 0.24.0"],
32
- ["--experimental-ssr", "Enable SSR compilation."],
31
+ ["--experimental-ssr", "Enable SSR compilation fot 3rd-party adapters."],
33
32
  ["--drafts", "Include markdown draft pages in the build."],
34
33
  ["--verbose", "Enable verbose logging"],
35
34
  ["--silent", "Disable logging"]
@@ -37,7 +36,7 @@ function printAstroHelp() {
37
36
  });
38
37
  }
39
38
  async function printVersion() {
40
- const version = "0.25.4";
39
+ const version = "0.26.0";
41
40
  console.log();
42
41
  console.log(` ${colors.bgGreen(colors.black(` astro `))} ${colors.green(`v${version}`)}`);
43
42
  }
@@ -58,7 +57,7 @@ function resolveCommand(flags) {
58
57
  async function cli(args) {
59
58
  const flags = yargs(args);
60
59
  const cmd = resolveCommand(flags);
61
- const projectRoot = flags.projectRoot;
60
+ const root = flags.root;
62
61
  switch (cmd) {
63
62
  case "help":
64
63
  printAstroHelp();
@@ -68,7 +67,7 @@ async function cli(args) {
68
67
  return process.exit(0);
69
68
  }
70
69
  let logging = {
71
- dest: defaultLogDestination,
70
+ dest: nodeLogDestination,
72
71
  level: "info"
73
72
  };
74
73
  if (flags.verbose) {
@@ -79,40 +78,34 @@ async function cli(args) {
79
78
  }
80
79
  let config;
81
80
  try {
82
- config = await loadConfig({ cwd: projectRoot, flags });
81
+ config = await loadConfig({ cwd: root, flags, cmd });
83
82
  } catch (err) {
84
- throwAndExit(err);
85
- return;
83
+ return throwAndExit(err);
86
84
  }
87
85
  switch (cmd) {
88
86
  case "add": {
89
87
  try {
90
88
  const packages = flags._.slice(3);
91
- await add(packages, { cwd: projectRoot, flags, logging });
92
- process.exit(0);
89
+ return await add(packages, { cwd: root, flags, logging });
93
90
  } catch (err) {
94
- throwAndExit(err);
91
+ return throwAndExit(err);
95
92
  }
96
- return;
97
93
  }
98
94
  case "dev": {
99
95
  try {
100
96
  await devServer(config, { logging });
101
- await new Promise(() => {
97
+ return await new Promise(() => {
102
98
  });
103
99
  } catch (err) {
104
- throwAndExit(err);
100
+ return throwAndExit(err);
105
101
  }
106
- return;
107
102
  }
108
103
  case "build": {
109
104
  try {
110
- await build(config, { logging });
111
- process.exit(0);
105
+ return await build(config, { logging });
112
106
  } catch (err) {
113
- throwAndExit(err);
107
+ return throwAndExit(err);
114
108
  }
115
- return;
116
109
  }
117
110
  case "check": {
118
111
  const ret = await check(config);
@@ -120,11 +113,10 @@ async function cli(args) {
120
113
  }
121
114
  case "preview": {
122
115
  try {
123
- await preview(config, { logging });
116
+ return await preview(config, { logging });
124
117
  } catch (err) {
125
- throwAndExit(err);
118
+ return throwAndExit(err);
126
119
  }
127
- return;
128
120
  }
129
121
  default: {
130
122
  throw new Error(`Error running ${cmd}`);
@@ -133,12 +125,9 @@ async function cli(args) {
133
125
  }
134
126
  function throwAndExit(err) {
135
127
  if (err instanceof z.ZodError) {
136
- console.error(formatConfigError(err));
137
- } else if (err.stack) {
138
- const [mainMsg, ...stackMsg] = err.stack.split("\n");
139
- console.error(colors.red(mainMsg) + "\n" + colors.dim(stackMsg.join("\n")));
128
+ console.error(formatConfigErrorMessage(err));
140
129
  } else {
141
- console.error(colors.red(err.toString() || err));
130
+ console.error(formatErrorMessage(createSafeError(err)));
142
131
  }
143
132
  process.exit(1);
144
133
  }
File without changes
File without changes
File without changes
@@ -9,11 +9,11 @@ import preferredPM from "preferred-pm";
9
9
  import ora from "ora";
10
10
  import { resolveConfigURL } from "../config.js";
11
11
  import { apply as applyPolyfill } from "../polyfill.js";
12
- import { error, info, debug } from "../logger.js";
12
+ import { error, info, debug } from "../logger/core.js";
13
13
  import { printHelp } from "../messages.js";
14
14
  import * as msg from "../messages.js";
15
15
  import * as CONSTS from "./consts.js";
16
- import { dim, red, cyan, green, magenta, bold } from "kleur/colors";
16
+ import { dim, cyan, green, magenta, bold } from "kleur/colors";
17
17
  import { parseNpmName } from "../util.js";
18
18
  import { wrapDefaultExport } from "./wrapper.js";
19
19
  import { ensureImport } from "./imports.js";
@@ -54,18 +54,11 @@ async function add(names, { cwd, flags, logging }) {
54
54
  choices: CONSTS.FIRST_PARTY_ADDONS
55
55
  }
56
56
  ]);
57
- if (!response.frameworks && !response.addons) {
58
- info(logging, null, msg.cancelled(`Integrations skipped.`, `You can always run ${cyan("astro add")} later!`));
59
- return;
60
- }
61
- const selected = [response.frameworks ?? [], response.addons ?? []].flat(1);
62
- if (selected.length === 0) {
63
- error(logging, null, `
64
- ${red("No integrations specified!")}
65
- ${dim("Try running")} astro add again.`);
66
- return;
67
- }
68
- names = selected;
57
+ names = [...response.frameworks ?? [], ...response.addons ?? []];
58
+ }
59
+ if (names.length === 0) {
60
+ error(logging, null, `No integrations specified.`);
61
+ return;
69
62
  }
70
63
  names = names.map((name) => CONSTS.ALIASES.has(name) ? CONSTS.ALIASES.get(name) : name);
71
64
  if (configURL) {
File without changes
File without changes
@@ -20,9 +20,9 @@ var __privateMethod = (obj, member, method) => {
20
20
  __accessCheck(obj, member, "access private method");
21
21
  return method;
22
22
  };
23
- var _manifest, _manifestData, _routeDataToRouteInfo, _routeCache, _encoder, _renderPage, renderPage_fn, _callEndpoint, callEndpoint_fn;
23
+ var _manifest, _manifestData, _routeDataToRouteInfo, _routeCache, _encoder, _logging, _renderPage, renderPage_fn, _callEndpoint, callEndpoint_fn;
24
24
  import mime from "mime";
25
- import { defaultLogOptions } from "../logger.js";
25
+ import { consoleLogDestination } from "../logger/console.js";
26
26
  import { deserializeManifest } from "./common.js";
27
27
  import { matchRoute } from "../routing/match.js";
28
28
  import { render } from "../render/core.js";
@@ -39,12 +39,16 @@ class App {
39
39
  __privateAdd(this, _routeDataToRouteInfo, void 0);
40
40
  __privateAdd(this, _routeCache, void 0);
41
41
  __privateAdd(this, _encoder, new TextEncoder());
42
+ __privateAdd(this, _logging, {
43
+ dest: consoleLogDestination,
44
+ level: "info"
45
+ });
42
46
  __privateSet(this, _manifest, manifest);
43
47
  __privateSet(this, _manifestData, {
44
48
  routes: manifest.routes.map((route) => route.routeData)
45
49
  });
46
50
  __privateSet(this, _routeDataToRouteInfo, new Map(manifest.routes.map((route) => [route.routeData, route])));
47
- __privateSet(this, _routeCache, new RouteCache(defaultLogOptions));
51
+ __privateSet(this, _routeCache, new RouteCache(__privateGet(this, _logging)));
48
52
  }
49
53
  match(request) {
50
54
  const url = new URL(request.url);
@@ -75,6 +79,7 @@ _manifestData = new WeakMap();
75
79
  _routeDataToRouteInfo = new WeakMap();
76
80
  _routeCache = new WeakMap();
77
81
  _encoder = new WeakMap();
82
+ _logging = new WeakMap();
78
83
  _renderPage = new WeakSet();
79
84
  renderPage_fn = async function(request, routeData, mod) {
80
85
  const url = new URL(request.url);
@@ -86,7 +91,7 @@ renderPage_fn = async function(request, routeData, mod) {
86
91
  const result = await render({
87
92
  legacyBuild: false,
88
93
  links,
89
- logging: defaultLogOptions,
94
+ logging: __privateGet(this, _logging),
90
95
  markdownRender: manifest.markdown.render,
91
96
  mod,
92
97
  origin: url.origin,
@@ -104,8 +109,7 @@ renderPage_fn = async function(request, routeData, mod) {
104
109
  routeCache: __privateGet(this, _routeCache),
105
110
  site: __privateGet(this, _manifest).site,
106
111
  ssr: true,
107
- method: info.routeData.type === "endpoint" ? "" : "GET",
108
- headers: request.headers
112
+ request
109
113
  });
110
114
  if (result.type === "response") {
111
115
  return result.response;
@@ -121,15 +125,14 @@ renderPage_fn = async function(request, routeData, mod) {
121
125
  });
122
126
  };
123
127
  _callEndpoint = new WeakSet();
124
- callEndpoint_fn = async function(request, routeData, mod) {
128
+ callEndpoint_fn = async function(request, _routeData, mod) {
125
129
  const url = new URL(request.url);
126
130
  const handler = mod;
127
131
  const result = await callEndpoint(handler, {
128
- headers: request.headers,
129
- logging: defaultLogOptions,
130
- method: request.method,
132
+ logging: __privateGet(this, _logging),
131
133
  origin: url.origin,
132
134
  pathname: url.pathname,
135
+ request,
133
136
  routeCache: __privateGet(this, _routeCache),
134
137
  ssr: true
135
138
  });
File without changes
File without changes
File without changes
@@ -2,7 +2,7 @@ import npath from "path";
2
2
  import { appendForwardSlash } from "../../core/path.js";
3
3
  const STATUS_CODE_PAGES = /* @__PURE__ */ new Set(["/404", "/500"]);
4
4
  function getOutRoot(astroConfig) {
5
- return new URL("./", astroConfig.dist);
5
+ return new URL("./", astroConfig.outDir);
6
6
  }
7
7
  function getOutFolder(astroConfig, pathname, routeType) {
8
8
  const outRoot = getOutRoot(astroConfig);
@@ -10,7 +10,7 @@ function getOutFolder(astroConfig, pathname, routeType) {
10
10
  case "endpoint":
11
11
  return new URL("." + appendForwardSlash(npath.dirname(pathname)), outRoot);
12
12
  case "page":
13
- switch (astroConfig.buildOptions.pageUrlFormat) {
13
+ switch (astroConfig.build.format) {
14
14
  case "directory": {
15
15
  if (STATUS_CODE_PAGES.has(pathname)) {
16
16
  return new URL("." + appendForwardSlash(npath.dirname(pathname)), outRoot);
@@ -28,7 +28,7 @@ function getOutFile(astroConfig, outFolder, pathname, routeType) {
28
28
  case "endpoint":
29
29
  return new URL(npath.basename(pathname), outFolder);
30
30
  case "page":
31
- switch (astroConfig.buildOptions.pageUrlFormat) {
31
+ switch (astroConfig.build.format) {
32
32
  case "directory": {
33
33
  if (STATUS_CODE_PAGES.has(pathname)) {
34
34
  const baseName = npath.basename(pathname);
@@ -45,6 +45,5 @@ function getOutFile(astroConfig, outFolder, pathname, routeType) {
45
45
  }
46
46
  export {
47
47
  getOutFile,
48
- getOutFolder,
49
- getOutRoot
48
+ getOutFolder
50
49
  };
@@ -1,16 +1,19 @@
1
+ import astroRemark from "@astrojs/markdown-remark";
1
2
  import fs from "fs";
3
+ import { bgGreen, black, cyan, dim, green, magenta } from "kleur/colors";
2
4
  import npath from "path";
3
5
  import { fileURLToPath } from "url";
4
- import { debug, error, info } from "../../core/logger.js";
6
+ import { debug, info } from "../logger/core.js";
5
7
  import { prependForwardSlash } from "../../core/path.js";
6
8
  import { BEFORE_HYDRATION_SCRIPT_ID } from "../../vite-plugin-scripts/index.js";
7
9
  import { call as callEndpoint } from "../endpoint/index.js";
8
10
  import { render } from "../render/core.js";
9
11
  import { createLinkStylesheetElementSet, createModuleScriptElementWithSrcSet } from "../render/ssr-element.js";
12
+ import { getOutputFilename, isBuildingToSSR } from "../util.js";
10
13
  import { getOutFile, getOutFolder } from "./common.js";
11
- import { getPageDataByComponent, eachPageData } from "./internal.js";
12
- import { bgMagenta, black, cyan, dim, magenta } from "kleur/colors";
14
+ import { eachPageData, getPageDataByComponent } from "./internal.js";
13
15
  import { getTimeStat } from "./util.js";
16
+ import { createRequest } from "../request.js";
14
17
  const MAX_CONCURRENT_RENDERS = 1;
15
18
  function* throttle(max, inPaths) {
16
19
  let tmp = [];
@@ -30,7 +33,7 @@ function* throttle(max, inPaths) {
30
33
  }
31
34
  }
32
35
  function rootRelativeFacadeId(facadeId, astroConfig) {
33
- return facadeId.slice(fileURLToPath(astroConfig.projectRoot).length);
36
+ return facadeId.slice(fileURLToPath(astroConfig.root).length);
34
37
  }
35
38
  function chunkIsPage(astroConfig, output, internals) {
36
39
  if (output.type !== "chunk") {
@@ -44,18 +47,19 @@ function chunkIsPage(astroConfig, output, internals) {
44
47
  return false;
45
48
  }
46
49
  async function generatePages(result, opts, internals, facadeIdToPageDataMap) {
47
- var _a;
50
+ const timer = performance.now();
48
51
  info(opts.logging, null, `
49
- ${bgMagenta(black(" generating static routes "))}
50
- `);
51
- const ssr = !!((_a = opts.astroConfig._ctx.adapter) == null ? void 0 : _a.serverEntrypoint);
52
+ ${bgGreen(black(" generating static routes "))}`);
53
+ const ssr = isBuildingToSSR(opts.astroConfig);
52
54
  const serverEntry = opts.buildConfig.serverEntry;
53
- const outFolder = ssr ? opts.buildConfig.server : opts.astroConfig.dist;
55
+ const outFolder = ssr ? opts.buildConfig.server : opts.astroConfig.outDir;
54
56
  const ssrEntryURL = new URL("./" + serverEntry + `?time=${Date.now()}`, outFolder);
55
57
  const ssrEntry = await import(ssrEntryURL.toString());
56
58
  for (const pageData of eachPageData(internals)) {
57
59
  await generatePage(opts, internals, pageData, ssrEntry);
58
60
  }
61
+ info(opts.logging, null, dim(`Completed in ${getTimeStat(timer, performance.now())}.
62
+ `));
59
63
  }
60
64
  async function generatePage(opts, internals, pageData, ssrEntry) {
61
65
  let timeStart = performance.now();
@@ -75,24 +79,17 @@ async function generatePage(opts, internals, pageData, ssrEntry) {
75
79
  mod: pageModule,
76
80
  renderers
77
81
  };
78
- const icon = pageData.route.type === "page" ? cyan("</>") : magenta("{-}");
82
+ const icon = pageData.route.type === "page" ? green("\u25B6") : magenta("\u03BB");
79
83
  info(opts.logging, null, `${icon} ${pageData.route.component}`);
80
- const renderPromises = [];
81
- for (const paths of throttle(MAX_CONCURRENT_RENDERS, pageData.paths)) {
82
- for (const path of paths) {
83
- renderPromises.push(generatePath(path, opts, generationOptions));
84
- }
85
- await Promise.all(renderPromises);
84
+ for (let i = 0; i < pageData.paths.length; i++) {
85
+ const path = pageData.paths[i];
86
+ await generatePath(path, opts, generationOptions);
86
87
  const timeEnd = performance.now();
87
88
  const timeChange = getTimeStat(timeStart, timeEnd);
88
- let shouldLogTimeChange = !getTimeStat(timeStart, timeEnd).startsWith("0");
89
- for (const path of paths) {
90
- const timeIncrease = shouldLogTimeChange ? ` ${dim(`+${timeChange}`)}` : "";
91
- info(opts.logging, null, ` ${dim("\u2503")} ${path}${timeIncrease}`);
92
- shouldLogTimeChange = false;
93
- }
94
- timeStart = performance.now();
95
- renderPromises.length = 0;
89
+ const timeIncrease = `(+${timeChange})`;
90
+ const filePath = getOutputFilename(opts.astroConfig, path);
91
+ const lineIcon = i === pageData.paths.length - 1 ? "\u2514\u2500" : "\u251C\u2500";
92
+ info(opts.logging, null, ` ${cyan(lineIcon)} ${dim(filePath)} ${dim(timeIncrease)}`);
96
93
  }
97
94
  }
98
95
  function addPageName(pathname, opts) {
@@ -105,7 +102,7 @@ async function generatePath(pathname, opts, gopts) {
105
102
  addPageName(pathname, opts);
106
103
  }
107
104
  debug("build", `Generating: ${pathname}`);
108
- const site = astroConfig.buildOptions.site;
105
+ const site = astroConfig.site;
109
106
  const links = createLinkStylesheetElementSet(linkIds.reverse(), site);
110
107
  const scripts = createModuleScriptElementWithSrcSet(hoistedId ? [hoistedId] : [], site);
111
108
  for (const script of astroConfig._ctx.scripts) {
@@ -116,57 +113,53 @@ async function generatePath(pathname, opts, gopts) {
116
113
  });
117
114
  }
118
115
  }
119
- try {
120
- const options = {
121
- legacyBuild: false,
122
- links,
123
- logging,
124
- markdownRender: astroConfig.markdownOptions.render,
125
- mod,
126
- origin,
127
- pathname,
128
- scripts,
129
- renderers,
130
- async resolve(specifier) {
131
- const hashedFilePath = internals.entrySpecifierToBundleMap.get(specifier);
132
- if (typeof hashedFilePath !== "string") {
133
- if (specifier === BEFORE_HYDRATION_SCRIPT_ID) {
134
- return "data:text/javascript;charset=utf-8,//[no before-hydration script]";
135
- }
136
- throw new Error(`Cannot find the built path for ${specifier}`);
116
+ const url = new URL(origin + pathname);
117
+ const options = {
118
+ legacyBuild: false,
119
+ links,
120
+ logging,
121
+ markdownRender: [astroRemark, astroConfig.markdown],
122
+ mod,
123
+ origin,
124
+ pathname,
125
+ scripts,
126
+ renderers,
127
+ async resolve(specifier) {
128
+ const hashedFilePath = internals.entrySpecifierToBundleMap.get(specifier);
129
+ if (typeof hashedFilePath !== "string") {
130
+ if (specifier === BEFORE_HYDRATION_SCRIPT_ID) {
131
+ return "data:text/javascript;charset=utf-8,//[no before-hydration script]";
137
132
  }
138
- const relPath = npath.posix.relative(pathname, "/" + hashedFilePath);
139
- const fullyRelativePath = relPath[0] === "." ? relPath : "./" + relPath;
140
- return fullyRelativePath;
141
- },
142
- method: "GET",
143
- headers: new Headers(),
144
- route: pageData.route,
145
- routeCache,
146
- site: astroConfig.buildOptions.site,
147
- ssr: opts.astroConfig.buildOptions.experimentalSsr
148
- };
149
- let body;
150
- if (pageData.route.type === "endpoint") {
151
- const result = await callEndpoint(mod, options);
152
- if (result.type === "response") {
153
- throw new Error(`Returning a Response from an endpoint is not supported in SSG mode.`);
154
- }
155
- body = result.body;
156
- } else {
157
- const result = await render(options);
158
- if (result.type !== "html") {
159
- return;
133
+ throw new Error(`Cannot find the built path for ${specifier}`);
160
134
  }
161
- body = result.html;
135
+ const relPath = npath.posix.relative(pathname, "/" + hashedFilePath);
136
+ const fullyRelativePath = relPath[0] === "." ? relPath : "./" + relPath;
137
+ return fullyRelativePath;
138
+ },
139
+ request: createRequest({ url, headers: new Headers(), logging }),
140
+ route: pageData.route,
141
+ routeCache,
142
+ site: astroConfig.site ? new URL(astroConfig.base, astroConfig.site).toString() : astroConfig.site,
143
+ ssr: isBuildingToSSR(opts.astroConfig)
144
+ };
145
+ let body;
146
+ if (pageData.route.type === "endpoint") {
147
+ const result = await callEndpoint(mod, options);
148
+ if (result.type === "response") {
149
+ throw new Error(`Returning a Response from an endpoint is not supported in SSG mode.`);
150
+ }
151
+ body = result.body;
152
+ } else {
153
+ const result = await render(options);
154
+ if (result.type !== "html") {
155
+ return;
162
156
  }
163
- const outFolder = getOutFolder(astroConfig, pathname, pageData.route.type);
164
- const outFile = getOutFile(astroConfig, outFolder, pathname, pageData.route.type);
165
- await fs.promises.mkdir(outFolder, { recursive: true });
166
- await fs.promises.writeFile(outFile, body, "utf-8");
167
- } catch (err) {
168
- error(opts.logging, "build", `Error rendering:`, err);
157
+ body = result.html;
169
158
  }
159
+ const outFolder = getOutFolder(astroConfig, pathname, pageData.route.type);
160
+ const outFile = getOutFile(astroConfig, outFolder, pathname, pageData.route.type);
161
+ await fs.promises.mkdir(outFolder, { recursive: true });
162
+ await fs.promises.writeFile(outFile, body, "utf-8");
170
163
  }
171
164
  export {
172
165
  chunkIsPage,