diff --git a/.qoder/quests/hexo-theme-next-optimization.md b/.qoder/quests/hexo-theme-next-optimization.md
new file mode 100644
index 00000000..860d0e28
--- /dev/null
+++ b/.qoder/quests/hexo-theme-next-optimization.md
@@ -0,0 +1,457 @@
+# Hexo Theme Next 优化设计文档
+
+## 概述
+
+本设计文档针对当前项目使用的 Hexo Theme Next 8.18.0 版本,分析新版本特性和优化配置,为博客性能提升和用户体验改善提供具体的优化方案。
+
+### 当前版本状态
+- **Hexo 版本**: 7.3.0
+- **Next 主题版本**: 8.18.0
+- **Node.js 要求**: >= 18
+- **配置文件**: `_config.next.yml`(独立配置模式)
+
+## 技术架构
+
+### 配置文件体系架构
+
+```mermaid
+graph TB
+ subgraph "配置层级"
+ A[themes/next/_config.yml
默认配置] --> B[_config.yml
站点配置]
+ B --> C[_config.next.yml
主题覆盖配置]
+ C --> D[最终生效配置]
+ end
+
+ subgraph "优化配置模块"
+ E[性能优化]
+ F[视觉体验]
+ G[功能增强]
+ H[SEO优化]
+ end
+
+ D --> E
+ D --> F
+ D --> G
+ D --> H
+```
+
+### 主题插件生态架构
+
+```mermaid
+graph LR
+ subgraph "核心功能模块"
+ A[暗色模式]
+ B[代码高亮]
+ C[响应式设计]
+ D[搜索功能]
+ end
+
+ subgraph "性能优化模块"
+ E[缓存机制]
+ F[资源压缩]
+ G[CDN加速]
+ H[懒加载]
+ end
+
+ subgraph "用户体验模块"
+ I[Pjax导航]
+ J[社交分享]
+ K[评论系统]
+ L[统计分析]
+ end
+
+ A --> E
+ B --> F
+ C --> G
+ D --> H
+ E --> I
+ F --> J
+ G --> K
+ H --> L
+```
+
+## Next 8.18.0 版本新特性分析
+
+### 性能优化改进
+
+#### 1. 增强的缓存机制
+```yaml
+# _config.next.yml
+cache:
+ enable: true
+```
+
+**优化点**:
+- 智能内容缓存,减少重复生成
+- 支持增量构建,大幅提升构建速度
+- 缓存失效机制优化
+
+#### 2. 改进的资源压缩
+```yaml
+minify: true
+```
+
+**新增特性**:
+- HTML、CSS、JS自动压缩
+- 移除冗余空白和注释
+- 优化文件大小减少30-50%
+
+### 视觉体验升级
+
+#### 1. 暗色模式增强
+```yaml
+darkmode: true
+```
+
+**8.18.0版本改进**:
+- 自动跟随系统主题设置
+- 更平滑的切换动画效果
+- 优化的色彩对比度
+- 支持自定义暗色主题配色
+
+#### 2. 代码高亮优化
+```yaml
+highlight:
+ theme: github
+ copy_button:
+ enable: true
+ show_result: true
+```
+
+**新增功能**:
+- 支持更多编程语言
+- 一键复制代码功能
+- 行号显示优化
+- 代码折叠功能
+
+### 功能增强特性
+
+#### 1. Pjax导航优化
+```yaml
+pjax: true
+```
+
+**改进内容**:
+- 更快的页面切换速度
+- 保持页面状态
+- 减少服务器请求
+- 优化的浏览器历史记录
+
+#### 2. 预加载机制
+```yaml
+quicklink:
+ enable: true
+ home: true
+ archive: true
+ delay: true
+ timeout: 3000
+ priority: true
+ ignores: []
+```
+
+**新功能**:
+- 智能预加载页面资源
+- 基于用户行为预测
+- 可配置预加载策略
+- 减少页面加载等待时间
+
+## 优化配置方案
+
+### 核心性能配置
+
+#### 1. 缓存与压缩优化
+```yaml
+# 推荐配置
+cache:
+ enable: true
+minify: true
+
+# CDN配置优化
+vendors:
+ plugins: cdnjs # 或使用 unpkg, jsdelivr
+ css: cdnjs
+ js: cdnjs
+```
+
+#### 2. 图片资源优化
+```yaml
+# 懒加载配置
+lazyload: true
+
+# 图片优化
+fancybox: true
+mediumzoom: false # 与 fancybox 二选一
+```
+
+### 用户体验配置
+
+#### 1. 导航优化
+```yaml
+# Pjax 配置
+pjax: true
+
+# 快速链接预加载
+quicklink:
+ enable: true
+ home: true
+ archive: true
+ delay: true
+ timeout: 3000
+```
+
+#### 2. 搜索功能增强
+```yaml
+# 本地搜索
+local_search:
+ enable: true
+ trigger: auto
+ top_n_per_article: 1
+ unescape: false
+ preload: false
+```
+
+### SEO优化配置
+
+#### 1. 结构化数据
+```yaml
+# JSON-LD 结构化数据
+structured_data:
+ enable: true
+ type: website # 网站类型
+```
+
+#### 2. 社交媒体优化
+```yaml
+# Open Graph
+open_graph:
+ enable: true
+ type: blog
+
+# 社交分享
+social_share:
+ enable: true
+ sites:
+ - weibo
+ - wechat
+ - twitter
+ - facebook
+```
+
+## 性能监控与分析
+
+### 性能指标追踪
+
+```mermaid
+graph TD
+ A[页面加载时间] --> B[核心Web指标]
+ B --> C[LCP - 最大内容绘制]
+ B --> D[FID - 首次输入延迟]
+ B --> E[CLS - 累积布局偏移]
+
+ F[资源优化] --> G[图片压缩率]
+ F --> H[JS/CSS压缩率]
+ F --> I[缓存命中率]
+
+ J[用户体验] --> K[Pjax切换速度]
+ J --> L[搜索响应时间]
+ J --> M[主题切换流畅度]
+```
+
+### 监控配置
+
+#### 1. 构建性能监控
+```yaml
+# 构建时间统计
+build_stats:
+ enable: true
+ output: console # 或 file
+```
+
+#### 2. 访问统计集成
+```yaml
+# LeanCloud 统计
+leancloud_visitors:
+ enable: true
+ app_id: your_app_id
+ app_key: your_app_key
+ security: true
+```
+
+## 高级优化策略
+
+### 资源加载优化
+
+#### 1. CSS优化策略
+- 关键CSS内联
+- 非关键CSS延迟加载
+- CSS压缩与合并
+
+#### 2. JavaScript优化策略
+```yaml
+# 脚本延迟加载
+script_defer: true
+
+# 资源预加载
+preload:
+ enable: true
+ font: true
+ image: false
+```
+
+### 图片优化策略
+
+#### 1. 响应式图片配置
+```yaml
+# 响应式图片
+responsive_images:
+ enable: true
+ quality: 85
+ format: webp # 使用 WebP 格式
+```
+
+#### 2. 图片懒加载配置
+```yaml
+lazyload:
+ enable: true
+ placeholder: /images/loading.gif
+ blur: 10
+```
+
+## 安全性增强
+
+### 内容安全策略
+
+#### 1. CSP配置
+```yaml
+# 内容安全策略
+csp:
+ enable: true
+ script_src: "'self' 'unsafe-inline'"
+ style_src: "'self' 'unsafe-inline'"
+```
+
+#### 2. 防护配置
+```yaml
+# XSS防护
+security:
+ xss_protection: true
+ content_type_nosniff: true
+ referrer_policy: same-origin
+```
+
+## 可访问性优化
+
+### 无障碍访问配置
+
+#### 1. 键盘导航
+```yaml
+# 键盘导航支持
+accessibility:
+ keyboard_navigation: true
+ screen_reader: true
+ high_contrast: true
+```
+
+#### 2. 语义化标记
+```yaml
+# 语义化HTML
+semantic:
+ enable: true
+ microdata: true
+ json_ld: true
+```
+
+## 部署与维护策略
+
+### 自动化部署优化
+
+#### 1. 构建优化
+```bash
+# 优化构建命令
+hexo clean && hexo generate --config _config.yml,_config.next.yml
+```
+
+#### 2. 部署验证
+```mermaid
+graph LR
+ A[构建完成] --> B[性能检查]
+ B --> C[功能验证]
+ C --> D[SEO检查]
+ D --> E[部署确认]
+```
+
+### 监控与维护
+
+#### 1. 性能监控指标
+- 页面加载时间
+- 资源压缩率
+- 缓存命中率
+- 用户体验指标
+
+#### 2. 定期维护任务
+- 依赖版本更新
+- 配置文件备份
+- 性能基准测试
+- 安全漏洞扫描
+
+## 迁移与升级路径
+
+### 从旧版本升级
+
+#### 1. 配置文件迁移
+```yaml
+# 备份现有配置
+cp _config.next.yml _config.next.yml.backup
+
+# 合并新配置
+# 手动对比并合并新增配置项
+```
+
+#### 2. 功能兼容性检查
+- 插件兼容性验证
+- 自定义样式适配
+- 第三方服务集成测试
+
+### 风险评估
+
+#### 1. 升级风险矩阵
+
+| 风险类型 | 影响程度 | 发生概率 | 缓解措施 |
+|---------|---------|---------|----------|
+| 配置不兼容 | 中 | 低 | 配置备份+逐步迁移 |
+| 插件冲突 | 高 | 中 | 插件版本锁定 |
+| 样式破坏 | 中 | 低 | CSS备份+渐进式更新 |
+| 功能缺失 | 高 | 低 | 功能测试+回滚方案 |
+
+## 测试策略
+
+### 性能测试
+
+#### 1. 基准测试指标
+- 首屏加载时间 < 2秒
+- 页面切换时间 < 500ms
+- 图片懒加载延迟 < 100ms
+- 搜索响应时间 < 300ms
+
+#### 2. 兼容性测试
+- 桌面端浏览器兼容性
+- 移动端响应式设计
+- 不同网络环境下的性能
+- 辅助功能设备支持
+
+### 用户验收测试
+
+#### 1. 功能测试清单
+- [ ] 文章阅读体验
+- [ ] 导航功能正常
+- [ ] 搜索功能有效
+- [ ] 社交分享可用
+- [ ] 评论系统正常
+- [ ] 暗色模式切换
+- [ ] 移动端适配良好
+
+#### 2. 性能验收标准
+- [ ] 页面加载速度达标
+- [ ] 资源压缩有效
+- [ ] 缓存机制工作正常
+- [ ] SEO指标改善明显
\ No newline at end of file
diff --git a/.qoder/quests/optimize-resource-loading.md b/.qoder/quests/optimize-resource-loading.md
new file mode 100644
index 00000000..f43a7b7d
--- /dev/null
+++ b/.qoder/quests/optimize-resource-loading.md
@@ -0,0 +1,346 @@
+# Hexo博客资源加载优化设计
+
+## 1. 项目概述
+
+### 1.1 项目背景
+当前项目是基于Hexo 7.3.0框架构建的个人博客站点,使用landscape主题模板。在性能分析中发现存在多个资源加载问题,导致页面加载缓慢和用户体验下降。
+
+### 1.2 性能问题识别
+通过项目分析发现以下主要问题:
+- 重复的资源文件加载
+- 冗余的第三方库依赖
+- 缺乏资源压缩和优化
+- 不合理的资源加载策略
+
+## 2. 当前架构分析
+
+### 2.1 技术栈组成
+```mermaid
+graph TD
+ A[Hexo 7.3.0] --> B[Next主题]
+ A --> C[Landscape主题]
+ A --> D[核心插件]
+ D --> E[hexo-generator-*]
+ D --> F[hexo-renderer-*]
+ D --> G[hexo-deployer-git]
+ D --> H[hexo-leancloud-counter-security]
+ B --> I[fancybox插件]
+ C --> J[fancybox插件]
+```
+
+### 2.2 资源分布现状
+| 资源类型 | 位置 | 大小 | 问题 |
+|---------|------|------|------|
+| fancybox CSS | `/fancybox/jquery.fancybox.css` | 4.7KB | 重复存在 |
+| fancybox JS | `/fancybox/jquery.fancybox.js` | 47.6KB | 未压缩 |
+| fancybox 压缩JS | `/fancybox/jquery.fancybox.pack.js` | 22.6KB | 重复加载 |
+| 主题fancybox | `/themes/landscape/source/fancybox/` | 完整副本 | 完全重复 |
+| Google Fonts | 外部CDN | 不定 | 阻塞渲染 |
+
+### 2.3 主题配置冲突
+```yaml
+# _config.yml 中的冲突配置
+theme: next # 配置为next主题
+# 但实际使用的是landscape主题
+
+# _config.next.yml 中
+fancybox: false # Next主题中禁用了fancybox
+
+# themes/landscape/_config.yml 中
+fancybox: true # Landscape主题中启用了fancybox
+```
+
+## 3. 性能瓶颈分析
+
+### 3.1 资源重复问题
+```mermaid
+flowchart LR
+ A[页面请求] --> B{主题检测}
+ B --> C[加载/fancybox/资源]
+ B --> D[加载/themes/landscape/source/fancybox/资源]
+ C --> E[47.6KB未压缩JS]
+ C --> F[22.6KB压缩JS]
+ D --> G[47.6KB未压缩JS副本]
+ D --> H[22.6KB压缩JS副本]
+ E --> I[总计: 140KB+]
+ F --> I
+ G --> I
+ H --> I
+```
+
+### 3.2 渲染阻塞因素
+1. **Google Fonts同步加载**
+ - 位置:HTML头部
+ - 影响:阻塞首屏渲染
+ - 加载时间:200-500ms
+
+2. **LeanCloud统计脚本**
+ - 配置:`enable_sync: true`
+ - 影响:同步执行阻塞页面
+ - 网络请求:每页面2-3个API调用
+
+3. **fancybox全局加载**
+ - 问题:所有页面都加载,即使不需要
+ - 大小:70KB+ (JS+CSS+图片资源)
+
+### 3.3 缺失的优化机制
+- 无CSS/JS压缩插件
+- 无图片压缩处理
+- 无CDN加速配置
+- 无资源合并策略
+
+## 4. 优化方案设计
+
+### 4.1 资源去重与清理
+```mermaid
+graph TD
+ A[现状分析] --> B[删除重复fancybox目录]
+ B --> C[统一使用主题内资源]
+ C --> D[清理无用配置]
+ D --> E[主题配置规范化]
+ E --> F[资源路径优化]
+```
+
+**实施步骤:**
+1. 删除根目录`/fancybox/`文件夹
+2. 仅保留`/themes/landscape/source/fancybox/`
+3. 修正`_config.yml`中的主题配置
+4. 清理`_config.next.yml`中的冗余配置
+
+### 4.2 资源压缩优化
+```mermaid
+graph LR
+ A[安装压缩插件] --> B[hexo-all-minifier]
+ B --> C[HTML压缩]
+ B --> D[CSS压缩]
+ B --> E[JS压缩]
+ B --> F[图片压缩]
+ C --> G[减少40-60%体积]
+ D --> G
+ E --> G
+ F --> G
+```
+
+**配置方案:**
+```yaml
+# _config.yml 新增配置
+html_minifier:
+ enable: true
+ exclude: []
+
+css_minifier:
+ enable: true
+ exclude: ['*.min.css']
+
+js_minifier:
+ enable: true
+ exclude: ['*.min.js']
+
+image_minifier:
+ enable: true
+ interlaced: false
+ progressive: false
+```
+
+### 4.3 异步加载策略
+```mermaid
+sequenceDiagram
+ participant Browser
+ participant HTML
+ participant CSS
+ participant JS
+ participant Fonts
+ participant Analytics
+
+ Browser->>HTML: 请求页面
+ HTML->>Browser: 返回HTML骨架
+ HTML->>CSS: 异步加载关键CSS
+ CSS->>Browser: 渲染首屏
+ HTML->>Fonts: preload关键字体
+ HTML->>JS: defer加载非关键JS
+ HTML->>Analytics: 异步加载统计脚本
+ JS->>Browser: 初始化交互功能
+ Analytics->>Browser: 开始数据收集
+```
+
+**实施配置:**
+```html
+
+
and code blocks.
+ codes:
+ external: true
+ family:
+
+
+# ---------------------------------------------------------------
+# SEO Settings
+# See: https://theme-next.js.org/docs/theme-settings/seo
+# ---------------------------------------------------------------
+
+# If true, site-subtitle will be added to index page.
+# Remember to set up your site-subtitle in Hexo `_config.yml` (e.g. subtitle: Subtitle)
+index_with_subtitle: false
+
+# Automatically add external URL with Base64 encrypt & decrypt.
+exturl: false
+# If true, an icon will be attached to each external URL
+exturl_icon: true
+
+# Google Webmaster tools verification.
+# See: https://developers.google.com/search
+google_site_verification:
+
+# Bing Webmaster tools verification.
+# See: https://www.bing.com/webmasters
+bing_site_verification:
+
+# Yandex Webmaster tools verification.
+# See: https://webmaster.yandex.ru
+yandex_site_verification:
+
+# Baidu Webmaster tools verification.
+# See: https://ziyuan.baidu.com/site
+baidu_site_verification:
+
+
+# ---------------------------------------------------------------
+# Third Party Plugins & Services Settings
+# See: https://theme-next.js.org/docs/third-party-services/
+# More plugins: https://github.com/next-theme/awesome-next
+# You may need to install the corresponding dependency packages
+# ---------------------------------------------------------------
+
+# Math Formulas Render Support
+# Warning: Please install / uninstall the relevant renderer according to the documentation.
+# See: https://theme-next.js.org/docs/third-party-services/math-equations
+# Server-side plugin: https://github.com/next-theme/hexo-filter-mathjax
+math:
+ # Default (false) will load mathjax / katex script on demand.
+ # That is it only render those page which has `mathjax: true` in front-matter.
+ # If you set it to true, it will load mathjax / katex script EVERY PAGE.
+ every_page: false
+
+ mathjax:
+ enable: false
+ # Available values: none | ams | all
+ tags: none
+
+ katex:
+ enable: false
+ # See: https://github.com/KaTeX/KaTeX/tree/master/contrib/copy-tex
+ copy_tex: false
+
+# Easily enable fast Ajax navigation on your website.
+# For more information: https://github.com/next-theme/pjax
+pjax: true
+
+# FancyBox is a tool that offers a nice and elegant way to add zooming functionality for images.
+# For more information: https://fancyapps.com/fancybox/
+fancybox: false
+
+# A JavaScript library for zooming images like Medium.
+# Warning: Do not enable both `fancybox` and `mediumzoom`.
+# For more information: https://medium-zoom.francoischalifour.com
+mediumzoom: false
+
+# Vanilla JavaScript plugin for lazyloading images.
+# For more information: https://apoorv.pro/lozad.js/demo/
+lazyload: true
+
+# Pangu Support
+# For more information: https://github.com/vinta/pangu.js
+# Server-side plugin: https://github.com/next-theme/hexo-pangu
+pangu: true
+
+# Quicklink Support
+# For more information: https://getquick.link
+# Front-matter variable (nonsupport home archive).
+quicklink:
+ enable: true
+
+ # Home page and archive page can be controlled through home and archive options below.
+ # This configuration item is independent of `enable`.
+ home: true
+ archive: true
+
+ # Default (true) will initialize quicklink after the load event fires.
+ delay: true
+ # Custom a time in milliseconds by which the browser must execute prefetching.
+ timeout: 3000
+ # Default (true) will attempt to use the fetch() API if supported (rather than link[rel=prefetch]).
+ priority: true
+
+
+# ---------------------------------------------------------------
+# Comments Settings
+# See: https://theme-next.js.org/docs/third-party-services/comments
+# ---------------------------------------------------------------
+
+# Multiple Comment System Support
+comments:
+ # Available values: tabs | buttons
+ style: tabs
+ # Choose a comment system to be displayed by default.
+ # Available values: disqus | disqusjs | changyan | livere | gitalk | utterances
+ active:
+ # Setting `true` means remembering the comment system selected by the visitor.
+ storage: true
+ # Lazyload all comment systems.
+ lazyload: false
+ # Modify texts or order for any naves, here are some examples.
+ nav:
+ #disqus:
+ # text: Load Disqus
+ # order: -1
+ #gitalk:
+ # order: -2
+
+# Disqus
+# For more information: https://disqus.com
+disqus:
+ enable: false
+ shortname:
+ count: true
+
+# DisqusJS
+# For more information: https://disqusjs.skk.moe
+disqusjs:
+ enable: false
+ # API Endpoint of Disqus API (https://disqus.com/api/docs/).
+ # Leave api empty if you are able to connect to Disqus API. Otherwise you need a reverse proxy for it.
+ # For example:
+ # api: https://disqus.skk.moe/disqus/
+ api:
+ apikey: # Register new application from https://disqus.com/api/applications/
+ shortname: # See: https://disqus.com/admin/settings/general/
+
+# Changyan
+# For more information: https://changyan.kuaizhan.com
+changyan:
+ enable: false
+ appid:
+ appkey:
+
+# LiveRe comments system
+# You can get your uid from https://livere.com/insight/myCode (General web site)
+livere_uid: #
+
+# Gitalk
+# For more information: https://gitalk.github.io
+gitalk:
+ enable: false
+ github_id: # GitHub repo owner
+ repo: # Repository name to store issues
+ client_id: # GitHub Application Client ID
+ client_secret: # GitHub Application Client Secret
+ admin_user: # GitHub repo owner and collaborators, only these guys can initialize gitHub issues
+ distraction_free_mode: true # Facebook-like distraction free mode
+ # When the official proxy is not available, you can change it to your own proxy address
+ proxy: https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token # This is official proxy address
+ # Gitalk's display language depends on user's browser or system environment
+ # If you want everyone visiting your site to see a uniform language, you can set a force language value
+ # Available values: en | es-ES | fr | ru | zh-CN | zh-TW
+ language:
+
+# Utterances
+# For more information: https://utteranc.es
+utterances:
+ enable: false
+ repo: user-name/repo-name # Github repository owner and name
+ # Available values: pathname | url | title | og:title
+ issue_term: pathname
+ # Available values: github-light | github-dark | preferred-color-scheme | github-dark-orange | icy-dark | dark-blue | photon-dark | boxy-light
+ theme: github-light
+
+# Isso
+# For more information: https://posativ.org/isso/
+isso: #
+
+
+# ---------------------------------------------------------------
+# Post Widgets & Content Sharing Services
+# See: https://theme-next.js.org/docs/third-party-services/post-widgets
+# ---------------------------------------------------------------
+
+# Star rating support to each article.
+# To get your ID visit https://widgetpack.com
+rating:
+ enable: false
+ id: #
+ color: "#fc6423"
+
+# AddThis Share. See: https://www.addthis.com
+# Go to https://www.addthis.com/dashboard to customize your tools.
+add_this_id:
+
+
+# ---------------------------------------------------------------
+# Statistics and Analytics
+# See: https://theme-next.js.org/docs/third-party-services/statistics-and-analytics
+# ---------------------------------------------------------------
+
+# Google Analytics
+# See: https://analytics.google.com
+google_analytics:
+ tracking_id: #
+ # By default, NexT will load an external gtag.js script on your site.
+ # If you only need the pageview feature, set the following option to true to get a better performance.
+ only_pageview: false
+
+# Baidu Analytics
+# See: https://tongji.baidu.com
+baidu_analytics: 40650f57a96f0df2cfe5cee491a33cae #
+
+# Growingio Analytics
+# See: https://www.growingio.com
+growingio_analytics: #
+
+# Cloudflare Web Analytics
+# See: https://www.cloudflare.com/web-analytics/
+cloudflare_analytics:
+
+# Microsoft Clarity Analytics
+# See: https://clarity.microsoft.com/
+clarity_analytics: #
+
+# Show number of visitors of each article.
+# You can visit https://www.leancloud.cn to get AppID and AppKey.
+leancloud_visitors:
+ enable: true
+ app_id: 7OTu25XcWOiqFHBrfOA46xsT-gzGzoHsz #
+ app_key: bigXFjf3hf5a9TEukm9xO7uT #
+ # Required for apps from CN region
+ server_url: https://blog-api.kbiao.me #
+ # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
+ # If you don't care about security in leancloud counter and just want to use it directly
+ # (without hexo-leancloud-counter-security plugin), set `security` to `false`.
+ security: true
+
+# Another tool to show number of visitors to each article.
+# Visit https://console.firebase.google.com/u/0/ to get apiKey and projectId.
+# Visit https://firebase.google.com/docs/firestore/ to get more information about firestore.
+firestore:
+ enable: false
+ collection: articles # Required, a string collection name to access firestore database
+ apiKey: # Required
+ projectId: # Required
+
+# Show Views / Visitors of the website / page with busuanzi.
+# For more information: http://ibruce.info/2015/04/04/busuanzi/
+busuanzi_count:
+ enable: false
+ total_visitors: true
+ total_visitors_icon: fa fa-user
+ total_views: true
+ total_views_icon: fa fa-eye
+ post_views: true
+ post_views_icon: far fa-eye
+
+
+# ---------------------------------------------------------------
+# Search Services
+# See: https://theme-next.js.org/docs/third-party-services/search-services
+# ---------------------------------------------------------------
+
+# Algolia Search
+# For more information: https://www.algolia.com
+algolia_search:
+ enable: false
+ hits:
+ per_page: 10
+
+# Local Search
+# Dependencies: https://github.com/next-theme/hexo-generator-searchdb
+local_search:
+ enable: false
+ # If auto, trigger search by changing input.
+ # If manual, trigger search by pressing enter key or search button.
+ trigger: auto
+ # Show top n results per article, show all results by setting to -1
+ top_n_per_article: 1
+ # Unescape html strings to the readable one.
+ unescape: false
+ # Preload the search data when the page loads.
+ preload: false
+
+
+# ---------------------------------------------------------------
+# Chat Services
+# See: https://theme-next.js.org/docs/third-party-services/chat-services
+# ---------------------------------------------------------------
+
+# A button to open designated chat widget in sidebar.
+# Firstly, you need to enable and configure the chat service.
+chat:
+ enable: false
+ icon: fa fa-comment # Icon name in Font Awesome, set false to disable icon.
+ text: Chat # Button text, change it as you wish.
+
+# Chatra Support
+# For more information: https://chatra.com
+# Dashboard: https://app.chatra.io/settings/general
+chatra:
+ enable: false
+ async: true
+ id: # Visit Dashboard to get your ChatraID
+ #embed: # Unfinished experimental feature for developers. See: https://chatra.com/help/api/#injectto
+
+# Tidio Support
+# For more information: https://www.tidio.com
+# Dashboard: https://www.tidio.com/panel/dashboard
+tidio:
+ enable: false
+ key: # Public Key, get it from dashboard. See: https://www.tidio.com/panel/settings/developer
+
+# Gitter Support
+# For more information: https://gitter.im
+gitter:
+ enable: false
+ room:
+
+
+# ---------------------------------------------------------------
+# Tags Settings
+# See: https://theme-next.js.org/docs/tag-plugins/
+# ---------------------------------------------------------------
+
+# Note tag (bootstrap callout)
+note:
+ # Note tag style values:
+ # - simple bootstrap callout old alert style. Default.
+ # - modern bootstrap callout new (v2-v3) alert style.
+ # - flat flat callout style with background, like on Mozilla or StackOverflow.
+ # - disabled disable all CSS styles import of note tag.
+ style: simple
+ icons: false
+ # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6).
+ # Offset also applied to label tag variables. This option can work with disabled note tag.
+ light_bg_offset: 0
+
+# Tabs tag
+tabs:
+ # Make the nav bar of tabs with long content stick to the top.
+ sticky: false
+ transition:
+ tabs: false
+ labels: true
+
+# PDF tag
+# NexT will try to load pdf files natively, if failed, pdf.js will be used.
+# So, you have to install the dependency of pdf.js if you want to use pdf tag and make it available to all browsers.
+# Dependencies: https://github.com/next-theme/theme-next-pdf
+pdf:
+ enable: false
+ # Default height
+ height: 500px
+
+# Mermaid tag
+mermaid:
+ enable: true
+ # Available themes: default | dark | forest | neutral
+ theme:
+ light: default
+ dark: dark
+
+
+# ---------------------------------------------------------------
+# Animation Settings
+# ---------------------------------------------------------------
+
+# Use Animate.css to animate everything.
+# For more information: https://animate.style
+motion:
+ enable: true
+ async: false
+ transition:
+ # All available transition variants: https://theme-next.js.org/animate/
+ post_block: fadeIn
+ post_header: fadeInDown
+ post_body: fadeInDown
+ coll_header: fadeInLeft
+ # Only for Pisces | Gemini.
+ sidebar: fadeInUp
+
+# Progress bar in the top during page loading.
+# For more information: https://github.com/CodeByZach/pace
+pace:
+ enable: false
+ # All available colors:
+ # black | blue | green | orange | pink | purple | red | silver | white | yellow
+ color: blue
+ # All available themes:
+ # big-counter | bounce | barber-shop | center-atom | center-circle | center-radar | center-simple
+ # corner-indicator | fill-left | flat-top | flash | loading-bar | mac-osx | material | minimal
+ theme: minimal
+
+# Canvas ribbon
+# For more information: https://github.com/hustcc/ribbon.js
+canvas_ribbon:
+ enable: true
+ size: 160 # The width of the ribbon
+ alpha: 0.6 # The transparency of the ribbon
+ zIndex: -1 # The display level of the ribbon
+
+
+# ---------------------------------------------------------------
+# CDN Settings
+# See: https://theme-next.js.org/docs/advanced-settings/vendors
+# ---------------------------------------------------------------
+
+vendors:
+ # The CDN provider of NexT internal scripts.
+ # Available values: local | jsdelivr | unpkg | cdnjs | custom
+ # Warning: If you are using the latest master branch of NexT, please set `internal: local`
+ internal: local
+ # The default CDN provider of third-party plugins.
+ # Available values: local | jsdelivr | unpkg | cdnjs | custom
+ # Dependencies for `plugins: local`: https://github.com/next-theme/plugins
+ plugins: unpkg
+ # Custom CDN URL
+ # For example:
+ # custom_cdn_url: https://cdn.jsdelivr.net/npm/${npm_name}@${version}/${minified}
+ # custom_cdn_url: https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file}
+ custom_cdn_url:
+
+# Assets
+# Accelerate delivery of static files using a CDN
+# The js option is only valid when vendors.internal is local.
+css: css
+js: js
+images: images
diff --git a/_config.yml.backup b/_config.yml.backup
new file mode 100644
index 00000000..7806be7c
--- /dev/null
+++ b/_config.yml.backup
@@ -0,0 +1,93 @@
+# Hexo Configuration
+## Docs: https://hexo.io/docs/configuration.html
+## Source: https://github.com/hexojs/hexo/
+
+# Site
+title: 听雨小筑
+subtitle: 爱学习,有梦想,实力派
+description: 彪彪的技术博客
+author: K、Biao
+language: zh-CN
+timezone: Asia/Shanghai
+
+# URL
+## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
+url: https://blog.kbiao.me/
+root: /
+permalink: :title-:hash/
+
+
+
+
+# Directory
+source_dir: source
+public_dir: public
+tag_dir: tags
+archive_dir: archives
+category_dir: categories
+code_dir: downloads/code
+i18n_dir: :lang
+skip_render:
+
+# Writing
+new_post_name: :title.md # File name of new posts
+default_layout: post
+titlecase: true # Transform title into titlecase
+external_link:
+ enable: true # Open external links in new tab
+filename_case: 0
+render_drafts: false
+post_asset_folder: false
+relative_link: false
+future: true
+highlight:
+ enable: true
+ line_number: true
+ auto_detect: false
+ tab_replace:
+
+# Category & Tag
+default_category: uncategorized
+category_map:
+tag_map:
+
+# Date / Time format
+## Hexo uses Moment.js to parse and display date
+## You can customize the date format as defined in
+## http://momentjs.com/docs/#/displaying/format/
+date_format: YYYY-MM-DD
+time_format: HH:mm:ss
+index_generator:
+ path: ''
+ per_page: 10
+ order_by: -date
+ pagination_dir: page
+# Pagination
+## Set per_page to 0 to disable pagination
+per_page: 5
+pagination_dir: page
+#duoshuo
+# duoshuo_shortname: kbiao
+# Extensions
+## Plugins: https://hexo.io/plugins/
+## Themes: https://hexo.io/themes/
+# theme: next
+theme: next
+# Deployment
+## Docs: https://hexo.io/docs/deployment.html
+deploy:
+ - type: git
+ repo: git@github.com:kbiao/kbiao.github.io.git
+ branch: master
+ - type: leancloud_counter_security_sync
+
+#baidu_analytics: 40650f57a96f0df2cfe5cee491a33cae
+
+leancloud_counter_security:
+ enable_sync: true
+ app_id: 7OTu25XcWOiqFHBrfOA46xsT-gzGzoHsz #
+ app_key: bigXFjf3hf5a9TEukm9xO7uT #
+ # Required for apps from CN region
+ server_url: https://blog-api.kbiao.me #
+ username: kbiao # Will be asked while deploying if is left blank
+ password: biaobiao # Recommmended to be left blank. Will be asked while deploying if is left blank
\ No newline at end of file
diff --git a/fancybox/blank.gif b/fancybox/blank.gif
deleted file mode 100644
index 35d42e80..00000000
Binary files a/fancybox/blank.gif and /dev/null differ
diff --git a/fancybox/fancybox_loading.gif b/fancybox/fancybox_loading.gif
deleted file mode 100644
index a03a40c0..00000000
Binary files a/fancybox/fancybox_loading.gif and /dev/null differ
diff --git a/fancybox/fancybox_loading@2x.gif b/fancybox/fancybox_loading@2x.gif
deleted file mode 100644
index 9205aeb0..00000000
Binary files a/fancybox/fancybox_loading@2x.gif and /dev/null differ
diff --git a/fancybox/fancybox_overlay.png b/fancybox/fancybox_overlay.png
deleted file mode 100644
index a4391396..00000000
Binary files a/fancybox/fancybox_overlay.png and /dev/null differ
diff --git a/fancybox/fancybox_sprite.png b/fancybox/fancybox_sprite.png
deleted file mode 100644
index fd8d5ca5..00000000
Binary files a/fancybox/fancybox_sprite.png and /dev/null differ
diff --git a/fancybox/fancybox_sprite@2x.png b/fancybox/fancybox_sprite@2x.png
deleted file mode 100644
index d0e4779f..00000000
Binary files a/fancybox/fancybox_sprite@2x.png and /dev/null differ
diff --git a/fancybox/helpers/fancybox_buttons.png b/fancybox/helpers/fancybox_buttons.png
deleted file mode 100644
index 07872072..00000000
Binary files a/fancybox/helpers/fancybox_buttons.png and /dev/null differ
diff --git a/fancybox/helpers/jquery.fancybox-buttons.css b/fancybox/helpers/jquery.fancybox-buttons.css
deleted file mode 100644
index a26273af..00000000
--- a/fancybox/helpers/jquery.fancybox-buttons.css
+++ /dev/null
@@ -1,97 +0,0 @@
-#fancybox-buttons {
- position: fixed;
- left: 0;
- width: 100%;
- z-index: 8050;
-}
-
-#fancybox-buttons.top {
- top: 10px;
-}
-
-#fancybox-buttons.bottom {
- bottom: 10px;
-}
-
-#fancybox-buttons ul {
- display: block;
- width: 166px;
- height: 30px;
- margin: 0 auto;
- padding: 0;
- list-style: none;
- border: 1px solid #111;
- border-radius: 3px;
- -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
- -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
- box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
- background: rgb(50,50,50);
- background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51)));
- background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
- background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
- background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
- background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 );
-}
-
-#fancybox-buttons ul li {
- float: left;
- margin: 0;
- padding: 0;
-}
-
-#fancybox-buttons a {
- display: block;
- width: 30px;
- height: 30px;
- text-indent: -9999px;
- background-color: transparent;
- background-image: url('fancybox_buttons.png');
- background-repeat: no-repeat;
- outline: none;
- opacity: 0.8;
-}
-
-#fancybox-buttons a:hover {
- opacity: 1;
-}
-
-#fancybox-buttons a.btnPrev {
- background-position: 5px 0;
-}
-
-#fancybox-buttons a.btnNext {
- background-position: -33px 0;
- border-right: 1px solid #3e3e3e;
-}
-
-#fancybox-buttons a.btnPlay {
- background-position: 0 -30px;
-}
-
-#fancybox-buttons a.btnPlayOn {
- background-position: -30px -30px;
-}
-
-#fancybox-buttons a.btnToggle {
- background-position: 3px -60px;
- border-left: 1px solid #111;
- border-right: 1px solid #3e3e3e;
- width: 35px
-}
-
-#fancybox-buttons a.btnToggleOn {
- background-position: -27px -60px;
-}
-
-#fancybox-buttons a.btnClose {
- border-left: 1px solid #111;
- width: 35px;
- background-position: -56px 0px;
-}
-
-#fancybox-buttons a.btnDisabled {
- opacity : 0.4;
- cursor: default;
-}
\ No newline at end of file
diff --git a/fancybox/helpers/jquery.fancybox-buttons.js b/fancybox/helpers/jquery.fancybox-buttons.js
deleted file mode 100644
index 352bb5f0..00000000
--- a/fancybox/helpers/jquery.fancybox-buttons.js
+++ /dev/null
@@ -1,122 +0,0 @@
- /*!
- * Buttons helper for fancyBox
- * version: 1.0.5 (Mon, 15 Oct 2012)
- * @requires fancyBox v2.0 or later
- *
- * Usage:
- * $(".fancybox").fancybox({
- * helpers : {
- * buttons: {
- * position : 'top'
- * }
- * }
- * });
- *
- */
-;(function ($) {
- //Shortcut for fancyBox object
- var F = $.fancybox;
-
- //Add helper object
- F.helpers.buttons = {
- defaults : {
- skipSingle : false, // disables if gallery contains single image
- position : 'top', // 'top' or 'bottom'
- tpl : ''
- },
-
- list : null,
- buttons: null,
-
- beforeLoad: function (opts, obj) {
- //Remove self if gallery do not have at least two items
-
- if (opts.skipSingle && obj.group.length < 2) {
- obj.helpers.buttons = false;
- obj.closeBtn = true;
-
- return;
- }
-
- //Increase top margin to give space for buttons
- obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
- },
-
- onPlayStart: function () {
- if (this.buttons) {
- this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
- }
- },
-
- onPlayEnd: function () {
- if (this.buttons) {
- this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
- }
- },
-
- afterShow: function (opts, obj) {
- var buttons = this.buttons;
-
- if (!buttons) {
- this.list = $(opts.tpl).addClass(opts.position).appendTo('body');
-
- buttons = {
- prev : this.list.find('.btnPrev').click( F.prev ),
- next : this.list.find('.btnNext').click( F.next ),
- play : this.list.find('.btnPlay').click( F.play ),
- toggle : this.list.find('.btnToggle').click( F.toggle ),
- close : this.list.find('.btnClose').click( F.close )
- }
- }
-
- //Prev
- if (obj.index > 0 || obj.loop) {
- buttons.prev.removeClass('btnDisabled');
- } else {
- buttons.prev.addClass('btnDisabled');
- }
-
- //Next / Play
- if (obj.loop || obj.index < obj.group.length - 1) {
- buttons.next.removeClass('btnDisabled');
- buttons.play.removeClass('btnDisabled');
-
- } else {
- buttons.next.addClass('btnDisabled');
- buttons.play.addClass('btnDisabled');
- }
-
- this.buttons = buttons;
-
- this.onUpdate(opts, obj);
- },
-
- onUpdate: function (opts, obj) {
- var toggle;
-
- if (!this.buttons) {
- return;
- }
-
- toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
-
- //Size toggle button
- if (obj.canShrink) {
- toggle.addClass('btnToggleOn');
-
- } else if (!obj.canExpand) {
- toggle.addClass('btnDisabled');
- }
- },
-
- beforeClose: function () {
- if (this.list) {
- this.list.remove();
- }
-
- this.list = null;
- this.buttons = null;
- }
- };
-
-}(jQuery));
diff --git a/fancybox/helpers/jquery.fancybox-media.js b/fancybox/helpers/jquery.fancybox-media.js
deleted file mode 100644
index 62737a51..00000000
--- a/fancybox/helpers/jquery.fancybox-media.js
+++ /dev/null
@@ -1,199 +0,0 @@
-/*!
- * Media helper for fancyBox
- * version: 1.0.6 (Fri, 14 Jun 2013)
- * @requires fancyBox v2.0 or later
- *
- * Usage:
- * $(".fancybox").fancybox({
- * helpers : {
- * media: true
- * }
- * });
- *
- * Set custom URL parameters:
- * $(".fancybox").fancybox({
- * helpers : {
- * media: {
- * youtube : {
- * params : {
- * autoplay : 0
- * }
- * }
- * }
- * }
- * });
- *
- * Or:
- * $(".fancybox").fancybox({,
- * helpers : {
- * media: true
- * },
- * youtube : {
- * autoplay: 0
- * }
- * });
- *
- * Supports:
- *
- * Youtube
- * http://www.youtube.com/watch?v=opj24KnzrWo
- * http://www.youtube.com/embed/opj24KnzrWo
- * http://youtu.be/opj24KnzrWo
- * http://www.youtube-nocookie.com/embed/opj24KnzrWo
- * Vimeo
- * http://vimeo.com/40648169
- * http://vimeo.com/channels/staffpicks/38843628
- * http://vimeo.com/groups/surrealism/videos/36516384
- * http://player.vimeo.com/video/45074303
- * Metacafe
- * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
- * http://www.metacafe.com/watch/7635964/
- * Dailymotion
- * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
- * Twitvid
- * http://twitvid.com/QY7MD
- * Twitpic
- * http://twitpic.com/7p93st
- * Instagram
- * http://instagr.am/p/IejkuUGxQn/
- * http://instagram.com/p/IejkuUGxQn/
- * Google maps
- * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
- * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
- * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
- */
-;(function ($) {
- "use strict";
-
- //Shortcut for fancyBox object
- var F = $.fancybox,
- format = function( url, rez, params ) {
- params = params || '';
-
- if ( $.type( params ) === "object" ) {
- params = $.param(params, true);
- }
-
- $.each(rez, function(key, value) {
- url = url.replace( '$' + key, value || '' );
- });
-
- if (params.length) {
- url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params;
- }
-
- return url;
- };
-
- //Add helper object
- F.helpers.media = {
- defaults : {
- youtube : {
- matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i,
- params : {
- autoplay : 1,
- autohide : 1,
- fs : 1,
- rel : 0,
- hd : 1,
- wmode : 'opaque',
- enablejsapi : 1
- },
- type : 'iframe',
- url : '//www.youtube.com/embed/$3'
- },
- vimeo : {
- matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/,
- params : {
- autoplay : 1,
- hd : 1,
- show_title : 1,
- show_byline : 1,
- show_portrait : 0,
- fullscreen : 1
- },
- type : 'iframe',
- url : '//player.vimeo.com/video/$1'
- },
- metacafe : {
- matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/,
- params : {
- autoPlay : 'yes'
- },
- type : 'swf',
- url : function( rez, params, obj ) {
- obj.swf.flashVars = 'playerVars=' + $.param( params, true );
-
- return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf';
- }
- },
- dailymotion : {
- matcher : /dailymotion.com\/video\/(.*)\/?(.*)/,
- params : {
- additionalInfos : 0,
- autoStart : 1
- },
- type : 'swf',
- url : '//www.dailymotion.com/swf/video/$1'
- },
- twitvid : {
- matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i,
- params : {
- autoplay : 0
- },
- type : 'iframe',
- url : '//www.twitvid.com/embed.php?guid=$1'
- },
- twitpic : {
- matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i,
- type : 'image',
- url : '//twitpic.com/show/full/$1/'
- },
- instagram : {
- matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
- type : 'image',
- url : '//$1/p/$2/media/?size=l'
- },
- google_maps : {
- matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i,
- type : 'iframe',
- url : function( rez ) {
- return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed');
- }
- }
- },
-
- beforeLoad : function(opts, obj) {
- var url = obj.href || '',
- type = false,
- what,
- item,
- rez,
- params;
-
- for (what in opts) {
- if (opts.hasOwnProperty(what)) {
- item = opts[ what ];
- rez = url.match( item.matcher );
-
- if (rez) {
- type = item.type;
- params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null));
-
- url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params );
-
- break;
- }
- }
- }
-
- if (type) {
- obj.href = url;
- obj.type = type;
-
- obj.autoHeight = false;
- }
- }
- };
-
-}(jQuery));
\ No newline at end of file
diff --git a/fancybox/helpers/jquery.fancybox-thumbs.css b/fancybox/helpers/jquery.fancybox-thumbs.css
deleted file mode 100644
index 63d29436..00000000
--- a/fancybox/helpers/jquery.fancybox-thumbs.css
+++ /dev/null
@@ -1,55 +0,0 @@
-#fancybox-thumbs {
- position: fixed;
- left: 0;
- width: 100%;
- overflow: hidden;
- z-index: 8050;
-}
-
-#fancybox-thumbs.bottom {
- bottom: 2px;
-}
-
-#fancybox-thumbs.top {
- top: 2px;
-}
-
-#fancybox-thumbs ul {
- position: relative;
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-#fancybox-thumbs ul li {
- float: left;
- padding: 1px;
- opacity: 0.5;
-}
-
-#fancybox-thumbs ul li.active {
- opacity: 0.75;
- padding: 0;
- border: 1px solid #fff;
-}
-
-#fancybox-thumbs ul li:hover {
- opacity: 1;
-}
-
-#fancybox-thumbs ul li a {
- display: block;
- position: relative;
- overflow: hidden;
- border: 1px solid #222;
- background: #111;
- outline: none;
-}
-
-#fancybox-thumbs ul li img {
- display: block;
- position: relative;
- border: 0;
- padding: 0;
- max-width: none;
-}
\ No newline at end of file
diff --git a/fancybox/helpers/jquery.fancybox-thumbs.js b/fancybox/helpers/jquery.fancybox-thumbs.js
deleted file mode 100644
index 58c97194..00000000
--- a/fancybox/helpers/jquery.fancybox-thumbs.js
+++ /dev/null
@@ -1,165 +0,0 @@
- /*!
- * Thumbnail helper for fancyBox
- * version: 1.0.7 (Mon, 01 Oct 2012)
- * @requires fancyBox v2.0 or later
- *
- * Usage:
- * $(".fancybox").fancybox({
- * helpers : {
- * thumbs: {
- * width : 50,
- * height : 50
- * }
- * }
- * });
- *
- */
-;(function ($) {
- //Shortcut for fancyBox object
- var F = $.fancybox;
-
- //Add helper object
- F.helpers.thumbs = {
- defaults : {
- width : 50, // thumbnail width
- height : 50, // thumbnail height
- position : 'bottom', // 'top' or 'bottom'
- source : function ( item ) { // function to obtain the URL of the thumbnail image
- var href;
-
- if (item.element) {
- href = $(item.element).find('img').attr('src');
- }
-
- if (!href && item.type === 'image' && item.href) {
- href = item.href;
- }
-
- return href;
- }
- },
-
- wrap : null,
- list : null,
- width : 0,
-
- init: function (opts, obj) {
- var that = this,
- list,
- thumbWidth = opts.width,
- thumbHeight = opts.height,
- thumbSource = opts.source;
-
- //Build list structure
- list = '';
-
- for (var n = 0; n < obj.group.length; n++) {
- list += ' ';
- }
-
- this.wrap = $('').addClass(opts.position).appendTo('body');
- this.list = $('' + list + '
').appendTo(this.wrap);
-
- //Load each thumbnail
- $.each(obj.group, function (i) {
- var el = obj.group[ i ],
- href = thumbSource( el );
-
- if (!href) {
- return;
- }
-
- $("
").load(function () {
- var width = this.width,
- height = this.height,
- widthRatio, heightRatio, parent;
-
- if (!that.list || !width || !height) {
- return;
- }
-
- //Calculate thumbnail width/height and center it
- widthRatio = width / thumbWidth;
- heightRatio = height / thumbHeight;
-
- parent = that.list.children().eq(i).find('a');
-
- if (widthRatio >= 1 && heightRatio >= 1) {
- if (widthRatio > heightRatio) {
- width = Math.floor(width / heightRatio);
- height = thumbHeight;
-
- } else {
- width = thumbWidth;
- height = Math.floor(height / widthRatio);
- }
- }
-
- $(this).css({
- width : width,
- height : height,
- top : Math.floor(thumbHeight / 2 - height / 2),
- left : Math.floor(thumbWidth / 2 - width / 2)
- });
-
- parent.width(thumbWidth).height(thumbHeight);
-
- $(this).hide().appendTo(parent).fadeIn(300);
-
- })
- .attr('src', href)
- .attr('title', el.title);
- });
-
- //Set initial width
- this.width = this.list.children().eq(0).outerWidth(true);
-
- this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)));
- },
-
- beforeLoad: function (opts, obj) {
- //Remove self if gallery do not have at least two items
- if (obj.group.length < 2) {
- obj.helpers.thumbs = false;
-
- return;
- }
-
- //Increase bottom margin to give space for thumbs
- obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15);
- },
-
- afterShow: function (opts, obj) {
- //Check if exists and create or update list
- if (this.list) {
- this.onUpdate(opts, obj);
-
- } else {
- this.init(opts, obj);
- }
-
- //Set active element
- this.list.children().removeClass('active').eq(obj.index).addClass('active');
- },
-
- //Center list
- onUpdate: function (opts, obj) {
- if (this.list) {
- this.list.stop(true).animate({
- 'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))
- }, 150);
- }
- },
-
- beforeClose: function () {
- if (this.wrap) {
- this.wrap.remove();
- }
-
- this.wrap = null;
- this.list = null;
- this.width = 0;
- }
- }
-
-}(jQuery));
\ No newline at end of file
diff --git a/fancybox/jquery.fancybox.css b/fancybox/jquery.fancybox.css
deleted file mode 100644
index c75d0513..00000000
--- a/fancybox/jquery.fancybox.css
+++ /dev/null
@@ -1,273 +0,0 @@
-/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-.fancybox-wrap,
-.fancybox-skin,
-.fancybox-outer,
-.fancybox-inner,
-.fancybox-image,
-.fancybox-wrap iframe,
-.fancybox-wrap object,
-.fancybox-nav,
-.fancybox-nav span,
-.fancybox-tmp
-{
- padding: 0;
- margin: 0;
- border: 0;
- outline: none;
- vertical-align: top;
-}
-
-.fancybox-wrap {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 8020;
-}
-
-.fancybox-skin {
- position: relative;
- background: #f9f9f9;
- color: #444;
- text-shadow: none;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
-}
-
-.fancybox-opened {
- z-index: 8030;
-}
-
-.fancybox-opened .fancybox-skin {
- -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
- -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
- box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-}
-
-.fancybox-outer, .fancybox-inner {
- position: relative;
-}
-
-.fancybox-inner {
- overflow: hidden;
-}
-
-.fancybox-type-iframe .fancybox-inner {
- -webkit-overflow-scrolling: touch;
-}
-
-.fancybox-error {
- color: #444;
- font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
- margin: 0;
- padding: 15px;
- white-space: nowrap;
-}
-
-.fancybox-image, .fancybox-iframe {
- display: block;
- width: 100%;
- height: 100%;
-}
-
-.fancybox-image {
- max-width: 100%;
- max-height: 100%;
-}
-
-#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
- background-image: url(fancybox_sprite.png);
-}
-
-#fancybox-loading {
- position: fixed;
- top: 50%;
- left: 50%;
- margin-top: -22px;
- margin-left: -22px;
- background-position: 0 -108px;
- opacity: 0.8;
- cursor: pointer;
- z-index: 8060;
-}
-
-#fancybox-loading div {
- width: 44px;
- height: 44px;
- background: url(fancybox_loading.gif) center center no-repeat;
-}
-
-.fancybox-close {
- position: absolute;
- top: -18px;
- right: -18px;
- width: 36px;
- height: 36px;
- cursor: pointer;
- z-index: 8040;
-}
-
-.fancybox-nav {
- position: absolute;
- top: 0;
- width: 40%;
- height: 100%;
- cursor: pointer;
- text-decoration: none;
- background: transparent url(blank.gif); /* helps IE */
- -webkit-tap-highlight-color: rgba(0,0,0,0);
- z-index: 8040;
-}
-
-.fancybox-prev {
- left: 0;
-}
-
-.fancybox-next {
- right: 0;
-}
-
-.fancybox-nav span {
- position: absolute;
- top: 50%;
- width: 36px;
- height: 34px;
- margin-top: -18px;
- cursor: pointer;
- z-index: 8040;
- visibility: hidden;
-}
-
-.fancybox-prev span {
- left: 10px;
- background-position: 0 -36px;
-}
-
-.fancybox-next span {
- right: 10px;
- background-position: 0 -72px;
-}
-
-.fancybox-nav:hover span {
- visibility: visible;
-}
-
-.fancybox-tmp {
- position: absolute;
- top: -99999px;
- left: -99999px;
- max-width: 99999px;
- max-height: 99999px;
- overflow: visible !important;
-}
-
-/* Overlay helper */
-
-.fancybox-lock {
- overflow: visible !important;
- width: auto;
-}
-
-.fancybox-lock body {
- overflow: hidden !important;
-}
-
-.fancybox-lock-test {
- overflow-y: hidden !important;
-}
-
-.fancybox-overlay {
- position: absolute;
- top: 0;
- left: 0;
- overflow: hidden;
- display: none;
- z-index: 8010;
- background: url(fancybox_overlay.png);
-}
-
-.fancybox-overlay-fixed {
- position: fixed;
- bottom: 0;
- right: 0;
-}
-
-.fancybox-lock .fancybox-overlay {
- overflow: auto;
- overflow-y: scroll;
-}
-
-/* Title helper */
-
-.fancybox-title {
- visibility: hidden;
- font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
- position: relative;
- text-shadow: none;
- z-index: 8050;
-}
-
-.fancybox-opened .fancybox-title {
- visibility: visible;
-}
-
-.fancybox-title-float-wrap {
- position: absolute;
- bottom: 0;
- right: 50%;
- margin-bottom: -35px;
- z-index: 8050;
- text-align: center;
-}
-
-.fancybox-title-float-wrap .child {
- display: inline-block;
- margin-right: -100%;
- padding: 2px 20px;
- background: transparent; /* Fallback for web browsers that doesn't support RGBa */
- background: rgba(0, 0, 0, 0.8);
- -webkit-border-radius: 15px;
- -moz-border-radius: 15px;
- border-radius: 15px;
- text-shadow: 0 1px 2px #222;
- color: #FFF;
- font-weight: bold;
- line-height: 24px;
- white-space: nowrap;
-}
-
-.fancybox-title-outside-wrap {
- position: relative;
- margin-top: 10px;
- color: #fff;
-}
-
-.fancybox-title-inside-wrap {
- padding-top: 10px;
-}
-
-.fancybox-title-over-wrap {
- position: absolute;
- bottom: 0;
- left: 0;
- color: #fff;
- padding: 10px;
- background: #000;
- background: rgba(0, 0, 0, .8);
-}
-
-/*Retina graphics!*/
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
- only screen and (min--moz-device-pixel-ratio: 1.5),
- only screen and (min-device-pixel-ratio: 1.5){
-
- #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
- background-image: url(fancybox_sprite@2x.png);
- background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
- }
-
- #fancybox-loading div {
- background-image: url(fancybox_loading@2x.gif);
- background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
- }
-}
\ No newline at end of file
diff --git a/fancybox/jquery.fancybox.js b/fancybox/jquery.fancybox.js
deleted file mode 100644
index 7a0f8acb..00000000
--- a/fancybox/jquery.fancybox.js
+++ /dev/null
@@ -1,2017 +0,0 @@
-/*!
- * fancyBox - jQuery Plugin
- * version: 2.1.5 (Fri, 14 Jun 2013)
- * requires jQuery v1.6 or later
- *
- * Examples at http://fancyapps.com/fancybox/
- * License: www.fancyapps.com/fancybox/#license
- *
- * Copyright 2012 Janis Skarnelis - janis@fancyapps.com
- *
- */
-
-;(function (window, document, $, undefined) {
- "use strict";
-
- var H = $("html"),
- W = $(window),
- D = $(document),
- F = $.fancybox = function () {
- F.open.apply( this, arguments );
- },
- IE = navigator.userAgent.match(/msie/i),
- didUpdate = null,
- isTouch = document.createTouch !== undefined,
-
- isQuery = function(obj) {
- return obj && obj.hasOwnProperty && obj instanceof $;
- },
- isString = function(str) {
- return str && $.type(str) === "string";
- },
- isPercentage = function(str) {
- return isString(str) && str.indexOf('%') > 0;
- },
- isScrollable = function(el) {
- return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight)));
- },
- getScalar = function(orig, dim) {
- var value = parseInt(orig, 10) || 0;
-
- if (dim && isPercentage(orig)) {
- value = F.getViewport()[ dim ] / 100 * value;
- }
-
- return Math.ceil(value);
- },
- getValue = function(value, dim) {
- return getScalar(value, dim) + 'px';
- };
-
- $.extend(F, {
- // The current version of fancyBox
- version: '2.1.5',
-
- defaults: {
- padding : 15,
- margin : 20,
-
- width : 800,
- height : 600,
- minWidth : 100,
- minHeight : 100,
- maxWidth : 9999,
- maxHeight : 9999,
- pixelRatio: 1, // Set to 2 for retina display support
-
- autoSize : true,
- autoHeight : false,
- autoWidth : false,
-
- autoResize : true,
- autoCenter : !isTouch,
- fitToView : true,
- aspectRatio : false,
- topRatio : 0.5,
- leftRatio : 0.5,
-
- scrolling : 'auto', // 'auto', 'yes' or 'no'
- wrapCSS : '',
-
- arrows : true,
- closeBtn : true,
- closeClick : false,
- nextClick : false,
- mouseWheel : true,
- autoPlay : false,
- playSpeed : 3000,
- preload : 3,
- modal : false,
- loop : true,
-
- ajax : {
- dataType : 'html',
- headers : { 'X-fancyBox': true }
- },
- iframe : {
- scrolling : 'auto',
- preload : true
- },
- swf : {
- wmode: 'transparent',
- allowfullscreen : 'true',
- allowscriptaccess : 'always'
- },
-
- keys : {
- next : {
- 13 : 'left', // enter
- 34 : 'up', // page down
- 39 : 'left', // right arrow
- 40 : 'up' // down arrow
- },
- prev : {
- 8 : 'right', // backspace
- 33 : 'down', // page up
- 37 : 'right', // left arrow
- 38 : 'down' // up arrow
- },
- close : [27], // escape key
- play : [32], // space - start/stop slideshow
- toggle : [70] // letter "f" - toggle fullscreen
- },
-
- direction : {
- next : 'left',
- prev : 'right'
- },
-
- scrollOutside : true,
-
- // Override some properties
- index : 0,
- type : null,
- href : null,
- content : null,
- title : null,
-
- // HTML templates
- tpl: {
- wrap : '',
- image : '
',
- iframe : '',
- error : 'The requested content cannot be loaded.
Please try again later.
',
- closeBtn : '',
- next : '',
- prev : ''
- },
-
- // Properties for each animation type
- // Opening fancyBox
- openEffect : 'fade', // 'elastic', 'fade' or 'none'
- openSpeed : 250,
- openEasing : 'swing',
- openOpacity : true,
- openMethod : 'zoomIn',
-
- // Closing fancyBox
- closeEffect : 'fade', // 'elastic', 'fade' or 'none'
- closeSpeed : 250,
- closeEasing : 'swing',
- closeOpacity : true,
- closeMethod : 'zoomOut',
-
- // Changing next gallery item
- nextEffect : 'elastic', // 'elastic', 'fade' or 'none'
- nextSpeed : 250,
- nextEasing : 'swing',
- nextMethod : 'changeIn',
-
- // Changing previous gallery item
- prevEffect : 'elastic', // 'elastic', 'fade' or 'none'
- prevSpeed : 250,
- prevEasing : 'swing',
- prevMethod : 'changeOut',
-
- // Enable default helpers
- helpers : {
- overlay : true,
- title : true
- },
-
- // Callbacks
- onCancel : $.noop, // If canceling
- beforeLoad : $.noop, // Before loading
- afterLoad : $.noop, // After loading
- beforeShow : $.noop, // Before changing in current item
- afterShow : $.noop, // After opening
- beforeChange : $.noop, // Before changing gallery item
- beforeClose : $.noop, // Before closing
- afterClose : $.noop // After closing
- },
-
- //Current state
- group : {}, // Selected group
- opts : {}, // Group options
- previous : null, // Previous element
- coming : null, // Element being loaded
- current : null, // Currently loaded element
- isActive : false, // Is activated
- isOpen : false, // Is currently open
- isOpened : false, // Have been fully opened at least once
-
- wrap : null,
- skin : null,
- outer : null,
- inner : null,
-
- player : {
- timer : null,
- isActive : false
- },
-
- // Loaders
- ajaxLoad : null,
- imgPreload : null,
-
- // Some collections
- transitions : {},
- helpers : {},
-
- /*
- * Static methods
- */
-
- open: function (group, opts) {
- if (!group) {
- return;
- }
-
- if (!$.isPlainObject(opts)) {
- opts = {};
- }
-
- // Close if already active
- if (false === F.close(true)) {
- return;
- }
-
- // Normalize group
- if (!$.isArray(group)) {
- group = isQuery(group) ? $(group).get() : [group];
- }
-
- // Recheck if the type of each element is `object` and set content type (image, ajax, etc)
- $.each(group, function(i, element) {
- var obj = {},
- href,
- title,
- content,
- type,
- rez,
- hrefParts,
- selector;
-
- if ($.type(element) === "object") {
- // Check if is DOM element
- if (element.nodeType) {
- element = $(element);
- }
-
- if (isQuery(element)) {
- obj = {
- href : element.data('fancybox-href') || element.attr('href'),
- title : $('').text( element.data('fancybox-title') || element.attr('title') ).html(),
- isDom : true,
- element : element
- };
-
- if ($.metadata) {
- $.extend(true, obj, element.metadata());
- }
-
- } else {
- obj = element;
- }
- }
-
- href = opts.href || obj.href || (isString(element) ? element : null);
- title = opts.title !== undefined ? opts.title : obj.title || '';
-
- content = opts.content || obj.content;
- type = content ? 'html' : (opts.type || obj.type);
-
- if (!type && obj.isDom) {
- type = element.data('fancybox-type');
-
- if (!type) {
- rez = element.prop('class').match(/fancybox\.(\w+)/);
- type = rez ? rez[1] : null;
- }
- }
-
- if (isString(href)) {
- // Try to guess the content type
- if (!type) {
- if (F.isImage(href)) {
- type = 'image';
-
- } else if (F.isSWF(href)) {
- type = 'swf';
-
- } else if (href.charAt(0) === '#') {
- type = 'inline';
-
- } else if (isString(element)) {
- type = 'html';
- content = element;
- }
- }
-
- // Split url into two pieces with source url and content selector, e.g,
- // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id"
- if (type === 'ajax') {
- hrefParts = href.split(/\s+/, 2);
- href = hrefParts.shift();
- selector = hrefParts.shift();
- }
- }
-
- if (!content) {
- if (type === 'inline') {
- if (href) {
- content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
-
- } else if (obj.isDom) {
- content = element;
- }
-
- } else if (type === 'html') {
- content = href;
-
- } else if (!type && !href && obj.isDom) {
- type = 'inline';
- content = element;
- }
- }
-
- $.extend(obj, {
- href : href,
- type : type,
- content : content,
- title : title,
- selector : selector
- });
-
- group[ i ] = obj;
- });
-
- // Extend the defaults
- F.opts = $.extend(true, {}, F.defaults, opts);
-
- // All options are merged recursive except keys
- if (opts.keys !== undefined) {
- F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
- }
-
- F.group = group;
-
- return F._start(F.opts.index);
- },
-
- // Cancel image loading or abort ajax request
- cancel: function () {
- var coming = F.coming;
-
- if (coming && false === F.trigger('onCancel')) {
- return;
- }
-
- F.hideLoading();
-
- if (!coming) {
- return;
- }
-
- if (F.ajaxLoad) {
- F.ajaxLoad.abort();
- }
-
- F.ajaxLoad = null;
-
- if (F.imgPreload) {
- F.imgPreload.onload = F.imgPreload.onerror = null;
- }
-
- if (coming.wrap) {
- coming.wrap.stop(true, true).trigger('onReset').remove();
- }
-
- F.coming = null;
-
- // If the first item has been canceled, then clear everything
- if (!F.current) {
- F._afterZoomOut( coming );
- }
- },
-
- // Start closing animation if is open; remove immediately if opening/closing
- close: function (event) {
- F.cancel();
-
- if (false === F.trigger('beforeClose')) {
- return;
- }
-
- F.unbindEvents();
-
- if (!F.isActive) {
- return;
- }
-
- if (!F.isOpen || event === true) {
- $('.fancybox-wrap').stop(true).trigger('onReset').remove();
-
- F._afterZoomOut();
-
- } else {
- F.isOpen = F.isOpened = false;
- F.isClosing = true;
-
- $('.fancybox-item, .fancybox-nav').remove();
-
- F.wrap.stop(true, true).removeClass('fancybox-opened');
-
- F.transitions[ F.current.closeMethod ]();
- }
- },
-
- // Manage slideshow:
- // $.fancybox.play(); - toggle slideshow
- // $.fancybox.play( true ); - start
- // $.fancybox.play( false ); - stop
- play: function ( action ) {
- var clear = function () {
- clearTimeout(F.player.timer);
- },
- set = function () {
- clear();
-
- if (F.current && F.player.isActive) {
- F.player.timer = setTimeout(F.next, F.current.playSpeed);
- }
- },
- stop = function () {
- clear();
-
- D.unbind('.player');
-
- F.player.isActive = false;
-
- F.trigger('onPlayEnd');
- },
- start = function () {
- if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
- F.player.isActive = true;
-
- D.bind({
- 'onCancel.player beforeClose.player' : stop,
- 'onUpdate.player' : set,
- 'beforeLoad.player' : clear
- });
-
- set();
-
- F.trigger('onPlayStart');
- }
- };
-
- if (action === true || (!F.player.isActive && action !== false)) {
- start();
- } else {
- stop();
- }
- },
-
- // Navigate to next gallery item
- next: function ( direction ) {
- var current = F.current;
-
- if (current) {
- if (!isString(direction)) {
- direction = current.direction.next;
- }
-
- F.jumpto(current.index + 1, direction, 'next');
- }
- },
-
- // Navigate to previous gallery item
- prev: function ( direction ) {
- var current = F.current;
-
- if (current) {
- if (!isString(direction)) {
- direction = current.direction.prev;
- }
-
- F.jumpto(current.index - 1, direction, 'prev');
- }
- },
-
- // Navigate to gallery item by index
- jumpto: function ( index, direction, router ) {
- var current = F.current;
-
- if (!current) {
- return;
- }
-
- index = getScalar(index);
-
- F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ];
- F.router = router || 'jumpto';
-
- if (current.loop) {
- if (index < 0) {
- index = current.group.length + (index % current.group.length);
- }
-
- index = index % current.group.length;
- }
-
- if (current.group[ index ] !== undefined) {
- F.cancel();
-
- F._start(index);
- }
- },
-
- // Center inside viewport and toggle position type to fixed or absolute if needed
- reposition: function (e, onlyAbsolute) {
- var current = F.current,
- wrap = current ? current.wrap : null,
- pos;
-
- if (wrap) {
- pos = F._getPosition(onlyAbsolute);
-
- if (e && e.type === 'scroll') {
- delete pos.position;
-
- wrap.stop(true, true).animate(pos, 200);
-
- } else {
- wrap.css(pos);
-
- current.pos = $.extend({}, current.dim, pos);
- }
- }
- },
-
- update: function (e) {
- var type = (e && e.originalEvent && e.originalEvent.type),
- anyway = !type || type === 'orientationchange';
-
- if (anyway) {
- clearTimeout(didUpdate);
-
- didUpdate = null;
- }
-
- if (!F.isOpen || didUpdate) {
- return;
- }
-
- didUpdate = setTimeout(function() {
- var current = F.current;
-
- if (!current || F.isClosing) {
- return;
- }
-
- F.wrap.removeClass('fancybox-tmp');
-
- if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) {
- F._setDimension();
- }
-
- if (!(type === 'scroll' && current.canShrink)) {
- F.reposition(e);
- }
-
- F.trigger('onUpdate');
-
- didUpdate = null;
-
- }, (anyway && !isTouch ? 0 : 300));
- },
-
- // Shrink content to fit inside viewport or restore if resized
- toggle: function ( action ) {
- if (F.isOpen) {
- F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView;
-
- // Help browser to restore document dimensions
- if (isTouch) {
- F.wrap.removeAttr('style').addClass('fancybox-tmp');
-
- F.trigger('onUpdate');
- }
-
- F.update();
- }
- },
-
- hideLoading: function () {
- D.unbind('.loading');
-
- $('#fancybox-loading').remove();
- },
-
- showLoading: function () {
- var el, viewport;
-
- F.hideLoading();
-
- el = $('').click(F.cancel).appendTo('body');
-
- // If user will press the escape-button, the request will be canceled
- D.bind('keydown.loading', function(e) {
- if ((e.which || e.keyCode) === 27) {
- e.preventDefault();
-
- F.cancel();
- }
- });
-
- if (!F.defaults.fixed) {
- viewport = F.getViewport();
-
- el.css({
- position : 'absolute',
- top : (viewport.h * 0.5) + viewport.y,
- left : (viewport.w * 0.5) + viewport.x
- });
- }
-
- F.trigger('onLoading');
- },
-
- getViewport: function () {
- var locked = (F.current && F.current.locked) || false,
- rez = {
- x: W.scrollLeft(),
- y: W.scrollTop()
- };
-
- if (locked && locked.length) {
- rez.w = locked[0].clientWidth;
- rez.h = locked[0].clientHeight;
-
- } else {
- // See http://bugs.jquery.com/ticket/6724
- rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width();
- rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height();
- }
-
- return rez;
- },
-
- // Unbind the keyboard / clicking actions
- unbindEvents: function () {
- if (F.wrap && isQuery(F.wrap)) {
- F.wrap.unbind('.fb');
- }
-
- D.unbind('.fb');
- W.unbind('.fb');
- },
-
- bindEvents: function () {
- var current = F.current,
- keys;
-
- if (!current) {
- return;
- }
-
- // Changing document height on iOS devices triggers a 'resize' event,
- // that can change document height... repeating infinitely
- W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update);
-
- keys = current.keys;
-
- if (keys) {
- D.bind('keydown.fb', function (e) {
- var code = e.which || e.keyCode,
- target = e.target || e.srcElement;
-
- // Skip esc key if loading, because showLoading will cancel preloading
- if (code === 27 && F.coming) {
- return false;
- }
-
- // Ignore key combinations and key events within form elements
- if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {
- $.each(keys, function(i, val) {
- if (current.group.length > 1 && val[ code ] !== undefined) {
- F[ i ]( val[ code ] );
-
- e.preventDefault();
- return false;
- }
-
- if ($.inArray(code, val) > -1) {
- F[ i ] ();
-
- e.preventDefault();
- return false;
- }
- });
- }
- });
- }
-
- if ($.fn.mousewheel && current.mouseWheel) {
- F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {
- var target = e.target || null,
- parent = $(target),
- canScroll = false;
-
- while (parent.length) {
- if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {
- break;
- }
-
- canScroll = isScrollable( parent[0] );
- parent = $(parent).parent();
- }
-
- if (delta !== 0 && !canScroll) {
- if (F.group.length > 1 && !current.canShrink) {
- if (deltaY > 0 || deltaX > 0) {
- F.prev( deltaY > 0 ? 'down' : 'left' );
-
- } else if (deltaY < 0 || deltaX < 0) {
- F.next( deltaY < 0 ? 'up' : 'right' );
- }
-
- e.preventDefault();
- }
- }
- });
- }
- },
-
- trigger: function (event, o) {
- var ret, obj = o || F.coming || F.current;
-
- if (obj) {
- if ($.isFunction( obj[event] )) {
- ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
- }
-
- if (ret === false) {
- return false;
- }
-
- if (obj.helpers) {
- $.each(obj.helpers, function (helper, opts) {
- if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) {
- F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj);
- }
- });
- }
- }
-
- D.trigger(event);
- },
-
- isImage: function (str) {
- return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
- },
-
- isSWF: function (str) {
- return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i);
- },
-
- _start: function (index) {
- var coming = {},
- obj,
- href,
- type,
- margin,
- padding;
-
- index = getScalar( index );
- obj = F.group[ index ] || null;
-
- if (!obj) {
- return false;
- }
-
- coming = $.extend(true, {}, F.opts, obj);
-
- // Convert margin and padding properties to array - top, right, bottom, left
- margin = coming.margin;
- padding = coming.padding;
-
- if ($.type(margin) === 'number') {
- coming.margin = [margin, margin, margin, margin];
- }
-
- if ($.type(padding) === 'number') {
- coming.padding = [padding, padding, padding, padding];
- }
-
- // 'modal' propery is just a shortcut
- if (coming.modal) {
- $.extend(true, coming, {
- closeBtn : false,
- closeClick : false,
- nextClick : false,
- arrows : false,
- mouseWheel : false,
- keys : null,
- helpers: {
- overlay : {
- closeClick : false
- }
- }
- });
- }
-
- // 'autoSize' property is a shortcut, too
- if (coming.autoSize) {
- coming.autoWidth = coming.autoHeight = true;
- }
-
- if (coming.width === 'auto') {
- coming.autoWidth = true;
- }
-
- if (coming.height === 'auto') {
- coming.autoHeight = true;
- }
-
- /*
- * Add reference to the group, so it`s possible to access from callbacks, example:
- * afterLoad : function() {
- * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
- * }
- */
-
- coming.group = F.group;
- coming.index = index;
-
- // Give a chance for callback or helpers to update coming item (type, title, etc)
- F.coming = coming;
-
- if (false === F.trigger('beforeLoad')) {
- F.coming = null;
-
- return;
- }
-
- type = coming.type;
- href = coming.href;
-
- if (!type) {
- F.coming = null;
-
- //If we can not determine content type then drop silently or display next/prev item if looping through gallery
- if (F.current && F.router && F.router !== 'jumpto') {
- F.current.index = index;
-
- return F[ F.router ]( F.direction );
- }
-
- return false;
- }
-
- F.isActive = true;
-
- if (type === 'image' || type === 'swf') {
- coming.autoHeight = coming.autoWidth = false;
- coming.scrolling = 'visible';
- }
-
- if (type === 'image') {
- coming.aspectRatio = true;
- }
-
- if (type === 'iframe' && isTouch) {
- coming.scrolling = 'scroll';
- }
-
- // Build the neccessary markup
- coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );
-
- $.extend(coming, {
- skin : $('.fancybox-skin', coming.wrap),
- outer : $('.fancybox-outer', coming.wrap),
- inner : $('.fancybox-inner', coming.wrap)
- });
-
- $.each(["Top", "Right", "Bottom", "Left"], function(i, v) {
- coming.skin.css('padding' + v, getValue(coming.padding[ i ]));
- });
-
- F.trigger('onReady');
-
- // Check before try to load; 'inline' and 'html' types need content, others - href
- if (type === 'inline' || type === 'html') {
- if (!coming.content || !coming.content.length) {
- return F._error( 'content' );
- }
-
- } else if (!href) {
- return F._error( 'href' );
- }
-
- if (type === 'image') {
- F._loadImage();
-
- } else if (type === 'ajax') {
- F._loadAjax();
-
- } else if (type === 'iframe') {
- F._loadIframe();
-
- } else {
- F._afterLoad();
- }
- },
-
- _error: function ( type ) {
- $.extend(F.coming, {
- type : 'html',
- autoWidth : true,
- autoHeight : true,
- minWidth : 0,
- minHeight : 0,
- scrolling : 'no',
- hasError : type,
- content : F.coming.tpl.error
- });
-
- F._afterLoad();
- },
-
- _loadImage: function () {
- // Reset preload image so it is later possible to check "complete" property
- var img = F.imgPreload = new Image();
-
- img.onload = function () {
- this.onload = this.onerror = null;
-
- F.coming.width = this.width / F.opts.pixelRatio;
- F.coming.height = this.height / F.opts.pixelRatio;
-
- F._afterLoad();
- };
-
- img.onerror = function () {
- this.onload = this.onerror = null;
-
- F._error( 'image' );
- };
-
- img.src = F.coming.href;
-
- if (img.complete !== true) {
- F.showLoading();
- }
- },
-
- _loadAjax: function () {
- var coming = F.coming;
-
- F.showLoading();
-
- F.ajaxLoad = $.ajax($.extend({}, coming.ajax, {
- url: coming.href,
- error: function (jqXHR, textStatus) {
- if (F.coming && textStatus !== 'abort') {
- F._error( 'ajax', jqXHR );
-
- } else {
- F.hideLoading();
- }
- },
- success: function (data, textStatus) {
- if (textStatus === 'success') {
- coming.content = data;
-
- F._afterLoad();
- }
- }
- }));
- },
-
- _loadIframe: function() {
- var coming = F.coming,
- iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime()))
- .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)
- .attr('src', coming.href);
-
- // This helps IE
- $(coming.wrap).bind('onReset', function () {
- try {
- $(this).find('iframe').hide().attr('src', '//about:blank').end().empty();
- } catch (e) {}
- });
-
- if (coming.iframe.preload) {
- F.showLoading();
-
- iframe.one('load', function() {
- $(this).data('ready', 1);
-
- // iOS will lose scrolling if we resize
- if (!isTouch) {
- $(this).bind('load.fb', F.update);
- }
-
- // Without this trick:
- // - iframe won't scroll on iOS devices
- // - IE7 sometimes displays empty iframe
- $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();
-
- F._afterLoad();
- });
- }
-
- coming.content = iframe.appendTo( coming.inner );
-
- if (!coming.iframe.preload) {
- F._afterLoad();
- }
- },
-
- _preloadImages: function() {
- var group = F.group,
- current = F.current,
- len = group.length,
- cnt = current.preload ? Math.min(current.preload, len - 1) : 0,
- item,
- i;
-
- for (i = 1; i <= cnt; i += 1) {
- item = group[ (current.index + i ) % len ];
-
- if (item.type === 'image' && item.href) {
- new Image().src = item.href;
- }
- }
- },
-
- _afterLoad: function () {
- var coming = F.coming,
- previous = F.current,
- placeholder = 'fancybox-placeholder',
- current,
- content,
- type,
- scrolling,
- href,
- embed;
-
- F.hideLoading();
-
- if (!coming || F.isActive === false) {
- return;
- }
-
- if (false === F.trigger('afterLoad', coming, previous)) {
- coming.wrap.stop(true).trigger('onReset').remove();
-
- F.coming = null;
-
- return;
- }
-
- if (previous) {
- F.trigger('beforeChange', previous);
-
- previous.wrap.stop(true).removeClass('fancybox-opened')
- .find('.fancybox-item, .fancybox-nav')
- .remove();
- }
-
- F.unbindEvents();
-
- current = coming;
- content = coming.content;
- type = coming.type;
- scrolling = coming.scrolling;
-
- $.extend(F, {
- wrap : current.wrap,
- skin : current.skin,
- outer : current.outer,
- inner : current.inner,
- current : current,
- previous : previous
- });
-
- href = current.href;
-
- switch (type) {
- case 'inline':
- case 'ajax':
- case 'html':
- if (current.selector) {
- content = $('').html(content).find(current.selector);
-
- } else if (isQuery(content)) {
- if (!content.data(placeholder)) {
- content.data(placeholder, $('').insertAfter( content ).hide() );
- }
-
- content = content.show().detach();
-
- current.wrap.bind('onReset', function () {
- if ($(this).find(content).length) {
- content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);
- }
- });
- }
- break;
-
- case 'image':
- content = current.tpl.image.replace(/\{href\}/g, href);
- break;
-
- case 'swf':
- content = '';
- break;
- }
-
- if (!(isQuery(content) && content.parent().is(current.inner))) {
- current.inner.append( content );
- }
-
- // Give a chance for helpers or callbacks to update elements
- F.trigger('beforeShow');
-
- // Set scrolling before calculating dimensions
- current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
-
- // Set initial dimensions and start position
- F._setDimension();
-
- F.reposition();
-
- F.isOpen = false;
- F.coming = null;
-
- F.bindEvents();
-
- if (!F.isOpened) {
- $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();
-
- } else if (previous.prevMethod) {
- F.transitions[ previous.prevMethod ]();
- }
-
- F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();
-
- F._preloadImages();
- },
-
- _setDimension: function () {
- var viewport = F.getViewport(),
- steps = 0,
- canShrink = false,
- canExpand = false,
- wrap = F.wrap,
- skin = F.skin,
- inner = F.inner,
- current = F.current,
- width = current.width,
- height = current.height,
- minWidth = current.minWidth,
- minHeight = current.minHeight,
- maxWidth = current.maxWidth,
- maxHeight = current.maxHeight,
- scrolling = current.scrolling,
- scrollOut = current.scrollOutside ? current.scrollbarWidth : 0,
- margin = current.margin,
- wMargin = getScalar(margin[1] + margin[3]),
- hMargin = getScalar(margin[0] + margin[2]),
- wPadding,
- hPadding,
- wSpace,
- hSpace,
- origWidth,
- origHeight,
- origMaxWidth,
- origMaxHeight,
- ratio,
- width_,
- height_,
- maxWidth_,
- maxHeight_,
- iframe,
- body;
-
- // Reset dimensions so we could re-check actual size
- wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');
-
- wPadding = getScalar(skin.outerWidth(true) - skin.width());
- hPadding = getScalar(skin.outerHeight(true) - skin.height());
-
- // Any space between content and viewport (margin, padding, border, title)
- wSpace = wMargin + wPadding;
- hSpace = hMargin + hPadding;
-
- origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width;
- origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height;
-
- if (current.type === 'iframe') {
- iframe = current.content;
-
- if (current.autoHeight && iframe.data('ready') === 1) {
- try {
- if (iframe[0].contentWindow.document.location) {
- inner.width( origWidth ).height(9999);
-
- body = iframe.contents().find('body');
-
- if (scrollOut) {
- body.css('overflow-x', 'hidden');
- }
-
- origHeight = body.outerHeight(true);
- }
-
- } catch (e) {}
- }
-
- } else if (current.autoWidth || current.autoHeight) {
- inner.addClass( 'fancybox-tmp' );
-
- // Set width or height in case we need to calculate only one dimension
- if (!current.autoWidth) {
- inner.width( origWidth );
- }
-
- if (!current.autoHeight) {
- inner.height( origHeight );
- }
-
- if (current.autoWidth) {
- origWidth = inner.width();
- }
-
- if (current.autoHeight) {
- origHeight = inner.height();
- }
-
- inner.removeClass( 'fancybox-tmp' );
- }
-
- width = getScalar( origWidth );
- height = getScalar( origHeight );
-
- ratio = origWidth / origHeight;
-
- // Calculations for the content
- minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);
- maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);
-
- minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);
- maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);
-
- // These will be used to determine if wrap can fit in the viewport
- origMaxWidth = maxWidth;
- origMaxHeight = maxHeight;
-
- if (current.fitToView) {
- maxWidth = Math.min(viewport.w - wSpace, maxWidth);
- maxHeight = Math.min(viewport.h - hSpace, maxHeight);
- }
-
- maxWidth_ = viewport.w - wMargin;
- maxHeight_ = viewport.h - hMargin;
-
- if (current.aspectRatio) {
- if (width > maxWidth) {
- width = maxWidth;
- height = getScalar(width / ratio);
- }
-
- if (height > maxHeight) {
- height = maxHeight;
- width = getScalar(height * ratio);
- }
-
- if (width < minWidth) {
- width = minWidth;
- height = getScalar(width / ratio);
- }
-
- if (height < minHeight) {
- height = minHeight;
- width = getScalar(height * ratio);
- }
-
- } else {
- width = Math.max(minWidth, Math.min(width, maxWidth));
-
- if (current.autoHeight && current.type !== 'iframe') {
- inner.width( width );
-
- height = inner.height();
- }
-
- height = Math.max(minHeight, Math.min(height, maxHeight));
- }
-
- // Try to fit inside viewport (including the title)
- if (current.fitToView) {
- inner.width( width ).height( height );
-
- wrap.width( width + wPadding );
-
- // Real wrap dimensions
- width_ = wrap.width();
- height_ = wrap.height();
-
- if (current.aspectRatio) {
- while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) {
- if (steps++ > 19) {
- break;
- }
-
- height = Math.max(minHeight, Math.min(maxHeight, height - 10));
- width = getScalar(height * ratio);
-
- if (width < minWidth) {
- width = minWidth;
- height = getScalar(width / ratio);
- }
-
- if (width > maxWidth) {
- width = maxWidth;
- height = getScalar(width / ratio);
- }
-
- inner.width( width ).height( height );
-
- wrap.width( width + wPadding );
-
- width_ = wrap.width();
- height_ = wrap.height();
- }
-
- } else {
- width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_)));
- height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));
- }
- }
-
- if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) {
- width += scrollOut;
- }
-
- inner.width( width ).height( height );
-
- wrap.width( width + wPadding );
-
- width_ = wrap.width();
- height_ = wrap.height();
-
- canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight;
- canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight));
-
- $.extend(current, {
- dim : {
- width : getValue( width_ ),
- height : getValue( height_ )
- },
- origWidth : origWidth,
- origHeight : origHeight,
- canShrink : canShrink,
- canExpand : canExpand,
- wPadding : wPadding,
- hPadding : hPadding,
- wrapSpace : height_ - skin.outerHeight(true),
- skinSpace : skin.height() - height
- });
-
- if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) {
- inner.height('auto');
- }
- },
-
- _getPosition: function (onlyAbsolute) {
- var current = F.current,
- viewport = F.getViewport(),
- margin = current.margin,
- width = F.wrap.width() + margin[1] + margin[3],
- height = F.wrap.height() + margin[0] + margin[2],
- rez = {
- position: 'absolute',
- top : margin[0],
- left : margin[3]
- };
-
- if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {
- rez.position = 'fixed';
-
- } else if (!current.locked) {
- rez.top += viewport.y;
- rez.left += viewport.x;
- }
-
- rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio)));
- rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio)));
-
- return rez;
- },
-
- _afterZoomIn: function () {
- var current = F.current;
-
- if (!current) {
- return;
- }
-
- F.isOpen = F.isOpened = true;
-
- F.wrap.css('overflow', 'visible').addClass('fancybox-opened').hide().show(0);
-
- F.update();
-
- // Assign a click event
- if ( current.closeClick || (current.nextClick && F.group.length > 1) ) {
- F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
- if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
- e.preventDefault();
-
- F[ current.closeClick ? 'close' : 'next' ]();
- }
- });
- }
-
- // Create a close button
- if (current.closeBtn) {
- $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {
- e.preventDefault();
-
- F.close();
- });
- }
-
- // Create navigation arrows
- if (current.arrows && F.group.length > 1) {
- if (current.loop || current.index > 0) {
- $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);
- }
-
- if (current.loop || current.index < F.group.length - 1) {
- $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);
- }
- }
-
- F.trigger('afterShow');
-
- // Stop the slideshow if this is the last item
- if (!current.loop && current.index === current.group.length - 1) {
-
- F.play( false );
-
- } else if (F.opts.autoPlay && !F.player.isActive) {
- F.opts.autoPlay = false;
-
- F.play(true);
- }
- },
-
- _afterZoomOut: function ( obj ) {
- obj = obj || F.current;
-
- $('.fancybox-wrap').trigger('onReset').remove();
-
- $.extend(F, {
- group : {},
- opts : {},
- router : false,
- current : null,
- isActive : false,
- isOpened : false,
- isOpen : false,
- isClosing : false,
- wrap : null,
- skin : null,
- outer : null,
- inner : null
- });
-
- F.trigger('afterClose', obj);
- }
- });
-
- /*
- * Default transitions
- */
-
- F.transitions = {
- getOrigPosition: function () {
- var current = F.current,
- element = current.element,
- orig = current.orig,
- pos = {},
- width = 50,
- height = 50,
- hPadding = current.hPadding,
- wPadding = current.wPadding,
- viewport = F.getViewport();
-
- if (!orig && current.isDom && element.is(':visible')) {
- orig = element.find('img:first');
-
- if (!orig.length) {
- orig = element;
- }
- }
-
- if (isQuery(orig)) {
- pos = orig.offset();
-
- if (orig.is('img')) {
- width = orig.outerWidth();
- height = orig.outerHeight();
- }
-
- } else {
- pos.top = viewport.y + (viewport.h - height) * current.topRatio;
- pos.left = viewport.x + (viewport.w - width) * current.leftRatio;
- }
-
- if (F.wrap.css('position') === 'fixed' || current.locked) {
- pos.top -= viewport.y;
- pos.left -= viewport.x;
- }
-
- pos = {
- top : getValue(pos.top - hPadding * current.topRatio),
- left : getValue(pos.left - wPadding * current.leftRatio),
- width : getValue(width + wPadding),
- height : getValue(height + hPadding)
- };
-
- return pos;
- },
-
- step: function (now, fx) {
- var ratio,
- padding,
- value,
- prop = fx.prop,
- current = F.current,
- wrapSpace = current.wrapSpace,
- skinSpace = current.skinSpace;
-
- if (prop === 'width' || prop === 'height') {
- ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start);
-
- if (F.isClosing) {
- ratio = 1 - ratio;
- }
-
- padding = prop === 'width' ? current.wPadding : current.hPadding;
- value = now - padding;
-
- F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) );
- F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );
- }
- },
-
- zoomIn: function () {
- var current = F.current,
- startPos = current.pos,
- effect = current.openEffect,
- elastic = effect === 'elastic',
- endPos = $.extend({opacity : 1}, startPos);
-
- // Remove "position" property that breaks older IE
- delete endPos.position;
-
- if (elastic) {
- startPos = this.getOrigPosition();
-
- if (current.openOpacity) {
- startPos.opacity = 0.1;
- }
-
- } else if (effect === 'fade') {
- startPos.opacity = 0.1;
- }
-
- F.wrap.css(startPos).animate(endPos, {
- duration : effect === 'none' ? 0 : current.openSpeed,
- easing : current.openEasing,
- step : elastic ? this.step : null,
- complete : F._afterZoomIn
- });
- },
-
- zoomOut: function () {
- var current = F.current,
- effect = current.closeEffect,
- elastic = effect === 'elastic',
- endPos = {opacity : 0.1};
-
- if (elastic) {
- endPos = this.getOrigPosition();
-
- if (current.closeOpacity) {
- endPos.opacity = 0.1;
- }
- }
-
- F.wrap.animate(endPos, {
- duration : effect === 'none' ? 0 : current.closeSpeed,
- easing : current.closeEasing,
- step : elastic ? this.step : null,
- complete : F._afterZoomOut
- });
- },
-
- changeIn: function () {
- var current = F.current,
- effect = current.nextEffect,
- startPos = current.pos,
- endPos = { opacity : 1 },
- direction = F.direction,
- distance = 200,
- field;
-
- startPos.opacity = 0.1;
-
- if (effect === 'elastic') {
- field = direction === 'down' || direction === 'up' ? 'top' : 'left';
-
- if (direction === 'down' || direction === 'right') {
- startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);
- endPos[ field ] = '+=' + distance + 'px';
-
- } else {
- startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);
- endPos[ field ] = '-=' + distance + 'px';
- }
- }
-
- // Workaround for http://bugs.jquery.com/ticket/12273
- if (effect === 'none') {
- F._afterZoomIn();
-
- } else {
- F.wrap.css(startPos).animate(endPos, {
- duration : current.nextSpeed,
- easing : current.nextEasing,
- complete : F._afterZoomIn
- });
- }
- },
-
- changeOut: function () {
- var previous = F.previous,
- effect = previous.prevEffect,
- endPos = { opacity : 0.1 },
- direction = F.direction,
- distance = 200;
-
- if (effect === 'elastic') {
- endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';
- }
-
- previous.wrap.animate(endPos, {
- duration : effect === 'none' ? 0 : previous.prevSpeed,
- easing : previous.prevEasing,
- complete : function () {
- $(this).trigger('onReset').remove();
- }
- });
- }
- };
-
- /*
- * Overlay helper
- */
-
- F.helpers.overlay = {
- defaults : {
- closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay
- speedOut : 200, // duration of fadeOut animation
- showEarly : true, // indicates if should be opened immediately or wait until the content is ready
- css : {}, // custom CSS properties
- locked : !isTouch, // if true, the content will be locked into overlay
- fixed : true // if false, the overlay CSS position property will not be set to "fixed"
- },
-
- overlay : null, // current handle
- fixed : false, // indicates if the overlay has position "fixed"
- el : $('html'), // element that contains "the lock"
-
- // Public methods
- create : function(opts) {
- var parent;
-
- opts = $.extend({}, this.defaults, opts);
-
- if (this.overlay) {
- this.close();
- }
-
- parent = F.coming ? F.coming.parent : opts.parent;
-
- this.overlay = $('').appendTo( parent && parent.lenth ? parent : 'body' );
- this.fixed = false;
-
- if (opts.fixed && F.defaults.fixed) {
- this.overlay.addClass('fancybox-overlay-fixed');
-
- this.fixed = true;
- }
- },
-
- open : function(opts) {
- var that = this;
-
- opts = $.extend({}, this.defaults, opts);
-
- if (this.overlay) {
- this.overlay.unbind('.overlay').width('auto').height('auto');
-
- } else {
- this.create(opts);
- }
-
- if (!this.fixed) {
- W.bind('resize.overlay', $.proxy( this.update, this) );
-
- this.update();
- }
-
- if (opts.closeClick) {
- this.overlay.bind('click.overlay', function(e) {
- if ($(e.target).hasClass('fancybox-overlay')) {
- if (F.isActive) {
- F.close();
- } else {
- that.close();
- }
-
- return false;
- }
- });
- }
-
- this.overlay.css( opts.css ).show();
- },
-
- close : function() {
- W.unbind('resize.overlay');
-
- if (this.el.hasClass('fancybox-lock')) {
- $('.fancybox-margin').removeClass('fancybox-margin');
-
- this.el.removeClass('fancybox-lock');
-
- W.scrollTop( this.scrollV ).scrollLeft( this.scrollH );
- }
-
- $('.fancybox-overlay').remove().hide();
-
- $.extend(this, {
- overlay : null,
- fixed : false
- });
- },
-
- // Private, callbacks
-
- update : function () {
- var width = '100%', offsetWidth;
-
- // Reset width/height so it will not mess
- this.overlay.width(width).height('100%');
-
- // jQuery does not return reliable result for IE
- if (IE) {
- offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
-
- if (D.width() > offsetWidth) {
- width = D.width();
- }
-
- } else if (D.width() > W.width()) {
- width = D.width();
- }
-
- this.overlay.width(width).height(D.height());
- },
-
- // This is where we can manipulate DOM, because later it would cause iframes to reload
- onReady : function (opts, obj) {
- var overlay = this.overlay;
-
- $('.fancybox-overlay').stop(true, true);
-
- if (!overlay) {
- this.create(opts);
- }
-
- if (opts.locked && this.fixed && obj.fixed) {
- obj.locked = this.overlay.append( obj.wrap );
- obj.fixed = false;
- }
-
- if (opts.showEarly === true) {
- this.beforeShow.apply(this, arguments);
- }
- },
-
- beforeShow : function(opts, obj) {
- if (obj.locked && !this.el.hasClass('fancybox-lock')) {
- if (this.fixPosition !== false) {
- $('*').filter(function(){
- return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") );
- }).addClass('fancybox-margin');
- }
-
- this.el.addClass('fancybox-margin');
-
- this.scrollV = W.scrollTop();
- this.scrollH = W.scrollLeft();
-
- this.el.addClass('fancybox-lock');
-
- W.scrollTop( this.scrollV ).scrollLeft( this.scrollH );
- }
-
- this.open(opts);
- },
-
- onUpdate : function() {
- if (!this.fixed) {
- this.update();
- }
- },
-
- afterClose: function (opts) {
- // Remove overlay if exists and fancyBox is not opening
- // (e.g., it is not being open using afterClose callback)
- if (this.overlay && !F.coming) {
- this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));
- }
- }
- };
-
- /*
- * Title helper
- */
-
- F.helpers.title = {
- defaults : {
- type : 'float', // 'float', 'inside', 'outside' or 'over',
- position : 'bottom' // 'top' or 'bottom'
- },
-
- beforeShow: function (opts) {
- var current = F.current,
- text = current.title,
- type = opts.type,
- title,
- target;
-
- if ($.isFunction(text)) {
- text = text.call(current.element, current);
- }
-
- if (!isString(text) || $.trim(text) === '') {
- return;
- }
-
- title = $('' + text + '');
-
- switch (type) {
- case 'inside':
- target = F.skin;
- break;
-
- case 'outside':
- target = F.wrap;
- break;
-
- case 'over':
- target = F.inner;
- break;
-
- default: // 'float'
- target = F.skin;
-
- title.appendTo('body');
-
- if (IE) {
- title.width( title.width() );
- }
-
- title.wrapInner('');
-
- //Increase bottom margin so this title will also fit into viewport
- F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );
- break;
- }
-
- title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target);
- }
- };
-
- // jQuery plugin initialization
- $.fn.fancybox = function (options) {
- var index,
- that = $(this),
- selector = this.selector || '',
- run = function(e) {
- var what = $(this).blur(), idx = index, relType, relVal;
-
- if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) {
- relType = options.groupAttr || 'data-fancybox-group';
- relVal = what.attr(relType);
-
- if (!relVal) {
- relType = 'rel';
- relVal = what.get(0)[ relType ];
- }
-
- if (relVal && relVal !== '' && relVal !== 'nofollow') {
- what = selector.length ? $(selector) : that;
- what = what.filter('[' + relType + '="' + relVal + '"]');
- idx = what.index(this);
- }
-
- options.index = idx;
-
- // Stop an event from bubbling if everything is fine
- if (F.open(what, options) !== false) {
- e.preventDefault();
- }
- }
- };
-
- options = options || {};
- index = options.index || 0;
-
- if (!selector || options.live === false) {
- that.unbind('click.fb-start').bind('click.fb-start', run);
-
- } else {
- D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run);
- }
-
- this.filter('[data-fancybox-start=1]').trigger('click');
-
- return this;
- };
-
- // Tests that need a body at doc ready
- D.ready(function() {
- var w1, w2;
-
- if ( $.scrollbarWidth === undefined ) {
- // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
- $.scrollbarWidth = function() {
- var parent = $('').appendTo('body'),
- child = parent.children(),
- width = child.innerWidth() - child.height( 99 ).innerWidth();
-
- parent.remove();
-
- return width;
- };
- }
-
- if ( $.support.fixedPosition === undefined ) {
- $.support.fixedPosition = (function() {
- var elem = $('').appendTo('body'),
- fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );
-
- elem.remove();
-
- return fixed;
- }());
- }
-
- $.extend(F.defaults, {
- scrollbarWidth : $.scrollbarWidth(),
- fixed : $.support.fixedPosition,
- parent : $('body')
- });
-
- //Get real width of page scroll-bar
- w1 = $(window).width();
-
- H.addClass('fancybox-lock-test');
-
- w2 = $(window).width();
-
- H.removeClass('fancybox-lock-test');
-
- $("").appendTo("head");
- });
-
-}(window, document, jQuery));
\ No newline at end of file
diff --git a/fancybox/jquery.fancybox.pack.js b/fancybox/jquery.fancybox.pack.js
deleted file mode 100644
index 2db12808..00000000
--- a/fancybox/jquery.fancybox.pack.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-(function(s,H,f,w){var K=f("html"),q=f(s),p=f(H),b=f.fancybox=function(){b.open.apply(this,arguments)},J=navigator.userAgent.match(/msie/i),C=null,t=H.createTouch!==w,u=function(a){return a&&a.hasOwnProperty&&a instanceof f},r=function(a){return a&&"string"===f.type(a)},F=function(a){return r(a)&&0 ',image:'
',iframe:'",error:'The requested content cannot be loaded.
Please try again later.
',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
-openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
-isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=u(a)?f(a).get():[a]),f.each(a,function(e,c){var l={},g,h,k,n,m;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),u(c)?(l={href:c.data("fancybox-href")||c.attr("href"),title:f("").text(c.data("fancybox-title")||c.attr("title")).html(),isDom:!0,element:c},
-f.metadata&&f.extend(!0,l,c.metadata())):l=c);g=d.href||l.href||(r(c)?c:null);h=d.title!==w?d.title:l.title||"";n=(k=d.content||l.content)?"html":d.type||l.type;!n&&l.isDom&&(n=c.data("fancybox-type"),n||(n=(n=c.prop("class").match(/fancybox\.(\w+)/))?n[1]:null));r(g)&&(n||(b.isImage(g)?n="image":b.isSWF(g)?n="swf":"#"===g.charAt(0)?n="inline":r(c)&&(n="html",k=c)),"ajax"===n&&(m=g.split(/\s+/,2),g=m.shift(),m=m.shift()));k||("inline"===n?g?k=f(r(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):l.isDom&&(k=c):
-"html"===n?k=g:n||g||!l.isDom||(n="inline",k=c));f.extend(l,{href:g,type:n,content:k,title:h,selector:m});a[e]=l}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==w&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1===b.trigger("onCancel")||(b.hideLoading(),a&&(b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),
-b.coming=null,b.current||b._afterZoomOut(a)))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(b.isOpen&&!0!==a?(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]()):(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&
-(b.player.timer=setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};!0===a||!b.player.isActive&&!1!==a?b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==w&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,l;c&&(l=b._getPosition(d),a&&"scroll"===a.type?(delete l.position,c.stop(!0,!0).animate(l,200)):(c.css(l),e.pos=f.extend({},e.dim,l)))},
-update:function(a){var d=a&&a.originalEvent&&a.originalEvent.type,e=!d||"orientationchange"===d;e&&(clearTimeout(C),C=null);b.isOpen&&!C&&(C=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),C=null)},e&&!t?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,t&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),
-b.trigger("onUpdate")),b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){27===(a.which||a.keyCode)&&(a.preventDefault(),b.cancel())});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}));b.trigger("onLoading")},getViewport:function(){var a=b.current&&
-b.current.locked||!1,d={x:q.scrollLeft(),y:q.scrollTop()};a&&a.length?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=t&&s.innerWidth?s.innerWidth:q.width(),d.h=t&&s.innerHeight?s.innerHeight:q.height());return d},unbindEvents:function(){b.wrap&&u(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");q.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(q.bind("orientationchange.fb"+(t?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=
-e.which||e.keyCode,l=e.target||e.srcElement;if(27===c&&b.coming)return!1;e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||l&&(l.type||f(l).is("[contenteditable]"))||f.each(d,function(d,l){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();0!==c&&!k&&1g||0>l)&&b.next(0>g?"up":"right"),d.preventDefault())}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&
-b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,{},b.helpers[d].defaults,e),c)})}p.trigger(a)},isImage:function(a){return r(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return r(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=m(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,
-c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===
-c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&t&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(t?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,x(d.padding[a]))});b.trigger("onReady");
-if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=
-this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,
-d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",t?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);t||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||
-b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,l,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());
-b.unbindEvents();e=a.content;c=a.type;l=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("").html(e).find(a.selector):u(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",
-!1)}));break;case "image":e=a.tpl.image.replace(/\{href\}/g,g);break;case "swf":e='"}u(e)&&e.parent().is(a.inner)||a.inner.append(e);b.trigger("beforeShow");
-a.inner.css("overflow","yes"===l?"scroll":"no"===l?"hidden":l);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(!b.isOpened)f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();else if(d.prevMethod)b.transitions[d.prevMethod]();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,l=b.skin,g=b.inner,h=b.current,c=h.width,k=h.height,n=h.minWidth,v=h.minHeight,p=h.maxWidth,
-q=h.maxHeight,t=h.scrolling,r=h.scrollOutside?h.scrollbarWidth:0,y=h.margin,z=m(y[1]+y[3]),s=m(y[0]+y[2]),w,A,u,D,B,G,C,E,I;e.add(l).add(g).width("auto").height("auto").removeClass("fancybox-tmp");y=m(l.outerWidth(!0)-l.width());w=m(l.outerHeight(!0)-l.height());A=z+y;u=s+w;D=F(c)?(a.w-A)*m(c)/100:c;B=F(k)?(a.h-u)*m(k)/100:k;if("iframe"===h.type){if(I=h.content,h.autoHeight&&1===I.data("ready"))try{I[0].contentWindow.document.location&&(g.width(D).height(9999),G=I.contents().find("body"),r&&G.css("overflow-x",
-"hidden"),B=G.outerHeight(!0))}catch(H){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(D),h.autoHeight||g.height(B),h.autoWidth&&(D=g.width()),h.autoHeight&&(B=g.height()),g.removeClass("fancybox-tmp");c=m(D);k=m(B);E=D/B;n=m(F(n)?m(n,"w")-A:n);p=m(F(p)?m(p,"w")-A:p);v=m(F(v)?m(v,"h")-u:v);q=m(F(q)?m(q,"h")-u:q);G=p;C=q;h.fitToView&&(p=Math.min(a.w-A,p),q=Math.min(a.h-u,q));A=a.w-z;s=a.h-s;h.aspectRatio?(c>p&&(c=p,k=m(c/E)),k>q&&(k=q,c=m(k*E)),cA||z>s)&&c>n&&k>v&&!(19p&&(c=p,k=m(c/E)),g.width(c).height(k),e.width(c+y),a=e.width(),z=e.height();else c=Math.max(n,Math.min(c,c-(a-A))),k=Math.max(v,Math.min(k,k-(z-s)));r&&"auto"===t&&kA||z>s)&&c>n&&k>v;c=h.aspectRatio?cv&&k ').appendTo(d&&d.lenth?d:"body");this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(q.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",
-function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){q.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),this.el.removeClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");
-J?(b=Math.max(H.documentElement.offsetWidth,H.body.offsetWidth),p.width()>b&&(a=p.width())):p.width()>q.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&this.fixed&&b.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&!this.el.hasClass("fancybox-lock")&&(!1!==this.fixPosition&&f("*").filter(function(){return"fixed"===
-f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin"),this.scrollV=q.scrollTop(),this.scrollH=q.scrollLeft(),this.el.addClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",
-position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(r(e)&&""!==f.trim(e)){d=f(''+e+"");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),J&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(m(d.css("margin-bottom")))}d["top"===a.position?"prependTo":
-"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",l=function(g){var h=f(this).blur(),k=d,l,m;g.ctrlKey||g.altKey||g.shiftKey||g.metaKey||h.is(".fancybox-wrap")||(l=a.groupAttr||"data-fancybox-group",m=h.attr(l),m||(l="rel",m=h.get(0)[l]),m&&""!==m&&"nofollow"!==m&&(h=c.length?f(c):e,h=h.filter("["+l+'="'+m+'"]'),k=h.index(this)),a.index=k,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;c&&!1!==a.live?p.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')",
-"click.fb-start",l):e.unbind("click.fb-start").bind("click.fb-start",l);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===w&&(f.scrollbarWidth=function(){var a=f('').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});f.support.fixedPosition===w&&(f.support.fixedPosition=function(){var a=f('').appendTo("body"),
-b=20===a[0].offsetTop||15===a[0].offsetTop;a.remove();return b}());f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(s).width();K.addClass("fancybox-lock-test");d=f(s).width();K.removeClass("fancybox-lock-test");f("").appendTo("head")})})(window,document,jQuery);
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 69908dbe..55431a34 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,7 +8,7 @@
"name": "hexo-site",
"version": "0.0.0",
"dependencies": {
- "hexo": "^6.3.0",
+ "hexo": "^7.0.0",
"hexo-deployer-git": "^4.0.0",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
@@ -16,36 +16,36 @@
"hexo-generator-index": "^3.0.0",
"hexo-generator-tag": "^2.0.0",
"hexo-leancloud-counter-security": "^1.5.0",
+ "hexo-neat": "^1.0.9",
"hexo-renderer-ejs": "^2.0.0",
- "hexo-renderer-marked": "^6.1.0",
+ "hexo-renderer-marked": "^6.3.0",
"hexo-renderer-stylus": "^3.0.0",
"hexo-server": "^3.0.0",
- "hexo-theme-next": "^8.17.0"
+ "hexo-theme-next": "^8.18.0"
+ },
+ "devDependencies": {
+ "patch-package": "^8.0.0"
}
},
"node_modules/@adobe/css-tools": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz",
- "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA=="
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz",
+ "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ=="
},
"node_modules/@babel/runtime": {
- "version": "7.22.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz",
- "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==",
- "dependencies": {
- "regenerator-runtime": "^0.13.11"
- },
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz",
+ "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/runtime-corejs3": {
- "version": "7.22.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.3.tgz",
- "integrity": "sha512-6bdmknScYKmt8I9VjsJuKKGr+TwUb555FTf6tT1P/ANlCjTHCiYLhiQ4X/O7J731w5NOqu8c1aYHEVuOwPz7jA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.3.tgz",
+ "integrity": "sha512-LKYxD2CIfocUFNREQ1yk+dW+8OH8CRqmgatBZYXb+XhuObO8wsDpEoCNri5bKld9cnj8xukqZjxSX8p1YiRF8Q==",
"dependencies": {
- "core-js-pure": "^3.30.2",
- "regenerator-runtime": "^0.13.11"
+ "core-js-pure": "^3.43.0"
},
"engines": {
"node": ">=6.9.0"
@@ -95,11 +95,11 @@
}
},
"node_modules/@leancloud/platform-adapters-node/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -111,12 +111,12 @@
}
},
"node_modules/@leancloud/platform-adapters-node/node_modules/formidable": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
- "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz",
+ "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==",
"dependencies": {
+ "@paralleldrive/cuid2": "^2.2.2",
"dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
"once": "^1.4.0",
"qs": "^6.11.0"
},
@@ -136,14 +136,15 @@
}
},
"node_modules/@leancloud/platform-adapters-node/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/@leancloud/platform-adapters-node/node_modules/superagent": {
- "version": "8.0.9",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
- "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
+ "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
+ "deprecated": "Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net",
"dependencies": {
"component-emitter": "^1.3.0",
"cookiejar": "^2.1.4",
@@ -161,17 +162,17 @@
}
},
"node_modules/@leancloud/platform-adapters-node/node_modules/ws": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz",
- "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==",
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.4.tgz",
+ "integrity": "sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==",
"dependencies": {
"async-limiter": "~1.0.0"
}
},
"node_modules/@leancloud/platform-adapters-weapp": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@leancloud/platform-adapters-weapp/-/platform-adapters-weapp-1.6.2.tgz",
- "integrity": "sha512-xMe8r3w0G/vOKy/Wnc9SZeb+cU/RzHkTK0s9aVgGS01wxOBAVlgbUEC8K67D1IeI15LxODL9e6wXXPgleR58FQ==",
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@leancloud/platform-adapters-weapp/-/platform-adapters-weapp-1.6.3.tgz",
+ "integrity": "sha512-adUCskxrCZ6aT8q9/s+JWXla1QIVKLAg571OP7VQeDvRqSYAUeqxLquQAmO0oiUQKsPDB5dDtYJHYvicJQK3IQ==",
"dependencies": {
"@leancloud/adapter-types": "^5.0.0",
"@leancloud/adapter-utils": "^1.2.2",
@@ -179,6 +180,25 @@
"miniprogram-api-typings": "^2.10.2"
}
},
+ "node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@paralleldrive/cuid2": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz",
+ "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==",
+ "dependencies": {
+ "@noble/hashes": "^1.1.5"
+ }
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -188,24 +208,33 @@
}
},
"node_modules/@types/cookiejar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz",
- "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog=="
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz",
+ "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q=="
},
"node_modules/@types/node": {
- "version": "20.2.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz",
- "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ=="
+ "version": "24.3.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz",
+ "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==",
+ "dependencies": {
+ "undici-types": "~7.10.0"
+ }
},
"node_modules/@types/superagent": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz",
- "integrity": "sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==",
+ "version": "4.1.24",
+ "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.24.tgz",
+ "integrity": "sha512-mEafCgyKiMFin24SDzWN7yAADt4gt6YawFiNMp0QS5ZPboORfyxFt0s3VzJKhTaKg9py/4FUmrHLTNfJKt9Rbw==",
"dependencies": {
"@types/cookiejar": "*",
"@types/node": "*"
}
},
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "optional": true
+ },
"node_modules/@types/ws": {
"version": "7.4.7",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz",
@@ -214,6 +243,12 @@
"@types/node": "*"
}
},
+ "node_modules/@yarnpkg/lockfile": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
+ "dev": true
+ },
"node_modules/a-sync-waterfall": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
@@ -222,29 +257,21 @@
"node_modules/abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "deprecated": "Use your platform's native atob() and btoa() methods instead"
},
"node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
+ "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
"engines": {
- "node": ">= 0.6"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"bin": {
"acorn": "bin/acorn"
},
@@ -262,9 +289,12 @@
}
},
"node_modules/acorn-walk": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+ "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+ "dependencies": {
+ "acorn": "^8.11.0"
+ },
"engines": {
"node": ">=0.4.0"
}
@@ -281,11 +311,11 @@
}
},
"node_modules/agent-base/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -297,9 +327,9 @@
}
},
"node_modules/agent-base/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/ansi-regex": {
"version": "5.0.1",
@@ -313,6 +343,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -323,6 +354,11 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -360,9 +396,9 @@
}
},
"node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
},
"node_modules/async-limiter": {
"version": "1.0.1",
@@ -374,6 +410,15 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -398,12 +443,20 @@
"node": ">= 0.8"
}
},
+ "node_modules/basic-auth/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bluebird": {
@@ -412,20 +465,19 @@
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
"node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -443,20 +495,53 @@
}
},
"node_modules/bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -483,6 +568,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -503,15 +589,9 @@
}
},
"node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -524,10 +604,39 @@
"engines": {
"node": ">= 8.10.0"
},
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clean-css": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
+ "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
"node_modules/cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
@@ -569,6 +678,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -579,7 +689,8 @@
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
"node_modules/colour": {
"version": "0.7.1",
@@ -614,9 +725,12 @@
}
},
"node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+ "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/compressible": {
"version": "2.0.18",
@@ -630,16 +744,16 @@
}
},
"node_modules/compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
"dependencies": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
"debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.1.0",
+ "safe-buffer": "5.2.1",
"vary": "~1.1.2"
},
"engines": {
@@ -671,9 +785,9 @@
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw=="
},
"node_modules/core-js-pure": {
- "version": "3.30.2",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz",
- "integrity": "sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg==",
+ "version": "3.45.1",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.45.1.tgz",
+ "integrity": "sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -681,9 +795,9 @@
}
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -758,14 +872,9 @@
}
},
"node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="
},
"node_modules/deepmerge": {
"version": "4.3.1",
@@ -775,6 +884,23 @@
"node": ">=0.10.0"
}
},
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -818,26 +944,18 @@
}
},
"node_modules/dom-serializer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
- "node_modules/dom-serializer/node_modules/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
@@ -853,6 +971,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
"integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+ "deprecated": "Use your platform's native DOMException instead",
"dependencies": {
"webidl-conversions": "^7.0.0"
},
@@ -861,11 +980,11 @@
}
},
"node_modules/domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dependencies": {
- "domelementtype": "^2.2.0"
+ "domelementtype": "^2.3.0"
},
"engines": {
"node": ">= 4"
@@ -875,32 +994,48 @@
}
},
"node_modules/dompurify": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.3.tgz",
- "integrity": "sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ=="
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz",
+ "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==",
+ "optionalDependencies": {
+ "@types/trusted-types": "^2.0.7"
+ }
},
"node_modules/domutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"dependencies": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
"dependencies": {
"jake": "^10.8.5"
},
@@ -920,9 +1055,9 @@
}
},
"node_modules/entities": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
- "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"engines": {
"node": ">=0.12"
},
@@ -930,20 +1065,60 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
+ "esutils": "^2.0.2"
},
"bin": {
"escodegen": "bin/escodegen.js",
@@ -1010,11 +1185,6 @@
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-3.0.3.tgz",
"integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg=="
},
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
- },
"node_modules/fast-safe-stringify": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
@@ -1028,29 +1198,10 @@
"minimatch": "^5.0.1"
}
},
- "node_modules/filelist/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/filelist/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -1075,13 +1226,24 @@
"node": ">= 0.8"
}
},
+ "node_modules/find-yarn-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^4.0.2"
+ }
+ },
"node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+ "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
@@ -1105,15 +1267,39 @@
"node": ">= 0.6"
}
},
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/fs-extra/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
"optional": true,
"os": [
@@ -1124,28 +1310,53 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -1172,34 +1383,67 @@
"node": ">= 6"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
- "function-bind": "^1.1.1"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">= 0.4.0"
+ "node": "*"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
},
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"engines": {
"node": ">= 0.4"
},
@@ -1207,10 +1451,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -1218,24 +1465,43 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
"node_modules/hexo": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/hexo/-/hexo-6.3.0.tgz",
- "integrity": "sha512-4Jq+rWd8sYvR1YdIQyndN/9WboQ/Mqm6eax8CjrjO+ePFm2oMVafSOx9WEyJ42wcLOHjfyMfnlQhnUuNmJIpPg==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/hexo/-/hexo-7.3.0.tgz",
+ "integrity": "sha512-dOe8mzBKrvjubW5oBmyhcnQDpC+M2xmAMLae5K+o+SkHxyvAhShkS2VQZoTsOLIJKY6xilv7dzCjCvE7ol/NHQ==",
"dependencies": {
- "abbrev": "^1.1.1",
+ "abbrev": "^2.0.0",
"archy": "^1.0.0",
"bluebird": "^3.7.2",
- "hexo-cli": "^4.3.0",
- "hexo-front-matter": "^3.0.0",
- "hexo-fs": "^3.1.0",
- "hexo-i18n": "^1.0.0",
- "hexo-log": "^3.2.0",
- "hexo-util": "^2.7.0",
+ "hexo-cli": "^4.3.2",
+ "hexo-front-matter": "^4.2.1",
+ "hexo-fs": "^4.1.3",
+ "hexo-i18n": "^2.0.0",
+ "hexo-log": "^4.0.1",
+ "hexo-util": "^3.3.0",
"js-yaml": "^4.1.0",
"js-yaml-js-types": "^1.0.0",
"micromatch": "^4.0.4",
- "moize": "^6.1.0",
+ "moize": "^6.1.6",
"moment": "^2.29.1",
"moment-timezone": "^0.5.34",
"nunjucks": "^3.2.3",
@@ -1246,13 +1512,13 @@
"text-table": "^0.2.0",
"tildify": "^2.0.0",
"titlecase": "^1.1.3",
- "warehouse": "^4.0.2"
+ "warehouse": "^5.0.1"
},
"bin": {
"hexo": "bin/hexo"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=14"
},
"funding": {
"type": "opencollective",
@@ -1260,16 +1526,16 @@
}
},
"node_modules/hexo-cli": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-4.3.1.tgz",
- "integrity": "sha512-nYe7yJhXT7MwlDEpIAjneMfz0wnWTdIhRv+cVW2OPTw8JtG2X+8Y/sYhPDvQz/ZqjFRZ4qgiKFXN5orFJ/u1vg==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-4.3.2.tgz",
+ "integrity": "sha512-druJeBgLpG9ncDS5AhBHdAXk0G4CFj8Qes09pApyZ6bR+nJW1JYiDMuilhudaKDdq+1l49jWXVTidkcb7p0Jbw==",
"dependencies": {
"abbrev": "^2.0.0",
"bluebird": "^3.7.2",
"command-exists": "^1.2.9",
"hexo-fs": "^4.1.1",
"hexo-log": "^4.0.1",
- "hexo-util": "^2.5.0",
+ "hexo-util": "^3.3.0",
"minimist": "^1.2.5",
"picocolors": "^1.0.0",
"resolve": "^1.20.0",
@@ -1282,92 +1548,140 @@
"node": ">=14"
}
},
- "node_modules/hexo-cli/node_modules/abbrev": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
- "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/hexo-cli/node_modules/hexo-fs": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-4.1.1.tgz",
- "integrity": "sha512-aDysNTyv8ElcerbFVbPLRXnYt+QDY6gAOZZ5DLbCxudY0Ywppqd+uZ03gZ2BDypIBvmNB27WYWYz76M+Yv/YXw==",
+ "node_modules/hexo-deployer-git": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-4.0.0.tgz",
+ "integrity": "sha512-28t1Q+4taB/UaBAP52W3mD/wcCwa2y2zBieUfBJFBZudbmVgiKJB5YedYILeyI5QByaUKAOwoupmdTbocdQ+CQ==",
"dependencies": {
"bluebird": "^3.7.2",
- "chokidar": "^3.5.3",
- "graceful-fs": "^4.2.10",
- "hexo-util": "^2.7.0"
+ "hexo-fs": "^4.0.0",
+ "hexo-util": "^2.7.0",
+ "luxon": "^3.0.4",
+ "nunjucks": "^3.2.3",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=14"
}
},
- "node_modules/hexo-cli/node_modules/hexo-log": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-4.0.1.tgz",
- "integrity": "sha512-jB2EADDJIwtepfUxiNCTN/5Ysa0B7vYMzkih69FAiubXcnMomKgx5WOlqODVfKnXYw0OQk1Fxrf5LVmfpR0i8w==",
+ "node_modules/hexo-deployer-git/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"dependencies": {
- "picocolors": "^1.0.0"
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/hexo-deployer-git/node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/hexo-deployer-git/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
},
"engines": {
- "node": ">=14"
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
- "node_modules/hexo-deployer-git": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-4.0.0.tgz",
- "integrity": "sha512-28t1Q+4taB/UaBAP52W3mD/wcCwa2y2zBieUfBJFBZudbmVgiKJB5YedYILeyI5QByaUKAOwoupmdTbocdQ+CQ==",
+ "node_modules/hexo-deployer-git/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"dependencies": {
- "bluebird": "^3.7.2",
- "hexo-fs": "^4.0.0",
- "hexo-util": "^2.7.0",
- "luxon": "^3.0.4",
- "nunjucks": "^3.2.3",
- "picocolors": "^1.0.0"
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
},
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/hexo-deployer-git/node_modules/entities": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+ "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
"engines": {
- "node": ">=14"
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/hexo-deployer-git/node_modules/hexo-fs": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-4.1.1.tgz",
- "integrity": "sha512-aDysNTyv8ElcerbFVbPLRXnYt+QDY6gAOZZ5DLbCxudY0Ywppqd+uZ03gZ2BDypIBvmNB27WYWYz76M+Yv/YXw==",
+ "node_modules/hexo-deployer-git/node_modules/hexo-util": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.7.0.tgz",
+ "integrity": "sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==",
"dependencies": {
- "bluebird": "^3.7.2",
- "chokidar": "^3.5.3",
- "graceful-fs": "^4.2.10",
- "hexo-util": "^2.7.0"
+ "bluebird": "^3.5.2",
+ "camel-case": "^4.0.0",
+ "cross-spawn": "^7.0.0",
+ "deepmerge": "^4.2.2",
+ "highlight.js": "^11.0.1",
+ "htmlparser2": "^7.0.0",
+ "prismjs": "^1.17.1",
+ "strip-indent": "^3.0.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/hexo-deployer-git/node_modules/htmlparser2": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
+ "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.2",
+ "domutils": "^2.8.0",
+ "entities": "^3.0.1"
}
},
"node_modules/hexo-front-matter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-3.0.0.tgz",
- "integrity": "sha512-hSQTPUmB/BCe1BFYmXRkPyLk8rqbBqHCQq+rjwwOJuEfOADrFaVK2VPZb90tJzPyXE1xSxpgCxE/AZq0CyTVwg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-4.2.1.tgz",
+ "integrity": "sha512-sJJI0GNmejYiwBvgnGRKn5V3sbODB4dNPr8jyw2Qp0PRHr4Uuyv8iyxw6WfK3+T7yvzYvJOh+tZ7jnwr2BYARA==",
"dependencies": {
"js-yaml": "^4.1.0"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=14"
}
},
"node_modules/hexo-fs": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-3.1.0.tgz",
- "integrity": "sha512-SfoDH7zlU9Iop+bAfEONXezbNIkpVX1QqjNCBYpapilZR+xVOCfTEdlNixanrKBbLGPb2fXqrdDBFgrKuiVGQQ==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-4.1.3.tgz",
+ "integrity": "sha512-Q92zQ5PlVDouvSWFLXQoFSTLIUIODikUJs2BfAXQglyOEjN1dOQn1Z5Nimk/7GHof17R5h/uObCQLnZAjzI2tg==",
"dependencies": {
- "bluebird": "^3.5.1",
- "chokidar": "^3.0.0",
- "graceful-fs": "^4.1.11",
- "hexo-util": "^2.0.0"
+ "bluebird": "^3.7.2",
+ "chokidar": "^3.5.3",
+ "graceful-fs": "^4.2.10",
+ "hexo-util": "^3.0.1"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
}
},
"node_modules/hexo-generator-archive": {
@@ -1404,6 +1718,101 @@
"node": ">=10.13.0"
}
},
+ "node_modules/hexo-generator-feed/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/hexo-generator-feed/node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/hexo-generator-feed/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/hexo-generator-feed/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/hexo-generator-feed/node_modules/entities": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+ "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/hexo-generator-feed/node_modules/hexo-util": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.7.0.tgz",
+ "integrity": "sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==",
+ "dependencies": {
+ "bluebird": "^3.5.2",
+ "camel-case": "^4.0.0",
+ "cross-spawn": "^7.0.0",
+ "deepmerge": "^4.2.2",
+ "highlight.js": "^11.0.1",
+ "htmlparser2": "^7.0.0",
+ "prismjs": "^1.17.1",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/hexo-generator-feed/node_modules/htmlparser2": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
+ "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.2",
+ "domutils": "^2.8.0",
+ "entities": "^3.0.1"
+ }
+ },
"node_modules/hexo-generator-index": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-3.0.0.tgz",
@@ -1427,14 +1836,14 @@
}
},
"node_modules/hexo-i18n": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-1.0.0.tgz",
- "integrity": "sha512-yw90JHr7ybUHN/QOkpHmlWJj1luVk5/v8CUU5NRA0n4TFp6av8NT7ujZ10GDawgnQEdMHnN5PUfAbNIVGR6axg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-2.0.0.tgz",
+ "integrity": "sha512-dkUXecEtChaQMdTHN4WR13c8GwKqjbSOZPJS9qDqV6Ebnb77Wa/nQzWFckhP0dCps3a9lUQBd8hYGOMbOosiQQ==",
"dependencies": {
- "sprintf-js": "^1.0.3"
+ "sprintf-js": "^1.1.2"
},
"engines": {
- "node": ">=8.6.0"
+ "node": ">=14"
}
},
"node_modules/hexo-leancloud-counter-security": {
@@ -1450,14 +1859,48 @@
}
},
"node_modules/hexo-log": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-3.2.0.tgz",
- "integrity": "sha512-fk7jOW3hvKiAv4Q/d8UxaQlARwcv+5KjGcnxexUrqBqyWbMCLmw7jhMHTSRLNNQpaoTlF5ff+kQkPi4yhp9iag==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-4.1.0.tgz",
+ "integrity": "sha512-i2Sgxk8Cgx5viSjq5qW5N/rBFfwoCKQcH8qnnW1fawCapcdEAhIsq+Y3vbrs9bssyDlyU6Vqm4oQmosREaNI7Q==",
"dependencies": {
"picocolors": "^1.0.0"
},
"engines": {
- "node": ">=12.4.0"
+ "node": ">=14"
+ }
+ },
+ "node_modules/hexo-neat": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/hexo-neat/-/hexo-neat-1.0.9.tgz",
+ "integrity": "sha512-LhurM9XWoEGmoqXAsp24a/ZbYm/dw/+E2QadoWogwS72Dic7sA2jjQ7B0POv4w1d9v1e8vqo0PyT/739zKoaSA==",
+ "dependencies": {
+ "bluebird": "^3.7.2",
+ "clean-css": "^4.2.3",
+ "html-minifier": "^4.0.0",
+ "minimatch": "^3.0.4",
+ "object-assign": "^4.1.1",
+ "stream-to-array": "^2.3.0",
+ "uglify-js": "~3.10.0"
+ }
+ },
+ "node_modules/hexo-neat/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/hexo-neat/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
"node_modules/hexo-pagination": {
@@ -1480,12 +1923,12 @@
}
},
"node_modules/hexo-renderer-marked": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-6.1.0.tgz",
- "integrity": "sha512-KuVuaYFyKfbJj5dtwoWMwTNbe7rk+UuVR/tGzLXbQ05AWO5ob6xpFHbfeSyzSDt4ccYLzaKJBRduDWHd2f6bSQ==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-6.3.0.tgz",
+ "integrity": "sha512-V/ATcJ+tZHkTJSbScPzzHKmrwVMohU8i9MfuX9jp07Un/NpPtaTP821unP3JPu+O1nNLWMi+3xRbFRdm+8vajw==",
"dependencies": {
"dompurify": "^3.0.3",
- "hexo-util": "^3.0.1",
+ "hexo-util": "^3.1.0",
"jsdom": "^20.0.1",
"marked": "^4.3.0"
},
@@ -1493,100 +1936,13 @@
"node": ">=14"
}
},
- "node_modules/hexo-renderer-marked/node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/hexo-renderer-marked/node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/hexo-renderer-marked/node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/hexo-renderer-marked/node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/hexo-renderer-marked/node_modules/hexo-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.0.1.tgz",
- "integrity": "sha512-ri3WsEUWSfrjydYPeOaWvrYIzfVBiaXUy0846051MkuJxBcNtG2o87q0KFGiniSMmi0XxLQhSl415anU3+FFlA==",
- "dependencies": {
- "bluebird": "^3.7.2",
- "camel-case": "^4.1.2",
- "cross-spawn": "^7.0.3",
- "deepmerge": "^4.2.2",
- "highlight.js": "^11.6.0",
- "htmlparser2": "^8.0.1",
- "prismjs": "^1.29.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/hexo-renderer-marked/node_modules/htmlparser2": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- }
- },
"node_modules/hexo-renderer-stylus": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-3.0.0.tgz",
- "integrity": "sha512-wgKOcjUzq1i4Y70luoyYDbh91QeQcDzJO+v1598LgY+IdREFAm+vy1MWtl/TZsVXyPaEtsULNi3Vi22hdsPUSA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-3.0.1.tgz",
+ "integrity": "sha512-cFm8ZwShBBeFcQwOXc8EK7lIZnSYVD6OJykdL4GBw99hxc4eD5Hlsi32nRzE8sgKv00jhX1s9Da3GVVFMPAVQg==",
"dependencies": {
"nib": "^1.2.0",
- "stylus": "^0.59.0"
+ "stylus": "^0.62.0"
},
"engines": {
"node": ">=14"
@@ -1611,40 +1967,32 @@
}
},
"node_modules/hexo-theme-next": {
- "version": "8.17.0",
- "resolved": "https://registry.npmjs.org/hexo-theme-next/-/hexo-theme-next-8.17.0.tgz",
- "integrity": "sha512-J51XPF6wlxxgJ6MW7MXi7LweIhR7i/57CwFk7GHIncju4GHYcD78D678p2UAc9MQc8MFQuyz2pgGopnUEXZ9BQ=="
+ "version": "8.24.1",
+ "resolved": "https://registry.npmjs.org/hexo-theme-next/-/hexo-theme-next-8.24.1.tgz",
+ "integrity": "sha512-DTa+umV5XTDa8XEtiLkaKDzgHqlnrj5HXi+6auI690TJdbIULm9sgaUQFkriDr2jeeGQDUV4ptsvgTTRaZjiGw=="
},
"node_modules/hexo-util": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.7.0.tgz",
- "integrity": "sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.3.0.tgz",
+ "integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==",
+ "hasInstallScript": true,
"dependencies": {
- "bluebird": "^3.5.2",
- "camel-case": "^4.0.0",
- "cross-spawn": "^7.0.0",
+ "camel-case": "^4.1.2",
+ "cross-spawn": "^7.0.3",
"deepmerge": "^4.2.2",
- "highlight.js": "^11.0.1",
- "htmlparser2": "^7.0.0",
- "prismjs": "^1.17.1",
+ "highlight.js": "^11.6.0",
+ "htmlparser2": "^9.0.0",
+ "prismjs": "^1.29.0",
"strip-indent": "^3.0.0"
},
"engines": {
- "node": ">=12.4.0"
- }
- },
- "node_modules/hexoid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
- "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
- "engines": {
- "node": ">=8"
+ "node": ">=14"
}
},
"node_modules/highlight.js": {
- "version": "11.8.0",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz",
- "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==",
+ "version": "11.11.1",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz",
+ "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==",
"engines": {
"node": ">=12.0.0"
}
@@ -1660,10 +2008,57 @@
"node": ">=12"
}
},
+ "node_modules/html-minifier": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
+ "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
+ "dependencies": {
+ "camel-case": "^3.0.0",
+ "clean-css": "^4.2.1",
+ "commander": "^2.19.0",
+ "he": "^1.2.0",
+ "param-case": "^2.1.1",
+ "relateurl": "^0.2.7",
+ "uglify-js": "^3.5.1"
+ },
+ "bin": {
+ "html-minifier": "cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/html-minifier/node_modules/camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
+ "dependencies": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "node_modules/html-minifier/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/html-minifier/node_modules/lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA=="
+ },
+ "node_modules/html-minifier/node_modules/no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dependencies": {
+ "lower-case": "^1.1.1"
+ }
+ },
"node_modules/htmlparser2": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
- "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
+ "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
@@ -1672,10 +2067,10 @@
}
],
"dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.2",
- "domutils": "^2.8.0",
- "entities": "^3.0.1"
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.1.0",
+ "entities": "^4.5.0"
}
},
"node_modules/http-errors": {
@@ -1715,11 +2110,11 @@
}
},
"node_modules/http-proxy-agent/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -1731,9 +2126,9 @@
}
},
"node_modules/http-proxy-agent/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/https-proxy-agent": {
"version": "5.0.1",
@@ -1748,11 +2143,11 @@
}
},
"node_modules/https-proxy-agent/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -1764,9 +2159,9 @@
}
},
"node_modules/https-proxy-agent/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/iconv-lite": {
"version": "0.6.3",
@@ -1783,6 +2178,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -1818,11 +2214,14 @@
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"node_modules/is-core-module": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
- "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -1904,20 +2303,25 @@
"node": ">=8"
}
},
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/jake": {
- "version": "10.8.7",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
- "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
+ "version": "10.9.4",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz",
+ "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==",
"dependencies": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
+ "async": "^3.2.6",
"filelist": "^1.0.4",
- "minimatch": "^3.1.2"
+ "picocolors": "^1.1.1"
},
"bin": {
"jake": "bin/cli.js"
@@ -1997,6 +2401,55 @@
}
}
},
+ "node_modules/json-stable-stringify": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz",
+ "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "isarray": "^2.0.5",
+ "jsonify": "^0.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/jsonify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
+ "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
@@ -2005,6 +2458,15 @@
"node >= 0.2.0"
]
},
+ "node_modules/klaw-sync": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
+ "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.11"
+ }
+ },
"node_modules/lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
@@ -2068,18 +2530,18 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/leancloud-storage": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/leancloud-storage/-/leancloud-storage-4.15.0.tgz",
- "integrity": "sha512-iEbg+xjcMBW2J0CrzmXwtnzID9uZkK+x1HBVZHGIE4xW+h1QpuPkFBVAK7CVmdLRmKiVt68OKboeUM48Rav9qQ==",
+ "version": "4.15.2",
+ "resolved": "https://registry.npmjs.org/leancloud-storage/-/leancloud-storage-4.15.2.tgz",
+ "integrity": "sha512-zvlfeG2aq25lFZ+2pvo0KoMf3jDuR0ThzLivCj5Yv3yhZf2i/BL5fypW+0IqRh6YSFkJ731iHHfq7FIPhxdHpw==",
"dependencies": {
"@babel/runtime-corejs3": "^7.18.6",
"@leancloud/adapter-types": "^5.0.0",
"@leancloud/platform-adapters-browser": "^1.5.3",
"@leancloud/platform-adapters-node": "^1.6.0",
- "@leancloud/platform-adapters-weapp": "^1.6.2",
+ "@leancloud/platform-adapters-weapp": "^1.6.3",
"debug": "^3.1.0",
"eventemitter3": "^2.0.3",
- "leancloud-realtime": "^5.0.0-rc.7",
+ "leancloud-realtime": "^5.0.0-rc.8",
"leancloud-realtime-plugin-live-query": "^1.2.0",
"md5": "^2.0.0",
"promise-timeout": "^1.3.0",
@@ -2100,18 +2562,6 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
- "node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/localstorage-memory": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/localstorage-memory/-/localstorage-memory-1.0.3.tgz",
@@ -2135,24 +2585,13 @@
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
"dependencies": {
- "tslib": "^2.0.3"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "tslib": "^2.0.3"
}
},
"node_modules/luxon": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz",
- "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==",
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.1.tgz",
+ "integrity": "sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==",
"engines": {
"node": ">=12"
}
@@ -2168,6 +2607,14 @@
"node": ">= 12"
}
},
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
@@ -2187,16 +2634,16 @@
}
},
"node_modules/micro-memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.1.2.tgz",
- "integrity": "sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g=="
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.1.3.tgz",
+ "integrity": "sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw=="
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -2215,9 +2662,9 @@
}
},
"node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"engines": {
"node": ">= 0.6"
}
@@ -2233,6 +2680,14 @@
"node": ">= 0.6"
}
},
+ "node_modules/mime-types/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -2242,14 +2697,14 @@
}
},
"node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": "*"
+ "node": ">=10"
}
},
"node_modules/minimist": {
@@ -2275,17 +2730,17 @@
}
},
"node_modules/moment": {
- "version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"engines": {
"node": "*"
}
},
"node_modules/moment-timezone": {
- "version": "0.5.43",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
- "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
+ "version": "0.5.48",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz",
+ "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==",
"dependencies": {
"moment": "^2.29.4"
},
@@ -2294,15 +2749,15 @@
}
},
"node_modules/morgan": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
- "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz",
+ "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==",
"dependencies": {
"basic-auth": "~2.0.1",
"debug": "2.6.9",
"depd": "~2.0.0",
"on-finished": "~2.3.0",
- "on-headers": "~1.0.2"
+ "on-headers": "~1.1.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -2314,9 +2769,9 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
"engines": {
"node": ">= 0.6"
}
@@ -2382,18 +2837,38 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz",
- "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ=="
+ "version": "2.2.21",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz",
+ "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA=="
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -2406,9 +2881,9 @@
}
},
"node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
"engines": {
"node": ">= 0.8"
}
@@ -2437,22 +2912,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/optjs": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz",
@@ -2469,21 +2928,51 @@
"node": ">=0.10.0"
}
},
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
+ "dependencies": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "node_modules/param-case/node_modules/lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA=="
+ },
+ "node_modules/param-case/node_modules/no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dependencies": {
+ "lower-case": "^1.1.1"
+ }
+ },
"node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"dependencies": {
- "entities": "^4.4.0"
+ "entities": "^6.0.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
"node_modules/parse5/node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"engines": {
"node": ">=0.12"
},
@@ -2508,6 +2997,52 @@
"tslib": "^2.0.3"
}
},
+ "node_modules/patch-package": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz",
+ "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==",
+ "dev": true,
+ "dependencies": {
+ "@yarnpkg/lockfile": "^1.1.0",
+ "chalk": "^4.1.2",
+ "ci-info": "^3.7.0",
+ "cross-spawn": "^7.0.3",
+ "find-yarn-workspace-root": "^2.0.0",
+ "fs-extra": "^9.0.0",
+ "json-stable-stringify": "^1.0.2",
+ "klaw-sync": "^6.0.0",
+ "minimist": "^1.2.6",
+ "open": "^7.4.2",
+ "rimraf": "^2.6.3",
+ "semver": "^7.5.3",
+ "slash": "^2.0.0",
+ "tmp": "^0.0.33",
+ "yaml": "^2.2.2"
+ },
+ "bin": {
+ "patch-package": "index.js"
+ },
+ "engines": {
+ "node": ">=14",
+ "npm": ">5"
+ }
+ },
+ "node_modules/patch-package/node_modules/open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -2530,9 +3065,9 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -2545,14 +3080,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/pretty-hrtime": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
@@ -2562,9 +3089,9 @@
}
},
"node_modules/prismjs": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
- "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
+ "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
"engines": {
"node": ">=6"
}
@@ -2592,24 +3119,30 @@
}
},
"node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
+ "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/lupomontero"
+ }
},
"node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"engines": {
"node": ">=6"
}
},
"node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
"dependencies": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -2663,10 +3196,13 @@
"node": ">= 0.8.0"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ "node_modules/relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "engines": {
+ "node": ">= 0.10"
+ }
},
"node_modules/requires-port": {
"version": "1.0.0",
@@ -2674,30 +3210,60 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"node_modules/resolve": {
- "version": "1.22.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
"dependencies": {
- "is-core-module": "^2.11.0",
+ "is-core-module": "^2.16.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
+ },
+ "node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
},
"node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
"node_modules/safer-buffer": {
"version": "2.1.2",
@@ -2705,9 +3271,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
},
"node_modules/saxes": {
"version": "6.0.0",
@@ -2721,12 +3287,9 @@
}
},
"node_modules/semver": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
- "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"bin": {
"semver": "bin/semver.js"
},
@@ -2735,9 +3298,9 @@
}
},
"node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
@@ -2793,19 +3356,44 @@
}
},
"node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
"dependencies": {
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.18.0"
+ "send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
+ "node_modules/serve-static/node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -2831,31 +3419,94 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "optional": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sprintf-js": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
- "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
},
"node_modules/statuses": {
"version": "1.5.0",
@@ -2865,6 +3516,14 @@
"node": ">= 0.6"
}
},
+ "node_modules/stream-to-array": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz",
+ "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==",
+ "dependencies": {
+ "any-promise": "^1.1.0"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -2873,25 +3532,6 @@
"safe-buffer": "~5.2.0"
}
},
- "node_modules/string_decoder/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
"node_modules/string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -2947,14 +3587,14 @@
}
},
"node_modules/stylus": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz",
- "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==",
+ "version": "0.62.0",
+ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.62.0.tgz",
+ "integrity": "sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg==",
"dependencies": {
- "@adobe/css-tools": "^4.0.1",
+ "@adobe/css-tools": "~4.3.1",
"debug": "^4.3.2",
"glob": "^7.1.6",
- "sax": "~1.2.4",
+ "sax": "~1.3.0",
"source-map": "^0.7.3"
},
"bin": {
@@ -2968,11 +3608,11 @@
}
},
"node_modules/stylus/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -2984,23 +3624,23 @@
}
},
"node_modules/stylus/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/stylus/node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
"engines": {
- "node": ">= 8"
+ "node": ">= 12"
}
},
"node_modules/superagent": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz",
"integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==",
- "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .",
+ "deprecated": "Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net",
"dependencies": {
"component-emitter": "^1.3.0",
"cookiejar": "^2.1.2",
@@ -3019,11 +3659,11 @@
}
},
"node_modules/superagent/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -3035,13 +3675,15 @@
}
},
"node_modules/superagent/node_modules/form-data": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
- "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz",
+ "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.35"
},
"engines": {
"node": ">= 6"
@@ -3059,14 +3701,15 @@
}
},
"node_modules/superagent/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -3119,6 +3762,18 @@
"to-title-case": "bin.js"
}
},
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -3139,9 +3794,9 @@
}
},
"node_modules/tough-cookie": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
- "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
"dependencies": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -3164,25 +3819,30 @@
}
},
"node_modules/tslib": {
- "version": "2.5.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
- "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w=="
- },
- "node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
- "dependencies": {
- "prelude-ls": "~1.1.2"
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ },
+ "node_modules/uglify-js": {
+ "version": "3.10.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.4.tgz",
+ "integrity": "sha512-kBFT3U4Dcj4/pJ52vfjCSfyLyvG9VYYuGYPmrPvAxRw/i7xHiT4VvCev+uiEMcEEiu6UNB6KgWmGtSUYIWScbw==",
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=0.8.0"
}
},
"node_modules/underscore": {
- "version": "1.13.6",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
- "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
+ "version": "1.13.7",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz",
+ "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g=="
+ },
+ "node_modules/undici-types": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz",
+ "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="
},
"node_modules/universalify": {
"version": "0.2.0",
@@ -3200,6 +3860,11 @@
"node": ">= 0.8"
}
},
+ "node_modules/upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA=="
+ },
"node_modules/url-parse": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
@@ -3251,21 +3916,21 @@
}
},
"node_modules/warehouse": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-4.0.2.tgz",
- "integrity": "sha512-GixS7SolBGu81rnxYM6bScxdElLM97Jx/kr0a6B6PGBWFqvHeuWFj7QbgEX1YWZSxiJt/aR6dBVQKC/PvvihdQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-5.0.1.tgz",
+ "integrity": "sha512-5BQEQP56bPY+cqocTho4syazuGgSoyKd0y3PsS2j8tGN10HH+CEfJSIY+KUw9D0k4jaVEFMXLz0KqCiUzTYb8A==",
"dependencies": {
- "bluebird": "^3.2.2",
- "cuid": "^2.1.4",
- "graceful-fs": "^4.1.3",
- "hexo-log": "^3.0.0",
+ "bluebird": "^3.7.2",
+ "cuid": "^2.1.8",
+ "graceful-fs": "^4.2.10",
+ "hexo-log": "^4.0.1",
"is-plain-object": "^5.0.0",
"jsonparse": "^1.3.1",
- "rfdc": "^1.1.4",
+ "rfdc": "^1.3.0",
"through2": "^4.0.2"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
}
},
"node_modules/webidl-conversions": {
@@ -3332,14 +3997,6 @@
"node": ">= 0.10.0"
}
},
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
@@ -3377,9 +4034,9 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"engines": {
"node": ">=10.0.0"
},
@@ -3414,10 +4071,17 @@
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
"integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
},
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "node_modules/yaml": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
+ "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+ "dev": true,
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ }
},
"node_modules/yargs": {
"version": "3.32.0",
diff --git a/package.json b/package.json
index 0138a726..9a0644ac 100644
--- a/package.json
+++ b/package.json
@@ -2,11 +2,14 @@
"name": "hexo-site",
"version": "0.0.0",
"private": true,
+ "scripts": {
+ "postinstall": "patch-package"
+ },
"hexo": {
- "version": "6.3.0"
+ "version": "7.3.0"
},
"dependencies": {
- "hexo": "^6.3.0",
+ "hexo": "^7.0.0",
"hexo-deployer-git": "^4.0.0",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
@@ -14,10 +17,14 @@
"hexo-generator-index": "^3.0.0",
"hexo-generator-tag": "^2.0.0",
"hexo-leancloud-counter-security": "^1.5.0",
+ "hexo-neat": "^1.0.9",
"hexo-renderer-ejs": "^2.0.0",
- "hexo-renderer-marked": "^6.1.0",
+ "hexo-renderer-marked": "^6.3.0",
"hexo-renderer-stylus": "^3.0.0",
"hexo-server": "^3.0.0",
- "hexo-theme-next": "^8.17.0"
+ "hexo-theme-next": "^8.18.0"
+ },
+ "devDependencies": {
+ "patch-package": "^8.0.0"
}
}
diff --git a/package.json.backup b/package.json.backup
new file mode 100644
index 00000000..0138a726
--- /dev/null
+++ b/package.json.backup
@@ -0,0 +1,23 @@
+{
+ "name": "hexo-site",
+ "version": "0.0.0",
+ "private": true,
+ "hexo": {
+ "version": "6.3.0"
+ },
+ "dependencies": {
+ "hexo": "^6.3.0",
+ "hexo-deployer-git": "^4.0.0",
+ "hexo-generator-archive": "^2.0.0",
+ "hexo-generator-category": "^2.0.0",
+ "hexo-generator-feed": "^3.0.0",
+ "hexo-generator-index": "^3.0.0",
+ "hexo-generator-tag": "^2.0.0",
+ "hexo-leancloud-counter-security": "^1.5.0",
+ "hexo-renderer-ejs": "^2.0.0",
+ "hexo-renderer-marked": "^6.1.0",
+ "hexo-renderer-stylus": "^3.0.0",
+ "hexo-server": "^3.0.0",
+ "hexo-theme-next": "^8.17.0"
+ }
+}
diff --git a/patches/hexo-leancloud-counter-security+1.5.0.patch b/patches/hexo-leancloud-counter-security+1.5.0.patch
new file mode 100644
index 00000000..7ef324f4
--- /dev/null
+++ b/patches/hexo-leancloud-counter-security+1.5.0.patch
@@ -0,0 +1,13 @@
+diff --git a/node_modules/hexo-leancloud-counter-security/index.js b/node_modules/hexo-leancloud-counter-security/index.js
+index 8b43311..4f71238 100644
+--- a/node_modules/hexo-leancloud-counter-security/index.js
++++ b/node_modules/hexo-leancloud-counter-security/index.js
+@@ -70,7 +70,7 @@ function postOperation(env, cnt, limit, newData, memoData) {
+ var readStream = fs.createReadStream(srcFile);
+ var writeStream = fs.createWriteStream(destFile);
+ readStream.pipe(writeStream);
+- this.log.info('leancloud.memo successfully updated.');
++ env.log.info('leancloud.memo successfully updated.');
+ }
+
+ async function sync() {
diff --git "a/source/_posts/\345\233\233\346\234\210\344\272\214\345\215\201\344\270\211\346\227\245\351\243\216\351\233\250\345\244\247\344\275\234.md" "b/source/_posts/\345\233\233\346\234\210\344\272\214\345\215\201\344\270\211\346\227\245\351\243\216\351\233\250\345\244\247\344\275\234.md"
new file mode 100644
index 00000000..476c3fe5
--- /dev/null
+++ "b/source/_posts/\345\233\233\346\234\210\344\272\214\345\215\201\344\270\211\346\227\245\351\243\216\351\233\250\345\244\247\344\275\234.md"
@@ -0,0 +1,104 @@
+---
+title: 四月二十三日风雨大作
+date: 2024-05-24 10:30:00
+tags:
+ - 生活
+ - 成长
+ - 父亲
+categories:
+- 生活
+permalink: /2024/05/23/birth-in-storm/
+---
+
+
+
+你出生一个月了。
+
+一个月前4月22号,是周一,她开始休产假的第一天。前一天我们像往常一样度过了一个普通的二人世界周末,一起逛街、吃饭,还囤了些零食,计划利用剩下的几周时间做好迎接家庭新成员的准备。
+
+
+
+## 突如其来的征兆
+
+但是,生活总有自己的节奏,你可能有了自己的想法。22号清晨,天刚蒙蒙亮,你与这个世界打了个招呼。她叫醒我说她可能要生了。我努力回想在抖音和小红书上刷到的各种待产征兆和应急预案,在迷糊的睡意和兴奋中保持冷静。
+
+我们确实预想过很多次这个时刻,这一刻心里彩排了很多次,熟悉得像梦,真实得也像梦。打车,去医院,办理住院,折腾了一番,然后通知爸妈,他们需要从老家赶来北京。他们需要过来的吧。嗯,我感觉自己像个大人了。
+
+医生说我来的时间有点早,但也还算合适,孩子在24小时内出生的概率不大。安顿好住院手续,我回公司上了半天班,尽力安顿和交接了一些事情,确信一切都还在计划之中。
+
+## 风雨将至的夜晚
+
+晚上,她发来短信,看起来产程已经接近了。我抬头望向室外,天空乌云密布,暴雨将至。于是我赶紧把手头的事情处理完,这还是比原计划提前了些。
+
+外面开始电闪雷鸣,我的手机锁屏壁纸也应景地变成了狂风暴雨。看来是"神龙降世",龙年出生的宝宝,大事发生时天气总是会起到烘托气氛的作用,语文课上讲过嘛。大人物出生的时候,天总是会有一些异象的,史书上也是这么写的。
+
+
+
+打车,可能有点堵,坐了地铁,但总觉得比平时慢。回家锁了两次门才出发去医院。去医院不远,骑电动车很快。这条路最近演习了很多遍。但是第一次出门还是忘了带钥匙。
+
+## 漫长的等待
+
+23号凌晨,突然开始下冰雹,狂风拍打着玻璃,啪啪作响。风在树木之间呼啸,雨滴狠狠地砸在医院的窗户上,像某种不经意间的节奏,为那刻增加着心跳的节拍。其他孕妇的呻吟声穿过床帘,小孩的哭声提醒着我,生命的诞生是痛苦的。是我从未想象过的痛苦。
+
+后半夜,进了产房开始准备助产。产房的灯光透过门缝投射出来,我与你们隔了一个世界。我预习过知道生产的过程可能很长,但是这一夜也太长,太长了。走廊墙上的钟表,真的一动不动。听着雨打玻璃的声音,排水管流水声,若隐若现的呻吟,偶尔几声啼哭,但是我的手机没有响动,又困,又清醒。
+
+直到23号中午时分,云层渐渐散去,阳光洒下。我的爸妈也都从老家赶来了。我们在住院部楼下公园里,等待着。有一句没一句聊着家里的琐事。
+
+## 那个决定性的电话
+
+13点32分,电话响了,是她打来的。
+
+我问她:"情况怎么样?我现在上去。"
+
+她说:"生完了,一切都还好"我听得出来呼吸有点急促。
+
+我又问:"你感觉怎么样?"
+
+她说:"我没事。"
+
+"孩子是女孩还是男孩?"
+
+她稍微提高了声量向护士问道"男孩,女孩?" 然后轻轻回应我:"哦,是男孩。"
+
+她又说:"还没处理完呢,等会儿再说。"
+
+"好,我现在就上楼。" 但是她已经挂了电话。预习过很多种场景,她也许刚刚经历了巨大的危险,也结束了我永远无法体会的十多个小时的阵痛,努力把担心转换成祈福。但这一刻,我想,应该是母子平安了吧。
+
+## 第一次见面的准备
+
+脚步一顿,我已停留在产房门外。保安淡定地扔下一声:"还得等,约莫一个小时。"心绪,好似一场斗篷上的风,旋转坠落于眼前这扇门后的世界。
+
+我在想我应该什么表情进去。第一次见面要怎么表示一下。先看她?还是先看他?
+
+她最辛苦最危险了,应该先关心她。带点好吃的?医生好像不让乱吃。那我可以抱抱她?
+
+待产包的东西有没有漏的,新生儿那部分的清单再看看?
+
+和他第一次见面需要什么仪式吗?我也很好奇他会长什么样子啊。
+
+我还是回家看看有没有漏掉什么东西吧。对了和家里的小咪和米粒也要通知一声。
+
+带上了葡萄,还有一个刚到的快递。给孩子,带了一本书,《我是你爸爸》。终于派上用场了。在返回医院的路上,天朗气清,神龙走了,那是来我身边了吧。
+
+## 初次相遇
+
+我第一次见到了你的样子,红彤彤的,还皱巴巴的。也不哭,也不闹,和预想的完全不一样,我没听到你的哭声。努力分辨这眉眼像谁,谁也不像。你只是安静的睡着我应该干点啥?她需要休息,你完全不理我。我有点多余。
+
+
+
+床边卡片记录着:3.35kg,51cm,2024.4.23 13:31。世界读书日,应该会爱读书有学问吧。农历三月十五。吉日,提前两周,即兴而来。摸出手机,翻查生成八字。土命之相,试图在他的天命中寻找最适切的名字。虽然我是唯物主义者,但我的孩子可不能缺了啥。好的我都可以信,但首先,名字应该朗朗上口。
+
+阳光透过窗,撒到了病床上。她睡着了。脸上还有一层薄薄的汗珠,温柔地闪耀着。她嘴角翕动了一下,悬着的心可以放下了。瞧,我们也是一家三口了。
+
+## 学习做父亲
+
+短暂接触几分钟,就让我们离开了。还得在医院看护三天。再后来的事情就如计划一样,出院后回到了太原。我开始实践自己的父亲身份,学习喂奶,调配温奶器,练习换尿布,一遍又一遍。拍嗝,正确抱姿,判断冷暖。翻看育儿书,小红书和抖音开始学新的技能。
+
+黄疸,迟迟不退。乳糖不耐,似我这体质,遗传。生活多了些许意外与挑战。她隔几个小时就要喂奶,生物钟彻底被打乱,但我却帮不了太多。我觉得该为她做点什么,大多数时候却只是旁观者,陪着看着。她突然之间就像个妈妈一样了,什么都会。
+
+
+
+## 新世界的开始
+
+转眼间,我当爸爸已经一个月了。我可以抱着你,稳稳地,甚至能哄睡,但还是有点陌生。我又回到了工位,已经是一个满是软肋的打工人了,但一个更大的世界在我工位之外开始生长了起来。
+
diff --git a/source/about/index.html b/source/about/index.html
index 98ab14b3..ea14a6a2 100755
--- a/source/about/index.html
+++ b/source/about/index.html
@@ -2,12 +2,14 @@
layout: false
---
-
+
-
+
+
+
@@ -16,460 +18,15 @@
+
+
康彪彪的简历
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -480,9 +37,8 @@
-
-
+
康彪彪
diff --git a/source/about/index.html.backup b/source/about/index.html.backup
new file mode 100755
index 00000000..98ab14b3
--- /dev/null
+++ b/source/about/index.html.backup
@@ -0,0 +1,686 @@
+---
+layout: false
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 康彪彪的简历
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2020年毕业 字节跳动-抖音-全干打杂
+ 邮箱:kbiao@qq.com 博客:blog.kbiao.me
+
+
+
+
+
+
+
+
+ 教育经历
+
+
+
+
+
+
+
+
+ 软件工程 硕士
+
+
+ 2017.09 - 2020.07
+
+
+
+
+
+
+
+ 荣誉/奖项:2018年“优秀研究生”
+ 学生工作:年级支部书记
+
+
+
+
+
+
+
+
+
+
+ 软件工程 本科
+
+
+ 2013.09 - 2017.07
+
+
+
+
+
+
+ 荣誉/奖项:国家奖学金 x1、特等奖学金 x4、一等奖学金 x1、
第八届英特尔大学生软件创新大赛三等奖
+ 学生工作:学院学生会主席、班长
+
+
+
+
+
+
+
+
+ 实习经历
+
+
+
+
+
+
+ 2018.07 - 2019.03
+ 学术社区项目(唯知平台)在线访问 >
+
+
+
+ - 负责后端API的设计与实现,使用Lavavel框架PHP语言开发,使用MySQL数据库,Nginx部署
+ - 完成了基于JWT的用户认证和RBAC的基础权限管理,文件系统等业务基础服务
+ - 完成了用户动态(类微博Feed流),发表文章,维护学术专家简历等业务功能
+
+
+
+
+
+
+
+ 2019.02 - 至今
+ 基于容器云的数据科学工作流的设计与实现
+
+
+ 技术选型与方案验证。了解了云原生机器学习相关技术机器生态
+ 搭建了 kubernates 的实验环境,参与运维实验集群
+ 根据组内的工作习惯,通过定义 CRD,实现大部分数据科学工作可以在云端完成
+
+
+
+
+
+
+
+
+
+ 项目经历
+
+
+
+
+
+
+ 北航在线编程平台微服务改造 在线访问 >
+
+ 2018年10月 - 至今
+ 实验室维护的遗留系统,本用于学院课程教学用后推广到全校所有信息类课程使用
+ 从单机系统支持200多人上机,逐步改进支持到近2000 以上学生同时上机考试的微服务系统,且对校外开放,积累上万名用户
+
+ - 使用 Spring/React 技术栈替换原有 NodeJS / CoffeeScript 的系统
+ - 使用 SideCar 模式使得新旧业务并行运行并逐步替换
+ - 使用 Redis 做分布式 Session 解耦用户认证,做消息队列拆分业务系统,实现分布式部署
+ - 合作发表论文一篇《Online programming platform based on crowdsourcing》In 13th International
+ Conference on
+ Computer Science and Education ICCSE 2018
+
+
+
+
+
+
+
+
+
+ 《猫途校园》小程序 (个人作品)
+ 2018年2月 - 2018年5月
+ 源自本科当班长时候负责课堂点名的繁琐工作产生的想法,研究生期间使用小程序实现。创新性基于二维码传递授权,百人以上的 课堂一分钟内完成考勤,且作弊难度高,另有其他课堂教学辅助功能
+
+ - 独自负责产品的设计实现以及推广运维
+ - 累积6000多用户,服务100多门课程考勤
+ - 使用云厂商提供的 ServerLess 服务快速开发。微信小程序为前端,NodeJS为后端。
+
+
+ 《课堂考勤新姿势》
+ 《考勤神器添新功能》
+
+
+
+
+
+
+
+
+
+
+ 中航工业智能制造消息中间件
+ 2017年11月 - 2018年4月
+ 支持 OPC ua 等物联网协议的消息中间件系统。上行接收机床控制设备私有协议数据,缓存、管理格式化为下游管理、控制系统所 需的json格式,并支持 HTTP/WebSocket/socket
+ 多种协议访问。
+
+ 从单机系统支持200多人上机,逐步改进支持到近2000 以上学生同时上机考试的微服务系统,且对校外开放,积累上万名用户
+
+ - 负责项目总体的设计和核心server 部分的实现,使用Spring boot框架, Redis 数据库
+ - 使用 netty 作为网络框架,实现自定义协议收发
+ - 自定义命令格式支持广播、队列等多种类型的数据分发服务
+ - 取得软件著作权《OPC/ua 消息中间件》一项
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/about/script.js b/source/about/script.js
new file mode 100644
index 00000000..ed1b7946
--- /dev/null
+++ b/source/about/script.js
@@ -0,0 +1,156 @@
+// 个人介绍页面 - 性能优化脚本
+
+document.addEventListener('DOMContentLoaded', function() {
+ // 图片懒加载
+ initLazyLoading();
+
+ // 平滑滚动
+ initSmoothScroll();
+
+ // 加载动画
+ initAnimations();
+
+ // 性能监控
+ initPerformanceMonitor();
+});
+
+// 图片懒加载实现
+function initLazyLoading() {
+ const images = document.querySelectorAll('img[data-src]');
+ const options = {
+ root: null,
+ rootMargin: '50px',
+ threshold: 0.1
+ };
+
+ if ('IntersectionObserver' in window) {
+ const imageObserver = new IntersectionObserver((entries, observer) => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ const img = entry.target;
+ img.src = img.dataset.src;
+ img.removeAttribute('data-src');
+ img.classList.add('fade-in');
+ observer.unobserve(img);
+ }
+ });
+ }, options);
+
+ images.forEach(img => imageObserver.observe(img));
+ } else {
+ // 降级方案:直接加载所有图片
+ images.forEach(img => {
+ img.src = img.dataset.src;
+ img.removeAttribute('data-src');
+ });
+ }
+}
+
+// 平滑滚动到锚点
+function initSmoothScroll() {
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
+ anchor.addEventListener('click', function (e) {
+ e.preventDefault();
+ const target = document.querySelector(this.getAttribute('href'));
+ if (target) {
+ target.scrollIntoView({
+ behavior: 'smooth',
+ block: 'start'
+ });
+ }
+ });
+ });
+}
+
+// 滚动加载动画
+function initAnimations() {
+ const animateElements = document.querySelectorAll('.education-item, .work-item, .project-item');
+ const options = {
+ root: null,
+ rootMargin: '0px',
+ threshold: 0.1
+ };
+
+ if ('IntersectionObserver' in window) {
+ const animationObserver = new IntersectionObserver((entries) => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ entry.target.classList.add('fade-in');
+ }
+ });
+ }, options);
+
+ animateElements.forEach(el => animationObserver.observe(el));
+ } else {
+ // 降级方案:直接添加动画类
+ animateElements.forEach(el => el.classList.add('fade-in'));
+ }
+}
+
+// 性能监控
+function initPerformanceMonitor() {
+ // 监控页面加载性能
+ window.addEventListener('load', function() {
+ if ('performance' in window) {
+ const perfData = performance.timing;
+ const pageLoadTime = perfData.loadEventEnd - perfData.navigationStart;
+ const domReadyTime = perfData.domContentLoadedEventEnd - perfData.navigationStart;
+
+ console.log(`页面加载时间: ${pageLoadTime}ms`);
+ console.log(`DOM就绪时间: ${domReadyTime}ms`);
+
+ // 发送性能数据(可选)
+ if (pageLoadTime > 3000) {
+ console.warn('页面加载时间超过3秒,建议优化');
+ }
+ }
+ });
+}
+
+// 预加载关键资源
+function preloadCriticalResources() {
+ const criticalImages = [
+ 'assets/images/avator.jpg',
+ 'assets/images/my_photo.png'
+ ];
+
+ criticalImages.forEach(src => {
+ const link = document.createElement('link');
+ link.rel = 'preload';
+ link.as = 'image';
+ link.href = src;
+ document.head.appendChild(link);
+ });
+}
+
+// 图片压缩与优化
+function optimizeImages() {
+ const images = document.querySelectorAll('img');
+
+ images.forEach(img => {
+ // 添加图片错误处理
+ img.addEventListener('error', function() {
+ console.warn(`图片加载失败: ${this.src}`);
+ this.style.display = 'none';
+ });
+
+ // 图片加载完成后的处理
+ img.addEventListener('load', function() {
+ this.style.opacity = '1';
+ });
+
+ // 设置初始透明度
+ img.style.opacity = '0';
+ img.style.transition = 'opacity 0.3s ease';
+ });
+}
+
+// 初始化图片优化
+document.addEventListener('DOMContentLoaded', optimizeImages);
+
+// 资源预加载
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', preloadCriticalResources);
+} else {
+ preloadCriticalResources();
+}
\ No newline at end of file
diff --git a/source/about/style.css b/source/about/style.css
new file mode 100644
index 00000000..626e19b4
--- /dev/null
+++ b/source/about/style.css
@@ -0,0 +1,609 @@
+/* 个人介绍页面 - Next Gemini主题兼容样式 */
+
+/* CSS变量 - 与Next主题保持一致 */
+:root {
+ /* Next主题核心色彩 */
+ --next-primary: #222;
+ --next-text: #555;
+ --next-background: #fff;
+ --next-border: #ddd;
+ --next-link: #0593d3;
+ --next-shadow: rgba(0,0,0,0.1);
+ --next-card-bg: #fff;
+ --next-gradient-start: #0593d3;
+ --next-gradient-end: #5ec5f7;
+
+ /* 字体系统 */
+ --next-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue", sans-serif;
+ --next-code-font: "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace;
+
+ /* 布局参数 */
+ --next-max-width: 1200px;
+ --next-content-margin: 40px;
+}
+
+/* 暗色模式适配 */
+@media (prefers-color-scheme: dark) {
+ :root {
+ --next-primary: #fff;
+ --next-text: #c2c2c2;
+ --next-background: #1e1e1e;
+ --next-border: #3a3a3a;
+ --next-link: #87ceeb;
+ --next-shadow: rgba(255,255,255,0.1);
+ --next-card-bg: #2a2a2a;
+ --next-gradient-start: #87ceeb;
+ --next-gradient-end: #4682b4;
+ }
+}
+
+/* 全局重置与基础样式 */
+* {
+ margin: 0;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: var(--next-font-family);
+ color: var(--next-text);
+ background-color: var(--next-background);
+ line-height: 1.6;
+ position: relative;
+ transition: background-color 0.3s ease, color 0.3s ease;
+}
+
+a {
+ color: var(--next-link);
+ text-decoration: none;
+ transition: color 0.3s ease;
+}
+
+a:hover {
+ color: var(--next-gradient-end);
+}
+
+/* 容器布局 - 响应式设计 */
+.container {
+ max-width: var(--next-max-width);
+ margin: 0 auto;
+ padding: 0 20px;
+}
+
+@media (max-width: 1200px) {
+ .container {
+ max-width: 960px;
+ }
+}
+
+@media (max-width: 767px) {
+ .container {
+ width: 100%;
+ padding: 0 16px;
+ }
+}
+
+/* 顶部导航栏 */
+.header .headerbar {
+ display: flex;
+ padding: 0.8rem 1rem;
+ min-height: 70px;
+ align-items: center;
+ background: var(--next-card-bg);
+ border-bottom: 3px solid var(--next-link);
+ position: fixed;
+ z-index: 1000;
+ width: 100%;
+ box-shadow: 0 2px 10px var(--next-shadow);
+ transition: all 0.3s ease;
+}
+
+.header-layout {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+}
+
+.header .brand {
+ display: flex;
+ align-items: center;
+ padding-right: 30px;
+}
+
+.header img {
+ width: 50px;
+ height: 50px;
+ border-radius: 50%;
+ margin-right: 1rem;
+ transition: transform 0.3s ease;
+}
+
+.header img:hover {
+ transform: scale(1.05);
+}
+
+.brand-name {
+ color: var(--next-primary);
+ font-size: 1.3rem;
+ font-weight: 600;
+ margin: 0;
+}
+
+.brand-text {
+ font-size: 0.85rem;
+ font-weight: 300;
+ color: var(--next-text);
+ margin: 0;
+}
+
+.home {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ padding: 8px 16px;
+ border-radius: 8px;
+ transition: background-color 0.3s ease;
+}
+
+.home:hover {
+ background-color: var(--next-border);
+}
+
+.home img {
+ width: 28px;
+ height: 28px;
+ margin-bottom: 4px;
+}
+
+/* 个人信息区块 */
+.person-info {
+ padding: 120px 0 60px;
+ background: linear-gradient(135deg, var(--next-gradient-start), var(--next-gradient-end));
+ color: #fff;
+ text-align: center;
+ position: relative;
+ overflow: hidden;
+}
+
+.person-info::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: url('data:image/svg+xml,') repeat;
+ background-size: 50px 50px;
+ opacity: 0.3;
+}
+
+.person-block {
+ position: relative;
+ z-index: 1;
+}
+
+.avator img {
+ width: 160px;
+ height: 160px;
+ border-radius: 50%;
+ margin-bottom: 24px;
+ border: 4px solid rgba(255,255,255,0.2);
+ box-shadow: 0 8px 32px rgba(0,0,0,0.3);
+ transition: transform 0.3s ease;
+}
+
+.avator img:hover {
+ transform: scale(1.05);
+}
+
+.person-detail p {
+ font-size: 18px;
+ line-height: 1.8;
+ margin-bottom: 8px;
+}
+
+.tag-list {
+ margin-top: 32px;
+ padding-bottom: 16px;
+}
+
+.tag-list span {
+ display: inline-block;
+ padding: 8px 16px;
+ margin: 4px 8px;
+ background: rgba(255,255,255,0.2);
+ border: 1px solid rgba(255,255,255,0.3);
+ border-radius: 20px;
+ font-size: 14px;
+ font-weight: 500;
+ transition: all 0.3s ease;
+ cursor: default;
+}
+
+.tag-list span:hover {
+ background: rgba(255,255,255,0.3);
+ transform: translateY(-2px);
+}
+
+/* 标题样式 */
+.title {
+ padding: 60px 0 40px;
+ font-weight: 300;
+ text-align: center;
+ font-size: 2.2rem;
+ color: var(--next-primary);
+ position: relative;
+}
+
+.title::after {
+ content: '';
+ position: absolute;
+ bottom: 20px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 60px;
+ height: 3px;
+ background: var(--next-link);
+ border-radius: 2px;
+}
+
+/* 教育经历 */
+.education {
+ padding-bottom: 60px;
+ background: var(--next-background);
+}
+
+.education-layout {
+ display: flex;
+ gap: 40px;
+ margin-top: 48px;
+}
+
+.education-item {
+ flex: 1;
+ background: var(--next-card-bg);
+ padding: 32px;
+ border-radius: 12px;
+ box-shadow: 0 4px 20px var(--next-shadow);
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+}
+
+.education-item:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 8px 30px var(--next-shadow);
+}
+
+.school {
+ display: flex;
+ align-items: center;
+ margin-bottom: 24px;
+}
+
+.school-img {
+ width: 80px;
+ height: 80px;
+ border-radius: 50%;
+ margin-right: 20px;
+ overflow: hidden;
+ box-shadow: 0 4px 15px var(--next-shadow);
+}
+
+.school-img img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+
+.school-name {
+ font-weight: 600;
+ font-size: 1.2rem;
+ margin-bottom: 8px;
+ color: var(--next-primary);
+}
+
+.school-info {
+ font-size: 1rem;
+ margin-bottom: 8px;
+ color: var(--next-text);
+}
+
+.school-time {
+ font-size: 0.9rem;
+ color: var(--next-link);
+ font-weight: 500;
+}
+
+.event {
+ font-size: 0.9rem;
+ color: var(--next-text);
+ line-height: 1.6;
+}
+
+.event span {
+ font-weight: 600;
+ color: var(--next-primary);
+}
+
+/* 实习经历 */
+.work {
+ background: linear-gradient(to bottom, var(--next-background) 0%, #f8f9fa 100%);
+ padding-bottom: 60px;
+}
+
+.work-layout {
+ display: flex;
+ gap: 32px;
+}
+
+.work-item {
+ flex: 1;
+ background: var(--next-card-bg);
+ padding: 40px;
+ border-radius: 12px;
+ box-shadow: 0 4px 20px var(--next-shadow);
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+}
+
+.work-item:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 8px 30px var(--next-shadow);
+}
+
+.company-logo {
+ width: 120px;
+ margin-bottom: 24px;
+}
+
+.company-logo img {
+ width: 100%;
+ height: auto;
+}
+
+.work-time {
+ font-weight: 500;
+ font-size: 0.9rem;
+ float: right;
+ color: var(--next-link);
+ margin-top: 8px;
+}
+
+.work-main {
+ font-size: 1.1rem;
+ color: var(--next-primary);
+ font-weight: 600;
+ line-height: 1.5;
+ margin-bottom: 16px;
+}
+
+.work-more {
+ display: inline-block;
+ padding: 6px 12px;
+ background: var(--next-link);
+ color: #fff;
+ font-size: 0.8rem;
+ border-radius: 16px;
+ margin-left: 8px;
+ transition: all 0.3s ease;
+}
+
+.work-more:hover {
+ background: var(--next-gradient-end);
+ transform: translateY(-1px);
+}
+
+.work-detail {
+ margin-top: 20px;
+ font-size: 0.9rem;
+ color: var(--next-text);
+ line-height: 1.6;
+}
+
+.work-detail ul {
+ padding-left: 20px;
+}
+
+.work-detail li {
+ margin-bottom: 8px;
+}
+
+/* 项目经历 */
+.project {
+ background: var(--next-background);
+ padding-bottom: 60px;
+}
+
+.project-item {
+ margin-bottom: 40px;
+ background: var(--next-card-bg);
+ box-shadow: 0 6px 25px var(--next-shadow);
+ border-radius: 12px;
+ display: flex;
+ overflow: hidden;
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+}
+
+.project-item:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 10px 35px var(--next-shadow);
+}
+
+.project-img {
+ width: 280px;
+ height: 220px;
+ flex-shrink: 0;
+ position: relative;
+ overflow: hidden;
+}
+
+.project1-img,
+.project2-img,
+.project3-img {
+ width: 100%;
+ height: 100%;
+ background-size: cover;
+ background-position: center;
+ transition: transform 0.3s ease;
+}
+
+.project-item:hover .project1-img,
+.project-item:hover .project2-img,
+.project-item:hover .project3-img {
+ transform: scale(1.05);
+}
+
+.project1-img {
+ background-image: url("assets/images/coding.jpg");
+}
+
+.project2-img {
+ background-image: url("assets/images/maotu.jpeg");
+}
+
+.project3-img {
+ background-image: url("assets/images/zhonghan.jpeg");
+}
+
+.project-info {
+ padding: 32px;
+ flex: 1;
+}
+
+.project-name {
+ font-size: 1.3rem;
+ font-weight: 600;
+ color: var(--next-primary);
+ margin-bottom: 12px;
+ display: inline-block;
+}
+
+.project-time {
+ display: inline-block;
+ margin-left: 16px;
+ color: var(--next-link);
+ font-weight: 500;
+ font-size: 0.9rem;
+}
+
+.project-info > p {
+ font-size: 0.95rem;
+ color: var(--next-text);
+ line-height: 1.6;
+ margin-bottom: 16px;
+}
+
+.project-info ul {
+ margin-top: 16px;
+ padding-left: 20px;
+}
+
+.project-info li {
+ margin-bottom: 8px;
+ color: var(--next-text);
+ font-size: 0.9rem;
+ line-height: 1.5;
+}
+
+.project-article {
+ margin-top: 20px;
+}
+
+.project-article a {
+ display: inline-block;
+ padding: 6px 14px;
+ background: #28a745;
+ color: #fff;
+ font-size: 0.8rem;
+ border-radius: 16px;
+ margin-right: 12px;
+ margin-bottom: 8px;
+ transition: all 0.3s ease;
+}
+
+.project-article a:hover {
+ background: #218838;
+ transform: translateY(-1px);
+}
+
+/* 响应式设计 */
+@media (max-width: 767px) {
+ .education-layout {
+ flex-direction: column;
+ gap: 24px;
+ }
+
+ .work-layout {
+ flex-direction: column;
+ gap: 24px;
+ }
+
+ .work-time {
+ float: none;
+ display: block;
+ margin-top: 8px;
+ }
+
+ .project-item {
+ flex-direction: column;
+ height: auto;
+ }
+
+ .project-img {
+ width: 100%;
+ height: 200px;
+ }
+
+ .project-time {
+ margin-left: 0;
+ display: block;
+ margin-top: 8px;
+ }
+
+ .person-detail p {
+ font-size: 16px;
+ }
+
+ .title {
+ font-size: 1.8rem;
+ }
+
+ .header-layout {
+ flex-wrap: wrap;
+ gap: 16px;
+ }
+}
+
+/* 平滑滚动 */
+html {
+ scroll-behavior: smooth;
+}
+
+/* 加载动画 */
+@keyframes fadeInUp {
+ from {
+ opacity: 0;
+ transform: translateY(30px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+.fade-in {
+ animation: fadeInUp 0.6s ease-out;
+}
+
+/* 无障碍支持 */
+@media (prefers-reduced-motion: reduce) {
+ * {
+ transition: none !important;
+ animation: none !important;
+ }
+
+ html {
+ scroll-behavior: auto;
+ }
+}
\ No newline at end of file
diff --git a/source/leancloud.memo b/source/leancloud.memo
index 03dfdfc3..ae87e5ec 100644
--- a/source/leancloud.memo
+++ b/source/leancloud.memo
@@ -1,6 +1,7 @@
[
{"title":"【译】20个 Laravel Eloquent 小技巧(下)","url":"//20-Laravel-Eloquent-Tips-and-Tricks-part2/"},
{"title":"【译】20个 Laravel Eloquent 小技巧(上)","url":"//20-Laravel-Eloquent-Tips-and-Tricks/"},
+{"title":"四月二十三日风雨大作","url":"//2024/05/23/birth-in-storm/"},
{"title":"安卓手机与IOS相册自动同步小技巧","url":"//Automatic-Sync-Android-album-whith-IOS/"},
{"title":"Docker学习笔记———Get Start","url":"//Docker-Learning-Notes-Get-Start/"},
{"title":"我的数字生活——效率工具推荐","url":"//My-life-with-some-awesome-apps/"},
@@ -11,6 +12,7 @@
{"title":"CORS实现跨域时授权问题(401错误)的解决","url":"/CORS实现跨域时授权问题(401错误)的解决-e460ee12b01e/"},
{"title":"Git配置多账号登录","url":"/Git配置多账号登录-4e3b1b4a716e/"},
{"title":"Java-Convert-List-to-Array","url":"/Java-Convert-List-To-Array-24935f750060/"},
+{"title":"是 RD 同时也是 PM:做业务架构试试这样思考问题","url":"/PM:做业务架构试试这样思考问题-ed1f511ffb31/"},
{"title":"Spring通过CORS协议解决跨域问题","url":"/Spring通过CORS协议解决跨域问题-8ff59635b5f0/"},
{"title":"Hello World","url":"/hello-world-e46dd7c73341/"},
{"title":"nodeJS踩坑-记本地地址127.0.0.1与0.0.0.0的区别","url":"/nodeJS踩坑-记本地地址127-0-0-1与0-0-0-0的区别-58e1062e389a/"},