Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/big-jobs-make.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Fixes an issue where the use of the Astro internal logger couldn't work with Cloudflare Vite plugin.
6 changes: 6 additions & 0 deletions .changeset/floppy-cases-hug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@astrojs/cloudflare': patch
'astro': patch
---

Fixes an issue where the use of the `Code` component would result in an unexpected error.
5 changes: 5 additions & 0 deletions .changeset/green-zebras-lick.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Fixes an issue where the new Astro v6 development server didn't log anything when navigating the pages.
4 changes: 3 additions & 1 deletion benchmark/packages/adapter/src/server.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as fs from 'node:fs';
import type { SSRManifest } from 'astro';
import { AppPipeline, BaseApp } from 'astro/app';
import { AppPipeline, BaseApp, type LogRequestPayload } from 'astro/app';

class MyApp extends BaseApp {
#manifest: SSRManifest | undefined;
Expand Down Expand Up @@ -30,6 +30,8 @@ class MyApp extends BaseApp {
streaming,
});
}

logRequest(_options: LogRequestPayload) {}
}

export function createExports(manifest: SSRManifest) {
Expand Down
2 changes: 1 addition & 1 deletion biome.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
// We don't want to have node modules in code that should be runtime agnostic
"includes": [
"**/packages/astro/src/**/runtime/**/*.ts",
"**/packages/astro/src/**/runtime.ts"
"**/packages/astro/src/**/*runtime*.ts"
],
"linter": {
"rules": {
Expand Down
10 changes: 4 additions & 6 deletions packages/astro/components/Code.astro
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
---
import {
type ThemePresets,
createShikiHighlighter,
globalShikiStyleCollector,
transformerStyleToClass,
} from '@astrojs/markdown-remark';
import { createShikiHighlighter, type ThemePresets } from '@astrojs/markdown-remark/shiki';
import { globalShikiStyleCollector } from '@astrojs/markdown-remark/shiki-style-collector';
import { transformerStyleToClass } from '@astrojs/markdown-remark/transformers/style-to-class';
import type { ShikiTransformer, ThemeRegistration, ThemeRegistrationRaw } from 'shiki';
import { bundledLanguages } from 'shiki/langs';
import type { CodeLanguage } from '../dist/types/public/common.js';
Expand All @@ -13,6 +10,7 @@ import type { HTMLAttributes } from '../types.js';
// Code.astro always uses Shiki, so import the virtual CSS module
import 'virtual:astro:shiki-styles.css';


interface Props extends Omit<HTMLAttributes<'pre'>, 'lang'> {
/** The code to highlight. Required. */
code: string;
Expand Down
3 changes: 1 addition & 2 deletions packages/astro/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@
"common-ancestor-path": "^2.0.0",
"cookie": "^1.1.1",
"cssesc": "^3.0.0",
"debug": "^4.4.3",
"deterministic-object-hash": "^2.0.2",
"devalue": "^5.6.2",
"diff": "^8.0.3",
Expand All @@ -149,6 +148,7 @@
"magicast": "^0.5.2",
"mrmime": "^2.0.1",
"neotraverse": "^0.6.18",
"obug": "^2.1.1",
"p-limit": "^7.3.0",
"p-queue": "^9.1.0",
"package-manager-detector": "^1.6.0",
Expand Down Expand Up @@ -181,7 +181,6 @@
"@playwright/test": "1.58.2",
"@types/aria-query": "^5.0.4",
"@types/cssesc": "^3.0.2",
"@types/debug": "^4.1.12",
"@types/dlv": "^1.1.5",
"@types/hast": "^3.0.4",
"@types/html-escaper": "3.0.4",
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/assets/fonts/vite-plugin-fonts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { generateCspDigest } from '../../core/encryption.js';
import { collectErrorMetadata } from '../../core/errors/dev/utils.js';
import { AstroError, AstroErrorData, isAstroError } from '../../core/errors/index.js';
import type { Logger } from '../../core/logger/core.js';
import { formatErrorMessage } from '../../core/messages.js';
import { formatErrorMessage } from '../../core/messages/runtime.js';
import { appendForwardSlash, joinPaths, prependForwardSlash } from '../../core/path.js';
import { getClientOutputDirectory } from '../../prerender/utils.js';
import type { AstroSettings } from '../../types/astro.js';
Expand Down
4 changes: 2 additions & 2 deletions packages/astro/src/cli/add/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ import {
updateTSConfigForFramework,
} from '../../core/config/tsconfig.js';
import type { Logger } from '../../core/logger/core.js';
import * as msg from '../../core/messages.js';
import { printHelp } from '../../core/messages.js';
import * as msg from '../../core/messages/runtime.js';
import { printHelp } from '../../core/messages/runtime.js';
import { appendForwardSlash } from '../../core/path.js';
import { ensureProcessNodeEnv, parseNpmName } from '../../core/util.js';
import { eventCliSession, telemetry } from '../../events/index.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/cli/build/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import _build from '../../core/build/index.js';
import { printHelp } from '../../core/messages.js';
import { printHelp } from '../../core/messages/runtime.js';
import { type Flags, flagsToAstroInlineConfig } from '../flags.js';

interface BuildOptions {
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/cli/dev/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import colors from 'piccolore';
import devServer from '../../core/dev/index.js';
import { printHelp } from '../../core/messages.js';
import { printHelp } from '../../core/messages/runtime.js';
import { type Flags, flagsToAstroInlineConfig } from '../flags.js';

interface DevOptions {
Expand Down
6 changes: 3 additions & 3 deletions packages/astro/src/cli/flags.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Arguments } from 'yargs-parser';
import { Logger, type LogOptions } from '../core/logger/core.js';
import { nodeLogDestination } from '../core/logger/node.js';
import type { Logger, LogOptions } from '../core/logger/core.js';
import { createNodeLogger, nodeLogDestination } from '../core/logger/node.js';
import type { AstroInlineConfig } from '../types/public/config.js';

// Alias for now, but allows easier migration to node's `parseArgs` in the future.
Expand Down Expand Up @@ -52,5 +52,5 @@ export function createLoggerFromFlags(flags: Flags): Logger {
logging.level = 'silent';
}

return new Logger(logging);
return createNodeLogger({ logLevel: logging.level });
}
2 changes: 1 addition & 1 deletion packages/astro/src/cli/preferences/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import colors from 'piccolore';
import { resolveConfig } from '../../core/config/config.js';
import { createSettings } from '../../core/config/settings.js';
import { collectErrorMetadata } from '../../core/errors/dev/utils.js';
import * as msg from '../../core/messages.js';
import * as msg from '../../core/messages/runtime.js';
import { DEFAULT_PREFERENCES } from '../../preferences/defaults.js';
import { coerce, isValidKey, type PreferenceKey } from '../../preferences/index.js';
import type { AstroSettings } from '../../types/astro.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/cli/preview/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import colors from 'piccolore';
import { printHelp } from '../../core/messages.js';
import { printHelp } from '../../core/messages/runtime.js';
import previewServer from '../../core/preview/index.js';
import { type Flags, flagsToAstroInlineConfig } from '../flags.js';

Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/cli/sync/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { printHelp } from '../../core/messages.js';
import { printHelp } from '../../core/messages/runtime.js';
import _sync from '../../core/sync/index.js';
import { type Flags, flagsToAstroInlineConfig } from '../flags.js';

Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/cli/telemetry/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as msg from '../../core/messages.js';
import * as msg from '../../core/messages/runtime.js';
import { telemetry } from '../../events/index.js';
import { createLoggerFromFlags, type Flags } from '../flags.js';

Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/cli/throw-and-exit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { collectErrorMetadata } from '../core/errors/dev/index.js';
import { isAstroConfigZodError } from '../core/errors/errors.js';
import { createSafeError } from '../core/errors/index.js';
import { debug } from '../core/logger/core.js';
import { formatErrorMessage } from '../core/messages.js';
import { formatErrorMessage } from '../core/messages/runtime.js';
import { eventError, telemetry } from '../events/index.js';

/** Display error and exit */
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export function getViteConfig(
{ runHookConfigSetup, runHookConfigDone },
] = await Promise.all([
import('vite'),
import('../core/config/logging.js'),
import('../core/logger/node.js'),
import('../core/config/index.js'),
import('../core/create-vite.js'),
import('../integrations/hooks.js'),
Expand Down
5 changes: 4 additions & 1 deletion packages/astro/src/core/app/app.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BaseApp } from './base.js';
import { BaseApp, type LogRequestPayload } from './base.js';
import { AppPipeline } from './pipeline.js';

export class App extends BaseApp {
Expand All @@ -12,4 +12,7 @@ export class App extends BaseApp {
isDev(): boolean {
return false;
}

// Should we log something for our users?
logRequest(_options: LogRequestPayload) {}
}
63 changes: 62 additions & 1 deletion packages/astro/src/core/app/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
REROUTABLE_STATUS_CODES,
REROUTE_DIRECTIVE_HEADER,
responseSentSymbol,
REWRITE_DIRECTIVE_HEADER_KEY,
} from '../constants.js';
import { getSetCookiesFromResponse } from '../cookies/index.js';
import { AstroError, AstroErrorData } from '../errors/index.js';
Expand Down Expand Up @@ -342,6 +343,7 @@ export abstract class BaseApp<P extends Pipeline = AppPipeline> {
}

public async render(request: Request, renderOptions?: RenderOptions): Promise<Response> {
const timeStart = performance.now();
let routeData: RouteData | undefined = renderOptions?.routeData;
let locals: object | undefined;
let clientAddress: string | undefined;
Expand Down Expand Up @@ -379,7 +381,8 @@ export abstract class BaseApp<P extends Pipeline = AppPipeline> {
'The adapter ' + this.manifest.adapterName + ' provided a custom RouteData for ',
request.url,
);
this.logger.debug('router', 'RouteData:\n' + routeData);
this.logger.debug('router', 'RouteData');
this.logger.debug('router', routeData);
}
if (locals) {
if (typeof locals !== 'object') {
Expand Down Expand Up @@ -443,6 +446,16 @@ export abstract class BaseApp<P extends Pipeline = AppPipeline> {
});
session = renderContext.session;
response = await renderContext.render(componentInstance);

const isRewrite = response.headers.has(REWRITE_DIRECTIVE_HEADER_KEY);

this.logThisRequest({
pathname,
method: request.method,
statusCode: response.status,
isRewrite,
timeStart,
});
} catch (err: any) {
this.logger.error(null, err.stack || err.message || String(err));
return this.renderError(request, {
Expand Down Expand Up @@ -672,4 +685,52 @@ export abstract class BaseApp<P extends Pipeline = AppPipeline> {
public getManifest() {
return this.pipeline.manifest;
}

logThisRequest({
pathname,
method,
statusCode,
isRewrite,
timeStart,
}: {
pathname: string;
method: string;
statusCode: number;
isRewrite: boolean;
timeStart: number;
}) {
const timeEnd = performance.now();
this.logRequest({
pathname,
method,
statusCode,
isRewrite,
reqTime: timeEnd - timeStart,
});
}

public abstract logRequest(_options: LogRequestPayload): void;
}

export type LogRequestPayload = {
/**
* The current path being rendered
*/
pathname: string;
/**
* The method of the request
*/
method: string;
/**
* The status code of the request
*/
statusCode: number;
/**
* If the current request is a rewrite
*/
isRewrite: boolean;
/**
* How long it took to render the request
*/
reqTime: number;
};
24 changes: 23 additions & 1 deletion packages/astro/src/core/app/dev/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,20 @@ import { MiddlewareNoDataOrNextCalled, MiddlewareNotAResponse } from '../../erro
import { type AstroError, isAstroError } from '../../errors/index.js';
import type { Logger } from '../../logger/core.js';
import type { CreateRenderContext, RenderContext } from '../../render-context.js';
import { BaseApp, type DevMatch, type RenderErrorOptions } from '../base.js';
import {
BaseApp,
type DevMatch,
type LogRequestPayload,
type RenderErrorOptions,
} from '../base.js';
import type { SSRManifest } from '../types.js';
import { NonRunnablePipeline } from './pipeline.js';
import { getCustom404Route, getCustom500Route } from '../../routing/helpers.js';
import { ensure404Route } from '../../routing/astro-designed-error-pages.js';
import { matchRoute } from '../../routing/dev.js';
import type { RunnablePipeline } from '../../../vite-plugin-app/pipeline.js';
import type { RoutesList } from '../../../types/astro.js';
import { req } from '../../messages/runtime.js';

export class DevApp extends BaseApp<NonRunnablePipeline> {
logger: Logger;
Expand Down Expand Up @@ -134,4 +140,20 @@ export class DevApp extends BaseApp<NonRunnablePipeline> {
return renderRoute(custom500);
}
}

logRequest({ pathname, method, statusCode, isRewrite, reqTime }: LogRequestPayload) {
if (pathname === '/favicon.ico') {
return;
}
this.logger.info(
null,
req({
url: pathname,
method,
statusCode,
isRewrite,
reqTime,
}),
);
}
}
7 changes: 6 additions & 1 deletion packages/astro/src/core/app/entrypoints/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
export type { RoutesList } from '../../../types/astro.js';
export { App } from '../app.js';
export { BaseApp, type RenderErrorOptions, type RenderOptions } from '../base.js';
export {
BaseApp,
type RenderErrorOptions,
type RenderOptions,
type LogRequestPayload,
} from '../base.js';
export { fromRoutingStrategy, toRoutingStrategy } from '../common.js';
export { createConsoleLogger } from '../logging.js';
export {
Expand Down
3 changes: 3 additions & 0 deletions packages/astro/src/core/build/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import type { BuildInternals } from './internal.js';
import { BuildPipeline } from './pipeline.js';
import type { StaticBuildOptions } from './types.js';
import type { CreateRenderContext, RenderContext } from '../render-context.js';
import type { LogRequestPayload } from '../app/base.js';

export class BuildApp extends BaseApp<BuildPipeline> {
createPipeline(_streaming: boolean, manifest: SSRManifest, ..._args: any[]): BuildPipeline {
Expand Down Expand Up @@ -52,4 +53,6 @@ export class BuildApp extends BaseApp<BuildPipeline> {
});
}
}

logRequest(_options: LogRequestPayload) {}
}
2 changes: 1 addition & 1 deletion packages/astro/src/core/build/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
import type { AstroSettings, RoutesList } from '../../types/astro.js';
import type { AstroInlineConfig, RuntimeMode } from '../../types/public/config.js';
import { resolveConfig } from '../config/config.js';
import { createNodeLogger } from '../config/logging.js';
import { createNodeLogger } from '../logger/node.js';
import { createSettings } from '../config/settings.js';
import { createVite } from '../create-vite.js';
import { createKey, getEnvironmentKey, hasEnvironmentKey } from '../encryption.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/core/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import type {
} from '../../types/public/config.js';
import { trackAstroConfigZodError } from '../errors/errors.js';
import { AstroError, AstroErrorData } from '../errors/index.js';
import { formatConfigErrorMessage } from '../messages.js';
import { formatConfigErrorMessage } from '../messages/runtime.js';
import { mergeConfig } from './merge.js';
import { validateConfig } from './validate.js';
import { loadConfigWithVite } from './vite-load.js';
Expand Down
12 changes: 0 additions & 12 deletions packages/astro/src/core/config/logging.ts

This file was deleted.

Loading
Loading