Skip to content

Commit 25ddb47

Browse files
authored
feat: Add sri-history file and update process (#476)
1 parent fe9c5ef commit 25ddb47

File tree

3 files changed

+107
-3
lines changed

3 files changed

+107
-3
lines changed

build/sri-update.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
var path = require('path');
2+
var fs = require('fs');
3+
var sriToolbox = require("sri-toolbox");
4+
5+
// Check if we should be validating or updating
6+
var validate = process.argv.some(function (arg) {
7+
return arg === '--validate';
8+
});
9+
10+
var root = path.join(__dirname, '..')
11+
var axeVersion = require('../package.json').version;
12+
var axeHistory = require('../sri-history.json');
13+
14+
if (typeof axeHistory[axeVersion] !== 'object') {
15+
axeHistory[axeVersion] = {}
16+
}
17+
var versionSRIs = axeHistory[axeVersion];
18+
19+
// List all axe files (including minified and localized axe files)
20+
var axeFiles = fs.readdirSync(root).filter(function (file) {
21+
return file.match(/^axe(\.[a-z.-]+)?\.js$/);
22+
});
23+
24+
axeFiles.forEach(function (axeFile) {
25+
var axeSource = fs.readFileSync(path.join(root, axeFile), 'utf-8');
26+
var axeIntegrity = sriToolbox.generate({ algorithms: ["sha256"] }, axeSource);
27+
28+
if (!validate) {
29+
// Update SRI
30+
versionSRIs[axeFile] = axeIntegrity;
31+
32+
// Test if the SRI shouldn't be changed
33+
} else if (versionSRIs[axeFile] && versionSRIs[axeFile] !== axeIntegrity) {
34+
console.log(axeFile, 'did not match the SRI in sri-history.json')
35+
process.exitCode = 1;
36+
}
37+
});
38+
39+
if (!validate) {
40+
fs.writeFileSync(path.join(root, './sri-history.json'),
41+
JSON.stringify(axeHistory, null, '\t'), 'utf-8');
42+
console.log("Updated sri-history.json ")
43+
44+
} else if (process.exitCode === 1) {
45+
console.log('\nMake sure the package version and sri-history.json is updated ' +
46+
'before publishing to NPM.\n');
47+
}

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@
5050
"build": "grunt",
5151
"test": "grunt test",
5252
"test-fast": "grunt test-fast",
53-
"prepublishOnly": "grunt build"
53+
"version": "node build/sri-update",
54+
"prepublishOnly": "grunt build && node build/sri-update --validate"
5455
},
5556
"devDependencies": {
5657
"babel-plugin-transform-object-rest-spread": "^6.6.5",
@@ -79,6 +80,8 @@
7980
"mocha": "^3.2.0",
8081
"promise": "~7.1.1",
8182
"revalidator": "~0.3.1",
82-
"selenium-webdriver": "~3.4.0"
83-
}
83+
"selenium-webdriver": "~3.4.0",
84+
"sri-toolbox": "^0.2.0"
85+
},
86+
"dependencies": {}
8487
}

sri-history.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{
2+
"1.0.1": {
3+
"axe.js": "sha256-F14wfpbaL6+ZafS2ufmz74/R6CD1L777gCOJVuLn5Ao=",
4+
"axe.min.js": "sha256-GfbQgd6aKJKQT21HaQfVUuGEbMUfSKhi7RsWrrih7SM="
5+
},
6+
"1.1.0": {
7+
"axe.js": "sha256-nG9+LLksY/HS6yG4x0iS08U7RAmTucy50uXQS5ndQnM=",
8+
"axe.min.js": "sha256-5Lfk3/s+ieHttrDTOCVuepGjDgH2D1neTDDtXnJdIT0="
9+
},
10+
"1.1.1": {
11+
"axe.js": "sha256-K0MLUClls79s14CT01F82LPc+ZubTBwt6fZDdN5iyFw=",
12+
"axe.min.js": "sha256-UWXq259l36QypXwd2e4K2V1Lli2qHeSPmKfDXy+7uIM="
13+
},
14+
"2.0.5": {
15+
"axe.js": "sha256-KVA5sj4tNmFLneuHPPbg4iEp3MBzsHvn3+s9CxfMrmc=",
16+
"axe.min.js": "sha256-lt5eNq/L7IBUaoSUSAbQ7MEO02DThMGdVm/oxeA88gk="
17+
},
18+
"2.0.6": {
19+
"axe.js": "sha256-cLV1ABoE5NjfwLaRAJYIstAJCmciDXZ55/TrQS5rR/M=",
20+
"axe.min.js": "sha256-fnbwW70tA7/ya+5q5Oimc8wCRsdiv3WrU0MElp/euvY="
21+
},
22+
"2.0.7": {
23+
"axe.js": "sha256-HjHe1xKQqP6i3eGpDlARb5HkFsZxvAslvr1JJhUlp60=",
24+
"axe.min.js": "sha256-vo7Qs4YxFxzFEW5DG9u05JdAUCsFxx7dBIoBP5rzmKA="
25+
},
26+
"2.1.7": {
27+
"axe.js": "sha256-kXUowSb3HQy6AChF4LYR4cvNxKEHCWqCcuiSxvY6E1s=",
28+
"axe.min.js": "sha256-xJPQwkKDFmgwYDLqrt/esIHlc2HLUB2ogf9c1uS1BXA="
29+
},
30+
"2.2.0": {
31+
"axe.js": "sha256-0iX4Q9QT3uHAo+oxS5NWsrU4DNZKB30JRf7m+jjZcX0=",
32+
"axe.min.js": "sha256-3UsQJdfWbhtVd0QzcYi2VAJEfs8DMzxrRvr3h9WbMiE="
33+
},
34+
"2.2.1": {
35+
"axe.js": "sha256-1kuZOWtoYszbvrtG7TYfl/FuO48uwZeFpN4aNnebABk=",
36+
"axe.min.js": "sha256-WSHVQ1/IJaG9ZOydoFg+QXHLjOq8x/mhYkRAyN1yAdI="
37+
},
38+
"2.2.2": {
39+
"axe.js": "sha256-jTirRblNTKinTlmCK3FqDG6POtZVbP/bJNdrXZhCuqk=",
40+
"axe.min.js": "sha256-zpmYSLTgHx09UyYIvYrS5K6uj4VuBbspk54kHk5hPqo="
41+
},
42+
"2.2.3": {
43+
"axe.js": "sha256-dV8RkE0hyyzj7qgValVkoP7Rtu8789BmbyeHZmidvqA=",
44+
"axe.min.js": "sha256-BrNWjOcDL265Me8eKQosGWerJ6ju2g+G9+RvMWiBGOA="
45+
},
46+
"2.3.0": {
47+
"axe.js": "sha256-rkyHB2lHjs+tissQLBUxuxIvWlzRbS4f4cdaH+TjQvo=",
48+
"axe.min.js": "sha256-MGWkallV18uw6bSq6w8cjbGsf9v4rJtXP+NDtMEbO14="
49+
},
50+
"2.3.1": {
51+
"axe.js": "sha256-63oq1xHBiOhX9jlvn5sJmoL8TwJ8JaLYIB91gyb74RI=",
52+
"axe.min.js": "sha256-BGAllCBTUJjJXw3yOPMVai2Bj+1PVaEhK2na699nI/o="
53+
}
54+
}

0 commit comments

Comments
 (0)