Showing preview only (3,790K chars total). Download the full file or copy to clipboard to get everything.
Repository: nineya/halo-theme-dream
Branch: master
Commit: 62c28dea8594
Files: 220
Total size: 3.6 MB
Directory structure:
gitextract_1x6ktdds/
├── .eslintignore
├── .eslintrc.js
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.yml
│ ├── config.yml
│ ├── custom_config.yml
│ └── feature_request.yml
├── .gitignore
├── .npmignore
├── .npmrc
├── 404.ftl
├── 500.ftl
├── LICENSE
├── README.md
├── archives.ftl
├── categories.ftl
├── category.ftl
├── gulpfile.js
├── index.ftl
├── journals.ftl
├── links.ftl
├── mail_template/
│ ├── mail_notice.ftl
│ └── mail_reply.ftl
├── package.json
├── photos.ftl
├── post.ftl
├── post_literature.ftl
├── post_password.ftl
├── search.ftl
├── settings.yaml
├── sheet.ftl
├── sheet_literature.ftl
├── source/
│ ├── cursor/
│ │ ├── OwO/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ ├── UwU/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ ├── black_cat/
│ │ │ ├── Alternative.cur
│ │ │ ├── Escritura a Mano.cur
│ │ │ ├── Move.cur
│ │ │ ├── No_Disponible.cur
│ │ │ ├── Ocupado.cur
│ │ │ ├── ayuda.cur
│ │ │ ├── diagonal resize 1.cur
│ │ │ ├── diagonal resize 2.cur
│ │ │ ├── horizontal.cur
│ │ │ ├── normal.cur
│ │ │ ├── precision.cur
│ │ │ ├── texto.cur
│ │ │ ├── vertical.cur
│ │ │ └── work.cur
│ │ ├── breeze/
│ │ │ ├── Arrow.cur
│ │ │ ├── Cross.cur
│ │ │ ├── Hand.cur
│ │ │ ├── Handwriting.cur
│ │ │ ├── Help.cur
│ │ │ ├── IBeam.cur
│ │ │ ├── NO.cur
│ │ │ ├── SizeAll.cur
│ │ │ ├── SizeNESW.cur
│ │ │ ├── SizeNS.cur
│ │ │ ├── SizeNWSE.cur
│ │ │ ├── SizeWE.cur
│ │ │ └── UpArrow.cur
│ │ ├── debris/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ ├── horse/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ ├── marry/
│ │ │ ├── arrow.cur
│ │ │ ├── beam.ani
│ │ │ ├── beam.cur
│ │ │ ├── busy.ani
│ │ │ ├── ew.ani
│ │ │ ├── move.cur
│ │ │ ├── nesw.ani
│ │ │ ├── ns.ani
│ │ │ ├── nwse.ani
│ │ │ └── working.ani
│ │ ├── mellow/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ ├── music_cat_01/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ ├── music_cat_02/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ ├── overwatch/
│ │ │ ├── alternate.cur
│ │ │ ├── busy.ani
│ │ │ ├── cross.cur
│ │ │ ├── dgn1.cur
│ │ │ ├── dgn2.cur
│ │ │ ├── handwriting.cur
│ │ │ ├── help.cur
│ │ │ ├── horz.cur
│ │ │ ├── link.cur
│ │ │ ├── move.cur
│ │ │ ├── person.cur
│ │ │ ├── pin.cur
│ │ │ ├── pointer.cur
│ │ │ ├── text.cur
│ │ │ ├── vert.cur
│ │ │ └── work.ani
│ │ ├── rainbow_rain/
│ │ │ ├── Alternative2.cur
│ │ │ ├── Escritura a Mano.cur
│ │ │ ├── Movee2.cur
│ │ │ ├── No Disponible.cur
│ │ │ ├── Ocupado.cur
│ │ │ ├── ayuda.cur
│ │ │ ├── diagonal resize 1.cur
│ │ │ ├── diagonal resize 2.cur
│ │ │ ├── horizontal.cur
│ │ │ ├── link.ani
│ │ │ ├── link.cur
│ │ │ ├── normal.cur
│ │ │ ├── precision.cur
│ │ │ ├── texto.cur
│ │ │ ├── trabajando en segundo plano.cur
│ │ │ └── vertical1.cur
│ │ ├── water_01/
│ │ │ ├── arrow.cur
│ │ │ └── hand.cur
│ │ └── water_02/
│ │ ├── arrow.cur
│ │ └── hand.cur
│ └── lib/
│ ├── halo-comment@1.1.7/
│ │ ├── demo.html
│ │ └── halo-comment.js
│ ├── highlightjs@11.5.1/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── es/
│ │ │ ├── core.js
│ │ │ ├── highlight.js
│ │ │ └── package.json
│ │ ├── highlight.js
│ │ └── package.json
│ ├── jquery-pjax@2.0.1/
│ │ └── jquery.pjax.js
│ ├── katex@0.12.0/
│ │ ├── README.md
│ │ ├── contrib/
│ │ │ ├── auto-render.js
│ │ │ ├── auto-render.mjs
│ │ │ ├── copy-tex.css
│ │ │ ├── copy-tex.js
│ │ │ ├── copy-tex.mjs
│ │ │ ├── mathtex-script-type.js
│ │ │ ├── mathtex-script-type.mjs
│ │ │ ├── mhchem.js
│ │ │ ├── mhchem.mjs
│ │ │ ├── render-a11y-string.js
│ │ │ └── render-a11y-string.mjs
│ │ ├── katex.css
│ │ ├── katex.js
│ │ └── katex.mjs
│ ├── live2d@1.0.1/
│ │ └── waifu-tips.json
│ └── swiper@8.4.6/
│ ├── swiper-bundle.css
│ └── swiper-bundle.js
├── src/
│ ├── css/
│ │ ├── celebration.less
│ │ ├── cursor.less
│ │ ├── dshare.less
│ │ ├── mew-custom.less
│ │ ├── post.less
│ │ ├── style.less
│ │ └── theme.less
│ └── js/
│ ├── autoload.js
│ ├── btoc.js
│ ├── common.js
│ ├── cursor/
│ │ ├── click/
│ │ │ ├── firework.js
│ │ │ ├── granule.js
│ │ │ ├── heart.js
│ │ │ └── prosperous.js
│ │ └── move/
│ │ ├── bubbleCursor.js
│ │ ├── emojiCursor.js
│ │ ├── fairyDustCursor.js
│ │ ├── followingDotCursor.js
│ │ ├── ghostCursor.js
│ │ ├── snowflakeCursor.js
│ │ ├── springyEmojiCursor.js
│ │ └── trailingCursor.js
│ ├── dprogress.js
│ ├── dshare.js
│ ├── editor-options.js
│ ├── effects/
│ │ ├── circleMagic.js
│ │ ├── lantern.js
│ │ ├── sakura.js
│ │ ├── snowflake.js
│ │ └── universe.js
│ ├── journals.js
│ ├── mew-custom.js
│ ├── photos.js
│ ├── pjax.js
│ ├── post.js
│ ├── settings.js
│ ├── spark-input.js
│ ├── sw.js
│ └── utils.js
├── tag.ftl
├── tags.ftl
├── template/
│ ├── common/
│ │ ├── actions.ftl
│ │ ├── banner.ftl
│ │ ├── config.ftl
│ │ ├── footer.ftl
│ │ ├── head.ftl
│ │ ├── navbar.ftl
│ │ ├── scripts.ftl
│ │ └── widget.ftl
│ ├── errorpage.ftl
│ ├── layout.ftl
│ ├── layout_default.ftl
│ ├── layout_pjax.ftl
│ ├── main/
│ │ ├── admire.ftl
│ │ ├── article.ftl
│ │ ├── article_list.ftl
│ │ ├── article_literature.ftl
│ │ ├── comment.ftl
│ │ ├── copyright.ftl
│ │ └── pagination.ftl
│ └── widget/
│ ├── ad_piece.ftl
│ ├── categories.ftl
│ ├── custom.ftl
│ ├── links.ftl
│ ├── love.ftl
│ ├── music.ftl
│ ├── notice.ftl
│ ├── profile.ftl
│ ├── recent_comments.ftl
│ ├── recent_posts.ftl
│ ├── tagcloud.ftl
│ ├── tags.ftl
│ └── toc.ftl
└── theme.yaml
================================================
FILE CONTENTS
================================================
================================================
FILE: .eslintignore
================================================
source/
================================================
FILE: .eslintrc.js
================================================
module.exports = {
'env': {
'browser': true,
'es2021': true
},
'extends': 'eslint:recommended',
'overrides': [],
'parserOptions': {
'ecmaVersion': 'latest',
'sourceType': 'module'
},
'rules': {
'indent': ['error', 2],
'linebreak-style': ['error', 'unix'],
'quotes': ['error', 'single'],
'semi': ['error', 'never'],
'no-undef': ['off'],
'no-unused-vars': ['off'],
'no-useless-escape': ['off'],
'no-mixed-spaces-and-tabs': ['off'],
'no-inner-declarations': ['off']
}
}
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: BUG 提交
description: 提交 Bug 反馈
title: 'bug:'
labels: [bug]
body:
- type: markdown
id: preface
attributes:
value: |
感谢你花时间填写此错误报告!在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。
- type: markdown
id: environment
attributes:
value: "## 环境信息"
- type: input
id: halo-version
validations:
required: false
attributes:
label: "是什么 Halo 版本出现了此问题?"
description: "可以在管理后台的关于页面中找到。"
- type: input
id: dream-version
validations:
required: false
attributes:
label: "使用的 Dream 版本是多少?"
description: "可以在主题 `theme.yaml` 文件中找到。"
- type: input
id: site-url
attributes:
label: "在线博客地址"
description: "如果可以的话,请提供你的博客地址。这可能会帮助我们更好的定位问题。"
placeholder: "ex. https://blog.nineya.com"
validations:
required: false
- type: markdown
id: details
attributes:
value: "## 详细信息"
- type: textarea
id: what-happened
attributes:
label: "BUG 内容"
description: "较详细的描述 BUG 导致了什么问题。"
validations:
required: true
- type: textarea
id: logs
attributes:
label: "相关 Console 日志输出"
description: "浏览器界面按 `F12` 进入开发者工具,请复制并粘贴任何相关的控制台日志输出。 这将自动格式化为代码,因此无需反引号。"
render: shell
- type: textarea
id: additional-information
attributes:
label: "附加信息"
description: "如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。"
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
contact_links:
- name: 加入主题交流群
url: https://qm.qq.com/cgi-bin/qm/qr?k=X7p7Bs21cgtkQ0dRfzmBsuWqNNQc10hn&jump_from=webapi
about: 如果问题描述起来较于复杂,欢迎加入 Dream 主题交流群进行提问。
================================================
FILE: .github/ISSUE_TEMPLATE/custom_config.yml
================================================
name: 定制化配置
description: 提交定制化配置疑问
title: 'custom:'
labels: [custom]
body:
- type: markdown
id: preface
attributes:
value: "你好!感谢你为 Dream 提交定制化配置建议。在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。"
- type: markdown
id: environment
attributes:
value: "## 环境信息"
- type: input
id: dream-version
validations:
required: false
attributes:
label: "你当前使用的 Dream 版本"
description: "可以在主题 `theme.yaml` 文件中找到。"
- type: markdown
id: details
attributes:
value: "## 详细信息"
- type: textarea
id: description
attributes:
label: "描述一下此定制化内容"
validations:
required: true
- type: textarea
id: additional-information
attributes:
label: "补充信息"
description: "如果你还有其他需要提供的信息或解决思路,可以在这里填写。"
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: 新特性建议
description: 提交新特性建议
title: 'feat:'
body:
- type: markdown
id: preface
attributes:
value: "你好!感谢你为 Dream 提交新特性建议。在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。"
- type: markdown
id: environment
attributes:
value: "## 环境信息"
- type: input
id: halo-version
validations:
required: false
attributes:
label: "你当前使用的 Halo 版本"
description: "可以在管理后台的关于页面中找到。"
- type: input
id: dream-version
validations:
required: false
attributes:
label: "你当前使用的 Dream 版本"
description: "可以在主题 `theme.yaml` 文件中找到。"
- type: markdown
id: details
attributes:
value: "## 详细信息"
- type: textarea
id: description
attributes:
label: "描述一下此特性"
validations:
required: true
- type: textarea
id: additional-information
attributes:
label: "附加信息"
description: "如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。"
================================================
FILE: .gitignore
================================================
*.iml
.idea/
node_modules/
dist/
package-lock.json
================================================
FILE: .npmignore
================================================
/node_modules/*
/.idea/*
/.git/*
/.github/*
/dist
================================================
FILE: .npmrc
================================================
shamefully-hoist=true
registry=https://registry.npmjs.org
================================================
FILE: 404.ftl
================================================
<#include "template/errorpage.ftl">
<@errorpage "找不到网页","无法找到该文章或分类,可能已被删除,去<a href='${blog_url}'>首页</a>看看吧。","${status!}","${error!}","${message!}" />
================================================
FILE: 500.ftl
================================================
<#include "template/errorpage.ftl">
<@errorpage "服务器繁忙","围观群众太过热情,服务器繁忙,请稍后访问。","${status!}","${error!}","${message!}" />
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2021 Nineya
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<p align="center">
<img src="https://cdn.jsdelivr.net/gh/nineya/halo-theme-dream/screenshot.png" alt="halo-theme-dream" width="180">
</p>
<h1 align="center">halo-theme-dream</h1>
<p align="center">
<a href="https://github.com/nineya/halo-theme-dream/releases"><img alt="releases" src="https://img.shields.io/github/release/nineya/halo-theme-dream.svg?style=flat-square"/></a>
<a href="https://github.com/nineya/halo-theme-dream/blob/master/LICENSE"><img alt="license" src="https://img.shields.io/github/license/nineya/halo-theme-dream?style=flat-square"/></a>
<a href="https://github.com/nineya/halo-theme-dream/releases"><img alt="downloads" src="https://img.shields.io/github/downloads/nineya/halo-theme-dream/total.svg?style=flat-square"/></a>
<a href="https://github.com/nineya/halo-theme-dream/releases"><img alt="size" src="https://img.shields.io/github/languages/code-size/nineya/halo-theme-dream?style=flat-square"/></a>
<a href="https://github.com/nineya/halo-theme-dream/commits"><img alt="commits" src="https://img.shields.io/github/last-commit/nineya/halo-theme-dream.svg?style=flat-square"/></a>
<a href="https://github.com/nineya/halo-theme-dream#donate"><img alt="donate" src="https://img.shields.io/badge/$-donate-ff69b4.svg?style=flat-square"/></a>
</p>
主题已完成 `Halo 2.0` 适配,2.x 的主题不在当前仓库维护,详见:https://github.com/nineya/halo-theme-dream2.0
## 一、预览

预览:[主题预览](https://github.com/nineya/halo-theme-dream/discussions/72)
> 如果你有计划长期使用 `Dream` 主题,也来[这里](https://github.com/nineya/halo-theme-dream/discussions/72)留下你的博客链接吧。
## 二、说明
梦之城,童话梦境,动漫类型博客主题。
关于主题使用上的一些问题可以参见 [主题使用手册-基础篇](https://blog.nineya.com/archives/94.html)
如有疑问,欢迎加入 <a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=X7p7Bs21cgtkQ0dRfzmBsuWqNNQc10hn&jump_from=webapi">Dream 主题交流群:638168592</a>
个人博客交流,友链交换,欢迎加入 <a target="_blank" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=D7ZuSNSnuFN4G5IdsCN26r8jOzBAXy1u&authKey=RmgU54gpmm1HkigLUIp7AHAdSOde1Qr%2Fjple0WaMpDXNWdEA6K6vTfeujixwtGv4&noverify=0&group_code=582535349">个人博客交流群:582535349</a>
欢迎参与主题开发的一些<a href="https://github.com/nineya/halo-theme-dream/discussions">问题探讨</a>
欢迎关注微信公众号《玖涯菜菜子》,主题版本更新消息与要点说明将在公众号发布。

## 三、版本适配关系
| 主题版本 | 适配Halo-Plus版本 | 测试用Halo-Plus版本 |
|----------|---------------|----------------|
| xx-2.3.1 | 1.0.0 | 1.0.0 |
| 3.0.0 | 1.0.1 | 1.0.1 |
| 3.0.1 | 1.0.2 | 1.0.2 |
当前仓库为适配 `Halo-Plus` 的仓库,与 `Halo` 官方的博客系统不兼容。
- 兼容 `Halo 1.x` 的分支(存档,不再维护):https://github.com/nineya/halo-theme-dream/tree/halo
- 兼容 `Haki 2.x` 的分支(维护中):https://github.com/nineya/halo-theme-dream2.0
## 四、安装 & 更新
### 4.1 安装包安装 & 更新
1. 进入主题 `Release` 界面:https://github.com/nineya/halo-theme-dream/releases 下载主题压缩包 `halo-theme-dream.zip` 压缩包文件;
2. 进入博客后台管理 `外观->主题->安装->本地上传`,选择下载的 `halo-theme-dream.zip` 安装包进行上传;
3. 等待安装完成;
4. 更新主题时同样前往主题 `Release` 界面下载主题安装包,然后通过 `外观->主题->Dream->更多->从主题包更新` 方法上传安装包进行更新。
### 4.2 在线安装 & 更新
1. 复制主题仓库地址 `https://github.com/nineya/halo-theme-dream.git`
2. 进入博客后台管理 `外观->主题->安装->远程下载`,黏贴仓库地址进行安装;
3. 等待安装完成;
4. 在线更新主题时,通过 `外观->主题->Dream->更多->在线更新` 方法进行更新。
> 在线安装 & 更新的方式不推荐:
>
> 1. 因为由于 `GitHub` 的网络问题,很大几率会安装& 更新失败;
> 2. 主题是经过源码编译的,直接从仓库下载包含了主题的源码以及开发所需的相关文件,这些文件并不是安装主题所需要的。
## 五、参与主题开发
> 推荐使用 IDEA 进行主题开发,能够比较好的支持 FreeMarker。
1. 开发环境准备
- 安装 `nodejs` 版本需要在 `15+`;
- 主题目录下执行 `npm i` 安装依赖;
2. npm 命令
- `npm run build` 执行主题打包操作,主题将被打包为压缩包文件存放在 `dist/` 目录下,同时 `source` 目录下的文件也将被更新。
- `npm run build --devel` 开发模式进行主题打包,`js` 和 `css` 不会被做压缩和混淆处理,方便排查问题。
- `npm run cdn --tag=$version` 创建 `FreeCDN` 清单文件,必须指定 `tag` 参数,值为本地代码将发布到 `GitHub` 仓库的版本标签。
- `npm run release --tag=$version` 发布模式执行主题打包操作,将自动更新主题中的版本号,并使用这个版本标签重新创建 `FreeCDN` 清单文件。
## 六、打赏项目
感谢您对本项目的喜爱,您的打赏是对本项目最好的支持!

================================================
FILE: archives.ftl
================================================
<#include "template/layout.ftl">
<@layout title="归档 - ${blog_title!}" canonical="${archives_url!}">
<#if (archives)?? && archives?size gt 0>
<#list archives as archive>
<div class="card card-content">
<div class="timeline-title">${archive.year?c}</div>
<div class="timeline">
<#list archive.posts as post>
<#assign thumbnail = (post.thumbnail?? && post.thumbnail!='')?then(post.thumbnail!, (settings.default_thumbnail?? && settings.default_thumbnail!='')?then(settings.default_thumbnail + settings.default_thumbnail?contains('?')?then("&","?") + "postId=" + post.id?c, ''))>
<article class="media">
<#if thumbnail!=''>
<a href="${post.fullPath}" class="media-left">
<img class="not-gallery" src="${thumbnail!}" alt="${post.title!}">
</a>
</#if>
<div class="media-content">
<time datetime="${post.createTime!}">${post.createTime?string('yyyy-MM-dd')}</time>
<a href="${post.fullPath!}" class="title has-link-grey">${post.title!}</a>
<#if post.categories?? && post.categories?size gt 0>
<p>
<#list post.categories as category>
<a class="has-link-grey"
href="${category.fullPath!}">${category.name!}</a>
</#list>
</p>
</#if>
</div>
</article>
</#list>
</div>
</div>
</#list>
<#include "template/main/pagination.ftl">
<@pagination method="archives" datas=posts display="${settings.page_number!5}" />
<#else>
<div class="card card-empty">
<i class="ri-inbox-2-fill"></i>
还没有发表过文章,回<a href="${context!}">主页</a>看看吧
</div>
</#if>
</@layout>
================================================
FILE: categories.ftl
================================================
<#include "template/layout.ftl">
<#macro categoriesTree categories>
<#list categories as category>
<li>
<a class="level is-marginless" href="${category.fullPath!}">
<span class="level-item">${category.name}</span>
<span class="level-item tag">${postCounts[category.id?c]!}</span>
</a>
<#if category.children?? && category.children?size gt 0>
<ul>
<@categoriesTree category.children/>
</ul>
</#if>
</li>
</#list>
</#macro>
<@layout title="分类 - ${blog_title!}" canonical="${categories_url!}">
<#assign postCounts = {}>
<@categoryTag method="list">
<#list categories as category>
<#assign postCounts += {category.id: category.postCount}>
</#list>
</@categoryTag>
<@categoryTag method="tree">
<#if categories?? && categories?size gt 0>
<div class="card card-content">
<div class="card-tab"><div>文章分类</div></div>
<ul class="menu-list">
<@categoriesTree categories/>
</ul>
</div>
<#else>
<div class="card card-empty">
<i class="ri-inbox-2-fill"></i>
还没有创建过分类,回<a href="${context!}">主页</a>看看吧
</div>
</#if>
</@categoryTag>
</@layout>
================================================
FILE: category.ftl
================================================
<#include "template/layout.ftl">
<@layout title="分类:${category.name!} - ${blog_title!}" canonical="${category.fullPath!}">
<#if (posts.content)?? && posts.content?size gt 0>
<div class="card card-content main-title">
<ul class="breadcrumb">
<li><a href="${categories_url!}"><i class="ri-apps-line"></i>分类</a></li>
<li>${category.name}</li>
</ul>
</div>
<#include "template/main/article_list.ftl">
<@article_list posts.content/>
<#include "template/main/pagination.ftl">
<@pagination method="categoryPosts" datas=posts slug="${category.slug!}" display="${settings.page_number!5}" />
<#else>
<div class="card card-empty">
<i class="ri-inbox-2-fill"></i>
该分类下没有文章,回<a href="${context!}">主页</a>看看吧
</div>
</#if>
</@layout>
================================================
FILE: gulpfile.js
================================================
const {src, dest, task, series, parallel} = require('gulp')
const webpack = require('webpack-stream')
const less = require('gulp-less')
const autoprefix = require('gulp-autoprefixer')
const uglify = require('gulp-uglify')
const minifyCSS = require('gulp-csso')
const zip = require('gulp-zip')
const rename = require('gulp-rename')
const clean = require('gulp-clean')
const path = require('path')
const execSync = require('child_process').execSync
const fs = require('fs')
const resolve = (name) => path.resolve(__dirname, name)
const cssPath = './source/css'
const jsPath = './source/js'
const distPath = './dist'
const devModel = process.env.npm_config_devel
const version = process.env.npm_config_tag
if (devModel) {
console.log('> 开发模式')
}
version && console.log(`> 发布版本:${version}`)
task('clean', () => {
return src([cssPath, jsPath, distPath], {
read: false,
allowEmpty: true,
}).pipe(
clean({
force: true,
})
)
})
task('version', (done) => {
if (version == null) {
console.log('[Version] No \'--tag\' parameters are specified')
done()
return
}
const themePath = 'theme.yaml'
const packagePath = 'package.json'
const themeData = fs.readFileSync(themePath, 'utf8')
.replace(/^version:\s+[^\s]+$/m, 'version: ' + version)
.replace(/^(editorOptions:.+mew=)[^\s]+$/m, '$1' + version)
fs.writeFileSync(themePath, themeData)
let packageData = fs.readFileSync(packagePath, 'utf8')
.replace(/"version":\s*"[^"]+"/, `"version": "${version}"`)
fs.writeFileSync(packagePath, packageData)
done()
})
task('css', () => {
const ignoreFiles = [].map((file) => `./src/css/${file}.less`)
let gw = src('./src/css/**/*.less', {
ignore: ignoreFiles,
})
.pipe(less())
.pipe(
autoprefix({
overrideBrowserslist: ['> 2%', 'last 2 versions', 'not ie 6-9'],
cascade: false,
})
)
if (!devModel) {
gw = gw.pipe(minifyCSS())
}
return gw.pipe(
rename({
suffix: '.min',
})
).pipe(dest(cssPath))
})
task('js', () => {
const readFile = (prefix, dir, ignoreFiles) => {
let result = {}
let files = fs.readdirSync(dir, 'utf-8')
files.forEach((file) => {
let filePath = path.join(dir, file)
let states = fs.statSync(filePath)
if (states.isDirectory()) {
Object.assign(result, readFile(path.join(prefix, file), filePath, ignoreFiles))
} else if (ignoreFiles.length
? /\.js$/.test(file) && !ignoreFiles.includes(path.join(prefix, file))
: /\.js$/.test(file)) {
const fileName = file.replace(/.js$/, '')
result[path.join(prefix, fileName)] = resolve(filePath)
}
})
return result
}
const getEntryData = () => {
return readFile('', './src/js', [])
}
return webpack({
mode: devModel ? 'development' : 'production',
entry: getEntryData(),
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
include: resolve('source'),
exclude: resolve('node_modules'),
options: {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-transform-runtime'],
},
},
],
},
stats: 'errors-only',
output: {
filename: '[name].min.js',
},
})
.pipe(uglify())
.pipe(dest(jsPath))
})
task('zip', () => {
const target = ['./source/**', './template/**', './mail_template/**', './*.ftl', './*.yaml', 'README.md', 'screenshot.png', 'LICENSE']
return src(target, {base: '.'})
.pipe(zip('halo-theme-dream.zip'))
.pipe(dest(distPath))
})
task('publish', (done) => {
// 需要将tag标签内容置为 latest
process.env.npm_config_tag = 'latest'
console.log(execSync('npm publish').toString())
done()
})
// 默认模式
task('default', series('clean', parallel('css', 'js'), 'zip'))
// release模式,需要使用--tag参数指定版本号
task('release', series('clean', 'version', parallel('css', 'js'), 'zip'))
// push模式,需要使用--tag参数指定版本号
task('push', series('clean', 'version', parallel('css', 'js'), 'zip', 'publish'))
================================================
FILE: index.ftl
================================================
<#include "template/layout.ftl">
<#global is_first_index=(posts.number == 0) >
<#macro model_build option>
<#if !option??>
<#return>
</#if>
<#local tag=((option.tag!'')?trim != '')?then('<div class="tag">${option.tag?trim}</div>', '')>
<#local title=((option.title!'')?trim != '')?then('<div class="title">${option.title?trim}</div>', '')>
<#local target=((option.target!'')?trim != '')?then(' target="${option.target?trim}"', ' target="_blank"')>
<#local imageUrl=((option.image!'')?trim != '')?then(' style="background-image: url(${option.image?trim})"', '')>
<#local targetUrl=((option.url!'')?trim != '')?then(' href="${option.url?trim}"', '')>
<a class="card widget brightness ${(title!='')?then('bg-shadow', '')}"${target}${imageUrl}${targetUrl}>${title}${tag}</a>
</#macro>
<@layout title="${blog_title!}" canonical="${blog_url!}">
<#if posts.content?? && posts.content?size gt 0>
<#if is_first_index!false>
<#assign carousel_content>
<#list posts.content as post>
<#if post.topPriority!=1>
<#break>
</#if>
<#if !post.metas?? || (post.metas.index_carousel!'false')=='false'>
<#continue>
</#if>
<#assign thumbnail = (post.thumbnail?? && post.thumbnail!='')?then(post.thumbnail!, (settings.default_thumbnail?? && settings.default_thumbnail!='')?then(settings.default_thumbnail + settings.default_thumbnail?contains('?')?then("&","?") + "postId=" + post.id?c, ''))>
<#if thumbnail != ''>
<a class="swiper-slide bg-shadow cover-image" style="background-image: url(${thumbnail})" href="${post.fullPath!}">
<div class="swiper-slide-details" data-swiper-parallax="200" data-swiper-parallax-duration="600">
<p class="swiper-slide-details-title">${post.title!}</p>
<ul class="breadcrumb">
<li><@global.timeline datetime=post.createTime/></li>
<li><i class="ri-eye-line"></i>${post.visits?c}</li>
<#if !post.disallowComment!false>
<li><i class="ri-question-answer-line"></i>${post.commentCount?c}</li></#if>
<li><i class="ri-thumb-up-line"></i>${post.likes?c}</li>
<#assign heat= (24+post.visits*0.1+post.likes*2+post.commentCount*3) />
<#assign heatColor= '#'+(heat < 37)?string('ffa87e',(heat < 120)?string('fb734a','e0081c')) />
<li style="color: ${heatColor}">${heat}℃</li>
</ul>
</div>
</a>
</#if>
</#list>
</#assign>
<#if settings.sidebar_column=='module-left' || settings.sidebar_column=='module-right'>
<div class="model model-index">
<div class="card widget swiper">
<div class="swiper-wrapper">${carousel_content}</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<div class="model model-index-side">
<#if settings.module_options?? && settings.module_options?size > 0>
<#list 0..1 as i>
<#if i < settings.module_options?size >
<@model_build settings.module_options[i]/>
</#if>
</#list>
<#else>
<#list 0..1 as i>
<#if i < posts.content?size >
<#assign postOption=posts.content[i]>
<@model_build {"tag": "推荐", "title": "${postOption.title!}", "url": "${postOption.fullPath}", "image": "${postOption.thumbnail}", "target": "_self"}/>
</#if>
</#list>
</#if>
</div>
</div>
<#if settings.module_options?? && settings.module_options?size > 2 && settings.module_options?size<=6>
<div class="model model-attach model-attach-${settings.module_options?size-2}">
<#list 2..5 as i>
<#if i < settings.module_options?size >
<@model_build settings.module_options[i]/>
</#if>
</#list>
</div>
</#if>
<#assign is_carousel=true />
<#elseif carousel_content != ''>
<div class="card widget swiper">
<div class="swiper-wrapper">${carousel_content}</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<#assign is_carousel=true />
</#if>
<#if settings.index_inform?? && settings.index_inform != ''>
<div class="card tips brightness">${settings.index_inform}</div>
</#if>
</#if>
<#include "template/main/article_list.ftl">
<@article_list posts.content/>
<#include "template/main/pagination.ftl">
<@pagination method="index" datas=posts display="${settings.page_number!5}" />
<#else>
<div class="card card-empty">
<i class="ri-inbox-2-fill"></i>
还没有发表过文章
</div>
</#if>
</@layout>
================================================
FILE: journals.ftl
================================================
<#include "template/layout.ftl">
<#include "template/main/comment.ftl">
<@layout title="${journals_title!'动态'} - ${blog_title!}" canonical="${journals_url!}">
<#if journals.content?? && journals.content?size gt 0>
<#list journals.content as journal>
<div class="card card-content journal">
<p class="journal-date">
<i class="ri-send-plane-line"></i>
<em>${journal.createTime?string('yyyy年MM月dd日 HH:mm:ss')}</em>
</p>
<div class="journal-content fold">
<div data-id="${journal.id?c}" data-target="journals" class="main-content not-toc">${journal.content}</div>
</div>
<div class="journal-operation">
<span class="journal-operation-item">
<a class="like" data-id="${journal.id?c}" data-likes="${(journal.likes!0)?c}"><i
class="ri-heart-3-line"></i><em>${(journal.likes != 0)?string(journal.likes?c,'喜欢')}</em></a>
</span>
<#if enable_comment>
<span class="journal-operation-item">
<a class="comment"><i
class="ri-message-3-line"></i><em><#if journal.commentCount==0>评论<#else>${journal.commentCount}</#if></em></a>
</span>
</#if>
<#if enable_share>
<span class="journal-operation-item">
<a class="share"><i class="ri-share-forward-line"></i><em>分享</em></a>
</span>
</#if>
</div>
<#if enable_comment>
<div class="journal-comment">
<@comment journal.id?c, "journal" />
</div>
</#if>
</div>
</#list>
<#include "template/main/pagination.ftl">
<@pagination method="journals" datas=journals display="${settings.page_number!5}" />
<#else>
<div class="card card-empty">
<i class="ri-inbox-2-fill"></i>
还没有发表过动态,回<a href="${context!}">主页</a>看看吧
</div>
</#if>
</@layout>
================================================
FILE: links.ftl
================================================
<#include "template/layout.ftl">
<@layout title="${links_title!'友情链接'} - ${blog_title!}" canonical="${links_url!}">
<div class="card">
<#if settings.links_thumbnail?? && settings.links_thumbnail!=''>
<div class="card-image cover-image" style="background-image: url(${settings.links_thumbnail!})">
</div>
</#if>
<div class="card-content main">
<h1 class="title">${links_title!'友情链接'} - ${user.nickname!}的小伙伴们</h1>
<div class="main-content">
<@linkTag method="listTeams">
<#assign defaultAvatar= (settings.links_default_avatar?? && settings.links_default_avatar!='')?string(settings.links_default_avatar!, static + "/source/img/avatar.svg") />
<#list teams as item>
<div class="links">
<#if item.team?? && item.team!=''>
<h3 class="link-title" id="toc${item_index}">${item.team}</h3>
<#else>
<h3 class="link-title" id="toc${item_index}">小伙伴们</h3>
</#if>
<ul class="link-items">
<#list item.links?sort_by('priority')?reverse as link>
<li>
<a class="links-item" href="${link.url!}" rel="noopener noreferrer" target="_blank"
title="${link.description!}">
<#if link.logo?? && link.logo!=''>
<img class="not-gallery" title="${link.name!}" src="${defaultAvatar!}"
onload="if(!this.finish){this.finish=true;this.src='${link.logo!}'}"
onerror="this.onerror='';if (this.finish) {this.src='${defaultAvatar!}'} else {this.finish=true;this.src='${link.logo!}'}"
alt="${link.name!}">
<#else>
<img class="not-gallery" title="${link.name!}" src="${defaultAvatar!}" alt="${link.name!}">
</#if>
<span class="link-name">${link.name!}</span>
<#if link.description?? && link.description!=''>
<div class="link-desc">${link.description!}</div>
<#else>
<div class="link-desc">他还没有自我介绍呢</div>
</#if>
</a>
</li>
</#list>
</ul>
</div>
</#list>
</@linkTag>
<#if (settings.show_exchange_info!true) || (settings.links_info?? && settings.links_info != '')>
<hr/>
</#if>
<#if settings.show_exchange_info!true>
申请友链的方法:
<#assign bloggerAvatar= (settings.links_blogger_avatar?? && settings.links_blogger_avatar!='')?string(settings.links_blogger_avatar!, user.avatar!) />
<ul>
<li>名称:${blog_title!}</li>
<li>地址:<a href="${blog_url!}">${blog_url!}</a></li>
<li>图标:<a href="${bloggerAvatar!}">${bloggerAvatar!}</a></li>
<li>描述:${user.description!}</li>
</ul>
</#if>
<div>${settings.links_info!}</div>
</div>
</div>
</div>
<#if enable_comment>
<div class="card card-content" id="comment-wrapper">
<h3 class="comment-title">评论</h3>
<#include "template/main/comment.ftl">
<@comment settings.link_comment_id, "sheet" />
</div>
</#if>
</@layout>
================================================
FILE: mail_template/mail_notice.ftl
================================================
<#assign emojis={'呵呵':'hehe','哈哈':'haha','吐舌':'tushe','啊':'a','酷':'ku','怒':'nu','开心':'kaixin','汗':'han','泪':'lei','黑线':'heixian','鄙视':'bishi','不高兴':'bugaoxing','真棒':'zhenbang','钱':'qian','疑问':'yiwen','阴险':'yingxiang','吐':'tu','咦':'yi','委屈':'weiqu','花心':'huaxin','呼~':'hu','笑眼':'xiaoyan','冷':'len','太开心':'taikaixin','滑稽':'huaji','勉强':'mianqiang','狂汗':'kuanhan','乖':'guai','睡觉':'shuijiao','惊哭':'jingku','生气':'shengqi','惊讶':'jingya','喷':'pen','突然兴奋':'turanxingfen','挖鼻':'wabi','摊手':'tanshou','捂嘴笑':'wuzuixiao','喝酒':'hejiu','犀利':'xili','懒得理':'landeli','炸药':'zhayao','吃瓜':'chigua','小乖':'xiaoguai','你懂的':'nidongde','嘿嘿嘿':'heiheihei','欢呼':'huanhu','笑尿':'xiaoniao','酸爽':'suanshuang','紧张':'jinzhang','暗中观察':'anzhongguancha','小红脸':'xiaohonglian','呀咩爹':'yamiedie','微微一笑':'weiweiyixiao','what':'what','托腮':'tuosai','噗':'pu','困成狗':'kunchenggou','柯基暗中观察':'kejianzhongguancha','菜狗':'caigou','老虎':'laohu','嗷呜':'aowu','奥特曼':'aoteman','黑头高兴':'heitougaoxing','黑头瞪眼':'heitoudengyan','望远镜':'wangyuanjing','不听':'butin','干饭':'ganfan','大拇指':'damuzhi','胜利':'shengli','haha':'haha2','OK':'ok','红领巾':'honglingjin','爱心':'aixin','心碎':'xinsui','玫瑰':'meigui','礼物':'liwu','烟花':'yanhua','彩虹':'caihong','太阳':'taiyang','星星月亮':'xingxingyueliang','蛋糕':'dangao','茶杯':'chabei','香蕉':'xiangjiao','便便':'bianbian','药丸':'yaowan','钱币':'qianbi','蜡烛':'lazhu','沙发':'shafa','音乐':'yinyue','灯泡':'dengpao','手纸':'shouzhi'}>
<#function rendered_html content>
<#local content=content?replace('\\!\\[([^\\]]*)\\]\\(([^\\)]*)\\)', '<img style="max-width:80%;max-height:180px;margin:6px auto;display:block;" src="$2" alt="$1">', 'ri')>
<#local content=content?replace('\\[([^\\]]*)\\]\\(([^\\)]*)\\)', '<a style="color:#50bfff;margin:2px;" target="_blank" href="$2">$1</a>', 'ri')>
<#local content=content?replace('^#+\\s+([^\\n]*)', '<h4 style="font-size:1.15em;color:#444;">$1</h4>', 'rmi')>
<#local content=content?replace('```\\w*\\n([^`]*)\\n```', '<pre style="background:#e5f2ffb3;padding:8px 12px;border-radius:8px;line-height:1.2;"><code>$1</code></pre>', 'ri')>
<#local content=content?replace('`([^`]*)`', '<code style="padding:3px 6px;word-break:break-word;background:#e8f3ff;margin:03px;border-radius:4px;color:#409eff;">$1</code>', 'ri')>
<#local content=content?replace('\\n+', '\n', 'ri')>
<#list emojis?keys as key>
<#local content=content?replace('\\[/${key}\\]','<img src="${blog_url!}/themes/dream/source/lib/halo-comment@1.1.7/assets/emoji/${emojis[key]}.png" style="width: 1.6em;height: 1.6em;margin: auto 2px;vertical-align: middle;"/>','ri')>
</#list>
<#return content>
</#function>
<div class="email-page" style="background:#fff;">
<style>@media screen and (max-width: 400px) {
.email-content {
width: 96% !important;
}
.email-title {
padding: 12px 14px !important;
font-size: 15px !important;
}
.email-title .icon {
display: none;
}
.email-text {
padding: 20px 20px 0 !important;
}
.email-footer {
padding: 10px !important;
}
}</style>
<div class="email-content"
style="width:90%;max-width:660px;margin:20px auto 30px;line-height:1.5;text-align:left;overflow:hidden;border-radius:8px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1);">
<div style="overflow:hidden;">
<h1 class="email-title"
style="position:relative;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 52px 14px 20px;line-height:1.6;font-size:16px;font-weight:normal;color:#fff;background:webkit-linear-gradient(-45deg,rgba(255,68,229,0.7),rgba(80,191,255,0.86),rgba(80,182,255,0.86));background:linear-gradient(-45deg,rgba(255,68,229,0.7),rgba(80,191,255,0.86),rgba(80,182,255,0.86));background-size:400% 400%;background-position:50% 100%;">
您的博客有新的评论啦!
<img class="icon" style="position:absolute;right:16px;top:10px;width:32px;"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAFdQTFRF////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAA////LEkQMAAAABx0Uk5TX69vz4+wT3Cf0N+g7+C/UH+QIDAQ8GA/wECAAMYhZPgAAAHzSURBVFjD7ZfZuoIgEIDNcilckC1B3/85T6xSoiLdna+5qmB+ZoUpm76U7Af41wBUQnjplFwgLNE5QFk/5g951GUsgMCVtmFAEgPIm3lTmvwQgK9mbwsEdyJAa36+4n0A08e3YhU0JDSjYXuAm1Zn4YAzjbhtA2q1QZCtlBGhNtRbgEGuUr5XNpyqI8IAJtfuZL/w0F3uYiEAbiL0X25IQoMDgE7aj46LH0kvujVAOcBj2oe/OeEA0oEhrgFlsB+fAGkAJXEAQj0TLED2TxV7BwjPBAPAJwwwJuA3gHQLxF9DYAmYAVxjU7Ak4uoDiPTgzE0oM0k8gCSOdrGq69yGo4cdtFWH4OVmYz46izOXRFsEqtgb4sI9z/1SP3bX4BKZuY2mxSp98wjrmctYob/gD4UVQB+qHeLmHlMLVH/mmwB+BsC2AWztQhvnAveDSA+CuAeYqgFUNo1cFMKlURRDv5FGca4QdSGhLwC9i0wiACy9lwTg82c7nwR0XuukACr//k0AyAjOxZQM6Ju3B+Q0IPeKMwHAuzn4NkYCSv3++/prAHoG5TX0dWZ4ov20A2DzkYxoCgP6KP17HxyyhOn0A30K+MaYp2oDPtWMRceQFEIwvDOptsspOGnYxjRR3z3vWNvQntX3ZiQGRsB+f3l+gDT5A4U2phC6e4RTAAAAAElFTkSuQmCC"></img>
</h1>
<div class="email-text" style="padding:20px 28px 10px;background:#fff;">
<p style="margin:0 0 5px;padding:0;line-height:24px;font-size:14px;color:#6e6e6e;"><span
style="font-weight:bold;color:#50bfff;">${user.nickname!'博主'}</span> ,您好!</p>
<p style="margin:0;padding:0;line-height:24px;font-size:14px;color:#6e6e6e;">访客<span
style="color:#50bfff;"> ${author!'匿名用户'} </span>在<a href="${pageFullPath!'匿名用户'}" target="_blank"
style="color:#50bfff;text-decoration:none;">《${pageTitle!}》</a>发表评论:
<div style="margin:12px 0;padding:14px 20px 18px 20px;white-space:pre-line;word-break:break-all;color:#6e6e6e;font-size:14px;background: repeating-linear-gradient(135deg, #f3f9ff, #f3f9ff 18px, #fff 0, #fff 30px);border-radius: 8px;border: 1px solid #f3f9ff; box-shadow: 0 2px 15px rgba(73,146,161,0.15);">${rendered_html(content)}</div>
<p style="margin:0 0 16px;padding:0;line-height:24px;font-size:13px;color:#6e6e6e;">
<a href="${pageFullPath!}" target="_blank" style="color:#5caaef;text-decoration:none;">点击查看完整评论</a>
</p>
</div>
<div class="email-footer" style="padding:10px 20px;border-top:1px solid #eee;">
<p style="margin:0;padding:0;line-height:24px;font-size:13px;color:#999;">* 注意:此邮件由 <a
href="${blog_url!}" target="_blank" style="color:#50bfff;text-decoration:none;">${blog_title!}</a>
自动发出,请勿回复。</p>
</div>
</div>
</div>
</div>
================================================
FILE: mail_template/mail_reply.ftl
================================================
<#assign emojis={'呵呵':'hehe','哈哈':'haha','吐舌':'tushe','啊':'a','酷':'ku','怒':'nu','开心':'kaixin','汗':'han','泪':'lei','黑线':'heixian','鄙视':'bishi','不高兴':'bugaoxing','真棒':'zhenbang','钱':'qian','疑问':'yiwen','阴险':'yingxiang','吐':'tu','咦':'yi','委屈':'weiqu','花心':'huaxin','呼~':'hu','笑眼':'xiaoyan','冷':'len','太开心':'taikaixin','滑稽':'huaji','勉强':'mianqiang','狂汗':'kuanhan','乖':'guai','睡觉':'shuijiao','惊哭':'jingku','生气':'shengqi','惊讶':'jingya','喷':'pen','突然兴奋':'turanxingfen','挖鼻':'wabi','摊手':'tanshou','捂嘴笑':'wuzuixiao','喝酒':'hejiu','犀利':'xili','懒得理':'landeli','炸药':'zhayao','吃瓜':'chigua','小乖':'xiaoguai','你懂的':'nidongde','嘿嘿嘿':'heiheihei','欢呼':'huanhu','笑尿':'xiaoniao','酸爽':'suanshuang','紧张':'jinzhang','暗中观察':'anzhongguancha','小红脸':'xiaohonglian','呀咩爹':'yamiedie','微微一笑':'weiweiyixiao','what':'what','托腮':'tuosai','噗':'pu','困成狗':'kunchenggou','柯基暗中观察':'kejianzhongguancha','菜狗':'caigou','老虎':'laohu','嗷呜':'aowu','奥特曼':'aoteman','黑头高兴':'heitougaoxing','黑头瞪眼':'heitoudengyan','望远镜':'wangyuanjing','不听':'butin','干饭':'ganfan','大拇指':'damuzhi','胜利':'shengli','haha':'haha2','OK':'ok','红领巾':'honglingjin','爱心':'aixin','心碎':'xinsui','玫瑰':'meigui','礼物':'liwu','烟花':'yanhua','彩虹':'caihong','太阳':'taiyang','星星月亮':'xingxingyueliang','蛋糕':'dangao','茶杯':'chabei','香蕉':'xiangjiao','便便':'bianbian','药丸':'yaowan','钱币':'qianbi','蜡烛':'lazhu','沙发':'shafa','音乐':'yinyue','灯泡':'dengpao','手纸':'shouzhi'}>
<#function rendered_html content>
<#local content=content?replace('\\!\\[([^\\]]*)\\]\\(([^\\)]*)\\)', '<img style="max-width:80%;max-height:180px;margin:6px auto;display:block;" src="$2" alt="$1">', 'ri')>
<#local content=content?replace('\\[([^\\]]*)\\]\\(([^\\)]*)\\)', '<a style="color:#50bfff;margin:2px;" target="_blank" href="$2">$1</a>', 'ri')>
<#local content=content?replace('^#+\\s+([^\\n]*)', '<h4 style="font-size:1.15em;color:#444;">$1</h4>', 'rmi')>
<#local content=content?replace('```\\w*\\n([^`]*)\\n```', '<pre style="background:#e5f2ffb3;padding:8px 12px;border-radius:8px;line-height:1.2;"><code>$1</code></pre>', 'ri')>
<#local content=content?replace('`([^`]*)`', '<code style="padding:3px 6px;word-break:break-word;background:#e8f3ff;margin:03px;border-radius:4px;color:#409eff;">$1</code>', 'ri')>
<#local content=content?replace('\\n+', '\n', 'ri')>
<#list emojis?keys as key>
<#local content=content?replace('\\[/${key}\\]','<img src="${blog_url!}/themes/dream/source/lib/halo-comment@1.1.7/assets/emoji/${emojis[key]}.png" style="width: 1.6em;height: 1.6em;margin: auto 2px;vertical-align: middle;"/>','ri')>
</#list>
<#return content>
</#function>
<div class="email-page" style="background:#fff;">
<style>@media screen and (max-width: 400px) {
.email-content {
width: 96% !important;
}
.email-title {
padding: 12px 14px !important;
font-size: 15px !important;
}
.email-title .icon {
display: none;
}
.email-text {
padding: 20px 20px 0 !important;
}
.email-footer {
padding: 10px !important;
}
}</style>
<div class="email-content"
style="width:90%;max-width:660px;margin:20px auto 30px;line-height:1.5;text-align:left;overflow:hidden;border-radius:8px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1);">
<div style="overflow:hidden;">
<h1 class="email-title"
style="position:relative;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 52px 14px 20px;line-height:1.6;font-size:16px;font-weight:normal;color:#fff;background:webkit-linear-gradient(-45deg,rgba(255,68,229,0.7),rgba(80,191,255,0.86),rgba(80,182,255,0.86));background:linear-gradient(-45deg,rgba(255,68,229,0.7),rgba(80,191,255,0.86),rgba(80,182,255,0.86));background-size:400% 400%;background-position:50% 100%;">
Dear, 您在 ${blog_title!} 上的评论有新的回复啦!
<img class="icon" style="position:absolute;right:16px;top:10px;width:32px;"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAFdQTFRF////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAA////LEkQMAAAABx0Uk5TX69vz4+wT3Cf0N+g7+C/UH+QIDAQ8GA/wECAAMYhZPgAAAHzSURBVFjD7ZfZuoIgEIDNcilckC1B3/85T6xSoiLdna+5qmB+ZoUpm76U7Af41wBUQnjplFwgLNE5QFk/5g951GUsgMCVtmFAEgPIm3lTmvwQgK9mbwsEdyJAa36+4n0A08e3YhU0JDSjYXuAm1Zn4YAzjbhtA2q1QZCtlBGhNtRbgEGuUr5XNpyqI8IAJtfuZL/w0F3uYiEAbiL0X25IQoMDgE7aj46LH0kvujVAOcBj2oe/OeEA0oEhrgFlsB+fAGkAJXEAQj0TLED2TxV7BwjPBAPAJwwwJuA3gHQLxF9DYAmYAVxjU7Ak4uoDiPTgzE0oM0k8gCSOdrGq69yGo4cdtFWH4OVmYz46izOXRFsEqtgb4sI9z/1SP3bX4BKZuY2mxSp98wjrmctYob/gD4UVQB+qHeLmHlMLVH/mmwB+BsC2AWztQhvnAveDSA+CuAeYqgFUNo1cFMKlURRDv5FGca4QdSGhLwC9i0wiACy9lwTg82c7nwR0XuukACr//k0AyAjOxZQM6Ju3B+Q0IPeKMwHAuzn4NkYCSv3++/prAHoG5TX0dWZ4ov20A2DzkYxoCgP6KP17HxyyhOn0A30K+MaYp2oDPtWMRceQFEIwvDOptsspOGnYxjRR3z3vWNvQntX3ZiQGRsB+f3l+gDT5A4U2phC6e4RTAAAAAElFTkSuQmCC"></img>
</h1>
<div class="email-text" style="padding:20px 28px 10px;background:#fff;">
<p style="margin:5px 0 5px;padding:0;line-height:24px;font-size:14px;color:#6e6e6e;"><span
style="font-weight:bold;color:#50bfff">${baseAuthor!'Dear'}</span> ,您好!</p>
<p style="padding:0;line-height:24px;font-size:14px;color:#6e6e6e;">您在《<span style="color:#50bfff;">${pageTitle!}</span>》的评论:</p>
<div style="margin:12px 0 18px;padding:14px 20px 18px 20px;white-space:pre-line;word-break:break-all;color:#6e6e6e;font-size:14px;background: repeating-linear-gradient(135deg, #f3f9ff, #f3f9ff 18px, #fff 0, #fff 30px);border-radius: 8px;border: 1px solid #f3f9ff; box-shadow: 0 2px 15px rgba(73,146,161,0.15);">${rendered_html(baseContent)}</div>
<p style="padding:0;line-height:24px;font-size:14px;color:#6e6e6e;"><span style="color:#50bfff;">${replyAuthor!'匿名用户'}</span> 给您的回复:</p>
<div style="margin:12px 0;padding:14px 20px 18px 20px;white-space:pre-line;word-break:break-all;color:#6e6e6e;font-size:14px;background: repeating-linear-gradient(135deg, #f3f9ff, #f3f9ff 18px, #fff 0, #fff 30px);border-radius: 8px;border: 1px solid #f3f9ff; box-shadow: 0 2px 15px rgba(73,146,161,0.15);">${rendered_html(replyContent)}</div>
<p style="margin:0 0 16px;padding:0;line-height:24px;font-size:13px;color:#6e6e6e;">
<a href="${pageFullPath!}" target="_blank" style="color:#5c8fef;text-decoration:none;">点击查看完整回复</a>
</p>
</div>
<div class="email-footer" style="padding:10px 20px;border-top:1px solid #eee;">
<p style="margin:0;padding:0;line-height:24px;font-size:13px;color:#999;">* 注意:此邮件由 <a
href="${blog_url!}" target="_blank" style="color:#50bfff;text-decoration:none;">${blog_title!}</a>
自动发出,请勿回复,如有打扰,请见谅。</p>
</div>
</div>
</div>
</div>
================================================
FILE: package.json
================================================
{
"name": "halo-theme-dream",
"version": "3.2.4",
"description": "梦之城,童话梦境,动漫类型博客主题。",
"main": "index.js",
"author": "nineya",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"release": "eslint **/*.js && gulp release",
"push": "eslint **/*.js && gulp push",
"zip": "gulp zip",
"build": "eslint **/*.js && gulp",
"lint": "eslint **/*.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/nineya/halo-theme-dream.git"
},
"keywords": [
"halo",
"dream",
"nineya",
"halo-theme",
"halo-theme-dream"
],
"license": "MIT",
"bugs": {
"url": "https://github.com/nineya/halo-theme-dream/issues"
},
"homepage": "https://github.com/nineya/halo-theme-dream#readme",
"devDependencies": {
"@babel/core": "^7.15.5",
"@babel/plugin-transform-runtime": "^7.15.0",
"@babel/preset-env": "^7.15.6",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.2.3",
"eslint": "^7.32.0",
"gulp": "^4.0.2",
"gulp-autoprefixer": "^8.0.0",
"gulp-babel": "^8.0.0",
"gulp-clean": "^0.4.0",
"gulp-csso": "^4.0.1",
"gulp-gzip": "^1.4.2",
"gulp-less": "^5.0.0",
"gulp-rename": "^2.0.0",
"gulp-uglify": "^3.0.2",
"gulp-zip": "^5.1.0",
"webpack": "^5.68.0",
"webpack-stream": "^7.0.0"
},
"dependencies": {
"html2canvas": "^1.4.1",
"qrcode": "^1.5.1"
}
}
================================================
FILE: photos.ftl
================================================
<#include "template/layout.ftl">
<@layout title="${photos_title!'我的相册'} - ${blog_title!}" canonical="${photos_url!}">
<#if (photos.content)?? && photos.content?size gt 0>
<div class="card card-content photos">
<div class="card-tab"><div>${photos_title!'我的相册'}</div></div>
<ul class="photos-teams">
<li class="item">全部</li>
<@photoTag method="listTeams">
<#list teams as item>
<li class="item" data-team="p-${item.team}">${((item.team)?length>0)?then(item.team?trim,'默认图库')}</li>
</#list>
</@photoTag>
</ul>
</div>
<div class="photos-gallery load-block"></div>
<#else>
<div class="card card-empty">
<i class="ri-inbox-2-fill"></i>
内容为空,回<a href="${context!}">主页</a>看看吧
</div>
</#if>
</@layout>
================================================
FILE: post.ftl
================================================
<#include "template/layout.ftl">
<#include "template/main/article.ftl">
<@layout title="${post.title!} - ${blog_title!}" canonical="${post.fullPath!}">
<@article post,"post" />
</@layout>
================================================
FILE: post_literature.ftl
================================================
<#include "template/layout.ftl">
<#include "template/main/article_literature.ftl">
<@layout title="${post.title!} - ${blog_title!}" canonical="${post.fullPath!}">
<@articleLiterature post,"post" />
</@layout>
================================================
FILE: post_password.ftl
================================================
<#include "template/layout.ftl">
<#include "template/main/article.ftl">
<@layout title="私密内容访问 - ${blog_title!}" canonical="${blog_url!}">
<style>
.post-password {
margin: 40px auto 64px auto;
padding: 20px;
max-width: 360px;
}
.post-password .title {
text-align: center;
}
.password-input {
position: relative;
margin-top: 32px;
}
.password-input input {
box-sizing: border-box;
width: 100%;
color: var(--main);
outline: none;
font-size: inherit;
font-family: inherit;
background-color: var(--bg-g);
padding: 0.5em 1em;
border: 1px solid transparent;
transition: background-color 0.3s ease-in-out;
}
.password-input span {
position: absolute;
background-color: var(--theme);
transition: transform 0.1s ease;
}
.password-input .bottom,
.password-input .top {
height: 1px;
left: 0;
right: 0;
transform: scaleX(0);
}
.password-input .left,
.password-input .right {
width: 1px;
top: 0;
bottom: 0;
transform: scaleY(0);
}
.password-input .bottom {
bottom: 0;
transform-origin: bottom right;
}
.password-input input:focus ~ .bottom {
transform-origin: bottom left;
transform: scaleX(1);
}
.password-input .right {
right: 0;
transform-origin: top right;
transition-delay: 0.05s;
}
.password-input input:focus ~ .right {
transform-origin: bottom right;
transform: scaleY(1);
}
.password-input .top {
top: 0;
transform-origin: top left;
transition-delay: 0.15s;
}
.password-input input:focus ~ .top {
transform-origin: top right;
transform: scaleX(1);
}
.password-input .left {
left: 0;
transform-origin: bottom left;
transition-delay: 0.25s;
}
.password-input input:focus ~ .left {
transform-origin: top left;
transform: scaleY(1);
}
.post-password button {
width: 100%;
position: relative;
font-size: inherit;
font-family: inherit;
color: white;
cursor: pointer;
padding: 0.5em 1em;
margin-top: 24px;
outline: none;
border: 1px solid transparent;
background-color: var(--theme);
}
.post-password button::before {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
border: 4px solid var(--theme);
transform-origin: center;
transform: scale(1);
}
.post-password button:hover::before {
transition: all 0.75s ease-in-out;
transform-origin: center;
transform: scale(1.75);
opacity: 0;
}
</style>
<div class="card">
<form class="post-password" method="post" action="${blog_url!}/content/${type!}/${slug!}/authentication">
<h2 class="title">私密内容访问</h2>
<div class="password-input">
<input type="password" name="password" placeholder="请输入访问密码">
<span class="bottom"></span>
<span class="right"></span>
<span class="top"></span>
<span class="left"></span>
</div>
<button type="submit">验证</button>
<div style="margin-top: 8px;color: red; text-align: center">${errorMsg!}</div>
</form>
</div>
</@layout>
================================================
FILE: search.ftl
================================================
<#include "template/layout.ftl">
<@layout title="搜索:${keyword} - ${blog_title!}" canonical="${blog_url!}/search?keyword=${keyword}">
<#if (posts.content)?? && posts.content?size gt 0>
<#include "template/main/article_list.ftl">
<@article_list posts.content/>
<#include "template/main/pagination.ftl">
<@pagination method="search" datas=posts keyword="${keyword!}" display="${settings.page_number!5}" />
<#else>
<div class="card card-empty">
<i class="ri-inbox-2-fill"></i>
搜索结果为空,回<a href="${context!}">主页</a>看看吧
</div>
</#if>
</@layout>
================================================
FILE: settings.yaml
================================================
basic_info:
label: '基础信息'
items:
access_key:
name: access_key
label: '<必填> AccessKey'
type: text
default: dream
placeholder: '请输入 Access Key'
description: "需在博客 <a target='_blank' href='/admin#/system/options'>高级设置</a> 中开启 <b><u>API 服务</u></b>,并使此处的 <b><u>Access Key</u></b> 与 <b><u>API</u></b> 设置中的保持一致。<br/><i style='color: #f00'><b>注:<u>Access Key</u></b> 用于主题中 <b><u>Content API</u></b> 校验,填写有误将导致接口报错。</i><img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
small_title:
name: small_title
label: 网站副标题
type: text
placeholder: '请输入网站副标题'
document_hidden_title:
name: document_hidden_title
label: 离屏文案(离开)
type: text
placeholder: '请输入标题'
description: '浏览器切换到其它标签或后台时页面标题展示的文字。'
document_visible_title:
name: document_visible_title
label: 离屏文案(回来)
type: text
placeholder: '请输入标题'
description: '浏览器返回到当前标签时页面标题展示的文字。'
index_inform:
name: index_inform
label: 首页通知
type: text
placeholder: 请输入通知内容
description: '在首页显示一条通知。'
copy_explain:
name: copy_explain
label: 拷贝说明
type: textarea
placeholder: 请输入说明内容
description: '当用户拷贝文本时,自动将该文本内容追加到最后面。'
night_logo:
name: night_logo
label: '黑暗模式 Logo'
type: attachment
placeholder: '请输入/选择 Logo 路径'
description: '在黑暗模式时显示的 Logo,放空默认为网站 Logo。'
page_number:
name: page_number
label: 分页页码数量
type: number
placeholder: '请输入数量数值'
default: '5'
record_number:
name: record_number
label: 备案号
type: text
placeholder: 'XICP备XXXXXXXXXX号-X'
record_number_ps:
name: record_number_ps
label: 公安部备案
type: text
placeholder: 'X公网安备 XXXXXXXXXXXXXX号'
website_time:
name: website_time
label: 建站时间
type: text
placeholder: 'YYYY/MM/dd HH:mm:ss'
description: '按 <b><u>YYYY/MM/dd HH:mm:ss</u></b> 格式输入时间进行倒计时,非时间格式则直接显示文本。'
cloud_by_logo:
name: cloud_by_logo
label: '云服务提供商 Logo'
type: attachment
placeholder: '请输入/选择 Logo 路径'
cloud_by_url:
name: cloud_by_url
label: '云服务提供商 URL'
type: text
placeholder: '请输入链接地址'
basic_style:
label: 基础样式
items:
load_progress:
name: load_progress
label: 加载进度条
type: radio
default: center
options:
- value: none
label: 不显示
- value: left
label: 左侧展开
- value: center
label: 居中展开
drawer_toc:
name: drawer_toc
label: 侧边抽屉式目录
type: radio
data-type: bool
default: true
description: "在非桌面设备上,显示展开侧边抽屉式目录的悬浮按钮。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
options:
- value: true
label: 显示
- value: false
label: 不显示
enable_image_bg:
name: enable_image_bg
label: 开启博客背景图
type: switch
data-type: bool
default: false
description: '如果某个选项的背景图链接未指定,则不开启那个选项的背景图。'
options:
- value: true
label: 开启
- value: false
label: 关闭
background_pc:
name: background_pc
label: '明亮模式 PC 端背景图'
type: attachment
placeholder: '请输入/选择图片路径'
background_mobile:
name: background_mobile
label: 明亮模式移动端背景图
type: attachment
placeholder: '请输入/选择图片路径'
night_background_pc:
name: night_background_pc
label: '黑暗模式 PC 端背景图'
type: attachment
placeholder: '请输入/选择图片路径'
night_background_mobile:
name: night_background_mobile
label: 黑暗模式移动端背景图
type: attachment
placeholder: '请输入/选择图片路径'
enable_banner:
name: enable_banner
label: 开启博客横幅大图
type: switch
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
banner_image:
name: banner_image
label: 横幅背景图
type: attachment
placeholder: '请输入/选择图片路径'
banner_description:
name: banner_description
label: 横幅文字描述
type: text
placeholder: '请输入描述内容'
theme_style:
name: theme_style
label: 主题风格
type: select
default: 'default'
description: '主题风格效果,不改变主题整体框架。'
options:
- value: 'default'
label: 默认
- value: 'clean'
label: 清爽
- value: 'celebration'
label: 庆典
default_theme:
name: default_theme
label: 默认主题模式
type: select
default: 'light'
description: '未打开过博客的浏览器,首次打开博客时的默认主题模式。'
options:
- value: 'light'
label: 明亮模式
- value: 'night'
label: 黑暗模式
- value: 'system'
label: 跟随系统
theme_color:
name: theme_color
label: 明亮模式主题色
type: color
default: '#50bfff'
night_theme_color:
name: night_theme_color
label: 黑暗模式主题色
type: color
default: '#5d93db'
web_font:
name: web_font
label: 博客字体
type: select
default: 'default'
options:
- value: 'default'
label: 默认字体
- value: 'WenCang.woff2'
label: 问藏书房体
- value: 'AlimamaDaoLiTi.woff2'
label: 阿里巴巴刀隶体
- value: 'custom'
label: 自定义
custom_font:
name: custom_font
label: 自定义博客字体
type: attachment
placeholder: '请输入/选择字体路径'
description: '自定义博客字体,在 <b><u>博客字体</u></b> 选项为 <b><u>自定义</u></b> 时生效。支持 <b><u>woff2/woff/ttf/eot/svg</u></b> 格式的字体文件链接,建议使用 <b><u>woff2</u></b> 格式。'
sidebar_column:
name: sidebar_column
label: 博客布局方式
type: select
default: 'all'
options:
- value: 'all'
label: 三列布局
- value: 'only-left'
label: 仅显示左侧
- value: 'only-right'
label: 仅显示右侧
- value: 'module-left'
label: 模块化(左侧)
- value: 'module-right'
label: 模块化(右侧)
left_sidebar_sticky:
name: left_sidebar_sticky
label: 左侧边栏悬浮
type: radio
default: bottom
options:
- value: top
label: 固定顶部
- value: bottom
label: 固定底部
- value: none
label: 不悬浮
right_sidebar_sticky:
name: right_sidebar_sticky
label: 右侧边栏悬浮
type: radio
default: top
options:
- value: top
label: 固定顶部
- value: bottom
label: 固定底部
- value: none
label: 不悬浮
module_options:
name: module_options
label: 模块化布局链接
type: repeater
description: '可填写 1~6 个链接。'
children:
- name: tag
label: 标签
type: text
placeholder: '请输入标签内容'
- name: title
label: 标题
type: text
placeholder: '请输入标题内容'
- name: url
label: 跳转地址
type: text
placeholder: '请输入跳转地址'
- name: image
label: 背景图链接
type: attachment
placeholder: '请输入图片地址'
- name: target
label: 打开方式
type: radio
default: '_blank'
options:
- value: '_blank'
label: 新窗口
- value: '_self'
label: 原窗口
post:
label: 文章设置
items:
default_thumbnail:
name: default_thumbnail
label: 默认文章缩略图
type: attachment
placeholder: '请输入/选择图片路径'
description: "如果文章没有指定缩略图,则默认显示当前缩略图。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
top_thumbnail_mode:
name: top_thumbnail_mode
label: 置顶文章列表缩略图模式
type: select
default: back
description: '置顶的文章在列表的缩略图模式,除网格布局外,如果文章元数据配置了 <b><u>thumbnail_mode</u></b> 项,则当前配置将被覆盖。<br/><i style="color: #f00"><b>注:</b>设置网格布局后,非置顶文章也会变成网格布局。</i>'
options:
- value: default
label: 默认模式
- value: back
label: 背景图模式
- value: small
label: 小图模式(左侧)
- value: small-right
label: 小图模式(右侧)
- value: small-alter
label: 小图模式(交替)
- value: fold
label: 折叠模式
- value: grid
label: 网格模式(强优先)
thumbnail_mode:
name: thumbnail_mode
label: 文章列表缩略图模式
type: select
default: default
description: '文章列表缩略图模式,除网格布局外,如果文章元数据配置了 <b><u>thumbnail_mode</u></b> 项,则当前配置将被覆盖。'
options:
- value: default
label: 默认模式
- value: back
label: 背景图模式
- value: small
label: 小图模式(左侧)
- value: small-right
label: 小图模式(右侧)
- value: small-alter
label: 小图模式(交替)
- value: grid
label: 网格模式(强优先)
code_pretty:
name: code_pretty
label: 代码块高亮主题
type: select
default: atom-one-light
options:
- value: a11y-dark
label: A11y Dark
- value: a11y-light
label: A11y Light
- value: agate
label: Agate
- value: an-old-hope
label: An Old Hope
- value: androidstudio
label: Androidstudio
- value: arduino-light
label: Arduino Light
- value: arta
label: Arta
- value: ascetic
label: Ascetic
- value: atom-one-dark
label: Atom One Dark
- value: atom-one-dark-reasonable
label: Atom One Dark Reasonable
- value: atom-one-light
label: Atom One Light
- value: brown-paper
label: Brown Paper
- value: brown-papersq
label: Brown Papersq
- value: codepen-embed
label: Codepen Embed
- value: color-brewer
label: Color Brewer
- value: dark
label: Dark
- value: default
label: Default
- value: devibeans
label: Devibeans
- value: docco
label: Docco
- value: far
label: Far
- value: foundation
label: Foundation
- value: github-dark-dimmed
label: Github Dark Dimmed
- value: github-dark
label: Github Dark
- value: github
label: Github
- value: gml
label: Gml
- value: googlecode
label: Googlecode
- value: gradient-dark
label: Gradient Dark
- value: gradient-light
label: Gradient Light
- value: grayscale
label: Grayscale
- value: hybrid
label: Hybrid
- value: idea
label: Idea
- value: ir-black
label: Ir Black
- value: isbl-editor-dark
label: Isbl Editor Dark
- value: isbl-editor-light
label: Isbl Editor Light
- value: kimbie-dark
label: Kimbie Dark
- value: kimbie-light
label: Kimbie Light
- value: lightfair
label: Lightfair
- value: lioshi
label: Lioshi
- value: magula
label: Magula
- value: mono-blue
label: Mono Blue
- value: monokai-sublime
label: Monokai Sublime
- value: monokai
label: Monokai
- value: night-owl
label: Night Owl
- value: nnfx-dark
label: Nnfx dark
- value: nnfx-light
label: Nnfx Light
- value: nord
label: Nord
- value: obsidian
label: Obsidian
- value: paraiso-dark
label: Paraiso Dark
- value: paraiso-light
label: Paraiso Light
- value: pojoaque
label: Pojoaque
- value: purebasic
label: Purebasic
- value: qtcreator-dark
label: Qtcreator Dark
- value: qtcreator-light
label: Qtcreator Light
- value: rainbow
label: Rainbow
- value: routeros
label: Routeros
- value: school-book
label: School Book
- value: shades-of-purple
label: Shades Of Purple
- value: srcery
label: Srcery
- value: stackoverflow-dark
label: Stackoverflow Dark
- value: stackoverflow-light
label: Stackoverflow Light
- value: sunburst
label: Sunburst
- value: tomorrow-night-blue
label: Tomorrow Night Blue
- value: tomorrow-night-bright
label: Tomorrow Night Bright
- value: vs
label: Vs
- value: vs2015
label: Vs 2015
- value: xcode
label: Xcode
- value: xt256
label: Xt 256
code_fold_line:
name: code_fold_line
label: 代码块折叠
type: number
placeholder: '请输入代码行数数值'
description: '代码行数超出指定行数后默认进行折叠,指定的行数需大于等于 20。'
img_fold_height:
name: img_fold_height
label: 正文长图折叠
type: number
placeholder: '请输入高度数值(px)'
description: '图片高度超出指定高度(px)后默认进行折叠,指定的高度需大于等于 400px。'
show_img_name:
name: show_img_name
label: 显示图片名称
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
invalid_tips_day:
name: invalid_tips_day
label: 文章失效提示
type: number
default: 99999999
placeholder: '请输入时间(天)'
description: '文章超过指定天数未进行更新,展示文章或图片可能失效的温馨提示。'
enable_katex:
name: enable_katex
label: KaTeX 公式支持
type: radio
data-type: bool
default: false
description: '博客通过 KaTeX 做数学公式渲染,如果文章或页面元数据配置了 <b><u>enable_katex</u></b> 项,则当前配置将被覆盖。'
options:
- value: true
label: 默认开启
- value: false
label: 默认关闭
enable_copyright:
name: enable_copyright
label: 开启文章版权声明
type: radio
data-type: bool
default: true
description: '如果文章或页面元数据配置了 <b><u>enable_copyright</u></b> 项,则当前配置将被覆盖。'
options:
- value: true
label: 默认开启
- value: false
label: 默认关闭
enable_post_share:
name: enable_post_share
label: 开启文章分享
type: radio
data-type: bool
default: true
description: '如果文章或页面元数据配置了 <b><u>enable_share</u></b> 项,则当前配置将被覆盖。'
options:
- value: true
label: 默认开启
- value: false
label: 默认关闭
enable_post_donate:
name: enable_post_donate
label: 开启文章打赏
type: radio
data-type: bool
default: true
description: '如果文章或页面元数据配置了 <b><u>enable_donate</u></b> 项,则当前配置将被覆盖。'
options:
- value: true
label: 默认开启
- value: false
label: 默认关闭
donate_alipay:
name: donate_alipay
label: 支付宝捐赠二维码
type: attachment
placeholder: '请输入/选择图片路径'
donate_wechat:
name: donate_wechat
label: 微信捐赠二维码
type: attachment
placeholder: '请输入/选择图片路径'
comment:
label: 评论区
items:
enable_comment:
name: enable_comment
label: 开启评论功能
type: switch
data-type: bool
default: true
description: "如果在进行网站备案,可通过此功能全局关闭评论区。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
options:
- value: true
label: 开启
- value: false
label: 关闭
enable_theme_comment:
name: enable_theme_comment
label: 启用主题内置评论区
type: switch
data-type: bool
default: true
description: '开启后将使用主题内置的评论区模块,如果使用其他评论区模块以下评论区相关的配置可能不生效。'
options:
- value: true
label: 开启
- value: false
label: 关闭
anonymous_user_name:
name: anonymous_user_name
label: 匿名用户名
type: text
placeholder: '请输入用户名'
description: '填写后将允许用户<b><u>匿名评论</u></b>,并使用此名称做用户名。'
avatar_loading:
name: avatar_loading
label: 头像加载动画
type: attachment
placeholder: '请输入/选择图片路径'
description: '加载用户头像时的加载动画。'
default_avatar:
name: default_avatar
label: 默认评论头像
type: attachment
placeholder: '请输入/选择图片路径'
description: '如果用户头像加载失败,则显示默认头像。'
enable_qq_info:
name: enable_qq_info
label: '获取 QQ 昵称和邮箱'
type: switch
data-type: bool
default: false
description: '评论时,访客在用户名处输入 QQ 号,自动通过 QQ 获取昵称和邮箱。'
options:
- value: true
label: 开启
- value: false
label: 关闭
priority_qq_avatar:
name: priority_qq_avatar
label: '优先显示 QQ 头像'
type: switch
data-type: bool
default: false
description: '如果是 QQ 邮箱,则优先使用 QQ 头像。'
options:
- value: true
label: 开启
- value: false
label: 关闭
enable_image_upload:
name: enable_image_upload
label: 开启图片上传
type: switch
data-type: bool
description: '开启评论区内置的图片上传功能。'
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
image_upload_api:
name: image_upload_api
label: '图片上传 API'
type: text
placeholder: '请输入 API 地址'
description: '评论区支持快捷上传图片到指定的 API 接口,搭建 API 规范要求见文档 <a href="https://github.com/nineya/halo-comment-dream" target="_blank">halo-comment-dream</a>。'
enable_blogger_operation:
name: enable_blogger_operation
label: 开启博主操作
type: switch
description: '如果在该浏览器博主已登录,允许博主直接在评论区上进行操作。'
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
autoload_comment:
name: autoload_comment
label: 自动加载评论列表
type: switch
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
comment_loading_style:
name: comment_loading_style
label: 评论加载样式
type: radio
data-type: text
default: default
options:
- value: default
label: 默认
- value: circle
label: 圆圈
- value: balls
label: 小球
reply_desc_soft:
name: reply_desc_soft
label: 二级回复列表按时间降序
type: switch
data-type: bool
description: '评论中的二级回复列表按回复时间降序排序(默认为升序)。'
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
unfold_reply_num:
name: unfold_reply_num
label: 默认展开的二级回复数量
type: number
default: 6
placeholder: '请输入数量数值'
show_comment_ua:
name: show_comment_ua
label: 显示评论的 UA 信息
type: switch
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
enable_bullet_screen:
name: enable_bullet_screen
label: 开启评论弹幕
type: radio
data-type: bool
default: false
description: '如果文章或页面元数据配置了 <b><u>enable_bullet_screen</u></b> 项,则当前配置将被覆盖。'
options:
- value: true
label: 默认开启
- value: false
label: 默认关闭
enable_comment_html:
name: enable_comment_html
label: '开启评论 HTML 内容'
type: switch
data-type: bool
default: false
description: '允许评论输入 HTML 内容,开启后有 <b><u>用户注入恶意代码的风险(XSS)</u></b>,建议同时开启评论审核。'
options:
- value: true
label: 开启
- value: false
label: 关闭
sidebar_show:
label: 侧边栏显示
items:
sidebar_show:
name: sidebar_show
label: 侧边栏显示
type: repeater
description: '配置主题左右侧边栏显示位置和顺序。三列布局时<b>音乐模块</b>不能在右侧显示。'
default:
- type: profile
location: left
hide: 'is-not-hidden'
- type: toc
location: right
hide: 'is-hidden-not-desktop'
- type: notice
location: right
hide: 'is-not-hidden'
- type: recent_posts
location: right
hide: 'is-not-hidden'
- type: recent_comments
location: right
hide: 'is-not-hidden'
- type: categories
location: left
hide: 'is-not-hidden'
- type: tags
location: left
hide: 'is-not-hidden'
- type: links
location: right
hide: 'is-hidden-not-desktop'
children:
- name: type
type: select
label: 模块类型
default: profile
options:
- value: profile
label: 信息模块
- value: toc
label: 目录模块
- value: notice
label: 公告模块
- value: love
label: 恋爱墙模块
- value: music
label: 音乐模块
- value: ad_piece
label: 广告模块
- value: recent_posts
label: 最近文章模块
- value: recent_comments
label: 最近评论模块
- value: categories
label: 文章分类模块
- value: tags
label: 文章标签模块
- value: tagcloud
label: 文章标签云模块
- value: links
label: 友链模块
- value: custom
label: 自定义模块
- name: location
label: 模块位置
type: radio
default: none
options:
- value: left
label: 左侧
- value: right
label: 右侧
- value: none
label: 关闭
- name: hide
label: 隐藏方式
type: select
default: 'is-not-hidden'
options:
- value: 'is-hidden-mobile'
label: 移动设备隐藏
- value: 'is-hidden-not-desktop'
label: 移动、平板设备隐藏
- value: 'is-hidden-desktop'
label: 桌面设备隐藏
- value: 'is-not-hidden'
label: 不隐藏
- name: title
label: 侧边栏标题
type: text
placeholder: 请输入标题内容
description: "非必填,可覆盖默认侧边栏标题。"
- name: icon
label: 侧边栏图标
type: text
placeholder: 请输入图标 class 内容
description: "非必填,可覆盖默认侧边栏图标。"
- name: content
label: 侧边栏内容
type: textarea
placeholder: 请输入 HTML 内容
description: "非必填,仅在侧边栏类型为自定义时生效。"
sidebar_config:
label: 侧边栏配置
items:
enable_color_character:
name: enable_color_character
label: 侧边栏信息-开启彩字切换
type: switch
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
color_character:
name: color_character
label: 侧边栏信息-彩字内容
type: textarea
placeholder: 请输入彩字内容
description: "按行输入彩字消息内容,一行一条。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
profile_location:
name: profile_location
label: 侧边栏信息-地理位置
type: text
placeholder: '请输入个人所在地'
profile_theme_button:
name: profile_theme_button
label: 侧边栏信息-主题按钮
type: text
placeholder: '按钮名称|按钮地址'
description: '需要 <b><u>按钮名称</u></b> 和 <b><u>按钮地址</u></b> 两个参数,参数间用 “<b>|</b>” 分隔,放空则不显示主题按钮。'
social_github:
name: social_github
label: 侧边栏信息-Github
type: text
placeholder: '请输入 Github 用户名'
social_qq:
name: social_qq
label: 侧边栏信息-QQ
type: text
placeholder: '请输入 QQ 号'
social_weibo:
name: social_weibo
label: 侧边栏信息-微博
type: text
placeholder: '请输入微博用户名'
social_twitter:
name: social_twitter
label: 侧边栏信息-Twitter
type: text
placeholder: '请输入 Twitter 用户名'
social_facebook:
name: social_facebook
label: 侧边栏信息-Facebook
type: text
placeholder: '请输入 Facebook 用户名'
social_email:
name: social_email
label: '侧边栏信息-邮箱'
type: text
placeholder: '请输入邮箱地址'
social_telegram:
name: social_telegram
label: 侧边栏信息-Telegram
type: text
placeholder: '请输入 Telegram 用户名'
social_rss:
name: social_rss
label: '侧边栏信息-RSS 订阅'
type: select
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
custom_social_options:
name: custom_social_options
label: 侧边栏信息-自定义社交渠道选项
type: textarea
placeholder: "名称|图标|链接地址"
description: 一行表示一个社交渠道,每个社交渠道需要名称、图标和链接地址三个参数,参数之间使用 “<b>|</b>” 分隔,主题内置图标采用 <a href="https://www.remixicon.cn/" target="_blank">RemixIcon 3.5.0</a>'。
notice_content:
name: notice_content
label: 侧边栏公告-博客公告
type: textarea
placeholder: 请输入公告内容
description: 公告内容支持 HTML 标签。
notice_show_mode:
name: notice_show_mode
label: 侧边栏公告-显示模式
type: radio
default: index
description: 当满足指定的条件时公告模块才会显示。
options:
- value: none
label: 无条件
- value: toc
label: 目录模块不显示时
- value: index
label: 仅首页
love_oneself_avatar:
name: love_oneself_avatar
label: 侧边栏恋爱墙-自己的头像
type: attachment
placeholder: '请输入/选择图片路径'
love_oneself_url:
name: love_oneself_url
label: 侧边栏恋爱墙-自己的主页
type: text
placeholder: '请输入个人主页地址'
love_opposite_avatar:
name: love_opposite_avatar
label: 侧边栏恋爱墙-对方的头像
type: attachment
placeholder: '请输入/选择图片路径'
love_opposite_url:
name: love_opposite_url
label: 侧边栏恋爱墙-对方的主页
type: text
placeholder: '请输入个人主页地址'
love_time:
name: love_time
label: 侧边栏恋爱墙-恋爱时间
type: text
placeholder: 'YYYY/MM/dd HH:mm:ss'
description: '按 <b><u>YYYY/MM/dd HH:mm:ss</u></b> 格式输入时间进行倒计时,非时间格式则直接显示文本。'
meting_api:
name: meting_api
label: 侧边栏音乐-自建API
type: text
placeholder: '请输入 API 地址'
description: '自建 API 方法见文档:<a href="https://github.com/metowolf/Meting" target="_blank">Meting</a>。'
music_mode:
name: music_mode
label: 侧边栏音乐-音乐播放器配置方式
type: radio
default: 'playlist'
options:
- value: 'playlist'
label: '网易云歌单 ID'
- value: 'config'
label: 参数进阶配置
netease_playlist_id:
name: netease_playlist_id
label: '侧边栏音乐-网易云歌单 ID'
type: text
placeholder: '请输入歌单 ID'
description: '填写网易云歌单的 ID。'
music_config:
name: music_config
label: 侧边栏音乐-参数进阶配置
type: code
placeholder: '请输入音乐参数配置'
default: |-
list-folded="true"
server="netease"
type="playlist"
id="7355014621"
description: '输入音乐参数配置(<b><u>id / server / type</u></b>必填),详细配置方式见官方文档:<a href="https://github.com/metowolf/MetingJS/" target="_blank">MetingJS 2.0</a>。'
show_ad_tag:
name: show_ad_tag
label: 侧边栏广告-显示“广告”标签
type: radio
data-type: bool
default: true
options:
- value: true
label: 显示
- value: false
label: 不显示
ad_tag_close:
name: ad_tag_close
label: 侧边栏广告-点击“广告”标签可关闭广告
type: radio
data-type: bool
default: true
options:
- value: true
label: 是
- value: false
label: 否
ad_mode:
name: ad_mode
label: 侧边栏广告-广告展示方法
type: radio
data-type: bool
default: true
options:
- value: true
label: 图片+链接
- value: false
label: 自定义广告代码
ad_target_url:
name: ad_target_url
label: 侧边栏广告-广告目标地址
type: text
placeholder: '请输入链接地址'
description: '填写广告跳转的目标路径。'
ad_image:
name: ad_image
label: 侧边栏广告-广告图片链接
type: attachment
placeholder: '请输入/选择图片路径'
description: '<b><u>图片+链接</u></b> 模式时不能为空。'
ad_custom_code:
name: ad_custom_code
label: 侧边栏广告-自定义广告代码
type: code
placeholder: '请输入广告代码'
description: '在这里黏贴广告联盟提供的广告代码,<b><u>自定义广告代码</u></b> 模式时不能为空。'
recent_posts_num:
name: recent_posts_num
label: 侧边栏最近文章-展示文章数量
type: number
placeholder: 请输入数量数值
default: 5
recent_comments_num:
name: recent_comments_num
label: 侧边栏最近评论-展示评论数量
type: number
placeholder: 请输入数量数值
default: 5
categories_more:
name: categories_more
label: 侧边栏分类-显示”更多”按钮
type: radio
data-type: bool
default: true
description: '超出展示的分类数量后是否显示 <b><u>更多</u></b> 按钮。'
options:
- value: true
label: 显示
- value: false
label: 不显示
categories_num:
name: categories_num
label: 侧边栏分类-展示分类数量
type: number
placeholder: 请输入数量数值
default: 10
tags_more:
name: tags_more
label: 侧边栏标签-显示”更多”按钮
type: radio
data-type: bool
default: true
description: '超出展示的标签数量后是否显示 <b><u>更多</u></b> 按钮。'
options:
- value: true
label: 显示
- value: false
label: 不显示
tags_num:
name: tags_num
label: 侧边栏标签-展示标签数量
type: number
placeholder: 请输入数量数值
default: 18
enable_tags_color:
name: enable_tag_color
label: 侧边栏标签-开启标签颜色
type: switch
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
tagcloud_more:
name: tagcloud_more
label: 侧边栏标签云-显示”更多”按钮
type: radio
data-type: bool
default: true
description: '超出展示的标签数量后是否显示 <b><u>更多</u></b> 按钮。'
options:
- value: true
label: 显示
- value: false
label: 不显示
tagcloud_num:
name: tagcloud_num
label: 侧边栏标签云-展示标签数量
type: number
placeholder: 请输入数量数值
default: 32
enable_tagcloud_color:
name: enable_tagcloud_color
label: 侧边栏标签云-开启标签颜色
type: switch
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
links_more:
name: links_more
label: 侧边栏友链-显示”更多”按钮
type: radio
data-type: bool
default: true
description: '超出展示的友链数量后是否显示 <b><u>更多</u></b> 按钮。'
options:
- value: true
label: 显示
- value: false
label: 不显示
links_num:
name: links_num
label: 侧边栏友链-展示友链数量
type: number
placeholder: 请输入数量数值
default: 10
page_config:
label: 页面设置
items:
links_thumbnail:
name: links_thumbnail
label: 友链页面-缩略图
type: attachment
placeholder: '请输入/选择图片路径'
links_default_avatar:
name: links_default_avatar
label: '友链页面-默认 Logo'
type: attachment
placeholder: '请输入/选择 Logo 路径'
description: "在加载用户 Logo 时、友链未设置 Logo 时、友链 Logo 加载失败时显示。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
show_exchange_info:
name: show_exchange_info
label: 友链页面-显示友链交换信息
type: switch
data-type: bool
default: true
options:
- value: true
label: 显示
- value: false
label: 关闭
links_blogger_avatar:
name: links_blogger_avatar
label: '友链页面-交换信息自定义 Logo 链接'
type: attachment
placeholder: '请输入/选择 Logo 路径'
description: '用于交换友链的 Logo 链接。'
links_info:
name: links_info
label: 友链页面-补充信息
type: textarea
placeholder: '请输入补充信息'
description: '友链页面最低部的补充说明信息,支持 HTML 格式。'
link_comment_id:
name: link_comment_id
label: 友链页面-评论区ID
type: number
placeholder: '请输入 ID'
description: '友链页面没有 ID,需要指定一个自定义页面的 ID 用于评论,被指定的文章评论区将作为友链的评论区, <b>放空则不显示评论区。</b> '
journals_fold_height:
name: journals_fold_height
label: 日志页面-动态内容折叠
type: number
placeholder: '请输入高度数值(px)'
description: '动态内容高度超出指定高度后默认进行折叠,指定的高度需大于等于 260px。'
enable_journals_comment:
name: enable_journals_comment
label: 日志页面-开启评论区
type: switch
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
enable_journals_share:
name: enable_journals_share
label: 日志页面-开启日志分享
type: switch
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
journals_share_image:
name: journals_share_image
label: 日志页面-日志分享背景图
type: attachment
placeholder: '请输入/选择图片路径'
enable_tags_tag_color:
name: enable_tags_tag_color
label: 标签页面-开启标签颜色
type: switch
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
live2d:
label: 看板娘
items:
enable_live2d:
name: enable_live2d
label: 启用看板娘
type: switch
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
live2d_model_url:
name: live2d_model_url
label: 模型地址
type: text
default: 'https://unpkg.com/live2d-widget-model@1.0.1/'
placeholder: '请输入 API 地址'
description: "Live2D 模型 API 地址,可直接克隆 <a href='https://github.com/nineya/live2d-widget-model/' target='_blank'>live2d-widget-model</a> 模型仓库实现自建地址。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
live2d_tips_url:
name: live2d_tips_url
label: 自定义提示语文件地址
type: attachment
placeholder: '请输入/选择文件地址'
description: '提示语 JSON 文件。'
live2d_about_page:
name: live2d_about_page
label: “关于”按钮的 URL 地址
type: text
placeholder: '请输入链接地址'
description: '放空则不显示 <b><u>关于</u></b> 按钮。'
live2d_model_id:
name: live2d_model_id
label: '默认模型 ID'
type: number
default: 0
placeholder: '请输入模型 ID'
description: '默认模型 ID,参见 <a href="https://github.com/nineya/live2d-widget-model/blob/master/%E5%8F%AF%E7%94%A8model%E5%88%97%E8%A1%A8.md" target="_blank">可用model列表</a>。'
live2d_model_textures_id:
name: live2d_model_textures_id
label: '默认材质 ID'
type: number
default: 0
placeholder: '请输入材质 ID'
description: '默认材质 ID,参见 <a href="https://github.com/nineya/live2d-widget-model/blob/master/%E5%8F%AF%E7%94%A8model%E5%88%97%E8%A1%A8.md" target="_blank">可用model列表</a>。'
live2d_waifu_size:
name: live2d_waifu_size
label: 看板娘大小
type: text
default: '280x260'
placeholder: '请输入宽度(px)x高度(px)'
description: '看板娘的(宽度x高度),单位为px。'
options:
- value: '280x260'
- value: '320x300'
live2d_edge_side:
name: live2d_edge_side
label: 看板娘贴边方向与距离
type: text
default: 'right:50'
placeholder: '请输入位置:距离(px)'
options:
- value: 'right:50'
- value: 'left:50'
live2d_model_rand_mode:
name: live2d_model_rand_mode
label: 模型切换方式
type: radio
default: switch
options:
- value: switch
label: 顺序
- value: rand
label: 随机
live2d_model_textures_rand_mode:
name: live2d_model_textures_rand_mode
label: 材质切换方式
type: radio
default: rand
options:
- value: switch
label: 顺序
- value: rand
label: 随机
live2d_show_tool_menu:
name: live2d_show_tool_menu
label: 显示工具栏
type: switch
data-type: bool
default: true
options:
- value: true
label: 显示
- value: false
label: 关闭
live2d_tool_button:
name: live2d_tool_button
label: 显示工具栏按钮
type: checkbox
default:
- live2d_can_turn_to_home_page
- live2d_can_switch_hitokoto
- live2d_can_switch_model
- live2d_can_switch_textures
- live2d_can_take_screenshot
- live2d_can_turn_to_about_page
- live2d_can_close_live2d
options:
- value: live2d_can_turn_to_home_page
label: 返回首页
- value: live2d_can_switch_hitokoto
label: 一言
- value: live2d_can_switch_model
label: 切换模型
- value: live2d_can_switch_textures
label: 切换材质
- value: live2d_can_take_screenshot
label: 截图
- value: live2d_can_turn_to_about_page
label: 关于
- value: live2d_can_close_live2d
label: 关闭看板娘
enhance:
label: 增强功能
items:
cursor_style:
name: cursor_style
label: 鼠标风格
type: select
default: none
options:
- value: none
label: 关闭
- value: OwO
label: OwO
- value: UwU
label: UwU
- value: breeze
label: 清风(深色)
- value: mellow
label: 卡通圆润
- value: water_01
label: 彩虹水滴(一)
- value: water_02
label: 彩虹水滴(二)
- value: horse
label: 彩虹小马
- value: debris
label: 彩色碎片
- value: overwatch
label: 守望先锋
- value: rainbow_rain
label: 彩虹云雨
- value: marry
label: 小樱茉莉
- value: black_cat
label: 黑色小猫
- value: music_cat_01
label: 音乐小猫(一)
- value: music_cat_02
label: 音乐小猫(二)
cursor_move:
name: cursor_move
label: 鼠标移动特效
type: select
default: none
options:
- value: none
label: 关闭
- value: bubbleCursor
label: 气泡跟随
- value: emojiCursor
label: 表情包跟随
- value: springyEmojiCursor
label: 弹性表情包跟随
- value: fairyDustCursor
label: 仙女棒效果
- value: snowflakeCursor
label: 雪花跟随
- value: followingDotCursor
label: 圆点跟随
- value: ghostCursor
label: 移动残影(疏)
- value: trailingCursor
label: 移动残影(密)
cursor_click:
name: cursor_click
label: 鼠标点击特效
type: select
default: none
options:
- value: none
label: 关闭
- value: firework
label: 烟花特效
- value: granule
label: 粒子爆炸
- value: prosperous
label: 富强民主
- value: heart
label: 爱心特效
enable_busuanzi:
name: enable_busuanzi
label: 开启 busuanzi 访客统计
type: radio
data-type: text
default: show
description: '隐藏时不显示统计信息,但依旧会请求 busuanzi 统计访客信息。'
options:
- value: none
label: 关闭
- value: hide
label: 隐藏
- value: show
label: 显示
enable_compress:
name: enable_compress
label: "启用 HTML 压缩"
type: radio
data-type: text
default: format
options:
- value: none
label: 关闭
- value: format
label: 压缩空格
- value: single
label: 完全格式压缩
enable_sw:
name: enable_sw
label: "启用 Service Worker 优化"
type: radio
data-type: text
default: "false"
description: "需要在 Nginx 中添加 <b><u>代理配置</u></b> 方可启用,配置方法见 <a href='https://blog.nineya.com/archives/104.html' target='_blank'>Dream 2.0.5起移除FreeCDN,以及SW配置方法</a>。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
options:
- value: "false"
label: 关闭
- value: "&concurrent=true"
label: 开启并发CDN请求
- value: "&cache=true"
label: 开启全站离线
- value: "&concurrent=true&cache=true"
label: 开启并发CDN与全站离线
- value: "uninstall"
label: 卸载
sw_cdn_source:
name: sw_cdn_source
label: "Service Worker 并发 CDN 源"
type: code
default: |-
https://unpkg.com
https://cdn.jsdelivr.net/npm
https://npm.elemecdn.com
placeholder: 请输入 CDN 地址(一行一个)
description: '填入可用的 <b><u>NPM 公共开源 CDN</u></b> 地址(一行一个),通过 <b><u>“{CDN 地址}/{项目名}@{版本号}/${文件路径}”</u></b> 可访问到文件,如:<u>https://unpkg.com/halo-theme-dream@3.2.1/source/js/utils.min.js</u>'
effects_lantern_mode:
name: effects_lantern_mode
label: 喜庆灯笼特效显示模式
type: radio
default: none
options:
- value: none
label: 不显示
- value: day
label: 明亮模式
- value: night
label: 黑暗模式
- value: all
label: 全模式
effects_sakura_mode:
name: effects_sakura_mode
label: 樱花飘落特效显示模式
type: radio
default: day
options:
- value: none
label: 不显示
- value: day
label: 明亮模式
- value: night
label: 黑暗模式
- value: all
label: 全模式
effects_snowflake_mode:
name: effects_snowflake_mode
label: 雪花飘落特效显示模式
type: radio
default: none
options:
- value: none
label: 不显示
- value: day
label: 明亮模式
- value: night
label: 黑暗模式
- value: all
label: 全模式
effects_universe_mode:
name: effects_universe_mode
label: 宇宙星空特效显示模式
type: radio
default: night
options:
- value: none
label: 不显示
- value: day
label: 明亮模式
- value: night
label: 黑暗模式
- value: all
label: 全模式
effects_circle_magic_mode:
name: effects_circle_magic_mode
label: 上升圆点特效显示模式
type: radio
default: night
options:
- value: none
label: 不显示
- value: day
label: 明亮模式
- value: night
label: 黑暗模式
- value: all
label: 全模式
enable_gray_mode:
name: enable_gray_mode
label: 灰色模式
type: switch
data-type: bool
default: false
description: '向英雄致敬,愿精神长存!'
options:
- value: true
label: 开启
- value: false
label: 关闭
enable_baidu_push:
name: enable_baidu_push
label: 启用百度 URL 自动推送
type: switch
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
enable_toutiao_push:
name: enable_toutiao_push
label: 启用头条搜索自动推送
type: switch
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
enable_debug:
name: enable_debug
label: 开启 DEBUG 日志
type: switch
data-type: bool
default: false
description: '开发和问题排查时开启日志。'
options:
- value: true
label: 开启
- value: false
label: 关闭
custom:
label: 定制主题
items:
external_css:
name: external_css
label: "外部 CSS 链接"
type: text
placeholder: 请输入 CSS 文件链接
description: "填入外部 <b><u>CSS</u></b> 链接,无需 <b><u>link</u></b> 标签,将插入 <b><u>head</u></b> 标签尾部。<img style=\"display: none\" src=\"http://127.0.0.1\" onerror=\"let e=document.createElement('script');e.setAttribute('type', 'text/javascript');e.setAttribute('src', '/themes/dream/source/js/settings.min.js');document.getElementsByTagName('head')[0].appendChild(e);\" />"
inline_css:
name: inline_css
label: "内嵌 CSS"
type: code
placeholder: 请输入 CSS 样式内容
description: '填入 <b><u>CSS</u></b> 代码,无需 <b><u>style</u></b> 标签,将插入 <b><u>head</u></b> 标签尾部。'
external_js_head:
name: external_js_head
label: "外部 JS 链接(head)"
type: code
placeholder: 请输入 script 标签
description: '填入外部 <b><u>JS</u></b> 链接,需要 <b><u>script</u></b> 标签,可按情况指定 <b><u>async</u></b> 和 <b><u>defer</u></b> 属性,将插入 <b><u>head</u></b> 标签尾部。'
inline_js_head:
name: inline_js_head
label: "内嵌 JS(head)"
type: code
placeholder: 请输入 JS 代码内容
description: '填入 <b><u>JS</u></b> 代码,无需 <b><u>script</u></b> 标签,将插入 <b><u>head</u></b> 标签尾部。'
external_js_body:
name: external_js_body
label: "外部 JS 链接(body)"
type: code
placeholder: 请输入 script 标签
description: '填入外部 <b><u>JS</u></b> 链接,需要 <b><u>script</u></b> 标签,可按情况指定 <b><u>async</u></b> 和 <b><u>defer</u></b> 属性,将插入 <b><u>body</u></b> 标签尾部。'
inline_js_body:
name: inline_js_body
label: "内嵌JS(body)"
type: code
placeholder: 请输入 JS 代码内容
description: '填入 <b><u>JS</u></b> 代码,无需 <b><u>script</u></b> 标签,将插入 <b><u>body</u></b> 标签尾部。'
================================================
FILE: sheet.ftl
================================================
<#include "template/layout.ftl">
<#include "template/main/article.ftl">
<@layout title="${sheet.title} - ${blog_title!}" canonical="${sheet.fullPath!}">
<@article sheet,"sheet" />
</@layout>
================================================
FILE: sheet_literature.ftl
================================================
<#include "template/layout.ftl">
<#include "template/main/article_literature.ftl">
<@layout title="${sheet.title} - ${blog_title!}" canonical="${sheet.fullPath!}">
<@articleLiterature sheet,"sheet" />
</@layout>
================================================
FILE: source/lib/halo-comment@1.1.7/demo.html
================================================
<!doctype html><meta charset="utf-8"><title>halo-comment demo</title><script src="https://unpkg.com/vue@2"></script><script src="./halo-comment.js"></script><halo-comment></halo-comment>
================================================
FILE: source/lib/halo-comment@1.1.7/halo-comment.js
================================================
/******/ (function() { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 6587:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.AdminApiClient = void 0;
const url_1 = __webpack_require__(6998);
const clients_1 = __webpack_require__(6904);
class AdminApiClient {
constructor(client) {
this.client = client.buildHttpClient();
this._attachment = new clients_1.AttachmentClient(this.client);
this._backup = new clients_1.BackupClient(this.client);
this._category = new clients_1.CategoryClient(this.client);
this._installation = new clients_1.InstallationClient(this.client);
this._journalComment = new clients_1.JournalCommentClient(this.client);
this._journal = new clients_1.JournalClient(this.client);
this._link = new clients_1.LinkClient(this.client);
this._log = new clients_1.LogClient(this.client);
this._mail = new clients_1.MailClient(this.client);
this._menu = new clients_1.MenuClient(this.client);
this._migration = new clients_1.MigrationClient(this.client);
this._option = new clients_1.OptionClient(this.client);
this._photo = new clients_1.PhotoClient(this.client);
this._postComment = new clients_1.PostCommentClient(this.client);
this._post = new clients_1.PostClient(this.client);
this._sheetComment = new clients_1.SheetCommentClient(this.client);
this._sheet = new clients_1.SheetClient(this.client);
this._statistic = new clients_1.StatisticClient(this.client);
this._tag = new clients_1.TagClient(this.client);
this._theme = new clients_1.ThemeClient(this.client);
this._user = new clients_1.UserClient(this.client);
this._staticStorage = new clients_1.StaticStorageClient(this.client);
this._comment = new clients_1.CommentClient(this.client);
this._actuator = new clients_1.ActuatorClient(this.client);
}
get attachment() {
return this._attachment;
}
get backup() {
return this._backup;
}
get category() {
return this._category;
}
get installation() {
return this._installation;
}
get journalComment() {
return this._journalComment;
}
get journal() {
return this._journal;
}
get link() {
return this._link;
}
get log() {
return this._log;
}
get mail() {
return this._mail;
}
get menu() {
return this._menu;
}
get migration() {
return this._migration;
}
get option() {
return this._option;
}
get photo() {
return this._photo;
}
get postComment() {
return this._postComment;
}
get post() {
return this._post;
}
get sheetComment() {
return this._sheetComment;
}
get sheet() {
return this._sheet;
}
get statistic() {
return this._statistic;
}
get tag() {
return this._tag;
}
get theme() {
return this._theme;
}
get user() {
return this._user;
}
get staticStorage() {
return this._staticStorage;
}
get comment() {
return this._comment;
}
get actuator() {
return this._actuator;
}
getEnvironment() {
const path = (0, url_1.buildPath)({
endpointName: 'environments',
});
return this.client.get(path, {});
}
getLogFile(lines) {
const path = (0, url_1.buildPath)({
endpointName: 'halo/logfile',
});
return this.client.get(path, { lines });
}
isInstalled() {
const path = (0, url_1.buildPath)({
endpointName: 'is_installed',
});
return this.client.get(path, {});
}
logout() {
const path = (0, url_1.buildPath)({
endpointName: 'logout',
});
return this.client.post(path, {});
}
sendResetPasswordCode(params) {
const path = (0, url_1.buildPath)({
endpointName: 'password/code',
});
return this.client.post(path, params);
}
resetPassword(params) {
const path = (0, url_1.buildPath)({
endpointName: 'password/reset',
});
return this.client.put(path, params);
}
refreshToken(refreshToken) {
const path = (0, url_1.buildPath)({
endpointName: `refresh/${refreshToken}`,
});
return this.client.post(path, {});
}
needMFACode(params) {
const path = (0, url_1.buildPath)({
endpointName: 'login/precheck',
});
return this.client.post(path, Object.assign({}, params));
}
login(params) {
const path = (0, url_1.buildPath)({
endpointName: 'login',
});
return this.client.post(path, Object.assign({}, params));
}
}
exports.AdminApiClient = AdminApiClient;
//# sourceMappingURL=AdminApiClient.js.map
/***/ }),
/***/ 6710:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.AuthorizedClient = void 0;
const url_1 = __webpack_require__(6998);
const rest_api_client_1 = __webpack_require__(5040);
class AuthorizedClient {
constructor(baseUrl) {
const requestConfigBuilder = new rest_api_client_1.HaloRequestConfigBuilder({
baseUrl: baseUrl,
});
const responseHandler = new rest_api_client_1.HaloResponseHandler();
this.client = new rest_api_client_1.DefaultHttpClient({
responseHandler,
requestConfigBuilder,
});
}
isInstalled() {
const path = (0, url_1.buildPath)({
endpointName: 'is_installed',
});
return this.client.get(path, {});
}
sendResetPasswordCode(params) {
const path = (0, url_1.buildPath)({
endpointName: 'password/code',
});
return this.client.post(path, params);
}
resetPassword(params) {
const path = (0, url_1.buildPath)({
endpointName: 'password/reset',
});
return this.client.post(path, params);
}
refreshToken(refreshToken) {
const path = (0, url_1.buildPath)({
endpointName: `refresh/${refreshToken}`,
});
return this.client.post(path, {});
}
login(params) {
const path = (0, url_1.buildPath)({
endpointName: 'login',
});
return this.client.post(path, Object.assign({}, params));
}
needMFACode(params) {
const path = (0, url_1.buildPath)({
endpointName: 'login/precheck',
});
return this.client.post(path, Object.assign({}, params));
}
}
exports.AuthorizedClient = AuthorizedClient;
//# sourceMappingURL=AuthorizedClient.js.map
/***/ }),
/***/ 6618:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ActuatorClient = void 0;
const url_1 = __webpack_require__(6998);
class ActuatorClient {
constructor(client) {
this.client = client;
}
getLogfile() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/logfile',
});
return this.client.get(path, {});
}
getEnv() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/env',
});
return this.client.get(path, {});
}
getSystemCpuCount() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/system.cpu.count',
});
return this.client.get(path, {});
}
getSystemCpuUsage() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/system.cpu.usage',
});
return this.client.get(path, {});
}
getProcessUptime() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/process.uptime',
});
return this.client.get(path, {});
}
getProcessStartTime() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/process.start.time',
});
return this.client.get(path, {});
}
getProcessCpuUsage() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/process.cpu.usage',
});
return this.client.get(path, {});
}
getJvmMemoryMax() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/jvm.memory.max',
});
return this.client.get(path, {});
}
getJvmMemoryCommitted() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/jvm.memory.committed',
});
return this.client.get(path, {});
}
getJvmMemoryUsed() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/jvm.memory.used',
});
return this.client.get(path, {});
}
getJvmGcPause() {
const path = (0, url_1.buildPath)({
endpointName: 'actuator/metrics/jvm.gc.pause',
});
return this.client.get(path, {});
}
}
exports.ActuatorClient = ActuatorClient;
//# sourceMappingURL=ActuatorClient.js.map
/***/ }),
/***/ 399:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.AttachmentClient = void 0;
const rest_api_client_1 = __webpack_require__(5040);
const url_1 = __webpack_require__(6998);
class AttachmentClient {
constructor(client) {
this.client = client;
}
/**
* Gets attachment detail by id.
*
* @param attachmentId attachment id
* @returns Returns attachment detail response.
*/
get(attachmentId) {
const path = (0, url_1.buildPath)({
endpointName: `attachments/${attachmentId}`,
});
return this.client.get(path, {});
}
/**
* Page query attachment list.
*
* @param params attachment query parameter
* @returns Returns attachment page response.
*/
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'attachments',
});
return this.client.get(path, Object.assign({}, params));
}
/**
* Batch delete attachment permanently by attachment ids.
*
* @param attachmentIds a collection of attachment id
* @returns Returns attachments of deleted
*/
deleteInBatch(attachmentIds) {
const path = (0, url_1.buildPath)({
endpointName: 'attachments',
});
return this.client.delete(path, attachmentIds);
}
/**
* Delete attachment permanently by attachment id.
*
* @param attachmentId attachment id
* @returns Returns attachment detail of deleted
*/
delete(attachmentId) {
const path = (0, url_1.buildPath)({
endpointName: `attachments/${attachmentId}`,
});
return this.client.delete(path, {});
}
/**
* Update attachment name by id.
*
* @param attachmentId attachment id
* @param name a new attachment name
* @returns Returns an updated attachment response.
*/
update(attachmentId, name) {
const path = (0, url_1.buildPath)({
endpointName: `attachments/${attachmentId}`,
});
return this.client.put(path, { name });
}
/**
* List all of attachment media types.
*
* @returns Returns attachment media types response.
*/
listMediaTypes() {
const path = (0, url_1.buildPath)({
endpointName: 'attachments/media_types',
});
return this.client.get(path, {});
}
/**
* List all of attachment types.
*
* @returns Returns a response of attachment types.
*/
listTypes() {
const path = (0, url_1.buildPath)({
endpointName: 'attachments/types',
});
return this.client.get(path, {});
}
/**
* Upload a single attachment file.
*
* @param data attachment file object.
* @param options other upload options.
* @returns Returns a response of uploaded attachment
*/
upload(data, options) {
const path = (0, url_1.buildPath)({
endpointName: 'attachments/upload',
});
const formData = new rest_api_client_1.FormData();
formData.append('file', data);
return this.client.post(path, formData, Object.assign({}, options));
}
/**
* Batch upload attachments.
*
* @param data attachment file object.
* @param options other upload options.
* @returns Returns a response of uploaded attachments.
*/
uploadInBatch(data, options) {
const path = (0, url_1.buildPath)({
endpointName: 'attachments/uploads',
});
const formData = new rest_api_client_1.FormData();
data.forEach((fileStream) => {
formData.append('files', fileStream);
});
return this.client.post(path, formData, Object.assign({}, options));
}
}
exports.AttachmentClient = AttachmentClient;
//# sourceMappingURL=AttachmentClient.js.map
/***/ }),
/***/ 5260:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.BackupClient = void 0;
const url_1 = __webpack_require__(6998);
class BackupClient {
constructor(client) {
this.client = client;
}
getWorkdirBackup(filename) {
const path = (0, url_1.buildPath)({
endpointName: `backups/work-dir/fetch?filename=${filename}`,
});
return this.client.get(path, {});
}
getDataBackup(filename) {
const path = (0, url_1.buildPath)({
endpointName: `backups/data/fetch?filename=${filename}`,
});
return this.client.get(path, {});
}
getMarkdownBackup(filename) {
const path = (0, url_1.buildPath)({
endpointName: `backups/markdown/fetch?filename=${filename}`,
});
return this.client.get(path, {});
}
backupWorkdir(options) {
const path = (0, url_1.buildPath)({
endpointName: 'backups/work-dir',
});
return this.client.post(path, options);
}
getWorkdirBackupOptions() {
const path = (0, url_1.buildPath)({
endpointName: 'backups/work-dir/options',
});
return this.client.get(path, {});
}
listWorkdirBackups() {
const path = (0, url_1.buildPath)({
endpointName: 'backups/work-dir',
});
return this.client.get(path, {});
}
deleteWorkdirBackup(filename) {
const path = (0, url_1.buildPath)({
endpointName: `backups/work-dir`,
});
return this.client.delete(path, { filename });
}
backupData() {
const path = (0, url_1.buildPath)({
endpointName: 'backups/data',
});
return this.client.post(path, {});
}
listDataBackups() {
const path = (0, url_1.buildPath)({
endpointName: 'backups/data',
});
return this.client.get(path, {});
}
deleteDataBackup(filename) {
const path = (0, url_1.buildPath)({
endpointName: `backups/data`,
});
return this.client.delete(path, { filename });
}
backupMarkdown(params) {
const path = (0, url_1.buildPath)({
endpointName: 'backups/markdown/export',
});
return this.client.post(path, params);
}
listMarkdownBackups() {
const path = (0, url_1.buildPath)({
endpointName: 'backups/markdown/export',
});
return this.client.get(path, {});
}
deleteMarkdownBackup(filename) {
const path = (0, url_1.buildPath)({
endpointName: `backups/markdown/export`,
});
return this.client.delete(path, { filename });
}
importMarkdown(data, options) {
const path = (0, url_1.buildPath)({
endpointName: 'backups/markdown/import',
});
const formData = new FormData();
formData.append('file', data);
return this.client.post(path, formData, Object.assign({}, options));
}
}
exports.BackupClient = BackupClient;
//# sourceMappingURL=BackupClient.js.map
/***/ }),
/***/ 6774:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.CategoryClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class CategoryClient {
constructor(client) {
this.client = client;
}
/**
* Lists all categories.
*
* @param params parameter for queries
* @returns A response of all categories.
*/
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'categories',
});
return this.client.get(path, Object.assign({}, params));
}
/**
* List all categories as tree.
*
* @param sort sort option for queries, value is category field
* @returns A response of all categories.
*/
listAsTree(sort) {
const path = (0, url_1.buildPath)({
endpointName: 'categories/tree_view',
});
return this.client.get(path, { sort });
}
/**
* Gets category detail by id.
*
* @param categoryId category id
* @returns A response of category detail.
*/
get(categoryId) {
const path = (0, url_1.buildPath)({
endpointName: `categories/${categoryId}`,
});
return this.client.get(path, {});
}
/**
* Creates a category.
*
* @param params category parameter to create
* @returns A response of created category.
*/
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'categories',
});
return this.client.post(path, Object.assign({}, params));
}
/**
* Updates category by id
*
* @param categoryId category id
* @param params category update parameter
* @returns A response of updated category.
*/
update(categoryId, params) {
const path = (0, url_1.buildPath)({
endpointName: `categories/${categoryId}`,
});
return this.client.put(path, Object.assign({}, params));
}
/**
* Updates category in batch
*
* @param params
*/
updateInBatch(params) {
const path = (0, url_1.buildPath)({
endpointName: 'categories/batch',
});
return this.client.put(path, [...params]);
}
/**
* Deletes a category by id.
*
* @param categoryId category id
*/
delete(categoryId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `categories/${categoryId}`,
});
yield this.client.delete(path, {});
});
}
}
exports.CategoryClient = CategoryClient;
//# sourceMappingURL=CategoryClient.js.map
/***/ }),
/***/ 8666:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.CommentClient = void 0;
const url_1 = __webpack_require__(6998);
class CommentClient {
constructor(client) {
this.client = client;
}
list(target, params) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments`,
});
return this.client.get(path, params);
}
latest(target, top, status) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/latest`,
});
return this.client.get(path, { top, status });
}
listAsView(target, targetId, params) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/${targetId}/list_view`,
});
return this.client.get(path, params);
}
listAsTreeView(target, targetId, params) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/${targetId}/tree_view`,
});
return this.client.get(path, params);
}
get(target, commentId) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/${commentId}`,
});
return this.client.get(path, {});
}
create(target, params) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments`,
});
return this.client.post(path, params);
}
update(target, commentId, params) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/${commentId}`,
});
return this.client.get(path, params);
}
updateStatusById(target, commentId, status) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/${commentId}/status/${status}`,
});
return this.client.put(path, {});
}
updateStatusInBatch(target, commentIds, status) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/status/${status}`,
});
return this.client.put(path, commentIds);
}
delete(target, commentId) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments/${commentId}`,
});
return this.client.delete(path, {});
}
deleteInBatch(target, postCommentIds) {
const path = (0, url_1.buildPath)({
endpointName: `${target}/comments`,
});
return this.client.delete(path, postCommentIds);
}
}
exports.CommentClient = CommentClient;
//# sourceMappingURL=CommentClient.js.map
/***/ }),
/***/ 8400:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.InstallationClient = void 0;
const url_1 = __webpack_require__(6998);
class InstallationClient {
constructor(client) {
this.client = client;
}
/**
* Initializes the blog.
*
* @param params installation parameter
* @returns A response of installation status message.
*/
install(params) {
const path = (0, url_1.buildPath)({
endpointName: 'installations',
});
return this.client.post(path, Object.assign({}, params));
}
}
exports.InstallationClient = InstallationClient;
//# sourceMappingURL=InstallationClient.js.map
/***/ }),
/***/ 173:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.JournalClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class JournalClient {
constructor(client) {
this.client = client;
}
/**
* Lists journals.
*
* @param params parameter for queries
* @returns A page response of journals.
*/
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'journals',
});
return this.client.get(path, Object.assign({}, params));
}
/**
* Gets latest journals.
*
* @param top top option for queries
* @returns A response of lastes journals.
*/
latest(top) {
const path = (0, url_1.buildPath)({
endpointName: 'journals/latest',
});
return this.client.get(path, { top });
}
/**
* Creates a journal.
*
* @param params parameter for creates
* @returns A response of created journal.
*/
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'journals',
});
return this.client.post(path, Object.assign({}, params));
}
/**
* Updates a journal by id.
*
* @param journalId journal id
* @param params parameter for updates
* @returns A response of updated journal.
*/
update(journalId, params) {
const path = (0, url_1.buildPath)({
endpointName: `journals/${journalId}`,
});
return this.client.put(path, Object.assign({}, params));
}
/**
* Deletes a journal by id.
* @param journalId journal id
*/
delete(journalId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `journals/${journalId}`,
});
yield this.client.delete(path, {});
});
}
}
exports.JournalClient = JournalClient;
//# sourceMappingURL=JournalClient.js.map
/***/ }),
/***/ 5503:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.JournalCommentClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class JournalCommentClient {
constructor(client) {
this.client = client;
}
/**
* Lists journal comments.
*
* @param params parameter for queries
* @returns A page response of journals.
*/
list(params) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: 'journals/comments',
});
return this.client.get(path, Object.assign({}, params));
});
}
/**
* Creates a journal comment.
*
* @param params comment parameter for creates
* @returns A response of created journal comment.
*/
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'journals/comments',
});
return this.client.post(path, Object.assign({}, params));
}
/**
* Deletes a journal comment by id.
*
* @param commentId journal comment id.
* @returns A response of deleted journal comment.
*/
delete(commentId) {
const path = (0, url_1.buildPath)({
endpointName: `journals/comments/${commentId}`,
});
return this.client.delete(path, {});
}
/**
* Updates journal comment status by id.
*
* @param commentId journal comment id
* @param status comment status
* @returns A response of updated journal comment.
*/
update(commentId, status) {
const path = (0, url_1.buildPath)({
endpointName: `journals/comments/${commentId}/status/${status}`,
});
return this.client.put(path, {});
}
/**
* Lists comment with list view.
*
* @param params parameter for queries
* @returns A page response of journal comments.
*/
listAsView(params) {
const path = (0, url_1.buildPath)({
endpointName: `journals/comments/${params.journalId}/list_view`,
});
return this.client.get(path, Object.assign({}, params));
}
/**
* Lists comment with tree view.
*
* @param params parameter for queries
* @returns A page response of journal comments tree.
*/
listAsTree(params) {
const path = (0, url_1.buildPath)({
endpointName: `journals/comments/${params.journalId}/tree_view`,
});
return this.client.get(path, Object.assign({}, params));
}
/**
* Lists latest journal comments.
*
* @param params parameter for queries
* @returns A response of latest journal comments.
*/
latest(params) {
const path = (0, url_1.buildPath)({
endpointName: 'journals/comments/latest',
});
return this.client.get(path, Object.assign({}, params));
}
}
exports.JournalCommentClient = JournalCommentClient;
//# sourceMappingURL=JournalCommentClient.js.map
/***/ }),
/***/ 9207:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.LinkClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class LinkClient {
constructor(client) {
this.client = client;
}
list(sort) {
const path = (0, url_1.buildPath)({
endpointName: 'links',
});
return this.client.get(path, { sort });
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'links',
});
return this.client.post(path, Object.assign({}, params));
}
get(id) {
const path = (0, url_1.buildPath)({
endpointName: `links/${id}`,
});
return this.client.get(path, {});
}
update(linkId, params) {
const path = (0, url_1.buildPath)({
endpointName: `links/${linkId}`,
});
return this.client.put(path, Object.assign({}, params));
}
updateInBatch(params) {
const path = (0, url_1.buildPath)({
endpointName: 'links/batch',
});
return this.client.put(path, [...params]);
}
delete(id) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `links/${id}`,
});
yield this.client.delete(path, {});
});
}
listTeams() {
const path = (0, url_1.buildPath)({
endpointName: 'links/teams',
});
return this.client.get(path, {});
}
}
exports.LinkClient = LinkClient;
//# sourceMappingURL=LinkClient.js.map
/***/ }),
/***/ 9842:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.LogClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class LogClient {
constructor(client) {
this.client = client;
}
/**
* List action logs by params.
*
* @param params
*/
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'logs',
});
return this.client.get(path, Object.assign({}, params));
}
/**
* Clear action logs
*/
clear() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: 'logs/clear',
});
yield this.client.get(path, {});
});
}
/**
* Get latest action logs
*
* @param top the number of logs to get
*/
latest(top) {
const path = (0, url_1.buildPath)({
endpointName: 'logs/latest',
});
return this.client.get(path, { top });
}
}
exports.LogClient = LogClient;
//# sourceMappingURL=LogClient.js.map
/***/ }),
/***/ 7206:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.MailClient = void 0;
const url_1 = __webpack_require__(6998);
class MailClient {
constructor(client) {
this.client = client;
}
testSmtpService(params) {
const path = (0, url_1.buildPath)({
endpointName: 'mails/test',
});
return this.client.post(path, Object.assign({}, params));
}
testConnect() {
const path = (0, url_1.buildPath)({
endpointName: 'mails/test/connection',
});
return this.client.post(path, {});
}
}
exports.MailClient = MailClient;
//# sourceMappingURL=MailClient.js.map
/***/ }),
/***/ 7530:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.MenuClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class MenuClient {
constructor(client) {
this.client = client;
}
list() {
const path = (0, url_1.buildPath)({
endpointName: 'menus',
});
return this.client.get(path, {});
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'menus',
});
return this.client.post(path, Object.assign({}, params));
}
createInBatch(params) {
const path = (0, url_1.buildPath)({
endpointName: 'menus/batch',
});
return this.client.post(path, [...params]);
}
get(menuId) {
const path = (0, url_1.buildPath)({
endpointName: `menus/${menuId}`,
});
return this.client.post(path, {});
}
update(menuId, params) {
const path = (0, url_1.buildPath)({
endpointName: `menus/${menuId}`,
});
return this.client.put(path, Object.assign({}, params));
}
updateInBatch(params) {
const path = (0, url_1.buildPath)({
endpointName: 'menus/batch',
});
return this.client.put(path, [...params]);
}
delete(menuId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `menus/${menuId}`,
});
yield this.client.delete(path, {});
});
}
deleteInBatch(menuIds) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: 'menus/batch',
});
yield this.client.delete(path, [...menuIds]);
});
}
listTreeViewByTeam(team, sort) {
const path = (0, url_1.buildPath)({
endpointName: 'menus/team/tree_view',
});
return this.client.get(path, { team, sort });
}
listTeams() {
const path = (0, url_1.buildPath)({
endpointName: 'menus/teams',
});
return this.client.get(path, {});
}
listTreeView(sort) {
const path = (0, url_1.buildPath)({
endpointName: 'menus/tree_view',
});
return this.client.get(path, { sort });
}
}
exports.MenuClient = MenuClient;
//# sourceMappingURL=MenuClient.js.map
/***/ }),
/***/ 9644:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.MigrationClient = void 0;
const tslib_1 = __webpack_require__(655);
const rest_api_client_1 = __webpack_require__(5040);
const url_1 = __webpack_require__(6998);
class MigrationClient {
constructor(client) {
this.client = client;
}
migrate(data, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: 'migrations/halo',
});
const formData = new rest_api_client_1.FormData();
formData.append('file', data);
yield this.client.post(path, formData, Object.assign({}, options));
});
}
}
exports.MigrationClient = MigrationClient;
//# sourceMappingURL=MigrationClient.js.map
/***/ }),
/***/ 3913:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.OptionClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class OptionClient {
constructor(client) {
this.client = client;
}
list() {
const path = (0, url_1.buildPath)({
endpointName: 'options',
});
return this.client.get(path, {});
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'options',
});
return this.client.post(path, Object.assign({}, params));
}
get(id) {
const path = (0, url_1.buildPath)({
endpointName: `options/${id}`,
});
return this.client.get(path, {});
}
update(optionId, params) {
const path = (0, url_1.buildPath)({
endpointName: `options/${optionId}`,
});
return this.client.put(path, Object.assign({}, params));
}
delete(optionId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `options/${optionId}`,
});
yield this.client.delete(path, {});
});
}
listAsView(params) {
const path = (0, url_1.buildPath)({
endpointName: 'options/list_view',
});
return this.client.get(path, Object.assign({}, params));
}
listAsMapView() {
const path = (0, url_1.buildPath)({
endpointName: 'options/map_view',
});
return this.client.get(path, {});
}
listAsMapViewByKeys(params) {
const path = (0, url_1.buildPath)({
endpointName: 'options/map_view/keys',
});
return this.client.post(path, params);
}
saveMapView(params) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: 'options/map_view/saving',
});
yield this.client.post(path, Object.assign({}, params));
});
}
save(params) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: 'options/saving',
});
yield this.client.post(path, [...params]);
});
}
}
exports.OptionClient = OptionClient;
//# sourceMappingURL=OptionClient.js.map
/***/ }),
/***/ 402:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PhotoClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class PhotoClient {
constructor(client) {
this.client = client;
}
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'photos',
});
return this.client.get(path, Object.assign({}, params));
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'photos',
});
return this.client.post(path, Object.assign({}, params));
}
createInBatch(params) {
const path = (0, url_1.buildPath)({
endpointName: 'photos/batch',
});
return this.client.post(path, [...params]);
}
get(photoId) {
const path = (0, url_1.buildPath)({
endpointName: `photos/${photoId}`,
});
return this.client.get(path, {});
}
update(photoId, params) {
const path = (0, url_1.buildPath)({
endpointName: `photos/${photoId}`,
});
return this.client.put(path, Object.assign({}, params));
}
updateInBatch(params) {
const path = (0, url_1.buildPath)({
endpointName: 'photos/batch',
});
return this.client.put(path, [...params]);
}
delete(photoId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `photos/${photoId}`,
});
yield this.client.delete(path, {});
});
}
deleteInBatch(photoIds) {
const path = (0, url_1.buildPath)({
endpointName: 'photos/batch',
});
return this.client.delete(path, photoIds);
}
latest(sort) {
const path = (0, url_1.buildPath)({
endpointName: 'photos/latest',
});
return this.client.get(path, { sort });
}
listTeams() {
const path = (0, url_1.buildPath)({
endpointName: 'photos/teams',
});
return this.client.get(path, {});
}
}
exports.PhotoClient = PhotoClient;
//# sourceMappingURL=PhotoClient.js.map
/***/ }),
/***/ 4682:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PostClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class PostClient {
constructor(client) {
this.client = client;
}
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'posts',
});
return this.client.get(path, Object.assign({}, params));
}
get(postId) {
const path = (0, url_1.buildPath)({
endpointName: `posts/${postId}`,
});
return this.client.get(path, {});
}
getPreviewLinkById(postId) {
const path = (0, url_1.buildPath)({
endpointName: `posts/${postId}/preview`,
});
return this.client.get(path, {});
}
latest(top) {
const path = (0, url_1.buildPath)({
endpointName: 'posts/latest',
});
return this.client.get(path, { top });
}
listByStatus(status, query) {
const path = (0, url_1.buildPath)({
endpointName: `posts/status/${status}`,
});
return this.client.get(path, Object.assign({}, query));
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'posts',
});
return this.client.post(path, Object.assign({}, params));
}
update(postId, params) {
const path = (0, url_1.buildPath)({
endpointName: `posts/${postId}`,
});
return this.client.put(path, Object.assign({}, params));
}
updateStatusById(postId, status) {
const path = (0, url_1.buildPath)({
endpointName: `posts/${postId}/status/${status}`,
});
return this.client.put(path, {});
}
updateStatusInBatch(postIds, status) {
const path = (0, url_1.buildPath)({
endpointName: `posts/status/${status}`,
});
return this.client.put(path, postIds);
}
updateDraftById(postId, originalContent, content, keepRaw) {
const path = (0, url_1.buildPath)({
endpointName: `posts/${postId}/status/draft/content`,
});
return this.client.put(path, { originalContent, content, keepRaw });
}
like(postId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `posts/${postId}/likes`,
});
yield this.client.put(path, {});
});
}
delete(postId) {
const path = (0, url_1.buildPath)({
endpointName: `posts/${postId}`,
});
return this.client.delete(path, {});
}
deleteInBatch(postIds) {
const path = (0, url_1.buildPath)({
endpointName: 'posts',
});
return this.client.delete(path, postIds);
}
}
exports.PostClient = PostClient;
//# sourceMappingURL=PostClient.js.map
/***/ }),
/***/ 6494:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PostCommentClient = void 0;
const url_1 = __webpack_require__(6998);
class PostCommentClient {
constructor(client) {
this.client = client;
}
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'posts/comments',
});
return this.client.get(path, Object.assign({}, params));
}
listAsView(params) {
const path = (0, url_1.buildPath)({
endpointName: `posts/comments/${params.postId}/list_view`,
});
return this.client.get(path, Object.assign({}, params));
}
listAsTreeView(params) {
const path = (0, url_1.buildPath)({
endpointName: `posts/comments/${params.postId}/tree_view`,
});
return this.client.get(path, Object.assign({}, params));
}
latest(params) {
const path = (0, url_1.buildPath)({
endpointName: 'posts/comments/latest',
});
return this.client.get(path, Object.assign({}, params));
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'posts/comments',
});
return this.client.post(path, Object.assign({}, params));
}
update(commentId, params) {
const path = (0, url_1.buildPath)({
endpointName: `posts/comments/${commentId}`,
});
return this.client.get(path, Object.assign({}, params));
}
updateStatusById(commentId, status) {
const path = (0, url_1.buildPath)({
endpointName: `posts/comments/${commentId}/status/${status}`,
});
return this.client.put(path, {});
}
updateStatusInBatch(commentIds, status) {
const path = (0, url_1.buildPath)({
endpointName: `posts/comments/status/${status}`,
});
return this.client.put(path, commentIds);
}
delete(commentId) {
const path = (0, url_1.buildPath)({
endpointName: `posts/comments/${commentId}`,
});
return this.client.delete(path, {});
}
deleteInBatch(postCommentIds) {
const path = (0, url_1.buildPath)({
endpointName: 'posts/comments',
});
return this.client.delete(path, postCommentIds);
}
}
exports.PostCommentClient = PostCommentClient;
//# sourceMappingURL=PostCommentClient.js.map
/***/ }),
/***/ 771:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SheetClient = void 0;
const tslib_1 = __webpack_require__(655);
const url_1 = __webpack_require__(6998);
class SheetClient {
constructor(client) {
this.client = client;
}
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'sheets',
});
return this.client.get(path, Object.assign({}, params));
}
listIndependents() {
const path = (0, url_1.buildPath)({
endpointName: 'sheets/independent',
});
return this.client.get(path, {});
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'sheets',
});
return this.client.post(path, Object.assign({}, params));
}
get(sheetId) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/${sheetId}`,
});
return this.client.get(path, {});
}
getPreviewLinkById(sheetId) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/preview/${sheetId}`,
});
return this.client.get(path, {});
}
update(sheetId, params) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/${sheetId}`,
});
return this.client.put(path, Object.assign({}, params));
}
updateStatusById(sheetId, status) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `sheets/${sheetId}/${status}`,
});
yield this.client.put(path, {});
});
}
updateDraftById(sheetId, originalContent, content, keepRaw) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/${sheetId}/status/draft/content`,
});
return this.client.put(path, { originalContent, content, keepRaw });
}
delete(sheetId) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/${sheetId}`,
});
return this.client.delete(path, {});
}
}
exports.SheetClient = SheetClient;
//# sourceMappingURL=SheetClient.js.map
/***/ }),
/***/ 6094:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SheetCommentClient = void 0;
const url_1 = __webpack_require__(6998);
class SheetCommentClient {
constructor(client) {
this.client = client;
}
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'sheets/comments',
});
return this.client.get(path, Object.assign({}, params));
}
get(commentId) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/comments/${commentId}`,
});
return this.client.get(path, {});
}
listAsView(params) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/comments/${params.sheetId}/list_view`,
});
return this.client.get(path, Object.assign({}, params));
}
listAsTreeView(params) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/comments/${params.sheetId}/tree_view`,
});
return this.client.get(path, Object.assign({}, params));
}
latest(params) {
const path = (0, url_1.buildPath)({
endpointName: 'sheets/comments/latest',
});
return this.client.get(path, Object.assign({}, params));
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'sheets/comments',
});
return this.client.post(path, Object.assign({}, params));
}
update(commentId, params) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/comments/${commentId}`,
});
return this.client.put(path, Object.assign({}, params));
}
updateStatusById(commentId, status) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/comments/${commentId}/status/${status}`,
});
return this.client.put(path, {});
}
updateStatusInBatch(commentIds, status) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/comments/status/${status}`,
});
return this.client.put(path, commentIds);
}
deleteInBatch(commentIds) {
const path = (0, url_1.buildPath)({
endpointName: 'sheets/comments',
});
return this.client.delete(path, commentIds);
}
delete(commentId) {
const path = (0, url_1.buildPath)({
endpointName: `sheets/comments/${commentId}`,
});
return this.client.delete(path, {});
}
}
exports.SheetCommentClient = SheetCommentClient;
//# sourceMappingURL=SheetCommentClient.js.map
/***/ }),
/***/ 7742:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.StaticStorageClient = void 0;
const rest_api_client_1 = __webpack_require__(5040);
const url_1 = __webpack_require__(6998);
class StaticStorageClient {
constructor(client) {
this.client = client;
}
list() {
const path = (0, url_1.buildPath)({
endpointName: `statics`,
});
return this.client.get(path, {});
}
delete(filePath) {
const path = (0, url_1.buildPath)({
endpointName: `statics`,
});
return this.client.delete(path, {
path: filePath,
});
}
createFolder(basePath, folderName) {
const path = (0, url_1.buildPath)({
endpointName: `statics?basePath=${basePath}&folderName=${folderName}`,
});
return this.client.post(path, {});
}
upload(file, options, basePath) {
const path = (0, url_1.buildPath)({
endpointName: `statics/upload?basePath=${basePath}`,
});
const formData = new rest_api_client_1.FormData();
formData.append('file', file);
return this.client.post(path, formData, Object.assign({}, options));
}
rename(basePath, newName) {
const path = (0, url_1.buildPath)({
endpointName: `statics/rename?basePath=${basePath}&newName=${newName}`,
});
return this.client.post(path, {});
}
saveContent(params) {
const path = (0, url_1.buildPath)({
endpointName: `statics/files`,
});
return this.client.put(path, params);
}
}
exports.StaticStorageClient = StaticStorageClient;
//# sourceMappingURL=StaticStorageClient.js.map
/***/ }),
/***/ 7922:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.StatisticClient = void 0;
const url_1 = __webpack_require__(6998);
class StatisticClient {
constructor(client) {
this.client = client;
}
statistics() {
const path = (0, url_1.buildPath)({
endpointName: 'statistics',
});
return this.client.get(path, {});
}
statisticsWithUser() {
const path = (0, url_1.buildPath)({
endpointName: 'statistics/user',
});
return this.client.get(path, {});
}
}
exports.StatisticClient = StatisticClient;
//# sourceMappingURL=StatisticClient.js.map
/***/ }),
/***/ 4898:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.TagClient = void 0;
const url_1 = __webpack_require__(6998);
class TagClient {
constructor(client) {
this.client = client;
}
list(params) {
const path = (0, url_1.buildPath)({
endpointName: 'tags',
});
return this.client.get(path, Object.assign({}, params));
}
create(params) {
const path = (0, url_1.buildPath)({
endpointName: 'tags',
});
return this.client.post(path, Object.assign({}, params));
}
get(tagId) {
const path = (0, url_1.buildPath)({
endpointName: `tags/${tagId}`,
});
return this.client.get(path, {});
}
update(tagId, params) {
const path = (0, url_1.buildPath)({
endpointName: `tags/${tagId}`,
});
return this.client.put(path, Object.assign({}, params));
}
delete(tagId) {
const path = (0, url_1.buildPath)({
endpointName: `tags/${tagId}`,
});
return this.client.delete(path, {});
}
}
exports.TagClient = TagClient;
//# sourceMappingURL=TagClient.js.map
/***/ }),
/***/ 8842:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ThemeClient = void 0;
const tslib_1 = __webpack_require__(655);
const rest_api_client_1 = __webpack_require__(5040);
const url_1 = __webpack_require__(6998);
class ThemeClient {
constructor(client) {
this.client = client;
}
/**
* List all themes.
*
* @returns array of ThemeProperty
*/
list() {
const path = (0, url_1.buildPath)({
endpointName: 'themes',
});
return this.client.get(path, {});
}
/**
* Get theme property by themeId.
*
* @param themeId themeId
* @returns ThemeProperty
*/
get(themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}`,
});
return this.client.get(path, {});
}
/**
* Delete theme by themeId.
*
* @param themeId themeId
* @param deleteSettings whether to delete the theme settings at the same time.
* @returns ThemeProperty
*/
delete(themeId, deleteSettings) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}`,
});
return this.client.delete(path, { deleteSettings });
}
/**
* Active a theme.
*
* @param themeId themeId
* @returns ThemeProperty
*/
active(themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/activation`,
});
return this.client.post(path, {});
}
/**
* Fetches theme configuration group names by theme id
*
* @param themeId theme id
*/
listConfigurationGroups(themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/configurations/groups`,
});
return this.client.get(path, {});
}
/**
* Fetches theme configuration group by theme id and group name
*
* @param themeId theme id
* @param group group name
*/
listConfigurationsByGroup(themeId, group) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/configurations/groups/${group}`,
});
return this.client.get(path, {});
}
/**
* List activated theme configurations.
*
* @returns array of configuration group.
*/
listActivatedConfigurations() {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation/configurations',
});
return this.client.get(path, {});
}
/**
* List theme configurations by themeId.
*
* @param themeId themeId
* @returns array of configuration group.
*/
listConfigurations(themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/configurations`,
});
return this.client.get(path, {});
}
/**
* List theme files by themeId.
*
* @param themeId themeId
* @returns array of ThemeFile
*/
listFiles(themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/files`,
});
return this.client.get(path, {});
}
/**
* List activated theme files.
*
* @returns array of ThemeFile
*/
listActivatedFiles() {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation/files',
});
return this.client.get(path, {});
}
/**
* Get activated template content by filepath.
*
* @param filepath filepath
* @returns template content
*/
getActivatedTemplateContent(filepath) {
const path = (0, url_1.buildPath)({
endpointName: 'themes/files/content',
});
return this.client.get(path, { path: filepath });
}
/**
* Get template content by themeId and filepath.
*
* @param themeId themeId
* @param filepath filepath
* @returns template content
*/
getTemplateContent(themeId, filepath) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/files/content`,
});
return this.client.get(path, { path: filepath });
}
/**
* Update theme template content by themeId.
*
* @param themeId themeId
* @param params path, content
*/
updateTemplateContent(themeId, params) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/files/content`,
});
yield this.client.put(path, Object.assign({}, params));
});
}
/**
* List theme settings by themeId.
*
* @param themeId themeId
* @returns Record<string, unknown>
*/
listSettings(themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/settings`,
});
return this.client.get(path, {});
}
/**
* List activated theme settings.
*
* @returns Record<string, unknown>
*/
listActivatedSettings() {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation/settings',
});
return this.client.get(path, {});
}
/**
* Lists theme settings by theme id and group name
*
* @param themeId theme id
* @param group group name
*/
listSettingsByGroup(themeId, group) {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/groups/${group}/settings`,
});
return this.client.get(path, {});
}
/**
* Save settings by themeId.
*
* @param themeId themeId
* @param settings settings
*/
saveSettings(themeId, settings) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: `themes/${themeId}/settings`,
});
yield this.client.post(path, settings);
});
}
/**
* Save activated theme settings.
*
* @param settings settings
*/
saveActivatedSettings(settings) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation/settings',
});
yield this.client.post(path, settings);
});
}
/**
* Get activated theme property.
*
* @returns ThemeProperty
*/
getActivatedTheme() {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation',
});
return this.client.get(path, {});
}
/**
* List activated theme custom post templates.
*
* @returns array of template name.
*/
listCustomPostTemplates() {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation/template/custom/post',
});
return this.client.get(path, {});
}
/**
* List activated theme custom sheet templates.
*
* @returns array of template name.
*/
listCustomSheetTemplates() {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation/template/custom/sheet',
});
return this.client.get(path, {});
}
/**
* Check template exists
*
* @param template template name
* @returns boolean
*/
exists(template) {
const path = (0, url_1.buildPath)({
endpointName: 'themes/activation/template/exists',
});
return this.client.get(path, { template });
}
/**
* Fetch theme by uri
*
* @param uri uri
* @returns void
*/
fetchTheme(uri) {
const path = (0, url_1.buildPath)({
endpointName: `themes/fetching?uri=${uri}`,
});
return this.client.post(path, {});
}
/**
* update theme by fetch.
*
* @param themeId themeId
* @returns void
*/
updateThemeByFetching(themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/fetching/${themeId}`,
});
return this.client.put(path, {});
}
/**
* Update activated theme template content.
*
* @param params path, content
* @returns void
*/
updateActivatedTemplateContent(params) {
const path = (0, url_1.buildPath)({
endpointName: 'themes/files/content',
});
return this.client.put(path, Object.assign({}, params));
}
/**
* Refresh theme list cache.
*
* @returns void
*/
reload() {
const path = (0, url_1.buildPath)({
endpointName: 'themes/reload',
});
return this.client.post(path, {});
}
/**
* Upload a theme.
*
* @param data data
* @param options Upload options
* @returns ThemeProperty
*/
upload(data, options) {
const path = (0, url_1.buildPath)({
endpointName: 'themes/upload',
});
const formData = new rest_api_client_1.FormData();
formData.append('file', data);
return this.client.post(path, formData, Object.assign({}, options));
}
/**
* Update theme by upload.
*
* @param options upload options
* @param themeId themeId
* @param data data
* @returns ThemeProperty
*/
updateByUpload(data, options, themeId) {
const path = (0, url_1.buildPath)({
endpointName: `themes/upload/${themeId}`,
});
const formData = new rest_api_client_1.FormData();
formData.append('file', data);
return this.client.put(path, formData, Object.assign({}, options));
}
}
exports.ThemeClient = ThemeClient;
//# sourceMappingURL=ThemeClient.js.map
/***/ }),
/***/ 5412:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.UserClient = void 0;
const url_1 = __webpack_require__(6998);
class UserClient {
constructor(client) {
this.client = client;
}
/**
* Get user profile
*/
getProfile() {
const path = (0, url_1.buildPath)({
endpointName: 'users/profiles',
});
return this.client.get(path, {});
}
/**
* Update user profile
*
* @param user {@link User}
*/
updateProfile(user) {
const path = (0, url_1.buildPath)({
endpointName: 'users/profiles',
});
return this.client.put(path, user);
}
updatePassword(params) {
const path = (0, url_1.buildPath)({
endpointName: 'users/profiles/password',
});
return this.client.put(path, Object.assign({}, params));
}
generateMFAQrImage(params) {
const path = (0, url_1.buildPath)({
endpointName: 'users/mfa/generate',
});
return this.client.put(path, Object.assign({}, params));
}
updateMFAuth(params) {
const path = (0, url_1.buildPath)({
endpointName: 'users/mfa/update',
});
return this.client.put(path, Object.assign({}, params));
}
}
exports.UserClient = UserClient;
//# sourceMappingURL=UserClient.js.map
/***/ }),
/***/ 6904:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ActuatorClient = exports.CommentClient = exports.StaticStorageClient = exports.UserClient = exports.ThemeClient = exports.TagClient = exports.StatisticClient = exports.SheetClient = exports.SheetCommentClient = exports.PostClient = exports.PostCommentClient = exports.PhotoClient = exports.OptionClient = exports.MigrationClient = exports.MenuClient = exports.MailClient = exports.LogClient = exports.LinkClient = exports.JournalClient = exports.JournalCommentClient = exports.InstallationClient = exports.CategoryClient = exports.BackupClient = exports.AttachmentClient = void 0;
var AttachmentClient_1 = __webpack_require__(399);
Object.defineProperty(exports, "AttachmentClient", ({ enumerable: true, get: function () { return AttachmentClient_1.AttachmentClient; } }));
var BackupClient_1 = __webpack_require__(5260);
Object.defineProperty(exports, "BackupClient", ({ enumerable: true, get: function () { return BackupClient_1.BackupClient; } }));
var CategoryClient_1 = __webpack_require__(6774);
Object.defineProperty(exports, "CategoryClient", ({ enumerable: true, get: function () { return CategoryClient_1.CategoryClient; } }));
var InstallationClient_1 = __webpack_require__(8400);
Object.defineProperty(exports, "InstallationClient", ({ enumerable: true, get: function () { return InstallationClient_1.InstallationClient; } }));
var JournalCommentClient_1 = __webpack_require__(5503);
Object.defineProperty(exports, "JournalCommentClient", ({ enumerable: true, get: function () { return JournalCommentClient_1.JournalCommentClient; } }));
var JournalClient_1 = __webpack_require__(173);
Object.defineProperty(exports, "JournalClient", ({ enumerable: true, get: function () { return JournalClient_1.JournalClient; } }));
var LinkClient_1 = __webpack_require__(9207);
Object.defineProperty(exports, "LinkClient", ({ enumerable: true, get: function () { return LinkClient_1.LinkClient; } }));
var LogClient_1 = __webpack_require__(9842);
Object.defineProperty(exports, "LogClient", ({ enumerable: true, get: function () { return LogClient_1.LogClient; } }));
var MailClient_1 = __webpack_require__(7206);
Object.defineProperty(exports, "MailClient", ({ enumerable: true, get: function () { return MailClient_1.MailClient; } }));
var MenuClient_1 = __webpack_require__(7530);
Object.defineProperty(exports, "MenuClient", ({ enumerable: true, get: function () { return MenuClient_1.MenuClient; } }));
var MigrationClient_1 = __webpack_require__(9644);
Object.defineProperty(exports, "MigrationClient", ({ enumerable: true, get: function () { return MigrationClient_1.MigrationClient; } }));
var OptionClient_1 = __webpack_require__(3913);
Object.defineProperty(exports, "OptionClient", ({ enumerable: true, get: function () { return OptionClient_1.OptionClient; } }));
var PhotoClient_1 = __webpack_require__(402);
Object.defineProperty(exports, "PhotoClient", ({ enumerable: true, get: function () { return PhotoClient_1.PhotoClient; } }));
var PostCommentClient_1 = __webpack_require__(6494);
Object.defineProperty(exports, "PostCommentClient", ({ enumerable: true, get: function () { return PostCommentClient_1.PostCommentClient; } }));
var PostClient_1 = __webpack_require__(4682);
Object.defineProperty(exports, "PostClient", ({ enumerable: true, get: function () { return PostClient_1.PostClient; } }));
var SheetCommentClient_1 = __webpack_require__(6094);
Object.defineProperty(exports, "SheetCommentClient", ({ enumerable: true, get: function () { return SheetCommentClient_1.SheetCommentClient; } }));
var SheetClient_1 = __webpack_require__(771);
Object.defineProperty(exports, "SheetClient", ({ enumerable: true, get: function () { return SheetClient_1.SheetClient; } }));
var StatisticClient_1 = __webpack_require__(7922);
Object.defineProperty(exports, "StatisticClient", ({ enumerable: true, get: function () { return StatisticClient_1.StatisticClient; } }));
var TagClient_1 = __webpack_require__(4898);
Object.defineProperty(exports, "TagClient", ({ enumerable: true, get: function () { return TagClient_1.TagClient; } }));
var ThemeClient_1 = __webpack_require__(8842);
Object.defineProperty(exports, "ThemeClient", ({ enumerable: true, get: function () { return ThemeClient_1.ThemeClient; } }));
var UserClient_1 = __webpack_require__(5412);
Object.defineProperty(exports, "UserClient", ({ enumerable: true, get: function () { return UserClient_1.UserClient; } }));
var StaticStorageClient_1 = __webpack_require__(7742);
Object.defineProperty(exports, "StaticStorageClient", ({ enumerable: true, get: function () { return StaticStorageClient_1.StaticStorageClient; } }));
var CommentClient_1 = __webpack_require__(8666);
Object.defineProperty(exports, "CommentClient", ({ enumerable: true, get: function () { return CommentClient_1.CommentClient; } }));
var ActuatorClient_1 = __webpack_require__(6618);
Object.defineProperty(exports, "ActuatorClient", ({ enumerable: true, get: function () { return ActuatorClient_1.ActuatorClient; } }));
//# sourceMappingURL=index.js.map
/***/ }),
/***/ 5597:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.AuthorizedClient = exports.AdminApiClient = void 0;
const tslib_1 = __webpack_require__(655);
var AdminApiClient_1 = __webpack_require__(6587);
Object.defineProperty(exports, "AdminApiClient", ({ enumerable: true, get: function () { return AdminApiClient_1.AdminApiClient; } }));
var AuthorizedClient_1 = __webpack_require__(6710);
Object.defineProperty(exports, "AuthorizedClient", ({ enumerable: true, get: function () { return AuthorizedClient_1.AuthorizedClient; } }));
tslib_1.__exportStar(__webpack_require__(5040), exports);
tslib_1.__exportStar(__webpack_require__(6904), exports);
//# sourceMappingURL=index.js.map
/***/ }),
/***/ 6998:
/***/ (function(__unused_webpack_module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.buildPath = void 0;
const buildPath = (params) => {
const { endpointName, scope } = params;
const scopePath = scope !== undefined ? `${scope}` : 'admin';
return `/api/${scopePath}/${endpointName}`;
};
exports.buildPath = buildPath;
//# sourceMappingURL=url.js.map
/***/ }),
/***/ 9290:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.HaloRequestConfigBuilder = void 0;
const tslib_1 = __webpack_require__(655);
const form_data_1 = tslib_1.__importDefault(__webpack_require__(6230));
const qs_1 = tslib_1.__importDefault(__webpack_require__(129));
const js_base64_1 = __webpack_require__(9575);
const auth_1 = __webpack_require__(3622);
const platform_1 = __webpack_require__(8384);
const THRESHOLD_AVOID_REQUEST_URL_TOO_LARGE = 4096;
class HaloRequestConfigBuilder {
constructor({ baseUrl, auth, basicAuth, clientCertAuth, proxy, userAgent, }) {
this.baseUrl = baseUrl;
this.auth = auth;
this.headers = this.buildHeaders({ basicAuth, userAgent });
this.clientCertAuth = clientCertAuth;
this.proxy = proxy;
this.requestToken = null;
}
build(method, path, params, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const requestConfig = Object.assign(Object.assign(Object.assign({ method, headers: this.headers, url: `${this.baseUrl}${path}` }, (options ? options : {})), platform_1.platformDeps.buildPlatformDependentConfig({
clientCertAuth: this.clientCertAuth,
})), { proxy: this.proxy });
switch (method) {
case 'get': {
const requestUrl = this.buildRequestUrl(path, params);
if (requestUrl.length > THRESHOLD_AVOID_REQUEST_URL_TOO_LARGE) {
return Object.assign(Object.assign({}, requestConfig), { method: 'post', headers: Object.assign(Object.assign({}, this.headers), { 'X-HTTP-Method-Override': 'GET' }), data: yield this.buildData(params) });
}
return Object.assign(Object.assign({}, requestConfig), { url: requestUrl });
}
case 'post': {
if (params instanceof form_data_1.default) {
const formData = yield this.buildData(params);
return Object.assign(Object.assign({}, requestConfig), { headers:
// NOTE: formData.getHeaders does not exist in a browser environment.
typeof formData.getHeaders === 'function' ? Object.assign(Object.assign({}, this.headers), formData.getHeaders()) : this.headers, data: formData });
}
return Object.assign(Object.assign({}, requestConfig), { data: yield this.buildData(params) });
}
case 'put': {
return Object.assign(Object.assign({}, requestConfig), { data: yield this.buildData(params) });
}
case 'delete': {
if (params instanceof Array) {
return Object.assign(Object.assign({}, requestConfig), { headers: this.headers, data: params });
}
const requestUrl = this.buildRequestUrl(path, yield this.buildData(params));
return Object.assign(Object.assign({}, requestConfig), { url: requestUrl });
}
default: {
throw new Error(`${method} method is not supported`);
}
}
});
}
buildRequestUrl(path, params) {
const requestUrl = `${this.baseUrl}${path}`;
const query = qs_1.default.stringify(params, { indices: false });
return query ? `${requestUrl}?${query}` : requestUrl;
}
buildData(params) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (this.auth && this.auth.type === 'session') {
const requestToken = yield this.getRequestToken();
if (params instanceof form_data_1.default) {
params.append(auth_1.SESSION_TOKEN_KEY, requestToken);
return params;
}
return Object.assign({ [auth_1.SESSION_TOKEN_KEY]: requestToken }, params);
}
return params;
});
}
buildHeaders(params) {
const { basicAuth, userAgent } = params;
const basicAuthHeaders = basicAuth
? {
Authorization: `Basic ${js_base64_1.Base64.encode(`${basicAuth.username}:${basicAuth.password}`)}`,
}
: {};
const platformDepsHeaders = platform_1.platformDeps.buildHeaders({ userAgent });
const commonHeaders = Object.assign(Object.assign({}, platformDepsHeaders), basicAuthHeaders);
if (!this.auth) {
return {};
}
switch (this.auth.type) {
case 'password': {
return Object.assign(Object.assign({}, commonHeaders), { Authorization: js_base64_1.Base64.encode(`${this.auth.username}:${this.auth.password}`) });
}
case 'adminToken': {
const adminToken = this.auth.adminToken;
return Object.assign(Object.assign({}, commonHeaders), { 'Admin-Authorization': adminToken });
}
case 'apiToken': {
const apiToken = this.auth.apiToken;
if (Array.isArray(apiToken)) {
return Object.assign(Object.assign({}, commonHeaders), { 'API-Authorization': apiToken.join(',') });
}
return Object.assign(Object.assign({}, commonHeaders), { 'API-Authorization': apiToken });
}
case 'oAuthToken': {
return Object.assign(Object.assign({}, commonHeaders), { Authorization: `Bearer ${this.auth.oAuthToken}` });
}
case 'customizeAuth': {
return Object.assign(Object.assign({}, commonHeaders), { [this.auth.authHeader]: this.auth.getToken() });
}
default: {
// https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest
return Object.assign(Object.assign({}, commonHeaders), { 'X-Requested-With': 'XMLHttpRequest' });
}
}
}
getRequestToken() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (this.requestToken === null) {
this.requestToken = yield platform_1.platformDeps.getRequestToken();
}
return this.requestToken;
});
}
}
exports.HaloRequestConfigBuilder = HaloRequestConfigBuilder;
//# sourceMappingURL=HaloRequestConfigBuilder.js.map
/***/ }),
/***/ 2862:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.HaloResponseHandler = void 0;
const tslib_1 = __webpack_require__(655);
const HaloRestAPIError_1 = __webpack_require__(2284);
class HaloResponseHandler {
handle(response) {
return response.then((res) => this.handleSuccessResponse(res), (error) => this.handleErrorResponse(error));
}
handleSuccessResponse(response) {
return response.data;
}
handleErrorResponse(error) {
if (!error.response) {
// FIXME: find a better way to handle this error
if (/MAC address verify failure/.test(error.toString())) {
throw new Error('invalid clientCertAuth setting');
}
throw error;
}
const errorResponse = error.response;
const { data } = errorResponse, rest = tslib_1.__rest(errorResponse, ["data"]);
if (typeof data === 'string') {
throw new Error(`${rest.status}: ${rest.statusText}`);
}
throw new HaloRestAPIError_1.HaloRestAPIError(Object.assign({ data }, rest));
}
}
exports.HaloResponseHandler = HaloResponseHandler;
//# sourceMappingURL=HaloResponseHandler.js.map
/***/ }),
/***/ 3388:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.HaloRestAPIClient = void 0;
const http_1 = __webpack_require__(2992);
const HaloRequestConfigBuilder_1 = __webpack_require__(9290);
const HaloResponseHandler_1 = __webpack_require__(2862);
const platform_1 = __webpack_require__(8384);
const buildDiscriminatedAuth = (auth) => {
if ('username' in auth) {
return Object.assign({ type: 'password' }, auth);
}
if ('apiToken' in auth) {
return Object.assign({ type: 'apiToken' }, auth);
}
if ('adminToken' in auth) {
return Object.assign({ type: 'adminToken' }, auth);
}
if ('oAuthToken' in auth) {
return Object.assign({ type: 'oAuthToken' }, auth);
}
if ('type' in auth && auth['type'] == 'customizeAuth') {
return auth;
}
return undefined;
};
class HaloRestAPIClient {
constructor(options = {}) {
var _a;
this.baseUrl = platform_1.platformDeps.buildBaseUrl(options.baseUrl);
const auth = buildDiscriminatedAuth((_a = options.auth) !== null && _a !== void 0 ? _a : {});
const requestConfigBuilder = new HaloRequestConfigBuilder_1.HaloRequestConfigBuilder(Object.assign(Object.assign({}, options), { baseUrl: this.baseUrl, auth }));
const responseHandler = new HaloResponseHandler_1.HaloResponseHandler();
this.httpClient = new http_1.DefaultHttpClient({
responseHandler,
requestConfigBuilder,
});
this._interceptors = this.httpClient.interceptors;
}
static get version() {
return platform_1.platformDeps.getVersion();
}
get interceptors() {
return this._interceptors;
}
getBaseUrl() {
return this.baseUrl;
}
buildHttpClient() {
return this.httpClient;
}
}
exports.HaloRestAPIClient = HaloRestAPIClient;
//# sourceMappingURL=HaloRestAPIClient.js.map
/***/ }),
/***/ 2284:
/***/ (function(__unused_webpack_module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.HaloRestAPIError = void 0;
class HaloRestAPIError extends Error {
constructor(error) {
const { data } = HaloRestAPIError.buildErrorResponseDate(error);
super(data.message);
this.name = 'HaloRestAPIError';
this.data = data;
this.status = data.status;
this.headers = error.headers;
this.message = `[${this.status}] ${this.message}`;
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types
// Maintains proper stack trace for where our error was thrown (only available on V8)
if (Error.captureStackTrace) {
Error.captureStackTrace(this, HaloRestAPIError);
}
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
// Set the prototype explicitly.
Object.setPrototypeOf(this, HaloRestAPIError.prototype);
}
static buildErrorResponseDate(error) {
// improvable
return { data: error.data };
}
}
exports.HaloRestAPIError = HaloRestAPIError;
//# sourceMappingURL=HaloRestAPIError.js.map
/***/ }),
/***/ 1638:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.AxiosClient = void 0;
const tslib_1 = __webpack_require__(655);
const axios_1 = tslib_1.__importDefault(__webpack_require__(9669));
const InterceptorManager_1 = __webpack_require__(6008);
class AxiosClient {
constructor({ responseHandler, requestConfigBuilder, }) {
this.responseHandler = responseHandler;
this.requestConfigBuilder = requestConfigBuilder;
this.interceptors = {
request: new InterceptorManager_1.RequestInterceptor(),
response: new InterceptorManager_1.ResponseInterceptor(),
};
}
get(path, params) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const requestConfig = yield this.requestConfigBuilder.build('get', path, params);
return this.sendRequest(requestConfig);
});
}
getData(path, params) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const requestConfig = yield this.requestConfigBuilder.build('get', path, params, {
responseType: 'arraybuffer',
});
return this.sendRequest(requestConfig);
});
}
post(path, params, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const requestConfig = yield this.requestConfigBuilder.build('post', path, params, options);
return this.sendRequest(requestConfig);
});
}
postData(path, formData) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const requestConfig = yield this.requestConfigBuilder.build('post', path, formData);
return this.sendRequest(requestConfig);
});
}
put(path, params, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const requestConfig = yield this.requestConfigBuilder.build('put', path, params, options);
return this.sendRequest(requestConfig);
});
}
delete(path, params, options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const requestConfig = yield this.requestConfigBuilder.build('delete', path, params, options);
return this.sendRequest(requestConfig);
});
}
sendRequest(requestConfig) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.responseHandler.handle(
// eslint-disable-next-line new-cap
(0, axios_1.default)(Object.assign(Object.assign({}, requestConfig), {
// NOTE: For defining the max size of the http request content, `maxBodyLength` will be used after version 0.20.0.
// `maxContentLength` will be still needed for defining the max size of the http response content.
// ref: https://github.com/axios/axios/pull/2781/files
// maxBodyLength: Infinity,
maxContentLength: Infinity })));
});
}
}
exports.AxiosClient = AxiosClient;
//# sourceMappingURL=AxiosClient.js.map
/***/ }),
/***/ 6008:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ResponseInterceptor = exports.RequestInterceptor = void 0;
const tslib_1 = __webpack_require__(655);
const axios_1 = tslib_1.__importDefault(__webpack_require__(9669));
class RequestInterceptor {
use(resolved, rejected) {
return axios_1.default.interceptors.request.use(resolved, rejected);
}
eject(id) {
axios_1.default.interceptors.request.eject(id);
}
}
exports.RequestInterceptor = RequestInterceptor;
class ResponseInterceptor {
use(resolved, rejected) {
return axios_1.default.interceptors.response.use(resolved, rejected);
}
eject(id) {
axios_1.default.interceptors.response.eject(id);
}
}
exports.ResponseInterceptor = ResponseInterceptor;
//# sourceMappingURL=InterceptorManager.js.map
/***/ }),
/***/ 2992:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.DefaultHttpClient = void 0;
var AxiosClient_1 = __webpack_require__(1638);
Object.defineProperty(exports, "DefaultHttpClient", ({ enumerable: true, get: function () { return AxiosClient_1.AxiosClient; } }));
//# sourceMappingURL=index.js.map
/***/ }),
/***/ 5040:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Axios = exports.FormData = exports.DefaultHttpClient = exports.HaloRequestConfigBuilder = exports.HaloResponseHandler = exports.HaloRestAPIClient = void 0;
const tslib_1 = __webpack_require__(655);
const platform_1 = __webpack_require__(8384);
const browserDeps = tslib_1.__importStar(__webpack_require__(5792));
const form_data_1 = tslib_1.__importDefault(__webpack_require__(6230));
exports.FormData = form_data_1.default;
const axios_1 = tslib_1.__importDefault(__webpack_require__(9669));
exports.Axios = axios_1.default;
(0, platform_1.injectPlatformDeps)(browserDeps);
var HaloRestAPIClient_1 = __webpack_require__(3388);
Object.defineProperty(exports, "HaloRestAPIClient", ({ enumerable: true, get: function () { return HaloRestAPIClient_1.HaloRestAPIClient; } }));
var HaloResponseHandler_1 = __webpack_require__(2862);
Object.defineProperty(exports, "HaloResponseHandler", ({ enumerable: true, get: function () { return HaloResponseHandler_1.HaloResponseHandler; } }));
var HaloRequestConfigBuilder_1 = __webpack_require__(9290);
Object.defineProperty(exports, "HaloRequestConfigBuilder", ({ enumerable: true, get: function () { return HaloRequestConfigBuilder_1.HaloRequestConfigBuilder; } }));
var http_1 = __webpack_require__(2992);
Object.defineProperty(exports, "DefaultHttpClient", ({ enumerable: true, get: function () { return http_1.DefaultHttpClient; } }));
//# sourceMappingURL=index.browser.js.map
/***/ }),
/***/ 6703:
/***/ (function(__unused_webpack_module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.UnsupportedPlatformError = void 0;
class UnsupportedPlatformError extends Error {
constructor(platform) {
const message = `This function is not supported in ${platform} environment`;
super(message);
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types
// Maintains proper stack trace for where our error was thrown (only available on V8)
if (Error.captureStackTrace) {
Error.captureStackTrace(this, UnsupportedPlatformError);
}
this.name = 'UnsupportedPlatformError';
this.platform = platform;
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
// Set the prototype explicitly.
Object.setPrototypeOf(this, UnsupportedPlatformError.prototype);
}
}
exports.UnsupportedPlatformError = UnsupportedPlatformError;
//# sourceMappingURL=UnsupportedPlatformError.js.map
/***/ }),
/***/ 5792:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.getVersion = exports.buildBaseUrl = exports.buildFormDataValue = exports.buildHeaders = exports.buildPlatformDependentConfig = exports.getDefaultAuth = exports.getRequestToken = exports.readFileFromPath = void 0;
const tslib_1 = __webpack_require__(655);
const UnsupportedPlatformError_1 = __webpack_require__(6703);
const readFileFromPath = () => {
throw new UnsupportedPlatformError_1.UnsupportedPlatformError('Browser');
};
exports.readFileFromPath = readFileFromPath;
const getRequestToken = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
if (typeof halo === 'object' && halo !== null && typeof halo.getRequestToken === 'function') {
return halo.getRequestToken();
}
throw new Error('session authentication must specify a request token');
});
exports.getRequestToken = getRequestToken;
const getDefaultAuth = () => {
return {
type: 'session',
};
};
exports.getDefaultAuth = getDefaultAuth;
const buildPlatformDependentConfig = () => {
return {};
};
exports.buildPlatformDependentConfig = buildPlatformDependentConfig;
const buildHeaders = () => {
return {};
};
exports.buildHeaders = buildHeaders;
const buildFormDataValue = (data) => {
return new Blob([data]);
};
exports.buildFormDataValue = buildFormDataValue;
const buildBaseUrl = (baseUrl) => {
if (typeof baseUrl === 'undefined') {
throw new Error('in browser environment, baseUrl is required');
}
return baseUrl;
};
exports.buildBaseUrl = buildBaseUrl;
const getVersion = () => {
return PACKAGE_VERSION;
};
exports.getVersion = getVersion;
//# sourceMappingURL=browser.js.map
/***/ }),
/***/ 8384:
/***/ (function(__unused_webpack_module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.injectPlatformDeps = exports.platformDeps = void 0;
exports.platformDeps = {
readFileFromPath: () => {
throw new Error('not implemented');
},
getRequestToken: () => {
throw new Error('not implemented');
},
getDefaultAuth: () => {
throw new Error('not implemented');
},
buildPlatformDependentConfig: () => {
throw new Error('not implemented');
},
buildHeaders: () => {
throw new Error('not implemented');
},
buildFormDataValue: () => {
throw new Error('not implemented');
},
buildBaseUrl: () => {
throw new Error('not implemented');
},
getVersion: () => {
throw new Error('not implemented');
},
};
const injectPlatformDeps = (deps) => {
exports.platformDeps.readFileFromPath = deps.readFileFromPath;
exports.platformDeps.getRequestToken = deps.getRequestToken;
exports.platformDeps.getDefaultAuth = deps.getDefaultAuth;
exports.platformDeps.buildPlatformDependentConfig = deps.buildPlatformDependentConfig;
exports.platformDeps.buildHeaders = deps.buildHeaders;
exports.platformDeps.buildFormDataValue = deps.buildFormDataValue;
exports.platformDeps.buildBaseUrl = deps.buildBaseUrl;
exports.platformDeps.getVersion = deps.getVersion;
};
exports.injectPlatformDeps = injectPlatformDeps;
//# sourceMappingURL=index.js.map
/***/ }),
/***/ 3622:
/***/ (function(__unused_webpack_module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SESSION_TOKEN_KEY = void 0;
exports.SESSION_TOKEN_KEY = '__REQUEST_TOKEN__';
//# sourceMappingURL=auth.js.map
/***/ }),
/***/ 6838:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ContentApiClient = void 0;
const clients_1 = __webpack_require__(3891);
class ContentApiClient {
constructor(client) {
this.client = client.buildHttpClient();
this._archive = new clients_1.ArchiveClient(this.client);
this._category = new clients_1.CategoryClient(this.client);
this._journal = new clients_1.JournalClient(this.client);
this._link = new clients_1.LinkClient(this.client);
this._menu = new clients_1.MenuClient(this.client);
this._option = new clients_1.OptionClient(this.client);
this._photo = new clients_1.PhotoClient(this.client);
this._post = new clients_1.PostClient(this.client);
this._sheet = new clients_1.SheetClient(this.client);
this._statistic = new clients_1.StatisticClient(this.client);
this._tag = new clients_1.TagClient(this.client);
this._theme = new clients_1.ThemeClient(this.client);
this._user = new clients_1.UserClient(this.client);
this._comment = new clients_1.CommentClient(this.client);
}
get archive() {
return this._archive;
}
get category() {
return this._category;
}
get journal() {
return this._journal;
}
get link() {
return this._link;
}
get menu() {
return this._menu;
}
get option() {
return this._option;
}
get photo() {
return this._photo;
}
get post() {
return this._post;
}
get sheet() {
return this._sheet;
}
get statistic() {
return this._statistic;
}
get tag() {
return this._tag;
}
get theme() {
return this._theme;
}
get user() {
return this._user;
}
get comment() {
return this._comment;
}
}
exports.ContentApiClient = ContentApiClient;
//# sourceMappingURL=ContentApiClient.js.map
/***/ }),
/***/ 9619:
/***/ (function(__unused_webpack_module, exports, __webpack_require
gitextract_1x6ktdds/ ├── .eslintignore ├── .eslintrc.js ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── bug_report.yml │ ├── config.yml │ ├── custom_config.yml │ └── feature_request.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── 404.ftl ├── 500.ftl ├── LICENSE ├── README.md ├── archives.ftl ├── categories.ftl ├── category.ftl ├── gulpfile.js ├── index.ftl ├── journals.ftl ├── links.ftl ├── mail_template/ │ ├── mail_notice.ftl │ └── mail_reply.ftl ├── package.json ├── photos.ftl ├── post.ftl ├── post_literature.ftl ├── post_password.ftl ├── search.ftl ├── settings.yaml ├── sheet.ftl ├── sheet_literature.ftl ├── source/ │ ├── cursor/ │ │ ├── OwO/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ ├── UwU/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ ├── black_cat/ │ │ │ ├── Alternative.cur │ │ │ ├── Escritura a Mano.cur │ │ │ ├── Move.cur │ │ │ ├── No_Disponible.cur │ │ │ ├── Ocupado.cur │ │ │ ├── ayuda.cur │ │ │ ├── diagonal resize 1.cur │ │ │ ├── diagonal resize 2.cur │ │ │ ├── horizontal.cur │ │ │ ├── normal.cur │ │ │ ├── precision.cur │ │ │ ├── texto.cur │ │ │ ├── vertical.cur │ │ │ └── work.cur │ │ ├── breeze/ │ │ │ ├── Arrow.cur │ │ │ ├── Cross.cur │ │ │ ├── Hand.cur │ │ │ ├── Handwriting.cur │ │ │ ├── Help.cur │ │ │ ├── IBeam.cur │ │ │ ├── NO.cur │ │ │ ├── SizeAll.cur │ │ │ ├── SizeNESW.cur │ │ │ ├── SizeNS.cur │ │ │ ├── SizeNWSE.cur │ │ │ ├── SizeWE.cur │ │ │ └── UpArrow.cur │ │ ├── debris/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ ├── horse/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ ├── marry/ │ │ │ ├── arrow.cur │ │ │ ├── beam.ani │ │ │ ├── beam.cur │ │ │ ├── busy.ani │ │ │ ├── ew.ani │ │ │ ├── move.cur │ │ │ ├── nesw.ani │ │ │ ├── ns.ani │ │ │ ├── nwse.ani │ │ │ └── working.ani │ │ ├── mellow/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ ├── music_cat_01/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ ├── music_cat_02/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ ├── overwatch/ │ │ │ ├── alternate.cur │ │ │ ├── busy.ani │ │ │ ├── cross.cur │ │ │ ├── dgn1.cur │ │ │ ├── dgn2.cur │ │ │ ├── handwriting.cur │ │ │ ├── help.cur │ │ │ ├── horz.cur │ │ │ ├── link.cur │ │ │ ├── move.cur │ │ │ ├── person.cur │ │ │ ├── pin.cur │ │ │ ├── pointer.cur │ │ │ ├── text.cur │ │ │ ├── vert.cur │ │ │ └── work.ani │ │ ├── rainbow_rain/ │ │ │ ├── Alternative2.cur │ │ │ ├── Escritura a Mano.cur │ │ │ ├── Movee2.cur │ │ │ ├── No Disponible.cur │ │ │ ├── Ocupado.cur │ │ │ ├── ayuda.cur │ │ │ ├── diagonal resize 1.cur │ │ │ ├── diagonal resize 2.cur │ │ │ ├── horizontal.cur │ │ │ ├── link.ani │ │ │ ├── link.cur │ │ │ ├── normal.cur │ │ │ ├── precision.cur │ │ │ ├── texto.cur │ │ │ ├── trabajando en segundo plano.cur │ │ │ └── vertical1.cur │ │ ├── water_01/ │ │ │ ├── arrow.cur │ │ │ └── hand.cur │ │ └── water_02/ │ │ ├── arrow.cur │ │ └── hand.cur │ └── lib/ │ ├── halo-comment@1.1.7/ │ │ ├── demo.html │ │ └── halo-comment.js │ ├── highlightjs@11.5.1/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── es/ │ │ │ ├── core.js │ │ │ ├── highlight.js │ │ │ └── package.json │ │ ├── highlight.js │ │ └── package.json │ ├── jquery-pjax@2.0.1/ │ │ └── jquery.pjax.js │ ├── katex@0.12.0/ │ │ ├── README.md │ │ ├── contrib/ │ │ │ ├── auto-render.js │ │ │ ├── auto-render.mjs │ │ │ ├── copy-tex.css │ │ │ ├── copy-tex.js │ │ │ ├── copy-tex.mjs │ │ │ ├── mathtex-script-type.js │ │ │ ├── mathtex-script-type.mjs │ │ │ ├── mhchem.js │ │ │ ├── mhchem.mjs │ │ │ ├── render-a11y-string.js │ │ │ └── render-a11y-string.mjs │ │ ├── katex.css │ │ ├── katex.js │ │ └── katex.mjs │ ├── live2d@1.0.1/ │ │ └── waifu-tips.json │ └── swiper@8.4.6/ │ ├── swiper-bundle.css │ └── swiper-bundle.js ├── src/ │ ├── css/ │ │ ├── celebration.less │ │ ├── cursor.less │ │ ├── dshare.less │ │ ├── mew-custom.less │ │ ├── post.less │ │ ├── style.less │ │ └── theme.less │ └── js/ │ ├── autoload.js │ ├── btoc.js │ ├── common.js │ ├── cursor/ │ │ ├── click/ │ │ │ ├── firework.js │ │ │ ├── granule.js │ │ │ ├── heart.js │ │ │ └── prosperous.js │ │ └── move/ │ │ ├── bubbleCursor.js │ │ ├── emojiCursor.js │ │ ├── fairyDustCursor.js │ │ ├── followingDotCursor.js │ │ ├── ghostCursor.js │ │ ├── snowflakeCursor.js │ │ ├── springyEmojiCursor.js │ │ └── trailingCursor.js │ ├── dprogress.js │ ├── dshare.js │ ├── editor-options.js │ ├── effects/ │ │ ├── circleMagic.js │ │ ├── lantern.js │ │ ├── sakura.js │ │ ├── snowflake.js │ │ └── universe.js │ ├── journals.js │ ├── mew-custom.js │ ├── photos.js │ ├── pjax.js │ ├── post.js │ ├── settings.js │ ├── spark-input.js │ ├── sw.js │ └── utils.js ├── tag.ftl ├── tags.ftl ├── template/ │ ├── common/ │ │ ├── actions.ftl │ │ ├── banner.ftl │ │ ├── config.ftl │ │ ├── footer.ftl │ │ ├── head.ftl │ │ ├── navbar.ftl │ │ ├── scripts.ftl │ │ └── widget.ftl │ ├── errorpage.ftl │ ├── layout.ftl │ ├── layout_default.ftl │ ├── layout_pjax.ftl │ ├── main/ │ │ ├── admire.ftl │ │ ├── article.ftl │ │ ├── article_list.ftl │ │ ├── article_literature.ftl │ │ ├── comment.ftl │ │ ├── copyright.ftl │ │ └── pagination.ftl │ └── widget/ │ ├── ad_piece.ftl │ ├── categories.ftl │ ├── custom.ftl │ ├── links.ftl │ ├── love.ftl │ ├── music.ftl │ ├── notice.ftl │ ├── profile.ftl │ ├── recent_comments.ftl │ ├── recent_posts.ftl │ ├── tagcloud.ftl │ ├── tags.ftl │ └── toc.ftl └── theme.yaml
SYMBOL INDEX (1859 symbols across 42 files)
FILE: source/lib/halo-comment@1.1.7/halo-comment.js
class AdminApiClient (line 13) | class AdminApiClient {
method constructor (line 14) | constructor(client) {
method attachment (line 41) | get attachment() {
method backup (line 44) | get backup() {
method category (line 47) | get category() {
method installation (line 50) | get installation() {
method journalComment (line 53) | get journalComment() {
method journal (line 56) | get journal() {
method link (line 59) | get link() {
method log (line 62) | get log() {
method mail (line 65) | get mail() {
method menu (line 68) | get menu() {
method migration (line 71) | get migration() {
method option (line 74) | get option() {
method photo (line 77) | get photo() {
method postComment (line 80) | get postComment() {
method post (line 83) | get post() {
method sheetComment (line 86) | get sheetComment() {
method sheet (line 89) | get sheet() {
method statistic (line 92) | get statistic() {
method tag (line 95) | get tag() {
method theme (line 98) | get theme() {
method user (line 101) | get user() {
method staticStorage (line 104) | get staticStorage() {
method comment (line 107) | get comment() {
method actuator (line 110) | get actuator() {
method getEnvironment (line 113) | getEnvironment() {
method getLogFile (line 119) | getLogFile(lines) {
method isInstalled (line 125) | isInstalled() {
method logout (line 131) | logout() {
method sendResetPasswordCode (line 137) | sendResetPasswordCode(params) {
method resetPassword (line 143) | resetPassword(params) {
method refreshToken (line 149) | refreshToken(refreshToken) {
method needMFACode (line 155) | needMFACode(params) {
method login (line 161) | login(params) {
class AuthorizedClient (line 182) | class AuthorizedClient {
method constructor (line 183) | constructor(baseUrl) {
method isInstalled (line 193) | isInstalled() {
method sendResetPasswordCode (line 199) | sendResetPasswordCode(params) {
method resetPassword (line 205) | resetPassword(params) {
method refreshToken (line 211) | refreshToken(refreshToken) {
method login (line 217) | login(params) {
method needMFACode (line 223) | needMFACode(params) {
class ActuatorClient (line 243) | class ActuatorClient {
method constructor (line 244) | constructor(client) {
method getLogfile (line 247) | getLogfile() {
method getEnv (line 253) | getEnv() {
method getSystemCpuCount (line 259) | getSystemCpuCount() {
method getSystemCpuUsage (line 265) | getSystemCpuUsage() {
method getProcessUptime (line 271) | getProcessUptime() {
method getProcessStartTime (line 277) | getProcessStartTime() {
method getProcessCpuUsage (line 283) | getProcessCpuUsage() {
method getJvmMemoryMax (line 289) | getJvmMemoryMax() {
method getJvmMemoryCommitted (line 295) | getJvmMemoryCommitted() {
method getJvmMemoryUsed (line 301) | getJvmMemoryUsed() {
method getJvmGcPause (line 307) | getJvmGcPause() {
class AttachmentClient (line 328) | class AttachmentClient {
method constructor (line 329) | constructor(client) {
method get (line 338) | get(attachmentId) {
method list (line 350) | list(params) {
method deleteInBatch (line 362) | deleteInBatch(attachmentIds) {
method delete (line 374) | delete(attachmentId) {
method update (line 387) | update(attachmentId, name) {
method listMediaTypes (line 398) | listMediaTypes() {
method listTypes (line 409) | listTypes() {
method upload (line 422) | upload(data, options) {
method uploadInBatch (line 437) | uploadInBatch(data, options) {
class BackupClient (line 461) | class BackupClient {
method constructor (line 462) | constructor(client) {
method getWorkdirBackup (line 465) | getWorkdirBackup(filename) {
method getDataBackup (line 471) | getDataBackup(filename) {
method getMarkdownBackup (line 477) | getMarkdownBackup(filename) {
method backupWorkdir (line 483) | backupWorkdir(options) {
method getWorkdirBackupOptions (line 489) | getWorkdirBackupOptions() {
method listWorkdirBackups (line 495) | listWorkdirBackups() {
method deleteWorkdirBackup (line 501) | deleteWorkdirBackup(filename) {
method backupData (line 507) | backupData() {
method listDataBackups (line 513) | listDataBackups() {
method deleteDataBackup (line 519) | deleteDataBackup(filename) {
method backupMarkdown (line 525) | backupMarkdown(params) {
method listMarkdownBackups (line 531) | listMarkdownBackups() {
method deleteMarkdownBackup (line 537) | deleteMarkdownBackup(filename) {
method importMarkdown (line 543) | importMarkdown(data, options) {
class CategoryClient (line 566) | class CategoryClient {
method constructor (line 567) | constructor(client) {
method list (line 576) | list(params) {
method listAsTree (line 588) | listAsTree(sort) {
method get (line 600) | get(categoryId) {
method create (line 612) | create(params) {
method update (line 625) | update(categoryId, params) {
method updateInBatch (line 636) | updateInBatch(params) {
method delete (line 647) | delete(categoryId) {
method constructor (line 3039) | constructor(client) {
method list (line 3042) | list(params) {
method listPostBySlug (line 3048) | listPostBySlug(params) {
class CommentClient (line 669) | class CommentClient {
method constructor (line 670) | constructor(client) {
method list (line 673) | list(target, params) {
method latest (line 679) | latest(target, top, status) {
method listAsView (line 685) | listAsView(target, targetId, params) {
method listAsTreeView (line 691) | listAsTreeView(target, targetId, params) {
method get (line 697) | get(target, commentId) {
method create (line 703) | create(target, params) {
method update (line 709) | update(target, commentId, params) {
method updateStatusById (line 715) | updateStatusById(target, commentId, status) {
method updateStatusInBatch (line 721) | updateStatusInBatch(target, commentIds, status) {
method delete (line 727) | delete(target, commentId) {
method deleteInBatch (line 733) | deleteInBatch(target, postCommentIds) {
method constructor (line 3069) | constructor(client) {
method listTopComments (line 3079) | listTopComments(target, targetId, params) {
method listChildren (line 3093) | listChildren(target, targetId, commentId, params) {
method listAsTreeView (line 3106) | listAsTreeView(target, targetId, params) {
method listAsView (line 3119) | listAsView(target, targetId, params) {
method create (line 3131) | create(target, params) {
class InstallationClient (line 753) | class InstallationClient {
method constructor (line 754) | constructor(client) {
method install (line 763) | install(params) {
class JournalClient (line 784) | class JournalClient {
method constructor (line 785) | constructor(client) {
method list (line 794) | list(params) {
method latest (line 806) | latest(top) {
method create (line 818) | create(params) {
method update (line 831) | update(journalId, params) {
method delete (line 841) | delete(journalId) {
method constructor (line 3153) | constructor(client) {
method list (line 3156) | list() {
method get (line 3162) | get(journalId) {
method like (line 3168) | like(journalId) {
class JournalCommentClient (line 864) | class JournalCommentClient {
method constructor (line 865) | constructor(client) {
method list (line 874) | list(params) {
method create (line 888) | create(params) {
method delete (line 900) | delete(commentId) {
method update (line 913) | update(commentId, status) {
method listAsView (line 925) | listAsView(params) {
method listAsTree (line 937) | listAsTree(params) {
method latest (line 949) | latest(params) {
class LinkClient (line 970) | class LinkClient {
method constructor (line 971) | constructor(client) {
method list (line 974) | list(sort) {
method create (line 980) | create(params) {
method get (line 986) | get(id) {
method update (line 992) | update(linkId, params) {
method updateInBatch (line 998) | updateInBatch(params) {
method delete (line 1004) | delete(id) {
method listTeams (line 1012) | listTeams() {
method constructor (line 3191) | constructor(client) {
method list (line 3194) | list(sort) {
method listTeams (line 3200) | listTeams(sort) {
class LogClient (line 1033) | class LogClient {
method constructor (line 1034) | constructor(client) {
method list (line 1042) | list(params) {
method clear (line 1051) | clear() {
method latest (line 1064) | latest(top) {
class MailClient (line 1084) | class MailClient {
method constructor (line 1085) | constructor(client) {
method testSmtpService (line 1088) | testSmtpService(params) {
method testConnect (line 1094) | testConnect() {
class MenuClient (line 1115) | class MenuClient {
method constructor (line 1116) | constructor(client) {
method list (line 1119) | list() {
method create (line 1125) | create(params) {
method createInBatch (line 1131) | createInBatch(params) {
method get (line 1137) | get(menuId) {
method update (line 1143) | update(menuId, params) {
method updateInBatch (line 1149) | updateInBatch(params) {
method delete (line 1155) | delete(menuId) {
method deleteInBatch (line 1163) | deleteInBatch(menuIds) {
method listTreeViewByTeam (line 1171) | listTreeViewByTeam(team, sort) {
method listTeams (line 1177) | listTeams() {
method listTreeView (line 1183) | listTreeView(sort) {
method constructor (line 3221) | constructor(client) {
method list (line 3224) | list(sort) {
method listAsTreeView (line 3230) | listAsTreeView(sort) {
class MigrationClient (line 1205) | class MigrationClient {
method constructor (line 1206) | constructor(client) {
method migrate (line 1209) | migrate(data, options) {
class OptionClient (line 1234) | class OptionClient {
method constructor (line 1235) | constructor(client) {
method list (line 1238) | list() {
method create (line 1244) | create(params) {
method get (line 1250) | get(id) {
method update (line 1256) | update(optionId, params) {
method delete (line 1262) | delete(optionId) {
method listAsView (line 1270) | listAsView(params) {
method listAsMapView (line 1276) | listAsMapView() {
method listAsMapViewByKeys (line 1282) | listAsMapViewByKeys(params) {
method saveMapView (line 1288) | saveMapView(params) {
method save (line 1296) | save(params) {
method constructor (line 3251) | constructor(client) {
method list (line 3254) | list() {
method listAsMapView (line 3260) | listAsMapView(key) {
method getByKey (line 3266) | getByKey(key) {
method comment (line 3272) | comment() {
class PhotoClient (line 1319) | class PhotoClient {
method constructor (line 1320) | constructor(client) {
method list (line 1323) | list(params) {
method create (line 1329) | create(params) {
method createInBatch (line 1335) | createInBatch(params) {
method get (line 1341) | get(photoId) {
method update (line 1347) | update(photoId, params) {
method updateInBatch (line 1353) | updateInBatch(params) {
method delete (line 1359) | delete(photoId) {
method deleteInBatch (line 1367) | deleteInBatch(photoIds) {
method latest (line 1373) | latest(sort) {
method listTeams (line 1379) | listTeams() {
method constructor (line 3293) | constructor(client) {
method latest (line 3296) | latest(sort) {
method list (line 3302) | list(params) {
class PostClient (line 1400) | class PostClient {
method constructor (line 1401) | constructor(client) {
method list (line 1404) | list(params) {
method get (line 1410) | get(postId) {
method getPreviewLinkById (line 1416) | getPreviewLinkById(postId) {
method latest (line 1422) | latest(top) {
method listByStatus (line 1428) | listByStatus(status, query) {
method create (line 1434) | create(params) {
method update (line 1440) | update(postId, params) {
method updateStatusById (line 1446) | updateStatusById(postId, status) {
method updateStatusInBatch (line 1452) | updateStatusInBatch(postIds, status) {
method updateDraftById (line 1458) | updateDraftById(postId, originalContent, content, keepRaw) {
method like (line 1464) | like(postId) {
method delete (line 1472) | delete(postId) {
method deleteInBatch (line 1478) | deleteInBatch(postIds) {
method constructor (line 3324) | constructor(client) {
method list (line 3327) | list(params, keyword, categoryId) {
method search (line 3333) | search(keyword, pageQuery) {
method get (line 3339) | get(postId, params) {
method getBySlug (line 3345) | getBySlug(slug, params) {
method getPrevPostById (line 3351) | getPrevPostById(postId) {
method getNextPostById (line 3357) | getNextPostById(postId) {
method like (line 3363) | like(postId) {
class PostCommentClient (line 1498) | class PostCommentClient {
method constructor (line 1499) | constructor(client) {
method list (line 1502) | list(params) {
method listAsView (line 1508) | listAsView(params) {
method listAsTreeView (line 1514) | listAsTreeView(params) {
method latest (line 1520) | latest(params) {
method create (line 1526) | create(params) {
method update (line 1532) | update(commentId, params) {
method updateStatusById (line 1538) | updateStatusById(commentId, status) {
method updateStatusInBatch (line 1544) | updateStatusInBatch(commentIds, status) {
method delete (line 1550) | delete(commentId) {
method deleteInBatch (line 1556) | deleteInBatch(postCommentIds) {
class SheetClient (line 1577) | class SheetClient {
method constructor (line 1578) | constructor(client) {
method list (line 1581) | list(params) {
method listIndependents (line 1587) | listIndependents() {
method create (line 1593) | create(params) {
method get (line 1599) | get(sheetId) {
method getPreviewLinkById (line 1605) | getPreviewLinkById(sheetId) {
method update (line 1611) | update(sheetId, params) {
method updateStatusById (line 1617) | updateStatusById(sheetId, status) {
method updateDraftById (line 1625) | updateDraftById(sheetId, originalContent, content, keepRaw) {
method delete (line 1631) | delete(sheetId) {
method constructor (line 3386) | constructor(client) {
method list (line 3389) | list(params) {
method get (line 3395) | get(sheetId, params) {
method getBySlug (line 3401) | getBySlug(slug, params) {
class SheetCommentClient (line 1651) | class SheetCommentClient {
method constructor (line 1652) | constructor(client) {
method list (line 1655) | list(params) {
method get (line 1661) | get(commentId) {
method listAsView (line 1667) | listAsView(params) {
method listAsTreeView (line 1673) | listAsTreeView(params) {
method latest (line 1679) | latest(params) {
method create (line 1685) | create(params) {
method update (line 1691) | update(commentId, params) {
method updateStatusById (line 1697) | updateStatusById(commentId, status) {
method updateStatusInBatch (line 1703) | updateStatusInBatch(commentIds, status) {
method deleteInBatch (line 1709) | deleteInBatch(commentIds) {
method delete (line 1715) | delete(commentId) {
class StaticStorageClient (line 1736) | class StaticStorageClient {
method constructor (line 1737) | constructor(client) {
method list (line 1740) | list() {
method delete (line 1746) | delete(filePath) {
method createFolder (line 1754) | createFolder(basePath, folderName) {
method upload (line 1760) | upload(file, options, basePath) {
method rename (line 1768) | rename(basePath, newName) {
method saveContent (line 1774) | saveContent(params) {
class StatisticClient (line 1794) | class StatisticClient {
method constructor (line 1795) | constructor(client) {
method statistics (line 1798) | statistics() {
method statisticsWithUser (line 1804) | statisticsWithUser() {
method constructor (line 3422) | constructor(client) {
method statistics (line 3425) | statistics() {
method statisticsWithUser (line 3431) | statisticsWithUser() {
class TagClient (line 1824) | class TagClient {
method constructor (line 1825) | constructor(client) {
method list (line 1828) | list(params) {
method create (line 1834) | create(params) {
method get (line 1840) | get(tagId) {
method update (line 1846) | update(tagId, params) {
method delete (line 1852) | delete(tagId) {
method constructor (line 3452) | constructor(client) {
method list (line 3455) | list(params) {
method listPostsBySlug (line 3461) | listPostsBySlug(slug, params) {
class ThemeClient (line 1874) | class ThemeClient {
method constructor (line 1875) | constructor(client) {
method list (line 1883) | list() {
method get (line 1895) | get(themeId) {
method delete (line 1908) | delete(themeId, deleteSettings) {
method active (line 1920) | active(themeId) {
method listConfigurationGroups (line 1931) | listConfigurationGroups(themeId) {
method listConfigurationsByGroup (line 1943) | listConfigurationsByGroup(themeId, group) {
method listActivatedConfigurations (line 1954) | listActivatedConfigurations() {
method listConfigurations (line 1966) | listConfigurations(themeId) {
method listFiles (line 1978) | listFiles(themeId) {
method listActivatedFiles (line 1989) | listActivatedFiles() {
method getActivatedTemplateContent (line 2001) | getActivatedTemplateContent(filepath) {
method getTemplateContent (line 2014) | getTemplateContent(themeId, filepath) {
method updateTemplateContent (line 2026) | updateTemplateContent(themeId, params) {
method listSettings (line 2040) | listSettings(themeId) {
method listActivatedSettings (line 2051) | listActivatedSettings() {
method listSettingsByGroup (line 2063) | listSettingsByGroup(themeId, group) {
method saveSettings (line 2075) | saveSettings(themeId, settings) {
method saveActivatedSettings (line 2088) | saveActivatedSettings(settings) {
method getActivatedTheme (line 2101) | getActivatedTheme() {
method listCustomPostTemplates (line 2112) | listCustomPostTemplates() {
method listCustomSheetTemplates (line 2123) | listCustomSheetTemplates() {
method exists (line 2135) | exists(template) {
method fetchTheme (line 2147) | fetchTheme(uri) {
method updateThemeByFetching (line 2159) | updateThemeByFetching(themeId) {
method updateActivatedTemplateContent (line 2171) | updateActivatedTemplateContent(params) {
method reload (line 2182) | reload() {
method upload (line 2195) | upload(data, options) {
method updateByUpload (line 2211) | updateByUpload(data, options, themeId) {
method constructor (line 3482) | constructor(client) {
method getProperty (line 3485) | getProperty() {
method listSettings (line 3491) | listSettings() {
method getPropertyById (line 3497) | getPropertyById(themeId) {
method listSettingsById (line 3503) | listSettingsById(themeId) {
class UserClient (line 2233) | class UserClient {
method constructor (line 2234) | constructor(client) {
method getProfile (line 2240) | getProfile() {
method updateProfile (line 2251) | updateProfile(user) {
method updatePassword (line 2257) | updatePassword(params) {
method generateMFAQrImage (line 2263) | generateMFAQrImage(params) {
method updateMFAuth (line 2269) | updateMFAuth(params) {
method constructor (line 3524) | constructor(client) {
method getProfile (line 3527) | getProfile() {
class HaloRequestConfigBuilder (line 2389) | class HaloRequestConfigBuilder {
method constructor (line 2390) | constructor({ baseUrl, auth, basicAuth, clientCertAuth, proxy, userAge...
method build (line 2398) | build(method, path, params, options) {
method buildRequestUrl (line 2436) | buildRequestUrl(path, params) {
method buildData (line 2441) | buildData(params) {
method buildHeaders (line 2454) | buildHeaders(params) {
method getRequestToken (line 2493) | getRequestToken() {
method constructor (line 3637) | constructor({ baseUrl, auth, basicAuth, clientCertAuth, proxy, userAge...
method build (line 3645) | build(method, path, params, options) {
method buildRequestUrl (line 3683) | buildRequestUrl(path, params) {
method buildData (line 3688) | buildData(params) {
method buildHeaders (line 3701) | buildHeaders(params) {
method getRequestToken (line 3740) | getRequestToken() {
class HaloResponseHandler (line 2516) | class HaloResponseHandler {
method handle (line 2517) | handle(response) {
method handleSuccessResponse (line 2520) | handleSuccessResponse(response) {
method handleErrorResponse (line 2523) | handleErrorResponse(error) {
method handle (line 3764) | handle(response) {
method handleSuccessResponse (line 3767) | handleSuccessResponse(response) {
method handleErrorResponse (line 3770) | handleErrorResponse(error) {
class HaloRestAPIClient (line 2573) | class HaloRestAPIClient {
method constructor (line 2574) | constructor(options = {}) {
method version (line 2586) | static get version() {
method interceptors (line 2589) | get interceptors() {
method getBaseUrl (line 2592) | getBaseUrl() {
method buildHttpClient (line 2595) | buildHttpClient() {
method constructor (line 3821) | constructor(options = {}) {
method version (line 3833) | static get version() {
method interceptors (line 3836) | get interceptors() {
method getBaseUrl (line 3839) | getBaseUrl() {
method buildHttpClient (line 3842) | buildHttpClient() {
class HaloRestAPIError (line 2611) | class HaloRestAPIError extends Error {
method constructor (line 2612) | constructor(error) {
method buildErrorResponseDate (line 2629) | static buildErrorResponseDate(error) {
method constructor (line 3859) | constructor(error) {
method buildErrorResponseDate (line 3876) | static buildErrorResponseDate(error) {
class AxiosClient (line 2649) | class AxiosClient {
method constructor (line 2650) | constructor({ responseHandler, requestConfigBuilder, }) {
method get (line 2658) | get(path, params) {
method getData (line 2664) | getData(path, params) {
method post (line 2672) | post(path, params, options) {
method postData (line 2678) | postData(path, formData) {
method put (line 2684) | put(path, params, options) {
method delete (line 2690) | delete(path, params, options) {
method sendRequest (line 2696) | sendRequest(requestConfig) {
method constructor (line 3897) | constructor({ responseHandler, requestConfigBuilder, }) {
method get (line 3905) | get(path, params) {
method getData (line 3911) | getData(path, params) {
method post (line 3919) | post(path, params, options) {
method postData (line 3925) | postData(path, formData) {
method put (line 3931) | put(path, params, options) {
method delete (line 3937) | delete(path, params, options) {
method sendRequest (line 3943) | sendRequest(requestConfig) {
class RequestInterceptor (line 2723) | class RequestInterceptor {
method use (line 2724) | use(resolved, rejected) {
method eject (line 2727) | eject(id) {
method use (line 3971) | use(resolved, rejected) {
method eject (line 3974) | eject(id) {
class ResponseInterceptor (line 2732) | class ResponseInterceptor {
method use (line 2733) | use(resolved, rejected) {
method eject (line 2736) | eject(id) {
method use (line 3980) | use(resolved, rejected) {
method eject (line 3983) | eject(id) {
class UnsupportedPlatformError (line 2792) | class UnsupportedPlatformError extends Error {
method constructor (line 2793) | constructor(platform) {
method constructor (line 4040) | constructor(platform) {
class ContentApiClient (line 2934) | class ContentApiClient {
method constructor (line 2935) | constructor(client) {
method archive (line 2952) | get archive() {
method category (line 2955) | get category() {
method journal (line 2958) | get journal() {
method link (line 2961) | get link() {
method menu (line 2964) | get menu() {
method option (line 2967) | get option() {
method photo (line 2970) | get photo() {
method post (line 2973) | get post() {
method sheet (line 2976) | get sheet() {
method statistic (line 2979) | get statistic() {
method tag (line 2982) | get tag() {
method theme (line 2985) | get theme() {
method user (line 2988) | get user() {
method comment (line 2991) | get comment() {
class ArchiveClient (line 3008) | class ArchiveClient {
method constructor (line 3009) | constructor(client) {
method listYearArchives (line 3012) | listYearArchives() {
method listMonthArchives (line 3018) | listMonthArchives() {
class CategoryClient (line 3038) | class CategoryClient {
method constructor (line 567) | constructor(client) {
method list (line 576) | list(params) {
method listAsTree (line 588) | listAsTree(sort) {
method get (line 600) | get(categoryId) {
method create (line 612) | create(params) {
method update (line 625) | update(categoryId, params) {
method updateInBatch (line 636) | updateInBatch(params) {
method delete (line 647) | delete(categoryId) {
method constructor (line 3039) | constructor(client) {
method list (line 3042) | list(params) {
method listPostBySlug (line 3048) | listPostBySlug(params) {
class CommentClient (line 3068) | class CommentClient {
method constructor (line 670) | constructor(client) {
method list (line 673) | list(target, params) {
method latest (line 679) | latest(target, top, status) {
method listAsView (line 685) | listAsView(target, targetId, params) {
method listAsTreeView (line 691) | listAsTreeView(target, targetId, params) {
method get (line 697) | get(target, commentId) {
method create (line 703) | create(target, params) {
method update (line 709) | update(target, commentId, params) {
method updateStatusById (line 715) | updateStatusById(target, commentId, status) {
method updateStatusInBatch (line 721) | updateStatusInBatch(target, commentIds, status) {
method delete (line 727) | delete(target, commentId) {
method deleteInBatch (line 733) | deleteInBatch(target, postCommentIds) {
method constructor (line 3069) | constructor(client) {
method listTopComments (line 3079) | listTopComments(target, targetId, params) {
method listChildren (line 3093) | listChildren(target, targetId, commentId, params) {
method listAsTreeView (line 3106) | listAsTreeView(target, targetId, params) {
method listAsView (line 3119) | listAsView(target, targetId, params) {
method create (line 3131) | create(target, params) {
class JournalClient (line 3152) | class JournalClient {
method constructor (line 785) | constructor(client) {
method list (line 794) | list(params) {
method latest (line 806) | latest(top) {
method create (line 818) | create(params) {
method update (line 831) | update(journalId, params) {
method delete (line 841) | delete(journalId) {
method constructor (line 3153) | constructor(client) {
method list (line 3156) | list() {
method get (line 3162) | get(journalId) {
method like (line 3168) | like(journalId) {
class LinkClient (line 3190) | class LinkClient {
method constructor (line 971) | constructor(client) {
method list (line 974) | list(sort) {
method create (line 980) | create(params) {
method get (line 986) | get(id) {
method update (line 992) | update(linkId, params) {
method updateInBatch (line 998) | updateInBatch(params) {
method delete (line 1004) | delete(id) {
method listTeams (line 1012) | listTeams() {
method constructor (line 3191) | constructor(client) {
method list (line 3194) | list(sort) {
method listTeams (line 3200) | listTeams(sort) {
class MenuClient (line 3220) | class MenuClient {
method constructor (line 1116) | constructor(client) {
method list (line 1119) | list() {
method create (line 1125) | create(params) {
method createInBatch (line 1131) | createInBatch(params) {
method get (line 1137) | get(menuId) {
method update (line 1143) | update(menuId, params) {
method updateInBatch (line 1149) | updateInBatch(params) {
method delete (line 1155) | delete(menuId) {
method deleteInBatch (line 1163) | deleteInBatch(menuIds) {
method listTreeViewByTeam (line 1171) | listTreeViewByTeam(team, sort) {
method listTeams (line 1177) | listTeams() {
method listTreeView (line 1183) | listTreeView(sort) {
method constructor (line 3221) | constructor(client) {
method list (line 3224) | list(sort) {
method listAsTreeView (line 3230) | listAsTreeView(sort) {
class OptionClient (line 3250) | class OptionClient {
method constructor (line 1235) | constructor(client) {
method list (line 1238) | list() {
method create (line 1244) | create(params) {
method get (line 1250) | get(id) {
method update (line 1256) | update(optionId, params) {
method delete (line 1262) | delete(optionId) {
method listAsView (line 1270) | listAsView(params) {
method listAsMapView (line 1276) | listAsMapView() {
method listAsMapViewByKeys (line 1282) | listAsMapViewByKeys(params) {
method saveMapView (line 1288) | saveMapView(params) {
method save (line 1296) | save(params) {
method constructor (line 3251) | constructor(client) {
method list (line 3254) | list() {
method listAsMapView (line 3260) | listAsMapView(key) {
method getByKey (line 3266) | getByKey(key) {
method comment (line 3272) | comment() {
class PhotoClient (line 3292) | class PhotoClient {
method constructor (line 1320) | constructor(client) {
method list (line 1323) | list(params) {
method create (line 1329) | create(params) {
method createInBatch (line 1335) | createInBatch(params) {
method get (line 1341) | get(photoId) {
method update (line 1347) | update(photoId, params) {
method updateInBatch (line 1353) | updateInBatch(params) {
method delete (line 1359) | delete(photoId) {
method deleteInBatch (line 1367) | deleteInBatch(photoIds) {
method latest (line 1373) | latest(sort) {
method listTeams (line 1379) | listTeams() {
method constructor (line 3293) | constructor(client) {
method latest (line 3296) | latest(sort) {
method list (line 3302) | list(params) {
class PostClient (line 3323) | class PostClient {
method constructor (line 1401) | constructor(client) {
method list (line 1404) | list(params) {
method get (line 1410) | get(postId) {
method getPreviewLinkById (line 1416) | getPreviewLinkById(postId) {
method latest (line 1422) | latest(top) {
method listByStatus (line 1428) | listByStatus(status, query) {
method create (line 1434) | create(params) {
method update (line 1440) | update(postId, params) {
method updateStatusById (line 1446) | updateStatusById(postId, status) {
method updateStatusInBatch (line 1452) | updateStatusInBatch(postIds, status) {
method updateDraftById (line 1458) | updateDraftById(postId, originalContent, content, keepRaw) {
method like (line 1464) | like(postId) {
method delete (line 1472) | delete(postId) {
method deleteInBatch (line 1478) | deleteInBatch(postIds) {
method constructor (line 3324) | constructor(client) {
method list (line 3327) | list(params, keyword, categoryId) {
method search (line 3333) | search(keyword, pageQuery) {
method get (line 3339) | get(postId, params) {
method getBySlug (line 3345) | getBySlug(slug, params) {
method getPrevPostById (line 3351) | getPrevPostById(postId) {
method getNextPostById (line 3357) | getNextPostById(postId) {
method like (line 3363) | like(postId) {
class SheetClient (line 3385) | class SheetClient {
method constructor (line 1578) | constructor(client) {
method list (line 1581) | list(params) {
method listIndependents (line 1587) | listIndependents() {
method create (line 1593) | create(params) {
method get (line 1599) | get(sheetId) {
method getPreviewLinkById (line 1605) | getPreviewLinkById(sheetId) {
method update (line 1611) | update(sheetId, params) {
method updateStatusById (line 1617) | updateStatusById(sheetId, status) {
method updateDraftById (line 1625) | updateDraftById(sheetId, originalContent, content, keepRaw) {
method delete (line 1631) | delete(sheetId) {
method constructor (line 3386) | constructor(client) {
method list (line 3389) | list(params) {
method get (line 3395) | get(sheetId, params) {
method getBySlug (line 3401) | getBySlug(slug, params) {
class StatisticClient (line 3421) | class StatisticClient {
method constructor (line 1795) | constructor(client) {
method statistics (line 1798) | statistics() {
method statisticsWithUser (line 1804) | statisticsWithUser() {
method constructor (line 3422) | constructor(client) {
method statistics (line 3425) | statistics() {
method statisticsWithUser (line 3431) | statisticsWithUser() {
class TagClient (line 3451) | class TagClient {
method constructor (line 1825) | constructor(client) {
method list (line 1828) | list(params) {
method create (line 1834) | create(params) {
method get (line 1840) | get(tagId) {
method update (line 1846) | update(tagId, params) {
method delete (line 1852) | delete(tagId) {
method constructor (line 3452) | constructor(client) {
method list (line 3455) | list(params) {
method listPostsBySlug (line 3461) | listPostsBySlug(slug, params) {
class ThemeClient (line 3481) | class ThemeClient {
method constructor (line 1875) | constructor(client) {
method list (line 1883) | list() {
method get (line 1895) | get(themeId) {
method delete (line 1908) | delete(themeId, deleteSettings) {
method active (line 1920) | active(themeId) {
method listConfigurationGroups (line 1931) | listConfigurationGroups(themeId) {
method listConfigurationsByGroup (line 1943) | listConfigurationsByGroup(themeId, group) {
method listActivatedConfigurations (line 1954) | listActivatedConfigurations() {
method listConfigurations (line 1966) | listConfigurations(themeId) {
method listFiles (line 1978) | listFiles(themeId) {
method listActivatedFiles (line 1989) | listActivatedFiles() {
method getActivatedTemplateContent (line 2001) | getActivatedTemplateContent(filepath) {
method getTemplateContent (line 2014) | getTemplateContent(themeId, filepath) {
method updateTemplateContent (line 2026) | updateTemplateContent(themeId, params) {
method listSettings (line 2040) | listSettings(themeId) {
method listActivatedSettings (line 2051) | listActivatedSettings() {
method listSettingsByGroup (line 2063) | listSettingsByGroup(themeId, group) {
method saveSettings (line 2075) | saveSettings(themeId, settings) {
method saveActivatedSettings (line 2088) | saveActivatedSettings(settings) {
method getActivatedTheme (line 2101) | getActivatedTheme() {
method listCustomPostTemplates (line 2112) | listCustomPostTemplates() {
method listCustomSheetTemplates (line 2123) | listCustomSheetTemplates() {
method exists (line 2135) | exists(template) {
method fetchTheme (line 2147) | fetchTheme(uri) {
method updateThemeByFetching (line 2159) | updateThemeByFetching(themeId) {
method updateActivatedTemplateContent (line 2171) | updateActivatedTemplateContent(params) {
method reload (line 2182) | reload() {
method upload (line 2195) | upload(data, options) {
method updateByUpload (line 2211) | updateByUpload(data, options, themeId) {
method constructor (line 3482) | constructor(client) {
method getProperty (line 3485) | getProperty() {
method listSettings (line 3491) | listSettings() {
method getPropertyById (line 3497) | getPropertyById(themeId) {
method listSettingsById (line 3503) | listSettingsById(themeId) {
class UserClient (line 3523) | class UserClient {
method constructor (line 2234) | constructor(client) {
method getProfile (line 2240) | getProfile() {
method updateProfile (line 2251) | updateProfile(user) {
method updatePassword (line 2257) | updatePassword(params) {
method generateMFAQrImage (line 2263) | generateMFAQrImage(params) {
method updateMFAuth (line 2269) | updateMFAuth(params) {
method constructor (line 3524) | constructor(client) {
method getProfile (line 3527) | getProfile() {
class HaloRequestConfigBuilder (line 3636) | class HaloRequestConfigBuilder {
method constructor (line 2390) | constructor({ baseUrl, auth, basicAuth, clientCertAuth, proxy, userAge...
method build (line 2398) | build(method, path, params, options) {
method buildRequestUrl (line 2436) | buildRequestUrl(path, params) {
method buildData (line 2441) | buildData(params) {
method buildHeaders (line 2454) | buildHeaders(params) {
method getRequestToken (line 2493) | getRequestToken() {
method constructor (line 3637) | constructor({ baseUrl, auth, basicAuth, clientCertAuth, proxy, userAge...
method build (line 3645) | build(method, path, params, options) {
method buildRequestUrl (line 3683) | buildRequestUrl(path, params) {
method buildData (line 3688) | buildData(params) {
method buildHeaders (line 3701) | buildHeaders(params) {
method getRequestToken (line 3740) | getRequestToken() {
class HaloResponseHandler (line 3763) | class HaloResponseHandler {
method handle (line 2517) | handle(response) {
method handleSuccessResponse (line 2520) | handleSuccessResponse(response) {
method handleErrorResponse (line 2523) | handleErrorResponse(error) {
method handle (line 3764) | handle(response) {
method handleSuccessResponse (line 3767) | handleSuccessResponse(response) {
method handleErrorResponse (line 3770) | handleErrorResponse(error) {
class HaloRestAPIClient (line 3820) | class HaloRestAPIClient {
method constructor (line 2574) | constructor(options = {}) {
method version (line 2586) | static get version() {
method interceptors (line 2589) | get interceptors() {
method getBaseUrl (line 2592) | getBaseUrl() {
method buildHttpClient (line 2595) | buildHttpClient() {
method constructor (line 3821) | constructor(options = {}) {
method version (line 3833) | static get version() {
method interceptors (line 3836) | get interceptors() {
method getBaseUrl (line 3839) | getBaseUrl() {
method buildHttpClient (line 3842) | buildHttpClient() {
class HaloRestAPIError (line 3858) | class HaloRestAPIError extends Error {
method constructor (line 2612) | constructor(error) {
method buildErrorResponseDate (line 2629) | static buildErrorResponseDate(error) {
method constructor (line 3859) | constructor(error) {
method buildErrorResponseDate (line 3876) | static buildErrorResponseDate(error) {
class AxiosClient (line 3896) | class AxiosClient {
method constructor (line 2650) | constructor({ responseHandler, requestConfigBuilder, }) {
method get (line 2658) | get(path, params) {
method getData (line 2664) | getData(path, params) {
method post (line 2672) | post(path, params, options) {
method postData (line 2678) | postData(path, formData) {
method put (line 2684) | put(path, params, options) {
method delete (line 2690) | delete(path, params, options) {
method sendRequest (line 2696) | sendRequest(requestConfig) {
method constructor (line 3897) | constructor({ responseHandler, requestConfigBuilder, }) {
method get (line 3905) | get(path, params) {
method getData (line 3911) | getData(path, params) {
method post (line 3919) | post(path, params, options) {
method postData (line 3925) | postData(path, formData) {
method put (line 3931) | put(path, params, options) {
method delete (line 3937) | delete(path, params, options) {
method sendRequest (line 3943) | sendRequest(requestConfig) {
class RequestInterceptor (line 3970) | class RequestInterceptor {
method use (line 2724) | use(resolved, rejected) {
method eject (line 2727) | eject(id) {
method use (line 3971) | use(resolved, rejected) {
method eject (line 3974) | eject(id) {
class ResponseInterceptor (line 3979) | class ResponseInterceptor {
method use (line 2733) | use(resolved, rejected) {
method eject (line 2736) | eject(id) {
method use (line 3980) | use(resolved, rejected) {
method eject (line 3983) | eject(id) {
class UnsupportedPlatformError (line 4039) | class UnsupportedPlatformError extends Error {
method constructor (line 2793) | constructor(platform) {
method constructor (line 4040) | constructor(platform) {
function getCurrentScript (line 4190) | function getCurrentScript () {
function assign (line 4387) | function assign(ta) {
function destroy (line 4561) | function destroy(ta) {
function update (line 4568) | function update(ta) {
function done (line 4647) | function done() {
function onloadend (line 4676) | function onloadend() {
function createInstance (line 4862) | function createInstance(defaultConfig) {
function Cancel (line 4921) | function Cancel(message) {
function CancelToken (line 4950) | function CancelToken(executor) {
function Axios (line 5095) | function Axios(instanceConfig) {
function InterceptorManager (line 5240) | function InterceptorManager() {
function throwIfCancellationRequested (line 5363) | function throwIfCancellationRequested(config) {
function getMergedValue (line 5515) | function getMergedValue(target, source) {
function mergeDeepProperties (line 5527) | function mergeDeepProperties(prop) {
function valueFromConfig2 (line 5536) | function valueFromConfig2(prop) {
function defaultToConfig2 (line 5543) | function defaultToConfig2(prop) {
function mergeDirectKeys (line 5552) | function mergeDirectKeys(prop) {
function setContentTypeIfUnset (line 5678) | function setContentTypeIfUnset(headers, value) {
function getDefaultAdapter (line 5684) | function getDefaultAdapter() {
function stringifySafely (line 5696) | function stringifySafely(rawValue, parser, encoder) {
function encode (line 5842) | function encode(val) {
function resolveURL (line 6060) | function resolveURL(url) {
function formatMessage (line 6255) | function formatMessage(opt, desc) {
function assertOptions (line 6287) | function assertOptions(options, schema, allowUnknown) {
function isArray (line 6336) | function isArray(val) {
function isUndefined (line 6346) | function isUndefined(val) {
function isBuffer (line 6356) | function isBuffer(val) {
function isArrayBuffer (line 6367) | function isArrayBuffer(val) {
function isFormData (line 6377) | function isFormData(val) {
function isArrayBufferView (line 6387) | function isArrayBufferView(val) {
function isString (line 6403) | function isString(val) {
function isNumber (line 6413) | function isNumber(val) {
function isObject (line 6423) | function isObject(val) {
function isPlainObject (line 6433) | function isPlainObject(val) {
function isDate (line 6448) | function isDate(val) {
function isFile (line 6458) | function isFile(val) {
function isBlob (line 6468) | function isBlob(val) {
function isFunction (line 6478) | function isFunction(val) {
function isStream (line 6488) | function isStream(val) {
function isURLSearchParams (line 6498) | function isURLSearchParams(val) {
function trim (line 6508) | function trim(str) {
function isStandardBrowserEnv (line 6527) | function isStandardBrowserEnv() {
function forEach (line 6551) | function forEach(obj, fn) {
function merge (line 6595) | function merge(/* obj1, obj2, obj3, ... */) {
function extend (line 6623) | function extend(a, b, thisArg) {
function stripBOM (line 6640) | function stripBOM(content) {
function isBuffer (line 9564) | function isBuffer (obj) {
function isSlowBuffer (line 9569) | function isSlowBuffer (obj) {
function addNumericSeparator (line 10102) | function addNumericSeparator(num, str) {
function inspect (line 10198) | function inspect(value, from, noIndent) {
function wrapQuotes (line 10309) | function wrapQuotes(s, defaultStyle, opts) {
function quote (line 10314) | function quote(s) {
function isArray (line 10318) | function isArray(obj) { return toStr(obj) === '[object Array]' && (!toSt...
function isDate (line 10319) | function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStri...
function isRegExp (line 10320) | function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!to...
function isError (line 10321) | function isError(obj) { return toStr(obj) === '[object Error]' && (!toSt...
function isString (line 10322) | function isString(obj) { return toStr(obj) === '[object String]' && (!to...
function isNumber (line 10323) | function isNumber(obj) { return toStr(obj) === '[object Number]' && (!to...
function isBoolean (line 10324) | function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!...
function isSymbol (line 10327) | function isSymbol(obj) {
function isBigInt (line 10344) | function isBigInt(obj) {
function has (line 10356) | function has(obj, key) {
function toStr (line 10360) | function toStr(obj) {
function nameOf (line 10364) | function nameOf(f) {
function indexOf (line 10371) | function indexOf(xs, x) {
function isMap (line 10379) | function isMap(x) {
function isWeakMap (line 10395) | function isWeakMap(x) {
function isWeakRef (line 10411) | function isWeakRef(x) {
function isSet (line 10422) | function isSet(x) {
function isWeakSet (line 10438) | function isWeakSet(x) {
function isElement (line 10454) | function isElement(x) {
function inspectString (line 10462) | function inspectString(str, opts) {
function lowbyte (line 10473) | function lowbyte(c) {
function markBoxed (line 10486) | function markBoxed(str) {
function weakCollectionOf (line 10490) | function weakCollectionOf(type) {
function collectionOf (line 10494) | function collectionOf(type, size, entries, indent) {
function singleLineValues (line 10499) | function singleLineValues(xs) {
function getIndent (line 10508) | function getIndent(opts, depth) {
function indentedJoin (line 10523) | function indentedJoin(xs, indent) {
function arrObjKeys (line 10529) | function arrObjKeys(obj, inspect) {
class Emoji (line 11614) | class Emoji {
method constructor (line 11615) | constructor(name, fileName) {
function __extends (line 11682) | function __extends(d, b) {
function __rest (line 11701) | function __rest(s, e) {
function __decorate (line 11713) | function __decorate(decorators, target, key, desc) {
function __param (line 11720) | function __param(paramIndex, decorator) {
function __metadata (line 11724) | function __metadata(metadataKey, metadataValue) {
function __awaiter (line 11728) | function __awaiter(thisArg, _arguments, P, generator) {
function __generator (line 11738) | function __generator(thisArg, body) {
function __exportStar (line 11778) | function __exportStar(m, o) {
function __values (line 11782) | function __values(o) {
function __read (line 11794) | function __read(o, n) {
function __spread (line 11812) | function __spread() {
function __spreadArrays (line 11819) | function __spreadArrays() {
function __spreadArray (line 11827) | function __spreadArray(to, from, pack) {
function __await (line 11837) | function __await(v) {
function __asyncGenerator (line 11841) | function __asyncGenerator(thisArg, _arguments, generator) {
function __asyncDelegator (line 11853) | function __asyncDelegator(o) {
function __asyncValues (line 11859) | function __asyncValues(o) {
function __makeTemplateObject (line 11867) | function __makeTemplateObject(cooked, raw) {
function __importStar (line 11878) | function __importStar(mod) {
function __importDefault (line 11886) | function __importDefault(mod) {
function __classPrivateFieldGet (line 11890) | function __classPrivateFieldGet(receiver, state, kind, f) {
function __classPrivateFieldSet (line 11896) | function __classPrivateFieldSet(receiver, state, value, kind, f) {
function __classPrivateFieldIn (line 11903) | function __classPrivateFieldIn(state, receiver) {
function listToStyles (line 12898) | function listToStyles (parentId, list) {
function addStylesToShadowDOM (line 12925) | function addStylesToShadowDOM (parentId, list, shadowRoot) {
function addStyles (line 12943) | function addStyles (styles /* Array<StyleObject> */, shadowRoot) {
function createStyleElement (line 12959) | function createStyleElement (shadowRoot) {
function addStyle (line 12966) | function addStyle (obj /* StyleObjectPart */, shadowRoot) {
function __webpack_require__ (line 13010) | function __webpack_require__(moduleId) {
function getInitialProps (line 13138) | function getInitialProps (propsList) {
function injectHook (line 13146) | function injectHook (options, key, hook) {
function callHooks (line 13151) | function callHooks (vm, hook) {
function createCustomEvent (line 13160) | function createCustomEvent (name, args) {
function convertAttributeValue (line 13171) | function convertAttributeValue (value, name, { type } = {}) {
function toVNodes (line 13188) | function toVNodes (h, children) {
function toVNode (line 13196) | function toVNode (h, node) {
function getAttributes (line 13216) | function getAttributes (node) {
function wrap (line 13225) | function wrap (Vue, Component) {
function getDefaults (line 13415) | function getDefaults() {
function changeDefaults (line 13441) | function changeDefaults(newDefaults) {
function marked_esm_escape (line 13460) | function marked_esm_escape(html, encode) {
function marked_esm_unescape (line 13479) | function marked_esm_unescape(html) {
function edit (line 13499) | function edit(regex, opt) {
function cleanUrl (line 13524) | function cleanUrl(sanitize, base, href) {
function resolveUrl (line 13558) | function resolveUrl(base, href) {
function merge (line 13589) | function merge(obj) {
function splitCells (line 13606) | function splitCells(tableRow, count) {
function rtrim (line 13650) | function rtrim(str, c, invert) {
function findClosingBracket (line 13674) | function findClosingBracket(str, b) {
function checkSanitizeDeprecation (line 13696) | function checkSanitizeDeprecation(opt) {
function repeatString (line 13707) | function repeatString(pattern, count) {
function outputLink (line 13722) | function outputLink(cap, link, raw, lexer) {
function indentCodeCompensation (line 13749) | function indentCodeCompensation(raw, text) {
class Tokenizer (line 13780) | class Tokenizer {
method constructor (line 13781) | constructor(options) {
method space (line 13785) | space(src) {
method code (line 13795) | code(src) {
method fences (line 13810) | fences(src) {
method heading (line 13825) | heading(src) {
method hr (line 13853) | hr(src) {
method blockquote (line 13863) | blockquote(src) {
method list (line 13877) | list(src) {
method html (line 14048) | html(src) {
method def (line 14068) | def(src) {
method table (line 14083) | table(src) {
method lheading (line 14139) | lheading(src) {
method paragraph (line 14154) | paragraph(src) {
method text (line 14170) | text(src) {
method escape (line 14184) | escape(src) {
method tag (line 14195) | tag(src) {
method link (line 14225) | link(src) {
method reflink (line 14281) | reflink(src, links) {
method emStrong (line 14299) | emStrong(src, maskedSrc, prevChar = '') {
method codespan (line 14365) | codespan(src) {
method br (line 14383) | br(src) {
method del (line 14393) | del(src) {
method autolink (line 14405) | autolink(src, mangle) {
method url (line 14433) | url(src, mangle) {
method inlineText (line 14470) | inlineText(src, smartypants) {
function smartypants (line 14789) | function smartypants(text) {
function mangle (line 14811) | function mangle(text) {
class Lexer (line 14831) | class Lexer {
method constructor (line 14832) | constructor(options) {
method rules (line 14869) | static get rules() {
method lex (line 14879) | static lex(src, options) {
method lexInline (line 14887) | static lexInline(src, options) {
method lex (line 14895) | lex(src) {
method blockTokens (line 14912) | blockTokens(src, tokens = []) {
method inline (line 15098) | inline(src, tokens) {
method inlineTokens (line 15105) | inlineTokens(src, tokens = []) {
class Renderer (line 15285) | class Renderer {
method constructor (line 15286) | constructor(options) {
method code (line 15290) | code(code, infostring, escaped) {
method blockquote (line 15319) | blockquote(quote) {
method html (line 15323) | html(html) {
method heading (line 15333) | heading(text, level, raw, slugger) {
method hr (line 15343) | hr() {
method list (line 15347) | list(body, ordered, start) {
method listitem (line 15356) | listitem(text) {
method checkbox (line 15360) | checkbox(checked) {
method paragraph (line 15371) | paragraph(text) {
method table (line 15379) | table(header, body) {
method tablerow (line 15393) | tablerow(content) {
method tablecell (line 15397) | tablecell(content, flags) {
method strong (line 15409) | strong(text) {
method em (line 15416) | em(text) {
method codespan (line 15423) | codespan(text) {
method br (line 15427) | br() {
method del (line 15434) | del(text) {
method link (line 15443) | link(href, title, text) {
method image (line 15461) | image(href, title, text) {
method text (line 15475) | text(text) {
class TextRenderer (line 15484) | class TextRenderer {
method strong (line 15486) | strong(text) {
method em (line 15490) | em(text) {
method codespan (line 15494) | codespan(text) {
method del (line 15498) | del(text) {
method html (line 15502) | html(text) {
method text (line 15506) | text(text) {
method link (line 15510) | link(href, title, text) {
method image (line 15514) | image(href, title, text) {
method br (line 15518) | br() {
class Slugger (line 15526) | class Slugger {
method constructor (line 15527) | constructor() {
method serialize (line 15534) | serialize(value) {
method getNextSafeSlug (line 15550) | getNextSafeSlug(originalSlug, isDryRun) {
method slug (line 15573) | slug(value, options = {}) {
class Parser (line 15582) | class Parser {
method constructor (line 15583) | constructor(options) {
method parse (line 15595) | static parse(tokens, options) {
method parseInline (line 15603) | static parseInline(tokens, options) {
method parse (line 15611) | parse(tokens, top = true) {
method parseInline (line 15782) | parseInline(tokens, renderer) {
function marked (line 15861) | function marked(src, opt, callback) {
function timeAgo (line 16207) | function timeAgo(time) {
function formatDate (line 16241) | function formatDate(date, fmt) {
function padLeftZero (line 16266) | function padLeftZero(str) {
function isUrl (line 16271) | function isUrl(str) {
function isEmpty (line 16275) | function isEmpty(content) {
function isObject (line 16278) | function isObject(value) {
function validEmail (line 16281) | function validEmail(email) {
function isQQMail (line 16285) | function isQQMail(mail) {
function isQQ (line 16289) | function isQQ(qq) {
function qqMailToQQ (line 16293) | function qqMailToQQ(mail) {
function getUrlKey (line 16299) | function getUrlKey(name) {
function animateScroll (line 16310) | function animateScroll(element, time, headingsOffset, callback) {
function decodeHtml (line 16339) | function decodeHtml(text, encode) {
function encodeHtml (line 16356) | function encodeHtml(html, encode) {
function buildSummary (line 16375) | function buildSummary(html) {
function buildRandomNum (line 16395) | function buildRandomNum(minNum = 0, maxNum = 1) {
function buildNickName (line 16403) | function buildNickName() {
method dreamSrc (line 16543) | dreamSrc() {
function normalizeComponent (line 16558) | function normalizeComponent (
method onSelect (line 16690) | onSelect(emoji) {
method data (line 16696) | data() {
function injectStyles (line 16708) | function injectStyles (context) {
method onSelectEmoji (line 16750) | onSelectEmoji(data) {
function renderedEmojiHtml (line 16781) | function renderedEmojiHtml(html) {
method handleAvatarLoading (line 16825) | handleAvatarLoading(e) {
method handleAvatarError (line 16834) | handleAvatarError(e) {
method click (line 16841) | click() {
method data (line 17062) | data() {
method renderedContent (line 17084) | renderedContent() {
method avatar (line 17088) | avatar() {
method infoAlertVisible (line 17101) | infoAlertVisible() {
method warningAlertVisible (line 17105) | warningAlertVisible() {
method successAlertVisible (line 17109) | successAlertVisible() {
method created (line 17115) | created() {
method activated (line 17125) | activated() {
method randomAuthor (line 17130) | randomAuthor() {
method isEmail (line 17134) | isEmail() {
method handleQQInfo (line 17138) | handleQQInfo() {
method handleSubmitClick (line 17152) | handleSubmitClick() {
method handleCommentCreated (line 17211) | handleCommentCreated(createdComment) {
method handleFailedToCreateComment (line 17222) | handleFailedToCreateComment(response) {
method handleToggleDialogEmoji (line 17242) | handleToggleDialogEmoji() {
method handleImageUpload (line 17246) | handleImageUpload() {
method handleSelectEmoji (line 17287) | handleSelectEmoji(emoji) {
method clearAlertClose (line 17291) | clearAlertClose() {
method data (line 17501) | data() {
method avatar (line 17510) | avatar() {
method compileContent (line 17520) | compileContent() {
method createTimeAgo (line 17524) | createTimeAgo() {
method compileUserAgent (line 17528) | compileUserAgent() {
method commentClass (line 17535) | commentClass() {
method handleToCommentRef (line 17542) | handleToCommentRef() {
method handleCreateComment (line 17554) | handleCreateComment() {
method handleHighlightParent (line 17571) | handleHighlightParent(highlight) {
method handleUpdateCommentStatus (line 17586) | handleUpdateCommentStatus(status) {
method handleDeleteComment (line 17595) | handleDeleteComment() {
method handleFailedToOperationComment (line 17604) | handleFailedToOperationComment(response) {
function CommentLoading_injectStyles (line 17677) | function CommentLoading_injectStyles (context) {
method data (line 17772) | data() {
method pages (line 17779) | pages() {
method hasNext (line 17783) | hasNext() {
method hasPrev (line 17787) | hasPrev() {
method firstPage (line 17791) | firstPage() {
method hasMorePrev (line 17799) | hasMorePrev() {
method hasMoreNext (line 17807) | hasMoreNext() {
method middlePages (line 17815) | middlePages() {
method lastPage (line 17839) | lastPage() {
method handleNextClick (line 17849) | handleNextClick() {
method handlePrevClick (line 17855) | handlePrevClick() {
method handlePageItemClick (line 17861) | handlePageItemClick(page) {
method range (line 17865) | range(left, right) {
function Pagination_injectStyles (line 17887) | function Pagination_injectStyles (context) {
method data (line 17970) | data() {
method created (line 18006) | created() {
method handleMouseleave (line 18015) | handleMouseleave(comment) {
method createTimeAgo (line 18021) | createTimeAgo(createTime) {
method avatar (line 18026) | avatar(comment) {
method handleGetComments (line 18037) | async handleGetComments() {
method bulletScreenAnimate (line 18073) | bulletScreenAnimate() {
function BulletScreen_injectStyles (line 18147) | function BulletScreen_injectStyles (context) {
method listitem (line 18191) | listitem(text, task) {
method image (line 18195) | image(href, title, text) {
method link (line 18199) | link(href, title, text) {
method data (line 18324) | data() {
method target (line 18344) | target() {
method mergedConfigs (line 18349) | mergedConfigs() {
method created (line 18362) | created() {
method handleGetComments (line 18371) | async handleGetComments() {
method handleGetOptions (line 18386) | async handleGetOptions() {
method flatReplyList (line 18412) | flatReplyList(comments) {
method handleReplyList (line 18443) | handleReplyList(reply, no = 0) {
method handlePaginationChange (line 18449) | handlePaginationChange(page) {
function Commentshadow_injectStyles (line 18462) | function Commentshadow_injectStyles (context) {
FILE: source/lib/highlightjs@11.5.1/es/core.js
function deepFreeze (line 8) | function deepFreeze(obj) {
class Response (line 43) | class Response {
method constructor (line 47) | constructor(mode) {
method ignoreMatch (line 55) | ignoreMatch() {
function escapeHTML (line 64) | function escapeHTML(value) {
function inherit$1 (line 81) | function inherit$1(original, ...objects) {
constant SPAN_CLOSE (line 108) | const SPAN_CLOSE = '</span>';
class HTMLRenderer (line 135) | class HTMLRenderer {
method constructor (line 142) | constructor(parseTree, options) {
method addText (line 152) | addText(text) {
method openNode (line 160) | openNode(node) {
method closeNode (line 176) | closeNode(node) {
method value (line 185) | value() {
method span (line 195) | span(className) {
class TokenTree (line 205) | class TokenTree {
method constructor (line 206) | constructor() {
method top (line 212) | get top() {
method root (line 216) | get root() { return this.rootNode; }
method add (line 219) | add(node) {
method openNode (line 224) | openNode(kind) {
method closeNode (line 231) | closeNode() {
method closeAllNodes (line 239) | closeAllNodes() {
method toJSON (line 243) | toJSON() {
method walk (line 251) | walk(builder) {
method _walk (line 262) | static _walk(builder, node) {
method _collapse (line 276) | static _collapse(node) {
class TokenTreeEmitter (line 312) | class TokenTreeEmitter extends TokenTree {
method constructor (line 316) | constructor(options) {
method addKeyword (line 325) | addKeyword(text, kind) {
method addText (line 336) | addText(text) {
method addSublanguage (line 346) | addSublanguage(emitter, name) {
method toHTML (line 354) | toHTML() {
method finalize (line 359) | finalize() {
function source (line 373) | function source(re) {
function lookahead (line 384) | function lookahead(re) {
function anyNumberOfTimes (line 392) | function anyNumberOfTimes(re) {
function optional (line 400) | function optional(re) {
function concat (line 408) | function concat(...args) {
function stripOptionsFromArgs (line 417) | function stripOptionsFromArgs(args) {
function either (line 437) | function either(...args) {
function countMatchGroups (line 450) | function countMatchGroups(re) {
function startsWith (line 459) | function startsWith(re, lexeme) {
constant BACKREF_RE (line 471) | const BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
function _rewriteBackreferences (line 484) | function _rewriteBackreferences(regexps, { joinWith }) {
constant MATCH_NOTHING_RE (line 519) | const MATCH_NOTHING_RE = /\b\B/;
constant IDENT_RE (line 520) | const IDENT_RE = '[a-zA-Z]\\w*';
constant UNDERSCORE_IDENT_RE (line 521) | const UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*';
constant NUMBER_RE (line 522) | const NUMBER_RE = '\\b\\d+(\\.\\d+)?';
constant C_NUMBER_RE (line 523) | const C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d...
constant BINARY_NUMBER_RE (line 524) | const BINARY_NUMBER_RE = '\\b(0b[01]+)';
constant RE_STARTERS_RE (line 525) | const RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/...
constant BACKSLASH_ESCAPE (line 552) | const BACKSLASH_ESCAPE = {
constant APOS_STRING_MODE (line 555) | const APOS_STRING_MODE = {
constant QUOTE_STRING_MODE (line 562) | const QUOTE_STRING_MODE = {
constant PHRASAL_WORDS_MODE (line 569) | const PHRASAL_WORDS_MODE = {
constant C_LINE_COMMENT_MODE (line 645) | const C_LINE_COMMENT_MODE = COMMENT('//', '$');
constant C_BLOCK_COMMENT_MODE (line 646) | const C_BLOCK_COMMENT_MODE = COMMENT('/\\*', '\\*/');
constant HASH_COMMENT_MODE (line 647) | const HASH_COMMENT_MODE = COMMENT('#', '$');
constant NUMBER_MODE (line 648) | const NUMBER_MODE = {
constant C_NUMBER_MODE (line 653) | const C_NUMBER_MODE = {
constant BINARY_NUMBER_MODE (line 658) | const BINARY_NUMBER_MODE = {
constant REGEXP_MODE (line 663) | const REGEXP_MODE = {
constant TITLE_MODE (line 687) | const TITLE_MODE = {
constant UNDERSCORE_TITLE_MODE (line 692) | const UNDERSCORE_TITLE_MODE = {
constant METHOD_GUARD (line 697) | const METHOD_GUARD = {
function skipIfHasPrecedingDot (line 777) | function skipIfHasPrecedingDot(match, response) {
function scopeClassName (line 788) | function scopeClassName(mode, _parent) {
function beginKeywords (line 800) | function beginKeywords(mode, parent) {
function compileIllegal (line 824) | function compileIllegal(mode, _parent) {
function compileMatch (line 834) | function compileMatch(mode, _parent) {
function compileRelevance (line 846) | function compileRelevance(mode, _parent) {
constant COMMON_KEYWORDS (line 876) | const COMMON_KEYWORDS = [
constant DEFAULT_KEYWORD_SCOPE (line 890) | const DEFAULT_KEYWORD_SCOPE = "keyword";
function compileKeywords (line 898) | function compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAU...
function scoreForKeyword (line 948) | function scoreForKeyword(keyword, providedScore) {
function commonKeyword (line 962) | function commonKeyword(keyword) {
function remapScopeNames (line 1040) | function remapScopeNames(mode, regexes, { key }) {
function beginMultiClass (line 1063) | function beginMultiClass(mode) {
function endMultiClass (line 1083) | function endMultiClass(mode) {
function scopeSugar (line 1111) | function scopeSugar(mode) {
function MultiClass (line 1121) | function MultiClass(mode) {
function compileLanguage (line 1153) | function compileLanguage(language) {
function dependencyOnParent (line 1512) | function dependencyOnParent(mode) {
function expandOrCloneMode (line 1528) | function expandOrCloneMode(mode) {
class HTMLInjectionError (line 1560) | class HTMLInjectionError extends Error {
method constructor (line 1561) | constructor(reason, html) {
constant NO_MATCH (line 1597) | const NO_MATCH = Symbol("nomatch");
constant MAX_KEYWORD_HITS (line 1598) | const MAX_KEYWORD_HITS = 7;
function shouldNotHighlight (line 1642) | function shouldNotHighlight(languageName) {
function blockLanguage (line 1649) | function blockLanguage(block) {
function highlight (line 1691) | function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {
function _highlight (line 1741) | function _highlight(languageName, codeToHighlight, ignoreIllegals, conti...
function justTextHighlightResult (line 2190) | function justTextHighlightResult(code) {
function highlightAuto (line 2216) | function highlightAuto(code, languageSubset) {
function updateClassName (line 2262) | function updateClassName(element, currentLang, resultLang) {
function highlightElement (line 2274) | function highlightElement(element) {
function configure (line 2332) | function configure(userOptions) {
function initHighlightingOnLoad (line 2343) | function initHighlightingOnLoad() {
function highlightAll (line 2353) | function highlightAll() {
function boot (line 2364) | function boot() {
function registerLanguage (line 2380) | function registerLanguage(languageName, languageDefinition) {
function unregisterLanguage (line 2409) | function unregisterLanguage(languageName) {
function listLanguages (line 2421) | function listLanguages() {
function getLanguage (line 2429) | function getLanguage(name) {
function registerAliases (line 2439) | function registerAliases(aliasList, { languageName }) {
function autoDetection (line 2450) | function autoDetection(name) {
function upgradePluginAPI (line 2460) | function upgradePluginAPI(plugin) {
function addPlugin (line 2481) | function addPlugin(plugin) {
function fire (line 2491) | function fire(event, args) {
function deprecateHighlightBlock (line 2504) | function deprecateHighlightBlock(el) {
FILE: source/lib/highlightjs@11.5.1/es/highlight.js
function deepFreeze (line 8) | function deepFreeze(obj) {
class Response (line 43) | class Response {
method constructor (line 47) | constructor(mode) {
method ignoreMatch (line 55) | ignoreMatch() {
function escapeHTML (line 64) | function escapeHTML(value) {
function inherit$1 (line 81) | function inherit$1(original, ...objects) {
constant SPAN_CLOSE (line 108) | const SPAN_CLOSE = '</span>';
class HTMLRenderer (line 135) | class HTMLRenderer {
method constructor (line 142) | constructor(parseTree, options) {
method addText (line 152) | addText(text) {
method openNode (line 160) | openNode(node) {
method closeNode (line 176) | closeNode(node) {
method value (line 185) | value() {
method span (line 195) | span(className) {
class TokenTree (line 205) | class TokenTree {
method constructor (line 206) | constructor() {
method top (line 212) | get top() {
method root (line 216) | get root() { return this.rootNode; }
method add (line 219) | add(node) {
method openNode (line 224) | openNode(kind) {
method closeNode (line 231) | closeNode() {
method closeAllNodes (line 239) | closeAllNodes() {
method toJSON (line 243) | toJSON() {
method walk (line 251) | walk(builder) {
method _walk (line 262) | static _walk(builder, node) {
method _collapse (line 276) | static _collapse(node) {
class TokenTreeEmitter (line 312) | class TokenTreeEmitter extends TokenTree {
method constructor (line 316) | constructor(options) {
method addKeyword (line 325) | addKeyword(text, kind) {
method addText (line 336) | addText(text) {
method addSublanguage (line 346) | addSublanguage(emitter, name) {
method toHTML (line 354) | toHTML() {
method finalize (line 359) | finalize() {
function source (line 373) | function source(re) {
function lookahead (line 384) | function lookahead(re) {
function anyNumberOfTimes (line 392) | function anyNumberOfTimes(re) {
function optional (line 400) | function optional(re) {
function concat (line 408) | function concat(...args) {
function stripOptionsFromArgs (line 417) | function stripOptionsFromArgs(args) {
function either (line 437) | function either(...args) {
function countMatchGroups (line 450) | function countMatchGroups(re) {
function startsWith (line 459) | function startsWith(re, lexeme) {
constant BACKREF_RE (line 471) | const BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
function _rewriteBackreferences (line 484) | function _rewriteBackreferences(regexps, { joinWith }) {
constant MATCH_NOTHING_RE (line 519) | const MATCH_NOTHING_RE = /\b\B/;
constant UNDERSCORE_IDENT_RE (line 521) | const UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*';
constant NUMBER_RE (line 522) | const NUMBER_RE = '\\b\\d+(\\.\\d+)?';
constant C_NUMBER_RE (line 523) | const C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d...
constant BINARY_NUMBER_RE (line 524) | const BINARY_NUMBER_RE = '\\b(0b[01]+)';
constant RE_STARTERS_RE (line 525) | const RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/...
constant BACKSLASH_ESCAPE (line 552) | const BACKSLASH_ESCAPE = {
constant APOS_STRING_MODE (line 555) | const APOS_STRING_MODE = {
constant QUOTE_STRING_MODE (line 562) | const QUOTE_STRING_MODE = {
constant PHRASAL_WORDS_MODE (line 569) | const PHRASAL_WORDS_MODE = {
constant C_LINE_COMMENT_MODE (line 645) | const C_LINE_COMMENT_MODE = COMMENT('//', '$');
constant C_BLOCK_COMMENT_MODE (line 646) | const C_BLOCK_COMMENT_MODE = COMMENT('/\\*', '\\*/');
constant HASH_COMMENT_MODE (line 647) | const HASH_COMMENT_MODE = COMMENT('#', '$');
constant NUMBER_MODE (line 648) | const NUMBER_MODE = {
constant C_NUMBER_MODE (line 653) | const C_NUMBER_MODE = {
constant BINARY_NUMBER_MODE (line 658) | const BINARY_NUMBER_MODE = {
constant REGEXP_MODE (line 663) | const REGEXP_MODE = {
constant TITLE_MODE (line 687) | const TITLE_MODE = {
constant UNDERSCORE_TITLE_MODE (line 692) | const UNDERSCORE_TITLE_MODE = {
constant METHOD_GUARD (line 697) | const METHOD_GUARD = {
function skipIfHasPrecedingDot (line 777) | function skipIfHasPrecedingDot(match, response) {
function scopeClassName (line 788) | function scopeClassName(mode, _parent) {
function beginKeywords (line 800) | function beginKeywords(mode, parent) {
function compileIllegal (line 824) | function compileIllegal(mode, _parent) {
function compileMatch (line 834) | function compileMatch(mode, _parent) {
function compileRelevance (line 846) | function compileRelevance(mode, _parent) {
constant COMMON_KEYWORDS (line 876) | const COMMON_KEYWORDS = [
constant DEFAULT_KEYWORD_SCOPE (line 890) | const DEFAULT_KEYWORD_SCOPE = "keyword";
function compileKeywords (line 898) | function compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAU...
function scoreForKeyword (line 948) | function scoreForKeyword(keyword, providedScore) {
function commonKeyword (line 962) | function commonKeyword(keyword) {
function remapScopeNames (line 1040) | function remapScopeNames(mode, regexes, { key }) {
function beginMultiClass (line 1063) | function beginMultiClass(mode) {
function endMultiClass (line 1083) | function endMultiClass(mode) {
function scopeSugar (line 1111) | function scopeSugar(mode) {
function MultiClass (line 1121) | function MultiClass(mode) {
function compileLanguage (line 1153) | function compileLanguage(language) {
function dependencyOnParent (line 1512) | function dependencyOnParent(mode) {
function expandOrCloneMode (line 1528) | function expandOrCloneMode(mode) {
class HTMLInjectionError (line 1560) | class HTMLInjectionError extends Error {
method constructor (line 1561) | constructor(reason, html) {
constant NO_MATCH (line 1597) | const NO_MATCH = Symbol("nomatch");
constant MAX_KEYWORD_HITS (line 1598) | const MAX_KEYWORD_HITS = 7;
function shouldNotHighlight (line 1642) | function shouldNotHighlight(languageName) {
function blockLanguage (line 1649) | function blockLanguage(block) {
function highlight (line 1691) | function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {
function _highlight (line 1741) | function _highlight(languageName, codeToHighlight, ignoreIllegals, conti...
function justTextHighlightResult (line 2190) | function justTextHighlightResult(code) {
function highlightAuto (line 2216) | function highlightAuto(code, languageSubset) {
function updateClassName (line 2262) | function updateClassName(element, currentLang, resultLang) {
function highlightElement (line 2274) | function highlightElement(element) {
function configure (line 2332) | function configure(userOptions) {
function initHighlightingOnLoad (line 2343) | function initHighlightingOnLoad() {
function highlightAll (line 2353) | function highlightAll() {
function boot (line 2364) | function boot() {
function registerLanguage (line 2380) | function registerLanguage(languageName, languageDefinition) {
function unregisterLanguage (line 2409) | function unregisterLanguage(languageName) {
function listLanguages (line 2421) | function listLanguages() {
function getLanguage (line 2429) | function getLanguage(name) {
function registerAliases (line 2439) | function registerAliases(aliasList, { languageName }) {
function autoDetection (line 2450) | function autoDetection(name) {
function upgradePluginAPI (line 2460) | function upgradePluginAPI(plugin) {
function addPlugin (line 2481) | function addPlugin(plugin) {
function fire (line 2491) | function fire(event, args) {
function deprecateHighlightBlock (line 2504) | function deprecateHighlightBlock(el) {
function bash (line 2570) | function bash(hljs) {
function c (line 2954) | function c(hljs) {
function cpp (line 3271) | function cpp(hljs) {
function csharp (line 3840) | function csharp(hljs) {
constant TAGS (line 4274) | const TAGS = [
constant MEDIA_FEATURES (line 4349) | const MEDIA_FEATURES = [
constant PSEUDO_CLASSES (line 4387) | const PSEUDO_CLASSES = [
constant PSEUDO_ELEMENTS (line 4450) | const PSEUDO_ELEMENTS = [
constant ATTRIBUTES (line 4467) | const ATTRIBUTES = [
constant PSEUDO_SELECTORS (line 4831) | const PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS);
function css (line 4840) | function css(hljs) {
function diff (line 4976) | function diff(hljs) {
function go (line 5037) | function go(hljs) {
function ini (line 5176) | function ini(hljs) {
function recurRegex (line 5341) | function recurRegex(re, substitution, depth) {
function java (line 5350) | function java(hljs) {
constant IDENT_RE (line 5573) | const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';
constant KEYWORDS (line 5574) | const KEYWORDS = [
constant LITERALS (line 5617) | const LITERALS = [
constant TYPES (line 5627) | const TYPES = [
constant ERROR_TYPES (line 5679) | const ERROR_TYPES = [
constant BUILT_IN_GLOBALS (line 5690) | const BUILT_IN_GLOBALS = [
constant BUILT_IN_VARIABLES (line 5712) | const BUILT_IN_VARIABLES = [
constant BUILT_INS (line 5724) | const BUILT_INS = [].concat(
function javascript (line 5738) | function javascript(hljs) {
function json (line 6315) | function json(hljs) {
function kotlin (line 6360) | function kotlin(hljs) {
function less (line 6600) | function less(hljs) {
function lua (line 6827) | function lua(hljs) {
function makefile (line 6906) | function makefile(hljs) {
function xml (line 6991) | function xml(hljs) {
function markdown (line 7224) | function markdown(hljs) {
function objectivec (line 7464) | function objectivec(hljs) {
function perl (line 7716) | function perl(hljs) {
function php (line 8190) | function php(hljs) {
function phpTemplate (line 8789) | function phpTemplate(hljs) {
function plaintext (line 8841) | function plaintext(hljs) {
function python (line 8859) | function python(hljs) {
function pythonRepl (line 9290) | function pythonRepl(hljs) {
function r (line 9324) | function r(hljs) {
function ruby (line 9579) | function ruby(hljs) {
function rust (line 9990) | function rust(hljs) {
function scss (line 10292) | function scss(hljs) {
function shell (line 10415) | function shell(hljs) {
function sql (line 10460) | function sql(hljs) {
function swift (line 11448) | function swift(hljs) {
function typescript (line 11920) | function typescript(hljs) {
function vbnet (line 12030) | function vbnet(hljs) {
function yaml (line 12186) | function yaml(hljs) {
FILE: source/lib/highlightjs@11.5.1/highlight.js
function deepFreeze (line 11) | function deepFreeze(obj) {
class Response (line 46) | class Response {
method constructor (line 50) | constructor(mode) {
method ignoreMatch (line 58) | ignoreMatch() {
function escapeHTML (line 67) | function escapeHTML(value) {
function inherit$1 (line 84) | function inherit$1(original, ...objects) {
class HTMLRenderer (line 138) | class HTMLRenderer {
method constructor (line 145) | constructor(parseTree, options) {
method addText (line 155) | addText(text) {
method openNode (line 163) | openNode(node) {
method closeNode (line 179) | closeNode(node) {
method value (line 188) | value() {
method span (line 198) | span(className) {
class TokenTree (line 208) | class TokenTree {
method constructor (line 209) | constructor() {
method top (line 215) | get top() {
method root (line 219) | get root() { return this.rootNode; }
method add (line 222) | add(node) {
method openNode (line 227) | openNode(kind) {
method closeNode (line 234) | closeNode() {
method closeAllNodes (line 242) | closeAllNodes() {
method toJSON (line 246) | toJSON() {
method walk (line 254) | walk(builder) {
method _walk (line 265) | static _walk(builder, node) {
method _collapse (line 279) | static _collapse(node) {
class TokenTreeEmitter (line 315) | class TokenTreeEmitter extends TokenTree {
method constructor (line 319) | constructor(options) {
method addKeyword (line 328) | addKeyword(text, kind) {
method addText (line 339) | addText(text) {
method addSublanguage (line 349) | addSublanguage(emitter, name) {
method toHTML (line 357) | toHTML() {
method finalize (line 362) | finalize() {
function source (line 376) | function source(re) {
function lookahead (line 387) | function lookahead(re) {
function anyNumberOfTimes (line 395) | function anyNumberOfTimes(re) {
function optional (line 403) | function optional(re) {
function concat (line 411) | function concat(...args) {
function stripOptionsFromArgs (line 420) | function stripOptionsFromArgs(args) {
function either (line 440) | function either(...args) {
function countMatchGroups (line 453) | function countMatchGroups(re) {
function startsWith (line 462) | function startsWith(re, lexeme) {
function _rewriteBackreferences (line 487) | function _rewriteBackreferences(regexps, { joinWith }) {
function skipIfHasPrecedingDot (line 780) | function skipIfHasPrecedingDot(match, response) {
function scopeClassName (line 791) | function scopeClassName(mode, _parent) {
function beginKeywords (line 803) | function beginKeywords(mode, parent) {
function compileIllegal (line 827) | function compileIllegal(mode, _parent) {
function compileMatch (line 837) | function compileMatch(mode, _parent) {
function compileRelevance (line 849) | function compileRelevance(mode, _parent) {
function compileKeywords (line 901) | function compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAU...
function scoreForKeyword (line 951) | function scoreForKeyword(keyword, providedScore) {
function commonKeyword (line 965) | function commonKeyword(keyword) {
function remapScopeNames (line 1043) | function remapScopeNames(mode, regexes, { key }) {
function beginMultiClass (line 1066) | function beginMultiClass(mode) {
function endMultiClass (line 1086) | function endMultiClass(mode) {
function scopeSugar (line 1114) | function scopeSugar(mode) {
function MultiClass (line 1124) | function MultiClass(mode) {
function compileLanguage (line 1156) | function compileLanguage(language) {
function dependencyOnParent (line 1515) | function dependencyOnParent(mode) {
function expandOrCloneMode (line 1531) | function expandOrCloneMode(mode) {
class HTMLInjectionError (line 1563) | class HTMLInjectionError extends Error {
method constructor (line 1564) | constructor(reason, html) {
function shouldNotHighlight (line 1645) | function shouldNotHighlight(languageName) {
function blockLanguage (line 1652) | function blockLanguage(block) {
function highlight (line 1694) | function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {
function _highlight (line 1744) | function _highlight(languageName, codeToHighlight, ignoreIllegals, conti...
function justTextHighlightResult (line 2193) | function justTextHighlightResult(code) {
function highlightAuto (line 2219) | function highlightAuto(code, languageSubset) {
function updateClassName (line 2265) | function updateClassName(element, currentLang, resultLang) {
function highlightElement (line 2277) | function highlightElement(element) {
function configure (line 2335) | function configure(userOptions) {
function initHighlightingOnLoad (line 2346) | function initHighlightingOnLoad() {
function highlightAll (line 2356) | function highlightAll() {
function boot (line 2367) | function boot() {
function registerLanguage (line 2383) | function registerLanguage(languageName, languageDefinition) {
function unregisterLanguage (line 2412) | function unregisterLanguage(languageName) {
function listLanguages (line 2424) | function listLanguages() {
function getLanguage (line 2432) | function getLanguage(name) {
function registerAliases (line 2442) | function registerAliases(aliasList, { languageName }) {
function autoDetection (line 2453) | function autoDetection(name) {
function upgradePluginAPI (line 2463) | function upgradePluginAPI(plugin) {
function addPlugin (line 2484) | function addPlugin(plugin) {
function fire (line 2494) | function fire(event, args) {
function deprecateHighlightBlock (line 2507) | function deprecateHighlightBlock(el) {
function bash (line 2573) | function bash(hljs) {
function c (line 2957) | function c(hljs) {
function cpp (line 3274) | function cpp(hljs) {
function csharp (line 3843) | function csharp(hljs) {
function css (line 4843) | function css(hljs) {
function diff (line 4979) | function diff(hljs) {
function go (line 5040) | function go(hljs) {
function ini (line 5179) | function ini(hljs) {
function recurRegex (line 5344) | function recurRegex(re, substitution, depth) {
function java (line 5353) | function java(hljs) {
function javascript (line 5741) | function javascript(hljs) {
function json (line 6318) | function json(hljs) {
function kotlin (line 6363) | function kotlin(hljs) {
function less (line 6603) | function less(hljs) {
function lua (line 6830) | function lua(hljs) {
function makefile (line 6909) | function makefile(hljs) {
function xml (line 6994) | function xml(hljs) {
function markdown (line 7227) | function markdown(hljs) {
function objectivec (line 7467) | function objectivec(hljs) {
function perl (line 7719) | function perl(hljs) {
function php (line 8193) | function php(hljs) {
function phpTemplate (line 8792) | function phpTemplate(hljs) {
function plaintext (line 8844) | function plaintext(hljs) {
function python (line 8862) | function python(hljs) {
function pythonRepl (line 9293) | function pythonRepl(hljs) {
function r (line 9327) | function r(hljs) {
function ruby (line 9582) | function ruby(hljs) {
function rust (line 9993) | function rust(hljs) {
function scss (line 10295) | function scss(hljs) {
function shell (line 10418) | function shell(hljs) {
function sql (line 10463) | function sql(hljs) {
function swift (line 11451) | function swift(hljs) {
function typescript (line 11923) | function typescript(hljs) {
function vbnet (line 12033) | function vbnet(hljs) {
function yaml (line 12189) | function yaml(hljs) {
FILE: source/lib/jquery-pjax@2.0.1/jquery.pjax.js
function fnPjax (line 30) | function fnPjax(selector, container, options) {
function handleClick (line 56) | function handleClick(event, container, options) {
function handleSubmit (line 113) | function handleSubmit(event, container, options) {
function pjax (line 166) | function pjax(options) {
function pjaxReload (line 380) | function pjaxReload(container, options) {
function locationReplace (line 397) | function locationReplace(url) {
function onPjaxPopstate (line 423) | function onPjaxPopstate(event) {
function fallbackPjax (line 507) | function fallbackPjax(options) {
function abortXHR (line 547) | function abortXHR(xhr) {
function uniqueId (line 560) | function uniqueId() {
function cloneContents (line 564) | function cloneContents(container) {
function stripInternalParams (line 577) | function stripInternalParams(url) {
function parseURL (line 587) | function parseURL(url) {
function stripHash (line 599) | function stripHash(location) {
function optionsFor (line 620) | function optionsFor(container, options) {
function findAll (line 641) | function findAll(elems, selector) {
function parseHTML (line 645) | function parseHTML(html) {
function extractContainer (line 660) | function extractContainer(data, xhr, options) {
function executeScriptTags (line 734) | function executeScriptTags(scripts) {
function cachePush (line 767) | function cachePush(id, value) {
function cachePop (line 787) | function cachePop(direction, id, value) {
function trimCacheStack (line 814) | function trimCacheStack(stack, length) {
function findVersion (line 822) | function findVersion() {
function enable (line 838) | function enable() {
function disable (line 870) | function disable() {
FILE: source/lib/katex@0.12.0/contrib/auto-render.js
function __webpack_require__ (line 16) | function __webpack_require__(moduleId) {
FILE: source/lib/katex@0.12.0/contrib/copy-tex.js
function __webpack_require__ (line 16) | function __webpack_require__(moduleId) {
FILE: source/lib/katex@0.12.0/contrib/mathtex-script-type.js
function __webpack_require__ (line 16) | function __webpack_require__(moduleId) {
FILE: source/lib/katex@0.12.0/contrib/mhchem.js
function __webpack_require__ (line 16) | function __webpack_require__(moduleId) {
function assertNever (line 3233) | function assertNever(a) {}
function assertString (line 3237) | function assertString(a) {}
FILE: source/lib/katex@0.12.0/contrib/render-a11y-string.js
function __webpack_require__ (line 16) | function __webpack_require__(moduleId) {
FILE: source/lib/katex@0.12.0/katex.js
function __webpack_require__ (line 16) | function __webpack_require__(moduleId) {
function SourceLocation (line 125) | function SourceLocation(lexer, start, end) {
function Token (line 182) | function Token(text, // the text of this token
function utils_escape (line 318) | function utils_escape(text) {
function Settings (line 411) | function Settings(options) {
function Style (line 548) | function Style(id, size, cramped) {
function scriptFromCodepoint (line 716) | function scriptFromCodepoint(codepoint) {
function supportedCodepoint (line 751) | function supportedCodepoint(codepoint) {
function DocumentFragment (line 946) | function DocumentFragment(children) {
function Span (line 1148) | function Span(classes, children, options, style) {
function Anchor (line 1195) | function Anchor(href, classes, children, options) {
function Img (line 1235) | function Img(src, alt, style) {
function SymbolNode (line 1308) | function SymbolNode(text, height, depth, italic, skew, width, classes, s...
function SvgNode (line 1442) | function SvgNode(children, attributes) {
function PathNode (line 1492) | function PathNode(pathName, alternate) {
function LineNode (line 1527) | function LineNode(attributes) {
function assertSymbolDomNode (line 1562) | function assertSymbolDomNode(group) {
function assertSpan (line 1569) | function assertSpan(group) {
function setFontMetrics (line 3860) | function setFontMetrics(fontName, metrics) {
function getCharacterMetrics (line 3871) | function getCharacterMetrics(character, font, mode) {
function getGlobalMetrics (line 3913) | function getGlobalMetrics(size) {
function defineSymbol (line 3982) | function defineSymbol(mode, font, group, replace, name, acceptUnicodeCha...
function Options (line 4937) | function Options(data) {
function defineFunction (line 6128) | function defineFunction(_ref) {
function defineFunctionBuilders (line 6168) | function defineFunctionBuilders(_ref2) {
function buildHTMLUnbreakable (line 6454) | function buildHTMLUnbreakable(children, options) {
function buildHTML (line 6472) | function buildHTML(tree, options) {
function newDocumentFragment (line 6565) | function newDocumentFragment(children) {
function MathNode (line 6577) | function MathNode(type, children) {
function TextNode (line 6669) | function TextNode(text) {
function SpaceNode (line 6715) | function SpaceNode(width) {
function buildMathML (line 7010) | function buildMathML(tree, texExpression, options, isDisplayMode, forMat...
function buildSvgSpan_ (line 7252) | function buildSvgSpan_() {
function assertNodeType (line 7452) | function assertNodeType(node, type) {
function assertSymbolNodeType (line 7464) | function assertSymbolNodeType(node) {
function checkSymbolNodeType (line 7478) | function checkSymbolNodeType(node) {
function checkDelimiter (line 9065) | function checkDelimiter(delim, context) {
function assertParsed (line 9126) | function assertParsed(group) {
function defineEnvironment (line 9600) | function defineEnvironment(_ref) {
function getHLines (line 9647) | function getHLines(parser) {
function parseArray (line 9671) | function parseArray(parser, _ref, style) {
function dCellStyle (line 9776) | function dCellStyle(envName) {
function setHLinePos (line 9822) | function setHLinePos(hlinesInGap) {
function mclass_htmlBuilder (line 10578) | function mclass_htmlBuilder(group, options) {
function mclass_mathmlBuilder (line 10583) | function mclass_mathmlBuilder(group, options) {
function sizingGroup (line 12995) | function sizingGroup(value, options, baseOptions) {
function Lexer (line 14069) | function Lexer(input, settings) {
function Namespace (line 14158) | function Namespace(builtins, globalMacros) {
function defineMacro (line 14289) | function defineMacro(name, body) {
function MacroExpander (line 15198) | function MacroExpander(input, settings, mode) {
function Parser (line 16009) | function Parser(input, settings) {
FILE: source/lib/katex@0.12.0/katex.mjs
class SourceLocation (line 5) | class SourceLocation {
method constructor (line 10) | constructor(lexer, start, end) {
method range (line 28) | static range(first, second) {
class Token (line 58) | class Token {
method constructor (line 61) | constructor(text, // the text of this token
method range (line 76) | range(endToken, // last token of the range, inclusive
class ParseError (line 92) | class ParseError {
method constructor (line 94) | constructor(message, // The error message
constant ESCAPE_LOOKUP (line 182) | const ESCAPE_LOOKUP = {
constant ESCAPE_REGEX (line 189) | const ESCAPE_REGEX = /[&><"']/g;
function escape (line 194) | function escape(text) {
class Settings (line 274) | class Settings {
method constructor (line 275) | constructor(options) {
method reportNonstrict (line 313) | reportNonstrict(errorCode, errorMsg, token) {
method useStrictBehavior (line 343) | useStrictBehavior(errorCode, errorMsg, token) {
method isTrusted (line 381) | isTrusted(context) {
class Style (line 404) | class Style {
method constructor (line 405) | constructor(id, size, cramped) {
method sup (line 418) | sup() {
method sub (line 426) | sub() {
method fracNum (line 435) | fracNum() {
method fracDen (line 444) | fracDen() {
method cramp (line 453) | cramp() {
method text (line 461) | text() {
method isTight (line 469) | isTight() {
function scriptFromCodepoint (line 570) | function scriptFromCodepoint(codepoint) {
function supportedCodepoint (line 601) | function supportedCodepoint(codepoint) {
class DocumentFragment (line 1015) | class DocumentFragment {
method constructor (line 1018) | constructor(children) {
method hasClass (line 1033) | hasClass(className) {
method toNode (line 1039) | toNode() {
method toMarkup (line 1051) | toMarkup() {
method toText (line 1066) | toText() {
class Span (line 1206) | class Span {
method constructor (line 1207) | constructor(classes, children, options, style) {
method setAttribute (line 1226) | setAttribute(attribute, value) {
method hasClass (line 1230) | hasClass(className) {
method toNode (line 1234) | toNode() {
method toMarkup (line 1238) | toMarkup() {
class Anchor (line 1248) | class Anchor {
method constructor (line 1249) | constructor(href, classes, children, options) {
method setAttribute (line 1262) | setAttribute(attribute, value) {
method hasClass (line 1266) | hasClass(className) {
method toNode (line 1270) | toNode() {
method toMarkup (line 1274) | toMarkup() {
class Img (line 1283) | class Img {
method constructor (line 1284) | constructor(src, alt, style) {
method hasClass (line 1298) | hasClass(className) {
method toNode (line 1302) | toNode() {
method toMarkup (line 1318) | toMarkup() {
class SymbolNode (line 1351) | class SymbolNode {
method constructor (line 1352) | constructor(text, height, depth, italic, skew, width, classes, style) {
method hasClass (line 1390) | hasClass(className) {
method toNode (line 1399) | toNode() {
method toMarkup (line 1433) | toMarkup() {
class SvgNode (line 1480) | class SvgNode {
method constructor (line 1481) | constructor(children, attributes) {
method toNode (line 1488) | toNode() {
method toMarkup (line 1505) | toMarkup() {
class PathNode (line 1525) | class PathNode {
method constructor (line 1526) | constructor(pathName, alternate) {
method toNode (line 1533) | toNode() {
method toMarkup (line 1546) | toMarkup() {
class LineNode (line 1555) | class LineNode {
method constructor (line 1556) | constructor(attributes) {
method toNode (line 1561) | toNode() {
method toMarkup (line 1574) | toMarkup() {
function assertSymbolDomNode (line 1588) | function assertSymbolDomNode(group) {
function assertSpan (line 1595) | function assertSpan(group) {
function setFontMetrics (line 3879) | function setFontMetrics(fontName, metrics) {
function getCharacterMetrics (line 3890) | function getCharacterMetrics(character, font, mode) {
function getGlobalMetrics (line 3932) | function getGlobalMetrics(size) {
constant ATOMS (line 3979) | const ATOMS = {
constant NON_ATOMS (line 3987) | const NON_ATOMS = {
function defineSymbol (line 4000) | function defineSymbol(mode, font, group, replace, name, acceptUnicodeCha...
class Options (line 4937) | class Options {
method constructor (line 4945) | constructor(data) {
method extend (line 4979) | extend(extension) {
method havingStyle (line 5008) | havingStyle(style) {
method havingCrampedStyle (line 5024) | havingCrampedStyle() {
method havingSize (line 5033) | havingSize(size) {
method havingBaseStyle (line 5051) | havingBaseStyle(style) {
method havingBaseSizing (line 5070) | havingBaseSizing() {
method withColor (line 5101) | withColor(color) {
method withPhantom (line 5111) | withPhantom() {
method withFont (line 5122) | withFont(font) {
method withTextFontFamily (line 5132) | withTextFontFamily(fontFamily) {
method withTextFontWeight (line 5143) | withTextFontWeight(fontWeight) {
method withTextFontShape (line 5154) | withTextFontShape(fontShape) {
method sizingClasses (line 5166) | sizingClasses(oldOptions) {
method baseSizingClasses (line 5179) | baseSizingClasses() {
method fontMetrics (line 5191) | fontMetrics() {
method getColor (line 5203) | getColor() {
function defineFunction (line 6113) | function defineFunction(_ref) {
function defineFunctionBuilders (line 6153) | function defineFunctionBuilders(_ref2) {
function buildHTMLUnbreakable (line 6431) | function buildHTMLUnbreakable(children, options) {
function buildHTML (line 6449) | function buildHTML(tree, options) {
function newDocumentFragment (line 6540) | function newDocumentFragment(children) {
class MathNode (line 6549) | class MathNode {
method constructor (line 6550) | constructor(type, children) {
method setAttribute (line 6564) | setAttribute(name, value) {
method getAttribute (line 6572) | getAttribute(name) {
method toNode (line 6580) | toNode() {
method toMarkup (line 6600) | toMarkup() {
method toText (line 6625) | toText() {
class TextNode (line 6634) | class TextNode {
method constructor (line 6635) | constructor(text) {
method toNode (line 6644) | toNode() {
method toMarkup (line 6653) | toMarkup() {
method toText (line 6662) | toText() {
class SpaceNode (line 6672) | class SpaceNode {
method constructor (line 6676) | constructor(width) {
method toNode (line 6709) | toNode() {
method toMarkup (line 6723) | toMarkup() {
method toText (line 6735) | toText() {
function buildMathML (line 6951) | function buildMathML(tree, texExpression, options, isDisplayMode, forMat...
function buildSvgSpan_ (line 7179) | function buildSvgSpan_() {
function assertNodeType (line 7373) | function assertNodeType(node, type) {
function assertSymbolNodeType (line 7385) | function assertSymbolNodeType(node) {
function checkSymbolNodeType (line 7399) | function checkSymbolNodeType(node) {
constant NON_STRETCHY_ACCENT_REGEX (line 7576) | const NON_STRETCHY_ACCENT_REGEX = new RegExp(["\\acute", "\\grave", "\\d...
method handler (line 7692) | handler(_ref, args, optArgs) {
method htmlBuilder (line 7706) | htmlBuilder(group, options) {
method mathmlBuilder (line 7776) | mathmlBuilder(group, options) {
method handler (line 7815) | handler(_ref, args) {
method handler (line 7867) | handler(_ref, args) {
method handler (line 7892) | handler(_ref2, args) {
method handler (line 7930) | handler(_ref, args, optArgs) {
method htmlBuilder (line 7956) | htmlBuilder(group, options) {
method mathmlBuilder (line 7974) | mathmlBuilder(group, options) {
method handler (line 8058) | handler(_ref) {
method handler (line 8089) | handler(_ref2) {
method handler (line 8152) | handler(_ref3) {
method handler (line 8175) | handler(_ref4) {
function checkDelimiter (line 8947) | function checkDelimiter(delim, context) {
function assertParsed (line 9008) | function assertParsed(group) {
method handler (line 9384) | handler(_ref, args, optArgs) {
method handler (line 9411) | handler(_ref2, args, optArgs) {
method handler (line 9439) | handler(_ref3, args) {
method handler (line 9457) | handler(_ref4, args, optArgs) {
function defineEnvironment (line 9479) | function defineEnvironment(_ref) {
function getHLines (line 9513) | function getHLines(parser) {
function parseArray (line 9537) | function parseArray(parser, _ref, style) {
function dCellStyle (line 9642) | function dCellStyle(envName) {
function setHLinePos (line 9688) | function setHLinePos(hlinesInGap) {
method handler (line 10112) | handler(context, args) {
method handler (line 10162) | handler(context) {
method handler (line 10197) | handler(context) {
method handler (line 10216) | handler(context, args) {
method handler (line 10268) | handler(context) {
method handler (line 10327) | handler(context) {
method handler (line 10368) | handler(context, args) {
method handler (line 10387) | handler(_ref, args) {
function htmlBuilder$4 (line 10445) | function htmlBuilder$4(group, options) {
function mathmlBuilder$4 (line 10450) | function mathmlBuilder$4(group, options) {
method handler (line 10499) | handler(_ref, args) {
method handler (line 10538) | handler(_ref2, args) {
method handler (line 10558) | handler(_ref3, args) {
method handler (line 11020) | handler(_ref2) {
method handler (line 11082) | handler(_ref3, args) {
method handler (line 11144) | handler(_ref4, args) {
method handler (line 11307) | handler(_ref, args) {
method handler (line 11729) | handler(_ref, args) {
method htmlBuilder (line 11762) | htmlBuilder(group, options) {
method mathmlBuilder (line 11766) | mathmlBuilder(group, options) {
method handler (line 11844) | handler(_ref, args) {
method handler (line 11873) | handler(context, args) {
method handler (line 12276) | handler(_ref3) {
method handler (line 12300) | handler(_ref4) {
method handler (line 12324) | handler(_ref5) {
method htmlBuilder (line 12497) | htmlBuilder(group, options) {
method mathmlBuilder (line 12505) | mathmlBuilder(group, options) {
method handler (line 12518) | handler(_ref, args) {
method htmlBuilder (line 12528) | htmlBuilder(group, options) {
method mathmlBuilder (line 12555) | mathmlBuilder(group, options) {
method handler (line 12679) | handler(_ref, args) {
method htmlBuilder (line 12691) | htmlBuilder(group, options) {
method mathmlBuilder (line 12704) | mathmlBuilder(group, options) {
method handler (line 12722) | handler(_ref, args, optArgs) {
method htmlBuilder (line 12736) | htmlBuilder(group, options) {
method mathmlBuilder (line 12758) | mathmlBuilder(group, options) {
function sizingGroup (line 12782) | function sizingGroup(value, options, baseOptions) {
method handler (line 12962) | handler(_ref, args, optArgs) {
method htmlBuilder (line 12974) | htmlBuilder(group, options) {
method mathmlBuilder (line 13060) | mathmlBuilder(group, options) {
method handler (line 13082) | handler(_ref, args) {
method htmlBuilder (line 13102) | htmlBuilder(group, options) {
method mathmlBuilder (line 13109) | mathmlBuilder(group, options) {
method htmlBuilder (line 13164) | htmlBuilder(group, options) {
method mathmlBuilder (line 13304) | mathmlBuilder(group, options) {
method htmlBuilder (line 13378) | htmlBuilder(group, options) {
method mathmlBuilder (line 13382) | mathmlBuilder(group, options) {
method htmlBuilder (line 13413) | htmlBuilder(group, options) {
method mathmlBuilder (line 13417) | mathmlBuilder(group, options) {
method htmlBuilder (line 13432) | htmlBuilder(group, options) {
method mathmlBuilder (line 13436) | mathmlBuilder(group, options) {
method htmlBuilder (line 13487) | htmlBuilder(group, options) {
method mathmlBuilder (line 13508) | mathmlBuilder(group, options) {
method mathmlBuilder (line 13534) | mathmlBuilder(group, options) {
method handler (line 13591) | handler(_ref, args) {
method htmlBuilder (line 13603) | htmlBuilder(group, options) {
method mathmlBuilder (line 13609) | mathmlBuilder(group, options) {
method handler (line 13624) | handler(_ref, args) {
method htmlBuilder (line 13633) | htmlBuilder(group, options) {
method mathmlBuilder (line 13661) | mathmlBuilder(group, options) {
method handler (line 13679) | handler(context, args, optArgs) {
method htmlBuilder (line 13687) | htmlBuilder(group, options) {
method mathmlBuilder (line 13706) | mathmlBuilder(group, options) {
class Lexer (line 13774) | class Lexer {
method constructor (line 13776) | constructor(input, settings) {
method setCatcode (line 13791) | setCatcode(char, code) {
method lex (line 13799) | lex() {
class Namespace (line 13849) | class Namespace {
method constructor (line 13856) | constructor(builtins, globalMacros) {
method beginGroup (line 13877) | beginGroup() {
method endGroup (line 13885) | endGroup() {
method has (line 13908) | has(name) {
method get (line 13921) | get(name) {
method set (line 13936) | set(name, value, global) {
function defineMacro (line 13975) | function defineMacro(name, body) {
class MacroExpander (line 14863) | class MacroExpander {
method constructor (line 14864) | constructor(input, settings, mode) {
method feed (line 14885) | feed(input) {
method switchMode (line 14893) | switchMode(newMode) {
method beginGroup (line 14901) | beginGroup() {
method endGroup (line 14909) | endGroup() {
method future (line 14918) | future() {
method popToken (line 14930) | popToken() {
method pushToken (line 14941) | pushToken(token) {
method pushTokens (line 14949) | pushTokens(tokens) {
method consumeSpaces (line 14957) | consumeSpaces() {
method consumeArgs (line 14974) | consumeArgs(numArgs) {
method expandOnce (line 15038) | expandOnce(expandableOnly) {
method expandAfterFuture (line 15100) | expandAfterFuture() {
method expandNextToken (line 15109) | expandNextToken() {
method expandMacro (line 15136) | expandMacro(name) {
method expandTokens (line 15144) | expandTokens(tokens) {
method expandMacroAsText (line 15172) | expandMacroAsText(name) {
method _getExpansion (line 15187) | _getExpansion(name) {
method isDefined (line 15236) | isDefined(name) {
method isExpandable (line 15244) | isExpandable(name) {
class Parser (line 15651) | class Parser {
method constructor (line 15652) | constructor(input, settings) {
method expect (line 15674) | expect(text, consume) {
method consume (line 15692) | consume() {
method fetch (line 15702) | fetch() {
method switchMode (line 15714) | switchMode(newMode) {
method parse (line 15723) | parse() {
method parseExpression (line 15749) | parseExpression(breakOnInfix, breakOnTokenText) {
method handleInfixNodes (line 15799) | handleInfixNodes(body) {
method handleSupSubscript (line 15858) | handleSupSubscript(name) {
method formatUnsupportedCmd (line 15876) | formatUnsupportedCmd(text) {
method parseAtom (line 15905) | parseAtom(breakOnTokenText) {
method parseFunction (line 16012) | parseFunction(breakOnTokenText, name, // For error reporting.
method callFunction (line 16043) | callFunction(name, args, optArgs, token, breakOnTokenText) {
method parseArguments (line 16063) | parseArguments(func, // Should look like "\name" or "\begin{name}".
method parseGroupOfType (line 16116) | parseGroupOfType(name, type, optional, greediness, consumeSpaces) {
method consumeSpaces (line 16196) | consumeSpaces() {
method parseStringGroup (line 16207) | parseStringGroup(modeName, // Used to describe the mode in error messa...
method parseRegexGroup (line 16262) | parseRegexGroup(regex, modeName) {
method parseColorGroup (line 16288) | parseColorGroup(optional) {
method parseSizeGroup (line 16321) | parseSizeGroup(optional) {
method parseUrlGroup (line 16373) | parseUrlGroup(optional, consumeSpaces) {
method parseGroup (line 16409) | parseGroup(name, // For error reporting.
method formLigatures (line 16487) | formLigatures(group) {
method parseSymbol (line 16532) | parseSymbol() {
FILE: source/lib/swiper@8.4.6/swiper-bundle.js
function isObject$1 (line 32) | function isObject$1(obj) {
function extend$1 (line 36) | function extend$1(target, src) {
method addEventListener (line 55) | addEventListener() {}
method removeEventListener (line 57) | removeEventListener() {}
method blur (line 60) | blur() {}
method querySelector (line 65) | querySelector() {
method querySelectorAll (line 69) | querySelectorAll() {
method getElementById (line 73) | getElementById() {
method createEvent (line 77) | createEvent() {
method createElement (line 84) | createElement() {
method createElementNS (line 99) | createElementNS() {
method importNode (line 103) | importNode() {
function getDocument (line 119) | function getDocument() {
method replaceState (line 141) | replaceState() {}
method pushState (line 143) | pushState() {}
method go (line 145) | go() {}
method back (line 147) | back() {}
method addEventListener (line 154) | addEventListener() {}
method removeEventListener (line 156) | removeEventListener() {}
method getComputedStyle (line 158) | getComputedStyle() {
method Image (line 167) | Image() {}
method Date (line 169) | Date() {}
method setTimeout (line 173) | setTimeout() {}
method clearTimeout (line 175) | clearTimeout() {}
method matchMedia (line 177) | matchMedia() {
method requestAnimationFrame (line 181) | requestAnimationFrame(callback) {
method cancelAnimationFrame (line 190) | cancelAnimationFrame(id) {
function getWindow (line 200) | function getWindow() {
function makeReactive (line 219) | function makeReactive(obj) {
class Dom7 (line 233) | class Dom7 extends Array {
method constructor (line 234) | constructor(items) {
function arrayFlat (line 245) | function arrayFlat(arr) {
function arrayFilter (line 261) | function arrayFilter(arr, callback) {
function arrayUnique (line 265) | function arrayUnique(arr) {
function qsa (line 276) | function qsa(selector, context) {
function $ (line 291) | function $(selector, context) {
function addClass (line 336) | function addClass() {
function removeClass (line 348) | function removeClass() {
function toggleClass (line 360) | function toggleClass() {
function hasClass (line 373) | function hasClass() {
function attr (line 384) | function attr(attrs, value) {
function removeAttr (line 408) | function removeAttr(attr) {
function transform (line 416) | function transform(transform) {
function transition$1 (line 424) | function transition$1(duration) {
function on (line 432) | function on() {
function off (line 509) | function off() {
function trigger (line 559) | function trigger() {
function transitionEnd$1 (line 592) | function transitionEnd$1(callback) {
function outerWidth (line 608) | function outerWidth(includeMargins) {
function outerHeight (line 621) | function outerHeight(includeMargins) {
function offset (line 634) | function offset() {
function styles (line 654) | function styles() {
function css (line 660) | function css(props, value) {
function each (line 692) | function each(callback) {
function filter (line 700) | function filter(callback) {
function html (line 705) | function html(html) {
function text (line 717) | function text(text) {
function is (line 729) | function is(selector) {
function index (line 771) | function index() {
function eq (line 788) | function eq(index) {
function append (line 805) | function append() {
function prepend (line 833) | function prepend(newChild) {
function next (line 858) | function next(selector) {
function nextAll (line 875) | function nextAll(selector) {
function prev (line 893) | function prev(selector) {
function prevAll (line 912) | function prevAll(selector) {
function parent (line 930) | function parent(selector) {
function parents (line 946) | function parents(selector) {
function closest (line 966) | function closest(selector) {
function find (line 980) | function find(selector) {
function children (line 994) | function children(selector) {
function remove (line 1010) | function remove() {
function deleteProps (line 1063) | function deleteProps(obj) {
function nextTick (line 1078) | function nextTick(callback, delay) {
function now (line 1086) | function now() {
function getComputedStyle$1 (line 1090) | function getComputedStyle$1(el) {
function getTranslate (line 1109) | function getTranslate(el, axis) {
function isObject (line 1152) | function isObject(o) {
function isNode (line 1156) | function isNode(node) {
function extend (line 1165) | function extend() {
function setCSSProperty (line 1205) | function setCSSProperty(el, varName, varValue) {
function animateCSSModeScroll (line 1209) | function animateCSSModeScroll(_ref) {
function calcSupport (line 1268) | function calcSupport() {
function getSupport (line 1297) | function getSupport() {
function calcDevice (line 1307) | function calcDevice(_temp) {
function getDevice (line 1352) | function getDevice(overrides) {
function calcBrowser (line 1366) | function calcBrowser() {
function getBrowser (line 1380) | function getBrowser() {
function Resize (line 1388) | function Resize(_ref) {
function Observer (line 1465) | function Observer(_ref) {
method on (line 1547) | on(events, handler, priority) {
method once (line 1559) | once(events, handler, priority) {
method onAny (line 1582) | onAny(handler, priority) {
method offAny (line 1595) | offAny(handler) {
method off (line 1608) | off(events, handler) {
method emit (line 1626) | emit() {
function updateSize (line 1668) | function updateSize() {
function updateSlides (line 1702) | function updateSlides() {
function updateAutoHeight (line 2022) | function updateAutoHeight(speed) {
function updateSlidesOffset (line 2072) | function updateSlidesOffset() {
function updateSlidesProgress (line 2081) | function updateSlidesProgress(translate) {
function updateProgress (line 2129) | function updateProgress(translate) {
function updateSlidesClasses (line 2180) | function updateSlidesClasses() {
function updateActiveIndex (line 2245) | function updateActiveIndex(newActiveIndex) {
function updateClickedSlide (line 2316) | function updateClickedSlide(e) {
function getSwiperTranslate (line 2364) | function getSwiperTranslate(axis) {
function setTranslate (line 2390) | function setTranslate(translate, byController) {
function minTranslate (line 2439) | function minTranslate() {
function maxTranslate (line 2443) | function maxTranslate() {
function translateTo (line 2447) | function translateTo(translate, speed, runCallbacks, translateBounds, in...
function setTransition (line 2556) | function setTransition(duration, byController) {
function transitionEmit (line 2566) | function transitionEmit(_ref) {
function transitionStart (line 2601) | function transitionStart(runCallbacks, direction) {
function transitionEnd (line 2624) | function transitionEnd(runCallbacks, direction) {
function slideTo (line 2650) | function slideTo(index, speed, runCallbacks, internal, initial) {
function slideToLoop (line 2842) | function slideToLoop(index, speed, runCallbacks, internal) {
function slideNext (line 2889) | function slideNext(speed, runCallbacks, internal) {
function slidePrev (line 2928) | function slidePrev(speed, runCallbacks, internal) {
function slideReset (line 3001) | function slideReset(speed, runCallbacks, internal) {
function slideToClosest (line 3015) | function slideToClosest(speed, runCallbacks, internal, threshold) {
function slideToClickedSlide (line 3059) | function slideToClickedSlide() {
function loopCreate (line 3107) | function loopCreate() {
function loopFix (line 3162) | function loopFix() {
function loopDestroy (line 3204) | function loopDestroy() {
function setGrabCursor (line 3221) | function setGrabCursor(moving) {
function unsetGrabCursor (line 3229) | function unsetGrabCursor() {
function closestElement (line 3244) | function closestElement(selector, base) {
function onTouchStart (line 3264) | function onTouchStart(event) {
function onTouchMove (line 3377) | function onTouchMove(event) {
function onTouchEnd (line 3598) | function onTouchEnd(event) {
function onResize (line 3759) | function onResize() {
function onClick (line 3803) | function onClick(e) {
function onScroll (line 3817) | function onScroll() {
function dummyEventListener (line 3855) | function dummyEventListener() {}
function attachEvents (line 3909) | function attachEvents() {
function detachEvents (line 3934) | function detachEvents() {
function setBreakpoint (line 3948) | function setBreakpoint() {
function getBreakpoint (line 4028) | function getBreakpoint(breakpoints, base, containerEl) {
function prepareClasses (line 4077) | function prepareClasses(entries, prefix) {
function addClasses (line 4093) | function addClasses() {
function removeClasses (line 4132) | function removeClasses() {
function loadImage (line 4147) | function loadImage(imageEl, src, srcset, sizes, checkForComplete, callba...
function preloadImages (line 4183) | function preloadImages() {
function checkOverflow (line 4208) | function checkOverflow() {
function moduleExtendParams (line 4372) | function moduleExtendParams(params, allModulesParams) {
class Swiper (line 4431) | class Swiper {
method constructor (line 4432) | constructor() {
method enable (line 4607) | enable() {
method disable (line 4619) | disable() {
method setProgress (line 4631) | setProgress(progress, speed) {
method emitContainerClasses (line 4642) | emitContainerClasses() {
method getSlideClasses (line 4651) | getSlideClasses(slideEl) {
method emitSlidesClasses (line 4659) | emitSlidesClasses() {
method slidesPerViewDynamic (line 4674) | slidesPerViewDynamic(view, exact) {
method update (line 4738) | update() {
method changeDirection (line 4790) | changeDirection(newDirection, needUpdate) {
method changeLanguageDirection (line 4822) | changeLanguageDirection(direction) {
method mount (line 4839) | mount(el) {
method init (line 4900) | init(el) {
method destroy (line 4953) | destroy(deleteInstance, cleanStyles) {
method extendDefaults (line 5010) | static extendDefaults(newDefaults) {
method extendedDefaults (line 5014) | static get extendedDefaults() {
method defaults (line 5018) | static get defaults() {
method installModule (line 5022) | static installModule(mod) {
method use (line 5031) | static use(module) {
function Virtual (line 5050) | function Virtual(_ref) {
function Keyboard (line 5348) | function Keyboard(_ref) {
function Mousewheel (line 5479) | function Mousewheel(_ref) {
function createElementIfNotDefined (line 5899) | function createElementIfNotDefined(swiper, originalParams, params, check...
function Navigation (line 5922) | function Navigation(_ref) {
function classesToSelector (line 6129) | function classesToSelector(classes) {
function Pagination (line 6138) | function Pagination(_ref) {
function Scrollbar (line 6578) | function Scrollbar(_ref) {
function Parallax (line 6979) | function Parallax(_ref) {
function Zoom (line 7098) | function Zoom(_ref) {
function Lazy (line 7709) | function Lazy(_ref) {
function Controller (line 8001) | function Controller(_ref) {
function A11y (line 8192) | function A11y(_ref) {
function History (line 8547) | function History(_ref) {
function HashNavigation (line 8703) | function HashNavigation(_ref) {
function Autoplay (line 8800) | function Autoplay(_ref) {
function Thumb (line 9027) | function Thumb(_ref) {
function freeMode (line 9229) | function freeMode(_ref) {
function Grid (line 9487) | function Grid(_ref) {
function appendSlide (line 9605) | function appendSlide(slides) {
function prependSlide (line 9633) | function prependSlide(slides) {
function addSlide (line 9668) | function addSlide(index, slides) {
function removeSlide (line 9733) | function removeSlide(slidesIndexes) {
function removeAllSlides (line 9781) | function removeAllSlides() {
function Manipulation (line 9792) | function Manipulation(_ref) {
function effectInit (line 9805) | function effectInit(params) {
function effectTarget (line 9868) | function effectTarget(effectParams, $slideEl) {
function effectVirtualTransitionEnd (line 9879) | function effectVirtualTransitionEnd(_ref) {
function EffectFade (line 9916) | function EffectFade(_ref) {
function EffectCube (line 9985) | function EffectCube(_ref) {
function createShadow (line 10180) | function createShadow(params, $slideEl, side) {
function EffectFlip (line 10193) | function EffectFlip(_ref) {
function EffectCoverflow (line 10313) | function EffectCoverflow(_ref) {
function EffectCreative (line 10416) | function EffectCreative(_ref) {
function EffectCards (line 10568) | function EffectCards(_ref) {
FILE: src/js/btoc.js
function Btoc (line 1) | function Btoc(tocList, contentElement) {
function register (line 88) | function register($toc) {
FILE: src/js/common.js
method initWidget (line 6) | initWidget() {
method initActions (line 18) | initActions() {
method initTocAndNotice (line 48) | initTocAndNotice() {
method initBanner (line 66) | initBanner() {
method initGallery (line 91) | initGallery() {
method initMode (line 101) | initMode() {
method initNavbar (line 123) | initNavbar() {
method initDropMenu (line 153) | initDropMenu() {
method initScroll (line 176) | initScroll() {
method searchDialog (line 205) | searchDialog() {
method drawerMobile (line 216) | drawerMobile() {
method back2Top (line 255) | back2Top() {
method searchMobile (line 261) | searchMobile() {
method maskClose (line 285) | maskClose() {
method sideMenuMobile (line 305) | sideMenuMobile() {
method initEvent (line 327) | initEvent() {
method offscreenTip (line 348) | offscreenTip() {
method initCarousel (line 371) | initCarousel() {
method sparkInput (line 394) | sparkInput() {
method loveTime (line 403) | loveTime() {
method websiteTime (line 448) | websiteTime() {
method initEffects (line 483) | initEffects() {
method loadMaintain (line 495) | loadMaintain() {
method showThemeVersion (line 500) | showThemeVersion() {
FILE: src/js/cursor/click/firework.js
class Circle (line 3) | class Circle {
method constructor (line 4) | constructor({ origin, speed, color, angle, context }) {
method draw (line 14) | draw() {
method move (line 21) | move() {
class Boom (line 28) | class Boom {
method constructor (line 29) | constructor({ origin, context, circleCount = 10, area }) {
method randomArray (line 38) | randomArray(range) {
method randomColor (line 44) | randomColor() {
method randomRange (line 49) | randomRange(start, end) {
method init (line 53) | init() {
method move (line 66) | move() {
method draw (line 78) | draw() {
class CursorSpecialEffects (line 83) | class CursorSpecialEffects {
method constructor (line 84) | constructor() {
method handleMouseDown (line 98) | handleMouseDown(e) {
method handlePageHide (line 112) | handlePageHide() {
method init (line 117) | init() {
method run (line 133) | run() {
FILE: src/js/cursor/click/granule.js
function t (line 4) | function t(t) {
function e (line 7) | function e(t) {
function n (line 10) | function n(t) {
function i (line 13) | function i(t) {
function o (line 16) | function o(t) {
function r (line 19) | function r(t, e, n) {
function a (line 25) | function a(t, e) {
function c (line 30) | function c(t) {
function s (line 36) | function s(t) {
function e (line 270) | function e(t, e, n) {
FILE: src/js/cursor/click/heart.js
function r (line 2) | function r() {
function n (line 9) | function n() {
function o (line 16) | function o(e) {
function i (line 28) | function i(e) {
function c (line 39) | function c() {
FILE: src/js/cursor/move/bubbleCursor.js
function bubbleCursor (line 1) | function bubbleCursor(options) {
FILE: src/js/cursor/move/emojiCursor.js
function emojiCursor (line 1) | function emojiCursor(options) {
FILE: src/js/cursor/move/fairyDustCursor.js
function fairyDustCursor (line 1) | function fairyDustCursor(options) {
FILE: src/js/cursor/move/followingDotCursor.js
function followingDotCursor (line 1) | function followingDotCursor(options) {
FILE: src/js/cursor/move/ghostCursor.js
function ghostCursor (line 1) | function ghostCursor(options) {
FILE: src/js/cursor/move/snowflakeCursor.js
function snowflakeCursor (line 1) | function snowflakeCursor(options) {
FILE: src/js/cursor/move/springyEmojiCursor.js
function springyEmojiCursor (line 4) | function springyEmojiCursor(options) {
FILE: src/js/cursor/move/trailingCursor.js
function trailingCursor (line 4) | function trailingCursor(options) {
FILE: src/js/dprogress.js
function clamp (line 38) | function clamp(n, min, max) {
FILE: src/js/dshare.js
function defaultConfig (line 48) | function defaultConfig() {
method create (line 67) | create(element, options) {
method sharePoster (line 90) | sharePoster(options) {
function createWechatShare (line 100) | function createWechatShare(config, element) {
function triggerPosterShare (line 110) | function triggerPosterShare(config) {
function buildConfig (line 145) | function buildConfig(options) {
function getMetaContentByName (line 171) | function getMetaContentByName(name) {
function makeUrl (line 183) | function makeUrl(site, config) {
FILE: src/js/editor-options.js
function handleCustomElement (line 121) | function handleCustomElement() {
function handleEmojiImg (line 155) | function handleEmojiImg() {
FILE: src/js/effects/circleMagic.js
function initContainer (line 21) | function initContainer() {
function initCanvas (line 41) | function initCanvas() {
function addListeners (line 49) | function addListeners() {
function scrollCheck (line 54) | function scrollCheck() {
function resize (line 63) | function resize() {
function animate (line 70) | function animate() {
function randomColor (line 83) | function randomColor() {
function Circle (line 93) | function Circle() {
FILE: src/js/effects/lantern.js
function styleInject (line 8) | function styleInject(css, ref) {
function createElement (line 42) | function createElement() {
FILE: src/js/effects/sakura.js
function Sakura (line 8) | function Sakura(x, y, s, r, fn) {
function getRandom (line 66) | function getRandom(option) {
function startSakura (line 103) | function startSakura() {
function stopp (line 144) | function stopp() {
FILE: src/js/effects/snowflake.js
function snowFall (line 2) | function snowFall(snow) {
function snowCanvas (line 37) | function snowCanvas() {
function flakeMove (line 58) | function flakeMove(canvasWidth, canvasHeight, flakeSize, fallSpeed) {
function createFlakes (line 114) | function createFlakes() {
function drawSnow (line 124) | function drawSnow() {
FILE: src/js/effects/universe.js
function windowResizeHandler (line 31) | function windowResizeHandler() {
function createUniverse (line 48) | function createUniverse() {
function draw (line 57) | function draw() {
function Star (line 69) | function Star() {
function getProbability (line 138) | function getProbability(percents) {
function getRandInterval (line 142) | function getRandInterval(min, max) {
FILE: src/js/journals.js
method initEvent (line 4) | initEvent() {
method initLike (line 29) | initLike() {
method foldJournals (line 33) | foldJournals() {
FILE: src/js/mew-custom.js
class MewElement (line 1) | class MewElement extends HTMLElement {
method constructor (line 2) | constructor() {
method drawComplete (line 8) | drawComplete() {
method init (line 17) | init() {
method init (line 55) | init() {
method constructor (line 66) | constructor() {
method render (line 98) | render() {
method disconnectedCallback (line 134) | disconnectedCallback() {
method init (line 143) | init() {
method init (line 162) | init() {
method connectedCallback (line 189) | connectedCallback() {
method init (line 203) | init() {
method init (line 238) | init() {
method init (line 256) | init() {
method init (line 273) | init() {
method init (line 291) | init() {
method init (line 302) | init() {
method init (line 324) | init() {
method init (line 341) | init() {
method init (line 357) | async init() {
method init (line 392) | init() {
method init (line 414) | init() {
method render (line 434) | render() {
method init (line 450) | init() {
FILE: src/js/photos.js
method initEvent (line 88) | initEvent() {
method initPhotos (line 117) | initPhotos() {
FILE: src/js/post.js
method initCodeBlock (line 4) | initCodeBlock() {
method initLiterature (line 77) | initLiterature() {
method initLike (line 86) | initLike() {
method initHighlighting (line 90) | initHighlighting() {
method initShare (line 97) | initShare() {
method initClipboard (line 104) | initClipboard() {
method foldImage (line 119) | foldImage() {
method initEvent (line 143) | initEvent() {
FILE: src/js/settings.js
function parse2dom (line 103) | function parse2dom(str){
FILE: src/js/spark-input.js
function randomColor (line 2) | function randomColor() {
function randomCode (line 5) | function randomCode() {
function buildFragment (line 8) | function buildFragment(r) {
function start (line 17) | function start() {
FILE: src/js/sw.js
function isExitInUrlList (line 90) | function isExitInUrlList(list, url) {
function isSameRequest (line 103) | function isSameRequest(urla, urlb) {
function handleRequest (line 243) | function handleRequest(req, isCdnAndCache) {
function createPromiseAny (line 257) | function createPromiseAny() {
function fetchAny (line 281) | function fetchAny(originUrl, urls) {
FILE: src/js/utils.js
class Emoji (line 1) | class Emoji {
method constructor (line 2) | constructor(name, fileName) {
method isMobile (line 105) | isMobile() {
method cachedScript (line 121) | cachedScript(url, callback) {
method formatDate (line 134) | formatDate(date, fmt = 'yyyy-MM-dd') {
method getUrlParams (line 164) | getUrlParams() {
method randomColor (line 199) | randomColor(factor) {
method request (line 204) | request({
method initLikeButton (line 253) | initLikeButton(buttonSelect, type) {
method initLikeEvent (line 267) | initLikeEvent(buttonSelect, type, likeNumFunc) {
method baiduPush (line 292) | baiduPush() {
method toutiaoPush (line 304) | toutiaoPush() {
method sleep (line 313) | sleep(ms = 250) {
method foldBlock (line 317) | foldBlock($container) {
method removeClassByPrefix (line 333) | removeClassByPrefix(el, prefix) {
method animateScroll (line 348) | animateScroll(element, time, headingsOffset, callback) {
method renderedEmojiHtml (line 373) | renderedEmojiHtml(html) {
Condensed preview — 220 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,963K chars).
[
{
"path": ".eslintignore",
"chars": 7,
"preview": "source/"
},
{
"path": ".eslintrc.js",
"chars": 535,
"preview": "module.exports = {\n 'env': {\n 'browser': true,\n 'es2021': true\n },\n 'extends': 'eslint:recommended',\n 'overrid"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 1445,
"preview": "name: BUG 提交\ndescription: 提交 Bug 反馈\ntitle: 'bug:'\nlabels: [bug]\nbody:\n - type: markdown\n id: preface\n attributes:"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 199,
"preview": "blank_issues_enabled: true\ncontact_links:\n - name: 加入主题交流群\n url: https://qm.qq.com/cgi-bin/qm/qr?k=X7p7Bs21cgtkQ0dRf"
},
{
"path": ".github/ISSUE_TEMPLATE/custom_config.yml",
"chars": 846,
"preview": "name: 定制化配置\ndescription: 提交定制化配置疑问\ntitle: 'custom:'\nlabels: [custom]\nbody:\n - type: markdown\n id: preface\n attrib"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yml",
"chars": 987,
"preview": "name: 新特性建议\ndescription: 提交新特性建议\ntitle: 'feat:'\nbody:\n - type: markdown\n id: preface\n attributes:\n value: \"你"
},
{
"path": ".gitignore",
"chars": 50,
"preview": "*.iml\n.idea/\nnode_modules/\ndist/\npackage-lock.json"
},
{
"path": ".npmignore",
"chars": 49,
"preview": "/node_modules/*\n/.idea/*\n/.git/*\n/.github/*\n/dist"
},
{
"path": ".npmrc",
"chars": 58,
"preview": "shamefully-hoist=true\nregistry=https://registry.npmjs.org\n"
},
{
"path": "404.ftl",
"chars": 151,
"preview": "<#include \"template/errorpage.ftl\">\n<@errorpage \"找不到网页\",\"无法找到该文章或分类,可能已被删除,去<a href='${blog_url}'>首页</a>看看吧。\",\"${status!"
},
{
"path": "500.ftl",
"chars": 121,
"preview": "<#include \"template/errorpage.ftl\">\n<@errorpage \"服务器繁忙\",\"围观群众太过热情,服务器繁忙,请稍后访问。\",\"${status!}\",\"${error!}\",\"${message!}\" /"
},
{
"path": "LICENSE",
"chars": 1073,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2021 Nineya\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "README.md",
"chars": 3997,
"preview": "<p align=\"center\">\n<img src=\"https://cdn.jsdelivr.net/gh/nineya/halo-theme-dream/screenshot.png\" alt=\"halo-theme-dream\" "
},
{
"path": "archives.ftl",
"chars": 2289,
"preview": "<#include \"template/layout.ftl\">\n<@layout title=\"归档 - ${blog_title!}\" canonical=\"${archives_url!}\">\n <#if (archives)?"
},
{
"path": "categories.ftl",
"chars": 1402,
"preview": "<#include \"template/layout.ftl\">\n<#macro categoriesTree categories>\n <#list categories as category>\n <li>\n "
},
{
"path": "category.ftl",
"chars": 875,
"preview": "<#include \"template/layout.ftl\">\n<@layout title=\"分类:${category.name!} - ${blog_title!}\" canonical=\"${category.fullPath!}"
},
{
"path": "gulpfile.js",
"chars": 4045,
"preview": "const {src, dest, task, series, parallel} = require('gulp')\nconst webpack = require('webpack-stream')\nconst less = requi"
},
{
"path": "index.ftl",
"chars": 6065,
"preview": "<#include \"template/layout.ftl\">\n<#global is_first_index=(posts.number == 0) >\n<#macro model_build option>\n <#if !opt"
},
{
"path": "journals.ftl",
"chars": 2250,
"preview": "<#include \"template/layout.ftl\">\n<#include \"template/main/comment.ftl\">\n<@layout title=\"${journals_title!'动态'} - ${blog_"
},
{
"path": "links.ftl",
"chars": 4202,
"preview": "<#include \"template/layout.ftl\">\n<@layout title=\"${links_title!'友情链接'} - ${blog_title!}\" canonical=\"${links_url!}\">\n "
},
{
"path": "mail_template/mail_notice.ftl",
"chars": 6752,
"preview": "<#assign emojis={'呵呵':'hehe','哈哈':'haha','吐舌':'tushe','啊':'a','酷':'ku','怒':'nu','开心':'kaixin','汗':'han','泪':'lei','黑线':'"
},
{
"path": "mail_template/mail_reply.ftl",
"chars": 7076,
"preview": "<#assign emojis={'呵呵':'hehe','哈哈':'haha','吐舌':'tushe','啊':'a','酷':'ku','怒':'nu','开心':'kaixin','汗':'han','泪':'lei','黑线':'"
},
{
"path": "package.json",
"chars": 1416,
"preview": "{\n \"name\": \"halo-theme-dream\",\n \"version\": \"3.2.4\",\n \"description\": \"梦之城,童话梦境,动漫类型博客主题。\",\n \"main\": \"index.js\",\n \"au"
},
{
"path": "photos.ftl",
"chars": 916,
"preview": "<#include \"template/layout.ftl\">\n<@layout title=\"${photos_title!'我的相册'} - ${blog_title!}\" canonical=\"${photos_url!}\">\n "
},
{
"path": "post.ftl",
"chars": 191,
"preview": "<#include \"template/layout.ftl\">\n<#include \"template/main/article.ftl\">\n<@layout title=\"${post.title!} - ${blog_title!}\""
},
{
"path": "post_literature.ftl",
"chars": 212,
"preview": "<#include \"template/layout.ftl\">\n<#include \"template/main/article_literature.ftl\">\n<@layout title=\"${post.title!} - ${bl"
},
{
"path": "post_password.ftl",
"chars": 4039,
"preview": "<#include \"template/layout.ftl\">\n<#include \"template/main/article.ftl\">\n<@layout title=\"私密内容访问 - ${blog_title!}\" canonic"
},
{
"path": "search.ftl",
"chars": 621,
"preview": "<#include \"template/layout.ftl\">\n<@layout title=\"搜索:${keyword} - ${blog_title!}\" canonical=\"${blog_url!}/search?keyword="
},
{
"path": "settings.yaml",
"chars": 45896,
"preview": "basic_info:\n label: '基础信息'\n items:\n access_key:\n name: access_key\n label: '<必填> AccessKey'\n type: te"
},
{
"path": "sheet.ftl",
"chars": 194,
"preview": "<#include \"template/layout.ftl\">\n<#include \"template/main/article.ftl\">\n<@layout title=\"${sheet.title} - ${blog_title!}\""
},
{
"path": "sheet_literature.ftl",
"chars": 215,
"preview": "<#include \"template/layout.ftl\">\n<#include \"template/main/article_literature.ftl\">\n<@layout title=\"${sheet.title} - ${bl"
},
{
"path": "source/lib/halo-comment@1.1.7/demo.html",
"chars": 186,
"preview": "<!doctype html><meta charset=\"utf-8\"><title>halo-comment demo</title><script src=\"https://unpkg.com/vue@2\"></script><scr"
},
{
"path": "source/lib/halo-comment@1.1.7/halo-comment.js",
"chars": 632453,
"preview": "/******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 6587:\n/***/ (function(__unused_"
},
{
"path": "source/lib/highlightjs@11.5.1/LICENSE",
"chars": 1514,
"preview": "BSD 3-Clause License\n\nCopyright (c) 2006, Ivan Sagalaev.\nAll rights reserved.\n\nRedistribution and use in source and bina"
},
{
"path": "source/lib/highlightjs@11.5.1/README.md",
"chars": 1715,
"preview": "# Highlight.js CDN Assets\n\n[](https://packagephobia.no"
},
{
"path": "source/lib/highlightjs@11.5.1/es/core.js",
"chars": 75179,
"preview": "/*!\n Highlight.js v11.5.1 (git: b8f233c8e2)\n (c) 2006-2022 Ivan Sagalaev and other contributors\n License: BSD-3-Claus"
},
{
"path": "source/lib/highlightjs@11.5.1/es/highlight.js",
"chars": 292147,
"preview": "/*!\n Highlight.js v11.5.1 (git: b8f233c8e2)\n (c) 2006-2022 Ivan Sagalaev and other contributors\n License: BSD-3-Claus"
},
{
"path": "source/lib/highlightjs@11.5.1/es/package.json",
"chars": 20,
"preview": "{ \"type\": \"module\" }"
},
{
"path": "source/lib/highlightjs@11.5.1/highlight.js",
"chars": 339369,
"preview": "/*!\n Highlight.js v11.5.1 (git: b8f233c8e2)\n (c) 2006-2022 Ivan Sagalaev and other contributors\n License: BSD-3-Claus"
},
{
"path": "source/lib/highlightjs@11.5.1/package.json",
"chars": 2870,
"preview": "{\n \"name\": \"@highlightjs/cdn-assets\",\n \"description\": \"Syntax highlighting with language autodetection. (pre-compiled "
},
{
"path": "source/lib/jquery-pjax@2.0.1/jquery.pjax.js",
"chars": 25260,
"preview": "/*!\n * Copyright 2012, Chris Wanstrath\n * Released under the MIT License\n * https://github.com/defunkt/jquery-pjax\n */\n\n"
},
{
"path": "source/lib/katex@0.12.0/README.md",
"chars": 4451,
"preview": "# [<img src=\"https://katex.org/img/katex-logo-black.svg\" width=\"130\" alt=\"KaTeX\">](https://katex.org/)\n[ {\n\tif(typeof exports === 'object' && typeof module === 'object"
},
{
"path": "source/lib/katex@0.12.0/contrib/auto-render.mjs",
"chars": 6485,
"preview": "import katex from '../katex.mjs';\n\n/* eslint no-constant-condition:0 */\nconst findEndOfMath = function findEndOfMath(del"
},
{
"path": "source/lib/katex@0.12.0/contrib/copy-tex.css",
"chars": 462,
"preview": "/* Force selection of entire .katex/.katex-display blocks, so that we can\n * copy/paste the entire source code. If you "
},
{
"path": "source/lib/katex@0.12.0/contrib/copy-tex.js",
"chars": 7634,
"preview": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object"
},
{
"path": "source/lib/katex@0.12.0/contrib/copy-tex.mjs",
"chars": 2814,
"preview": "// Set these to how you want inline and display math to be delimited.\nconst defaultCopyDelimiters = {\n inline: ['$', '$"
},
{
"path": "source/lib/katex@0.12.0/contrib/mathtex-script-type.js",
"chars": 5382,
"preview": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object"
},
{
"path": "source/lib/katex@0.12.0/contrib/mathtex-script-type.mjs",
"chars": 755,
"preview": "import katex from '../katex.mjs';\n\nlet scripts = document.body.getElementsByTagName(\"script\");\nscripts = Array.prototype"
},
{
"path": "source/lib/katex@0.12.0/contrib/mhchem.js",
"chars": 80584,
"preview": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object"
},
{
"path": "source/lib/katex@0.12.0/contrib/mhchem.mjs",
"chars": 75541,
"preview": "import katex from '../katex.mjs';\n\n/* eslint-disable */\n\n/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level:"
},
{
"path": "source/lib/katex@0.12.0/contrib/render-a11y-string.js",
"chars": 24360,
"preview": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object"
},
{
"path": "source/lib/katex@0.12.0/contrib/render-a11y-string.mjs",
"chars": 19476,
"preview": "import katex from '../katex.mjs';\n\n/**\n * renderA11yString returns a readable string.\n *\n * In some cases the string wil"
},
{
"path": "source/lib/katex@0.12.0/katex.css",
"chars": 25725,
"preview": "/* stylelint-disable font-family-no-missing-generic-family-keyword */\n@font-face {\n font-family: 'KaTeX_AMS';\n src: ur"
},
{
"path": "source/lib/katex@0.12.0/katex.js",
"chars": 592280,
"preview": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object"
},
{
"path": "source/lib/katex@0.12.0/katex.mjs",
"chars": 558496,
"preview": "/**\n * Lexing or parsing positional information for error reporting.\n * This object is immutable.\n */\nclass SourceLocati"
},
{
"path": "source/lib/live2d@1.0.1/waifu-tips.json",
"chars": 5586,
"preview": "{\n \"waifu\": {\n \"console_open_msg\": [\"哈哈,你打开了控制台,是想要看看我的秘密吗?\"],\n \"copy_message\": [\"你都复制了些什么呀,转载要记得加上出处哦\""
},
{
"path": "source/lib/swiper@8.4.6/swiper-bundle.css",
"chars": 19328,
"preview": "/**\n * Swiper 8.4.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://sw"
},
{
"path": "source/lib/swiper@8.4.6/swiper-bundle.js",
"chars": 339074,
"preview": "/**\n * Swiper 8.4.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://sw"
},
{
"path": "src/css/celebration.less",
"chars": 4524,
"preview": "html.celebration {\n --main: hsla(0, 0%, 100%, 0.9);\n --theme: #ff3b3b!important;\n --background: rgba(201, 57, 58, 0.9"
},
{
"path": "src/css/cursor.less",
"chars": 704,
"preview": "@default: var(--cursor-default);\n@pointer: var(--cursor-pointer);\n@text: var(--cursor-text);\n@zoom-in: var(--cursor-zoom"
},
{
"path": "src/css/dshare.less",
"chars": 6211,
"preview": "@charset \"utf-8\";\n/* CSS Document */\n@font-face {\n font-family: \"dshare\";\n src: url(\"../font/dshare.woff2\") format(\"wo"
},
{
"path": "src/css/mew-custom.less",
"chars": 31877,
"preview": "@charset \"utf-8\";\n/* CSS Document */\nmew-hide {\n display: block;\n cursor: pointer;\n overflow: hidden;\n position: rel"
},
{
"path": "src/css/post.less",
"chars": 6414,
"preview": "@charset \"utf-8\";\n/* CSS Document */\n\n.admire {\n margin: 30px 0 18px 0;\n text-align: center;\n\n &-content {\n user-s"
},
{
"path": "src/css/style.less",
"chars": 94703,
"preview": "@charset \"utf-8\";\n/* CSS Document */\n// 移动设备最大宽度\n@mobile-max-width: 768px;\n// 平板最小宽度\n@table-min-width: 769px;\n// 笔记本电脑最小"
},
{
"path": "src/css/theme.less",
"chars": 2273,
"preview": "@charset \"utf-8\";\n/* CSS Document */\n// 全局CSS变量\nhtml {\n --theme: #50bfff;\n --main: #606266;\n --title: #444;\n --backg"
},
{
"path": "src/js/autoload.js",
"chars": 2722,
"preview": "try {\n ($('<link>').attr({href: '/themes/dream/source/lib/live2d@1.0.1/waifu.min.css', rel: 'stylesheet', type: 'text/c"
},
{
"path": "src/js/btoc.js",
"chars": 6158,
"preview": "function Btoc(tocList, contentElement) {\n this.tocList = tocList\n this.elementList = getChild(contentElement, this.toc"
},
{
"path": "src/js/common.js",
"chars": 18467,
"preview": "window.encrypt = (str) => window.btoa(unescape(encodeURIComponent(str)))\nwindow.decrypt = (str) => decodeURIComponent(es"
},
{
"path": "src/js/cursor/click/firework.js",
"chars": 4179,
"preview": "/**************** 光标渲染 *******************/\n\nclass Circle {\n constructor({ origin, speed, color, angle, context }) {\n "
},
{
"path": "src/js/cursor/click/granule.js",
"chars": 9834,
"preview": "$(function () {\n let t = function () {\n 'use strict'\n function t(t) {\n return '[object Array]' === Object.pr"
},
{
"path": "src/js/cursor/click/heart.js",
"chars": 1876,
"preview": "!function (e, t, a) {\n function r() {\n for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e]"
},
{
"path": "src/js/cursor/click/prosperous.js",
"chars": 801,
"preview": "var a_idx = 0\njQuery(document).ready(function ($) {\n $('body').click(function (e) {\n var a = ['富强', '民主', '文明', '和谐'"
},
{
"path": "src/js/cursor/move/bubbleCursor.js",
"chars": 3780,
"preview": "function bubbleCursor(options) {\n let hasWrapperEl = options && options.element\n let element = hasWrapperEl || documen"
},
{
"path": "src/js/cursor/move/emojiCursor.js",
"chars": 4869,
"preview": "function emojiCursor(options) {\n const possibleEmoji = (options && options.emoji) || ['😀', '😂', '😆', '😊']\n let hasWrap"
},
{
"path": "src/js/cursor/move/fairyDustCursor.js",
"chars": 4818,
"preview": "function fairyDustCursor(options) {\n let possibleColors = (options && options.colors) || [\n '#D61C59',\n '#E7D84B'"
},
{
"path": "src/js/cursor/move/followingDotCursor.js",
"chars": 2357,
"preview": "function followingDotCursor(options) {\n let hasWrapperEl = options && options.element\n let element = hasWrapperEl || d"
},
{
"path": "src/js/cursor/move/ghostCursor.js",
"chars": 4605,
"preview": "function ghostCursor(options) {\n let hasWrapperEl = options && options.element\n let element = hasWrapperEl || document"
},
{
"path": "src/js/cursor/move/snowflakeCursor.js",
"chars": 4647,
"preview": "function snowflakeCursor(options) {\n let hasWrapperEl = options && options.element\n let element = hasWrapperEl || docu"
},
{
"path": "src/js/cursor/move/springyEmojiCursor.js",
"chars": 6294,
"preview": "// The springy emoji effect has been translated over from this old\n// code, to modern js & canvas\n// - http://www.yaldex"
},
{
"path": "src/js/cursor/move/trailingCursor.js",
"chars": 4468,
"preview": "// The trailing cursor's easing has bene pulled from this demo\n// - https://codepen.io/jakedeakin/full/MWKQVxX\n\nfunction"
},
{
"path": "src/js/dprogress.js",
"chars": 3380,
"preview": "(function() {\n var DProgress = {}\n\n var Settings = DProgress.settings = {\n minimum: 0.08, // 最小值\n easing: '"
},
{
"path": "src/js/dshare.js",
"chars": 6535,
"preview": "import QRCode from 'qrcode'\nimport html2canvas from 'html2canvas'\n\nconst channels = {\n qq: {\n name: 'QQ',\n templa"
},
{
"path": "src/js/editor-options.js",
"chars": 5867,
"preview": "(function () {\n const customElement = [\n {\n value: '<mew-subtitle>$副标题</mew-subtitle>',\n html: 'mew-subtit"
},
{
"path": "src/js/effects/circleMagic.js",
"chars": 3460,
"preview": "(function ($) {\n $.fn.circleMagic = function (options) {\n\n let width, height, canvas, ctx, animateHeader = true\n "
},
{
"path": "src/js/effects/lantern.js",
"chars": 5795,
"preview": "(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory()\n}((function () { 'u"
},
{
"path": "src/js/effects/sakura.js",
"chars": 62809,
"preview": "(function () {\n let stop, staticx\n const mode = DreamConfig.effects_sakura_mode\n const canvas = document.createElemen"
},
{
"path": "src/js/effects/snowflake.js",
"chars": 4420,
"preview": "/* 控制下雪 */\nfunction snowFall(snow) {\n /* 可配置属性 */\n snow = snow || {}\n this.maxFlake = snow.maxFlake || 10 /* 最多片数 *"
},
{
"path": "src/js/effects/universe.js",
"chars": 4705,
"preview": "/**\n * created by lvfan\n * 2018-09-04\n */\n(function drawBg() {\n window.requestAnimationFrame = window.requestAnimationF"
},
{
"path": "src/js/journals.js",
"chars": 1981,
"preview": "let journalContextInitial = false\nconst journalContext = {\n /* 初始化事件 */\n initEvent() {\n if (journalContextInitial) "
},
{
"path": "src/js/mew-custom.js",
"chars": 17671,
"preview": "class MewElement extends HTMLElement {\n constructor() {\n super()\n if (this.hasAttribute('draw')) return\n this."
},
{
"path": "src/js/photos.js",
"chars": 6294,
"preview": "let photoContextInitial = false\nlet dataPromise = {}\nlet isLoading = false\nlet isEnd = false\n\nlet queryParams = {\n page"
},
{
"path": "src/js/pjax.js",
"chars": 6655,
"preview": "const cssLoadCompletes = new Set($('link[href*=\".css\"]').map((i, item) => $(item).attr('href')).get())\nconst jsLoadCompl"
},
{
"path": "src/js/post.js",
"chars": 7012,
"preview": "let postContextInitial = false\nconst postContext = {\n /* 初始化代码块 */\n initCodeBlock() {\n const $code = $('*:not(figur"
},
{
"path": "src/js/settings.js",
"chars": 9264,
"preview": "(function () {\n if (!window.initDreamSettings) {\n const styleContent = `\n.dream-option {\n display: block;\n pos"
},
{
"path": "src/js/spark-input.js",
"chars": 2458,
"preview": "const sparkInput = function(element, list) {\n function randomColor() {\n return colors[Math.floor(Math.random() * col"
},
{
"path": "src/js/sw.js",
"chars": 9987,
"preview": "(function () {\n if (self.document) {\n const currentScriptUrl = document.currentScript.src\n const uninstall = new "
},
{
"path": "src/js/utils.js",
"chars": 11124,
"preview": "class Emoji {\n constructor(name, fileName) {\n this.name = name\n this.fileName = fileName\n }\n}\n\nconst emojiData ="
},
{
"path": "tag.ftl",
"chars": 850,
"preview": "<#include \"template/layout.ftl\">\n<@layout title=\"标签:${tag.name!} - ${blog_title!}\" canonical=\"${tag.fullPath!}\">\n <#i"
},
{
"path": "tags.ftl",
"chars": 1242,
"preview": "<#include \"template/layout.ftl\">\n<@layout title=\"标签 - ${blog_title!}\" canonical=\"${tags_url!}\">\n <@tagTag method=\"lis"
},
{
"path": "template/common/actions.ftl",
"chars": 441,
"preview": "<div class=\"actions\">\n <div class=\"bullet-screen is-hidden-mobile is-hidden-all\">\n <span>弹</span>\n </div>\n "
},
{
"path": "template/common/banner.ftl",
"chars": 1022,
"preview": "<div class=\"banner\" ${(settings.banner_image ??&& settings.banner_image != '')?then('style=\"background-image: url(${sett"
},
{
"path": "template/common/config.ftl",
"chars": 10803,
"preview": "<style>\n <#assign fontSrc=(settings.web_font?? && settings.web_font!='default')?then((settings.web_font=='custom')?th"
},
{
"path": "template/common/footer.ftl",
"chars": 3570,
"preview": "<footer class=\"footer\">\n <div class=\"container\">\n <ul class=\"footer-container\">\n <li>\n "
},
{
"path": "template/common/head.ftl",
"chars": 4241,
"preview": "<title>${title!}<#if settings.small_title?? && settings.small_title!=''>|${settings.small_title!}</#if></title>\n<#if set"
},
{
"path": "template/common/navbar.ftl",
"chars": 13795,
"preview": "<#macro navbar>\n<header class=\"navbar\">\n <div class=\"navbar-above\">\n <div class=\"container<#if settings.sideba"
},
{
"path": "template/common/scripts.ftl",
"chars": 3067,
"preview": "<script src=\"${theme_base!}/source/js/utils.min.js?mew=${theme.version!}\"></script>\n<#if (sidebar_toc!false) || settings"
},
{
"path": "template/common/widget.ftl",
"chars": 460,
"preview": "<#macro widget position>\n<aside class=\"column column-side column-${position} ${settings[position+'_sidebar_sticky']!'non"
},
{
"path": "template/errorpage.ftl",
"chars": 1177,
"preview": "<#include \"layout.ftl\">\n<#include \"main/article_list.ftl\">\n<#global is_error = true>\n<#macro errorpage etitle,desc,statu"
},
{
"path": "template/layout.ftl",
"chars": 1161,
"preview": "<#macro layout0 title,canonical>\n <#if RequestParameters?? && RequestParameters._pjax?? >\n <#global is_pjax=Re"
},
{
"path": "template/layout_default.ftl",
"chars": 1229,
"preview": "<#macro layout_default title,canonical>\n <#include \"common/widget.ftl\">\n <#import \"common/navbar.ftl\" as nav>\n "
},
{
"path": "template/layout_pjax.ftl",
"chars": 279,
"preview": "<#macro layout_pjax title,canonical>\n <!DOCTYPE html>\n <html lang=\"zh\">\n <head>\n <#include \"common/head."
},
{
"path": "template/main/admire.ftl",
"chars": 1511,
"preview": "<#assign donate = ((metas?? && metas.enable_donate?? && metas.enable_donate?trim!='')?then(metas.enable_donate?trim == '"
},
{
"path": "template/main/article.ftl",
"chars": 5236,
"preview": "<#macro article post,commentType>\n <#local thumbnail = (post.thumbnail?? && post.thumbnail!='')?then(post.thumbnail!,"
},
{
"path": "template/main/article_list.ftl",
"chars": 10909,
"preview": "<#macro article_list posts>\n <#list posts as post>\n <#local thumbnail = (post.thumbnail?? && post.thumbnail!='"
},
{
"path": "template/main/article_literature.ftl",
"chars": 5096,
"preview": "<#macro articleLiterature post,commentType>\n <#if post.thumbnail?? && post.thumbnail!=''>\n <div class=\"card wi"
},
{
"path": "template/main/comment.ftl",
"chars": 1829,
"preview": "<#macro comment id,type>\n <#assign imageUploadApi = (settings.image_upload_api?? && settings.image_upload_api!='')?th"
},
{
"path": "template/main/copyright.ftl",
"chars": 905,
"preview": "<div class=\"copyright\">\n <div class=\"copyright-title\">\n <p>${post.title!}</p>\n <a href=\"${post.fullPath"
},
{
"path": "template/main/pagination.ftl",
"chars": 1358,
"preview": "<#macro pagination method,datas,slug=\"\",keyword=\"\",display=\"5\">\n <#if datas.getTotalPages() gt 1>\n <div class="
},
{
"path": "template/widget/ad_piece.ftl",
"chars": 1086,
"preview": "<#assign ad_show=(settings.ad_mode!true)?then(settings.ad_image?? && settings.ad_image != '', settings.ad_custom_code?? "
},
{
"path": "template/widget/categories.ftl",
"chars": 1818,
"preview": "<#macro categoriesTree categories>\n <#list categories as category>\n <li>\n <a class=\"level is-margin"
},
{
"path": "template/widget/custom.ftl",
"chars": 303,
"preview": "<div class=\"card widget ${sidebar.hide!}\">\n <#if sidebar.title?? && sidebar.title != '' && sidebar.icon?? && sidebar."
},
{
"path": "template/widget/links.ftl",
"chars": 1699,
"preview": "<#assign num= settings.links_num!10 />\n<div class=\"card widget links ${sidebar.hide!}\">\n <@linkTag method=\"listByRand"
},
{
"path": "template/widget/love.ftl",
"chars": 1874,
"preview": "<div class=\"card widget love brightness ${sidebar.hide!}\">\n <div class=\"card-title\">\n <i class=\"${(sidebar.icon?? &&"
},
{
"path": "template/widget/music.ftl",
"chars": 987,
"preview": "<#if ((settings.music_mode!'playlist') == 'playlist' && settings.netease_playlist_id?? && settings.netease_playlist_id!="
},
{
"path": "template/widget/notice.ftl",
"chars": 456,
"preview": "<div class=\"card widget notice ${sidebar.hide!} is-hidden-all\">\n <div class=\"card-title\">\n <i class=\"${(sideba"
},
{
"path": "template/widget/profile.ftl",
"chars": 5735,
"preview": "<div class=\"card widget profile ${sidebar.hide!}\">\n <div class=\"card-content\">\n <nav class=\"level\">\n "
},
{
"path": "template/widget/recent_comments.ftl",
"chars": 1650,
"preview": "<div class=\"card widget recent-comments ${sidebar.hide!}\">\n <div class=\"card-title\">\n <i class=\"${(sidebar.icon?"
},
{
"path": "template/widget/recent_posts.ftl",
"chars": 917,
"preview": "<div class=\"card widget recent-posts ${sidebar.hide!}\">\n <div class=\"card-title\">\n <i class=\"${(sidebar.icon?? &"
},
{
"path": "template/widget/tagcloud.ftl",
"chars": 1329,
"preview": "<#assign num= settings.tagcloud_num!32 />\n<div class=\"card widget tagcloud ${sidebar.hide!}\">\n <@tagTag method=\"list\""
},
{
"path": "template/widget/tags.ftl",
"chars": 1184,
"preview": "<#assign num= settings.tags_num!18 />\n<div class=\"card widget tags ${sidebar.hide!}\">\n <@tagTag method=\"list\">\n "
},
{
"path": "template/widget/toc.ftl",
"chars": 392,
"preview": "<#assign sidebar_toc = true>\n<div class=\"card widget toc ${sidebar.hide!} is-hidden-all\">\n <div class=\"card-title\">\n "
},
{
"path": "theme.yaml",
"chars": 761,
"preview": "# 主题id,唯一\nid: dream\n# 主题名称\nname: Dream\nauthor:\n # 作者名称\n name: nineya\n # 作者网址\n website: https://www.nineya.com\n# 主题描述"
}
]
// ... and 87 more files (download for full content)
About this extraction
This page contains the full source code of the nineya/halo-theme-dream GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 220 files (3.6 MB), approximately 941.0k tokens, and a symbol index with 1859 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.