[全量] 初始化项目代码、配置、文档及Agent协同harness

This commit is contained in:
2026-04-02 11:36:05 +08:00
parent 0553309cdf
commit 87e571d9ec
1133 changed files with 221948 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
<template>
<div class="content">
<Operates v-show="url != '/login' && url != '/writing/edit'&& url != '/knowledgeBase/fileDetail'" />
<RouterView />
</div>
</template>
<script setup lang="ts">
import { watch, ref } from "vue";
import { useRouter } from "vue-router";
import Operates from "@/components/Operates.vue";
const route = useRouter();
const url = ref("");
watch(
() => route.currentRoute.value, // 监听路由的 fullPath 属性
(newVal, oldVal) => {
url.value = newVal.path;
},
{ immediate: true } // 设置 immediate: true 以在组件挂载时立即触发一次
);
</script>
<style lang="scss" scoped>
.content {
width: 100vw;
height: 100vh;
// background: linear-gradient(180deg, #edf2ff 0%, #f7f9ff 100%),
// url("./assets/images/chat/chatLogo.png") no-repeat;
background-color: #edf2ffcc;
background-image: url("./assets/images/chat/chatLogo.png");
background-size: 45%;
background-position: right bottom;
background-blend-mode: unset;
background-repeat: no-repeat;
// background-size: 45%;
// background-position: right bottom;
display: flex;
.chatLogo {
width: 764px;
height: 700px;
position: absolute;
right: 0px;
bottom: 0px;
z-index: 0;
}
}
</style>

View File

