astro 1.2.5 → 1.2.6

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 (72) hide show
  1. package/dist/@types/astro.d.ts +14 -13
  2. package/dist/cli/check/index.d.ts +2 -2
  3. package/dist/cli/check/index.js +2 -2
  4. package/dist/cli/index.js +28 -9
  5. package/dist/core/add/index.js +1 -1
  6. package/dist/core/build/generate.d.ts +3 -3
  7. package/dist/core/build/generate.js +27 -27
  8. package/dist/core/build/index.d.ts +2 -2
  9. package/dist/core/build/index.js +23 -19
  10. package/dist/core/build/page-data.d.ts +2 -2
  11. package/dist/core/build/page-data.js +2 -2
  12. package/dist/core/build/static-build.js +26 -28
  13. package/dist/core/build/types.d.ts +2 -2
  14. package/dist/core/build/vite-plugin-css.d.ts +0 -2
  15. package/dist/core/build/vite-plugin-css.js +3 -3
  16. package/dist/core/build/vite-plugin-hoisted-scripts.d.ts +2 -2
  17. package/dist/core/build/vite-plugin-hoisted-scripts.js +3 -3
  18. package/dist/core/build/vite-plugin-pages.js +2 -2
  19. package/dist/core/build/vite-plugin-ssr.js +15 -11
  20. package/dist/core/config/config.d.ts +41 -0
  21. package/dist/core/{config.js → config/config.js} +5 -166
  22. package/dist/core/config/index.d.ts +4 -0
  23. package/dist/core/config/index.js +18 -0
  24. package/dist/core/config/schema.d.ts +478 -0
  25. package/dist/core/config/schema.js +148 -0
  26. package/dist/core/config/settings.d.ts +8 -0
  27. package/dist/core/config/settings.js +16 -0
  28. package/dist/core/config/tsconfig.d.ts +2 -0
  29. package/dist/core/config/tsconfig.js +13 -0
  30. package/dist/core/create-vite.d.ts +3 -3
  31. package/dist/core/create-vite.js +21 -21
  32. package/dist/core/dev/index.d.ts +2 -2
  33. package/dist/core/dev/index.js +16 -12
  34. package/dist/core/endpoint/dev/index.js +1 -1
  35. package/dist/core/messages.js +2 -2
  36. package/dist/core/preview/index.d.ts +2 -2
  37. package/dist/core/preview/index.js +9 -9
  38. package/dist/core/render/dev/index.d.ts +5 -5
  39. package/dist/core/render/dev/index.js +14 -14
  40. package/dist/core/render/dev/scripts.d.ts +2 -2
  41. package/dist/core/render/dev/scripts.js +4 -7
  42. package/dist/core/routing/manifest/create.d.ts +3 -3
  43. package/dist/core/routing/manifest/create.js +9 -12
  44. package/dist/core/util.d.ts +3 -3
  45. package/dist/core/util.js +9 -9
  46. package/dist/integrations/index.d.ts +6 -6
  47. package/dist/integrations/index.js +19 -17
  48. package/dist/runtime/server/astro-global.js +1 -1
  49. package/dist/vite-plugin-astro/index.d.ts +3 -3
  50. package/dist/vite-plugin-astro/index.js +2 -1
  51. package/dist/vite-plugin-astro-postprocess/index.d.ts +3 -3
  52. package/dist/vite-plugin-astro-postprocess/index.js +1 -1
  53. package/dist/vite-plugin-astro-server/index.d.ts +4 -4
  54. package/dist/vite-plugin-astro-server/index.js +27 -24
  55. package/dist/vite-plugin-config-alias/index.d.ts +3 -3
  56. package/dist/vite-plugin-config-alias/index.js +6 -5
  57. package/dist/vite-plugin-env/index.d.ts +3 -3
  58. package/dist/vite-plugin-env/index.js +2 -3
  59. package/dist/vite-plugin-integrations-container/index.d.ts +3 -3
  60. package/dist/vite-plugin-integrations-container/index.js +2 -2
  61. package/dist/vite-plugin-jsx/index.d.ts +3 -3
  62. package/dist/vite-plugin-jsx/index.js +3 -3
  63. package/dist/vite-plugin-markdown/index.d.ts +3 -3
  64. package/dist/vite-plugin-markdown/index.js +3 -3
  65. package/dist/vite-plugin-markdown-legacy/index.d.ts +3 -3
  66. package/dist/vite-plugin-markdown-legacy/index.js +2 -1
  67. package/dist/vite-plugin-scripts/index.d.ts +3 -3
  68. package/dist/vite-plugin-scripts/index.js +5 -5
  69. package/dist/vite-plugin-scripts/page-ssr.d.ts +3 -3
  70. package/dist/vite-plugin-scripts/page-ssr.js +7 -5
  71. package/package.json +1 -1
  72. package/dist/core/config.d.ts +0 -260
@@ -5,7 +5,7 @@ import type * as babel from '@babel/core';
5
5
  import type { AddressInfo } from 'net';
6
6
  import type { TsConfigJson } from 'tsconfig-resolver';
