From 496c0224b473107502e8c6fdb91e9b0ba0b1b928 Mon Sep 17 00:00:00 2001 From: dugite-code Date: Tue, 21 Aug 2018 13:21:07 +0800 Subject: [PATCH 1/9] Thunderbird 60 Fixes - CSS for the preference dialogs has moved - NsISupportsString in setComplexValue() has been dropped in favour of setStringPref() - Thunderbird 60 refusing explicit decliration of option type 1 in install.rdf --- src/common/options-store.js | 14 ++-- .../chrome/content/background-services.js | 72 +++++++++++++------ src/firefox/chrome/content/options.xul | 1 + src/install.rdf | 1 - 4 files changed, 61 insertions(+), 27 deletions(-) diff --git a/src/common/options-store.js b/src/common/options-store.js index b741d833..447d8af5 100644 --- a/src/common/options-store.js +++ b/src/common/options-store.js @@ -327,10 +327,16 @@ var MozillaOptionsStore = { } try { - prefsObj[prefKeys[i]] = window.JSON.parse( - extPrefsBranch.getComplexValue( - prefKeys[i], - Components.interfaces.nsISupportsString).data); + if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { + prefsObj[prefKeys[i]] = window.JSON.parse( + extPrefsBranch.getComplexValue( + prefKeys[i], + Components.interfaces.nsISupportsString).data); + } else { + prefsObj[prefKeys[i]] = window.JSON.parse( + extPrefsBranch.getStringPref( + prefKeys[i])); + } } catch(e) { // Null values and empty strings will result in JSON exceptions diff --git a/src/firefox/chrome/content/background-services.js b/src/firefox/chrome/content/background-services.js index aff59a59..45d92cbe 100644 --- a/src/firefox/chrome/content/background-services.js +++ b/src/firefox/chrome/content/background-services.js @@ -16,12 +16,10 @@ * No additional processing is done, like filling in default values. */ - (function() { "use strict"; /*global Components:false, AddonManager:false, markdown_here:false*/ /*jshint devel:true*/ - var scriptLoader, imports = {}; // See comment in ff-overlay.js for info about module loading. @@ -151,10 +149,16 @@ function prefsAccessRequestHandler(request) { } try { - prefsObj[prefKeys[i]] = JSON.parse( - extPrefsBranch.getComplexValue( - prefKeys[i], - Components.interfaces.nsISupportsString).data); + if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { + prefsObj[prefKeys[i]] = JSON.parse( + extPrefsBranch.getComplexValue( + prefKeys[i], + Components.interfaces.nsISupportsString).data); + } else { + prefsObj[prefKeys[i]] = JSON.parse( + extPrefsBranch.getStringPref( + prefKeys[i])); + } } catch(e) { // Null values and empty strings will result in JSON exceptions @@ -167,10 +171,16 @@ function prefsAccessRequestHandler(request) { else if (request.verb === 'set') { for (var key in request.obj) { supportString.data = JSON.stringify(request.obj[key]); - extPrefsBranch.setComplexValue( - key, - Components.interfaces.nsISupportsString, - supportString); + if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { + extPrefsBranch.setComplexValue( + key, + Components.interfaces.nsISupportsString, + supportString); + } else { + extPrefsBranch.setStringPref( + key, + supportString.data); + } } return; @@ -227,10 +237,16 @@ function updateHandler(currVer) { var lastVersion = ''; try { - lastVersion = JSON.parse( - extPrefsBranch.getComplexValue( - 'last-version', - Components.interfaces.nsISupportsString).data); + if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { + lastVersion = JSON.parse( + extPrefsBranch.getComplexValue( + 'last-version', + Components.interfaces.nsISupportsString).data); + } else { + lastVersion = JSON.parse( + extPrefsBranch.getStringPref( + 'last-version')); + } } catch (ex) { } @@ -239,17 +255,29 @@ function updateHandler(currVer) { var localFirstRun = !extPrefsBranch.prefHasUserValue('local-first-run'); supportString.data = JSON.stringify(false); - extPrefsBranch.setComplexValue( - 'local-first-run', - Components.interfaces.nsISupportsString, - supportString); - - if (currVer !== lastVersion) { - supportString.data = JSON.stringify(currVer); + if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { extPrefsBranch.setComplexValue( - 'last-version', + 'local-first-run', Components.interfaces.nsISupportsString, supportString); + } else { + extPrefsBranch.setStringPref( + 'local-first-run', + supportString.data); + } + + if (currVer !== lastVersion) { + supportString.data = JSON.stringify(currVer); + if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { + extPrefsBranch.setComplexValue( + 'last-version', + Components.interfaces.nsISupportsString, + supportString); + } else { + extPrefsBranch.setStringPref( + 'local-first-run', + supportString.data); + } // Set the preference sync flags while we're at it. diff --git a/src/firefox/chrome/content/options.xul b/src/firefox/chrome/content/options.xul index d585f67c..19257a27 100644 --- a/src/firefox/chrome/content/options.xul +++ b/src/firefox/chrome/content/options.xul @@ -2,6 +2,7 @@ + resource://markdown_here_common/images/icon128.png https://github.com/adam-p/markdown-here - 1 chrome://markdown_here/content/options.xul From e4075637edd44491df2ed75e07c0cb35b6312805 Mon Sep 17 00:00:00 2001 From: dugite-code Date: Tue, 21 Aug 2018 13:38:26 +0800 Subject: [PATCH 2/9] fix last-version key name --- src/firefox/chrome/content/background-services.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/firefox/chrome/content/background-services.js b/src/firefox/chrome/content/background-services.js index 45d92cbe..75270803 100644 --- a/src/firefox/chrome/content/background-services.js +++ b/src/firefox/chrome/content/background-services.js @@ -275,7 +275,7 @@ function updateHandler(currVer) { supportString); } else { extPrefsBranch.setStringPref( - 'local-first-run', + 'last-version', supportString.data); } From 1d0d3878ed1b63ceb0d33856c626194758501e6f Mon Sep 17 00:00:00 2001 From: dugite-code Date: Tue, 21 Aug 2018 14:07:47 +0800 Subject: [PATCH 3/9] Sign CLA --- contributors/dugite-code.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 contributors/dugite-code.md diff --git a/contributors/dugite-code.md b/contributors/dugite-code.md new file mode 100644 index 00000000..dd3ed1a5 --- /dev/null +++ b/contributors/dugite-code.md @@ -0,0 +1,9 @@ +2018-08-21 + +I hereby agree to the terms of the "Markdown Here Individual Contributor License Agreement", commit 5bb51a296ed5b0d941ac381420a19ed02886ae21. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Dugite-Code https://github.com/dugite-code \ No newline at end of file From c151c4e6bc3cb4c3e26fb67d333abc236ce6382c Mon Sep 17 00:00:00 2001 From: Adam Pritchard Date: Mon, 3 Sep 2018 14:34:36 -0400 Subject: [PATCH 4/9] Refactor Thunderbird prefs getting/setting --- src/common/options-store.js | 120 ++++++++---------- src/common/utils.js | 91 ++++++++++++- .../chrome/content/background-services.js | 93 +++----------- src/install.rdf | 5 +- 4 files changed, 156 insertions(+), 153 deletions(-) diff --git a/src/common/options-store.js b/src/common/options-store.js index 447d8af5..1df85b05 100644 --- a/src/common/options-store.js +++ b/src/common/options-store.js @@ -303,85 +303,65 @@ var MozillaOptionsStore = { // directly. Unfortunately, this means duplicating some code from the background // service. _sendRequest: function(data, callback) { // analogue of chrome.runtime.sendMessage - var extPrefsBranch, supportString, prefKeys, prefsObj, request, sender, i; - - try { - extPrefsBranch = window.Components.classes['@mozilla.org/preferences-service;1'] - .getService(Components.interfaces.nsIPrefService) - .getBranch('extensions.markdown-here.'); - supportString = Components.classes["@mozilla.org/supports-string;1"] - .createInstance(Components.interfaces.nsISupportsString); - - if (data.verb === 'get') { - prefKeys = extPrefsBranch.getChildList(''); - prefsObj = {}; - - for (i = 0; i < prefKeys.length; i++) { - // All of our legitimate prefs should be strings, but issue #237 suggests - // that things may sometimes get into a bad state. We will check and delete - // and prefs that aren't strings. - // https://github.com/adam-p/markdown-here/issues/237 - if (extPrefsBranch.getPrefType(prefKeys[i]) !== extPrefsBranch.PREF_STRING) { - extPrefsBranch.clearUserPref(prefKeys[i]); - continue; - } + var privileged, prefsBranch, prefKeys, prefsObj, i; - try { - if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { - prefsObj[prefKeys[i]] = window.JSON.parse( - extPrefsBranch.getComplexValue( - prefKeys[i], - Components.interfaces.nsISupportsString).data); - } else { - prefsObj[prefKeys[i]] = window.JSON.parse( - extPrefsBranch.getStringPref( - prefKeys[i])); - } - } - catch(e) { - // Null values and empty strings will result in JSON exceptions - prefsObj[prefKeys[i]] = null; - } + privileged = (typeof(Components) !== 'undefined' && typeof(Components.classes) !== 'undefined'); + if (!privileged) { + // This means that this code is being called from a content script. + // We need to send a request from this non-privileged context to the + // privileged background script. + data.action = 'prefs-access'; + Utils.makeRequestToPrivilegedScript( + document, + data, + callback); + + return; + } + + prefsBranch = Components.classes['@mozilla.org/preferences-service;1'] + .getService(Components.interfaces.nsIPrefService) + .getBranch('extensions.markdown-here.'); + + if (data.verb === 'get') { + prefKeys = prefsBranch.getChildList(''); + prefsObj = {}; + + for (i = 0; i < prefKeys.length; i++) { + // All of our legitimate prefs should be strings, but issue #237 suggests + // that things may sometimes get into a bad state. We will check and delete + // and prefs that aren't strings. + // https://github.com/adam-p/markdown-here/issues/237 + if (prefsBranch.getPrefType(prefKeys[i]) !== prefsBranch.PREF_STRING) { + prefsBranch.clearUserPref(prefKeys[i]); + continue; } - callback(prefsObj); - return; + prefsObj[prefKeys[i]] = Utils.getMozJsonPref(prefsBranch, prefKeys[i]); } - else if (data.verb === 'set') { - for (i in data.obj) { - supportString.data = window.JSON.stringify(data.obj[i]); - extPrefsBranch.setComplexValue( - i, - Components.interfaces.nsISupportsString, - supportString); - } - if (callback) callback(); - return; + callback(prefsObj); + return; + } + else if (data.verb === 'set') { + for (i in data.obj) { + Utils.setMozJsonPref(prefsBranch, i, data.obj[i]); } - else if (data.verb === 'clear') { - if (typeof(data.obj) === 'string') { - data.obj = [data.obj]; - } - for (i = 0; i < data.obj.length; i++) { - extPrefsBranch.clearUserPref(data.obj[i]); - } + if (callback) callback(); + return; + } + else if (data.verb === 'clear') { + if (typeof(data.obj) === 'string') { + data.obj = [data.obj]; + } - if (callback) return callback(); - return; + for (i = 0; i < data.obj.length; i++) { + prefsBranch.clearUserPref(data.obj[i]); } - } - catch (ex) { - // This exception was thrown by the Components.classes stuff above, and - // means that this code is being called from a content script. - // We need to send a request from this non-privileged context to the - // privileged background script. - data.action = 'prefs-access'; - Utils.makeRequestToPrivilegedScript( - document, - data, - callback); + + if (callback) return callback(); + return; } } }; diff --git a/src/common/utils.js b/src/common/utils.js index 08257186..46dae091 100644 --- a/src/common/utils.js +++ b/src/common/utils.js @@ -659,6 +659,87 @@ function nextTickFn(callback, context) { } +/*? if(platform==='thunderbird'){ */ + +/** + * Returns the stored preference string for the given key. + * Must only be called from a privileged Mozilla script. + * @param {nsIPrefBranch} prefsBranch + * @param {string} key + * @returns {?string} The preference value. May be null if the preference is not set + * or is null. + */ +function getMozStringPref(prefsBranch, key) { + try { + if (Services.vc.compare(Services.appinfo.platformVersion, '58') < 0) { + return prefsBranch.getComplexValue( + key, + Components.interfaces.nsISupportsString).data; + } + + return prefsBranch.getStringPref(key, null); + } + catch(e) { + // getComplexValue could have thrown an exception because it didn't find the key. As + // with getStringPref, we will default to null. + return null; + } +} + +/** + * Get the stored preference object, JSON-parsed, for the given key. + * Must only be called from a privileged Mozilla script. + * @param {nsIPrefBranch} prefsBranch + * @param {string} key + * @returns {?(object|number|boolean|string)} The preference object (any valid JSON + * type). May be null if the preference is not set or is null. + */ +function getMozJsonPref(prefsBranch, key) { + try { + return JSON.parse(getMozStringPref(prefsBranch, key)); + } + catch(e) { + return null; + } +} + +/** + * Store the preference string for the given key. + * Must only be called from a privileged Mozilla script. + * @param {nsIPrefBranch} prefsBranch + * @param {string} key + * @param {string} value + */ +function setMozStringPref(prefsBranch, key, value) { + var supportString = Components.classes['@mozilla.org/supports-string;1'] + .createInstance(Components.interfaces.nsISupportsString); + + if (Services.vc.compare(Services.appinfo.platformVersion, '58') < 0) { + supportString.data = value; + prefsBranch.setComplexValue( + key, + Components.interfaces.nsISupportsString, + supportString); + } + else { + prefsBranch.setStringPref(key, value); + } +} + +/** + * Store the given object in preferences under the given key. + * Must only be called from a privileged Mozilla script. + * @param {nsIPrefBranch} prefsBranch + * @param {string} key + * @param {?(object|number|boolean|string)} value + */ +function setMozJsonPref(prefsBranch, key, value) { + setMozStringPref(prefsBranch, key, JSON.stringify(value)); +} + +/*? } */ + + /* * i18n/l10n */ @@ -736,7 +817,7 @@ function triggerStringBundleLoadListeners() { } -// Must only be called from a priviledged Mozilla script +// Must only be called from a privileged Mozilla script function getMozStringBundle() { if (typeof(Components) === 'undefined' || typeof(Components.classes) === 'undefined') { return false; @@ -755,7 +836,7 @@ function getMozStringBundle() { // First load the English fallback strings - stringBundle = window.Components.classes["@mozilla.org/intl/stringbundle;1"] + stringBundle = Components.classes["@mozilla.org/intl/stringbundle;1"] .getService(Components.interfaces.nsIStringBundleService) // Notice the explicit locale in this path: .createBundle("resource://markdown_here_locale/en/strings.properties"); @@ -768,7 +849,7 @@ function getMozStringBundle() { // Then load the strings that are overridden for the current locale - stringBundle = window.Components.classes["@mozilla.org/intl/stringbundle;1"] + stringBundle = Components.classes["@mozilla.org/intl/stringbundle;1"] .getService(Components.interfaces.nsIStringBundleService) .createBundle("chrome://markdown_here/locale/strings.properties"); @@ -1172,6 +1253,10 @@ Utils.getTopURL = getTopURL; Utils.nextTick = nextTick; Utils.nextTickFn = nextTickFn; /*? if(platform==='thunderbird'){ */ +Utils.getMozStringPref = getMozStringPref; +Utils.getMozJsonPref = getMozJsonPref; +Utils.setMozStringPref = setMozStringPref; +Utils.setMozJsonPref = setMozJsonPref; Utils.getMozStringBundle = getMozStringBundle; /*? } */ /*? if(platform==='safari'){ */ diff --git a/src/firefox/chrome/content/background-services.js b/src/firefox/chrome/content/background-services.js index 75270803..6eec8d95 100644 --- a/src/firefox/chrome/content/background-services.js +++ b/src/firefox/chrome/content/background-services.js @@ -126,16 +126,14 @@ true); // wantsUntrusted -- needed for communication with content scripts // Access the actual Firefox/Thunderbird stored prefs. function prefsAccessRequestHandler(request) { - var extPrefsBranch, supportString, prefKeys, prefsObj, i; + var prefsBranch, prefKeys, prefsObj, i; - extPrefsBranch = Components.classes['@mozilla.org/preferences-service;1'] + prefsBranch = Components.classes['@mozilla.org/preferences-service;1'] .getService(Components.interfaces.nsIPrefService) .getBranch('extensions.markdown-here.'); - supportString = Components.classes["@mozilla.org/supports-string;1"] - .createInstance(Components.interfaces.nsISupportsString); if (request.verb === 'get') { - prefKeys = extPrefsBranch.getChildList(''); + prefKeys = prefsBranch.getChildList(''); prefsObj = {}; for (i = 0; i < prefKeys.length; i++) { @@ -143,44 +141,19 @@ function prefsAccessRequestHandler(request) { // that things may sometimes get into a bad state. We will check and delete // and prefs that aren't strings. // https://github.com/adam-p/markdown-here/issues/237 - if (extPrefsBranch.getPrefType(prefKeys[i]) !== extPrefsBranch.PREF_STRING) { - extPrefsBranch.clearUserPref(prefKeys[i]); + if (prefsBranch.getPrefType(prefKeys[i]) !== prefsBranch.PREF_STRING) { + prefsBranch.clearUserPref(prefKeys[i]); continue; } - try { - if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { - prefsObj[prefKeys[i]] = JSON.parse( - extPrefsBranch.getComplexValue( - prefKeys[i], - Components.interfaces.nsISupportsString).data); - } else { - prefsObj[prefKeys[i]] = JSON.parse( - extPrefsBranch.getStringPref( - prefKeys[i])); - } - } - catch(e) { - // Null values and empty strings will result in JSON exceptions - prefsObj[prefKeys[i]] = null; - } + prefsObj[prefKeys[i]] = imports.Utils.getMozJsonPref(prefsBranch, prefKeys[i]); } return prefsObj; } else if (request.verb === 'set') { for (var key in request.obj) { - supportString.data = JSON.stringify(request.obj[key]); - if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { - extPrefsBranch.setComplexValue( - key, - Components.interfaces.nsISupportsString, - supportString); - } else { - extPrefsBranch.setStringPref( - key, - supportString.data); - } + imports.Utils.setMozJsonPref(prefsBranch, key, request.obj[key]); } return; @@ -191,7 +164,7 @@ function prefsAccessRequestHandler(request) { } for (i = 0; i < request.obj.length; i++) { - extPrefsBranch.clearUserPref(request.obj[i]); + prefsBranch.clearUserPref(request.obj[i]); } return; @@ -230,54 +203,18 @@ catch (ex) { function updateHandler(currVer) { var prefService = Components.classes['@mozilla.org/preferences-service;1'] .getService(Components.interfaces.nsIPrefService); - var extPrefsBranch = prefService.getBranch('extensions.markdown-here.'); + var prefsBranch = prefService.getBranch('extensions.markdown-here.'); var extSyncBranch = prefService.getBranch('services.sync.prefs.sync.extensions.markdown-here.'); - var supportString = Components.classes["@mozilla.org/supports-string;1"] - .createInstance(Components.interfaces.nsISupportsString); - - var lastVersion = ''; - try { - if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { - lastVersion = JSON.parse( - extPrefsBranch.getComplexValue( - 'last-version', - Components.interfaces.nsISupportsString).data); - } else { - lastVersion = JSON.parse( - extPrefsBranch.getStringPref( - 'last-version')); - } - } - catch (ex) { - } + + var lastVersion = imports.Utils.getMozJsonPref(prefsBranch, 'last-version'); // The presence of this pref indicates that it's not the first run. - var localFirstRun = !extPrefsBranch.prefHasUserValue('local-first-run'); - - supportString.data = JSON.stringify(false); - if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { - extPrefsBranch.setComplexValue( - 'local-first-run', - Components.interfaces.nsISupportsString, - supportString); - } else { - extPrefsBranch.setStringPref( - 'local-first-run', - supportString.data); - } + var localFirstRun = !prefsBranch.prefHasUserValue('local-first-run'); + + imports.Utils.setMozJsonPref(prefsBranch, 'local-first-run', false); if (currVer !== lastVersion) { - supportString.data = JSON.stringify(currVer); - if ( Services.vc.compare(Services.appinfo.platformVersion, '58') < 0 ) { - extPrefsBranch.setComplexValue( - 'last-version', - Components.interfaces.nsISupportsString, - supportString); - } else { - extPrefsBranch.setStringPref( - 'last-version', - supportString.data); - } + imports.Utils.setMozJsonPref(prefsBranch, 'last-version', currVer); // Set the preference sync flags while we're at it. diff --git a/src/install.rdf b/src/install.rdf index cab41794..ec2d3044 100644 --- a/src/install.rdf +++ b/src/install.rdf @@ -30,7 +30,7 @@ toolkit@mozilla.org 6.0 - 54.* + 60.* @@ -152,7 +152,8 @@ resource://markdown_here_common/images/icon128.png https://github.com/adam-p/markdown-here - chrome://markdown_here/content/options.xul + 3 + resource://markdown_here_common/options.html From cade5ea02e6fa39c14853d7576105161dcf4d5d1 Mon Sep 17 00:00:00 2001 From: Adam Pritchard Date: Tue, 11 Sep 2018 20:15:18 -0400 Subject: [PATCH 5/9] Add ability for Thunderbird <= v59 to open options --- src/firefox/chrome/content/ff-overlay.js | 22 +++++++++ src/firefox/chrome/content/options.xul | 58 ----------------------- src/firefox/chrome/content/tb-overlay.xul | 9 ++++ 3 files changed, 31 insertions(+), 58 deletions(-) delete mode 100644 src/firefox/chrome/content/options.xul diff --git a/src/firefox/chrome/content/ff-overlay.js b/src/firefox/chrome/content/ff-overlay.js index aad5a5e3..f845e328 100644 --- a/src/firefox/chrome/content/ff-overlay.js +++ b/src/firefox/chrome/content/ff-overlay.js @@ -78,6 +78,19 @@ var markdown_here = { markdown_here.onMenuItemCommand(e); }, + // Called by the "open options" menuitem that's used by older versions of Thunderbird. + // Look for "#495" below to see when it's enabled. + openOptionsTab: function(e) { + var url = 'resource://markdown_here_common/options.html'; + var windowMediator = Components.classes['@mozilla.org/appshell/window-mediator;1'] + .getService(Components.interfaces.nsIWindowMediator); + + windowMediator.getMostRecentWindow('mail:3pane') + .document.getElementById('tabmail') + .openTab('contentTab', {contentPage: url}); + windowMediator.getMostRecentWindow('mail:3pane').focus(); + }, + // NOTE: Thunderbird seems to reuse compose windows, so this will only get // called for every addtion new open message. Like, if a message is opened // and send and another message is opened, this will only get called once. @@ -112,6 +125,15 @@ var markdown_here = { // initialization code this.initialized = true; + // Only show the open-options menu item if we're on a version of Thunderbird where + // the options page won't open via the usual means (see #495). + var tbirdWithOptionsProblems = + (navigator.userAgent.indexOf('Thunderbird') >= 0 || navigator.userAgent.indexOf('Icedove') >= 0) && + (Services.vc.compare(Services.appinfo.platformVersion, '59') < 0); + if (tbirdWithOptionsProblems) { + document.getElementById('tools-menu-markdown_here-open-options').hidden = false; + } + contextMenu = document.getElementById('contentAreaContextMenu'); if (!contextMenu) contextMenu = document.getElementById('msgComposeContext'); contextMenu.addEventListener('popupshowing', function (e) { diff --git a/src/firefox/chrome/content/options.xul b/src/firefox/chrome/content/options.xul deleted file mode 100644 index 19257a27..00000000 --- a/src/firefox/chrome/content/options.xul +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/firefox/chrome/content/tb-overlay.xul b/src/firefox/chrome/content/tb-overlay.xul index 01d12468..f5c213bd 100644 --- a/src/firefox/chrome/content/tb-overlay.xul +++ b/src/firefox/chrome/content/tb-overlay.xul @@ -30,4 +30,13 @@ oncommand="markdown_here.onToolbarButtonCommand(event)" /> + + + + + + From d16a0d9fef154d7ddd3d5c5b4caa22d01033965f Mon Sep 17 00:00:00 2001 From: Adam Pritchard Date: Tue, 11 Sep 2018 21:21:39 -0400 Subject: [PATCH 6/9] Add prompt to help old-Thunderbird users find open-options menu item --- README.md | 10 +++------- src/common/options.js | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9cc0daa5..70fe9595 100644 --- a/README.md +++ b/README.md @@ -178,16 +178,12 @@ See the [Compatibility wiki page](https://github.com/adam-p/markdown-here/wiki/C ## Building the Extension Bundles -"Building" is really just zipping. Create all archives relative to the `src` directory. - -Before zipping, delete the `src/common/test` directory. This will prevent the autotests from ending up in the release. - -An important preparatory step is to remove any system-generated hidden files that shouldn't be included in the release file (like Windows' `desktop.ini` and OS X's `.DS_Store`, etc.). This shell command will delete those unwanted files: - ``` -find . -name "desktop.ini" -or -name ".*" -and -not -name "." -and -not -name ".git*" -print0 | xargs -0 rm -rf +cd utils +node build.js ``` + ### Chrome and Opera extension Create a file with a `.zip` extension containing these files and directories: diff --git a/src/common/options.js b/src/common/options.js index 65b9c674..e64ca58c 100644 --- a/src/common/options.js +++ b/src/common/options.js @@ -71,6 +71,7 @@ function onLoad() { // Restore previously set options (asynchronously) // + var optionsGetSuccessful = false; OptionsStore.get(function(prefs) { cssEdit.value = prefs['main-css']; cssSyntaxEdit.value = prefs['syntax-css']; @@ -93,6 +94,8 @@ function onLoad() { // Start watching for changes to the styles. setInterval(checkChange, 100); + + optionsGetSuccessful = true; }); // Load the changelist section @@ -125,6 +128,17 @@ function onLoad() { } }); + // Older Thunderbird may try to open this options page in a new ChromeWindow, and it + // won't work. So in that case we need to tell the user how they can actually open the + // options page. This is pretty ungraceful, but few users will encouter it, and fewer as + // time goes on. + setTimeout(function() { + if (!optionsGetSuccessful) { + alert('It looks like you are running an older version of Thunderird.\nOpen the Markdown Here Options via the message window Tools menu.'); + window.close(); + } + }, 500); + loaded = true; } document.addEventListener('DOMContentLoaded', onLoad, false); From 0982ef4d012a674ba7dbe3f519227f67094b2133 Mon Sep 17 00:00:00 2001 From: Adam Pritchard Date: Tue, 11 Sep 2018 21:33:29 -0400 Subject: [PATCH 7/9] Fix #495. Add changelist item. --- src/common/CHANGES.md | 55 +++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/src/common/CHANGES.md b/src/common/CHANGES.md index 414c4fb3..894de95d 100644 --- a/src/common/CHANGES.md +++ b/src/common/CHANGES.md @@ -1,9 +1,12 @@ Change Log ========== -2017-xx-yy: v2.13.3 +2018-09-11: v2.13.3 -------------------- +* [Fixed bug #495](https://github.com/adam-p/markdown-here/issues/495): Markdown Here stopped working in Thunderbird version 60 (due to changes in Thunderbird). + - Thanks to [dugite-code](https://github.com/dugite-code) for the [PR](https://github.com/adam-p/markdown-here/pull/518) to fix it. Also thanks to: [Marc-Alexandre Espiaut](https://github.com/marespiaut), [Tehmul Ghyara](https://github.com/tehmul), [Pedro Silva](https://github.com/pmanu93), [PackElend](https://github.com/PackElend), [qolii](https://github.com/qolii), [Francisco Pina-Martins](https://github.com/StuntsPT), [evazquez00](https://github.com/evazquez00). + * [Fixed bug #435](https://github.com/adam-p/markdown-here/issues/435): On some pages, Markdown Here would spew cross-origin exceptions to the console. This was due to MDH trying to determine if a focused iframe-within-an-iframe was renderable. - Thanks to [lincoln-b](https://github.com/lincoln-b) for reporting it. @@ -40,13 +43,13 @@ Change Log - Thanks to [Dave Tapley](https://github.com/dukedave) for creating a great video that illustrated the problem and how to reproduce it. - Repeatedly triggering this bug could also lead to the next bug... -* [Fixed bug #289](https://github.com/adam-p/markdown-here/issues/289): With forgot-to-render detection enabled, sending a large email could result in MDH causing the mail client to hang. +* [Fixed bug #289](https://github.com/adam-p/markdown-here/issues/289): With forgot-to-render detection enabled, sending a large email could result in MDH causing the mail client to hang. - Thanks to [r2evans](https://github.com/r2evans), [Dave Tapley](https://github.com/dukedave), and [Eugene Fryntov](https://github.com/efryntov) for reporting and helping to diagnose the problem. Also thanks to [georg](https://stackoverflow.com/users/989121/georg) on StackOverflow for helping me to [understand and improve](https://stackoverflow.com/questions/31952381/end-of-string-regex-match-too-slow) the offending regex. * [Fixed bug #283](https://github.com/adam-p/markdown-here/issues/283): Forgot-to-render detection was broken for Google Inbox. Thanks to [Marvin R.](https://github.com/therealmarv). - If you find that the forgot-to-render detection gets broken for the Gmail or Google Inbox web interfaces, please post to the ["markdown-here" Google Group](https://groups.google.com/group/markdown-here) or create [an issue in the Github project](https://github.com/adam-p/markdown-here/issues). The MDH code that hooks into the webmail UI is brittle and might break when Google changes stuff. -* [Fixed bug #288](https://github.com/adam-p/markdown-here/issues/288): Some character combinations involving a dollar sign in inline code would render incorrectly. +* [Fixed bug #288](https://github.com/adam-p/markdown-here/issues/288): Some character combinations involving a dollar sign in inline code would render incorrectly. - Thanks to [rfulkerson](https://github.com/rfulkerson) for reporting the problem. * Updated and new translations: @@ -92,11 +95,11 @@ Change Log - **Note**: In order to get this styling change, you will need to [reset your Primary Styling CSS](https://github.com/adam-p/markdown-here/wiki/Troubleshooting#getting-the-latest-primary-styling-css). - Thanks to [James F McMahon](https://github.com/JamesMcMahon) for reporting the issue. -* Changed styling of sub-ordered-lists to match Github's: Top level is still numbers, first sub level is Roman letters, second sub level is Roman numerals. Will make your email lists look totally pro. +* Changed styling of sub-ordered-lists to match Github's: Top level is still numbers, first sub level is Roman letters, second sub level is Roman numerals. Will make your email lists look totally pro. - **Note**: In order to get this styling change, you will need to [reset your Primary Styling CSS](https://github.com/adam-p/markdown-here/wiki/Troubleshooting#getting-the-latest-primary-styling-css). - Thanks to [Andrew Greenberg](https://github.com/wizardwerdna) for [pointing out](https://github.com/adam-p/markdown-here/issues/255) Github's styling, and an unnamed user in a [Google Groups post](https://groups.google.com/forum/#!topic/markdown-here/E-5tSHCAlpg) who also asked about list styling. -* [Fixed bug #237](https://github.com/adam-p/markdown-here/issues/237): Made Mozilla preferences handling more robust. Helps to deal with non-ANSI characters, synchronization, and corruption. +* [Fixed bug #237](https://github.com/adam-p/markdown-here/issues/237): Made Mozilla preferences handling more robust. Helps to deal with non-ANSI characters, synchronization, and corruption. - Thanks to [flying-sheep](https://github.com/flying-sheep) for reporting the corruption problem and helping to diagnose it. * Added and updated translations: @@ -125,7 +128,7 @@ Change Log 2014-11-10: v2.11.3 ------------------- -* **Improved compatibilty with screen readers**. Much thanks to [Sofian Babai](https://twitter.com/sofquipeut) for reporting the problem and helping to solve it. The primary fix target was Windows+Thunderbird+NVDA, but if anyone finds any cases where the fix is incomplete, please describe the scenario in the [Github issue](https://github.com/adam-p/markdown-here/issues/222) for it. +* **Improved compatibilty with screen readers**. Much thanks to [Sofian Babai](https://twitter.com/sofquipeut) for reporting the problem and helping to solve it. The primary fix target was Windows+Thunderbird+NVDA, but if anyone finds any cases where the fix is incomplete, please describe the scenario in the [Github issue](https://github.com/adam-p/markdown-here/issues/222) for it. - Thanks also to [Sukil Echenique](https://github.com/sukiletxe) for reporting the [original issue](https://github.com/adam-p/markdown-here/issues/185). * [Fixed bug #223](https://github.com/adam-p/markdown-here/issues/223): Keyboard shortcut was not working in Gmail on Firefox. @@ -150,10 +153,10 @@ Change Log - Thanks to everyone who reported this and helped diagnose it: [Ryan Heaton](https://github.com/stoicflame) (who [originally reported the bug](https://groups.google.com/forum/#!topic/markdown-here/ikXFqkP77Ws)), [darickard](https://github.com/darickard), [JacobEvelyn](https://github.com/JacobEvelyn), [Lennaick](https://github.com/lennaick), [Sherwood Botsford](https://plus.google.com/u/0/+SherwoodBotsford), [Cyrus David](https://github.com/vohof), and [iagobozza](https://github.com/iagobozza), who [shared a screencast](https://github.com/adam-p/markdown-here/issues/189) that finally provided a reproduction scenario and allowed us to figure out the bug. * **Added support for "retina"** (high PPI) displays. The Markdown Here icons should now be nice and crisp. Closes [issue #205](https://github.com/adam-p/markdown-here/issues/205). - - Caveats: + - Caveats: - There doesn't seem to be a way to specify a high-res icon for Chrome's context menu item. - Postbox just doesn't seem to work. I don't think there's a regression, though. - - I don't actually own any fancy retina-display computers, so... please create an issue if something is broken. + - I don't actually own any fancy retina-display computers, so... please create an issue if something is broken. - Thanks to [Alexandru Nedelcu](https://github.com/alexandru) for requesting this. * [Fixed bug #202](https://github.com/adam-p/markdown-here/issues/202): In Options page, Markdown preview wasn't initially rendering. @@ -188,11 +191,11 @@ Change Log 2014-05-17: v2.11.0 ------------------- -* Added ability to **de-render after saving**. After you render and save an **email draft** or an **Evernote** Note or a **Google Group post** or a **Blogger post** (or etc.), you can go back, edit it, and de-render it back to Markdown. +* Added ability to **de-render after saving**. After you render and save an **email draft** or an **Evernote** Note or a **Google Group post** or a **Blogger post** (or etc.), you can go back, edit it, and de-render it back to Markdown. * Fixes [#85](https://github.com/adam-p/markdown-here/issues/85) and [#86](https://github.com/adam-p/markdown-here/issues/86). Thanks to [Alfredo Canziani](https://github.com/Atcold), [HU, Pili](https://github.com/hupili), [Dima Tisnek](https://github.com/dimaqq), [dayer4b](https://github.com/dayer4b), [Bryan Cribbs](https://github.com/bdcribbs), [jmerlevede](https://github.com/jmerlevede), [portmantoad](https://github.com/portmantoad), and [Kurtis Rainbolt-Greene](https://github.com/krainboltgreene) for reporting the issue, suggesting solutions, and helping to test. * Deets for geeks: Below the rendered MD, in the same wrapper `div`, there is now a `div` with its `title` attribute set to the original MD (base64), containing a zero-width space, and styled to be zero-height. This delightful hack was the best combination of factors that ensured the raw MD would survive. -* Added a partial Korean translation, thanks to [dotvezz](https://crowdin.net/profile/dotvezz). +* Added a partial Korean translation, thanks to [dotvezz](https://crowdin.net/profile/dotvezz). * **Do you speak something in addition to English?** [At least half](https://addons.mozilla.org/en-US/firefox/addon/markdown-here/statistics/usage/languages/?last=30) of all Markdown Here users are not English, but Japanese is the only complete translation we have. **It's easy to help with translations** -- just try out the [Crowdin project for Markdown Here](https://crowdin.net/project/markdown-here). Thanks! * Added ability to disable GFM line breaks. @@ -239,7 +242,7 @@ Change Log 2013-10-27: v2.9.3 ------------------ -* New feature: Added support for **smart arrows**. Here's how to use them: +* New feature: Added support for **smart arrows**. Here's how to use them: * `<--` ← * `-->` → * `<-->` ↔ @@ -273,7 +276,7 @@ Change Log ------------------ * [Fixed bug](https://github.com/adam-p/markdown-here/issues/112): If a bad language name was used for a code block (where "bad" might even just be "SQL" vs. "sql"), rendering would break. Language name case is now ignored. - * Thanks to [Chris/jhwarehouse](https://github.com/jhwarehouse) for reporting the bug and helping to investigate. + * Thanks to [Chris/jhwarehouse](https://github.com/jhwarehouse) for reporting the bug and helping to investigate. * [Fixed bug](https://github.com/adam-p/markdown-here/issues/116): Markdown Here wasn't working on Postbox. Thanks to Branden C. for letting me know. @@ -367,7 +370,7 @@ Added support for [**Opera**](http://www.opera.com)! Get it [here](https://addon 2013-03-05: v2.7.3 ------------------ -* Fixed Firefox+Linux bug ([#56](https://github.com/adam-p/markdown-here/issues/56)): Toolbar button icon was not displaying correctly. +* Fixed Firefox+Linux bug ([#56](https://github.com/adam-p/markdown-here/issues/56)): Toolbar button icon was not displaying correctly. * Thanks to users [ynoxia](https://github.com/ynoxia) and [jljouannic](https://github.com/jljouannic) for reporting the bug. * Fixed Firefox bug: Toolbar button would not stay removed when browser was restarted. * Added support for Icedove (Debian version of Thunderbird). @@ -395,8 +398,8 @@ Added support for [**Opera**](http://www.opera.com)! Get it [here](https://addon * Smarter lists: Have you ever had a numbered list mysteriously/annoyingly become a bullet list because it comes after one? Not anymore. * GFM line breaks: If you put a line break in your Markdown, it will be a line break after you toggle, instead of joining to form a single line. This closes [issue #12](https://github.com/adam-p/markdown-here/issues/12). -* Added a **Markdown Toggle button** to complement the context menu item and hotkey. - * In Chrome and Firefox, this button will appear on the browser toolbar. It will be enabled when you're typing in a compose box that Markdown Here can work with. +* Added a **Markdown Toggle button** to complement the context menu item and hotkey. + * In Chrome and Firefox, this button will appear on the browser toolbar. It will be enabled when you're typing in a compose box that Markdown Here can work with. * You might notice the button enabled when you're typing in places other than your email page -- try it out! You might discover that Markdown Here works somewhere new. If you do, please [add it to the compatibility wiki](https://github.com/adam-p/markdown-here/wiki/Compatibility). * In Thunderbird and Postbox the appears on the formatting toolbar. * In Firefox, Thunderbird, and Postbox you can add/remove/move the button by right-clicking on the toolbar, clicking "Customize", and then dragging the button around. In Chrome you can remove it by right-click on it. @@ -427,7 +430,7 @@ Added support for [**Opera**](http://www.opera.com)! Get it [here](https://addon 2012-10-06: v2.6.2 ------------------ -* Firefox/Thunderbird: [Fixed bug](https://github.com/adam-p/markdown-here/issues/31): Tabbing into the email body and then Markdown-Toggling via keyboard (i.e., never clicking the mouse in the message body) would result in the email body being lost when sent. +* Firefox/Thunderbird: [Fixed bug](https://github.com/adam-p/markdown-here/issues/31): Tabbing into the email body and then Markdown-Toggling via keyboard (i.e., never clicking the mouse in the message body) would result in the email body being lost when sent. * This is due to [a bug in Firefox/Thunderbird](https://bugzilla.mozilla.org/show_bug.cgi?id=740813). * Discovered Wordpress post compatibility, thanks to user [Sina Iravanian](https://plus.google.com/116422808039109985732/posts). ([See details](https://github.com/adam-p/markdown-here/wiki/Compatibility).) @@ -435,11 +438,11 @@ Added support for [**Opera**](http://www.opera.com)! Get it [here](https://addon 2012-09-09: v2.6.1 ------------------ -* Added hot-key (keyboard shortcut) support. The default key combination is ctrl+alt+m, but it is configurable from the Markdown Here options. Using the hot-key is identical to using the "Markdown Toggle" context menu item. +* Added hot-key (keyboard shortcut) support. The default key combination is ctrl+alt+m, but it is configurable from the Markdown Here options. Using the hot-key is identical to using the "Markdown Toggle" context menu item. * Added basic support for the [Postbox](http://www.postbox-inc.com/) desktop email client, at the [request of a user](https://github.com/adam-p/markdown-here/issues/30). There are [some significant caveats](https://github.com/adam-p/markdown-here/wiki/Compatibility), like the lack of an options page. -* Fixed [bug](https://github.com/adam-p/markdown-here/issues/27): Gmail and Thunderbird reply exclusion wasn't working well, resulting in quoted replies getting messed up when doing a full (non-selection) rendering. +* Fixed [bug](https://github.com/adam-p/markdown-here/issues/27): Gmail and Thunderbird reply exclusion wasn't working well, resulting in quoted replies getting messed up when doing a full (non-selection) rendering. * Fixed: In Chrome on OS X, right-clicking on a word causes it to be selected. If "Markdown Toggle" were then clicked, it would render just that one word, which is lame. This behaviour is now avoided by not rendering single word selections -- if a single word is selected, the entire content will be rendered instead. @@ -448,11 +451,11 @@ Added support for [**Opera**](http://www.opera.com)! Get it [here](https://addon 2012-08-29: v2.6.0 ------------------ -* Added support for TeX math formulae. For info check out the Options page. +* Added support for TeX math formulae. For info check out the Options page. * Note that this feature is disabled by default, due to privacy concerns. Again, the see the Options page for info. * Thanks to [bordaigorl](https://github.com/bordaigorl) for [suggesting this feature](https://github.com/adam-p/markdown-here/issues/26) and helping to implement it. -* Firefox/Thunderbird: Added Options page. (Chrome already had it.) Take a look around and play with the styles. +* Firefox/Thunderbird: Added Options page. (Chrome already had it.) Take a look around and play with the styles. * Added a few new syntax highlighting themes. (Thanks to Highlight.js.) @@ -499,25 +502,25 @@ Added support for [**Opera**](http://www.opera.com)! Get it [here](https://addon 1. Format *after* Markdown-Toggling. Note that any changes -- including formatting -- made to rendered text will be lost if you toggle back to Markdown. So only do your additional formatting after you're happy with the rest. 2. Add inline HTML with the desired formatting. * In your Markdown, you can use `` or ``, etc., to explicitly style your text. For example: - + ``` Here is some *big red* highlighting. ``` * If you find you use inline tags with complex styles a lot, edit the CSS in the options to add a class that you can reuse for your inline tags. For example, in the CSS add: - + ``` .bigred { background-color: red; font-size: 2em; } ``` - + And then in your Markdown: ``` Here is some *big red* highlighting. ``` - + - It saddens me to remove out this feature, but I think it's essentially creeping featurism that has a higher bug-danger-cost than it has an actually-useful-benefit. If this feature is/was important to you, please create an issue to let me know. 2012-06-20: v2.3.1 @@ -528,13 +531,13 @@ Added support for [**Opera**](http://www.opera.com)! Get it [here](https://addon 2012-06-20: v2.3.0 ------------------ -* Works with Google Groups posts! You can use it either in the GG rich compose box, or when sending posts via email. +* Works with Google Groups posts! You can use it either in the GG rich compose box, or when sending posts via email. * Added support for inline, pre-rendered images. Some email editors allow the user to drag-and-drop an image into an email body, and some allow users to select one from their computer or the web (or an emoticon in the email compose controls!). Previously, the image would be lost when a "Markdown Toggle" was done. Now the image will be retained. * Pre-formatted text (colours, italics, bold, etc.), links, and lists (made using the email client rich edit controls, for example) are now left intact when rendering the Markdown. -* Added ability to convert a reply email in its entirety, rather than using the select-and-convert piecemeal approach. +* Added ability to convert a reply email in its entirety, rather than using the select-and-convert piecemeal approach. - This doesn't work with Yahoo and Hotmail, because they don't seem to quote the original email. - Resolves issue #14. From 79e02bfcb0e02af41704c22bc3ab2caf78be811e Mon Sep 17 00:00:00 2001 From: Adam Pritchard Date: Tue, 11 Sep 2018 21:46:35 -0400 Subject: [PATCH 8/9] Bump version in manifests And copy over some linting stuff from the defunct xul branch. --- .eslintrc.json | 177 +++++++++++++++ src/common/options.js | 14 +- .../chrome/content/background-services.js | 2 +- src/install.rdf | 2 +- src/manifest.json | 2 +- utils/package-lock.json | 213 ++++++++++++++++++ 6 files changed, 400 insertions(+), 10 deletions(-) create mode 100644 .eslintrc.json create mode 100644 utils/package-lock.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..887c7b26 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,177 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "sourceType": "module" + }, + + "rules": { + "accessor-pairs": "error", + "arrow-spacing": ["error", { "before": true, "after": true }], + "block-spacing": ["error", "always"], + "brace-style": ["error", "stroustrup", { "allowSingleLine": true }], + "camelcase": ["error", { "properties": "never" }], + "comma-dangle": ["error", { + "arrays": "never", + "objects": "never", + "imports": "never", + "exports": "never", + "functions": "never" + }], + "comma-spacing": ["error", { "before": false, "after": true }], + "comma-style": ["error", "last"], + "constructor-super": "error", + "curly": ["error", "multi-line"], + "dot-location": ["error", "property"], + "eol-last": "error", + "eqeqeq": ["error", "always", { "null": "ignore" }], + "func-call-spacing": ["error", "never"], + "generator-star-spacing": ["error", { "before": true, "after": true }], + "handle-callback-err": ["error", "^(err|error)$" ], + "indent": ["error", 2, { "SwitchCase": 1 }], + "key-spacing": ["error", { "beforeColon": false, "afterColon": true }], + "keyword-spacing": ["error", { "before": true, "after": true }], + "new-cap": ["error", { "newIsCap": true, "capIsNew": false }], + "new-parens": "error", + "no-array-constructor": "error", + "no-caller": "error", + "no-class-assign": "error", + "no-compare-neg-zero": "error", + "no-cond-assign": "error", + "no-const-assign": "error", + "no-constant-condition": ["error", { "checkLoops": false }], + "no-control-regex": "error", + "no-debugger": "error", + "no-delete-var": "error", + "no-dupe-args": "error", + "no-dupe-class-members": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-empty-character-class": "error", + "no-empty-pattern": "error", + "no-eval": "error", + "no-ex-assign": "error", + "no-extend-native": "error", + "no-extra-bind": "error", + "no-extra-boolean-cast": "error", + "no-extra-parens": ["error", "functions"], + "no-fallthrough": "error", + "no-floating-decimal": "error", + "no-func-assign": "error", + "no-global-assign": "error", + "no-implied-eval": "error", + "no-inner-declarations": ["error", "functions"], + "no-invalid-regexp": "error", + "no-irregular-whitespace": "error", + "no-iterator": "error", + "no-label-var": "error", + "no-labels": ["error", { "allowLoop": false, "allowSwitch": false }], + "no-lone-blocks": "error", + "no-mixed-operators": ["error", { + "groups": [ + ["==", "!=", "===", "!==", ">", ">=", "<", "<="], + ["&&", "||"], + ["in", "instanceof"] + ], + "allowSamePrecedence": true + }], + "no-mixed-spaces-and-tabs": "error", + "no-multi-spaces": "error", + "no-multi-str": "error", + "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0 }], + "no-negated-in-lhs": "error", + "no-new": "error", + "no-new-func": "error", + "no-new-object": "error", + "no-new-require": "error", + "no-new-symbol": "error", + "no-new-wrappers": "error", + "no-obj-calls": "error", + "no-octal": "error", + "no-octal-escape": "error", + "no-path-concat": "error", + "no-proto": "error", + "no-redeclare": "error", + "no-regex-spaces": "error", + "no-return-assign": ["error", "except-parens"], + "no-return-await": "error", + "no-self-assign": "error", + "no-self-compare": "error", + "no-sequences": "error", + "no-shadow-restricted-names": "error", + "no-sparse-arrays": "error", + "no-tabs": "error", + "no-template-curly-in-string": "error", + "no-this-before-super": "error", + "no-throw-literal": "error", + "no-trailing-spaces": "error", + "no-undef": "error", + "no-undef-init": "error", + "no-unexpected-multiline": "error", + "no-unmodified-loop-condition": "error", + "no-unneeded-ternary": ["error", { "defaultAssignment": false }], + "no-unreachable": "error", + "no-unsafe-finally": "error", + "no-unsafe-negation": "error", + "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true, "allowTaggedTemplates": true }], + "no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": true }], + "no-use-before-define": ["error", { "functions": false, "classes": false, "variables": false }], + "no-useless-call": "error", + "no-useless-computed-key": "error", + "no-useless-constructor": "error", + "no-useless-escape": "error", + "no-useless-rename": "error", + "no-useless-return": "error", + "no-whitespace-before-property": "error", + "no-with": "error", + "object-property-newline": ["error", { "allowMultiplePropertiesPerLine": true }], + "one-var": ["error", { "initialized": "never" }], + "operator-linebreak": ["error", "after", { "overrides": { "?": "before", ":": "before" } }], + "padded-blocks": ["error", { "blocks": "never", "switches": "never", "classes": "never" }], + "prefer-promise-reject-errors": "error", + "quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": true }], + "rest-spread-spacing": ["error", "never"], + "semi": ["error", "always"], + "semi-spacing": ["error", { "before": false, "after": true }], + "space-before-blocks": ["error", "always"], + "space-before-function-paren": 0,//["error", "always"], + "space-in-parens": ["error", "never"], + "space-infix-ops": "error", + "space-unary-ops": ["error", { "words": true, "nonwords": false }], + "spaced-comment": ["error", "always", { + "line": { "markers": ["*package", "!", "/", ","] }, + "block": { "balanced": true, "markers": ["*package", "!", ",", ":", "::", "flow-include"], "exceptions": ["*"] } + }], + "symbol-description": "error", + "template-curly-spacing": ["error", "never"], + "template-tag-spacing": ["error", "never"], + "unicode-bom": ["error", "never"], + "use-isnan": "error", + "valid-typeof": ["error", { "requireStringLiterals": true }], + "wrap-iife": ["error", "any", { "functionPrototypeMethods": true }], + "yield-star-spacing": ["error", "both"], + "yoda": ["error", "never"], + + "import/export": "error", + "import/first": "error", + "import/no-duplicates": "error", + "import/no-webpack-loader-syntax": "error", + + "node/no-deprecated-api": "error", + "node/process-exit-as-throw": "error", + + "promise/param-names": "error", + + "standard/array-bracket-even-spacing": ["error", "either"], + "standard/computed-property-even-spacing": ["error", "even"], + "standard/no-callback-literal": "error", + "standard/object-curly-even-spacing": ["error", "either"] + } +} diff --git a/src/common/options.js b/src/common/options.js index e64ca58c..05e9e920 100644 --- a/src/common/options.js +++ b/src/common/options.js @@ -4,19 +4,19 @@ */ "use strict"; -/*jshint browser:true, jquery:true, sub:true */ -/*global OptionsStore:false, chrome:false, markdownRender:false, - htmlToText:false, marked:false, hljs:false, markdownHere:false, Utils:false, - MdhHtmlToText:false */ +/* jshint browser:true, jquery:true, sub:true */ +/* eslint-env jquery */ +/* global OptionsStore:false, chrome:false, marked:false, markdownHere:false, Utils:false, + MdhHtmlToText:false */ /* * Main script file for the options page. */ var cssEdit, cssSyntaxEdit, cssSyntaxSelect, rawMarkdownIframe, savedMsg, - mathEnable, mathEdit, hotkeyShift, hotkeyCtrl, hotkeyAlt, hotkeyKey, - forgotToRenderCheckEnabled, headerAnchorsEnabled, gfmLineBreaksEnabled, - loaded = false; + mathEnable, mathEdit, hotkeyShift, hotkeyCtrl, hotkeyAlt, hotkeyKey, + forgotToRenderCheckEnabled, headerAnchorsEnabled, gfmLineBreaksEnabled; +var loaded = false; function onLoad() { var xhr; diff --git a/src/firefox/chrome/content/background-services.js b/src/firefox/chrome/content/background-services.js index 6eec8d95..33aca627 100644 --- a/src/firefox/chrome/content/background-services.js +++ b/src/firefox/chrome/content/background-services.js @@ -48,7 +48,7 @@ document.addEventListener(imports.Utils.PRIVILEGED_REQUEST_EVENT_NAME, function( var node, doc, request, responseEventName, responseCallback, asyncResponseCallback; node = event.target; - if (!node || node.nodeType != node.TEXT_NODE) { + if (!node || node.nodeType !== node.TEXT_NODE) { return; } diff --git a/src/install.rdf b/src/install.rdf index ec2d3044..a1842333 100644 --- a/src/install.rdf +++ b/src/install.rdf @@ -5,7 +5,7 @@ 2 markdown-here@adam.pritchard - 2.13.0 + 2.13.3 diff --git a/src/manifest.json b/src/manifest.json index d1382bd6..256b9685 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_app_name__", - "version": "2.13.1", + "version": "2.13.3", "description": "__MSG_app_slogan__", "homepage_url": "http://markdown-here.com", "default_locale": "en", diff --git a/utils/package-lock.json b/utils/package-lock.json new file mode 100644 index 00000000..fdc80d6f --- /dev/null +++ b/utils/package-lock.json @@ -0,0 +1,213 @@ +{ + "name": "markdown-here-utils", + "version": "0.0.0", + "lockfileVersion": 1, + "dependencies": { + "archiver": { + "version": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=" + }, + "archiver-utils": { + "version": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=" + }, + "argparse": { + "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=" + }, + "ascli": { + "version": "https://registry.npmjs.org/ascli/-/ascli-0.3.0.tgz", + "integrity": "sha1-XmYjDlIZ/j6JUqTvtPIPrllqgTo=" + }, + "async": { + "version": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=" + }, + "autolinker": { + "version": "https://registry.npmjs.org/autolinker/-/autolinker-0.15.3.tgz", + "integrity": "sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=" + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "bl": { + "version": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=" + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + }, + "buffer-crc32": { + "version": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-shims": { + "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "colour": { + "version": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "compress-commons": { + "version": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz", + "integrity": "sha1-WFhwku8g03y1i68AARLJJ4/3O58=" + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "crc": { + "version": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", + "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=" + }, + "crc32-stream": { + "version": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=" + }, + "end-of-stream": { + "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=" + }, + "file": { + "version": "https://registry.npmjs.org/file/-/file-0.2.2.tgz", + "integrity": "sha1-w9/Y+M81Na5FXCtCPC5SY112tNM=" + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=" + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "lazystream": { + "version": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=" + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "markdown-it": { + "version": "https://registry.npmjs.org/markdown-it/-/markdown-it-3.0.7.tgz", + "integrity": "sha1-GgCjLaFHK52hx5NeFdZD8NESWnA=" + }, + "metascript": { + "version": "https://registry.npmjs.org/metascript/-/metascript-1.0.0.tgz", + "integrity": "sha1-k2oWnn/yq325+u6MdfvC58/As/U=", + "dependencies": { + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=" + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=" + } + } + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=" + }, + "normalize-path": { + "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + }, + "optjs": { + "version": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=" + }, + "remove-trailing-separator": { + "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz", + "integrity": "sha1-YV67lq9VlVLUv0BXyENtSGq2PMQ=" + }, + "safe-buffer": { + "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + }, + "sigmund": { + "version": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "sprintf-js": { + "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + }, + "tar-stream": { + "version": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=" + }, + "uc.micro": { + "version": "https://registry.npmjs.org/uc.micro/-/uc.micro-0.1.0.tgz", + "integrity": "sha1-7aESHR/blhVO1v3oJHu724MzCMo=" + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "walkdir": { + "version": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=" + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "zip-stream": { + "version": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.1.1.tgz", + "integrity": "sha1-Uha0i7tNJlH2TVxubwnrSnOZ1Vc=" + } + } +} From ff5f1dbc98b00c09d27252f03007ddb34d6642fb Mon Sep 17 00:00:00 2001 From: Adam Pritchard Date: Wed, 12 Sep 2018 20:34:39 -0400 Subject: [PATCH 9/9] Fix some problems blocking Tbird extension submission --- .eslintrc.json | 2 +- src/install.rdf | 10 +- utils/build.js | 13 +- utils/package-lock.json | 426 ++++++++++++++++++++++++++++++++-------- utils/package.json | 4 +- 5 files changed, 356 insertions(+), 99 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 887c7b26..8145e40c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -85,7 +85,7 @@ "no-mixed-spaces-and-tabs": "error", "no-multi-spaces": "error", "no-multi-str": "error", - "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0 }], + "no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 0 }], "no-negated-in-lhs": "error", "no-new": "error", "no-new-func": "error", diff --git a/src/install.rdf b/src/install.rdf index a1842333..55a13de6 100644 --- a/src/install.rdf +++ b/src/install.rdf @@ -7,21 +7,21 @@ markdown-here@adam.pritchard 2.13.3 + - {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 11.0 49.* - + - postbox@postbox-inc.com - 2.0 - 5.* + {3550f703-e582-4d05-9a08-453d09bdfdc6} + 6.0 + 60.* diff --git a/utils/build.js b/utils/build.js index 9b726311..9274aab3 100644 --- a/utils/build.js +++ b/utils/build.js @@ -7,7 +7,6 @@ "use strict"; var fs = require('fs'); -var path = require('path'); var file = require('file'); var archiver = require('archiver'); var MetaScript = require('MetaScript'); @@ -60,16 +59,18 @@ function fnameMatch(fpath, inputArray) { // Add a file to the Chrome extension zip function addBuildFile(platformName, zip, fullPath, zipPath) { + var fileContents; + // For the Mozilla extensions in particular, we need to do some preprocessing on JavaScript files // in order to exclude code specific to other platforms. if (javascriptFileRegex.test(fullPath)) { - var fileContents = fs.readFileSync(fullPath); + fileContents = fs.readFileSync(fullPath); fileContents = MetaScript.transform(fileContents, {platform: platformName}); zip.append(fileContents, { name: zipPath }); } else if (platformName === CHROME_PLATFORM && manifestJsonFileRegex.test(fullPath)) { // Remove the Firefox-specific stuff from manifest.json when building for Chrome. - var fileContents = fs.readFileSync(fullPath, {encoding: 'utf8'}); + fileContents = fs.readFileSync(fullPath, {encoding: 'utf8'}); fileContents = fileContents.replace(/,"applications":[^{]*{[^{]*{[^}]*}[^}]*}/m, ''); zip.append(fileContents, { name: zipPath }); } @@ -96,8 +97,8 @@ function setUpZips() { } var chromeZip = new archiver('zip'); // Chrome will reject the zip if there's no compression - var firefoxZip = new archiver('zip', {store: true}); - var thunderbirdZip = new archiver('zip', {store: true}); + var firefoxZip = new archiver('zip'); + var thunderbirdZip = new archiver('zip'); // addons.thunderbird.net rejects the xpi if there's no compression chromeZip.on('error', function(err) { console.log('chromeZip error:', err); @@ -121,7 +122,7 @@ function setUpZips() { return { chrome: chromeZip, firefox: firefoxZip, - thunderbird: thunderbirdZip, + thunderbird: thunderbirdZip }; } diff --git a/utils/package-lock.json b/utils/package-lock.json index fdc80d6f..88d40dfe 100644 --- a/utils/package-lock.json +++ b/utils/package-lock.json @@ -2,212 +2,468 @@ "name": "markdown-here-utils", "version": "0.0.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "archiver": { - "version": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.0.0.tgz", + "integrity": "sha512-5QeR6Xc5hSA9X1rbQfcuQ6VZuUXOaEdB65Dhmk9duuRJHYif/ZyJfuyJqsQrj34PFjU5emv5/MmfgA8un06onw==", + "requires": { + "archiver-utils": "^2.0.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^2.0.1" + } }, "archiver-utils": { - "version": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.0.0.tgz", + "integrity": "sha512-JRBgcVvDX4Mwu2RBF8bBaHcQCSxab7afsxAPYDQ5W+19quIPP5CfKE7Ql+UHs9wYvwsaNR8oDuhtf5iqrKmzww==", + "requires": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash.assign": "^4.2.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.toarray": "^4.4.0", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + } }, "argparse": { - "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "~1.0.2" + } }, "ascli": { - "version": "https://registry.npmjs.org/ascli/-/ascli-0.3.0.tgz", - "integrity": "sha1-XmYjDlIZ/j6JUqTvtPIPrllqgTo=" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-0.3.0.tgz", + "integrity": "sha1-XmYjDlIZ/j6JUqTvtPIPrllqgTo=", + "requires": { + "colour": "^0.7.1", + "optjs": "^3.2.2" + } }, "async": { - "version": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } }, "autolinker": { - "version": "https://registry.npmjs.org/autolinker/-/autolinker-0.15.3.tgz", + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.15.3.tgz", "integrity": "sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=" }, "balanced-match": { - "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, "bl": { - "version": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } }, "brace-expansion": { - "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, "buffer-crc32": { - "version": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" }, - "buffer-shims": { - "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, "colour": { - "version": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" }, "compress-commons": { - "version": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz", - "integrity": "sha1-WFhwku8g03y1i68AARLJJ4/3O58=" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "requires": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } }, "concat-map": { - "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "core-util-is": { - "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "crc": { - "version": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", - "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=" + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "requires": { + "buffer": "^5.1.0" + } }, "crc32-stream": { - "version": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "requires": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + } }, "end-of-stream": { - "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } }, "file": { - "version": "https://registry.npmjs.org/file/-/file-0.2.2.tgz", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/file/-/file-0.2.2.tgz", "integrity": "sha1-w9/Y+M81Na5FXCtCPC5SY112tNM=" }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs.realpath": { - "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=" + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } }, "graceful-fs": { - "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + }, "inflight": { - "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } }, "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "isarray": { - "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "lazystream": { - "version": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } }, "lodash": { - "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" }, "lru-cache": { - "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" }, "markdown-it": { - "version": "https://registry.npmjs.org/markdown-it/-/markdown-it-3.0.7.tgz", - "integrity": "sha1-GgCjLaFHK52hx5NeFdZD8NESWnA=" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-3.0.7.tgz", + "integrity": "sha1-GgCjLaFHK52hx5NeFdZD8NESWnA=", + "requires": { + "argparse": "~ 1.0.0", + "autolinker": "~ 0.15.2", + "uc.micro": "~ 0.1.0" + } }, "metascript": { - "version": "https://registry.npmjs.org/metascript/-/metascript-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/metascript/-/metascript-1.0.0.tgz", "integrity": "sha1-k2oWnn/yq325+u6MdfvC58/As/U=", + "requires": { + "ascli": "~0.3", + "glob": "~3.2" + }, "dependencies": { "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=" + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2", + "minimatch": "0.3" + } }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } } } }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } }, "normalize-path": { - "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "once": { - "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } }, "optjs": { - "version": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" }, "path-is-absolute": { - "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { - "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=" + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, "remove-trailing-separator": { - "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz", - "integrity": "sha1-YV67lq9VlVLUv0BXyENtSGq2PMQ=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "safe-buffer": { - "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "sigmund": { - "version": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" }, "sprintf-js": { - "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "string_decoder": { - "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } }, "tar-stream": { - "version": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", - "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz", + "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.0", + "xtend": "^4.0.0" + } + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, "uc.micro": { - "version": "https://registry.npmjs.org/uc.micro/-/uc.micro-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-0.1.0.tgz", "integrity": "sha1-7aESHR/blhVO1v3oJHu724MzCMo=" }, "util-deprecate": { - "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "walkdir": { - "version": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=" - }, "wrappy": { - "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "xtend": { - "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "zip-stream": { - "version": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.1.1.tgz", - "integrity": "sha1-Uha0i7tNJlH2TVxubwnrSnOZ1Vc=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.0.1.tgz", + "integrity": "sha512-c+eUhhkDpaK87G/py74wvWLtz2kzMPNCCkUApkun50ssE0oQliIQzWpTnwjB+MTKVIf2tGzIgHyqW/Y+W77ecQ==", + "requires": { + "archiver-utils": "^2.0.0", + "compress-commons": "^1.2.0", + "readable-stream": "^2.0.0" + } } } } diff --git a/utils/package.json b/utils/package.json index 9f8a8a48..9243d38a 100644 --- a/utils/package.json +++ b/utils/package.json @@ -3,9 +3,9 @@ "version": "0.0.0", "private": true, "dependencies": { - "archiver": "*", + "archiver": "^3.0.0", "file": "*", - "glob": "^7.1.2", + "glob": "^7.1.3", "markdown-it": "~3.0.5", "metascript": "~1.0.0" }