@@ -0,0 +1,999 @@
import type { AxiosProgressEvent, GenericAbortSignal } from 'axios'
import { del, get, post, put } from '@/utils/request'
// 获取配置信息
export function fetchChatConfig<T>() {
return get<T>({
url: '/app/api/config',
})
}
// 登录
export function fetchVerify<T>(data: object) {
return get<T>({
url: '/app/api/oauth/token',
data,
})
}
// 获取用户信息
export function fetchSession<T>() {
return get<T>({
url: '/app/user',
})
}
// 获取用户可用模型信息
export function fetchModel<T>() {
return get<T>({
url: '/app/user/model',
})
}
// 修改个人信息
export function updateUser<T>(data: object) {
return put<T>({
url: '/app/user',
data,
})
}
// 开启上下文
export function updateContext<T>(data: object) {
return put<T>({
url: '/app/user/context',
data,
})
}
// 修改密码
export function updatePassword<T>(data: object) {
return put<T>({
url: '/app/user/password/update',
data,
})
}
// 获取会话列表
export function listChat<T>(keyword: string = '') {
return get<T>({
url: '/app/chat',
data: {
keyword: keyword
}
})
}
// 获取知识库历史会话列表
export function listFileChatHistory<T=any>(fileId: number) {
return get<T>({
url: '/app/chat/fileChatMessage',
data: {
fileId: fileId,
}
})
}
// 修改历史记录的title
export function editHistoryChatTitleById<T = any>(data: object) {
return post<T>({
url: `/gpt/chat/updateChat`,
data
})
}
// 根据对话id删除历史对话
export function delHistoryChatById<T = any>(id: string) {
return post<T>({
url: `/app/chat/delMessage/${id}`,
})
}
// 清空历史对话
export function clearHistoryChat<T>() {
return post<T>({
url: '/app/chat/delMessageAll',
})
}
// 获取知识工具
export function queryknowledgetools<T>() {
return get<T>({
url: '/gpt/chat/prompt?chatType=agent_chat',
})
}
// 获取会话内容
export function listChatMessage<T=any>(data: object) {
return get<T>({
url: '/app/chat/message',
data,
})
}
// 修改绘画内容
export function updatelistcontent<T>(data: object) {
return put<T>({
url: '/gpt/chat/',
data,
})
}
// 删除会话
export function removeChat<T>(chatNumber: any) {
return post<T>({
url: `/gpt/chat/${chatNumber}`,
})
}
// 获取助手分类
export function listAssistantType<T>() {
return get<T>({
url: '/app/api/assistant/type',
})
}
// 根据分类获取助手
export function listAssistantByType<T>(data: {
current: number
size: number
typeId: number
}) {
return get<T>({
url: '/app/api/assistant',
data,
})
}
// 随机获取助手
export function listAssistantRandom<T>() {
return get<T>({
url: '/app/api/assistant/random',
})
}
// ****************************主页对话 - 开始********************************
// 创建对话获取chatIdchatNumber
export function fetchChatAPI<T = any>(data: Chat.ChatRequest) {
return post<T>({
url: '/app/chat',
data,
})
}
// 普通对话-发送消息以获取conversationId
export function fetchConversationId<T = any>(data: Chat.MessageRequest) {
return post<T>({
url: '/app/chat/message',
data,
})
}
export function interrupt<T = any>(data: any) {
return post<T>({
url: '/gpt/chat-message/interrupt',
data,
})
}
// 普通对话-流式响应聊天
export function fetchChatAPIProcess<T = any>(params: {
conversationId: string
promptName: string
signal?: GenericAbortSignal
onDownloadProgress: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
conversationId: params.conversationId,
promptName: params.promptName,
}
return get<T>({
url: '/app/chat/stream',
data,
signal: params.signal,
onDownloadProgress: params.onDownloadProgress,
})
}
// 普通对话-获取对话名称
export function getTitle<T = any>(data: any) {
return post<T>({
url: '/app/chat/getTitle',
data
})
}
// 获取历史文件会话的信息
export function fetchFileInfo<T = any>(data: { chatNumber: string }) {
return get<T>({
url: '/gpt/file/list',
data,
})
}
// 文件对话-流式响应聊天
export function fetchFileChatAPIProcess<T = any>(params: {
conversationId: string
signal?: GenericAbortSignal
knowledgeId?: string
fileName?: string
context?: string
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
conversationId: params.conversationId,
knowledgeId: params.knowledgeId,
fileName: params.fileName,
context: params.context,
}
return post<T>({
url: '/gpt/file/fileTalk',
data,
signal: params.signal,
onDownloadProgress: params.onDownloadProgress,
})
}
// 根据消息id获取当前内容
export function fetchChatMessageById<T = any>(messageId: string) {
return get<T>({
url: `/app/chat/message/${messageId}`,
})
}
// 根据消息id删除当前内容
export function deleteChatMessageById<T = any>(messageId: string) {
return post<T>({
url: `/app/chat/message/${messageId}`,
})
}
// KGO插件对话
export function KGOPlugin<T = any>(params: {
conversationId: string
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
conversationId: params.conversationId,
}
return get<T>({
url: '/gpt/agentTalk',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
export function metaPlugin<T = any>(params: {
conversationId: string
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
conversationId: params.conversationId,
}
return get<T>({
url: '/metallurgy/searchTalk',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
// 获取知领文献列表
export function fetchLiteratureList<T>() {
return get<T>({
url: '/knowledgeChat/knowledgeBaseList',
})
}
// 知领文献对话
export function LiteratureChat<T = any>(params: {
conversationId: string
promptName: string
knowledgeBaseNamelist: any
onDownloadProgress: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
conversationId: params.conversationId,
promptName: params.promptName,
knowledgeBaseNameList: params.knowledgeBaseNamelist,
}
return post<T>({
url: '/knowledgeChat/chat',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
// ****************************对话 - 结束********************************
// ****************************文档撰写 - 开始********************************
// 获取会话返回流--文档撰写(生成大纲)
export function createOutLine<T = any>(params: {
conversationId: string
signal?: GenericAbortSignal
promptName?: string | 'default'
knowledgeBaseIdList?: any
knowledgeBaseNameList?: any
typeDoc?: number
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
conversationId: params.conversationId,
promptName: params.promptName,
knowledgeBaseIdList: params.knowledgeBaseIdList,
knowledgeBaseNameList: params.knowledgeBaseNameList,
typeDoc: params.typeDoc,
}
return post<T>({
url: '/knowledgeChat/chat',
data,
signal: params.signal,
onDownloadProgress: params.onDownloadProgress,
})
}
// 获取会话返回流--文档撰写(问答内容)
export function sessionFlow<T = any>(params: {
conversationId: string
signal?: GenericAbortSignal
knowledgeBaseId?: any
knowledgeBaseNameList?: any
typeDoc?: number
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
conversationId: params.conversationId,
knowledgeBaseIdList: params.knowledgeBaseId,
knowledgeBaseNameList: params.knowledgeBaseNameList,
typeDoc: params.typeDoc,
}
return post<T>({
url: '/knowledgeChat/chat',
data,
signal: params.signal,
onDownloadProgress: params.onDownloadProgress,
})
}
// 获取知识库列表
export function knowledgeBaseList<T = any>(folderType: string) {
const data: Record<string, any> = {
folderType,
}
return post<T>({
url: '/gpt/knowledgeBase/getListFolder',
data,
})
}
// 改写、润色、扩写等接口请求参数
export interface WriteEditorParam {
query: string | null
type: string | null
}
export interface WriteEditorParamEx {
query: string | null
type: string | null
context: string | null
paragraphContent: string | null
conDirection: string | null
knowledgeBaseIdList: any | null
knowledgeBaseNameList: any | null
}
export interface FileGuidInfoParam{
fileId: string | null
type: string | null
context: string | null
}
export function fileGuidInfo(params:FileGuidInfoParam){
const data: Record<string, any> = {
type: params.type,
context: params.context,
}
return post<any>({
url: '/writer/answer?id='+params.fileId,
data,
})
}
export function expandKnowEx<T = WriteEditorParamEx>(
params: WriteEditorParamEx,
) {
const data: Record<string, any> = {
query: params.query,
type: params.type,
context: params.context,
paragraphContent: params.paragraphContent,
conDirection: params.conDirection,
knowledgeBaseIdList: params.knowledgeBaseIdList,
knowledgeBaseNameList: params.knowledgeBaseNameList,
}
return post<any>({
url: '/writer/answer',
data,
})
}
// 扩写
export function expandKnow<T = WriteEditorParam>(params: WriteEditorParam) {
const data: Record<string, any> = {
query: params.query,
type: params.type,
}
return post<any>({
url: '/writer/answer',
data,
})
}
// 文档撰写 - 文档列表查询
export function fileList<T>(searchWord: string) {
return post<T>({
url: '/docs/list?keyword='+searchWord,
})
}
// 文档撰写 - 保存文档
export function docSave<T>(data: any) {
return post<T>({
url: '/docs/save',
data,
})
}
// 文档撰写 - 下载文档(列表页)
export function downloadDoc<T>(docId: any) {
return get<T>({
url: `/docs/download?docId=${docId}`,
responseType: 'blob',
headers: {
'Content-Type': 'application/octet-stream',
},
})
}
// 文档撰写 - 文档预览
export function getFile<T>(docId: any) {
return get<T>({
url: `/docs/edit?docId=${docId}`,
})
}
// 文档撰写 - 文档删除
export function fileDel<T>(docId: any) {
return get<T>({
url: `/docs/delete?docId=${docId}`,
})
}
// 文档撰写 - 文件下载
export function downloadFile4Editor<T>(filedata: string) {
return get<T>({
url: '/docs/download',
data: filedata,
responseType: 'blob',
headers: {
'Content-Type': 'application/octet-stream',
},
})
}
// 文档撰写新建对话
export function newConversation<T = any>(data: any) {
return post<T>({
url: '/app/chat',
data,
})
}
// 推荐段落
export function fetchRelativeArticle<T = any>(data: any) {
return post<T>({
url: '/knowledgeChat/abstractSearch',
data,
})
}
// ****************************文档撰写 - 结束********************************
// ****************************智慧场景 - 开始********************************
// 获取智慧场景列表(全部)
export function fetchSmartPrompt<T>() {
return get<T>({
url: '/gpt/chat/getSortPrompt',
})
}
// 获取智慧场景列表(已收藏的)
export function fetchSelectedPrompt<T>() {
return get<T>({
url: '/gpt/chat/getPromptColl',
})
}
// 收藏、取消收藏
export function savePromptColl<T = any>(data: Chat.PromptColl) {
return post<T>({
url: '/gpt/chat/savePromptColl',
data,
})
}
// 搜索
export function searchPrompt<T>(data: { searchWord: string }) {
return post<T>({
url: '/gpt/assistant/searchAssistant',
data,
})
}
// ****************************智慧场景 - 结束********************************
// ****************************个人知识库 - 开始********************************
// 查询知识库列表
export function getKnowledgeBaseList<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/getListFolder',
data,
})
}
// 新建知识库
export function addKnowledgeBase<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/saveKnowledge',
data,
})
}
// 修改知识库的名字和简介
export function editKnowledgeBase<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/updateFolderInfo',
data,
})
}
// 删除知识库
export function delKnowledgeBase<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/removeFolder',
data,
})
}
// 查询知识库的内容
export function getKnowledgeBaseContent<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/getListFolder',
data,
})
}
// 新建文件夹
export function addDir<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/saveFolder',
data,
})
}
// 修改文件夹
export function editDir<T>(data: object) {
return put<T>({
url: '/gpt/knowledgeBase/updateFolderInfo',
data,
})
}
// 删除单个文件夹
export function delDir<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/removeFolder',
data,
})
}
// 上传文件
export function uploadFile<T>(data: object) {
return post<T>({
url: '/gpt/file/upload/knowledgeBase',
data,
})
}
//获取文件导读内容
export function getFileGuide<T>(fileId:string) {
return get<T>({
url: '/gpt/file/info?id='+fileId,
})
}
export function hasFileContent<T>(fileId:number) {
return get<T>({
url: '/gpt/file/hasFileContent?fileId='+fileId,
})
}
// 修改文件
export function editFile<T>(data: object) {
return post<T>({
url: '/gpt/file/updateFile',
data,
})
}
// 获取已上传文件大小
export function getSize<T>() {
return get<T>({
url: '/gpt/file/getSize',
})
}
// 批量删除
export function delFiles<T = any>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/removeFoldersAndFiles',
data,
})
}
// 删除单个文件
export function delFile<T = any>(fileId: string) {
return post<T>({
url: `/gpt/file/deleteFiles/${fileId}`,
})
}
// 下载文件
export function downloadFile<T>(data: object) {
return get<T>({
url: '/gpt/file/downloadFile',
data,
responseType: 'blob',
headers: {
'Content-Type': 'application/octet-stream',
},
})
}
/**
* 获取文件内容
* html格式
* @param data
*/
export function getFileContent<T>(data: object) {
return get<T>({
url: '/gpt/file/getFileContent',
data,
})
}
/**
* 添加笔记
* @param data
*/
export function addFileNote<T>(data: object) {
return post<T>({
url: '/gpt/file/addFileNote',
data,
})
}
/**
* 删除笔记
* @param data
*/
export function delFileNote1<T>(noteId: number) {
return get<T>({
url: '/gpt/file/delNote?noteId='
})
}
/**
* 删除笔记
* @param data
*/
export function delFileNote<T>(data: object) {
return get<T>({
url: '/gpt/file/delNote',
data
})
}
// 只查询文件夹
export function fetchFolders<T>(data: object) {
return post<T>({
url: '/gpt/knowledgeBase/getFolderOnly',
data,
})
}
// 判断文章综述、章节速览是否已经被获取过,如果已经请求过一次就从数据库拿(非流式)
export function alreadyOverviewed<T>(data: object) {
return get<T>({
url: '/gpt/knowledgeBase/getChOvIsStream',
data,
})
}
// 文章综述——普通
export function normalDocumentOverview<T = any>(data: object) {
return get<T>({
url: '/gpt/knowledgeBase/articleOverview',
data,
})
}
// 文章综述——流式
export function streamDocumentOverview<T = any>(params: {
knowledgeBaseId: number
fileId: any
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
knowledgeBaseId: params.knowledgeBaseId,
fileId: params.fileId,
}
return get<T>({
url: '/gpt/knowledgeBase/articleOverview',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
// 章节速览——普通
export function normalChapterOverview<T>(data: object) {
return get<T>({
url: '/gpt/knowledgeBase/chatChapterOverview',
data,
})
}
// 章节速览——流式
export function streamChapterOverview<T = any>(params: {
knowledgeBaseId: number
fileId: any
conversationId: string
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
knowledgeBaseId: params.knowledgeBaseId,
fileId: params.fileId,
conversationId: params.conversationId,
}
return get<T>({
url: '/gpt/knowledgeBase/chatChapterOverview',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
// 推荐问题
export function getQuestions<T = any>(params: {
knowledgeBaseId: number
conversationId: string
fileIds: any
promptName: string
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
knowledgeBaseId: params.knowledgeBaseId,
conversationId: params.conversationId,
fileIds: params.fileIds,
promptName: params.promptName,
}
return get<T>({
url: '/gpt/file/knowledgeTalk',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
// 文档翻译
export function fileTranslate<T = any>(params: {
knowledgeBaseId: any
fileId: any
type: any
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
knowledgeBaseId: params.knowledgeBaseId,
fileId: params.fileId,
type: params.type,
}
return get<T>({
url: '/gpt/knowledgeBase/paperTranslation',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
// 重新翻译
export function reTransFile<T = any>(params: {
knowledgeBaseId: any
fileId: any
type: any
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void
}) {
const data: Record<string, any> = {
knowledgeBaseId: params.knowledgeBaseId,
fileId: params.fileId,
type: params.type,
}
return get<T>({
url: '/gpt/knowledgeBase/paperReTranslation',
data,
onDownloadProgress: params.onDownloadProgress,
})
}
//获取支持语言类型
export function checkTextLanguage<T>(query:string) {
return post<T>({
url: '/gpt/file/translate/checkLanguage',
data: {
query:query
},
})
}
//获取自动翻译的类型
export function getToLangList<T>() {
return get<T>({
url: '/gpt/file/translate/langList',
})
}
//翻译接口
export function translateString<T>(query:string,type:string) {
return post<T>({
url: '/gpt/file/translate/translate',
data: {
query:query,
type:type
}
})
}
// ****************************个人知识库 - 结束********************************
// 文件保存
export function filesave<T>(filedata: string) {
return post<T>({
url: '/docs/save',
data: filedata,
})
}
// 文件重命名
export function renameFile<T>(data: JSON) {
return post<T>({
url: '/docs/rename',
data: data,
})
}
// 文件下载
export function downloadfile<T>(filedata: string) {
return get<T>({
url: '/docs/download',
data: filedata,
responseType: 'blob',
headers: {
'Content-Type': 'application/octet-stream',
},
})
}
// 获取最后一次未生成过正文的大纲
export function fetchLastOutlines<T>(modelType: number) {
return get<T>({
url: '/outlines/getLastOutlines',
data: {
type: modelType
}
})
}
// 删除最后一次未生成过正文的大纲
export function delLastOutlines<T>(id: number) {
return get<T>({
url: '/outlines/lastOutlinesRemove',
data: {
id: id
}
})
}
// 获取配置信息
export function getConfig<T>(data: any) {
return get<T>({
url: '/config/getConfig',
data: data
})
}
// 获取配置信息
export function getTagConfig<T>(data: any) {
return get<T>({
url: '/config/getTagConfig',
data: data
})
}
// 生成正文
export function getDoc<T>(id: number, outline: string) {
return post<T>({
url: '/outlines/getContent',
data: {
id: id,
outline: outline
},
})
}
// 中断正文
export function interruptDoc<T>(messageId: string) {
return post<T>({
url: '/gpt/chat-message/interrupt',
data: {
messageId: messageId
},
})
}
// 获取正在生成正文的大纲
export function getGenerating<T>(modelType: number) {
return get<T>({
url: '/outlines/getGenerating',
data: {
type: modelType
}
})
}
/**
* 获取相关文献
* @param data
*/
export function getPaper<T>(data: any) {
return post<T>({
url: '/writer/paper',
data
})
}
/**
* 工具广场中工具的查看
* @param data
*/
export function viewUrl<T>(urlId: number) {
return post<T>({
url: '/config/viewUrl?urlId=' + urlId,
})
}
// 单点登录请求接口
export function fetchCASLogin<T>(data: {account: string, password: string, service: string, app_key: string} ) {
return post<T>({
url: '/app/api/auth_web/login',
data
})
}
// 获取登录状态
export function fetchLoginStatus<T>() {
return get<T>({
url: '/app/api/auth/loginStatus'
})
}

View File

@@ -0,0 +1,92 @@
.markdown-body {
background-color: transparent;
font-size: 16px;
line-height: 28px;
color: black;
word-wrap: break-word;
*{
line-height: 1.5rem;
}
strong{
font-family: "PingFangSC-Bold";
}
p {
white-space: pre-wrap;
}
ol {
list-style-type: decimal;
}
ul {
list-style-type: disc;
}
pre code,
pre tt {
line-height: 1.65;
}
.highlight pre,
pre {
background-color: #f9fafd;
}
code.hljs {
padding: 0;
}
.code-block {
&-wrapper {
position: relative;
padding-top: 24px;
}
&-header {
position: absolute;
top: 5px;
right: 0;
width: 100%;
padding: 0 1rem;
display: flex;
justify-content: flex-end;
align-items: center;
color: #b3b3b3;
&__copy {
cursor: pointer;
margin-left: 0.5rem;
user-select: none;
&:hover {
color: #65a665;
}
}
}
}
}
html.dark {
.message-reply {
.whitespace-pre-wrap {
white-space: pre-wrap;
color: var(--n-text-color);
}
}
.highlight pre,
pre {
background-color: #282c34;
}
}
@media screen and (max-width: 533px) {
.markdown-body .code-block-wrapper {
padding: unset;
code {
padding: 24px 16px 16px 16px;
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,18 @@
@font-face {
font-family: "PingFangSC-Bold";
src: url('PingFang Bold.ttf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "PingFangSC-Medium";
src: url('PingFang Medium.ttf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "PingFangSC-Regular";
src: url('PingFang Regular.ttf');
font-weight: normal;
font-style: normal;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,206 @@
html.dark {
pre code.hljs {
display: block;
overflow-x: auto;
padding: 1em
}
code.hljs {
padding: 3px 5px
}
.hljs {
color: #abb2bf;
background: #282c34
}
.hljs-keyword,
.hljs-operator,
.hljs-pattern-match {
color: #f92672
}
.hljs-function,
.hljs-pattern-match .hljs-constructor {
color: #61aeee
}
.hljs-function .hljs-params {
color: #a6e22e
}
.hljs-function .hljs-params .hljs-typing {
color: #fd971f
}
.hljs-module-access .hljs-module {
color: #7e57c2
}
.hljs-constructor {
color: #e2b93d
}
.hljs-constructor .hljs-string {
color: #9ccc65
}
.hljs-comment,
.hljs-quote {
color: #b18eb1;
font-style: italic
}
.hljs-doctag,
.hljs-formula {
color: #c678dd
}
.hljs-deletion,
.hljs-name,
.hljs-section,
.hljs-selector-tag,
.hljs-subst {
color: #e06c75
}
.hljs-literal {
color: #56b6c2
}
.hljs-addition,
.hljs-attribute,
.hljs-meta .hljs-string,
.hljs-regexp,
.hljs-string {
color: #98c379
}
.hljs-built_in,
.hljs-class .hljs-title,
.hljs-title.class_ {
color: #e6c07b
}
.hljs-attr,
.hljs-number,
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-pseudo,
.hljs-template-variable,
.hljs-type,
.hljs-variable {
color: #d19a66
}
.hljs-bullet,
.hljs-link,
.hljs-meta,
.hljs-selector-id,
.hljs-symbol,
.hljs-title {
color: #61aeee
}
.hljs-emphasis {
font-style: italic
}
.hljs-strong {
font-weight: 700
}
.hljs-link {
text-decoration: underline
}
}
html {
pre code.hljs {
display: block;
overflow-x: auto;
padding: 1em
}
code.hljs {
padding: 3px 5px;
&::-webkit-scrollbar {
height: 4px;
}
}
.hljs {
color: #383a42;
background: #fafafa
}
.hljs-comment,
.hljs-quote {
color: #a0a1a7;
font-style: italic
}
.hljs-doctag,
.hljs-formula,
.hljs-keyword {
color: #a626a4
}
.hljs-deletion,
.hljs-name,
.hljs-section,
.hljs-selector-tag,
.hljs-subst {
color: #e45649
}
.hljs-literal {
color: #0184bb
}
.hljs-addition,
.hljs-attribute,
.hljs-meta .hljs-string,
.hljs-regexp,
.hljs-string {
color: #50a14f
}
.hljs-attr,
.hljs-number,
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-pseudo,
.hljs-template-variable,
.hljs-type,
.hljs-variable {
color: #986801
}
.hljs-bullet,
.hljs-link,
.hljs-meta,
.hljs-selector-id,
.hljs-symbol,
.hljs-title {
color: #4078f2
}
.hljs-built_in,
.hljs-class .hljs-title,
.hljs-title.class_ {
color: #c18401
}
.hljs-emphasis {
font-style: italic
}
.hljs-strong {
font-weight: 700
}
.hljs-link {
text-decoration: underline
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 785 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

Some files were not shown because too many files have changed in this diff Show More