diff --git a/packages/astro/test/units/app/dev-url-construction.test.js b/packages/astro/test/units/app/dev-url-construction.test.ts similarity index 92% rename from packages/astro/test/units/app/dev-url-construction.test.js rename to packages/astro/test/units/app/dev-url-construction.test.ts index c273991369c8..ab752b98e2ce 100644 --- a/packages/astro/test/units/app/dev-url-construction.test.js +++ b/packages/astro/test/units/app/dev-url-construction.test.ts @@ -1,22 +1,22 @@ import * as assert from 'node:assert/strict'; import { describe, it } from 'node:test'; +import type { SSRManifest } from '../../../dist/core/app/types.js'; import { getFirstForwardedValue, validateForwardedHeaders, } from '../../../dist/core/app/validate-headers.js'; -/** - * Mirrors the URL construction logic in AstroServerApp.handleRequest so that - * the protocol and host derivation can be exercised in isolation. - * - * @param {object} opts - * @param {Record} opts.headers - Incoming request headers - * @param {boolean} [opts.isHttps=false] - Whether Vite itself is running TLS - * @param {import('../../../dist/core/app/types.js').SSRManifest['allowedDomains']} [opts.allowedDomains] - * @param {string} [opts.requestUrl='/'] - * @returns {URL} - */ -function buildDevUrl({ headers, isHttps = false, allowedDomains, requestUrl = '/' }) { +function buildDevUrl({ + headers, + isHttps = false, + allowedDomains, + requestUrl = '/', +}: { + headers: Record; + isHttps?: boolean; + allowedDomains?: SSRManifest['allowedDomains']; + requestUrl?: string; +}): URL { const validated = validateForwardedHeaders( getFirstForwardedValue(headers['x-forwarded-proto']), getFirstForwardedValue(headers['x-forwarded-host']), diff --git a/packages/astro/test/units/app/headers.test.js b/packages/astro/test/units/app/headers.test.ts similarity index 100% rename from packages/astro/test/units/app/headers.test.js rename to packages/astro/test/units/app/headers.test.ts diff --git a/packages/astro/test/units/app/url-attribute-xss.test.js b/packages/astro/test/units/app/url-attribute-xss.test.ts similarity index 98% rename from packages/astro/test/units/app/url-attribute-xss.test.js rename to packages/astro/test/units/app/url-attribute-xss.test.ts index 56aa4d401c90..3afd18d4a1f3 100644 --- a/packages/astro/test/units/app/url-attribute-xss.test.js +++ b/packages/astro/test/units/app/url-attribute-xss.test.ts @@ -1,4 +1,3 @@ -// @ts-check import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { addAttribute } from '../../../dist/runtime/server/render/util.js'; diff --git a/packages/astro/test/units/assets/image-layout.test.js b/packages/astro/test/units/assets/image-layout.test.ts similarity index 100% rename from packages/astro/test/units/assets/image-layout.test.js rename to packages/astro/test/units/assets/image-layout.test.ts diff --git a/packages/astro/test/units/render/escape.test.js b/packages/astro/test/units/render/escape.test.ts similarity index 90% rename from packages/astro/test/units/render/escape.test.js rename to packages/astro/test/units/render/escape.test.ts index e38af171cc18..19e8402a01ac 100644 --- a/packages/astro/test/units/render/escape.test.js +++ b/packages/astro/test/units/render/escape.test.ts @@ -1,4 +1,3 @@ -// @ts-check import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { @@ -86,8 +85,8 @@ describe('unescapeHTML', () => { yield '
  • 1
  • '; yield '
  • 2
  • '; } - const result = unescapeHTML(gen()); - const chunks = []; + const result = unescapeHTML(gen()) as AsyncIterable; + const chunks: string[] = []; for await (const chunk of result) { chunks.push(String(chunk)); } @@ -100,8 +99,8 @@ describe('unescapeHTML', () => { yield '
  • a
  • '; yield '
  • b
  • '; } - const result = unescapeHTML(gen()); - const chunks = []; + const result = unescapeHTML(gen()) as AsyncIterable; + const chunks: string[] = []; for await (const chunk of result) { chunks.push(String(chunk)); } @@ -110,8 +109,8 @@ describe('unescapeHTML', () => { it('can take a Response', async () => { const response = new Response('

    hello

    ', { headers: { 'content-type': 'text/html' } }); - const result = unescapeHTML(response); - const chunks = []; + const result = unescapeHTML(response) as AsyncIterable; + const chunks: string[] = []; const dec = new TextDecoder(); for await (const chunk of result) { chunks.push(chunk instanceof Uint8Array ? dec.decode(chunk) : String(chunk)); @@ -126,8 +125,8 @@ describe('unescapeHTML', () => { controller.close(); }, }); - const result = unescapeHTML(stream); - const chunks = []; + const result = unescapeHTML(stream) as AsyncIterable; + const chunks: string[] = []; for await (const chunk of result) { chunks.push(String(chunk)); } diff --git a/packages/astro/test/units/render/hydration.test.js b/packages/astro/test/units/render/hydration.test.ts similarity index 96% rename from packages/astro/test/units/render/hydration.test.js rename to packages/astro/test/units/render/hydration.test.ts index 5b11e90a9564..afc22e94978d 100644 --- a/packages/astro/test/units/render/hydration.test.js +++ b/packages/astro/test/units/render/hydration.test.ts @@ -1,4 +1,3 @@ -// @ts-check import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { extractDirectives } from '../../../dist/runtime/server/hydration.js'; @@ -138,9 +137,9 @@ describe('extractDirectives', () => { it('throws for an invalid hydration directive', () => { assert.throws( () => extractDirectives({ 'client:unknown': '' }, clientDirectives), - (err) => { - assert.ok(err.message.includes('invalid hydration directive')); - assert.ok(err.message.includes('client:unknown')); + (err: unknown) => { + assert.ok((err as Error).message.includes('invalid hydration directive')); + assert.ok((err as Error).message.includes('client:unknown')); return true; }, ); diff --git a/packages/astro/test/units/routing/origin-pathname.test.js b/packages/astro/test/units/routing/origin-pathname.test.ts similarity index 100% rename from packages/astro/test/units/routing/origin-pathname.test.js rename to packages/astro/test/units/routing/origin-pathname.test.ts diff --git a/packages/astro/test/units/routing/routing-helpers.test.js b/packages/astro/test/units/routing/routing-helpers.test.ts similarity index 65% rename from packages/astro/test/units/routing/routing-helpers.test.js rename to packages/astro/test/units/routing/routing-helpers.test.ts index 8f01ae7abf4e..305db1ecbbb1 100644 --- a/packages/astro/test/units/routing/routing-helpers.test.js +++ b/packages/astro/test/units/routing/routing-helpers.test.ts @@ -1,27 +1,31 @@ -// @ts-check import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; +import type { RouteData } from '../../../dist/types/public/internal.js'; import { hasNonPrerenderedRoute } from '../../../dist/core/routing/helpers.js'; +function route(overrides: Partial): RouteData { + return overrides as RouteData; +} + describe('hasNonPrerenderedRoute', () => { it('returns true when a non-prerendered project page exists', () => { - const routes = [{ type: 'page', origin: 'project', prerender: false }]; + const routes = [route({ type: 'page', origin: 'project', prerender: false })]; assert.equal(hasNonPrerenderedRoute(routes), true); }); it('returns false when all project pages are prerendered', () => { - const routes = [{ type: 'page', origin: 'project', prerender: true }]; + const routes = [route({ type: 'page', origin: 'project', prerender: true })]; assert.equal(hasNonPrerenderedRoute(routes), false); }); it('excludes endpoints when includeEndpoints is false', () => { - const routes = [{ type: 'endpoint', origin: 'project', prerender: false }]; + const routes = [route({ type: 'endpoint', origin: 'project', prerender: false })]; assert.equal(hasNonPrerenderedRoute(routes, { includeEndpoints: false }), false); assert.equal(hasNonPrerenderedRoute(routes, { includeEndpoints: true }), true); }); it('returns true for injected (external) non-prerendered pages when includeExternal is true', () => { - const routes = [{ type: 'page', origin: 'external', prerender: false }]; + const routes = [route({ type: 'page', origin: 'external', prerender: false })]; assert.equal(hasNonPrerenderedRoute(routes, { includeExternal: true }), true); assert.equal(hasNonPrerenderedRoute(routes), false); });