feat(proj): init
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
import puppeteer from "puppeteer-core";
|
||||
|
||||
const url = process.argv[2] || "https://tile-server.ru/#14/55.7558/37.6173";
|
||||
const browser = await puppeteer.launch({
|
||||
executablePath: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
|
||||
headless: "new",
|
||||
args: ["--no-sandbox", "--use-gl=angle", "--enable-webgl"]
|
||||
});
|
||||
const page = await browser.newPage();
|
||||
await page.setViewport({ width: 1400, height: 900 });
|
||||
await page.evaluateOnNewDocument(() => {
|
||||
const wrap = () => {
|
||||
if (!window.maplibregl || window.__mapHooked) {
|
||||
return;
|
||||
}
|
||||
window.__mapHooked = true;
|
||||
const Orig = window.maplibregl.Map;
|
||||
window.maplibregl.Map = function (options) {
|
||||
const inner = options.transformRequest;
|
||||
options.transformRequest = (reqUrl, resourceType) => {
|
||||
console.log("TRANSFORM", resourceType, reqUrl);
|
||||
return inner ? inner(reqUrl, resourceType) : { url: reqUrl };
|
||||
};
|
||||
const map = new Orig(options);
|
||||
map.on("error", (e) => {
|
||||
const err = e.error;
|
||||
console.log("MAPERR", err && (err.message || String(err)), err && err.status, err && err.url);
|
||||
});
|
||||
window.__map = map;
|
||||
return map;
|
||||
};
|
||||
};
|
||||
setInterval(wrap, 5);
|
||||
});
|
||||
page.on("console", (msg) => console.log("CONSOLE", msg.type(), msg.text()));
|
||||
page.on("pageerror", (err) => console.log("PAGEERROR", err.message));
|
||||
await page.goto(url, { waitUntil: "domcontentloaded", timeout: 45000 });
|
||||
await new Promise((r) => setTimeout(r, 10000));
|
||||
const info = await page.evaluate(async () => {
|
||||
const map = window.__map;
|
||||
const layers = ["water", "building", "transportation", "boundary", "place"];
|
||||
const source = {};
|
||||
const rendered = {};
|
||||
if (map) {
|
||||
for (const layer of layers) {
|
||||
try {
|
||||
source[layer] = map.querySourceFeatures("openmaptiles", { sourceLayer: layer }).length;
|
||||
} catch (e) {
|
||||
source[layer] = String(e);
|
||||
}
|
||||
}
|
||||
const feats = map.queryRenderedFeatures();
|
||||
for (const f of feats) {
|
||||
rendered[f.layer.id] = (rendered[f.layer.id] || 0) + 1;
|
||||
}
|
||||
}
|
||||
const cacheInfo = [];
|
||||
try {
|
||||
const caches = map.style.sourceCaches || map.style._sourceCaches;
|
||||
const cache = caches.openmaptiles || caches["openmaptiles"];
|
||||
const tiles = cache._tiles || cache.tiles || {};
|
||||
for (const [id, tile] of Object.entries(tiles)) {
|
||||
cacheInfo.push({
|
||||
id,
|
||||
state: tile.state,
|
||||
keys: Object.keys(tile).sort(),
|
||||
raw: tile.rawTileData ? tile.rawTileData.byteLength : null,
|
||||
latest: tile.latestRawTileData ? tile.latestRawTileData.byteLength : null,
|
||||
vt: tile.vtLayers ? Object.keys(tile.vtLayers) : null,
|
||||
idx: Boolean(tile.latestFeatureIndex)
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
cacheInfo.push({ err: String(e) });
|
||||
}
|
||||
const probeFetch = await fetch("https://tile-server.ru/api/v1/tiles/central-fed-district/14/9904/5121.pbf?v=2");
|
||||
const probeBuf = await probeFetch.arrayBuffer();
|
||||
return {
|
||||
hash: location.hash,
|
||||
live: document.getElementById("live-coords")?.textContent,
|
||||
areTilesLoaded: map.areTilesLoaded(),
|
||||
source,
|
||||
rendered,
|
||||
renderedTotal: map ? map.queryRenderedFeatures().length : null,
|
||||
cacheInfo,
|
||||
mainFetch: {
|
||||
status: probeFetch.status,
|
||||
type: probeFetch.headers.get("content-type"),
|
||||
encoding: probeFetch.headers.get("content-encoding"),
|
||||
len: probeBuf.byteLength
|
||||
}
|
||||
};
|
||||
});
|
||||
console.log("INFO", JSON.stringify(info));
|
||||
await page.screenshot({ path: "c:/Users/ggpo1/Desktop/tile-server/.tmp-tiles/shots/prod-hook.png" });
|
||||
await browser.close();
|
||||
Reference in New Issue
Block a user