Skip to content

Commit

Permalink
Merge branch 'main' of github.com:MoustaphaDev/astro
Browse files Browse the repository at this point in the history
  • Loading branch information
MoustaphaDev committed Oct 27, 2022
2 parents f8799c6 + 2aeac32 commit 0608aa2
Show file tree
Hide file tree
Showing 15 changed files with 81 additions and 13 deletions.
5 changes: 5 additions & 0 deletions .changeset/olive-tomatoes-jog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Fix missing types.d.ts in npm package
3 changes: 1 addition & 2 deletions examples/minimal/src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
<title>Astro</title>
</head>
<body>
<h1>SITE: {Astro.site}</h1>
<p>BASE_URL: {import.meta.env.BASE_URL}</p>
<h1>Astro</h1>
</body>
</html>
1 change: 1 addition & 0 deletions packages/astro/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
"client-base.d.ts",
"import-meta.d.ts",
"astro-jsx.d.ts",
"types.d.ts",
"README.md",
"vendor"
],
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/cli/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ import {
import { ASTRO_VERSION } from '../core/constants.js';
import devServer from '../core/dev/index.js';
import { collectErrorMetadata } from '../core/errors/dev/index.js';
import { createSafeError } from '../core/errors/index.js';
import { debug, error, info, LogOptions } from '../core/logger/core.js';
import { enableVerboseLogging, nodeLogDestination } from '../core/logger/node.js';
import { formatConfigErrorMessage, formatErrorMessage, printHelp } from '../core/messages.js';
import { appendForwardSlash } from '../core/path.js';
import preview from '../core/preview/index.js';
import { createSafeError } from '../core/util.js';
import * as event from '../events/index.js';
import { eventConfigError, eventError, telemetry } from '../events/index.js';
import { check } from './check/index.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/core/errors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ export {
RuntimeError,
} from './errors.js';
export { codeFrame } from './printer.js';
export { collectInfoFromStacktrace, positionAt } from './utils.js';
export { collectInfoFromStacktrace, createSafeError, positionAt } from './utils.js';
7 changes: 7 additions & 0 deletions packages/astro/src/core/errors/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,3 +118,10 @@ function getLineOffsets(text: string) {

return lineOffsets;
}

/** Coalesce any throw variable to an Error instance. */
export function createSafeError(err: any): Error {
return err instanceof Error || (err && err.name && err.message)
? err
: new Error(JSON.stringify(err));
}
7 changes: 0 additions & 7 deletions packages/astro/src/core/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,6 @@ export function parseNpmName(
};
}

/** Coalesce any throw variable to an Error instance. */
export function createSafeError(err: any): Error {
return err instanceof Error || (err && err.name && err.message)
? err
: new Error(JSON.stringify(err));
}

export function resolveDependency(dep: string, projectRoot: URL) {
const resolved = resolve.sync(dep, {
basedir: fileURLToPath(projectRoot),
Expand Down
4 changes: 3 additions & 1 deletion packages/astro/src/vite-plugin-astro-server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { attachToResponse, getSetCookiesFromResponse } from '../core/cookies/ind
import { call as callEndpoint } from '../core/endpoint/dev/index.js';
import { collectErrorMetadata, getViteErrorPayload } from '../core/errors/dev/index.js';
import type { ErrorWithMetadata } from '../core/errors/index.js';
import { createSafeError } from '../core/errors/index.js';
import { error, info, LogOptions, warn } from '../core/logger/core.js';
import * as msg from '../core/messages.js';
import { appendForwardSlash } from '../core/path.js';
Expand Down Expand Up @@ -284,7 +285,8 @@ async function handleRequest(
} catch (_err) {
// This is our last line of defense regarding errors where we still might have some information about the request
// Our error should already be complete, but let's try to add a bit more through some guesswork
const errorWithMetadata = collectErrorMetadata(_err);
const err = createSafeError(_err);
const errorWithMetadata = collectErrorMetadata(err);

error(env.logging, null, msg.formatErrorMessage(errorWithMetadata));
handle500Response(viteServer, origin, req, res, errorWithMetadata);
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/src/vite-style-transform/style-transform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { readFileSync } from 'fs';
import type * as vite from 'vite';
import { AstroErrorCodes } from '../core/errors/codes.js';
import { CSSError } from '../core/errors/errors.js';
import { positionAt } from '../core/errors/utils.js';
import { positionAt } from '../core/errors/index.js';

export type ViteStyleTransformer = {
viteDevServer?: vite.ViteDevServer;
Expand Down
33 changes: 33 additions & 0 deletions packages/astro/test/error-non-error.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { expect } from 'chai';
import { loadFixture } from './test-utils.js';

describe('Can handle errors that are not instanceof Error', () => {
/** @type {import('./test-utils').Fixture} */
let fixture;

/** @type {import('./test-utils').DevServer} */
let devServer;

before(async () => {
fixture = await loadFixture({
root: './fixtures/error-non-error',
});
devServer = await fixture.startDevServer();
});

after(async () => {
await devServer.stop();
});

it('Does not crash the dev server', async () => {
let res = await fixture.fetch('/');
let html = await res.text();

expect(html).to.include('Error');

res = await fixture.fetch('/');
await res.text();

expect(html).to.include('Error');
});
});
3 changes: 3 additions & 0 deletions packages/astro/test/fixtures/error-non-error/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { defineConfig } from 'astro/config';

export default defineConfig({});
15 changes: 15 additions & 0 deletions packages/astro/test/fixtures/error-non-error/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "@test/error-non-error",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"astro": "workspace:*"
}
}
1 change: 1 addition & 0 deletions packages/astro/test/fixtures/error-non-error/src/env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/// <reference types="astro/client" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
throw {}
---
6 changes: 6 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 0608aa2

Please sign in to comment.