diff --git a/README.md b/README.md index c4cffb3..d45f238 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # usertiming-compression.js -v0.1.8 +v0.1.9 [http://nicj.net](http://nicj.net) @@ -262,6 +262,7 @@ Or via ``gulp``: * v0.1.6 - 2018-11-21: Changed build process to produce UMD (for Node/require) and "Vanilla" (for Browser) files in `dist/` * v0.1.7 - 2018-11-21: Ensure `dist/` is published in bower * v0.1.8 - 2018-11-21: Also include `*.vanilla.js` in NPM +* v0.1.9 - 2019-09-17: Fix: Compression on Trie nodes that are prefixes of another ## Thanks diff --git a/bower.json b/bower.json index 844c6d4..5e5e1a7 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "usertiming-compression", - "version": "0.1.8", + "version": "0.1.9", "homepage": "https://github.com/nicjansma/usertiming-compression.js", "authors": [ "Nic Jansma " diff --git a/dist/usertiming-compression.min.js b/dist/usertiming-compression.min.js index 6bca765..0d24a2a 100644 --- a/dist/usertiming-compression.min.js +++ b/dist/usertiming-compression.min.js @@ -1 +1 @@ -!function(r){"use strict";var e,n;void 0!==r?(e=r,n=e.UserTimingCompression):e={};var t,i=t={};i.noConflict=function(){return e.UserTimingCompression=n,i},i.trimTiming=function(r,e){"number"!=typeof r&&(r=0),"number"!=typeof e&&(e=0);var n=Math.round(r),t=Math.round(e);return 0===n?0:n-t},i.toBase36=function(r){return"number"==typeof r?r.toString(36):""},i.findUserTimingForFrame=function(r){var e;if(!r)return[];try{r.location&&r.location.href;if(!("performance"in r&&r.performance&&r.performance.getEntriesByType))return e;e=r.performance.getEntriesByType("mark"),e=e.concat(r.performance.getEntriesByType("measure"))}catch(r){return e}return e},i.compressUserTiming=function(r,e){var n,i,o,a=0,u={};if(e=e||{},!r||!r.length)return[];for(n=0;n0?(n+=(""!==n?".":"")+i+"*",e>=2&&(n+=e+1),e=0):n+=(""!==n?".":"")+i}return/^\d+$/.test(n)?parseInt(n,10):n},i.getCompressedUserTiming=function(e){var n,i;return e=e||{},n=e.window||r,i=this.findUserTimingForFrame(n),e.from&&(i=i.filter(function(r){return r.startTime+r.duration>=e.from})),e.to&&(i=i.filter(function(r){return r.startTime<=e.to})),t.compressUserTiming(i,e)},i.compressForUri=function(r){if("object"!=typeof r)return"";var e=!1;for(var n in r)if(r.hasOwnProperty(n)){if(isNaN(n)){e=!1;break}e=!0}if(e)return"1"+t.flattenMap(r);var i=t.convertToTrie(r),o=t.optimizeTrie(i,!0),a=t.jsUrl(o),u=t.flattenArray(r);if("string"!=typeof u||0===u.length)return"";var f=encodeURIComponent(a),s=encodeURIComponent(u);return f.length1331)continue;o.length>1&&(o=t.toBase36(i-36),o="-"+(1===o.length?"0":"")+o),e.push(o+r[n])}return e.sort(),e=e.join("~")},i.jsUrl=function(r){function e(r){return/[^\w-.]/.test(r)?r=r.replace(/[^\w-.]/g,function(r){return"$"===r?"!":(r=r.charCodeAt(0),r<256?"*"+("00"+r.toString(16)).slice(-2):"**"+("0000"+r.toString(16)).slice(-4))}):r}switch(typeof r){case"number":return isFinite(r)?"~"+r:"~null";case"string":return"~'"+e(r);case"boolean":return"~"+r;case"object":return r?Array.isArray(r)?"~("+(r.map(function(r){return t.jsUrl(r)||"~null"}).join("")||"~")+")":"~("+Object.keys(r).map(function(n){var i=t.jsUrl(r[n]);return i&&e(n)+i}).filter(function(r){return r}).sort().join("~")+")":"~null";default:return}},"function"==typeof define&&define.amd?define([],function(){return i}):"undefined"!=typeof module&&module.exports?module.exports=i:void 0!==e&&(e.UserTimingCompression=i)}("undefined"!=typeof window?window:void 0); \ No newline at end of file +!function(r){"use strict";var e,n;void 0!==r?(e=r,n=e.UserTimingCompression):e={};var t,i=t={};i.noConflict=function(){return e.UserTimingCompression=n,i},i.trimTiming=function(r,e){"number"!=typeof r&&(r=0),"number"!=typeof e&&(e=0);var n=Math.round(r),t=Math.round(e);return 0===n?0:n-t},i.toBase36=function(r){return"number"==typeof r?r.toString(36):""},i.findUserTimingForFrame=function(r){var e;if(!r)return[];try{r.location&&r.location.href;if(!("performance"in r&&r.performance&&r.performance.getEntriesByType))return e;e=r.performance.getEntriesByType("mark"),e=e.concat(r.performance.getEntriesByType("measure"))}catch(r){return e}return e},i.compressUserTiming=function(r,e){var n,i,o,a=0,u={};if(e=e||{},!r||!r.length)return[];for(n=0;n0?(n+=(""!==n?".":"")+i+"*",e>=2&&(n+=e+1),e=0):n+=(""!==n?".":"")+i}return/^\d+$/.test(n)?parseInt(n,10):n},i.getCompressedUserTiming=function(e){var n,i;return e=e||{},n=e.window||r,i=this.findUserTimingForFrame(n),e.from&&(i=i.filter(function(r){return r.startTime+r.duration>=e.from})),e.to&&(i=i.filter(function(r){return r.startTime<=e.to})),t.compressUserTiming(i,e)},i.compressForUri=function(r){if("object"!=typeof r)return"";var e=!1;for(var n in r)if(r.hasOwnProperty(n)){if(isNaN(n)){e=!1;break}e=!0}if(e)return"1"+t.flattenMap(r);var i=t.convertToTrie(r),o=t.optimizeTrie(i,!0),a=t.jsUrl(o),u=t.flattenArray(r);if("string"!=typeof u||0===u.length)return"";var f=encodeURIComponent(a),s=encodeURIComponent(u);return f.length1331)continue;o.length>1&&(o=t.toBase36(i-36),o="-"+(1===o.length?"0":"")+o),e.push(o+r[n])}return e.sort(),e=e.join("~")},i.jsUrl=function(r){function e(r){return/[^\w-.]/.test(r)?r=r.replace(/[^\w-.]/g,function(r){return"$"===r?"!":(r=r.charCodeAt(0),r<256?"*"+("00"+r.toString(16)).slice(-2):"**"+("0000"+r.toString(16)).slice(-4))}):r}switch(typeof r){case"number":return isFinite(r)?"~"+r:"~null";case"string":return"~'"+e(r);case"boolean":return"~"+r;case"object":return r?Array.isArray(r)?"~("+(r.map(function(r){return t.jsUrl(r)||"~null"}).join("")||"~")+")":"~("+Object.keys(r).map(function(n){var i=t.jsUrl(r[n]);return i&&e(n)+i}).filter(function(r){return r}).sort().join("~")+")":"~null";default:return}},"function"==typeof define&&define.amd?define([],function(){return i}):"undefined"!=typeof module&&module.exports?module.exports=i:void 0!==e&&(e.UserTimingCompression=i)}("undefined"!=typeof window?window:void 0); \ No newline at end of file diff --git a/dist/usertiming-compression.vanilla.min.js b/dist/usertiming-compression.vanilla.min.js index 92353b9..35fcdcd 100644 --- a/dist/usertiming-compression.vanilla.min.js +++ b/dist/usertiming-compression.vanilla.min.js @@ -1 +1 @@ -!function(r){"use strict";var e,n;void 0!==r?(e=r,n=e.UserTimingCompression):e={};var t,i=t={};i.noConflict=function(){return e.UserTimingCompression=n,i},i.trimTiming=function(r,e){"number"!=typeof r&&(r=0),"number"!=typeof e&&(e=0);var n=Math.round(r),t=Math.round(e);return 0===n?0:n-t},i.toBase36=function(r){return"number"==typeof r?r.toString(36):""},i.findUserTimingForFrame=function(r){var e;if(!r)return[];try{r.location&&r.location.href;if(!("performance"in r&&r.performance&&r.performance.getEntriesByType))return e;e=r.performance.getEntriesByType("mark"),e=e.concat(r.performance.getEntriesByType("measure"))}catch(r){return e}return e},i.compressUserTiming=function(r,e){var n,i,o,a=0,u={};if(e=e||{},!r||!r.length)return[];for(n=0;n0?(n+=(""!==n?".":"")+i+"*",e>=2&&(n+=e+1),e=0):n+=(""!==n?".":"")+i}return/^\d+$/.test(n)?parseInt(n,10):n},i.getCompressedUserTiming=function(e){var n,i;return e=e||{},n=e.window||r,i=this.findUserTimingForFrame(n),e.from&&(i=i.filter(function(r){return r.startTime+r.duration>=e.from})),e.to&&(i=i.filter(function(r){return r.startTime<=e.to})),t.compressUserTiming(i,e)},i.compressForUri=function(r){if("object"!=typeof r)return"";var e=!1;for(var n in r)if(r.hasOwnProperty(n)){if(isNaN(n)){e=!1;break}e=!0}if(e)return"1"+t.flattenMap(r);var i=t.convertToTrie(r),o=t.optimizeTrie(i,!0),a=t.jsUrl(o),u=t.flattenArray(r);if("string"!=typeof u||0===u.length)return"";var f=encodeURIComponent(a),s=encodeURIComponent(u);return f.length1331)continue;o.length>1&&(o=t.toBase36(i-36),o="-"+(1===o.length?"0":"")+o),e.push(o+r[n])}return e.sort(),e=e.join("~")},i.jsUrl=function(r){function e(r){return/[^\w-.]/.test(r)?r=r.replace(/[^\w-.]/g,function(r){return"$"===r?"!":(r=r.charCodeAt(0),r<256?"*"+("00"+r.toString(16)).slice(-2):"**"+("0000"+r.toString(16)).slice(-4))}):r}switch(typeof r){case"number":return isFinite(r)?"~"+r:"~null";case"string":return"~'"+e(r);case"boolean":return"~"+r;case"object":return r?Array.isArray(r)?"~("+(r.map(function(r){return t.jsUrl(r)||"~null"}).join("")||"~")+")":"~("+Object.keys(r).map(function(n){var i=t.jsUrl(r[n]);return i&&e(n)+i}).filter(function(r){return r}).sort().join("~")+")":"~null";default:return}},void 0!==e&&(e.UserTimingCompression=i)}("undefined"!=typeof window?window:void 0); \ No newline at end of file +!function(r){"use strict";var e,n;void 0!==r?(e=r,n=e.UserTimingCompression):e={};var t,i=t={};i.noConflict=function(){return e.UserTimingCompression=n,i},i.trimTiming=function(r,e){"number"!=typeof r&&(r=0),"number"!=typeof e&&(e=0);var n=Math.round(r),t=Math.round(e);return 0===n?0:n-t},i.toBase36=function(r){return"number"==typeof r?r.toString(36):""},i.findUserTimingForFrame=function(r){var e;if(!r)return[];try{r.location&&r.location.href;if(!("performance"in r&&r.performance&&r.performance.getEntriesByType))return e;e=r.performance.getEntriesByType("mark"),e=e.concat(r.performance.getEntriesByType("measure"))}catch(r){return e}return e},i.compressUserTiming=function(r,e){var n,i,o,a=0,u={};if(e=e||{},!r||!r.length)return[];for(n=0;n0?(n+=(""!==n?".":"")+i+"*",e>=2&&(n+=e+1),e=0):n+=(""!==n?".":"")+i}return/^\d+$/.test(n)?parseInt(n,10):n},i.getCompressedUserTiming=function(e){var n,i;return e=e||{},n=e.window||r,i=this.findUserTimingForFrame(n),e.from&&(i=i.filter(function(r){return r.startTime+r.duration>=e.from})),e.to&&(i=i.filter(function(r){return r.startTime<=e.to})),t.compressUserTiming(i,e)},i.compressForUri=function(r){if("object"!=typeof r)return"";var e=!1;for(var n in r)if(r.hasOwnProperty(n)){if(isNaN(n)){e=!1;break}e=!0}if(e)return"1"+t.flattenMap(r);var i=t.convertToTrie(r),o=t.optimizeTrie(i,!0),a=t.jsUrl(o),u=t.flattenArray(r);if("string"!=typeof u||0===u.length)return"";var f=encodeURIComponent(a),s=encodeURIComponent(u);return f.length1331)continue;o.length>1&&(o=t.toBase36(i-36),o="-"+(1===o.length?"0":"")+o),e.push(o+r[n])}return e.sort(),e=e.join("~")},i.jsUrl=function(r){function e(r){return/[^\w-.]/.test(r)?r=r.replace(/[^\w-.]/g,function(r){return"$"===r?"!":(r=r.charCodeAt(0),r<256?"*"+("00"+r.toString(16)).slice(-2):"**"+("0000"+r.toString(16)).slice(-4))}):r}switch(typeof r){case"number":return isFinite(r)?"~"+r:"~null";case"string":return"~'"+e(r);case"boolean":return"~"+r;case"object":return r?Array.isArray(r)?"~("+(r.map(function(r){return t.jsUrl(r)||"~null"}).join("")||"~")+")":"~("+Object.keys(r).map(function(n){var i=t.jsUrl(r[n]);return i&&e(n)+i}).filter(function(r){return r}).sort().join("~")+")":"~null";default:return}},void 0!==e&&(e.UserTimingCompression=i)}("undefined"!=typeof window?window:void 0); \ No newline at end of file diff --git a/package.json b/package.json index 13f21a1..69c3ec3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "usertiming-compression", "description": "UserTiming compression and decompression", "author": "Nic Jansma", - "version": "0.1.8", + "version": "0.1.9", "repository": { "type": "git", "url": "http://github.com/nicjansma/usertiming-compression.js.git"