Skip to content

Commit 3abed9b

Browse files
committed
Lint netlify-headers script
1 parent 119543e commit 3abed9b

File tree

1 file changed

+68
-68
lines changed

1 file changed

+68
-68
lines changed

scripts/netlify-headers.js

+68-68
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,99 @@
1-
var AssetGraph = require('assetgraph');
1+
'use strict';
22

3-
var headers = [
4-
'Content-Security-Policy'
3+
const AssetGraph = require('assetgraph');
4+
5+
const headers = [
6+
'Content-Security-Policy'
57
];
68

7-
var resourceHintTypeMap = {
8-
HtmlPreloadLink: 'preload',
9-
HtmlPrefetchLink: 'prefetch',
10-
HtmlPreconnectLink: 'preconnect',
11-
HtmlDnsPrefetchLink: 'dns-prefetch'
9+
const resourceHintTypeMap = {
10+
HtmlPreloadLink: 'preload',
11+
HtmlPrefetchLink: 'prefetch',
12+
HtmlPreconnectLink: 'preconnect',
13+
HtmlDnsPrefetchLink: 'dns-prefetch'
1214
};
1315

1416
function getHeaderForRelation (rel) {
15-
let header = `Link: <${rel.href}>; rel=${resourceHintTypeMap[rel.type]}; as=${rel.as}; type=${rel.to.contentType}`;
17+
let header = `Link: <${rel.href}>; rel=${resourceHintTypeMap[rel.type]}; as=${rel.as}; type=${rel.to.contentType}`;
1618

17-
if (rel.as === 'font') {
18-
header = `${header}; crossorigin=anonymous`;
19-
}
19+
if (rel.as === 'font') {
20+
header = `${header}; crossorigin=anonymous`;
21+
}
2022

21-
return header;
23+
return header;
2224
}
2325

2426
new AssetGraph({ root: 'docs/_dist' })
25-
.loadAssets('*.html')
26-
.populate({
27-
followRelations: { type: 'HtmlAnchor', crossorigin: false }
28-
})
29-
.queue(function (assetGraph) {
30-
var assets = assetGraph.findAssets({ type: 'Html', isInline: false });
31-
32-
var headerMap = {};
33-
34-
assets.forEach(function (asset) {
35-
var url = '/' + asset.url.replace(assetGraph.root, '').replace(/#.*/, '').replace('index.html', '');
36-
if (!headerMap[url]) {
37-
headerMap[url] = [];
38-
}
27+
.loadAssets('*.html')
28+
.populate({
29+
followRelations: { type: 'HtmlAnchor', crossorigin: false }
30+
})
31+
.queue(function (assetGraph) {
32+
const assets = assetGraph.findAssets({ type: 'Html', isInline: false });
3933

40-
headers.forEach(function (header) {
41-
var node = asset.parseTree.querySelector('meta[http-equiv=' + header + ']');
34+
const headerMap = {};
4235

43-
if (node) {
44-
headerMap[url].push(`${header}: ${node.getAttribute('content')}`)
36+
assets.forEach(function (asset) {
37+
const url = '/' + asset.url.replace(assetGraph.root, '').replace(/#.*/, '').replace('index.html', '');
38+
if (!headerMap[url]) {
39+
headerMap[url] = [];
40+
}
4541

46-
node.parentNode.removeChild(node);
47-
asset.markDirty();
48-
}
49-
});
42+
headers.forEach(function (header) {
43+
const node = asset.parseTree.querySelector('meta[http-equiv=' + header + ']');
5044

51-
var firstCssRel = asset.outgoingRelations.filter(r => {
52-
return r.type === 'HtmlStyle'
53-
&& r.crossorigin === false
54-
&& r.href !== undefined;
55-
})[0];
45+
if (node) {
46+
headerMap[url].push(`${header}: ${node.getAttribute('content')}`);
5647

57-
if (firstCssRel) {
58-
const header = `Link: <${firstCssRel.href}>; rel=preload; as=style`;
48+
node.parentNode.removeChild(node);
49+
asset.markDirty();
50+
}
51+
});
5952

53+
const firstCssRel = asset.outgoingRelations.filter(r => {
54+
return r.type === 'HtmlStyle' &&
55+
r.crossorigin === false &&
56+
r.href !== undefined;
57+
})[0];
6058

61-
headerMap[url].push(header);
62-
}
59+
if (firstCssRel) {
60+
const header = `Link: <${firstCssRel.href}>; rel=preload; as=style`;
6361

64-
var resourceHintRelations = asset.outgoingRelations.filter(r => ['HtmlPreloadLink', 'HtmlPrefetchLink'].includes(r.type));
62+
headerMap[url].push(header);
63+
}
6564

66-
resourceHintRelations.forEach(rel => {
67-
headerMap[url].push(getHeaderForRelation(rel));
65+
const resourceHintRelations = asset.outgoingRelations.filter(r => ['HtmlPreloadLink', 'HtmlPrefetchLink'].includes(r.type));
6866

69-
rel.detach();
70-
});
67+
resourceHintRelations.forEach(rel => {
68+
headerMap[url].push(getHeaderForRelation(rel));
7169

72-
var resourceHintRelations = asset.outgoingRelations.filter(r => ['HtmlPreconnectLink'].includes(r.type));
70+
rel.detach();
71+
});
7372

74-
resourceHintRelations.forEach(rel => {
75-
let header = `Link: <${rel.href}>; rel=preconnect`;
73+
const preconnectRelations = asset.outgoingRelations.filter(r => ['HtmlPreconnectLink'].includes(r.type));
7674

77-
headerMap[url].push(header);
75+
preconnectRelations.forEach(rel => {
76+
let header = `Link: <${rel.href}>; rel=preconnect`;
7877

79-
rel.detach();
80-
});
81-
});
78+
headerMap[url].push(header);
8279

83-
console.log('\n## Autogenerated headers:\n')
80+
rel.detach();
81+
});
82+
});
8483

85-
Object.keys(headerMap).forEach(function (url) {
86-
console.log(url);
84+
console.log('\n## Autogenerated headers:\n');
8785

88-
var httpHeaders = headerMap[url];
86+
Object.keys(headerMap).forEach(function (url) {
87+
console.log(url);
8988

90-
httpHeaders.forEach(function (header) {
91-
console.log(` ${header}`)
92-
});
89+
const httpHeaders = headerMap[url];
9390

94-
console.log('');
95-
});
91+
httpHeaders.forEach(function (header) {
92+
console.log(` ${header}`);
93+
});
9694

97-
})
98-
.writeAssetsToDisc({ isLoaded: true })
99-
.run();
95+
console.log('');
96+
});
97+
})
98+
.writeAssetsToDisc({ isLoaded: true })
99+
.run();

0 commit comments

Comments
 (0)