hexo-component-inferno 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -8
  3. package/asset/js/algolia.js +27 -10
  4. package/asset/js/insight.js +62 -44
  5. package/lib/core/migrate.js +23 -4
  6. package/lib/core/schema.js +31 -9
  7. package/lib/core/view.js +1 -1
  8. package/lib/hexo/filter/locals.js +5 -2
  9. package/lib/hexo/generator/category.js +8 -1
  10. package/lib/hexo/generator/insight.js +8 -15
  11. package/lib/hexo/generator/manifest.js +6 -0
  12. package/lib/hexo/helper/cdn.js +1 -1
  13. package/lib/hexo/tag/message.js +11 -1
  14. package/lib/hexo/tag/tabs.js +28 -5
  15. package/lib/schema/comment/giscus.json +5 -0
  16. package/lib/schema/comment/gitment.json +1 -1
  17. package/lib/schema/comment/valine.json +1 -1
  18. package/lib/schema/comment/waline.json +1 -1
  19. package/lib/schema/misc/open_graph.json +0 -1
  20. package/lib/schema/plugin/waline_pageview.json +1 -1
  21. package/lib/schema/share/addthis.json +1 -1
  22. package/lib/schema/widget/archives.json +23 -0
  23. package/lib/schema/widget/categories.json +27 -0
  24. package/lib/schema/widget/recent_posts.json +5 -0
  25. package/lib/schema/widget/subscribe_email.json +1 -1
  26. package/lib/util/classname.js +1 -1
  27. package/lib/util/deprecate.js +28 -0
  28. package/lib/util/html.js +51 -0
  29. package/lib/util/script.js +30 -7
  30. package/lib/view/comment/artalk.js +3 -2
  31. package/lib/view/comment/beaudar.js +3 -2
  32. package/lib/view/comment/changyan.js +2 -1
  33. package/lib/view/comment/cusdis.js +2 -1
  34. package/lib/view/comment/disqus.js +3 -1
  35. package/lib/view/comment/disqusjs.js +3 -2
  36. package/lib/view/comment/facebook.js +3 -1
  37. package/lib/view/comment/giscus.js +3 -2
  38. package/lib/view/comment/gitalk.js +4 -2
  39. package/lib/view/comment/gitment.js +7 -2
  40. package/lib/view/comment/isso.js +5 -1
  41. package/lib/view/comment/twikoo.js +5 -1
  42. package/lib/view/comment/utterances.js +3 -2
  43. package/lib/view/comment/valine.js +7 -1
  44. package/lib/view/comment/waline.js +25 -21
  45. package/lib/view/donate/afdian.js +1 -1
  46. package/lib/view/donate/alipay.js +1 -1
  47. package/lib/view/donate/buymeacoffee.js +1 -1
  48. package/lib/view/donate/patreon.js +1 -1
  49. package/lib/view/donate/wechat.js +1 -1
  50. package/lib/view/misc/meta.js +9 -3
  51. package/lib/view/misc/open_graph.js +12 -15
  52. package/lib/view/misc/structured_data.js +8 -9
  53. package/lib/view/misc/web_app.js +15 -6
  54. package/lib/view/plugin/baidu_analytics.js +3 -1
  55. package/lib/view/plugin/cookie_consent.js +3 -1
  56. package/lib/view/plugin/google_analytics.js +3 -1
  57. package/lib/view/plugin/hotjar.js +3 -1
  58. package/lib/view/plugin/matomo.js +3 -1
  59. package/lib/view/plugin/outdated_browser.js +1 -1
  60. package/lib/view/plugin/statcounter.js +3 -1
  61. package/lib/view/plugin/twitter_conversion_tracking.js +3 -1
  62. package/lib/view/plugin/waline_pageview.js +3 -1
  63. package/lib/view/search/algolia.js +3 -1
  64. package/lib/view/search/baidu.js +3 -1
  65. package/lib/view/search/google_cse.js +3 -1
  66. package/lib/view/search/insight.js +4 -2
  67. package/lib/view/share/addthis.js +4 -0
  68. package/lib/view/widget/archives.js +15 -2
  69. package/lib/view/widget/categories.js +20 -10
  70. package/lib/view/widget/links.js +1 -1
  71. package/lib/view/widget/subscribe_email.js +5 -0
  72. package/package.json +4 -2
