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.
- package/dist/@types/astro.js +0 -0
- package/dist/@types/serialize-javascript.d.js +0 -0
- package/dist/@types/shorthash.d.js +0 -0
- package/dist/adapter-ssg/index.js +0 -0
- package/dist/cli/check.js +4 -4
- package/dist/cli/index.js +21 -32
- package/dist/core/add/babel.js +0 -0
- package/dist/core/add/consts.js +0 -0
- package/dist/core/add/imports.js +0 -0
- package/dist/core/add/index.js +7 -14
- package/dist/core/add/wrapper.js +0 -0
- package/dist/core/app/common.js +0 -0
- package/dist/core/app/index.js +13 -10
- package/dist/core/app/node.js +0 -0
- package/dist/core/app/types.js +0 -0
- package/dist/core/build/add-rollup-input.js +0 -0
- package/dist/core/build/common.js +4 -5
- package/dist/core/build/generate.js +65 -72
- package/dist/core/build/index.js +59 -74
- package/dist/core/build/internal.js +0 -0
- package/dist/core/build/page-data.js +10 -9
- package/dist/core/build/static-build.js +41 -24
- package/dist/core/build/types.d.js +0 -0
- package/dist/core/build/util.js +0 -0
- package/dist/core/build/vite-plugin-hoisted-scripts.js +1 -1
- package/dist/core/build/vite-plugin-internals.js +0 -0
- package/dist/core/build/vite-plugin-pages.js +0 -0
- package/dist/core/build/vite-plugin-ssr.js +4 -2
- package/dist/core/config.js +86 -78
- package/dist/core/create-vite.js +12 -7
- package/dist/core/dev/index.js +8 -7
- package/dist/core/endpoint/dev/index.js +5 -10
- package/dist/core/endpoint/index.js +1 -3
- package/dist/core/errors.js +45 -0
- package/dist/core/logger/console.js +43 -0
- package/dist/core/logger/core.js +103 -0
- package/dist/core/logger/node.js +94 -0
- package/dist/core/messages.js +50 -24
- package/dist/core/path.js +0 -0
- package/dist/core/polyfill.js +0 -0
- package/dist/core/preview/index.js +8 -8
- package/dist/core/preview/util.js +3 -6
- package/dist/core/render/core.js +5 -6
- package/dist/core/render/dev/css.js +5 -6
- package/dist/core/render/dev/hmr.js +0 -0
- package/dist/core/render/dev/html.js +0 -0
- package/dist/core/render/dev/index.js +23 -36
- package/dist/core/render/paginate.js +0 -0
- package/dist/core/render/pretty-feed.js +103 -0
- package/dist/core/render/result.js +33 -15
- package/dist/core/render/route-cache.js +2 -2
- package/dist/core/render/rss.js +5 -4
- package/dist/core/render/script.js +0 -0
- package/dist/core/render/ssr-element.js +1 -1
- package/dist/core/render/util.js +26 -0
- package/dist/core/request.js +27 -0
- package/dist/core/routing/index.js +0 -0
- package/dist/core/routing/manifest/create.js +8 -6
- package/dist/core/routing/manifest/serialization.js +0 -0
- package/dist/core/routing/match.js +0 -0
- package/dist/core/routing/params.js +0 -0
- package/dist/core/routing/validation.js +1 -1
- package/dist/core/util.js +57 -125
- package/dist/integrations/index.js +9 -1
- package/dist/runtime/client/hmr.js +0 -0
- package/dist/runtime/client/idle.js +0 -0
- package/dist/runtime/client/load.js +0 -0
- package/dist/runtime/client/media.js +0 -0
- package/dist/runtime/client/only.js +0 -0
- package/dist/runtime/client/visible.js +0 -0
- package/dist/runtime/server/escape.js +0 -0
- package/dist/runtime/server/hydration.js +0 -0
- package/dist/runtime/server/index.js +42 -36
- package/dist/runtime/server/metadata.js +0 -0
- package/dist/runtime/server/util.js +0 -0
- package/dist/template/4xx.js +1 -1
- package/dist/template/5xx.js +0 -0
- package/dist/template/css.js +0 -0
- package/dist/types/@types/astro.d.ts +291 -233
- package/dist/types/cli/index.d.ts +1 -1
- package/dist/types/core/add/index.d.ts +1 -1
- package/dist/types/core/build/common.d.ts +0 -1
- package/dist/types/core/build/generate.d.ts +1 -1
- package/dist/types/core/build/index.d.ts +1 -1
- package/dist/types/core/build/page-data.d.ts +1 -1
- package/dist/types/core/config.d.ts +125 -116
- package/dist/types/core/create-vite.d.ts +1 -1
- package/dist/types/core/dev/index.d.ts +1 -1
- package/dist/types/core/endpoint/index.d.ts +1 -1
- package/dist/types/core/errors.d.ts +23 -0
- package/dist/types/core/logger/console.d.ts +4 -0
- package/dist/types/core/{logger.d.ts → logger/core.d.ts} +7 -22
- package/dist/types/core/logger/node.d.ts +34 -0
- package/dist/types/core/messages.d.ts +4 -2
- package/dist/types/core/preview/index.d.ts +1 -1
- package/dist/types/core/preview/util.d.ts +1 -2
- package/dist/types/core/render/core.d.ts +2 -3
- package/dist/types/core/render/dev/css.d.ts +0 -2
- package/dist/types/core/render/dev/index.d.ts +4 -6
- package/dist/types/core/render/pretty-feed.d.ts +2 -0
- package/dist/types/core/render/result.d.ts +2 -3
- package/dist/types/core/render/route-cache.d.ts +1 -1
- package/dist/types/core/render/util.d.ts +6 -0
- package/dist/types/core/request.d.ts +14 -0
- package/dist/types/core/routing/manifest/create.d.ts +1 -1
- package/dist/types/core/routing/validation.d.ts +1 -1
- package/dist/types/core/util.d.ts +11 -7
- package/dist/types/integrations/index.d.ts +6 -0
- package/dist/types/runtime/server/index.d.ts +1 -2
- package/dist/types/vite-plugin-astro/hmr.d.ts +1 -1
- package/dist/types/vite-plugin-astro/index.d.ts +1 -1
- package/dist/types/vite-plugin-astro-server/index.d.ts +1 -1
- package/dist/types/vite-plugin-build-html/extract-assets.d.ts +1 -1
- package/dist/types/vite-plugin-build-html/index.d.ts +3 -3
- package/dist/types/vite-plugin-config-alias/index.d.ts +1 -1
- package/dist/types/vite-plugin-jsx/index.d.ts +1 -1
- package/dist/vite-plugin-astro/compile.js +12 -14
- package/dist/vite-plugin-astro/hmr.js +2 -2
- package/dist/vite-plugin-astro/index.js +21 -8
- package/dist/vite-plugin-astro/query.js +0 -0
- package/dist/vite-plugin-astro/styles.js +1 -1
- package/dist/vite-plugin-astro-postprocess/index.js +31 -34
- package/dist/vite-plugin-astro-server/index.js +50 -22
- package/dist/vite-plugin-build-css/index.js +1 -1
- package/dist/vite-plugin-build-css/resolve.js +0 -0
- package/dist/vite-plugin-build-html/add-rollup-input.js +0 -0
- package/dist/vite-plugin-build-html/extract-assets.js +0 -0
- package/dist/vite-plugin-build-html/index.js +22 -23
- package/dist/vite-plugin-build-html/util.js +0 -0
- package/dist/vite-plugin-config-alias/index.js +1 -1
- package/dist/vite-plugin-env/index.js +1 -1
- package/dist/vite-plugin-integrations-container/index.js +0 -0
- package/dist/vite-plugin-jsx/index.js +1 -1
- package/dist/vite-plugin-markdown/index.js +89 -18
- package/dist/vite-plugin-scripts/index.js +0 -0
- package/env.d.ts +1 -1
- package/package.json +11 -7
- package/dist/core/build/scan-based-build.js +0 -62
- package/dist/core/dev/util.js +0 -44
- package/dist/core/logger.js +0 -174
- package/dist/core/render/dev/error.js +0 -34
- package/dist/core/render/request.js +0 -23
- package/dist/core/render/sitemap.js +0 -18
- package/dist/types/core/build/scan-based-build.d.ts +0 -18
- package/dist/types/core/dev/util.d.ts +0 -9
- package/dist/types/core/render/dev/error.d.ts +0 -7
- package/dist/types/core/render/request.d.ts +0 -15
- package/dist/types/core/render/sitemap.d.ts +0 -2
package/dist/@types/astro.js
CHANGED
|
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
|
|
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.
|
|
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 =
|
|
71
|
-
let spaces =
|
|
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 {
|
|
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 {
|
|
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
|
-
["--
|
|
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.
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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(
|
|
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(
|
|
130
|
+
console.error(formatErrorMessage(createSafeError(err)));
|
|
142
131
|
}
|
|
143
132
|
process.exit(1);
|
|
144
133
|
}
|
package/dist/core/add/babel.js
CHANGED
|
File without changes
|
package/dist/core/add/consts.js
CHANGED
|
File without changes
|
package/dist/core/add/imports.js
CHANGED
|
File without changes
|
package/dist/core/add/index.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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) {
|
package/dist/core/add/wrapper.js
CHANGED
|
File without changes
|
package/dist/core/app/common.js
CHANGED
|
File without changes
|
package/dist/core/app/index.js
CHANGED
|
@@ -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 {
|
|
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(
|
|
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:
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
});
|
package/dist/core/app/node.js
CHANGED
|
File without changes
|
package/dist/core/app/types.js
CHANGED
|
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.
|
|
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.
|
|
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.
|
|
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,
|
|
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 {
|
|
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.
|
|
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
|
-
|
|
50
|
+
const timer = performance.now();
|
|
48
51
|
info(opts.logging, null, `
|
|
49
|
-
${
|
|
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.
|
|
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" ?
|
|
82
|
+
const icon = pageData.route.type === "page" ? green("\u25B6") : magenta("\u03BB");
|
|
79
83
|
info(opts.logging, null, `${icon} ${pageData.route.component}`);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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.
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|