Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add types for import.meta.env.ASSETS_PREFIX and import.meta.env.SITE #7172

Merged
merged 5 commits into from May 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/hungry-lobsters-happen.md
@@ -0,0 +1,5 @@
---
'astro': patch
---

Add types for `import.meta.env.ASSETS_PREFIX` and `import.meta.env.SITE`
33 changes: 27 additions & 6 deletions packages/astro/client-base.d.ts
@@ -1,5 +1,32 @@
/// <reference path="./import-meta.d.ts" />

// eslint-disable-next-line @typescript-eslint/no-namespace
declare namespace App {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface Locals {}
}

interface ImportMetaEnv {
/**
* The prefix for Astro-generated asset links if the build.assetsPrefix config option is set. This can be used to create asset links not handled by Astro.
*/
readonly ASSETS_PREFIX: string;
/**
* This is set to the site option specified in your project’s Astro config file.
*/
readonly SITE: string;
}

interface ImportMeta {
/**
* Astro and Vite expose environment variables through `import.meta.env`. For a complete list of the environment variables available, see the two references below.
*
* - [Astro reference](https://docs.astro.build/en/guides/environment-variables/#default-environment-variables)
* - [Vite reference](https://vitejs.dev/guide/env-and-mode.html#env-variables)
*/
readonly env: ImportMetaEnv;
}

declare module 'astro:assets' {
// Exporting things one by one is a bit cumbersome, not sure if there's a better way - erika, 2023-02-03
type AstroAssets = {
Expand Down Expand Up @@ -387,9 +414,3 @@ declare module '*?inline' {
const src: string;
export default src;
}

// eslint-disable-next-line @typescript-eslint/no-namespace
declare namespace App {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface Locals {}
}
2 changes: 1 addition & 1 deletion packages/astro/client-image.d.ts
Expand Up @@ -2,7 +2,7 @@

// TODO: Merge this file with `client-base.d.ts` in 3.0, when the `astro:assets` feature isn't under a flag anymore.

type InputFormat = import('./dist/assets/types.js').InputFormat;
type InputFormat = import('./dist/assets/types.js').ImageInputFormat;

interface ImageMetadata {
src: string;
Expand Down
4 changes: 0 additions & 4 deletions packages/astro/client.d.ts
Expand Up @@ -21,10 +21,6 @@ declare module '*.svg' {
const src: string;
export default src;
}
declare module '*.ico' {
const src: string;
export default src;
}
declare module '*.webp' {
const src: string;
export default src;
Expand Down
9 changes: 1 addition & 8 deletions packages/astro/import-meta.d.ts
@@ -1,18 +1,11 @@
// File vendored from Vite itself, as a workaround to https://github.com/vitejs/vite/pull/9827 until Vite 4 comes out
// File vendored from Vite itself, as a workaround to https://github.com/vitejs/vite/issues/13309 until Vite 5 comes out

// This file is an augmentation to the built-in ImportMeta interface
// Thus cannot contain any top-level imports
// <https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation>

/* eslint-disable @typescript-eslint/consistent-type-imports */

// Duplicate of import('../src/node/importGlob').GlobOptions in order to
// avoid breaking the production client type. Because this file is referenced
// in vite/client.d.ts and in production src/node/importGlob.ts doesn't exist.
interface GlobOptions {
as?: string;
}

interface ImportMeta {
url: string;

Expand Down