UNPKG

@versatiles/server

Version:
45 lines (44 loc) 1.36 kB
import { Container } from '@versatiles/container'; import { generateStyle } from './style.js'; export class Layer { #container; #serverOptions; #header; #metadata; #mime; #compression; constructor(source, serverOptions) { this.#serverOptions = serverOptions; this.#container = new Container(source, { tms: serverOptions?.tms ?? false }); } async init() { if (this.#header) return; this.#header = await this.#container.getHeader(); this.#metadata = await this.#container.getMetadata() ?? '{}'; this.#mime = this.#header.tileMime; this.#compression = this.#header.tileCompression; } async getTileFunction() { await this.init(); const container = this.#container; const mime = this.#mime; const compression = this.#compression; return async (z, x, y) => { const buffer = await container.getTile(z, x, y); if (!buffer) return null; return { buffer, mime, compression }; }; } async getStyle() { await this.init(); if (!this.#metadata) throw Error(); return generateStyle(this.#metadata, this.#serverOptions); } async getMetadata() { await this.init(); return this.#metadata; } }