From 28a89b0a473ac229c6749eb2332e1a5b3e538778 Mon Sep 17 00:00:00 2001 From: Steven Loria Date: Sun, 22 Jul 2018 17:10:45 -0400 Subject: [PATCH] Use remark and rehype directly react-markdown doesn't support transformer plugins (rexxars/react-markdown#188), so we can't use remark-ping with it. My hand-coded @tag plugin was buggy--better to use remark-ping --- package-lock.json | 419 +++++++++++++++++++++++++++++++++-------- package.json | 15 +- rollup.config.js | 2 +- src/CodeBlock.jsx | 20 -- src/Markdown.jsx | 38 ++++ src/get-query-param.js | 10 + src/index.jsx | 28 +-- src/remark-tags.jsx | 9 +- src/standalone.jsx | 1 + 9 files changed, 408 insertions(+), 134 deletions(-) delete mode 100644 src/CodeBlock.jsx create mode 100644 src/Markdown.jsx create mode 100644 src/get-query-param.js diff --git a/package-lock.json b/package-lock.json index 65a92ee..da3cfa2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -185,6 +185,14 @@ } } }, + "@mapbox/hast-util-table-cell-style": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.1.3.tgz", + "integrity": "sha512-QsEsh5YaDvHoMQ2YHdvZy2iDnU3GgKVBTcHf6cILyoWDZtPSdlG444pL/ioPYO/GpXSfODBb9sefEetfC4v9oA==", + "requires": { + "unist-util-visit": "1.3.1" + } + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -446,6 +454,11 @@ "es-abstract": "1.12.0" } }, + "array-iterate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz", + "integrity": "sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ==" + }, "array-map": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", @@ -1425,8 +1438,7 @@ "bail": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", - "dev": true + "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==" }, "balanced-match": { "version": "1.0.0", @@ -1902,6 +1914,11 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "ccount": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", + "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==" + }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -1929,20 +1946,22 @@ "character-entities": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", - "dev": true + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==" + }, + "character-entities-html4": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", + "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==" }, "character-entities-legacy": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", - "dev": true + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==" }, "character-reference-invalid": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", - "dev": true + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==" }, "chardet": { "version": "0.4.2", @@ -2132,8 +2151,7 @@ "collapse-white-space": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", - "dev": true + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==" }, "collection-visit": { "version": "1.0.0", @@ -2232,7 +2250,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz", "integrity": "sha512-Cg90/fcK93n0ecgYTAz1jaA3zvnQ0ExlmKY1rdbyHqAx6BHxwoJc+J7HDu0iuQ7ixEs1qaa+WyQ6oeuBpYP1iA==", - "dev": true, "requires": { "trim": "0.0.1" } @@ -2822,7 +2839,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, "requires": { "foreach": "2.0.5", "object-keys": "1.0.12" @@ -2913,6 +2929,14 @@ "minimalistic-assert": "1.0.1" } }, + "detab": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.1.tgz", + "integrity": "sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ==", + "requires": { + "repeat-string": "1.6.1" + } + }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -3574,8 +3598,7 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "extend-shallow": { "version": "3.0.2", @@ -3714,7 +3737,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", - "dev": true, "requires": { "format": "0.2.2" } @@ -3866,8 +3888,7 @@ "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, "forever-agent": { "version": "0.6.1", @@ -3889,8 +3910,7 @@ "format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", - "dev": true + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" }, "fragment-cache": { "version": "0.2.1", @@ -4831,12 +4851,76 @@ "minimalistic-assert": "1.0.1" } }, + "hast-to-hyperscript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-4.0.0.tgz", + "integrity": "sha512-4kOn4ihjDJTQg7B53ZcZ6NyExtTeG3hLNZv6rSKhq4haQvD52zCllE+49iLiC1VWuc4DbHmt96FHPGlHbslZqQ==", + "requires": { + "comma-separated-tokens": "1.0.5", + "is-nan": "1.2.1", + "kebab-case": "1.0.0", + "property-information": "3.2.0", + "space-separated-tokens": "1.1.2", + "trim": "0.0.1", + "unist-util-is": "2.1.2" + } + }, + "hast-util-is-element": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.1.tgz", + "integrity": "sha512-s/ggaNehYVqmLgTXEv12Lbb72bsOD2r5DhAqPgtDdaI/YFNXVzz0zHFVJnhjIjn7Nak8GbL4nzT2q0RA5div+A==" + }, "hast-util-parse-selector": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.0.tgz", "integrity": "sha512-trw0pqZN7+sH9k7hPWCJNZUbWW2KroSIM/XpIy3G5ZMtx9LSabCyoSp4skJZ4q/eZ5UOBPtvWh4W9c+RE3HRoQ==", "dev": true }, + "hast-util-sanitize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-1.2.0.tgz", + "integrity": "sha512-VwCTqjt6fbMGacxGB1FKV5sBJaVVkyCGVMDwb4nnqvCW2lkqscA2GEpOyBx4ZWRXty1eAZF58MHBrllEoQEoBg==", + "requires": { + "xtend": "4.0.1" + } + }, + "hast-util-to-html": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz", + "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==", + "requires": { + "ccount": "1.0.3", + "comma-separated-tokens": "1.0.5", + "hast-util-is-element": "1.0.1", + "hast-util-whitespace": "1.0.1", + "html-void-elements": "1.0.3", + "property-information": "4.0.3", + "space-separated-tokens": "1.1.2", + "stringify-entities": "1.3.2", + "unist-util-is": "2.1.2", + "xtend": "4.0.1" + }, + "dependencies": { + "property-information": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.0.3.tgz", + "integrity": "sha512-SjrxE2Fxf5sZrMwbPGhjBH029CRVX/2EIHy3+lj9XV7V6Imb3pWlXC7xopGlwAiviBFEwdzplk81Yeivir7mtg==", + "requires": { + "xtend": "4.0.1" + } + } + } + }, + "hast-util-to-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.1.tgz", + "integrity": "sha512-EC6awGe0ZMUNYmS2hMVaKZxvjVtQA4RhXjtgE20AxGG49MM7OUUfaHc6VcVYv2YwzNlrZQGe5teimCxW1Rk+fA==" + }, + "hast-util-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.1.tgz", + "integrity": "sha512-Mfx2ZnmVMTAopZ8as42nKrNt650tCZYhy/MPeO1Imdg/cmCWK6GUSnFrrE3ezGjVifn7x5zMfu8jrjwIGyImSw==" + }, "hastscript": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-3.1.0.tgz", @@ -4867,8 +4951,7 @@ "highlight.js": { "version": "9.12.0", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", - "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", - "dev": true + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" }, "hmac-drbg": { "version": "1.0.1", @@ -4924,6 +5007,11 @@ "whatwg-encoding": "1.0.3" } }, + "html-void-elements": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.3.tgz", + "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==" + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -5055,8 +5143,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", @@ -5181,14 +5268,17 @@ "is-alphabetical": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", - "dev": true + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==" + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=" }, "is-alphanumerical": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", - "dev": true, "requires": { "is-alphabetical": "1.0.2", "is-decimal": "1.0.2" @@ -5203,8 +5293,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -5273,8 +5362,7 @@ "is-decimal": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", - "dev": true + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==" }, "is-descriptor": { "version": "0.1.6", @@ -5361,8 +5449,7 @@ "is-hexadecimal": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", - "dev": true + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" }, "is-installed-globally": { "version": "0.1.0", @@ -5380,6 +5467,14 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-nan": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz", + "integrity": "sha1-n69ltvttskt/XAYoR16nH5iEAeI=", + "requires": { + "define-properties": "1.1.2" + } + }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -5462,8 +5557,7 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-plain-object": { "version": "2.0.4", @@ -5561,8 +5655,7 @@ "is-whitespace-character": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", - "dev": true + "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==" }, "is-windows": { "version": "1.0.2", @@ -5573,8 +5666,7 @@ "is-word-character": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", - "dev": true + "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==" }, "isarray": { "version": "1.0.0", @@ -6911,8 +7003,7 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { "version": "3.12.0", @@ -7043,6 +7134,11 @@ "array-includes": "3.0.3" } }, + "kebab-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/kebab-case/-/kebab-case-1.0.0.tgz", + "integrity": "sha1-P55JkK3K0MaGwOcB92RYaPdfkes=" + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -7825,11 +7921,15 @@ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, + "longest-streak": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", + "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "requires": { "js-tokens": "3.0.2" } @@ -7854,7 +7954,6 @@ "version": "1.9.2", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz", "integrity": "sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==", - "dev": true, "requires": { "fault": "1.0.2", "highlight.js": "9.12.0" @@ -7941,8 +8040,12 @@ "markdown-escapes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", - "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", - "dev": true + "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==" + }, + "markdown-table": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", + "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==" }, "math-expression-evaluator": { "version": "1.2.17", @@ -7966,12 +8069,52 @@ "inherits": "2.0.3" } }, + "mdast-util-compact": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz", + "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=", + "requires": { + "unist-util-modify-children": "1.1.2", + "unist-util-visit": "1.3.1" + } + }, + "mdast-util-definitions": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz", + "integrity": "sha512-9NloPSwaB9f1PKcGqaScfqRf6zKOEjTIXVIbPOmgWI/JKxznlgVXC5C+8qgl3AjYg2vJBRgLYfLICaNiac89iA==", + "requires": { + "unist-util-visit": "1.3.1" + } + }, + "mdast-util-to-hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.1.tgz", + "integrity": "sha512-+eimV/12kdg0/T0EEfcK7IsDbSu2auVm92z5jdSEQ3DHF2HiU4OHmX9ir5wpQajr73nwabdxrUoxREvW2zVFFw==", + "requires": { + "collapse-white-space": "1.0.4", + "detab": "2.0.1", + "mdast-util-definitions": "1.2.2", + "mdurl": "1.0.1", + "trim": "0.0.1", + "trim-lines": "1.1.1", + "unist-builder": "1.0.2", + "unist-util-generated": "1.1.2", + "unist-util-position": "3.0.1", + "unist-util-visit": "1.3.1", + "xtend": "4.0.1" + } + }, "mdn-data": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", "dev": true }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -8708,8 +8851,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -8745,8 +8887,7 @@ "object-keys": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" }, "object-visit": { "version": "1.0.1", @@ -9002,7 +9143,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz", "integrity": "sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg==", - "dev": true, "requires": { "character-entities": "1.2.2", "character-entities-legacy": "1.1.2", @@ -10054,7 +10194,6 @@ "version": "15.6.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", - "dev": true, "requires": { "loose-envify": "1.4.0", "object-assign": "4.1.1" @@ -10063,8 +10202,7 @@ "property-information": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-3.2.0.tgz", - "integrity": "sha1-/RSDyPusYYCPX+NZ52k6H0ilgzE=", - "dev": true + "integrity": "sha1-/RSDyPusYYCPX+NZ52k6H0ilgzE=" }, "prr": { "version": "1.0.1", @@ -10222,6 +10360,15 @@ "prop-types": "15.6.2" } }, + "react-lowlight": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-lowlight/-/react-lowlight-1.1.1.tgz", + "integrity": "sha512-aYUue4qlOOHEa0y4MXuUHOxe9oaO5fFnnTE5Nkw+euNK123+ntFgpnAkPNhbcvkNAI1kglLn+D6SeYNrCWsCIA==", + "requires": { + "lowlight": "1.9.2", + "prop-types": "15.6.2" + } + }, "react-markdown": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-3.3.4.tgz", @@ -10490,11 +10637,39 @@ } } }, + "rehype-highlight": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/rehype-highlight/-/rehype-highlight-2.1.0.tgz", + "integrity": "sha512-JGlR+802TPQUy7fkxTYy/Ivir2KdZKH+onsbkfLb+I9enPB7TMGlluP+ZN66hVMMwPVNzwJxBn8ERoBtSSyNnw==", + "requires": { + "hast-util-to-string": "1.0.1", + "lowlight": "1.9.2", + "unist-util-visit": "1.3.1" + } + }, + "rehype-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-4.0.0.tgz", + "integrity": "sha512-ZWBQg2fW3/75jms314hu4YIqqlAwXdbzpmwd4ez/q4nKA/zKnVUKso0xe6PfGr5Xy5GXpn4uDr9gAYgBXam7vA==", + "requires": { + "hast-util-to-html": "4.0.1", + "xtend": "4.0.1" + } + }, + "remark": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", + "integrity": "sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==", + "requires": { + "remark-parse": "5.0.0", + "remark-stringify": "5.0.0", + "unified": "6.2.0" + } + }, "remark-parse": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", - "dev": true, "requires": { "collapse-white-space": "1.0.4", "is-alphabetical": "1.0.2", @@ -10513,6 +10688,62 @@ "xtend": "4.0.1" } }, + "remark-ping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/remark-ping/-/remark-ping-2.1.2.tgz", + "integrity": "sha512-qxFjTfKObBqnbJjgxBnX/CBlWaFUk9dh+rPtPSonTKAz7jnZX0uZZprq+DzZ1F0f9g3GLAzqRKzcE/3VOlUY8A==", + "requires": { + "unist-util-visit": "1.3.1" + } + }, + "remark-react": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/remark-react/-/remark-react-4.0.3.tgz", + "integrity": "sha512-M2DxXfX8/GK0hV84PUcsvkvb+8yGLdV+krb8mW28eoa9ZgTrhC5rk01EPRMXRNGCAEl3JMDFs+VKdT/FbsN9vg==", + "requires": { + "@mapbox/hast-util-table-cell-style": "0.1.3", + "hast-to-hyperscript": "4.0.0", + "hast-util-sanitize": "1.2.0", + "mdast-util-to-hast": "3.0.1" + } + }, + "remark-react-lowlight": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/remark-react-lowlight/-/remark-react-lowlight-0.7.0.tgz", + "integrity": "sha512-gSs9vgln8CXh3Vi3QLys+djrEz6eKqPX3XDQRbGi804BDC4wlP0cxizvQg2ALDDWlh+be6g+gfseyXwA1AOmug==", + "requires": { + "react-lowlight": "1.1.1" + } + }, + "remark-rehype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-3.0.0.tgz", + "integrity": "sha512-WUinfb6vi34f4VYs2XS4HvuYNd0tCu68HOlG4aMp1dfFyVuVfL3aiL9WPw+Q6W99xTTHyxwr7BGO94jF0psoEA==", + "requires": { + "mdast-util-to-hast": "3.0.1" + } + }, + "remark-stringify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-5.0.0.tgz", + "integrity": "sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==", + "requires": { + "ccount": "1.0.3", + "is-alphanumeric": "1.0.0", + "is-decimal": "1.0.2", + "is-whitespace-character": "1.0.2", + "longest-streak": "2.0.2", + "markdown-escapes": "1.0.2", + "markdown-table": "1.1.2", + "mdast-util-compact": "1.0.1", + "parse-entities": "1.1.2", + "repeat-string": "1.6.1", + "state-toggle": "1.0.1", + "stringify-entities": "1.3.2", + "unherit": "1.1.1", + "xtend": "4.0.1" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -10528,8 +10759,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", @@ -10543,8 +10773,7 @@ "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" }, "request": { "version": "2.87.0", @@ -13542,7 +13771,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.2.tgz", "integrity": "sha512-G3jprCEw+xFEs0ORweLmblJ3XLymGGr6hxZYTYZjIlvDti9vOBUjRQa1Rzjt012aRrocKstHwdNi+F7HguPsEA==", - "dev": true, "requires": { "trim": "0.0.1" } @@ -13641,8 +13869,7 @@ "state-toggle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", - "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==", - "dev": true + "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==" }, "static-extend": { "version": "0.1.2", @@ -13791,6 +14018,17 @@ "safe-buffer": "5.1.2" } }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "requires": { + "character-entities-html4": "1.1.2", + "character-entities-legacy": "1.1.2", + "is-alphanumerical": "1.0.2", + "is-hexadecimal": "1.0.2" + } + }, "stringify-object": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", @@ -14174,8 +14412,12 @@ "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", - "dev": true + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-lines": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.1.tgz", + "integrity": "sha512-X+eloHbgJGxczUk1WSjIvn7aC9oN3jVE3rQfRVKcgpavi3jxtCn0VVKtjOBj64Yop96UYn/ujJRpTbCdAF1vyg==" }, "trim-newlines": { "version": "2.0.0", @@ -14192,14 +14434,12 @@ "trim-trailing-lines": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", - "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==", - "dev": true + "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==" }, "trough": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.2.tgz", - "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ==", - "dev": true + "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ==" }, "tslib": { "version": "1.9.3", @@ -14288,7 +14528,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", - "dev": true, "requires": { "inherits": "2.0.3", "xtend": "4.0.1" @@ -14298,7 +14537,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", - "dev": true, "requires": { "bail": "1.0.3", "extend": "3.0.1", @@ -14364,17 +14602,41 @@ "crypto-random-string": "1.0.0" } }, + "unist-builder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.2.tgz", + "integrity": "sha1-jDuZA+9kvPsRfdfPal2Y/Bs7J7Y=", + "requires": { + "object-assign": "4.1.1" + } + }, + "unist-util-generated": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.2.tgz", + "integrity": "sha512-1HcwiEO62dr0XWGT+abVK4f0aAm8Ik8N08c5nAYVmuSxfvpA9rCcNyX/le8xXj1pJK5nBrGlZefeWB6bN8Pstw==" + }, "unist-util-is": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", - "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==", - "dev": true + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" + }, + "unist-util-modify-children": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.2.tgz", + "integrity": "sha512-GRi04yhng1WqBf5RBzPkOtWAadcZS2gvuOgNn/cyJBYNxtTuyYqTKN0eg4rC1YJwGnzrqfRB3dSKm8cNCjNirg==", + "requires": { + "array-iterate": "1.1.2" + } + }, + "unist-util-position": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.1.tgz", + "integrity": "sha512-05QfJDPI7PE1BIUtAxeSV+cDx21xP7+tUZgSval5CA7tr0pHBwybF7OnEa1dOFqg6BfYH/qiMUnWwWj+Frhlww==" }, "unist-util-remove-position": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", - "dev": true, "requires": { "unist-util-visit": "1.3.1" } @@ -14382,14 +14644,12 @@ "unist-util-stringify-position": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", - "dev": true + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" }, "unist-util-visit": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.1.tgz", "integrity": "sha512-0fdB9EQJU0tho5tK0VzOJzAQpPv2LyLZ030b10GxuzAWEfvd54mpY7BMjQ1L69k2YNvL+SvxRzH0yUIehOO8aA==", - "dev": true, "requires": { "unist-util-is": "2.1.2" } @@ -14584,7 +14844,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", - "dev": true, "requires": { "is-buffer": "1.1.6", "replace-ext": "1.0.0", @@ -14595,14 +14854,12 @@ "vfile-location": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz", - "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==", - "dev": true + "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==" }, "vfile-message": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.1.tgz", "integrity": "sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug==", - "dev": true, "requires": { "unist-util-stringify-position": "1.1.2" } @@ -14815,8 +15072,7 @@ "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", - "dev": true + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" }, "xdg-basedir": { "version": "3.0.0", @@ -14833,8 +15089,7 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { "version": "3.2.1", diff --git a/package.json b/package.json index 630a0f3..48f85cf 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,6 @@ "prop-types": "^15.6.2", "react": "^16.4.1", "react-dom": "^16.4.1", - "react-markdown": "^3.3.4", - "react-syntax-highlighter": "^8.0.1", "rimraf": "^2.6.1", "rollup": "^0.63.3", "rollup-plugin-babel": "^3.0.3", @@ -73,9 +71,8 @@ "react": "^16.4.1", "react-dom": "^16.4.1", "prop-types": "^15.6.2", - "react-markdown": "^3.3.4", - "react-syntax-highlighter": "^8.0.1", - "tachyons": "^4.11.0" + "tachyons": "^4.11.0", + "highlight.js": "^9.12.0" }, "browserslist": [ "IE >= 11" @@ -92,5 +89,11 @@ "git add" ] }, - "dependencies": {} + "dependencies": { + "rehype-highlight": "^2.1.0", + "rehype-stringify": "^4.0.0", + "remark": "^9.0.0", + "remark-ping": "^2.1.2", + "remark-rehype": "^3.0.0" + } } diff --git a/rollup.config.js b/rollup.config.js index 8ee4150..deba369 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -48,7 +48,7 @@ config.plugins.push( // Needed for rollup: https://rollupjs.org/guide/en#babel // NOTE: this gets merged with .babelrc plugins: ["external-helpers"], - exclude: ["**/*.json"] + exclude: ["**/*.json", "node_modules/**"] }), nodeBuiltins(), nodeGlobals(), diff --git a/src/CodeBlock.jsx b/src/CodeBlock.jsx deleted file mode 100644 index 0366744..0000000 --- a/src/CodeBlock.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import SyntaxHighlighter from "react-syntax-highlighter"; - -// https://gist.github.com/ibrahima/d21950a95aee3212e991a8404e238093 -export default class CodeBlock extends React.PureComponent { - render() { - const { language, value } = this.props; - return {value}; - } -} - -CodeBlock.propTypes = { - value: PropTypes.string.isRequired, - language: PropTypes.string -}; - -CodeBlock.defaultProps = { - language: null -}; diff --git a/src/Markdown.jsx b/src/Markdown.jsx new file mode 100644 index 0000000..5080163 --- /dev/null +++ b/src/Markdown.jsx @@ -0,0 +1,38 @@ +import React from "react"; +import t from "prop-types"; +import remark from "remark"; +import remarkPing from "remark-ping"; +import remarkRehype from "remark-rehype"; +import rehypeStringify from "rehype-stringify"; +import rehypeHighlight from "rehype-highlight"; + +export default class Markdown extends React.Component { + constructor(props) { + super(props); + this.state = { + rendered: "" + }; + } + componentDidMount() { + const remarkInst = remark() + // Use remark-ping to transform tags (e.g. @javascript) into links + .use(remarkPing, { + pingUsername: tag => true, + userURL: this.props.tagURL + }) + .use(remarkRehype) + .use(rehypeStringify) + .use(rehypeHighlight); + const result = remarkInst.process(this.props.source, (err, rendered) => { + if (err) throw err; + this.setState({ rendered }); + }); + } + render() { + return
; + } +} +Markdown.propTypes = { + source: t.string.isRequired, + tagURL: t.func +}; diff --git a/src/get-query-param.js b/src/get-query-param.js new file mode 100644 index 0000000..604270e --- /dev/null +++ b/src/get-query-param.js @@ -0,0 +1,10 @@ +// https://stackoverflow.com/a/901144/1157536 +export default function getQueryParam(name, url) { + if (!url) url = window.location.href; + name = name.replace(/[\[\]]/g, "\\$&"); + var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ""; + return decodeURIComponent(results[2].replace(/\+/g, " ")); +} diff --git a/src/index.jsx b/src/index.jsx index 0bbb9fa..b8f6d72 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -1,28 +1,19 @@ import parse from "jrnl-parser"; -import Markdown from "react-markdown"; import React from "react"; import t from "prop-types"; -import CodeBlock from "./CodeBlock.jsx"; +import getQueryParam from "./get-query-param"; import fetchTxt from "./fetch-txt"; -import remarkTags, { Ping } from "./remark-tags"; +import Markdown from "./Markdown"; const EntryBody = ({ body, onClickTag }) => (

- + `?q=@${tag}`} />

); EntryBody.propTypes = { body: t.string, - onClickTag: t.function + onClickTag: t.func }; const EntryContainer = ({ date, children }) => ( @@ -49,7 +40,7 @@ const Entry = ({ entry, onClickTag }) => ( ); Entry.propTypes = { entry: t.object, - onClickTag: t.function + onClickTag: t.func }; const Loader = () =>
Loading entries…
; @@ -84,7 +75,7 @@ const Header = ({ title, onInputChange, filter }) => ( ); Header.propTypes = { title: t.string, - onInputChange: t.function, + onInputChange: t.func, filter: t.string }; @@ -121,8 +112,8 @@ JRNL.propTypes = { source: t.string, loaded: t.bool, filter: t.string, - onInputChange: t.function, - onClickTag: t.function + onInputChange: t.func, + onClickTag: t.func }; export default class App extends React.Component { @@ -145,7 +136,8 @@ export default class App extends React.Component { this.setState({ filter: tag }); } componentDidMount() { - this.setState({ loaded: false }); + const filter = getQueryParam("q") || ""; + this.setState({ filter, loaded: false }); fetchTxt(this.props.src).then(source => { this.setState({ source, loaded: true }); }); diff --git a/src/remark-tags.jsx b/src/remark-tags.jsx index ee8a1e5..c77b848 100644 --- a/src/remark-tags.jsx +++ b/src/remark-tags.jsx @@ -9,13 +9,8 @@ import React from "react"; import visit from "unist-util-visit"; import t from "prop-types"; -export const Ping = ({ value, onClick }) => { - const handleClick = e => onClick(value, e); - return ( - - {value} - - ); +export const Ping = ({ value }) => { + return {value}; }; Ping.propTypes = { value: t.string, diff --git a/src/standalone.jsx b/src/standalone.jsx index 56d43a8..872551d 100644 --- a/src/standalone.jsx +++ b/src/standalone.jsx @@ -2,6 +2,7 @@ import React from "react"; import ReactDOM from "react-dom"; import App from "./index.jsx"; import "tachyons"; +import "highlight.js/styles/github.css"; function autoInit() { const elem = document.querySelector("jrnl");