7
7
  import type * as vite from 'vite';
8
- import { z } from 'zod';
8
+ import type { z } from 'zod';
9
9
  import type { SerializedSSRManifest } from '../core/app/types';
10
10
  import type { PageBuildData } from '../core/build/types';
11
11
  import type { AstroConfigSchema } from '../core/config';
@@ -803,18 +803,19 @@ export interface InjectedRoute {
803
803
  }
804
804
  export interface AstroConfig extends z.output<typeof AstroConfigSchema> {
805
805
  integrations: AstroIntegration[];
806
- _ctx: {
807
- tsConfig: TsConfigJson | undefined;
808
- tsConfigPath: string | undefined;
809
- pageExtensions: string[];
810
- injectedRoutes: InjectedRoute[];
811
- adapter: AstroAdapter | undefined;
812
- renderers: AstroRenderer[];
813
- scripts: {
814
- stage: InjectedScriptStage;
815
- content: string;
816
- }[];
817
- };
806
+ }
807
+ export interface AstroSettings {
808
+ config: AstroConfig;
809
+ adapter: AstroAdapter | undefined;
810
+ injectedRoutes: InjectedRoute[];
811
+ pageExtensions: string[];
812
+ renderers: AstroRenderer[];
813
+ scripts: {
814
+ stage: InjectedScriptStage;
815
+ content: string;
816
+ }[];
817
+ tsConfig: TsConfigJson | undefined;
818
+ tsConfigPath: string | undefined;
818
819
  }
819
820
  export declare type AsyncRendererComponentFn<U> = (Component: any, props: any, slots: Record<string, string>, metadata?: AstroComponentMetadata) => Promise<U>;
820
821
  /** Generic interface for a component (Astro, Svelte, React, etc.) */
@@ -1,2 +1,2 @@
1
- import type { AstroConfig } from '../../@types/astro';
2
- export declare function check(astroConfig: AstroConfig): Promise<0 | 1>;
1
+ import type { AstroSettings } from '../../@types/astro';
2
+ export declare function check(settings: AstroSettings): Promise<0 | 1>;
@@ -5,9 +5,9 @@ import { bold, dim, red, yellow } from "kleur/colors";
5
5
  import ora from "ora";
6
6
  import { fileURLToPath, pathToFileURL } from "url";
7
7
  import { printDiagnostic } from "./print.js";
8
- async function check(astroConfig) {
8
+ async function check(settings) {
9
9
  console.log(bold("astro check"));
10
- const root = astroConfig.root;
10
+ const root = settings.config.root;
11
11
  const spinner = ora(` Getting diagnostics for Astro files in ${fileURLToPath(root)}\u2026`).start();
12
12
  let checker = new AstroCheck(root.toString());
13
13
  const filesCount = await openAllDocuments(root, [], checker);
package/dist/cli/index.js CHANGED
@@ -5,7 +5,14 @@ import yargs from "yargs-parser";
5
5
  import { z } from "zod";
6
6
  import add from "../core/add/index.js";
7
7
  import build from "../core/build/index.js";
8
- import { openConfig, resolveConfigPath, resolveFlags, resolveRoot } from "../core/config.js";
8
+ import {
9
+ createSettings,
10
+ loadTSConfig,
11
+ openConfig,
12
+ resolveConfigPath,
13
+ resolveFlags,
14
+ resolveRoot
15
+ } from "../core/config/index.js";
9
16
  import devServer from "../core/dev/index.js";
10
17
  import { collectErrorMetadata } from "../core/errors.js";
11
18
  import { debug, error, info } from "../core/logger/core.js";
@@ -113,7 +120,7 @@ async function runCommand(cmd, flags) {
113
120
  return await telemetryHandler.update(subcommand, { flags, telemetry });
114
121
  }
115
122
  }
116
- let { astroConfig, userConfig } = await openConfig({
123
+ let { astroConfig: initialAstroConfig, userConfig: initialUserConfig } = await openConfig({
117
124
  cwd: root,
118
125
  flags,
119
126
  cmd,
@@ -122,13 +129,19 @@ async function runCommand(cmd, flags) {
122
129
  await handleConfigError(e, { cwd: root, flags, logging });
123
130
  return {};
124
131
  });
125
- if (!astroConfig)
132
+ if (!initialAstroConfig)
126
133
  return;
127
- telemetry.record(event.eventCliSession(cmd, userConfig, flags));
134
+ telemetry.record(event.eventCliSession(cmd, initialUserConfig, flags));
135
+ let initialTsConfig = loadTSConfig(root);
136
+ let settings = createSettings({
137
+ config: initialAstroConfig,
138
+ tsConfig: initialTsConfig == null ? void 0 : initialTsConfig.config,
139
+ tsConfigPath: initialTsConfig == null ? void 0 : initialTsConfig.path
140
+ });
128
141
  switch (cmd) {
129
142
  case "dev": {
130
143
  async function startDevServer({ isRestart = false } = {}) {
131
- const { watcher, stop } = await devServer(astroConfig, { logging, telemetry, isRestart });
144
+ const { watcher, stop } = await devServer(settings, { logging, telemetry, isRestart });
132
145
  let restartInFlight = false;
133
146
  const configFlag = resolveFlags(flags).config;
134
147
  const configFlagPath = configFlag ? await resolveConfigPath({ cwd: root, flags }) : void 0;
@@ -148,7 +161,13 @@ async function runCommand(cmd, flags) {
148
161
  isConfigReload: true
149
162
  });
150
163
  info(logging, "astro", logMsg + "\n");
151
- astroConfig = newConfig.astroConfig;
164
+ let astroConfig = newConfig.astroConfig;
165
+ let tsconfig = loadTSConfig(root);
166
+ settings = createSettings({
167
+ config: astroConfig,
168
+ tsConfig: tsconfig == null ? void 0 : tsconfig.config,
169
+ tsConfigPath: tsconfig == null ? void 0 : tsconfig.path
170
+ });
152
171
  await stop();
153
172
  await startDevServer({ isRestart: true });
154
173
  } catch (e) {
@@ -168,14 +187,14 @@ async function runCommand(cmd, flags) {
168
187
  });
169
188
  }
170
189
  case "build": {
171
- return await build(astroConfig, { logging, telemetry });
190
+ return await build(settings, { logging, telemetry });
172
191
  }
173
192
  case "check": {
174
- const ret = await check(astroConfig);
193
+ const ret = await check(settings);
175
194
  return process.exit(ret);
176
195
  }
177
196
  case "preview": {
178
- const server = await preview(astroConfig, { logging, telemetry });
197
+ const server = await preview(settings, { logging, telemetry });
179
198
  return await server.closed();
180
199
  }
181
200
  }
@@ -8,7 +8,7 @@ import path from "path";
8
8
  import preferredPM from "preferred-pm";
9
9
  import prompts from "prompts";
10
10
  import { fileURLToPath, pathToFileURL } from "url";
11
- import { resolveConfigPath } from "../config.js";
11
+ import { resolveConfigPath } from "../config/index.js";
12
12
  import { debug, info } from "../logger/core.js";
13
13
  import * as msg from "../messages.js";
14
14
  import { printHelp } from "../messages.js";
@@ -1,7 +1,7 @@
1
1
  import type { OutputAsset, OutputChunk } from 'rollup';
2
- import type { AstroConfig } from '../../@types/astro';
2
+ import type { AstroSettings } from '../../@types/astro';
3
3
  import type { BuildInternals } from '../../core/build/internal.js';
4
4
  import type { StaticBuildOptions } from './types';
5
- export declare function rootRelativeFacadeId(facadeId: string, astroConfig: AstroConfig): string;
6
- export declare function chunkIsPage(astroConfig: AstroConfig, output: OutputAsset | OutputChunk, internals: BuildInternals): boolean;
5
+ export declare function rootRelativeFacadeId(facadeId: string, settings: AstroSettings): string;
6
+ export declare function chunkIsPage(settings: AstroSettings, output: OutputAsset | OutputChunk, internals: BuildInternals): boolean;
7
7
  export declare function generatePages(opts: StaticBuildOptions, internals: BuildInternals): Promise<void>;
@@ -39,21 +39,21 @@ function* throttle(max, inPaths) {
39
39
  yield tmp;
40
40
  }
41
41
  }
42
- function shouldSkipDraft(pageModule, astroConfig) {
42
+ function shouldSkipDraft(pageModule, settings) {
43
43
  var _a;
44
- return !astroConfig.markdown.drafts && "frontmatter" in pageModule && ((_a = pageModule.frontmatter) == null ? void 0 : _a.draft) === true;
44
+ return !settings.config.markdown.drafts && "frontmatter" in pageModule && ((_a = pageModule.frontmatter) == null ? void 0 : _a.draft) === true;
45
45
  }
46
- function rootRelativeFacadeId(facadeId, astroConfig) {
47
- return facadeId.slice(fileURLToPath(astroConfig.root).length);
46
+ function rootRelativeFacadeId(facadeId, settings) {
47
+ return facadeId.slice(fileURLToPath(settings.config.root).length);
48
48
  }
49
- function chunkIsPage(astroConfig, output, internals) {
49
+ function chunkIsPage(settings, output, internals) {
50
50
  if (output.type !== "chunk") {
51
51
  return false;
52
52
  }
53
53
  const chunk = output;
54
54
  if (chunk.facadeModuleId) {
55
55
  const facadeToEntryId = prependForwardSlash(
56
- rootRelativeFacadeId(chunk.facadeModuleId, astroConfig)
56
+ rootRelativeFacadeId(chunk.facadeModuleId, settings)
57
57
  );
58
58
  return internals.entrySpecifierToBundleMap.has(facadeToEntryId);
59
59
  }
@@ -63,9 +63,9 @@ async function generatePages(opts, internals) {
63
63
  const timer = performance.now();
64
64
  info(opts.logging, null, `
65
65
  ${bgGreen(black(" generating static routes "))}`);
66
- const ssr = opts.astroConfig.output === "server";
66
+ const ssr = opts.settings.config.output === "server";
67
67
  const serverEntry = opts.buildConfig.serverEntry;
68
- const outFolder = ssr ? opts.buildConfig.server : getOutDirWithinCwd(opts.astroConfig.outDir);
68
+ const outFolder = ssr ? opts.buildConfig.server : getOutDirWithinCwd(opts.settings.config.outDir);
69
69
  const ssrEntryURL = new URL("./" + serverEntry + `?time=${Date.now()}`, outFolder);
70
70
  const ssrEntry = await import(ssrEntryURL.toString());
71
71
  const builtPaths = /* @__PURE__ */ new Set();
@@ -87,7 +87,7 @@ async function generatePage(opts, internals, pageData, ssrEntry, builtPaths) {
87
87
  `Unable to find the module for ${pageData.component}. This is unexpected and likely a bug in Astro, please report.`
88
88
  );
89
89
  }
90
- if (shouldSkipDraft(pageModule, opts.astroConfig)) {
90
+ if (shouldSkipDraft(pageModule, opts.settings)) {
91
91
  info(opts.logging, null, `${magenta("\u26A0\uFE0F")} Skipping draft ${pageData.route.component}`);
92
92
  return;
93
93
  }
@@ -108,7 +108,7 @@ async function generatePage(opts, internals, pageData, ssrEntry, builtPaths) {
108
108
  const timeEnd = performance.now();
109
109
  const timeChange = getTimeStat(timeStart, timeEnd);
110
110
  const timeIncrease = `(+${timeChange})`;
111
- const filePath = getOutputFilename(opts.astroConfig, path, pageData.route.type);
111
+ const filePath = getOutputFilename(opts.settings.config, path, pageData.route.type);
112
112
  const lineIcon = i === paths.length - 1 ? "\u2514\u2500" : "\u251C\u2500";
113
113
  info(opts.logging, null, ` ${cyan(lineIcon)} ${dim(filePath)} ${dim(timeIncrease)}`);
114
114
  }
@@ -125,7 +125,7 @@ async function getPathsForRoute(pageData, mod, opts, builtPaths) {
125
125
  route: pageData.route,
126
126
  isValidate: false,
127
127
  logging: opts.logging,
128
- ssr: opts.astroConfig.output === "server"
128
+ ssr: opts.settings.config.output === "server"
129
129
  }).then((_result) => {
130
130
  const label = _result.staticPaths.length === 1 ? "page" : "pages";
131
131
  debug(
@@ -170,8 +170,8 @@ function shouldAppendForwardSlash(trailingSlash, buildFormat) {
170
170
  }
171
171
  }
172
172
  function addPageName(pathname, opts) {
173
- const trailingSlash = opts.astroConfig.trailingSlash;
174
- const buildFormat = opts.astroConfig.build.format;
173
+ const trailingSlash = opts.settings.config.trailingSlash;
174
+ const buildFormat = opts.settings.config.build.format;
175
175
  const pageName = shouldAppendForwardSlash(trailingSlash, buildFormat) ? pathname.replace(/\/?$/, "/").replace(/^\//, "") : pathname.replace(/^\//, "");
176
176
  opts.pageNames.push(pageName);
177
177
  }
@@ -192,27 +192,27 @@ function getUrlForPath(pathname, base, origin, format, routeType) {
192
192
  }
193
193
  async function generatePath(pathname, opts, gopts) {
194
194
  var _a;
195
- const { astroConfig, logging, origin, routeCache } = opts;
195
+ const { settings, logging, origin, routeCache } = opts;
196
196
  const { mod, internals, linkIds, scripts: hoistedScripts, pageData, renderers } = gopts;
197
197
  if (pageData.route.type === "page") {
198
198
  addPageName(pathname, opts);
199
199
  }
200
200
  debug("build", `Generating: ${pathname}`);
201
- const site = astroConfig.base !== "/" ? joinPaths(((_a = astroConfig.site) == null ? void 0 : _a.toString()) || "http://localhost/", astroConfig.base) : astroConfig.site;
201
+ const site = settings.config.base !== "/" ? joinPaths(((_a = settings.config.site) == null ? void 0 : _a.toString()) || "http://localhost/", settings.config.base) : settings.config.site;
202
202
  const links = createLinkStylesheetElementSet(linkIds, site);
203
203
  const scripts = createModuleScriptsSet(hoistedScripts ? [hoistedScripts] : [], site);
204
- if (astroConfig._ctx.scripts.some((script) => script.stage === "page")) {
204
+ if (settings.scripts.some((script) => script.stage === "page")) {
205
205
  const hashedFilePath = internals.entrySpecifierToBundleMap.get(PAGE_SCRIPT_ID);
206
206
  if (typeof hashedFilePath !== "string") {
207
207
  throw new Error(`Cannot find the built path for ${PAGE_SCRIPT_ID}`);
208
208
  }
209
- const src = prependForwardSlash(npath.posix.join(astroConfig.base, hashedFilePath));
209
+ const src = prependForwardSlash(npath.posix.join(settings.config.base, hashedFilePath));
210
210
  scripts.add({
211
211
  props: { type: "module", src },
212
212
  children: ""
213
213
  });
214
214
  }
215
- for (const script of astroConfig._ctx.scripts) {
215
+ for (const script of settings.scripts) {
216
216
  if (script.stage === "head-inline") {
217
217
  scripts.add({
218
218
  props: {},
@@ -220,12 +220,12 @@ async function generatePath(pathname, opts, gopts) {
220
220
  });
221
221
  }
222
222
  }
223
- const ssr = opts.astroConfig.output === "server";
223
+ const ssr = settings.config.output === "server";
224
224
  const url = getUrlForPath(
225
225
  pathname,
226
- opts.astroConfig.base,
226
+ opts.settings.config.base,
227
227
  origin,
228
- opts.astroConfig.build.format,
228
+ opts.settings.config.build.format,
229
229
  pageData.route.type
230
230
  );
231
231
  const options = {
@@ -233,8 +233,8 @@ async function generatePath(pathname, opts, gopts) {
233
233
  links,
234
234
  logging,
235
235
  markdown: {
236
- ...astroConfig.markdown,
237
- isAstroFlavoredMd: astroConfig.legacy.astroFlavoredMarkdown
236
+ ...settings.config.markdown,
237
+ isAstroFlavoredMd: settings.config.legacy.astroFlavoredMarkdown
238
238
  },
239
239
  mod,
240
240
  mode: opts.mode,
@@ -250,12 +250,12 @@ async function generatePath(pathname, opts, gopts) {
250
250
  }
251
251
  throw new Error(`Cannot find the built path for ${specifier}`);
252
252
  }
253
- return prependForwardSlash(npath.posix.join(astroConfig.base, hashedFilePath));
253
+ return prependForwardSlash(npath.posix.join(settings.config.base, hashedFilePath));
254
254
  },
255
255
  request: createRequest({ url, headers: new Headers(), logging, ssr }),
256
256
  route: pageData.route,
257
257
  routeCache,
258
- site: astroConfig.site ? new URL(astroConfig.base, astroConfig.site).toString() : astroConfig.site,
258
+ site: settings.config.site ? new URL(settings.config.base, settings.config.site).toString() : settings.config.site,
259
259
  ssr,
260
260
  streaming: true
261
261
  };
@@ -275,8 +275,8 @@ async function generatePath(pathname, opts, gopts) {
275
275
  }
276
276
  body = await response.text();
277
277
  }
278
- const outFolder = getOutFolder(astroConfig, pathname, pageData.route.type);
279
- const outFile = getOutFile(astroConfig, outFolder, pathname, pageData.route.type);
278
+ const outFolder = getOutFolder(settings.config, pathname, pageData.route.type);
279
+ const outFile = getOutFile(settings.config, outFolder, pathname, pageData.route.type);
280
280
  pageData.route.distURL = outFile;
281
281
  await fs.promises.mkdir(outFolder, { recursive: true });
282
282
  await fs.promises.writeFile(outFile, body, encoding ?? "utf-8");
@@ -1,5 +1,5 @@
1
1
  import type { AstroTelemetry } from '@astrojs/telemetry';
2
- import type { AstroConfig, RuntimeMode } from '../../@types/astro';
2
+ import type { AstroSettings, RuntimeMode } from '../../@types/astro';
3
3
  import type { LogOptions } from '../logger/core';
4
4
  export interface BuildOptions {
5
5
  mode?: RuntimeMode;
@@ -7,4 +7,4 @@ export interface BuildOptions {
7
7
  telemetry: AstroTelemetry;
8
8
  }
9
9
  /** `astro build` */
10
- export default function build(config: AstroConfig, options: BuildOptions): Promise<void>;
10
+ export default function build(settings: AstroSettings, options: BuildOptions): Promise<void>;
@@ -16,21 +16,21 @@ import { createRouteManifest } from "../routing/index.js";
16
16
  import { collectPagesData } from "./page-data.js";
17
17
  import { staticBuild } from "./static-build.js";
18
18
  import { getTimeStat } from "./util.js";
19
- async function build(config, options) {
19
+ async function build(settings, options) {
20
20
  applyPolyfill();
21
- const builder = new AstroBuilder(config, options);
21
+ const builder = new AstroBuilder(settings, options);
22
22
  await builder.run();
23
23
  }
24
24
  class AstroBuilder {
25
- constructor(config, options) {
25
+ constructor(settings, options) {
26
26
  this.mode = "production";
27
27
  if (options.mode) {
28
28
  this.mode = options.mode;
29
29
  }
30
- this.config = config;
30
+ this.settings = settings;
31
31
  this.logging = options.logging;
32
32
  this.routeCache = new RouteCache(this.logging);
33
- this.origin = config.site ? new URL(config.site).origin : `http://localhost:${config.server.port}`;
33
+ this.origin = settings.config.site ? new URL(settings.config.site).origin : `http://localhost:${settings.config.server.port}`;
34
34
  this.manifest = { routes: [] };
35
35
  this.timer = {};
36
36
  }
@@ -38,8 +38,12 @@ class AstroBuilder {
38
38
  debug("build", "Initial setup...");
39
39
  const { logging } = this;
40
40
  this.timer.init = performance.now();
41
- this.config = await runHookConfigSetup({ config: this.config, command: "build", logging });
42
- this.manifest = createRouteManifest({ config: this.config }, this.logging);
41
+ this.settings = await runHookConfigSetup({
42
+ settings: this.settings,
43
+ command: "build",
44
+ logging
45
+ });
46
+ this.manifest = createRouteManifest({ settings: this.settings }, this.logging);
43
47
  const viteConfig = await createVite(
44
48
  {
45
49
  mode: this.mode,
@@ -48,26 +52,26 @@ class AstroBuilder {
48
52
  middlewareMode: true
49
53
  }
50
54
  },
51
- { astroConfig: this.config, logging, mode: "build" }
55
+ { settings: this.settings, logging, mode: "build" }
52
56
  );
53
- await runHookConfigDone({ config: this.config, logging });
57
+ await runHookConfigDone({ settings: this.settings, logging });
54
58
  return { viteConfig };
55
59
  }
56
60
  async build({ viteConfig }) {
57
61
  const buildConfig = {
58
- client: new URL("./client/", this.config.outDir),
59
- server: new URL("./server/", this.config.outDir),
62
+ client: new URL("./client/", this.settings.config.outDir),
63
+ server: new URL("./server/", this.settings.config.outDir),
60
64
  serverEntry: "entry.mjs"
61
65
  };
62
- await runHookBuildStart({ config: this.config, buildConfig, logging: this.logging });
63
- info(this.logging, "build", `output target: ${colors.green(this.config.output)}`);
64
- if (this.config._ctx.adapter) {
65
- info(this.logging, "build", `deploy adapter: ${colors.green(this.config._ctx.adapter.name)}`);
66
+ await runHookBuildStart({ config: this.settings.config, buildConfig, logging: this.logging });
67
+ info(this.logging, "build", `output target: ${colors.green(this.settings.config.output)}`);
68
+ if (this.settings.adapter) {
69
+ info(this.logging, "build", `deploy adapter: ${colors.green(this.settings.adapter.name)}`);
66
70
  }
67
71
  info(this.logging, "build", "Collecting build info...");
68
72
  this.timer.loadStart = performance.now();
69
73
  const { assets, allPages } = await collectPagesData({
70
- astroConfig: this.config,
74
+ settings: this.settings,
71
75
  logging: this.logging,
72
76
  manifest: this.manifest
73
77
  });
@@ -81,7 +85,7 @@ class AstroBuilder {
81
85
  );
82
86
  await staticBuild({
83
87
  allPages,
84
- astroConfig: this.config,
88
+ settings: this.settings,
85
89
  logging: this.logging,
86
90
  manifest: this.manifest,
87
91
  mode: this.mode,
@@ -102,7 +106,7 @@ class AstroBuilder {
102
106
  });
103
107
  debug("build", timerMessage("Additional assets copied", this.timer.assetsStart));
104
108
  await runHookBuildDone({
105
- config: this.config,
109
+ config: this.settings.config,
106
110
  buildConfig,
107
111
  pages: pageNames,
108
112
  routes: Object.values(allPages).map((pd) => pd.route),
@@ -113,7 +117,7 @@ class AstroBuilder {
113
117
  logging: this.logging,
114
118
  timeStart: this.timer.init,
115
119
  pageCount: pageNames.length,
116
- buildMode: this.config.output
120
+ buildMode: this.settings.config.output
117
121
  });
118
122
  }
119
123
  }
@@ -1,8 +1,8 @@
1
- import type { AstroConfig, ManifestData } from '../../@types/astro';
1
+ import type { AstroSettings, ManifestData } from '../../@types/astro';
2
2
  import type { LogOptions } from '../logger/core';
3
3
  import type { AllPagesData } from './types';
4
4
  export interface CollectPagesDataOptions {
5
- astroConfig: AstroConfig;
5
+ settings: AstroSettings;
6
6
  logging: LogOptions;
7
7
  manifest: ManifestData;
8
8
  }
@@ -2,7 +2,7 @@ import { info } from "../logger/core.js";
2
2
  import * as colors from "kleur/colors";
3
3
  import { debug } from "../logger/core.js";
4
4
  async function collectPagesData(opts) {
5
- const { astroConfig, manifest } = opts;
5
+ const { settings, manifest } = opts;
6
6
  const assets = {};
7
7
  const allPages = {};
8
8
  const builtPaths = /* @__PURE__ */ new Set();
@@ -31,7 +31,7 @@ async function collectPagesData(opts) {
31
31
  hoistedScript: void 0
32
32
  };
33
33
  clearInterval(routeCollectionLogTimeout);
34
- if (astroConfig.output === "static") {
34
+ if (settings.config.output === "static") {
35
35
  const html = `${route.pathname}`.replace(/\/?$/, "/index.html");
36
36
  debug(
37
37
  "build",
@@ -20,8 +20,8 @@ import { vitePluginInternals } from "./vite-plugin-internals.js";
20
20
  import { vitePluginPages } from "./vite-plugin-pages.js";
21
21
  import { injectManifest, vitePluginSSR } from "./vite-plugin-ssr.js";
22
22
  async function staticBuild(opts) {
23
- const { allPages, astroConfig } = opts;
24
- if (isModeServerWithNoAdapter(opts.astroConfig)) {
23
+ const { allPages, settings } = opts;
24
+ if (isModeServerWithNoAdapter(opts.settings)) {
25
25
  throw new Error(`Cannot use \`output: 'server'\` without an adapter.
26
26
  Install and configure the appropriate server adapter for your final deployment.
27
27
  Learn more: https://docs.astro.build/en/guides/server-side-rendering/
@@ -40,31 +40,31 @@ Learn more: https://docs.astro.build/en/guides/server-side-rendering/
40
40
  const timer = {};
41
41
  timer.buildStart = performance.now();
42
42
  for (const [component, pageData] of Object.entries(allPages)) {
43
- const astroModuleURL = new URL("./" + component, astroConfig.root);
43
+ const astroModuleURL = new URL("./" + component, settings.config.root);
44
44
  const astroModuleId = prependForwardSlash(component);
45
45
  trackPageData(internals, component, pageData, astroModuleId, astroModuleURL);
46
46
  pageInput.add(astroModuleId);
47
47
  facadeIdToPageDataMap.set(fileURLToPath(astroModuleURL), pageData);
48
48
  }
49
- emptyDir(astroConfig.outDir, new Set(".git"));
49
+ emptyDir(settings.config.outDir, new Set(".git"));
50
50
  timer.ssr = performance.now();
51
- info(opts.logging, "build", `Building ${astroConfig.output} entrypoints...`);
51
+ info(opts.logging, "build", `Building ${settings.config.output} entrypoints...`);
52
52
  await ssrBuild(opts, internals, pageInput);
53
53
  info(opts.logging, "build", dim(`Completed in ${getTimeStat(timer.ssr, performance.now())}.`));
54
- const rendererClientEntrypoints = opts.astroConfig._ctx.renderers.map((r) => r.clientEntrypoint).filter((a) => typeof a === "string");
54
+ const rendererClientEntrypoints = settings.renderers.map((r) => r.clientEntrypoint).filter((a) => typeof a === "string");
55
55
  const clientInput = /* @__PURE__ */ new Set([
56
56
  ...internals.discoveredHydratedComponents,
57
57
  ...internals.discoveredClientOnlyComponents,
58
58
  ...rendererClientEntrypoints,
59
59
  ...internals.discoveredScripts
60
60
  ]);
61
- if (astroConfig._ctx.scripts.some((script) => script.stage === "page")) {
61
+ if (settings.scripts.some((script) => script.stage === "page")) {
62
62
  clientInput.add(PAGE_SCRIPT_ID);
63
63
  }
64
64
  timer.clientBuild = performance.now();
65
65
  await clientBuild(opts, internals, clientInput);
66
66
  timer.generate = performance.now();
67
- if (astroConfig.output === "static") {
67
+ if (settings.config.output === "static") {
68
68
  await generatePages(opts, internals);
69
69
  await cleanSsrOutput(opts);
70
70
  } else {
@@ -77,9 +77,9 @@ ${bgMagenta(black(" finalizing server assets "))}
77
77
  }
78
78
  async function ssrBuild(opts, internals, input) {
79
79
  var _a, _b, _c;
80
- const { astroConfig, viteConfig } = opts;
81
- const ssr = astroConfig.output === "server";
82
- const out = ssr ? opts.buildConfig.server : getOutDirWithinCwd(astroConfig.outDir);
80
+ const { settings, viteConfig } = opts;
81
+ const ssr = settings.config.output === "server";
82
+ const out = ssr ? opts.buildConfig.server : getOutDirWithinCwd(settings.config.outDir);
83
83
  const viteBuildConfig = {
84
84
  ...viteConfig,
85
85
  logLevel: opts.viteConfig.logLevel ?? "error",
@@ -112,19 +112,18 @@ async function ssrBuild(opts, internals, input) {
112
112
  rollupPluginAstroBuildCSS({
113
113
  buildOptions: opts,
114
114
  internals,
115
- target: "server",
116
- astroConfig
115
+ target: "server"
117
116
  }),
118
117
  ...viteConfig.plugins || [],
119
- opts.astroConfig.output === "server" && vitePluginSSR(internals, opts.astroConfig._ctx.adapter),
118
+ settings.config.output === "server" && vitePluginSSR(internals, settings.adapter),
120
119
  vitePluginAnalyzer(internals)
121
120
  ],
122
121
  publicDir: ssr ? false : viteConfig.publicDir,
123
122
  envPrefix: "PUBLIC_",
124
- base: astroConfig.base
123
+ base: settings.config.base
125
124
  };
126
125
  await runHookBuildSetup({
127
- config: astroConfig,
126
+ config: settings.config,
128
127
  pages: internals.pagesByComponent,
129
128
  vite: viteBuildConfig,
130
129
  target: "server",
@@ -134,13 +133,13 @@ async function ssrBuild(opts, internals, input) {
134
133
  }
135
134
  async function clientBuild(opts, internals, input) {
136
135
  var _a, _b, _c;
137
- const { astroConfig, viteConfig } = opts;
136
+ const { settings, viteConfig } = opts;
138
137
  const timer = performance.now();
139
- const ssr = astroConfig.output === "server";
140
- const out = ssr ? opts.buildConfig.client : astroConfig.outDir;
138
+ const ssr = settings.config.output === "server";
139
+ const out = ssr ? opts.buildConfig.client : settings.config.outDir;
141
140
  if (!input.size) {
142
141
  if (ssr) {
143
- await copyFiles(astroConfig.publicDir, out);
142
+ await copyFiles(settings.config.publicDir, out);
144
143
  }
145
144
  return null;
146
145
  }
@@ -171,20 +170,19 @@ ${bgGreen(black(" building client "))}`);
171
170
  },
172
171
  plugins: [
173
172
  vitePluginInternals(input, internals),
174
- vitePluginHoistedScripts(astroConfig, internals),
173
+ vitePluginHoistedScripts(settings, internals),
175
174
  rollupPluginAstroBuildCSS({
176
175
  buildOptions: opts,
177
176
  internals,
178
- target: "client",
179
- astroConfig
177
+ target: "client"
180
178
  }),
181
179
  ...viteConfig.plugins || []
182
180
  ],
183
181
  envPrefix: "PUBLIC_",
184
- base: astroConfig.base
182
+ base: settings.config.base
185
183
  };
186
184
  await runHookBuildSetup({
187
- config: astroConfig,
185
+ config: settings.config,
188
186
  pages: internals.pagesByComponent,
189
187
  vite: viteBuildConfig,
190
188
  target: "client",
@@ -196,8 +194,8 @@ ${bgGreen(black(" building client "))}`);
196
194
  return buildResult;
197
195
  }
198
196
  async function cleanSsrOutput(opts) {
199
- const out = getOutDirWithinCwd(opts.astroConfig.outDir);
200
- if (out.toString() !== opts.astroConfig.outDir.toString()) {
197
+ const out = getOutDirWithinCwd(opts.settings.config.outDir);
198
+ if (out.toString() !== opts.settings.config.outDir.toString()) {
201
199
  await fs.promises.rm(out, { recursive: true });
202
200
  return;
203
201
  }
@@ -226,7 +224,7 @@ async function copyFiles(fromFolder, toFolder) {
226
224
  }
227
225
  async function ssrMoveAssets(opts) {
228
226
  info(opts.logging, "build", "Rearranging server assets...");
229
- const serverRoot = opts.astroConfig.output === "static" ? opts.buildConfig.client : opts.buildConfig.server;
227
+ const serverRoot = opts.settings.config.output === "static" ? opts.buildConfig.client : opts.buildConfig.server;
230
228
  const clientRoot = opts.buildConfig.client;
231
229
  const serverAssets = new URL("./assets/", serverRoot);
232
230
  const clientAssets = new URL("./assets/", clientRoot);
@@ -1,4 +1,4 @@
1
- import type { AstroConfig, BuildConfig, ComponentInstance, ManifestData, RouteData, RuntimeMode, SSRLoadedRenderer } from '../../@types/astro';
1
+ import type { AstroSettings, BuildConfig, ComponentInstance, ManifestData, RouteData, RuntimeMode, SSRLoadedRenderer } from '../../@types/astro';
2
2
  import type { ViteConfigWithSSR } from '../create-vite';
3
3
  import type { LogOptions } from '../logger/core';
4
4
  import type { RouteCache } from '../render/route-cache';
@@ -21,7 +21,7 @@ export declare type AllPagesData = Record<ComponentPath, PageBuildData>;
21
21
  /** Options for the static build */
22
22
  export interface StaticBuildOptions {
23
23
  allPages: AllPagesData;
24
- astroConfig: AstroConfig;
24
+ settings: AstroSettings;
25
25
  buildConfig: BuildConfig;
26
26
  logging: LogOptions;
27
27
  manifest: ManifestData;
@@ -1,4 +1,3 @@
1
- import type { AstroConfig } from '../../@types/astro';
2
1
  import type { BuildInternals } from './internal';
3
2
  import type { StaticBuildOptions } from './types';
4
3
  import { Plugin as VitePlugin } from 'vite';
@@ -6,7 +5,6 @@ interface PluginOptions {
6
5
  internals: BuildInternals;
7
6
  buildOptions: StaticBuildOptions;
8
7
  target: 'client' | 'server';
9
- astroConfig: AstroConfig;
10
8
  }
11
9
  export declare function rollupPluginAstroBuildCSS(options: PluginOptions): VitePlugin[];
12
10
  export {};