New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

hexo-theme-next

Package Overview
Dependencies
Maintainers
1
Versions
93
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hexo-theme-next - npm Package Compare versions

Comparing version 7.7.2 to 7.8.0

languages/ar.yml

2

.github/CONTRIBUTING.md

@@ -46,3 +46,3 @@ <div align="right">

* Execute `hexo clean`, cleare the browser cache and disable all CDN services (e.g. Cloudflare Rocket Loader)
* Execute `hexo clean`, clear the browser cache and disable all CDN services (e.g. Cloudflare Rocket Loader)
* Switch to another theme and check if the bug still exists (e.g. default theme landscape). In other words, prove that this is a NexT issue, not a issue from Hexo.

@@ -49,0 +49,0 @@ * Upgrade theme NexT to the latest version.

@@ -10,8 +10,5 @@ ---

If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
## Issue Checklist <!-- 我确认我已经查看了 -->

@@ -21,4 +18,4 @@ <!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->

- [ ] I am using [the latest](https://github.com/theme-next/hexo-theme-next/releases/latest) version of NexT.
- [ ] I have reviewed [guidelines for NexT](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md), especially the [Before Submitting An Issue](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md#before-submitting-an-issue) part.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue), which does not help me.
- [ ] I have read the relevant documents of [Hexo](https://hexo.io/docs/) and [NexT](https://theme-next.org/docs/).
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues), which does not help me.

@@ -25,0 +22,0 @@ ***

@@ -10,8 +10,5 @@ ---

If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
## Issue Checklist <!-- 我确认我已经查看了 -->

@@ -21,4 +18,4 @@ <!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->

- [ ] I am using [the latest](https://github.com/theme-next/hexo-theme-next/releases/latest) version of NexT.
- [ ] I have reviewed [guidelines for NexT](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md), especially the [Before Submitting An Issue](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md#before-submitting-an-issue) part.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue), which does not help me.
- [ ] I have read the relevant documents of [Hexo](https://hexo.io/docs/) and [NexT](https://theme-next.org/docs/).
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues), which does not help me.

@@ -41,1 +38,3 @@ ***

3. N/A
## Other Information <!-- Like Browser, System, Screenshots -->

@@ -10,8 +10,5 @@ ---

If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
## Issue Checklist <!-- 我确认我已经查看了 -->

@@ -21,5 +18,7 @@ <!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->

- [ ] I am using [the latest](https://github.com/theme-next/hexo-theme-next/releases/latest) version of NexT.
- [ ] I have reviewed [guidelines for NexT](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md), especially the [Before Submitting An Issue](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md#before-submitting-an-issue) part.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue), which does not help me.
- [ ] I have read the relevant documents of [Hexo](https://hexo.io/docs/) and [NexT](https://theme-next.org/docs/).
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues), which does not help me.
***
## Other Information <!-- Like Browser, System, Screenshots -->

@@ -10,8 +10,5 @@ ---

If you delete this template, we may close your issue without conducting an investigation.
如果您删除此模版,我们可能会在不进行调查的情况下关闭您的 Issue。
Please follow this Issue template to provide relevant information, such as source code repositories, blog links, and screenshots, which will help us investigate.
请按照此 Issue 模版提供相关信息,例如源码仓库、博客链接和屏幕截图,这将有助于我们进行调查。
Please check if your Issue fulfills the following requirements. This will guide you to resolve the issue quickly.
请务必确认您在提交此 Issue 前已经查看并完成了下列检查单中的所有事项。这会指导您快速地解决问题。
## Issue Checklist <!-- 我确认我已经查看了 -->

@@ -21,4 +18,4 @@ <!-- Change [ ] to [x] to select (将 [ ] 换成 [x] 来选择) -->

- [ ] I am using [the latest](https://github.com/theme-next/hexo-theme-next/releases/latest) version of NexT.
- [ ] I have reviewed [guidelines for NexT](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md), especially the [Before Submitting An Issue](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md#before-submitting-an-issue) part.
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue), which does not help me.
- [ ] I have read the relevant documents of [Hexo](https://hexo.io/docs/) and [NexT](https://theme-next.org/docs/).
- [ ] I have reviewed the latest Roadmap on GitHub and searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues), which does not help me.

@@ -25,0 +22,0 @@ ***

@@ -7,12 +7,2 @@ <!-- ATTENTION!

3. In addition, you need to confirm that the changes made by this PR are compatible with PJAX and Dark Mode.
4. We use ESLint and Stylint for identifying and reporting on patterns in JavaScript and Stylus. Please execute the following commands:
```sh
cd path/to/theme-next
npm install
npm run test
npm run test lint:stylus
```
5. Please check if your PR fulfills the following requirements.
-->

@@ -38,3 +28,4 @@

- [ ] Build & CI related changes.
- [ ] Documentation content changes.
- [ ] Documentation.
- [ ] Translation. <!-- We use Crowdin to manage translations https://i18n.theme-next.org -->
- [ ] Other... Please describe:

@@ -41,0 +32,0 @@

@@ -41,3 +41,3 @@ <h1 align="center">Data Files</h1>

1. Please ensure you are using Hexo 3 (or above).
2. Create an file named `next.yml` in site's `/source/_data` directory (create `_data` directory if it did not exists).
2. Create an file named `next.yml` in site's `/source/_data` directory (create `_data` directory if it does not exist).

@@ -44,0 +44,0 @@ <p align="center">And after that steps there are <b>2 variants</b>, need to <b>choose only one</b> of them and <b>resume next steps</b>.</p>

@@ -44,7 +44,8 @@ <h1 align="center">Fix LeanCloud Counter Plugin Security Vulnerability</h1>

enable: true
app_id: <<your app id>>
app_key: <<your app key>>
app_id: # <your app id>
app_key: # <your app key>
# Required for apps from CN region
server_url: # <your server url>
# Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
security: true
betterPerformance: false
```

@@ -68,3 +69,3 @@

var query = new AV.Query("Counter");
if (request.object.updatedKeys.indexOf('time') !== -1) {
if (request.object.updatedKeys.includes('time')) {
return query.get(request.object.id).then(function (obj) {

@@ -98,12 +99,10 @@ if (obj.get("time") > request.object.get("time")) {

enable: true
app_id: <<your app id>>
app_key: <<your app key>>
app_id: # <your app id>
app_key: # <your app key>
# Required for apps from CN region
server_url: # <your server url>
# Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
security: true
betterPerformance: false
```
**Explaination for `betterPerformance`:**
Because the Leancloud developer's plan has limits in requst thread amount and running time, counter number may be very slow to load in some times. If set `betterPerformance` to true, counter number will be displayed quickly by assuming the request is accepted normally.
- Open cmd then switch to **root path of site**, type commands to install `hexo-leancloud-counter-security` plugin:

@@ -118,4 +117,4 @@ ```

enable_sync: true
app_id: <<your app id>>
app_key: <<your app key>
app_id: <your app id>
app_key: <your app key>
username:

@@ -127,19 +126,19 @@ password:

```
hexo lc-counter register <<username>> <<password>>
hexo lc-counter register <username> <password>
```
or
```
hexo lc-counter r <<username>> <<password>>
hexo lc-counter r <username> <password>
```
Change `<<username>>` and `<<password>>` to your own username and password (no need to be the same as leancloud account). They will be used in the hexo deploying.
Change `<username>` and `<password>` to your own username and password (no need to be the same as leancloud account). They will be used in the hexo deploying.
- Open **site config file** `_config.yml`, change `<<username>>` and `<<password>>`to those you set above:
- Open **site config file** `_config.yml`, change `<username>` and `<password>`to those you set above:
```yml
leancloud_counter_security:
enable_sync: true
app_id: <<your app id>>
app_key: <<your app key>
username: <<your username>> # will be asked while deploying if be left blank
password: <<your password>> # recommend to leave it blank for security, will be asked while deploying if be left blank
app_id: <your app id>
app_key: <your app key>
username: <your username> # will be asked while deploying if be left blank
password: <your password> # recommend to leave it blank for security, will be asked while deploying if be left blank
```

@@ -146,0 +145,0 @@

@@ -16,3 +16,3 @@ <div align="right">

<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E=10.9.0-green?style=flat-square"></a>
<a href="https://hexo.io"><img src="https://img.shields.io/badge/hexo-%3E=3.5.0-blue?style=flat-square&logo=hexo"></a>
<a href="https://hexo.io"><img src="https://img.shields.io/badge/hexo-%3E=4.0.0-blue?style=flat-square&logo=hexo"></a>
<a href="https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md"><img src="https://img.shields.io/badge/license-%20AGPL-orange?style=flat-square&logo=gnu"></a>

@@ -57,3 +57,3 @@ <br>

# Dependencies: https://github.com/theme-next/theme-next-pjax
pjax: false
pjax: true
```

@@ -65,3 +65,3 @@

Можно обновить до последней мастер-ветки следующей командой:
NexT выпускает новые версии каждый месяц. Можно обновить до последней мастер-ветки следующей командой:

@@ -80,6 +80,5 @@ ```sh

* Подписаться на новости через [канал Telegram'а][t-news-url].
* Посетите [Awesome NexT][awesome-next-url] список.
* Вступить в наши [Telegram][t-chat-url] / [Gitter][gitter-url] / [Riot][riot-url] чаты.
* [Добавить или улучшить перевод][i18n-url] за несколько секунд.
* Посетите [Awesome NexT][awesome-next-url] список.
* Сообщить об ошибке в разделе [GitHub Issues][issues-bug-url].

@@ -86,0 +85,0 @@ * Запросить новую возможность на [GitHub][issues-feat-url].

<h1 align="center">Обновление из-под NexT v5.1.x</h1>
Между версией 5.1.x и последней версиями нет жёстких изменений. Версия сменилась на мажорную 6 по следующим причинам:
Между версией 5.1.x и последней версиями нет жёстких изменений. Версия сменилась на мажорную 7 по следующим причинам:
1. Основной репозиторий перебазировался из профиля [iissnan'а](https://github.com/iissnan/hexo-theme-next) в [theme-next](https://github.com/theme-next) организацию.
2. Большинство библиотек в `next/source/lib` директории были вынесены в [отдельные репозитории под организацией NexT](https://github.com/theme-next).
3. 3rd-party плагин [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) был заменён на [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) т.к. `hexo-symbols-count-time` не имеет никаких сторонних nodejs зависимостей, не имеет [языкового фильтра](https://github.com/willin/hexo-wordcount/issues/7) что обеспечивает улучшенную производительность при генерации сайта.
3. 3rd-party плагин [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) был заменён на [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) т.к. `hexo-symbols-count-time` не имеет никаких сторонних Node.js зависимостей, не имеет [языкового фильтра](https://github.com/willin/hexo-wordcount/issues/7) что обеспечивает улучшенную производительность при генерации сайта.
Поэтому, я предлагаю обновиться с версии 5 на версию 6 следующим способом:
Поэтому, я предлагаю обновиться с версии 5 на версию 7 следующим способом:

@@ -10,0 +10,0 @@ 1. Вы не трогаете старую директорию `next`, а всего-лишь делаете резервные копии файлов NexT:\

<h1 align="center">Update from NexT v5.1.x</h1>
NexT version 5 works fine at most cases, but for frequent users, you maybe need to upgrade version 5 to 6 to get features and supports in new [Theme-Next](https://github.com/theme-next/hexo-theme-next) repository.
NexT version 5 works fine with Hexo 3, but for frequent users, you maybe need to upgrade version 5 to 7 to get features and supports in new [Theme-Next](https://github.com/theme-next/hexo-theme-next) repository.
There are no hard breaking changes between 5.1.x and the latest version. It's change major version to 6 because:
There are no hard breaking changes between 5.1.x and the latest version. It's change major version to 7 because:
1. Main repo was rebased from [iissnan's](https://github.com/iissnan/hexo-theme-next) profile to [theme-next](https://github.com/theme-next) organization.
2. Most libraries under the `next/source/lib` directory was moved out to [external repos under NexT organization](https://github.com/theme-next).
3. 3rd-party plugin [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) was replaced by [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) because `hexo-symbols-count-time` no have any external nodejs dependencies, no have [language filter](https://github.com/willin/hexo-wordcount/issues/7) which causes better performance on speed at site generation.
3. 3rd-party plugin [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) was replaced by [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) because `hexo-symbols-count-time` no have any external Node.js dependencies, no have [language filter](https://github.com/willin/hexo-wordcount/issues/7) which causes better performance on speed at site generation.
So, i suggest to update from version 5 to version 6 in this way:
So, we suggest to update from version 5 to version 7 in this way:

@@ -25,3 +25,6 @@ 1. You don't touch old `next` dir and just do some copies of NexT files:\

Users upgrading to v6.0.3 and later need to explicitly modify the `language` configuration in the Hexo main config file `_config.yml`, otherwise the language display is incorrect.
5. Update Hexo and Hexo plugin
If after completing the above steps, an error occurs when executing `hexo s` or` hexo g`, it means that there may be a conflict between the old version of Hexo / Hexo plugin and the new version of the theme NexT. We recommend upgrading Hexo to versions 4.0 and higher and upgrading Hexo plugins to the latest version. You can run `npm outdated` to see all the upgradeable plugins.
And how to enable 3rd-party libraries see [here](https://github.com/theme-next/hexo-theme-next/blob/master/docs/INSTALLATION.md#plugins).

@@ -46,9 +46,12 @@ <h1 align="center">修复 LeanCloud 统计插件安全漏洞</h1>

- 粘贴 `App ID` 和 `App Key` 到 **NexT主题配置文件** `_config.yml` 对应位置。此时配置文件应如下:
```yml
leancloud_visitors:
enable: true
security: true
app_id: <<your app id>>
app_key: <<your app key>>
```
```yml
leancloud_visitors:
enable: true
app_id: # <your app id>
app_key: # <your app key>
# Required for apps from CN region
server_url: # <your server url>
# Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
security: true
```

@@ -73,3 +76,3 @@ - 设置Web安全域名确保域名调用安全。点击 `1` 处进入安全中心,然后在 `2` 处填写自己博客对应的域名(**注意协议、域名和端口号需严格一致**):

var query = new AV.Query("Counter");
if (request.object.updatedKeys.indexOf('time') !== -1) {
if (request.object.updatedKeys.includes('time')) {
return query.get(request.object.id).then(function (obj) {

@@ -107,12 +110,10 @@ if (obj.get("time") > request.object.get("time")) {

enable: true
app_id: <<your app id>>
app_key: <<your app key>>
app_id: # <your app id>
app_key: # <your app key>
# Required for apps from CN region
server_url: # <your server url>
# Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
security: true
betterPerformance: false
```
**对 `betterPerformance` 选项的说明:**
由于 LeanCloud 免费版的云引擎存在请求线程数和运行时间限制以及休眠机制,很多时候访客数量加载会很慢。如果设置 `betterPerformance` 为 `true`,则网页则会在提交请求之前直接显示访客人数为查询到的人数+1,以增加用户体验。
- 打开 cmd 并切换至**博客根目录**,键入以下命令以安装 `hexo-leancloud-counter-security` 插件:

@@ -127,4 +128,4 @@ ```

enable_sync: true
app_id: <<your app id>>
app_key: <<your app key>
app_id: <your app id>
app_key: <your app key>
username:

@@ -136,19 +137,19 @@ password:

```
hexo lc-counter register <<username>> <<password>>
hexo lc-counter register <username> <password>
```
```
hexo lc-counter r <<username>> <<password>>
hexo lc-counter r <username> <password>
```
将 `<<username>>` 和 `<<password>>` 替换为你自己的用户名和密码(不必与 LeanCloud 的账号相同)。此用户名和密码将在 Hexo 部署时使用。
将 `<username>` 和 `<password>` 替换为你自己的用户名和密码(不必与 LeanCloud 的账号相同)。此用户名和密码将在 Hexo 部署时使用。
- 打开**博客配置文件** `_config.yml`,将 `<<username>>` 和 `<<password>>` 替换为你刚刚设置的用户名和密码:
- 打开**博客配置文件** `_config.yml`,将 `<username>` 和 `<password>` 替换为你刚刚设置的用户名和密码:
```yml
leancloud_counter_security:
enable_sync: true
app_id: <<your app id>>
app_key: <<your app key>
username: <<your username>> #如留空则将在部署时询问
password: <<your password>> #建议留空以保证安全性,如留空则将在部署时询问
app_id: <your app id>
app_key: <your app key>
username: <your username> #如留空则将在部署时询问
password: <your password> #建议留空以保证安全性,如留空则将在部署时询问
```

@@ -155,0 +156,0 @@

@@ -16,3 +16,3 @@ <div align="right">

<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E=10.9.0-green?style=flat-square"></a>
<a href="https://hexo.io"><img src="https://img.shields.io/badge/hexo-%3E=3.5.0-blue?style=flat-square&logo=hexo"></a>
<a href="https://hexo.io"><img src="https://img.shields.io/badge/hexo-%3E=4.0.0-blue?style=flat-square&logo=hexo"></a>
<a href="https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md"><img src="https://img.shields.io/badge/license-%20AGPL-orange?style=flat-square&logo=gnu"></a>

@@ -50,5 +50,5 @@ <br>

在 NexT 配置中有一些第三方插件,它们已经被移至外部仓库。你可以在[组织主页][official-plugins-url]中找到它们。
NexT 支持大量的第三方插件,它们可以被轻松地配置。
例如,你想要在你的站点中使用 `pjax` 插件,请进入 NexT 配置文件,你会看到如下内容:
例如,你想要在你的站点中使用 `pjax` 插件,请进入 NexT 配置文件,启用 `pjax` 配置项:

@@ -58,6 +58,6 @@ ```yml

# Dependencies: https://github.com/theme-next/theme-next-pjax
pjax: false
pjax: true
```
启用 `pjax` 配置项,打开它上面的 «Dependencies» 链接以查看它的安装步骤。
然后,打开它上面的 «Dependencies» 链接以查看它的安装步骤。

@@ -68,3 +68,3 @@ ### 设置 CDN

例如,你使用了 `mediumzoom` 插件并且配置了 CDN 加载链接,进入 Next 配置文件,你会看到如下内容:
例如,你想要使用 `mediumzoom` 插件并通过 CDN 加载,进入 Next 配置文件并找到如下内容:

@@ -79,7 +79,5 @@ ```yml

通过设置 CDN 链接来代替通过[插件列表][official-plugins-url]项目进行升级。
## 更新
你可以通过如下命令更新到最新的 master 分支:
NexT 每个月都会发布新版本。你可以通过如下命令更新到最新的 master 分支:

@@ -98,6 +96,5 @@ ```sh

* 关注我们的 [Telegram Channel][t-news-url] 以获取最新消息。
* 浏览 [Awesome NexT][awesome-next-url] 列表,与其它用户分享插件和教程。
* 加入我们的 [Telegram][t-chat-url] / [Gitter][gitter-url] / [Riot][riot-url] 聊天。
* 请花几秒钟来[添加或修正翻译][i18n-url]。
* 浏览 [Awesome NexT][awesome-next-url] 列表。
* 在 [GitHub Issues][issues-bug-url] 报告Bug。

@@ -104,0 +101,0 @@ * 在 [GitHub][issues-feat-url] 请求新的功能。

<h1 align="center">从 NexT v5.1.x 更新</h1>
在大多数情况下,NexT V5 版本仍然能够正常运行,但是如果你想获得更多的功能和帮助,还是建议您升级到 NexT V6+ 版本,并移步 [Theme-Next](https://github.com/theme-next/hexo-theme-next) 仓库。
在使用 Hexo 3 时,NexT V5 版本仍然能够正常运行,但是如果你想获得更多的功能和帮助,还是建议您升级到 NexT V7+ 版本,并移步 [Theme-Next](https://github.com/theme-next/hexo-theme-next) 仓库。
在 5.1.x 版本和新版本之间没有很大的革命性改进。主版本号变更至 6 主要是因为:
在 5.1.x 版本和新版本之间没有很大的革命性改进。主版本号变更至 7 主要是因为:
1. 主仓库已从 [iissnan 名下](https://github.com/iissnan/hexo-theme-next) 迁移至 [theme-next](https://github.com/theme-next) 组织。
2. `next/source/lib` 目录下的绝大多数库被移出到了 [NexT 组织的外部仓库](https://github.com/theme-next)中。
3. 第三方插件 [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) 被 [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) 所取代,因为 `hexo-symbols-count-time` 没有任何外部 nodejs 依赖、也没有会导致生成站点时的性能问题 [language filter](https://github.com/willin/hexo-wordcount/issues/7)。
3. 第三方插件 [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) 被 [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) 所取代,因为 `hexo-symbols-count-time` 没有任何外部 Node.js 依赖、也没有会导致生成站点时的性能问题 [language filter](https://github.com/willin/hexo-wordcount/issues/7)。
推荐通过如下步骤从 v5 升级到 v6:
我们推荐通过如下步骤从 v5 升级到 v7:

@@ -36,3 +36,6 @@ 1. 并不修改原有的 `next` 目录,而只是复制部分 NexT 文件:

升级到 v6.0.3 及以后版本的用户,需要显式修改 Hexo 主配置文件 `_config.yml` 里的 `language` 配置,否则语言显示不正确。
5. 更新 Hexo 和 Hexo 插件
如果完成了以上步骤后,执行 `hexo s` 或 `hexo g` 出现错误,这意味着可能是旧版的 Hexo 和 Hexo 插件与新版的 NexT 主题产生了冲突。我们建议将 Hexo 升级至 4.0 以上的版本,将 Hexo 插件升级到最新版本。你可以执行 `npm outdated` 查看所有可以升级的插件。
关于第三方库的启用,参见[这里](https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/INSTALLATION.md#插件)。

@@ -15,3 +15,3 @@ const fs = require('fs');

gulp.task('lint:stylus', shell.task([
'"./node_modules/.bin/stylint" ./source/css/'
'npx stylint ./source/css/'
]));

@@ -18,0 +18,0 @@

{
"name": "hexo-theme-next",
"version": "7.7.2",
"version": "7.8.0",
"description": "Elegant and powerful theme for Hexo.",

@@ -26,3 +26,3 @@ "main": "gulpfile.js",

"eslint": "^6.8.0",
"eslint-config-theme-next": "^1.1.3",
"eslint-config-theme-next": "^1.1.4",
"gulp": "^4.0.2",

@@ -29,0 +29,0 @@ "gulp-eslint": "^6.0.0",

@@ -16,3 +16,3 @@ <div align="right">

<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E=10.9.0-green?style=flat-square"></a>
<a href="https://hexo.io"><img src="https://img.shields.io/badge/hexo-%3E=3.5.0-blue?style=flat-square&logo=hexo"></a>
<a href="https://hexo.io"><img src="https://img.shields.io/badge/hexo-%3E=4.0.0-blue?style=flat-square&logo=hexo"></a>
<a href="https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md"><img src="https://img.shields.io/badge/license-%20AGPL-orange?style=flat-square&logo=gnu"></a>

@@ -50,5 +50,5 @@ <br>

In NexT config now you can find dependencies on each module which was moved to external repositories which can be found by [main organization link][official-plugins-url].
NexT supports a large number of third-party plugins, which can be easily configured.
For example, if you want to enable `pjax` on your site, go to NexT config and see:
For example, if you want to enable `pjax` on your site, just set `pjax` to `true` in NexT config file:

@@ -58,12 +58,12 @@ ```yml

# Dependencies: https://github.com/theme-next/theme-next-pjax
pjax: false
pjax: true
```
Then turn on `pjax` and go to «Dependencies» link with installation instructions of this module.
Then visit the «Dependencies» link to get the installation instructions of this module.
### Configure CDN
If you use CDN for any plugins, you need to replace your CDN link.
If you want to specify a CDN link for any plugins, you need to set / update the CDN link.
For example, if you want to use `mediumzoom` and you configured a CDN link, go to NexT config and see:
For example, if you want to use `mediumzoom` and load the plugin via CDN, go to NexT config and see:

@@ -78,7 +78,5 @@ ```yml

Instead of defining [main organization link][official-plugins-url] for updates.
## Update
You can update to latest master branch by the following command:
NexT releases new versions every month. You can update to latest master branch by the following command:

@@ -97,6 +95,5 @@ ```sh

* Follow us with [Telegram Channel][t-news-url] for latest news.
* Visit the [Awesome NexT][awesome-next-url] list to share plugins and tutorials with other users.
* Join our [Telegram][t-chat-url] / [Gitter][gitter-url] / [Riot][riot-url] chats.
* [Add or improve translation][i18n-url] in few seconds.
* Visit the [Awesome NexT][awesome-next-url] list.
* Report a bug in [GitHub Issues][issues-bug-url].

@@ -110,3 +107,3 @@ * Request a new feature on [GitHub][issues-feat-url].

Also, we welcome Issue or PR to [official-plugins][official-plugins-url].
Also, we welcome Issue or PR to our [official-plugins][official-plugins-url].

@@ -113,0 +110,0 @@ ## Contributors

@@ -22,3 +22,3 @@ /* global hexo */

}, res => {
var result = '';
let result = '';
res.on('data', data => {

@@ -29,6 +29,6 @@ result += data;

try {
var latest = JSON.parse(result).tag_name.replace('v', '').split('.');
var current = version.split('.');
var isOutdated = false;
for (var i = 0; i < Math.max(latest.length, current.length); i++) {
let latest = JSON.parse(result).tag_name.replace('v', '').split('.');
let current = version.split('.');
let isOutdated = false;
for (let i = 0; i < Math.max(latest.length, current.length); i++) {
if (!current[i] || latest[i] > current[i]) {

@@ -45,8 +45,11 @@ isOutdated = true;

}
} catch (e) {
} catch (err) {
hexo.log.error('Failed to detect version info. Error message:');
hexo.log.error(e);
hexo.log.error(err);
}
});
}).on('error', err => {
hexo.log.error('Failed to detect version info. Error message:');
hexo.log.error(err);
});
});

@@ -19,7 +19,4 @@ 'use strict';

module.exports = hexo => {
if (!hexo.locals.get) return;
let data = hexo.locals.get('data');
var data = hexo.locals.get('data');
if (!data) return;
/**

@@ -49,6 +46,6 @@ * Merge configs from _data/next.yml into hexo.theme.config.

if (data.languages) {
var { language } = hexo.config;
var { i18n } = hexo.theme;
let { language } = hexo.config;
let { i18n } = hexo.theme;
var mergeLang = lang => {
const mergeLang = lang => {
i18n.set(lang, merge(i18n.get([lang]), data.languages[lang]));

@@ -55,0 +52,0 @@ };

@@ -10,2 +10,3 @@ /* global hexo */

const { __, theme } = locals;
const { i18n } = hexo.theme;
// Hexo & NexT version

@@ -19,6 +20,9 @@ locals.hexo_version = env.version;

locals.description = __('description') !== 'description' ? __('description') : config.description;
locals.languages = [...i18n.languages];
locals.languages.splice(locals.languages.indexOf('default'), 1);
locals.page.lang = locals.page.lang || locals.page.language;
// Creative Commons
locals.ccURL = 'https://creativecommons.org/' + (theme.creative_commons.license === 'zero' ? 'publicdomain/zero/1.0/' : 'licenses/' + theme.creative_commons.license + '/4.0/') + (theme.creative_commons.language || '');
// PJAX
locals.pjax = theme.pjax ? ' pjax' : '';
locals.pjax = theme.pjax ? ' data-pjax' : '';
});

@@ -14,3 +14,3 @@ /* global hexo */

const url = require('url');
var siteHost = url.parse(config.url).hostname || config.url;
const siteHost = url.parse(config.url).hostname || config.url;
data.content = data.content.replace(/<a[^>]* href="([^"]+)"[^>]*>([^<]+)<\/a>/img, (match, href, html) => {

@@ -21,3 +21,3 @@ // Exit if the href attribute doesn't exists.

// Exit if the url has same host with `config.url`, which means it's an internal link.
var link = url.parse(href);
let link = url.parse(href);
if (!link.protocol || link.hostname === siteHost) return match;

@@ -24,0 +24,0 @@

@@ -60,6 +60,5 @@ /* global hexo */

hexo.extend.helper.register('canonical', function() {
// https://support.google.com/webmasters/answer/139066
const { permalink } = hexo.config;
const { canonical } = hexo.theme.config;
if (!canonical) return '';
var url = this.url.replace(/index\.html$/, '');
let url = this.url.replace(/index\.html$/, '');
if (!permalink.endsWith('.html')) {

@@ -70,1 +69,18 @@ url = url.replace(/\.html$/, '');

});
/**
* Get page path given a certain language tag
*/
hexo.extend.helper.register('i18n_path', function(language) {
const { path, lang } = this.page;
const base = path.startsWith(lang) ? path.slice(lang.length + 1) : path;
return this.url_for(`${this.languages.indexOf(language) === 0 ? '' : '/' + language}/${base}`);
});
/**
* Get the language name
*/
hexo.extend.helper.register('language_name', function(language) {
const name = hexo.theme.i18n.__(language)('name');
return name === 'name' ? language : name;
});

@@ -6,13 +6,13 @@ /* global hexo */

hexo.extend.helper.register('next_font', () => {
var config = hexo.theme.config.font;
const config = hexo.theme.config.font;
if (!config || !config.enable) return '';
var fontDisplay = '&display=swap';
var fontSubset = '&subset=latin,latin-ext';
var fontStyles = ':300,300italic,400,400italic,700,700italic';
var fontHost = config.host || '//fonts.googleapis.com';
const fontDisplay = '&display=swap';
const fontSubset = '&subset=latin,latin-ext';
const fontStyles = ':300,300italic,400,400italic,700,700italic';
const fontHost = config.host || '//fonts.googleapis.com';
//Get a font list from config
var fontFamilies = ['global', 'title', 'headings', 'posts', 'codes'].map(item => {
let fontFamilies = ['global', 'title', 'headings', 'posts', 'codes'].map(item => {
if (config[item] && config[item].family && config[item].external) {

@@ -19,0 +19,0 @@ return config[item].family + fontStyles;

@@ -10,9 +10,9 @@ /* global hexo */

const { config } = this;
var data = url.parse(path);
var siteHost = url.parse(config.url).hostname || config.url;
const data = url.parse(path);
const siteHost = url.parse(config.url).hostname || config.url;
var theme = hexo.theme.config;
var exturl = '';
var tag = 'a';
var attrs = { href: this.url_for(path) };
const theme = hexo.theme.config;
let exturl = '';
let tag = 'a';
let attrs = { href: this.url_for(path) };

@@ -23,3 +23,3 @@ // If `exturl` enabled, set spanned links only on external links.

exturl = 'exturl';
var encoded = Buffer.from(path).toString('base64');
const encoded = Buffer.from(path).toString('base64');
attrs = {

@@ -26,0 +26,0 @@ class : exturl,

@@ -10,5 +10,6 @@ /**

function pdf(args) {
return `<div class="pdf" target="${args[0]}" height="${args[1] || ''}"></div>`;
let theme = hexo.theme.config;
return `<div class="pdfobject-container" data-target="${args[0]}" data-height="${args[1] || theme.pdf.height}"></div>`;
}
hexo.extend.tag.register('pdf', pdf, {ends: false});

@@ -101,4 +101,3 @@ /* global instantsearch, algoliasearch, CONFIG */

document.body.style.overflow = 'hidden';
document.querySelector('.search-pop-overlay').style.display = 'block';
document.querySelector('.popup').style.display = 'block';
document.querySelector('.search-pop-overlay').classList.add('search-active');
document.querySelector('.search-input').focus();

@@ -111,7 +110,10 @@ });

document.body.style.overflow = '';
document.querySelector('.search-pop-overlay').style.display = 'none';
document.querySelector('.popup').style.display = 'none';
document.querySelector('.search-pop-overlay').classList.remove('search-active');
};
document.querySelector('.search-pop-overlay').addEventListener('click', onPopupClose);
document.querySelector('.search-pop-overlay').addEventListener('click', event => {
if (event.target === document.querySelector('.search-pop-overlay')) {
onPopupClose();
}
});
document.querySelector('.popup-btn-close').addEventListener('click', onPopupClose);

@@ -118,0 +120,0 @@ window.addEventListener('pjax:success', onPopupClose);

@@ -12,25 +12,14 @@ /* global CONFIG */

searchPath = 'search.xml';
} else if (/json$/i.test(searchPath)) {
} else if (searchPath.endsWith('json')) {
isXml = false;
}
const path = CONFIG.root + searchPath;
const input = document.querySelector('.search-input');
const resultContent = document.getElementById('search-result');
// Ref: https://github.com/ForbesLindesay/unescape-html
const unescapeHtml = html => {
return String(html)
.replace(/&quot;/g, '"')
.replace(/&#39;/g, '\'')
.replace(/&#x3A;/g, ':')
// Replace all the other &#x; chars
.replace(/&#(\d+);/g, (m, p) => {
return String.fromCharCode(p);
})
.replace(/&lt;/g, '<')
.replace(/&gt;/g, '>')
.replace(/&amp;/g, '&');
};
const getIndexByWord = (word, text, caseSensitive) => {
if (CONFIG.localsearch.unescape) {
let div = document.createElement('div');
div.innerText = word;
word = div.innerHTML;
}
let wordLen = word.length;

@@ -46,6 +35,3 @@ if (wordLen === 0) return [];

while ((position = text.indexOf(word, startPosition)) > -1) {
index.push({
position: position,
word : word
});
index.push({ position, word });
startPosition = position + wordLen;

@@ -67,4 +53,4 @@ }

hits.push({
position: position,
length : word.length
position,
length: word.length
});

@@ -109,2 +95,3 @@ let wordEnd = position + word.length;

const inputEventFunction = () => {
if (!isfetched) return;
let searchText = input.value.trim().toLowerCase();

@@ -118,16 +105,8 @@ let keywords = searchText.split(/[-\s]+/);

// Perform local searching
datas.forEach(data => {
// Only match articles with not empty titles
if (!data.title) return;
let searchTextCount = 0;
let title = data.title.trim();
datas.forEach(({ title, content, url }) => {
let titleInLowerCase = title.toLowerCase();
let content = data.content ? data.content.trim().replace(/<[^>]+>/g, '') : '';
if (CONFIG.localsearch.unescape) {
content = unescapeHtml(content);
}
let contentInLowerCase = content.toLowerCase();
let articleUrl = decodeURIComponent(data.url).replace(/\/{2,}/g, '/');
let indexOfTitle = [];
let indexOfContent = [];
let searchTextCount = 0;
keywords.forEach(keyword => {

@@ -198,9 +177,9 @@ indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));

if (slicesOfTitle.length !== 0) {
resultItem += `<li><a href="${articleUrl}" class="search-result-title">${highlightKeyword(title, slicesOfTitle[0])}</a>`;
resultItem += `<li><a href="${url}" class="search-result-title">${highlightKeyword(title, slicesOfTitle[0])}</a>`;
} else {
resultItem += `<li><a href="${articleUrl}" class="search-result-title">${title}</a>`;
resultItem += `<li><a href="${url}" class="search-result-title">${title}</a>`;
}
slicesOfContent.forEach(slice => {
resultItem += `<a href="${articleUrl}"><p class="search-result">${highlightKeyword(content, slice)}...</p></a>`;
resultItem += `<a href="${url}"><p class="search-result">${highlightKeyword(content, slice)}...</p></a>`;
});

@@ -210,6 +189,6 @@

resultItems.push({
item : resultItem,
searchTextCount: searchTextCount,
hitCount : hitCount,
id : resultItems.length
item: resultItem,
id : resultItems.length,
hitCount,
searchTextCount
});

@@ -232,8 +211,3 @@ }

});
let searchResultList = '<ul class="search-result-list">';
resultItems.forEach(result => {
searchResultList += result.item;
});
searchResultList += '</ul>';
resultContent.innerHTML = searchResultList;
resultContent.innerHTML = `<ul class="search-result-list">${resultItems.map(result => result.item).join('')}</ul>`;
window.pjax && window.pjax.refresh(resultContent);

@@ -243,4 +217,4 @@ }

const fetchData = callback => {
fetch(path)
const fetchData = () => {
fetch(CONFIG.root + searchPath)
.then(response => response.text())

@@ -252,15 +226,17 @@ .then(res => {

return {
title : element.querySelector('title').innerHTML,
content: element.querySelector('content').innerHTML,
url : element.querySelector('url').innerHTML
title : element.querySelector('title').textContent,
content: element.querySelector('content').textContent,
url : element.querySelector('url').textContent
};
}) : JSON.parse(res);
// Only match articles with not empty titles
datas = datas.filter(data => data.title).map(data => {
data.title = data.title.trim();
data.content = data.content ? data.content.trim().replace(/<[^>]+>/g, '') : '';
data.url = decodeURIComponent(data.url).replace(/\/{2,}/g, '/');
return data;
});
// Remove loading animation
document.querySelector('.search-pop-overlay').innerHTML = '';
document.body.style.overflow = '';
if (callback) {
callback();
}
document.getElementById('no-result').innerHTML = '<i class="fa fa-search fa-5x"></i>';
inputEventFunction();
});

@@ -273,16 +249,2 @@ };

const proceedSearch = () => {
document.body.style.overflow = 'hidden';
document.querySelector('.search-pop-overlay').style.display = 'block';
document.querySelector('.popup').style.display = 'block';
document.querySelector('.search-input').focus();
};
// Search function
const searchFunc = () => {
document.querySelector('.search-pop-overlay').style.display = '';
document.querySelector('.search-pop-overlay').innerHTML = '<div class="search-loading-icon"><i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i></div>';
fetchData(proceedSearch);
};
if (CONFIG.localsearch.trigger === 'auto') {

@@ -302,3 +264,6 @@ input.addEventListener('input', inputEventFunction);

element.addEventListener('click', () => {
isfetched ? proceedSearch() : searchFunc();
document.body.style.overflow = 'hidden';
document.querySelector('.search-pop-overlay').classList.add('search-active');
input.focus();
if (!isfetched) fetchData();
});

@@ -310,7 +275,10 @@ });

document.body.style.overflow = '';
document.querySelector('.search-pop-overlay').style.display = 'none';
document.querySelector('.popup').style.display = 'none';
document.querySelector('.search-pop-overlay').classList.remove('search-active');
};
document.querySelector('.search-pop-overlay').addEventListener('click', onPopupClose);
document.querySelector('.search-pop-overlay').addEventListener('click', event => {
if (event.target === document.querySelector('.search-pop-overlay')) {
onPopupClose();
}
});
document.querySelector('.popup-btn-close').addEventListener('click', onPopupClose);

@@ -317,0 +285,0 @@ window.addEventListener('pjax:success', onPopupClose);

@@ -91,2 +91,3 @@ /* global NexT, CONFIG, Velocity */

NexT.utils.registerActiveMenuItem();
NexT.utils.registerLangSelect();
NexT.utils.registerSidebarTOC();

@@ -93,0 +94,0 @@ NexT.utils.wrapTableWithBox();

@@ -50,6 +50,6 @@ /* global NexT, CONFIG */

let height = this.element.offsetHeight;
let offset = this.offset;
let { offset } = this;
let offsetTop = offset.top;
let offsetBottom = offset.bottom;
let scrollHeight = document.body.scrollHeight;
let { scrollHeight } = document.body;
let affix = this.getState(scrollHeight, height, offsetTop, offsetBottom);

@@ -56,0 +56,0 @@ if (this.affixed !== affix) {

@@ -47,9 +47,13 @@ /* global NexT, CONFIG */

registerExtURL: function() {
document.querySelectorAll('.exturl').forEach(element => {
element.addEventListener('click', event => {
var exturl = event.currentTarget.dataset.url;
var decurl = decodeURIComponent(escape(window.atob(exturl)));
window.open(decurl, '_blank', 'noopener');
return false;
});
document.querySelectorAll('span.exturl').forEach(element => {
let link = document.createElement('a');
// https://stackoverflow.com/questions/30106476/using-javascripts-atob-to-decode-base64-doesnt-properly-decode-utf-8-strings
link.href = decodeURIComponent(atob(element.dataset.url).split('').map(c => {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
link.rel = 'noopener external nofollow noreferrer';
link.target = '_blank';
link.className = element.className;
link.innerHTML = element.innerHTML;
element.parentNode.replaceChild(link, element);
});

@@ -212,3 +216,3 @@ },

var isSamePath = target.pathname === location.pathname || target.pathname === location.pathname.replace('index.html', '');
var isSubPath = target.pathname !== CONFIG.root && location.pathname.indexOf(target.pathname) === 0;
var isSubPath = !CONFIG.root.startsWith(target.pathname) && location.pathname.startsWith(target.pathname);
element.classList.toggle('menu-item-active', target.hostname === location.hostname && (isSamePath || isSubPath));

@@ -218,2 +222,14 @@ });

registerLangSelect: function() {
let sel = document.querySelector('.lang-select');
if (!sel) return;
sel.value = CONFIG.page.lang;
sel.addEventListener('change', () => {
let target = sel.options[sel.selectedIndex];
document.querySelector('.lang-select-label span').innerText = target.text;
let url = target.dataset.href;
window.pjax ? window.pjax.loadUrl(url) : window.location.href = url;
});
},
registerSidebarTOC: function() {

@@ -300,4 +316,4 @@ const navItems = document.querySelectorAll('.post-toc li');

hasMobileUA: function() {
var ua = navigator.userAgent;
var pa = /iPad|iPhone|Android|Opera Mini|BlackBerry|webOS|UCWEB|Blazer|PSP|IEMobile|Symbian/g;
let ua = navigator.userAgent;
let pa = /iPad|iPhone|Android|Opera Mini|BlackBerry|webOS|UCWEB|Blazer|PSP|IEMobile|Symbian/g;
return pa.test(ua);

@@ -318,2 +334,10 @@ },

supportsPDFs: function() {
let ua = navigator.userAgent;
let isFirefoxWithPDFJS = ua.includes('irefox') && parseInt(ua.split('rv:')[1].split('.')[0], 10) > 18;
let supportsPdfMimeType = typeof navigator.mimeTypes['application/pdf'] !== 'undefined';
let isIOS = /iphone|ipad|ipod/i.test(ua.toLowerCase());
return isFirefoxWithPDFJS || (supportsPdfMimeType && !isIOS);
},
/**

@@ -320,0 +344,0 @@ * Init Sidebar & TOC inner dimensions on all pages and for all schemes.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc