Merge pull request #202 from protomaps/cloudflare-native-decompress

Revert cloudflare decompression to own function
This commit is contained in:
Brandon Liu
2023-06-22 14:25:10 +08:00
committed by GitHub
5 changed files with 29 additions and 13 deletions

View File

@@ -8,7 +8,7 @@
"name": "pmtiles-cloudflare",
"version": "0.0.0",
"devDependencies": {
"@cloudflare/workers-types": "^3.17.0",
"@cloudflare/workers-types": "^4.20230518.0",
"esbuild-runner": "^2.2.2",
"typescript": "^4.8.4",
"wrangler": "2.18.0"
@@ -24,9 +24,9 @@
}
},
"node_modules/@cloudflare/workers-types": {
"version": "3.17.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-3.17.0.tgz",
"integrity": "sha512-u0cUQ4ntWFFwn5jx0ETa2ItvwvfOMjyaKF2fX2vFVujrSgNES/PnvRzPAhdt9CMYAMidInm0MGkIjxHRsFBaeg==",
"version": "4.20230518.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20230518.0.tgz",
"integrity": "sha512-A0w1V+5SUawGaaPRlhFhSC/SCDT9oQG8TMoWOKFLA4qbqagELqEAFD4KySBIkeVOvCBLT1DZSYBMCxbXddl0kw==",
"dev": true
},
"node_modules/@esbuild-plugins/node-globals-polyfill": {
@@ -1620,9 +1620,9 @@
}
},
"@cloudflare/workers-types": {
"version": "3.17.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-3.17.0.tgz",
"integrity": "sha512-u0cUQ4ntWFFwn5jx0ETa2ItvwvfOMjyaKF2fX2vFVujrSgNES/PnvRzPAhdt9CMYAMidInm0MGkIjxHRsFBaeg==",
"version": "4.20230518.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20230518.0.tgz",
"integrity": "sha512-A0w1V+5SUawGaaPRlhFhSC/SCDT9oQG8TMoWOKFLA4qbqagELqEAFD4KySBIkeVOvCBLT1DZSYBMCxbXddl0kw==",
"dev": true
},
"@esbuild-plugins/node-globals-polyfill": {

View File

@@ -2,7 +2,7 @@
"name": "pmtiles-cloudflare",
"version": "0.0.0",
"devDependencies": {
"@cloudflare/workers-types": "^3.17.0",
"@cloudflare/workers-types": "^4.20230518.0",
"esbuild-runner": "^2.2.2",
"typescript": "^4.8.4",
"wrangler": "2.18.0"

View File

@@ -4,6 +4,7 @@ import {
RangeResponse,
ResolvedValueCache,
TileType,
Compression,
} from "../../../js/index";
import { pmtiles_path, tile_path, tileJSON } from "../../shared/index";
@@ -21,7 +22,22 @@ class KeyNotFoundError extends Error {
}
}
const CACHE = new ResolvedValueCache(25, undefined);
async function nativeDecompress(
buf: ArrayBuffer,
compression: Compression
): Promise<ArrayBuffer> {
if (compression === Compression.None || compression === Compression.Unknown) {
return buf;
} else if (compression === Compression.Gzip) {
let stream = new Response(buf).body!;
let result = stream.pipeThrough(new DecompressionStream("gzip"));
return new Response(result).arrayBuffer();
} else {
throw Error("Compression method not supported");
}
}
const CACHE = new ResolvedValueCache(25, undefined, nativeDecompress);
class R2Source implements Source {
env: Env;
@@ -120,7 +136,7 @@ export default {
const cacheable_headers = new Headers();
const source = new R2Source(env, name);
const p = new PMTiles(source, CACHE);
const p = new PMTiles(source, CACHE, nativeDecompress);
try {
const p_header = await p.getHeader();