astro 2.7.2 → 2.7.3
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.d.ts +2 -3
- package/dist/cli/index.js +3 -5
- package/dist/cli/telemetry.d.ts +1 -3
- package/dist/cli/telemetry.js +2 -1
- package/dist/core/add/index.d.ts +1 -3
- package/dist/core/add/index.js +8 -4
- package/dist/core/build/index.d.ts +0 -2
- package/dist/core/config/settings.js +0 -1
- package/dist/core/constants.js +1 -1
- package/dist/core/dev/container.d.ts +0 -1
- package/dist/core/dev/container.js +2 -6
- package/dist/core/dev/dev.d.ts +0 -2
- package/dist/core/dev/dev.js +3 -2
- package/dist/core/endpoint/dev/index.js +3 -7
- package/dist/core/messages.js +2 -2
- package/dist/core/preview/index.d.ts +0 -2
- package/dist/core/render/dev/environment.js +1 -2
- package/dist/core/render/dev/index.d.ts +7 -7
- package/dist/core/render/dev/index.js +6 -13
- package/dist/core/render/environment.d.ts +0 -1
- package/dist/core/render/environment.js +1 -2
- package/dist/core/render/index.d.ts +1 -1
- package/dist/core/render/index.js +2 -1
- package/dist/core/render/renderer.d.ts +4 -9
- package/dist/core/render/renderer.js +12 -17
- package/dist/prerender/routing.d.ts +3 -3
- package/dist/prerender/routing.js +2 -5
- package/dist/runtime/server/render/util.js +9 -2
- package/dist/runtime/server/serialize.js +2 -0
- package/dist/vite-plugin-astro-server/request.js +1 -3
- package/dist/vite-plugin-astro-server/route.d.ts +2 -2
- package/dist/vite-plugin-astro-server/route.js +3 -13
- package/package.json +2 -2
package/dist/@types/astro.d.ts
CHANGED
|
@@ -1269,7 +1269,6 @@ export interface AstroSettings {
|
|
|
1269
1269
|
tsConfig: TsConfigJson | undefined;
|
|
1270
1270
|
tsConfigPath: string | undefined;
|
|
1271
1271
|
watchFiles: string[];
|
|
1272
|
-
forceDisableTelemetry: boolean;
|
|
1273
1272
|
timer: AstroTimer;
|
|
1274
1273
|
}
|
|
1275
1274
|
export type AsyncRendererComponentFn<U> = (Component: any, props: any, slots: Record<string, string>, metadata?: AstroComponentMetadata) => Promise<U>;
|
|
@@ -1600,15 +1599,15 @@ export interface APIContext<Props extends Record<string, any> = Record<string, a
|
|
|
1600
1599
|
*/
|
|
1601
1600
|
locals: App.Locals;
|
|
1602
1601
|
}
|
|
1603
|
-
export type Props = Record<string, unknown>;
|
|
1604
1602
|
export interface EndpointOutput {
|
|
1605
1603
|
body: Body;
|
|
1606
1604
|
encoding?: BufferEncoding;
|
|
1607
1605
|
}
|
|
1608
|
-
export type APIRoute = (context: APIContext) => EndpointOutput | Response | Promise<EndpointOutput | Response>;
|
|
1606
|
+
export type APIRoute<Props extends Record<string, any> = Record<string, any>> = (context: APIContext<Props>) => EndpointOutput | Response | Promise<EndpointOutput | Response>;
|
|
1609
1607
|
export interface EndpointHandler {
|
|
1610
1608
|
[method: string]: APIRoute | ((params: Params, request: Request) => EndpointOutput | Response);
|
|
1611
1609
|
}
|
|
1610
|
+
export type Props = Record<string, unknown>;
|
|
1612
1611
|
export interface AstroRenderer {
|
|
1613
1612
|
/** Name of the renderer. */
|
|
1614
1613
|
name: string;
|
package/dist/cli/index.js
CHANGED
|
@@ -109,7 +109,7 @@ async function runCommand(cmd, flags) {
|
|
|
109
109
|
const { default: add } = await import("../core/add/index.js");
|
|
110
110
|
telemetry.record(event.eventCliSession(cmd));
|
|
111
111
|
const packages = flags._.slice(3);
|
|
112
|
-
return await add(packages, { cwd: root, flags, logging
|
|
112
|
+
return await add(packages, { cwd: root, flags, logging });
|
|
113
113
|
}
|
|
114
114
|
case "docs": {
|
|
115
115
|
telemetry.record(event.eventCliSession(cmd));
|
|
@@ -128,7 +128,7 @@ async function runCommand(cmd, flags) {
|
|
|
128
128
|
case "telemetry": {
|
|
129
129
|
const telemetryHandler = await import("./telemetry.js");
|
|
130
130
|
const subcommand = (_a = flags._[3]) == null ? void 0 : _a.toString();
|
|
131
|
-
return await telemetryHandler.update(subcommand, { flags
|
|
131
|
+
return await telemetryHandler.update(subcommand, { flags });
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
if (!process.env.NODE_ENV) {
|
|
@@ -157,7 +157,6 @@ async function runCommand(cmd, flags) {
|
|
|
157
157
|
configFlagPath,
|
|
158
158
|
flags,
|
|
159
159
|
logging,
|
|
160
|
-
telemetry,
|
|
161
160
|
handleConfigError(e) {
|
|
162
161
|
handleConfigError(e, { cmd, cwd: root, flags, logging });
|
|
163
162
|
info(logging, "astro", "Continuing with previous valid configuration\n");
|
|
@@ -171,7 +170,6 @@ async function runCommand(cmd, flags) {
|
|
|
171
170
|
return await build(settings, {
|
|
172
171
|
flags,
|
|
173
172
|
logging,
|
|
174
|
-
telemetry,
|
|
175
173
|
teardownCompiler: true,
|
|
176
174
|
mode: flags.mode
|
|
177
175
|
});
|
|
@@ -197,7 +195,7 @@ async function runCommand(cmd, flags) {
|
|
|
197
195
|
}
|
|
198
196
|
case "preview": {
|
|
199
197
|
const { default: preview } = await import("../core/preview/index.js");
|
|
200
|
-
const server = await preview(settings, { logging,
|
|
198
|
+
const server = await preview(settings, { logging, flags });
|
|
201
199
|
if (server) {
|
|
202
200
|
return await server.closed();
|
|
203
201
|
}
|
package/dist/cli/telemetry.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import type { AstroTelemetry } from '@astrojs/telemetry';
|
|
2
1
|
import type yargs from 'yargs-parser';
|
|
3
2
|
export interface TelemetryOptions {
|
|
4
3
|
flags: yargs.Arguments;
|
|
5
|
-
telemetry: AstroTelemetry;
|
|
6
4
|
}
|
|
7
|
-
export declare function update(subcommand: string, { flags
|
|
5
|
+
export declare function update(subcommand: string, { flags }: TelemetryOptions): Promise<void>;
|
package/dist/cli/telemetry.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as msg from "../core/messages.js";
|
|
2
|
-
|
|
2
|
+
import { telemetry } from "../events/index.js";
|
|
3
|
+
async function update(subcommand, { flags }) {
|
|
3
4
|
const isValid = ["enable", "disable", "reset"].includes(subcommand);
|
|
4
5
|
if (flags.help || flags.h || !isValid) {
|
|
5
6
|
msg.printHelp({
|
package/dist/core/add/index.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import type { AstroTelemetry } from '@astrojs/telemetry';
|
|
2
1
|
import type yargs from 'yargs-parser';
|
|
3
2
|
import { type LogOptions } from '../logger/core.js';
|
|
4
3
|
export interface AddOptions {
|
|
5
4
|
logging: LogOptions;
|
|
6
5
|
flags: yargs.Arguments;
|
|
7
|
-
telemetry: AstroTelemetry;
|
|
8
6
|
cwd?: string;
|
|
9
7
|
}
|
|
10
8
|
export interface IntegrationInfo {
|
|
@@ -13,5 +11,5 @@ export interface IntegrationInfo {
|
|
|
13
11
|
dependencies: [name: string, version: string][];
|
|
14
12
|
type: 'integration' | 'adapter';
|
|
15
13
|
}
|
|
16
|
-
export default function add(names: string[], { cwd, flags, logging
|
|
14
|
+
export default function add(names: string[], { cwd, flags, logging }: AddOptions): Promise<void>;
|
|
17
15
|
export declare function validateIntegrations(integrations: string[]): Promise<IntegrationInfo[]>;
|
package/dist/core/add/index.js
CHANGED
|
@@ -56,12 +56,16 @@ const OFFICIAL_ADAPTER_TO_IMPORT_MAP = {
|
|
|
56
56
|
deno: "@astrojs/deno"
|
|
57
57
|
};
|
|
58
58
|
async function getRegistry() {
|
|
59
|
-
var _a;
|
|
59
|
+
var _a, _b;
|
|
60
60
|
const packageManager = ((_a = await preferredPM(process.cwd())) == null ? void 0 : _a.name) || "npm";
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
try {
|
|
62
|
+
const { stdout } = await execa(packageManager, ["config", "get", "registry"]);
|
|
63
|
+
return ((_b = stdout == null ? void 0 : stdout.trim()) == null ? void 0 : _b.replace(/\/$/, "")) || "https://registry.npmjs.org";
|
|
64
|
+
} catch (e) {
|
|
65
|
+
return "https://registry.npmjs.org";
|
|
66
|
+
}
|
|
63
67
|
}
|
|
64
|
-
async function add(names, { cwd, flags, logging
|
|
68
|
+
async function add(names, { cwd, flags, logging }) {
|
|
65
69
|
var _a;
|
|
66
70
|
applyPolyfill();
|
|
67
71
|
if (flags.help || names.length === 0) {
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type { AstroTelemetry } from '@astrojs/telemetry';
|
|
2
1
|
import type { AstroSettings, RuntimeMode } from '../../@types/astro';
|
|
3
2
|
import type yargs from 'yargs-parser';
|
|
4
3
|
import { type LogOptions } from '../logger/core.js';
|
|
5
4
|
export interface BuildOptions {
|
|
6
5
|
mode?: RuntimeMode;
|
|
7
6
|
logging: LogOptions;
|
|
8
|
-
telemetry: AstroTelemetry;
|
|
9
7
|
/**
|
|
10
8
|
* Teardown the compiler WASM instance after build. This can improve performance when
|
|
11
9
|
* building once, but may cause a performance hit if building multiple times in a row.
|
package/dist/core/constants.js
CHANGED
|
@@ -29,7 +29,6 @@ export interface CreateContainerParams {
|
|
|
29
29
|
root?: string | URL;
|
|
30
30
|
configFlag?: string;
|
|
31
31
|
configFlagPath?: string;
|
|
32
|
-
disableTelemetry?: boolean;
|
|
33
32
|
}
|
|
34
33
|
export declare function createContainer(params?: CreateContainerParams): Promise<Container>;
|
|
35
34
|
export declare function startContainer({ settings, viteServer, logging, }: Container): Promise<AddressInfo>;
|
|
@@ -20,12 +20,8 @@ async function createContainer(params = {}) {
|
|
|
20
20
|
isRestart = false,
|
|
21
21
|
logging = defaultLogging,
|
|
22
22
|
settings = await createDefaultDevSettings(params.userConfig, params.root),
|
|
23
|
-
fs = nodeFs
|
|
24
|
-
disableTelemetry
|
|
23
|
+
fs = nodeFs
|
|
25
24
|
} = params;
|
|
26
|
-
if (disableTelemetry) {
|
|
27
|
-
settings.forceDisableTelemetry = true;
|
|
28
|
-
}
|
|
29
25
|
applyPolyfill();
|
|
30
26
|
settings = await runHookConfigSetup({
|
|
31
27
|
settings,
|
|
@@ -94,7 +90,7 @@ function isStarted(container) {
|
|
|
94
90
|
return !!((_a = container.viteServer.httpServer) == null ? void 0 : _a.listening);
|
|
95
91
|
}
|
|
96
92
|
async function runInContainer(params, callback) {
|
|
97
|
-
const container = await createContainer(
|
|
93
|
+
const container = await createContainer(params);
|
|
98
94
|
try {
|
|
99
95
|
await callback(container);
|
|
100
96
|
} finally {
|
package/dist/core/dev/dev.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
-
import type { AstroTelemetry } from '@astrojs/telemetry';
|
|
4
3
|
import type http from 'http';
|
|
5
4
|
import type { AddressInfo } from 'net';
|
|
6
5
|
import type * as vite from 'vite';
|
|
@@ -12,7 +11,6 @@ export interface DevOptions {
|
|
|
12
11
|
configFlagPath: string | undefined;
|
|
13
12
|
flags?: yargs.Arguments;
|
|
14
13
|
logging: LogOptions;
|
|
15
|
-
telemetry: AstroTelemetry;
|
|
16
14
|
handleConfigError: (error: Error) => void;
|
|
17
15
|
isRestart?: boolean;
|
|
18
16
|
}
|
package/dist/core/dev/dev.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cyan } from "kleur/colors";
|
|
2
2
|
import { performance } from "perf_hooks";
|
|
3
3
|
import { attachContentServerListeners } from "../../content/index.js";
|
|
4
|
+
import { telemetry } from "../../events/index.js";
|
|
4
5
|
import { info, warn } from "../logger/core.js";
|
|
5
6
|
import * as msg from "../messages.js";
|
|
6
7
|
import { printHelp } from "../messages.js";
|
|
@@ -28,7 +29,7 @@ async function dev(settings, options) {
|
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
31
|
const devStart = performance.now();
|
|
31
|
-
await
|
|
32
|
+
await telemetry.record([]);
|
|
32
33
|
const restart = await createContainerWithAutomaticRestart({
|
|
33
34
|
flags: options.flags ?? {},
|
|
34
35
|
handleConfigError: options.handleConfigError,
|
|
@@ -53,7 +54,7 @@ async function dev(settings, options) {
|
|
|
53
54
|
isRestart: options.isRestart
|
|
54
55
|
})
|
|
55
56
|
);
|
|
56
|
-
const currentVersion = "2.7.
|
|
57
|
+
const currentVersion = "2.7.3";
|
|
57
58
|
if (currentVersion.includes("-")) {
|
|
58
59
|
warn(options.logging, null, msg.prerelease({ currentVersion }));
|
|
59
60
|
}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { createRenderContext } from "../../render/index.js";
|
|
2
2
|
import { callEndpoint } from "../index.js";
|
|
3
3
|
async function call(options, logging) {
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
preload: [, mod],
|
|
7
|
-
middleware
|
|
8
|
-
} = options;
|
|
9
|
-
const endpointHandler = mod;
|
|
4
|
+
const { env, preload, middleware } = options;
|
|
5
|
+
const endpointHandler = preload;
|
|
10
6
|
const ctx = await createRenderContext({
|
|
11
7
|
request: options.request,
|
|
12
8
|
origin: options.origin,
|
|
13
9
|
pathname: options.pathname,
|
|
14
10
|
route: options.route,
|
|
15
11
|
env,
|
|
16
|
-
mod:
|
|
12
|
+
mod: preload
|
|
17
13
|
});
|
|
18
14
|
return await callEndpoint(endpointHandler, env, ctx, logging, middleware == null ? void 0 : middleware.onRequest);
|
|
19
15
|
}
|
package/dist/core/messages.js
CHANGED
|
@@ -47,7 +47,7 @@ function serverStart({
|
|
|
47
47
|
base,
|
|
48
48
|
isRestart = false
|
|
49
49
|
}) {
|
|
50
|
-
const version = "2.7.
|
|
50
|
+
const version = "2.7.3";
|
|
51
51
|
const localPrefix = `${dim("\u2503")} Local `;
|
|
52
52
|
const networkPrefix = `${dim("\u2503")} Network `;
|
|
53
53
|
const emptyPrefix = " ".repeat(11);
|
|
@@ -233,7 +233,7 @@ function printHelp({
|
|
|
233
233
|
message.push(
|
|
234
234
|
linebreak(),
|
|
235
235
|
` ${bgGreen(black(` ${commandName} `))} ${green(
|
|
236
|
-
`v${"2.7.
|
|
236
|
+
`v${"2.7.3"}`
|
|
237
237
|
)} ${headline}`
|
|
238
238
|
);
|
|
239
239
|
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import type { AstroTelemetry } from '@astrojs/telemetry';
|
|
2
1
|
import type { Arguments } from 'yargs-parser';
|
|
3
2
|
import type { AstroSettings, PreviewServer } from '../../@types/astro';
|
|
4
3
|
import type { LogOptions } from '../logger/core';
|
|
5
4
|
interface PreviewOptions {
|
|
6
5
|
logging: LogOptions;
|
|
7
|
-
telemetry: AstroTelemetry;
|
|
8
6
|
flags?: Arguments;
|
|
9
7
|
}
|
|
10
8
|
/** The primary dev action */
|
|
@@ -17,8 +17,7 @@ function createDevelopmentEnvironment(settings, logging, loader) {
|
|
|
17
17
|
routeCache: new RouteCache(logging, mode),
|
|
18
18
|
site: settings.config.site,
|
|
19
19
|
ssr: isServerLikeOutput(settings.config),
|
|
20
|
-
streaming: true
|
|
21
|
-
telemetry: Boolean(settings.forceDisableTelemetry)
|
|
20
|
+
streaming: true
|
|
22
21
|
});
|
|
23
22
|
return {
|
|
24
23
|
...env,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { AstroMiddlewareInstance,
|
|
2
|
-
import type { ModuleLoader } from '../../module-loader/index';
|
|
1
|
+
import type { AstroMiddlewareInstance, ComponentInstance, RouteData } from '../../../@types/astro';
|
|
3
2
|
import type { DevelopmentEnvironment } from './environment';
|
|
4
3
|
export { createDevelopmentEnvironment } from './environment.js';
|
|
5
4
|
export type { DevelopmentEnvironment };
|
|
@@ -12,8 +11,8 @@ export interface SSROptions {
|
|
|
12
11
|
origin: string;
|
|
13
12
|
/** the web request (needed for dynamic routes) */
|
|
14
13
|
pathname: string;
|
|
15
|
-
/** The
|
|
16
|
-
preload:
|
|
14
|
+
/** The runtime component instance */
|
|
15
|
+
preload: ComponentInstance;
|
|
17
16
|
/** Request */
|
|
18
17
|
request: Request;
|
|
19
18
|
/** optional, in case we need to render something outside of a dev server */
|
|
@@ -23,7 +22,8 @@ export interface SSROptions {
|
|
|
23
22
|
*/
|
|
24
23
|
middleware?: AstroMiddlewareInstance<unknown>;
|
|
25
24
|
}
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
export declare function preload({ env, filePath, }: {
|
|
26
|
+
env: DevelopmentEnvironment;
|
|
27
|
+
filePath: URL;
|
|
28
|
+
}): Promise<ComponentInstance>;
|
|
29
29
|
export declare function renderPage(options: SSROptions): Promise<Response>;
|
|
@@ -4,30 +4,25 @@ import { enhanceViteSSRError } from "../../errors/dev/index.js";
|
|
|
4
4
|
import { AggregateError, CSSError, MarkdownError } from "../../errors/index.js";
|
|
5
5
|
import { callMiddleware } from "../../middleware/callMiddleware.js";
|
|
6
6
|
import { isPage, resolveIdToUrl, viteID } from "../../util.js";
|
|
7
|
-
import { createRenderContext, renderPage as coreRenderPage } from "../index.js";
|
|
8
|
-
import { filterFoundRenderers, loadRenderer } from "../renderer.js";
|
|
7
|
+
import { createRenderContext, loadRenderers, renderPage as coreRenderPage } from "../index.js";
|
|
9
8
|
import { getStylesForURL } from "./css.js";
|
|
10
9
|
import { getComponentMetadata } from "./metadata.js";
|
|
11
10
|
import { getScriptsForURL } from "./scripts.js";
|
|
12
11
|
import { createDevelopmentEnvironment } from "./environment.js";
|
|
13
|
-
async function loadRenderers(moduleLoader, settings) {
|
|
14
|
-
const loader = (entry) => moduleLoader.import(entry);
|
|
15
|
-
const renderers = await Promise.all(settings.renderers.map((r) => loadRenderer(r, loader)));
|
|
16
|
-
return filterFoundRenderers(renderers);
|
|
17
|
-
}
|
|
18
12
|
async function preload({
|
|
19
13
|
env,
|
|
20
14
|
filePath
|
|
21
15
|
}) {
|
|
22
|
-
const renderers = await loadRenderers(env.
|
|
16
|
+
const renderers = await loadRenderers(env.settings, env.loader);
|
|
17
|
+
env.renderers = renderers;
|
|
23
18
|
try {
|
|
24
19
|
const mod = await env.loader.import(viteID(filePath));
|
|
25
|
-
return
|
|
20
|
+
return mod;
|
|
26
21
|
} catch (error) {
|
|
27
22
|
if (MarkdownError.is(error) || CSSError.is(error) || AggregateError.is(error)) {
|
|
28
23
|
throw error;
|
|
29
24
|
}
|
|
30
|
-
throw enhanceViteSSRError({ error, filePath, loader: env.loader
|
|
25
|
+
throw enhanceViteSSRError({ error, filePath, loader: env.loader });
|
|
31
26
|
}
|
|
32
27
|
}
|
|
33
28
|
async function getScriptsAndStyles({ env, filePath }) {
|
|
@@ -91,8 +86,7 @@ async function getScriptsAndStyles({ env, filePath }) {
|
|
|
91
86
|
return { scripts, styles, links, metadata };
|
|
92
87
|
}
|
|
93
88
|
async function renderPage(options) {
|
|
94
|
-
const
|
|
95
|
-
options.env.renderers = renderers;
|
|
89
|
+
const mod = options.preload;
|
|
96
90
|
const { scripts, links, styles, metadata } = await getScriptsAndStyles({
|
|
97
91
|
env: options.env,
|
|
98
92
|
filePath: options.filePath
|
|
@@ -139,7 +133,6 @@ async function renderPage(options) {
|
|
|
139
133
|
}
|
|
140
134
|
export {
|
|
141
135
|
createDevelopmentEnvironment,
|
|
142
|
-
loadRenderers,
|
|
143
136
|
preload,
|
|
144
137
|
renderPage
|
|
145
138
|
};
|
|
@@ -16,8 +16,7 @@ function createBasicEnvironment(options) {
|
|
|
16
16
|
resolve: options.resolve ?? ((s) => Promise.resolve(s)),
|
|
17
17
|
routeCache: new RouteCache(options.logging, mode),
|
|
18
18
|
ssr: options.ssr ?? true,
|
|
19
|
-
streaming: options.streaming ?? true
|
|
20
|
-
telemetry: false
|
|
19
|
+
streaming: options.streaming ?? true
|
|
21
20
|
});
|
|
22
21
|
}
|
|
23
22
|
export {
|
|
@@ -3,4 +3,4 @@ export type { RenderContext } from './context.js';
|
|
|
3
3
|
export { getParamsAndProps, GetParamsAndPropsError, getParamsAndPropsOrThrow, renderPage, } from './core.js';
|
|
4
4
|
export type { Environment } from './environment';
|
|
5
5
|
export { createBasicEnvironment, createEnvironment } from './environment.js';
|
|
6
|
-
export { loadRenderer } from './renderer.js';
|
|
6
|
+
export { loadRenderer, loadRenderers } from './renderer.js';
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
renderPage
|
|
7
7
|
} from "./core.js";
|
|
8
8
|
import { createBasicEnvironment, createEnvironment } from "./environment.js";
|
|
9
|
-
import { loadRenderer } from "./renderer.js";
|
|
9
|
+
import { loadRenderer, loadRenderers } from "./renderer.js";
|
|
10
10
|
export {
|
|
11
11
|
GetParamsAndPropsError,
|
|
12
12
|
createBasicEnvironment,
|
|
@@ -15,5 +15,6 @@ export {
|
|
|
15
15
|
getParamsAndProps,
|
|
16
16
|
getParamsAndPropsOrThrow,
|
|
17
17
|
loadRenderer,
|
|
18
|
+
loadRenderers,
|
|
18
19
|
renderPage
|
|
19
20
|
};
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import type { AstroRenderer, SSRLoadedRenderer } from '../../@types/astro';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export type MaybeRendererServerEntrypointModule = Partial<RendererServerEntrypointModule>;
|
|
6
|
-
export type RendererLoader = (entryPoint: string) => Promise<MaybeRendererServerEntrypointModule>;
|
|
7
|
-
export declare function loadRenderer(renderer: AstroRenderer, loader: RendererLoader): Promise<SSRLoadedRenderer | undefined>;
|
|
8
|
-
export declare function filterFoundRenderers(renderers: Array<SSRLoadedRenderer | undefined>): SSRLoadedRenderer[];
|
|
9
|
-
export declare function createLoadedRenderer(renderer: AstroRenderer, mod: RendererServerEntrypointModule): SSRLoadedRenderer;
|
|
1
|
+
import type { AstroRenderer, AstroSettings, SSRLoadedRenderer } from '../../@types/astro';
|
|
2
|
+
import type { ModuleLoader } from '../module-loader/index.js';
|
|
3
|
+
export declare function loadRenderers(settings: AstroSettings, moduleLoader: ModuleLoader): Promise<SSRLoadedRenderer[]>;
|
|
4
|
+
export declare function loadRenderer(renderer: AstroRenderer, moduleLoader: ModuleLoader): Promise<SSRLoadedRenderer | undefined>;
|
|
@@ -1,23 +1,18 @@
|
|
|
1
|
-
async function
|
|
2
|
-
const
|
|
1
|
+
async function loadRenderers(settings, moduleLoader) {
|
|
2
|
+
const renderers = await Promise.all(settings.renderers.map((r) => loadRenderer(r, moduleLoader)));
|
|
3
|
+
return renderers.filter(Boolean);
|
|
4
|
+
}
|
|
5
|
+
async function loadRenderer(renderer, moduleLoader) {
|
|
6
|
+
const mod = await moduleLoader.import(renderer.serverEntrypoint);
|
|
3
7
|
if (typeof mod.default !== "undefined") {
|
|
4
|
-
return
|
|
8
|
+
return {
|
|
9
|
+
...renderer,
|
|
10
|
+
ssr: mod.default
|
|
11
|
+
};
|
|
5
12
|
}
|
|
6
13
|
return void 0;
|
|
7
14
|
}
|
|
8
|
-
function filterFoundRenderers(renderers) {
|
|
9
|
-
return renderers.filter((renderer) => {
|
|
10
|
-
return !!renderer;
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
function createLoadedRenderer(renderer, mod) {
|
|
14
|
-
return {
|
|
15
|
-
...renderer,
|
|
16
|
-
ssr: mod.default
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
15
|
export {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
loadRenderer
|
|
16
|
+
loadRenderer,
|
|
17
|
+
loadRenderers
|
|
23
18
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AstroSettings, RouteData } from '../@types/astro';
|
|
2
|
-
import { type
|
|
1
|
+
import type { AstroSettings, ComponentInstance, RouteData } from '../@types/astro';
|
|
2
|
+
import { type DevelopmentEnvironment } from '../core/render/dev/index.js';
|
|
3
3
|
type GetSortedPreloadedMatchesParams = {
|
|
4
4
|
env: DevelopmentEnvironment;
|
|
5
5
|
matches: RouteData[];
|
|
@@ -9,6 +9,6 @@ export declare function getSortedPreloadedMatches({ env, matches, settings, }: G
|
|
|
9
9
|
type PreloadAndSetPrerenderStatusResult = {
|
|
10
10
|
filePath: URL;
|
|
11
11
|
route: RouteData;
|
|
12
|
-
preloadedComponent:
|
|
12
|
+
preloadedComponent: ComponentInstance;
|
|
13
13
|
};
|
|
14
14
|
export {};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { RedirectComponentInstance, routeIsRedirect } from "../core/redirects/index.js";
|
|
2
|
-
import {
|
|
3
|
-
preload
|
|
4
|
-
} from "../core/render/dev/index.js";
|
|
2
|
+
import { preload } from "../core/render/dev/index.js";
|
|
5
3
|
import { getPrerenderStatus } from "./metadata.js";
|
|
6
4
|
async function getSortedPreloadedMatches({
|
|
7
5
|
env,
|
|
@@ -23,9 +21,8 @@ async function preloadAndSetPrerenderStatus({
|
|
|
23
21
|
matches.map(async (route) => {
|
|
24
22
|
const filePath = new URL(`./${route.component}`, settings.config.root);
|
|
25
23
|
if (routeIsRedirect(route)) {
|
|
26
|
-
const preloadedComponent2 = [[], RedirectComponentInstance];
|
|
27
24
|
return {
|
|
28
|
-
preloadedComponent:
|
|
25
|
+
preloadedComponent: RedirectComponentInstance,
|
|
29
26
|
route,
|
|
30
27
|
filePath
|
|
31
28
|
};
|
|
@@ -60,8 +60,15 @@ Make sure to use the static attribute syntax (\`${key}={value}\`) instead of the
|
|
|
60
60
|
}
|
|
61
61
|
return markHTMLString(` ${key.slice(0, -5)}="${listValue}"`);
|
|
62
62
|
}
|
|
63
|
-
if (key === "style" && !(value instanceof HTMLString)
|
|
64
|
-
|
|
63
|
+
if (key === "style" && !(value instanceof HTMLString)) {
|
|
64
|
+
if (Array.isArray(value) && value.length === 2) {
|
|
65
|
+
return markHTMLString(
|
|
66
|
+
` ${key}="${toAttributeString(`${toStyleString(value[0])};${value[1]}`, shouldEscape)}"`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
if (typeof value === "object") {
|
|
70
|
+
return markHTMLString(` ${key}="${toAttributeString(toStyleString(value), shouldEscape)}"`);
|
|
71
|
+
}
|
|
65
72
|
}
|
|
66
73
|
if (key === "className") {
|
|
67
74
|
return markHTMLString(` class="${toAttributeString(value, shouldEscape)}"`);
|
|
@@ -81,6 +81,8 @@ function convertToSerializedForm(value, metadata = {}, parents = /* @__PURE__ */
|
|
|
81
81
|
default: {
|
|
82
82
|
if (value !== null && typeof value === "object") {
|
|
83
83
|
return [PROP_TYPE.Value, serializeObject(value, metadata, parents)];
|
|
84
|
+
} else if (value === void 0) {
|
|
85
|
+
return [PROP_TYPE.Value];
|
|
84
86
|
} else {
|
|
85
87
|
return [PROP_TYPE.Value, value];
|
|
86
88
|
}
|
|
@@ -63,9 +63,7 @@ async function handleRequest(env, manifest, controller, req, res) {
|
|
|
63
63
|
} catch {
|
|
64
64
|
}
|
|
65
65
|
const errorWithMetadata = collectErrorMetadata(err, config.root);
|
|
66
|
-
|
|
67
|
-
telemetry.record(eventError({ cmd: "dev", err: errorWithMetadata, isFatal: false }));
|
|
68
|
-
}
|
|
66
|
+
telemetry.record(eventError({ cmd: "dev", err: errorWithMetadata, isFatal: false }));
|
|
69
67
|
error(env.logging, null, msg.formatErrorMessage(errorWithMetadata));
|
|
70
68
|
handle500Response(moduleLoader, res, errorWithMetadata);
|
|
71
69
|
return err;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type http from 'http';
|
|
3
3
|
import type { ComponentInstance, ManifestData, RouteData } from '../@types/astro';
|
|
4
|
-
import type {
|
|
4
|
+
import type { DevelopmentEnvironment } from '../core/render/dev/index';
|
|
5
5
|
type AsyncReturnType<T extends (...args: any) => Promise<any>> = T extends (...args: any) => Promise<infer R> ? R : any;
|
|
6
6
|
interface MatchedRoute {
|
|
7
7
|
route: RouteData;
|
|
8
8
|
filePath: URL;
|
|
9
9
|
resolvedPathname: string;
|
|
10
|
-
preloadedComponent:
|
|
10
|
+
preloadedComponent: ComponentInstance;
|
|
11
11
|
mod: ComponentInstance;
|
|
12
12
|
}
|
|
13
13
|
export declare function matchRoute(pathname: string, env: DevelopmentEnvironment, manifest: ManifestData): Promise<MatchedRoute | undefined>;
|
|
@@ -23,9 +23,8 @@ async function matchRoute(pathname, env, manifest) {
|
|
|
23
23
|
const matches = matchAllRoutes(pathname, manifest);
|
|
24
24
|
const preloadedMatches = await getSortedPreloadedMatches({ env, matches, settings });
|
|
25
25
|
for await (const { preloadedComponent, route: maybeRoute, filePath } of preloadedMatches) {
|
|
26
|
-
const [, mod] = preloadedComponent;
|
|
27
26
|
const paramsAndPropsRes = await getParamsAndProps({
|
|
28
|
-
mod,
|
|
27
|
+
mod: preloadedComponent,
|
|
29
28
|
route: maybeRoute,
|
|
30
29
|
routeCache,
|
|
31
30
|
pathname,
|
|
@@ -38,7 +37,7 @@ async function matchRoute(pathname, env, manifest) {
|
|
|
38
37
|
filePath,
|
|
39
38
|
resolvedPathname: pathname,
|
|
40
39
|
preloadedComponent,
|
|
41
|
-
mod
|
|
40
|
+
mod: preloadedComponent
|
|
42
41
|
};
|
|
43
42
|
}
|
|
44
43
|
}
|
|
@@ -63,13 +62,12 @@ ${AstroErrorData.NoMatchingStaticPathFound.hint(possibleRoutes)}`
|
|
|
63
62
|
if (custom404) {
|
|
64
63
|
const filePath = new URL(`./${custom404.component}`, settings.config.root);
|
|
65
64
|
const preloadedComponent = await preload({ env, filePath });
|
|
66
|
-
const [, mod] = preloadedComponent;
|
|
67
65
|
return {
|
|
68
66
|
route: custom404,
|
|
69
67
|
filePath,
|
|
70
68
|
resolvedPathname: pathname,
|
|
71
69
|
preloadedComponent,
|
|
72
|
-
mod
|
|
70
|
+
mod: preloadedComponent
|
|
73
71
|
};
|
|
74
72
|
}
|
|
75
73
|
return void 0;
|
|
@@ -107,14 +105,6 @@ async function handleRoute(matchedRoute, url, pathname, body, origin, env, manif
|
|
|
107
105
|
if (value)
|
|
108
106
|
res.setHeader(name, value);
|
|
109
107
|
}
|
|
110
|
-
const paramsAndPropsRes = await getParamsAndProps({
|
|
111
|
-
mod,
|
|
112
|
-
route,
|
|
113
|
-
routeCache: env.routeCache,
|
|
114
|
-
pathname,
|
|
115
|
-
logging,
|
|
116
|
-
ssr: isServerLikeOutput(config)
|
|
117
|
-
});
|
|
118
108
|
const options = {
|
|
119
109
|
env,
|
|
120
110
|
filePath,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "astro",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.3",
|
|
4
4
|
"description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "withastro",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"vendor"
|
|
101
101
|
],
|
|
102
102
|
"dependencies": {
|
|
103
|
-
"@astrojs/compiler": "^1.5.
|
|
103
|
+
"@astrojs/compiler": "^1.5.3",
|
|
104
104
|
"@astrojs/internal-helpers": "^0.1.1",
|
|
105
105
|
"@astrojs/language-server": "^1.0.0",
|
|
106
106
|
"@astrojs/markdown-remark": "^2.2.1",
|