summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/api.md8
-rw-r--r--docs/dev.md2
-rw-r--r--src/compiler/index.ts7
-rw-r--r--src/frontend/500.astro2
-rw-r--r--src/runtime.ts4
-rw-r--r--test/astro-request.test.js4
-rw-r--r--test/astro-rss.test.js4
-rw-r--r--test/fixtures/astro-request/src/pages/index.astro2
8 files changed, 22 insertions, 11 deletions
diff --git a/docs/api.md b/docs/api.md
index 785f9a83b..d3af1564f 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -43,6 +43,14 @@ const data = Astro.fetchContent('../pages/post/*.md'); // returns an array of po
}[];
```
+#### `request`
+
+`Astro.request` returns an object with the following properties:
+
+| Name | Type | Description |
+| :----- | :------- | :--------------------------------------------------------------------------------------------------------- |
+| `url` | `URL` | The URL of the request being rendered. |
+
### `collection`
```jsx
diff --git a/docs/dev.md b/docs/dev.md
index 7b811d7d3..8057ddcd6 100644
--- a/docs/dev.md
+++ b/docs/dev.md
@@ -42,7 +42,7 @@ The 500 page will receive an `error` query parameter which you can access with:
```
---
-const error = import.meta.request.url.searchParams.get('error');
+const error = Astro.request.url.searchParams.get('error');
---
<strong>{error}</strong>
diff --git a/src/compiler/index.ts b/src/compiler/index.ts
index d2d7bff08..7e7bfc4c6 100644
--- a/src/compiler/index.ts
+++ b/src/compiler/index.ts
@@ -131,7 +131,12 @@ ${result.imports.join('\n')}
// \`__render()\`: Render the contents of the Astro module.
import { h, Fragment } from '${internalImport('h.js')}';
+const __astroRequestSymbol = Symbol('astro.request');
async function __render(props, ...children) {
+ const Astro = {
+ request: props[__astroRequestSymbol]
+ };
+
${result.script}
return h(Fragment, null, ${result.html});
}
@@ -148,7 +153,7 @@ export async function __renderPage({request, children, props}) {
__render,
};
- import.meta.request = request;
+ props[__astroRequestSymbol] = request;
const childBodyResult = await currentChild.__render(props, children);
// find layout, if one was given.
diff --git a/src/frontend/500.astro b/src/frontend/500.astro
index af7b901e9..01fab8bea 100644
--- a/src/frontend/500.astro
+++ b/src/frontend/500.astro
@@ -2,7 +2,7 @@
import Prism from 'astro/components/Prism.astro';
let title = 'Uh oh...';
-const error = import.meta.request.url.searchParams.get('error');
+const error = Astro.request.url.searchParams.get('error');
---
<!doctype html>
diff --git a/src/runtime.ts b/src/runtime.ts
index a394d93c4..d7f63183c 100644
--- a/src/runtime.ts
+++ b/src/runtime.ts
@@ -205,9 +205,7 @@ async function load(config: RuntimeConfig, rawPathname: string | undefined): Pro
let html = (await mod.exports.__renderPage({
request: {
- host: fullurl.hostname,
- path: fullurl.pathname,
- href: fullurl.toString(),
+ // params should go here when implemented
url: requestURL
},
children: [],
diff --git a/test/astro-request.test.js b/test/astro-request.test.js
index 05fcf035b..1156714dd 100644
--- a/test/astro-request.test.js
+++ b/test/astro-request.test.js
@@ -3,11 +3,11 @@ import * as assert from 'uvu/assert';
import { doc } from './test-utils.js';
import { setup } from './helpers.js';
-const Request = suite('import.meta.request');
+const Request = suite('Astro.request');
setup(Request, './fixtures/astro-request');
-Request('import.meta.request available', async (context) => {
+Request('Astro.request available', async (context) => {
const result = await context.runtime.load('/');
assert.equal(result.statusCode, 200);
diff --git a/test/astro-rss.test.js b/test/astro-rss.test.js
index ed0d37818..61234d36d 100644
--- a/test/astro-rss.test.js
+++ b/test/astro-rss.test.js
@@ -8,8 +8,8 @@ import { fileURLToPath } from 'url';
const RSS = suite('RSS Generation');
-const snapshot = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title><![CDATA[MF Doomcast]]></title><description><![CDATA[The podcast about the things you find on a picnic, or at a picnic table]]></description><link>https://mysite.dev/feed/episodes.xml</link><language>en-us</language><itunes:author>MF Doom</itunes:author><item><title><![CDATA[Rap Snitch Knishes (feat. Mr. Fantastik)]]></title><link>https://mysite.dev/episode/rap-snitch-knishes/</link><description><![CDATA[Complex named this song the “22nd funniest rap song of all time.”]]></description><pubDate>Tue, 16 Nov 2004 07:00:00 GMT</pubDate><itunes:episodeType>music</itunes:episodeType><itunes:duration>172</itunes:duration><itunes:explicit>true</itunes:explicit></item><item><title><![CDATA[Fazers]]></title><link>https://mysite.dev/episode/fazers/</link><description><![CDATA[Rhapsody ranked Take Me to Your Leader 17th on its list “Hip-Hop’s Best Albums of the Decade”]]></description><pubDate>Thu, 03 Jul 2003 06:00:00 GMT</pubDate><itunes:episodeType>music</itunes:episodeType><itunes:duration>197</itunes:duration><itunes:explicit>true</itunes:explicit></item><item><title><![CDATA[Rhymes Like Dimes (feat. Cucumber Slice)]]></title><link>https://mysite.dev/episode/rhymes-like-dimes/</link><description><![CDATA[Operation: Doomsday has been heralded as an underground classic that established MF Doom's rank within the underground hip-hop scene during the early to mid-2000s.
-]]></description><pubDate>Tue, 19 Oct 1999 06:00:00 GMT</pubDate><itunes:episodeType>music</itunes:episodeType><itunes:duration>259</itunes:duration><itunes:explicit>true</itunes:explicit></item></channel></rss>`;
+const snapshot = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title><![CDATA[MF Doomcast]]></title><description><![CDATA[The podcast about the things you find on a picnic, or at a picnic table]]></description><link>https://mysite.dev/feed/episodes.xml</link><language>en-us</language><itunes:author>MF Doom</itunes:author><item><title><![CDATA[Rap Snitch Knishes (feat. Mr. Fantastik)]]></title><link>https://mysite.dev/episode/rap-snitch-knishes/</link><description><![CDATA[Complex named this song the “22nd funniest rap song of all time.”]]></description><pubDate>Tue, 16 Nov 2004 05:00:00 GMT</pubDate><itunes:episodeType>music</itunes:episodeType><itunes:duration>172</itunes:duration><itunes:explicit>true</itunes:explicit></item><item><title><![CDATA[Fazers]]></title><link>https://mysite.dev/episode/fazers/</link><description><![CDATA[Rhapsody ranked Take Me to Your Leader 17th on its list “Hip-Hop’s Best Albums of the Decade”]]></description><pubDate>Thu, 03 Jul 2003 04:00:00 GMT</pubDate><itunes:episodeType>music</itunes:episodeType><itunes:duration>197</itunes:duration><itunes:explicit>true</itunes:explicit></item><item><title><![CDATA[Rhymes Like Dimes (feat. Cucumber Slice)]]></title><link>https://mysite.dev/episode/rhymes-like-dimes/</link><description><![CDATA[Operation: Doomsday has been heralded as an underground classic that established MF Doom's rank within the underground hip-hop scene during the early to mid-2000s.
+]]></description><pubDate>Tue, 19 Oct 1999 04:00:00 GMT</pubDate><itunes:episodeType>music</itunes:episodeType><itunes:duration>259</itunes:duration><itunes:explicit>true</itunes:explicit></item></channel></rss>`;
const cwd = new URL('./fixtures/astro-rss', import.meta.url);
diff --git a/test/fixtures/astro-request/src/pages/index.astro b/test/fixtures/astro-request/src/pages/index.astro
index 590a5e154..f809a76e3 100644
--- a/test/fixtures/astro-request/src/pages/index.astro
+++ b/test/fixtures/astro-request/src/pages/index.astro
@@ -1,5 +1,5 @@
---
-let path = import.meta.request.path;
+let path = Astro.request.url.pathname;
---
<html>