4.4.0
* add [MapLibre Vector Tile](https://github.com/maplibre/maplibre-tile-spec) `.mlt` support by @anscg [#633]

4.3.2
* fix leafletRasterLayer empty images: set `display: none`

4.3.1
* fix leafletRasterLayer handling of empty tiles by @thisisaaronland [#620]
* maplibre: properly abort requests using AbortController by @andrewda [#608]

4.3.0
* improve ZXY to HilbertID conversion by @ciscorn [#527]

4.2.1
* MapLibre adapter detects erroneous tileset bounds and shows console error [#508]

4.1.0
* MapLibre `Protocol` constructor takes `errorOnMissingTile` option. [#505]
  - Use this only for parity with the overzooming behavior of ZXY tile APIs.

4.0.1
* fix iife build via esbuild configuration for fflate browser dependency

4.0.0
* remove pmtiles spec v2 support, which reduces bundle size significantly [#287]
* use tsup for creating cjs/esm packages, which fixes typescript usage [#498]
* re-structure files in js project to be more conventional.

3.2.0
* MapLibre `Protocol` constructor takes an options object.
* add protocol option `metadata:boolean` that controls whether TileJSON metadata is fetched synchronously on map load. [#247]
	* This populates the attribution field and is required for some inspector applications to work.

3.1.0
* disable brower caching if Chrome + Windows is detected in user agent to work around https://issues.chromium.org/issues/40542704 [#384, #442, #445]
* add getTileJson to PMTiles [#239]

3.0.7
* improve ETag error message [#427]

3.0.6
* add CommonJS build fallback for NodeJS projects not using ESM.

3.0.5
* fix missing files in dist/ for build systems that bundle .ts files

3.0.4
* export DecompressFunc type

3.0.3

* Deprecate `prefetch`-ing the first 16 kb as an option, always true
* Optimize invalidation when etag changes when promises are shared between tile requests. [#90]

3.0.2

* Fix name of script includes (IIFE) name from `index.js` to `pmtiles.js`
* Fix name of ES6 module from `index.mjs` to `index.js`, which fixes bundlers detecting TypeScript types (index.d.ts)

3.0.1

* FileApiSource renamed to FileSource
* package.json defines **ES6 module only** (no CommonJS), fixing issues related to named imports [#317, #248]
* support MapLibre GL v4.x
* `Source` API changed to take ETag, making conditional `If-Match` requests possible [#90]
* FetchSource includes cachebuster logic for browser cache only on ETag change
* Ignore weak ETags, greatly simplify ETag logic
* Internal code has consistent naming and style conventions, change to biome linter [#287]

2.11.0

* `FetchSource` takes optional 2nd param `Headers` to apply custom headers to all requests.

2.10.0

* Replace `DecompressionStream` polyfill with own `globalThis` detection because of web workers problems.

2.9.0

* Recognize AVIF TileType
* MapLibre adapter internally passes bounds from PMTiles header

2.8.0

* Polyfill `DecompressionStream` using 101arrowz/compression-streams-polyfill
* Surface errors to MapLibre protocol instead of throwing raw exception

2.7.2

* `leafletRasterLayer` sets correct MIME types (via @bmcbride)

2.7.1

* Optimize `zxyToTileId` (via @huOp)

2.7.0

* Fix JS `zxyToTileId` for z > 15

2.6.1

* Replace `BigInt` usage to support older Safari versions.

2.6.0

* Show error when attempting to load a vector archive with `leafletRasterLayer`.
* fix compatibility with servers that return 416 for < 16 kb archives on initial fetch.

2.5.0

* `tryDecompress` is async.
* `Cache` and `PMTiles` take optional `DecompressFunc` for swapping in a different decompressor.
* Cache sizes much more conservative to work around memory problems in serverless.
* Cache size logic is simplified but less robust to variable-sized directories (will revisit later).

2.4.0

* Detect misbehaving ETag servers like Webpack dev server and fail gracefully.

2.3.0

* MapLibre empty tile bytes depends on tile type.

2.2.0

* Fetch client throws exception on non-successful HTTP responses.
* Maximum depth of directory traversal set to 3 like other clients.

2.1.0

* Improve deprecation console warnings.
* MapLibre adapter detects min/max zoom.

2.0.0

* Major version bump, changing the JS API.
* Support for PMTiles spec version 3 archives.
* Backwards compatibility with v2 archives.
* Leaflet and MapLibre adapters support tile cancellation, improving performance significantly.
* ETag and Retry support for archives that are updated in-place.
* Cache-Control and Expires header support for MapLibre.

Clearer API names:

```js
	const p = new pmtiles.PMTiles('example.pmtiles')
	pmtiles.leafletRasterLayer(p).addTo(map)
```
```js
	let protocol = new pmtiles.Protocol();
  maplibregl.addProtocol("pmtiles",protocol.tile);
```


1.0.0 

* Breaking change, introducing new TypeScript module with more clearly defined interfaces.
* Leaflet plugin API changed:

```js
	const p = new pmtiles.PMTiles('example.pmtiles')
	pmtiles.leafletLayer(p).addTo(map)
```

* MapLibre protocol API changed:

```js
	let cache = new pmtiles.ProtocolCache();
  maplibregl.addProtocol("pmtiles",cache.protocol);
```