diff options
-rw-r--r-- | docs/api.md | 8 | ||||
-rw-r--r-- | docs/dev.md | 2 | ||||
-rw-r--r-- | src/compiler/index.ts | 7 | ||||
-rw-r--r-- | src/frontend/500.astro | 2 | ||||
-rw-r--r-- | src/runtime.ts | 4 | ||||
-rw-r--r-- | test/astro-request.test.js | 4 | ||||
-rw-r--r-- | test/astro-rss.test.js | 4 | ||||
-rw-r--r-- | test/fixtures/astro-request/src/pages/index.astro | 2 |
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> |