UNPKG

1.44 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const tools_1 = require("@toba/tools");
7const node_fetch_1 = __importDefault(require("node-fetch"));
8const _1 = require(".");
9function relabel(from, out, labels) {
10 Object.keys(labels).forEach(key => {
11 if (tools_1.is.defined(from, key)) {
12 out[labels[key]] = from[key];
13 }
14 });
15}
16exports.relabel = relabel;
17async function load(url) {
18 const reply = await node_fetch_1.default(url, {
19 headers: { [tools_1.Header.UserAgent]: 'node.js' }
20 });
21 return reply.status !== tools_1.HttpStatus.OK
22 ? console.error(`Attempt to GET ${url} returned ${reply.status}`)
23 : reply.buffer();
24}
25exports.load = load;
26async function loadSource(key) {
27 const s = _1.config.source[key];
28 const data = await load(s.url);
29 if (tools_1.is.value(data)) {
30 switch (s.type) {
31 case 2:
32 case 1:
33 console.error(`Unsupported map source ${s.type} at ${s.url}`);
34 return null;
35 case 0:
36 default: {
37 const doc = await _1.kml.fromKMZ(data);
38 return _1.geoJSON.featuresFromKML(doc, s.transform);
39 }
40 }
41 }
42 return null;
43}
44exports.loadSource = loadSource;