diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9df6cc6..0f4bbc0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,13 @@
+
+## [1.9.1](https://github.com/showdownjs/showdown/compare/1.9.0...1.9.1) (2019-11-02)
+
+
+### Bug Fixes
+
+* **openLinksInNewWindow:** add rel="noopener noreferrer" to links ([1cd281f](https://github.com/showdownjs/showdown/commit/1cd281f)), closes [#670](https://github.com/showdownjs/showdown/issues/670)
+
+
+
# [1.9.0](https://github.com/showdownjs/showdown/compare/1.8.7...1.9.0) (2018-11-10)
diff --git a/dist/showdown.js b/dist/showdown.js
index b6809fd..7fc44af 100644
Binary files a/dist/showdown.js and b/dist/showdown.js differ
diff --git a/dist/showdown.min.js b/dist/showdown.min.js
index f21c30e..fb64306 100644
Binary files a/dist/showdown.min.js and b/dist/showdown.min.js differ
diff --git a/package.json b/package.json
index bc9ca72..af6fef3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "showdown",
- "version": "1.9.0",
+ "version": "1.9.1",
"description": "A Markdown to HTML converter written in Javascript",
"author": "Estevão Santos",
"homepage": "http://showdownjs.com/",
diff --git a/src/converter.js b/src/converter.js
index bf11cc9..4eaec0e 100644
--- a/src/converter.js
+++ b/src/converter.js
@@ -45,10 +45,10 @@ showdown.Converter = function (converterOptions) {
*/
setConvFlavor = setFlavor,
- /**
- * Metadata of the document
- * @type {{parsed: {}, raw: string, format: string}}
- */
+ /**
+ * Metadata of the document
+ * @type {{parsed: {}, raw: string, format: string}}
+ */
metadata = {
parsed: {},
raw: '',
@@ -107,7 +107,7 @@ showdown.Converter = function (converterOptions) {
'Please inform the developer that the extension should be updated!');
legacyExtensionLoading(showdown.extensions[ext], ext);
return;
- // END LEGACY SUPPORT CODE
+ // END LEGACY SUPPORT CODE
} else if (!showdown.helper.isUndefined(extensions[ext])) {
ext = extensions[ext];
diff --git a/src/helpers.js b/src/helpers.js
index ff9d433..acf3630 100644
--- a/src/helpers.js
+++ b/src/helpers.js
@@ -394,7 +394,7 @@ showdown.helper.padEnd = function padEnd (str, targetLength, padString) {
* POLYFILLS
*/
// use this instead of builtin is undefined for IE8 compatibility
-if (typeof(console) === 'undefined') {
+if (typeof console === 'undefined') {
console = {
warn: function (msg) {
'use strict';
diff --git a/src/subParsers/anchors.js b/src/subParsers/anchors.js
index 1971c38..efa2954 100644
--- a/src/subParsers/anchors.js
+++ b/src/subParsers/anchors.js
@@ -66,7 +66,7 @@ showdown.subParser('anchors', function (text, options, globals) {
// normal cases
text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g,
- writeAnchorTag);
+ writeAnchorTag);
// handle reference-style shortcuts: [link text]
// These must come last in case you've also got [link test][1]
diff --git a/src/subParsers/codeSpans.js b/src/subParsers/codeSpans.js
index 090234d..59fe694 100644
--- a/src/subParsers/codeSpans.js
+++ b/src/subParsers/codeSpans.js
@@ -28,7 +28,7 @@ showdown.subParser('codeSpans', function (text, options, globals) {
text = globals.converter._dispatch('codeSpans.before', text, options, globals);
- if (typeof(text) === 'undefined') {
+ if (typeof text === 'undefined') {
text = '';
}
text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,
diff --git a/src/subParsers/hashHTMLBlocks.js b/src/subParsers/hashHTMLBlocks.js
index b16b103..43e38b5 100644
--- a/src/subParsers/hashHTMLBlocks.js
+++ b/src/subParsers/hashHTMLBlocks.js
@@ -70,7 +70,7 @@ showdown.subParser('hashHTMLBlocks', function (text, options, globals) {
//2. Split the text in that position
var subTexts = showdown.helper.splitAtIndex(text, opTagPos),
- //3. Match recursively
+ //3. Match recursively
newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');
// prevent an infinite loop
diff --git a/src/subParsers/headers.js b/src/subParsers/headers.js
index 2d0e8a3..b08c4d7 100644
--- a/src/subParsers/headers.js
+++ b/src/subParsers/headers.js
@@ -5,13 +5,13 @@ showdown.subParser('headers', function (text, options, globals) {
var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),
- // Set text-style headers:
- // Header 1
- // ========
- //
- // Header 2
- // --------
- //
+ // Set text-style headers:
+ // Header 1
+ // ========
+ //
+ // Header 2
+ // --------
+ //
setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm,
setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm;
diff --git a/src/subParsers/tables.js b/src/subParsers/tables.js
index ff79830..1f3e956 100644
--- a/src/subParsers/tables.js
+++ b/src/subParsers/tables.js
@@ -6,7 +6,7 @@ showdown.subParser('tables', function (text, options, globals) {
}
var tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm,
- //singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm;
+ //singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm;
singeColTblRgx = /^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm;
function parseStyles (sLine) {