From 10021809dc5ebaf47d3ddd27d9165a7f6fe722c1 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Thu, 22 Jun 2023 10:08:34 +0800 Subject: [PATCH] add AVIF enum in JS client [#116] --- js/adapters.ts | 2 ++ js/index.ts | 1 + serverless/aws/src/index.ts | 4 ++++ serverless/cloudflare/src/index.ts | 1 + serverless/shared/index.ts | 2 ++ spec/v3/spec.md | 2 +- 6 files changed, 11 insertions(+), 1 deletion(-) diff --git a/js/adapters.ts b/js/adapters.ts index c49b678..82d124e 100644 --- a/js/adapters.ts +++ b/js/adapters.ts @@ -27,6 +27,8 @@ export const leafletRasterLayer = (source: PMTiles, options: any) => { mimeType = "image/jpeg"; } else if (header.tileType == 4) { mimeType = "image/webp"; + } else if (header.tileType == 5) { + mimeType = "image/avif"; } }); loaded = true; diff --git a/js/index.ts b/js/index.ts index 99cebdf..57f3929 100644 --- a/js/index.ts +++ b/js/index.ts @@ -177,6 +177,7 @@ export enum TileType { Png = 2, Jpeg = 3, Webp = 4, + Avif = 5, } const HEADER_SIZE_BYTES = 127; diff --git a/serverless/aws/src/index.ts b/serverless/aws/src/index.ts index ee832d0..248f492 100644 --- a/serverless/aws/src/index.ts +++ b/serverless/aws/src/index.ts @@ -163,6 +163,7 @@ export const handlerRaw = async ( [TileType.Png, "png"], [TileType.Jpeg, "jpg"], [TileType.Webp, "webp"], + [TileType.Avif, "avif"], ]) { if (header.tileType === pair[0] && ext !== pair[1]) { if (header.tileType == TileType.Mvt && ext === "pbf") { @@ -194,6 +195,9 @@ export const handlerRaw = async ( case TileType.Webp: headers["Content-Type"] = "image/webp"; break; + case TileType.Avif: + headers["Content-Type"] = "image/avif"; + break; } let data = tile_result.data; diff --git a/serverless/cloudflare/src/index.ts b/serverless/cloudflare/src/index.ts index dcb4e5c..22b2618 100644 --- a/serverless/cloudflare/src/index.ts +++ b/serverless/cloudflare/src/index.ts @@ -146,6 +146,7 @@ export default { [TileType.Png, "png"], [TileType.Jpeg, "jpg"], [TileType.Webp, "webp"], + [TileType.Avif, "avif"], ]) { if (p_header.tileType === pair[0] && ext !== pair[1]) { if (p_header.tileType == TileType.Mvt && ext === "pbf") { diff --git a/serverless/shared/index.ts b/serverless/shared/index.ts index ad03d3d..49731cf 100644 --- a/serverless/shared/index.ts +++ b/serverless/shared/index.ts @@ -52,6 +52,8 @@ export const tileJSON = ( ext = ".jpg"; } else if (header.tileType === TileType.Webp) { ext = ".webp"; + } else if (header.tileType === TileType.Avif) { + ext = ".avif"; } return { diff --git a/spec/v3/spec.md b/spec/v3/spec.md index 53118f9..0ff6553 100644 --- a/spec/v3/spec.md +++ b/spec/v3/spec.md @@ -91,7 +91,7 @@ The `Header` is 127 bytes, with little-endian integer values: * **tile type**: A hint as to the tile contents. Clients and proxies may use this to: * Automatically determine a visualization method * provide a conventional MIME type `Content-Type` HTTP header - * Enforce a canonical extension e.g. `.mvt`, `png`, `jpeg`, `.webp` to prevent duplication in caches + * Enforce a canonical extension e.g. `.mvt`, `png`, `jpeg`, `.webp`, `.avif` to prevent duplication in caches ### Metadata