• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iTowns / itowns / 10635241580

30 Aug 2024 03:26PM UTC coverage: 86.966% (-2.8%) from 89.766%
10635241580

push

github

jailln
feat(3dtiles): add new OGC3DTilesLayer using 3d-tiles-renderer-js

Deprecate C3DTilesLayer (replaced by OGC3DTilesLayer).
Add new iGLTFLoader that loads gltf 1.0 and 2.0 files.

2791 of 3694 branches covered (75.55%)

Branch coverage included in aggregate %.

480 of 644 new or added lines in 8 files covered. (74.53%)

2144 existing lines in 111 files now uncovered.

24319 of 27479 relevant lines covered (88.5%)

1024.72 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

84.55
/src/Parser/MapBoxUrlParser.js
1
const urlRe = /^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;
1✔
2

1✔
3
const config = {
1✔
4
    API_URL: 'https://api.mapbox.com',
1✔
5
    REQUIRE_ACCESS_TOKEN: true,
1✔
6
    ACCESS_TOKEN: null,
1✔
7
};
1✔
8

1✔
9
function formatUrl(obj) {
7✔
10
    const params = obj.params.length ? `?${obj.params.join('&')}` : '';
7✔
11
    return `${obj.protocol}://${obj.authority}${obj.path}${params}`;
7✔
12
}
7✔
13

1✔
14
function makeAPIURL(urlObject, accessToken) {
5✔
15
    const apiUrlObject = parseUrl(config.API_URL);
5✔
16
    urlObject.protocol = apiUrlObject.protocol;
5✔
17
    urlObject.authority = apiUrlObject.authority;
5✔
18

5✔
19
    if (urlObject.protocol === 'http') {
5!
20
        const i = urlObject.params.indexOf('secure');
×
21
        if (i >= 0) {
×
UNCOV
22
            urlObject.params.splice(i, 1);
×
UNCOV
23
        }
×
24
    }
×
25

5✔
26
    if (apiUrlObject.path !== '/') {
5!
UNCOV
27
        urlObject.path = `${apiUrlObject.path}${urlObject.path}`;
×
28
    }
×
29

5✔
30
    if (!config.REQUIRE_ACCESS_TOKEN) { return formatUrl(urlObject); }
5!
31

5✔
32
    accessToken = accessToken || config.ACCESS_TOKEN;
5!
33
    if (!accessToken) { throw new Error('An API access token is required'); }
5!
34
    if (accessToken[0] === 's') { throw new Error('Use a public access token (pk.*), not a secret access token (sk.*).'); }
5!
35

5✔
36
    urlObject.params = urlObject.params.filter(d => d.indexOf('access_token') === -1);
5✔
37
    urlObject.params.push(`access_token=${accessToken}`);
5✔
38
    return formatUrl(urlObject);
5✔
39
}
5✔
40

1✔
41
function isMapboxURL(url) {
9✔
42
    return url.indexOf('mapbox:') === 0;
9✔
43
}
9✔
44

1✔
45
function parseUrl(url) {
12✔
46
    const parts = url.match(urlRe);
12✔
47
    if (!parts) {
12!
UNCOV
48
        throw new Error('Unable to parse URL object');
×
UNCOV
49
    }
×
50
    return {
12✔
51
        protocol: parts[1],
12✔
52
        authority: parts[2],
12✔
53
        path: parts[3] || '/',
12✔
54
        params: parts[4] ? parts[4].split('&') : [],
12!
55
    };
12✔
56
}
12✔
57

1✔
58
function normalizeSpriteURL(url, format, extension, accessToken) {
4✔
59
    const urlObject = parseUrl(url);
4✔
60
    if (!isMapboxURL(url)) {
4✔
61
        urlObject.path += `${format}${extension}`;
2✔
62
        return formatUrl(urlObject);
2✔
63
    }
2✔
64
    urlObject.path = `/styles/v1${urlObject.path}/sprite${format}${extension}`;
2✔
65
    return makeAPIURL(urlObject, accessToken);
2✔
66
}
2✔
67

1✔
68
function normalizeSourceURL(url, accessToken) {
3✔
69
    if (!isMapboxURL(url)) { return url; }
3✔
70
    const urlObject = parseUrl(url);
2✔
71
    urlObject.path = `/v4/${urlObject.authority}.json`;
2✔
72
    urlObject.params.push('secure');
2✔
73
    return makeAPIURL(urlObject, accessToken);
2✔
74
}
2✔
75

1✔
76
function normalizeStyleURL(url, accessToken) {
2✔
77
    if (!isMapboxURL(url)) { return url; }
2✔
78
    const urlObject = parseUrl(url);
1✔
79
    urlObject.path = `/styles/v1${urlObject.path}`;
1✔
80
    return makeAPIURL(urlObject, accessToken);
1✔
81
}
1✔
82

1✔
83
export default {
1✔
84
    normalizeStyleURL,
1✔
85
    normalizeSourceURL,
1✔
86
    normalizeSpriteURL,
1✔
87
};
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc