diff --git a/package.json b/package.json index 383fc5f..e07e24e 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,12 @@ "eslint-plugin-import": "^2.22.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^4.2.1", + "filemanager-webpack-plugin": "^2.0.5", "webpack": "^5.4.0", - "webpack-cli": "^4.1.0", - "filemanager-webpack-plugin": "^2.0.5" + "webpack-cli": "^4.1.0" }, "dependencies": { - "file-saver": "^2.0.5" + "file-saver": "^2.0.5", + "slugify": "^1.6.5" } } diff --git a/src/script.js b/src/script.js index 428e6b6..2753ee7 100644 --- a/src/script.js +++ b/src/script.js @@ -3,6 +3,7 @@ (() => { /* Libaries */ const FileSaver = require('file-saver') + const slugify = require('slugify') /* The HTML payload */ const htmlButtons = ` @@ -124,13 +125,22 @@ // Hook button to JSON const button = [...document.querySelectorAll(`*[aria-labelledby="${device}_tab"] .pageSpeed_button`)].pop() + + // Regex to sanitise the filename + const regex = /[*+~.()'"!:@]/g if (device === 'desktop') { button.addEventListener('click', e => { - FileSaver.saveAs(new Blob([JSON.stringify(window.pageSpeedSaverDesktop)]), 'pagespeed-saver-json-desktop.json') + let filename = `${slugify(window.pageSpeedSaverDesktop.finalUrl)}-${slugify(window.pageSpeedSaverDesktop.configSettings.formFactor)}-${slugify(window.pageSpeedSaverDesktop.fetchTime)}.json` + filename = filename.replace(regex, '-') + console.log(`Saving as ${filename}`) + FileSaver.saveAs(new Blob([JSON.stringify(window.pageSpeedSaverDesktop)]), filename) }) } else { button.addEventListener('click', e => { - FileSaver.saveAs(new Blob([JSON.stringify(window.pageSpeedSaverMobile)]), 'pagespeed-saver-json-mobile.json') + let filename = `${slugify(window.pageSpeedSaverMobile.finalUrl)}-${slugify(window.pageSpeedSaverMobile.configSettings.formFactor)}-${slugify(window.pageSpeedSaverMobile.fetchTime)}.json` + filename = filename.replace(regex, '-') + console.log(`Saving as ${filename}`) + FileSaver.saveAs(new Blob([JSON.stringify(window.pageSpeedSaverMobile)]), filename) }) }