Skip to content

Commit

Permalink
Add types for import.meta.env.ASSETS_PREFIX and `import.meta.env.SI…
Browse files Browse the repository at this point in the history
…TE` (#7172)
  • Loading branch information
Princesseuh committed May 23, 2023
1 parent 5b6a031 commit 2ca9426
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 19 deletions.
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

0 comments on commit 2ca9426

Please sign in to comment.