@@ -53,7 +53,7 @@ var OutdatedBrowser = /*#__PURE__*/function (_Component) {
53
53
  "href": cssUrl
54
54
  });
55
55
  }
56
- return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "div", null, [(0, _inferno.createVNode)(1, "h6", null, "Your browser is out-of-date!", 16), (0, _inferno.createVNode)(1, "p", null, [(0, _inferno.createTextVNode)("Update your browser to view this website correctly.&npsb;"), (0, _inferno.createVNode)(1, "a", null, [(0, _inferno.createTextVNode)("Update my browser now"), (0, _inferno.createTextVNode)(' ')], 0, {
56
+ return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "div", null, [(0, _inferno.createVNode)(1, "h6", null, "Your browser is out-of-date!", 16), (0, _inferno.createVNode)(1, "p", null, [(0, _inferno.createTextVNode)("Update your browser to view this website correctly.\xA0"), (0, _inferno.createVNode)(1, "a", null, [(0, _inferno.createTextVNode)("Update my browser now"), (0, _inferno.createTextVNode)(' ')], 0, {
57
57
  "id": "btnUpdateBrowser",
58
58
  "href": "http://outdatedbrowser.com/"
59
59
  })], 4), (0, _inferno.createVNode)(1, "p", "last", (0, _inferno.createVNode)(1, "a", null, "\xD7", 16, {
@@ -22,6 +22,8 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/script'),
26
+ toJs = _require3.toJs;
25
27
 
26
28
  /**
27
29
  * Statcounter statistics plugin JSX component.
@@ -42,7 +44,7 @@ var Statcounter = /*#__PURE__*/function (_Component) {
42
44
  var _this$props = this.props,
43
45
  project = _this$props.project,
44
46
  security = _this$props.security;
45
- var js = "\n var sc_project=".concat(JSON.stringify(project), ";\n var sc_invisible=1;\n var sc_security=").concat(JSON.stringify(security), ";\n var sc_https=1;\n var sc_remove_link=1;");
47
+ var js = "\n var sc_project=".concat(toJs(project), ";\n var sc_invisible=1;\n var sc_security=").concat(toJs(security), ";\n var sc_https=1;\n var sc_remove_link=1;");
46
48
  return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "script", null, null, 1, {
47
49
  "dangerouslySetInnerHTML": {
48
50
  __html: js
@@ -22,6 +22,8 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/script'),
26
+ toJs = _require3.toJs;
25
27
 
26
28
  /**
27
29
  * Twitter conversion tracking plugin JSX component.
@@ -40,7 +42,7 @@ var TwiterCT = /*#__PURE__*/function (_Component) {
40
42
  key: "render",
41
43
  value: function render() {
42
44
  var pixelId = this.props.pixelId;
43
- var js = "\n !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);\n },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='//static.ads-twitter.com/uwt.js',\n a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script');\n twq('init', ".concat(JSON.stringify(pixelId), ");\n twq('track', 'PageView');\n ");
45
+ var js = "\n !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);\n },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='//static.ads-twitter.com/uwt.js',\n a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script');\n twq('init', ".concat(toJs(pixelId), ");\n twq('track', 'PageView');\n ");
44
46
  return (0, _inferno.createVNode)(1, "script", null, null, 1, {
45
47
  "dangerouslySetInnerHTML": {
46
48
  __html: js
@@ -22,6 +22,8 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/script'),
26
+ toJs = _require3.toJs;
25
27
 
26
28
  /**
27
29
  * Waline page view counter plugin JSX component.
@@ -50,7 +52,7 @@ var WalinePageview = /*#__PURE__*/function (_Component) {
50
52
  jsUrl = _this$props.jsUrl;
51
53
 
52
54
  // Waline publishes the counter as an ES module, so load it with a dynamic import
53
- var js = "(function () {\n var abort = null;\n function count() {\n import(".concat(JSON.stringify(jsUrl), ").then(function (Waline) {\n if (abort) {\n abort();\n }\n abort = Waline.pageviewCount({\n serverURL: ").concat(JSON.stringify(serverURL), ",\n path: window.location.pathname,\n });\n });\n }\n count();\n document.addEventListener('pjax:complete', count);\n })();");
55
+ var js = "(function () {\n var abort = null;\n function count() {\n import(".concat(toJs(jsUrl), ").then(function (Waline) {\n if (abort) {\n abort();\n }\n abort = Waline.pageviewCount({\n serverURL: ").concat(toJs(serverURL), ",\n path: window.location.pathname,\n });\n });\n }\n count();\n document.addEventListener('pjax:complete', count);\n })();");
54
56
  return (0, _inferno.createVNode)(1, "script", null, null, 1, {
55
57
  "dangerouslySetInnerHTML": {
56
58
  __html: js
@@ -22,6 +22,8 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/script'),
26
+ toJs = _require3.toJs;
25
27
 
26
28
  /**
27
29
  * Algolia search engine JSX component.
@@ -69,7 +71,7 @@ var Algolia = /*#__PURE__*/function (_Component) {
69
71
  indexName: indexName,
70
72
  excerpt: excerpt
71
73
  };
72
- var js = "document.addEventListener('DOMContentLoaded', function () {\n loadAlgolia(".concat(JSON.stringify(config), ", ").concat(JSON.stringify(translation), ");\n });");
74
+ var js = "document.addEventListener('DOMContentLoaded', function () {\n loadAlgolia(".concat(toJs(config), ", ").concat(toJs(translation), ");\n });");
73
75
  return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "div", "searchbox", [(0, _inferno.createVNode)(1, "div", "searchbox-mask", null, 1, {
74
76
  "style": "position:absolute;bottom:0px;left:0px;right:0px;top:0px;"
75
77
  }), (0, _inferno.createVNode)(1, "div", "searchbox-container", [(0, _inferno.createVNode)(1, "div", "searchbox-header", [(0, _inferno.createVNode)(1, "div", "searchbox-input-container", null, 1, {
@@ -22,6 +22,8 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/script'),
26
+ toJs = _require3.toJs;
25
27
 
26
28
  /**
27
29
  * Baidu search engine JSX component.
@@ -42,7 +44,7 @@ var Baidu = /*#__PURE__*/function (_Component) {
42
44
  url = _this$props.url,
43
45
  hint = _this$props.hint;
44
46
  var siteUrl = url.replace(/http(s)*:\/\//, '');
45
- var js = "(function ($) {\n $('.searchbox-input-container').on('submit', function (e) {\n var keyword = $('.searchbox-input[name=\"wd\"]').val();\n window.location = 'https://www.baidu.com/s?wd=site:".concat(siteUrl, " ' + keyword;\n return false;\n });\n })(jQuery);\n (function (document, $) {\n $(document).on('click', '.navbar-main .search', function () {\n $('.searchbox').toggleClass('show');\n }).on('click', '.searchbox .searchbox-mask', function () {\n $('.searchbox').removeClass('show');\n }).on('click', '.searchbox-close', function () {\n $('.searchbox').removeClass('show');\n });\n })(document, jQuery);");
47
+ var js = "(function ($) {\n $('.searchbox-input-container').on('submit', function (e) {\n var keyword = $('.searchbox-input[name=\"wd\"]').val();\n window.location = ".concat(toJs("https://www.baidu.com/s?wd=site:".concat(siteUrl, " ")), " + keyword;\n return false;\n });\n })(jQuery);\n (function (document, $) {\n $(document).on('click', '.navbar-main .search', function () {\n $('.searchbox').toggleClass('show');\n }).on('click', '.searchbox .searchbox-mask', function () {\n $('.searchbox').removeClass('show');\n }).on('click', '.searchbox-close', function () {\n $('.searchbox').removeClass('show');\n });\n })(document, jQuery);");
46
48
  return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "div", "searchbox", [(0, _inferno.createVNode)(1, "div", "searchbox-mask", null, 1, {
47
49
  "style": "position:absolute;bottom:0px;left:0px;right:0px;top:0px;"
48
50
  }), (0, _inferno.createVNode)(1, "div", "searchbox-container", (0, _inferno.createVNode)(1, "div", "searchbox-header", [(0, _inferno.createVNode)(1, "form", "searchbox-input-container", (0, _inferno.createVNode)(64, "input", "searchbox-input", null, 1, {
@@ -22,6 +22,8 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/script'),
26
+ toJs = _require3.toJs;
25
27
 
26
28
  /**
27
29
  * Google custom search engine JSX component.
@@ -47,7 +49,7 @@ var GoogleCSE = /*#__PURE__*/function (_Component) {
47
49
  hint = _this$props.hint,
48
50
  jsUrl = _this$props.jsUrl;
49
51
  var css = '.searchbox .searchbox-body { background: white; }';
50
- var js1 = "(function() {\n var cx = '".concat(cx, "';\n var gcse = document.createElement('script');\n gcse.type = 'text/javascript';\n gcse.async = true;\n gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;\n var s = document.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(gcse, s);\n })();");
52
+ var js1 = "(function() {\n var cx = ".concat(toJs(cx), ";\n var gcse = document.createElement('script');\n gcse.type = 'text/javascript';\n gcse.async = true;\n gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;\n var s = document.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(gcse, s);\n })();");
51
53
  return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "style", null, null, 1, {
52
54
  "dangerouslySetInnerHTML": {
53
55
  __html: css
@@ -22,6 +22,8 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/script'),
26
+ toJs = _require3.toJs;
25
27
 
26
28
  /**
27
29
  * Algolia search engine JSX component.
@@ -52,9 +54,9 @@ var Insight = /*#__PURE__*/function (_Component) {
52
54
  translation = _this$props.translation,
53
55
  contentUrl = _this$props.contentUrl,
54
56
  jsUrl = _this$props.jsUrl;
55
- var js = "document.addEventListener('DOMContentLoaded', function () {\n loadInsight(".concat(JSON.stringify({
57
+ var js = "document.addEventListener('DOMContentLoaded', function () {\n loadInsight(".concat(toJs({
56
58
  contentUrl: contentUrl
57
- }), ", ").concat(JSON.stringify(translation), ");\n });");
59
+ }), ", ").concat(toJs(translation), ");\n });");
58
60
  return (0, _inferno.createFragment)([(0, _inferno.createVNode)(1, "div", "searchbox", (0, _inferno.createVNode)(1, "div", "searchbox-container", [(0, _inferno.createVNode)(1, "div", "searchbox-header", [(0, _inferno.createVNode)(1, "div", "searchbox-input-container", (0, _inferno.createVNode)(64, "input", "searchbox-input", null, 1, {
59
61
  "type": "text",
60
62
  "placeholder": translation.hint
@@ -22,10 +22,13 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/deprecate'),
26
+ deprecate = _require3.deprecate;
25
27
 
26
28
  /**
27
29
  * AddThis share buttons JSX component.
28
30
  *
31
+ * @deprecated AddThis shut down on May 31, 2023. Use AddToAny or ShareThis instead.
29
32
  * @see https://www.addthis.com/dashboard
30
33
  * @example
31
34
  * <AddThis installUrl="******" />
@@ -39,6 +42,7 @@ var AddThis = /*#__PURE__*/function (_Component) {
39
42
  return _createClass(AddThis, [{
40
43
  key: "render",
41
44
  value: function render() {
45
+ deprecate('share.addthis', 'AddThis shut down on May 31, 2023. Use AddToAny or ShareThis instead.');
42
46
  var installUrl = this.props.installUrl;
43
47
  if (!installUrl) {
44
48
  return (0, _inferno.createVNode)(1, "div", "notification is-danger", [(0, _inferno.createTextVNode)("You need to set "), (0, _inferno.createVNode)(1, "code", null, "install_url", 16), (0, _inferno.createTextVNode)(" to use AddThis. Please set it in"), (0, _inferno.createTextVNode)(' '), (0, _inferno.createVNode)(1, "code", null, "_config.yml", 16), (0, _inferno.createTextVNode)(".")], 0);
@@ -25,6 +25,19 @@ var _require2 = require('../../util/cache'),
25
25
  var _require3 = require('../../util/i18n'),
26
26
  translate = _require3.translate;
27
27
 
28
+ /**
29
+ * Get the first value that is set, i.e., neither null nor undefined.
30
+ * @private
31
+ */
32
+ function firstSet() {
33
+ for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ values[_key] = arguments[_key];
35
+ }
36
+ return values.find(function (value) {
37
+ return value !== null && typeof value !== 'undefined';
38
+ });
39
+ }
40
+
28
41
  /**
29
42
  * Convert a Hexo language code into a Moment.js locale name.
30
43
  * <p>
@@ -128,11 +141,11 @@ Archives.Cacheable = cacheComponent(Archives, 'widget.archives', function (props
128
141
  group_by = _widget$group_by === void 0 ? 'monthly' : _widget$group_by,
129
142
  _widget$order = widget.order,
130
143
  order = _widget$order === void 0 ? -1 : _widget$order,
131
- _widget$showCount = widget.showCount,
132
- showCount = _widget$showCount === void 0 ? true : _widget$showCount,
133
144
  _widget$format = widget.format,
134
145
  format = _widget$format === void 0 ? null : _widget$format,
135
146
  amount = widget.amount;
147
+ // show_count, like the tags widget, or showCount, which this widget used to read
148
+ var showCount = firstSet(widget.show_count, widget.showCount, true);
136
149
  var url_for = helper.url_for,
137
150
  _p = helper._p,
138
151
  __ = helper.__;
@@ -25,6 +25,19 @@ var _require2 = require('../../util/cache'),
25
25
  var _require3 = require('../../util/i18n'),
26
26
  translate = _require3.translate;
27
27
 
28
+ /**
29
+ * Get the first value that is set, i.e., neither null nor undefined.
30
+ * @private
31
+ */
32
+ function firstSet() {
33
+ for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ values[_key] = arguments[_key];
35
+ }
36
+ return values.find(function (value) {
37
+ return value !== null && typeof value !== 'undefined';
38
+ });
39
+ }
40
+
28
41
  /**
29
42
  * Categories widget JSX component.
30
43
  *
@@ -114,25 +127,22 @@ Categories.Cacheable = cacheComponent(Categories, 'widget.categories', function
114
127
  widget = _props$widget === void 0 ? {} : _props$widget;
115
128
  var _widget$categories = widget.categories,
116
129
  categories = _widget$categories === void 0 ? props.site.categories : _widget$categories,
117
- _widget$orderBy = widget.orderBy,
118
- orderBy = _widget$orderBy === void 0 ? 'name' : _widget$orderBy,
119
130
  _widget$order = widget.order,
120
131
  order = _widget$order === void 0 ? 1 : _widget$order,
121
- _widget$showCurrent = widget.showCurrent,
122
- showCurrent = _widget$showCurrent === void 0 ? false : _widget$showCurrent,
123
- _widget$showCount = widget.showCount,
124
- showCount = _widget$showCount === void 0 ? true : _widget$showCount,
125
132
  amount = widget.amount;
133
+ // Snake case, like the tags widget, or camel case, which this widget used to read
134
+ var orderBy = firstSet(widget.order_by, widget.orderBy, 'name');
135
+ var showCurrent = firstSet(widget.show_current, widget.showCurrent, false);
136
+ var showCount = firstSet(widget.show_count, widget.showCount, true);
126
137
  var url_for = helper.url_for,
127
138
  _p = helper._p,
128
139
  __ = helper.__;
129
140
  if (!categories || !categories.length) {
130
141
  return null;
131
142
  }
132
- var depth = 0;
133
- try {
134
- depth = parseInt(props.depth, 10);
135
- } catch (e) {}
143
+
144
+ // 0 or no depth shows all levels
145
+ var depth = parseInt(firstSet(widget.depth, props.depth), 10) || 0;
136
146
  function prepareQuery(parent) {
137
147
  var query = {};
138
148
  if (parent) {
@@ -95,7 +95,7 @@ var Links = /*#__PURE__*/function (_Component) {
95
95
  Links.Cacheable = cacheComponent(Links, 'widget.links', function (props) {
96
96
  var helper = props.helper,
97
97
  widget = props.widget;
98
- if (!Object.keys(widget.links).length) {
98
+ if (!widget.links || !Object.keys(widget.links).length) {
99
99
  return null;
100
100
  }
101
101
  return {
@@ -22,10 +22,14 @@ var _require = require('inferno'),
22
22
  Component = _require.Component;
23
23
  var _require2 = require('../../util/cache'),
24
24
  cacheComponent = _require2.cacheComponent;
25
+ var _require3 = require('../../util/deprecate'),
26
+ deprecate = _require3.deprecate;
25
27
 
26
28
  /**
27
29
  * Google FeedBurner widget JSX component.
28
30
  *
31
+ * @deprecated Google FeedBurner stopped email subscriptions in July 2021. Use the follow.it widget
32
+ * instead.
29
33
  * @see https://feedburner.google.com/
30
34
  * @example
31
35
  * <SubscribeEmail
@@ -43,6 +47,7 @@ var SubscribeEmail = /*#__PURE__*/function (_Component) {
43
47
  return _createClass(SubscribeEmail, [{
44
48
  key: "render",
45
49
  value: function render() {
50
+ deprecate('widget.subscribe_email', 'Google FeedBurner stopped email subscriptions in July 2021. Use the follow.it widget instead.');
46
51
  var _this$props = this.props,
47
52
  title = _this$props.title,
48
53
  description = _this$props.description,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hexo-component-inferno",
3
- "version": "4.1.0",
3
+ "version": "4.2.0",
4
4
  "description": "A collection of Inferno.js layout components and utility scripts for Hexo",
5
5
  "main": "lib/index.js",
6
6
  "repository": "https://github.com/ppoffice/hexo-component-inferno",
@@ -44,13 +44,15 @@
44
44
  "eslint-plugin-jest": "^27.6.3",
45
45
  "eslint-plugin-json": "^3.1.0",
46
46
  "eslint-plugin-react": "^7.33.2",
47
- "hexo": "^7.1.1",
47
+ "hexo": "^8.1.2",
48
48
  "hexo-renderer-marked": "^6.2.0",
49
49
  "html-minifier": "^4.0.0",
50
50
  "inferno-server": "^8.2.3",
51
51
  "inferno-test-utils": "^8.2.3",
52
52
  "jest": "^29.7.0",
53
53
  "jest-environment-jsdom": "^29.7.0",
54
+ "jquery": "^3.7.1",
55
+ "jsdom": "^20.0.3",
54
56
  "jsdoc": "^4.0.2",
55
57
  "minami": "^1.2.3",
56
58
  "prettier": "^3.2.4",