@surenkid/acli-hub 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +16 -0
- package/LICENSE +22 -0
- package/README.md +104 -2
- package/doc/logo.png +0 -0
- package/package.json +43 -4
- package/server/index.js +142 -0
- package/server/public/app-icon.svg +2 -0
- package/server/public/apple-touch-icon.png +0 -0
- package/server/public/assets/PreviewDialog-KhgmouUP.js +2 -0
- package/server/public/assets/PreviewDialog-mYkQ2B4R.css +1 -0
- package/server/public/assets/_commonjsHelpers-Cpj98o6Y.js +1 -0
- package/server/public/assets/bash-I8pq0VWm.js +1 -0
- package/server/public/assets/c-D87IyN5J.js +1 -0
- package/server/public/assets/core-DchA7RCO.js +3 -0
- package/server/public/assets/cpp-BFCWVspj.js +1 -0
- package/server/public/assets/csharp-D-6syieo.js +1 -0
- package/server/public/assets/css-AVCICof-.js +1 -0
- package/server/public/assets/dart-DbQNmsdu.js +1 -0
- package/server/public/assets/diff-BLTryEFx.js +1 -0
- package/server/public/assets/dockerfile-Co-AyC30.js +1 -0
- package/server/public/assets/go-4VmnRw3R.js +1 -0
- package/server/public/assets/index-BvpTactz.css +1 -0
- package/server/public/assets/index-STBAhoUs.js +7 -0
- package/server/public/assets/ini-B3BVgEsG.js +1 -0
- package/server/public/assets/java-DUnkFH8J.js +1 -0
- package/server/public/assets/javascript-DUNaicwC.js +1 -0
- package/server/public/assets/json-DdsocbVI.js +1 -0
- package/server/public/assets/kotlin-Za0-TyUR.js +2 -0
- package/server/public/assets/lua-CD7o2Ci6.js +1 -0
- package/server/public/assets/makefile-BoJC05FH.js +1 -0
- package/server/public/assets/mammoth.browser-C_M0wsD2.js +43 -0
- package/server/public/assets/markdown-fzgiUVUV.js +1 -0
- package/server/public/assets/markdown-it-CnX5h4q1.js +16 -0
- package/server/public/assets/papaparse.min-DBcLlWLv.js +10 -0
- package/server/public/assets/perl-BWtAWCfC.js +1 -0
- package/server/public/assets/php-kjAv1gW4.js +2 -0
- package/server/public/assets/plaintext-CPM70vnn.js +1 -0
- package/server/public/assets/python-CXf-_D6G.js +1 -0
- package/server/public/assets/r-DWz4c2Y4.js +1 -0
- package/server/public/assets/ruby-CcVTKuP4.js +1 -0
- package/server/public/assets/rust-DsMvwcVK.js +1 -0
- package/server/public/assets/scss-UZl0Ag-9.js +1 -0
- package/server/public/assets/sql-BC88IN-V.js +1 -0
- package/server/public/assets/swift-jkyvy0ac.js +1 -0
- package/server/public/assets/typescript-5pldp2kO.js +1 -0
- package/server/public/assets/xml-FcirFJJ2.js +1 -0
- package/server/public/assets/yaml-drsDnIKT.js +1 -0
- package/server/public/favicon-16x16.png +0 -0
- package/server/public/favicon-32x32.png +0 -0
- package/server/public/favicon-48x48.png +0 -0
- package/server/public/favicon.ico +0 -0
- package/server/public/favicon.svg +2 -0
- package/server/public/icon-192.png +0 -0
- package/server/public/icon-512.png +0 -0
- package/server/public/index.html +19 -0
- package/server/public/logo.svg +6 -0
- package/server/public/site.webmanifest +13 -0
- package/server/public/vite.svg +1 -0
- package/server/routes/auth.js +35 -0
- package/server/routes/files.js +256 -0
- package/server/routes/files.test.js +211 -0
- package/server/routes/sessions.js +69 -0
- package/server/services/auth.js +168 -0
- package/server/services/port-manager.js +37 -0
- package/server/services/session-manager.js +427 -0
- package/server/services/session-manager.test.js +104 -0
- package/server/ws.js +45 -0
package/.env.example
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Main server port (backend + built frontend in production)
|
|
2
|
+
PORT=3000
|
|
3
|
+
HOST=0.0.0.0
|
|
4
|
+
|
|
5
|
+
# Internal ttyd port range (localhost only, proxied through the main port)
|
|
6
|
+
TTYD_PORT_RANGE_START=7681
|
|
7
|
+
TTYD_PORT_RANGE_END=7780
|
|
8
|
+
|
|
9
|
+
# Maximum size per uploaded file, in MiB. 0 = unlimited.
|
|
10
|
+
UPLOAD_MAX_MB=500
|
|
11
|
+
|
|
12
|
+
# Login password for the web UI. Leave UNSET to disable authentication
|
|
13
|
+
# (local development). Generate a strong one with: openssl rand -base64 24
|
|
14
|
+
# When set, all pages/API/terminal/WebSocket access requires a 7-day
|
|
15
|
+
# login session (cookie).
|
|
16
|
+
AUTH_PASSWORD=
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 sosopop
|
|
4
|
+
Copyright (c) 2026 surenkid
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,105 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: light)" srcset="doc/logo-light.png" />
|
|
4
|
+
<img src="doc/logo.png" alt="ACLI Hub Logo" width="200" />
|
|
5
|
+
</picture>
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
|
-
|
|
8
|
+
# 🚀 ACLI Hub
|
|
9
|
+
|
|
10
|
+
[English](./README_EN.md)
|
|
11
|
+
|
|
12
|
+
> 🤖 AI CLI 工作台:把 Claude Code、Codex、Kimi……全部搬进浏览器。
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<img src="assets/72643b69-16e1-44ab-841f-cc1dee1b1c0b.png" alt="ACLI Hub Screenshot" width="800" />
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
ACLI Hub(AI CLI Hub)是一个面向 AI CLI 工具的 Web 工作台。它基于 ttyd + tmux,让你在浏览器中同时运行、管理和切换多个 AI CLI 会话:在公司电脑上同时开着几个 Claude Code 跑任务,通勤路上用手机查看进度、继续对话,回到家换台电脑接着干——会话永不丢失。
|
|
19
|
+
|
|
20
|
+
## ✨ 特性
|
|
21
|
+
|
|
22
|
+
- **🤖 多 AI CLI 会话** — 每个会话一个持久终端,Claude Code / Codex / Kimi / Gemini CLI 各开各的,自由切换互不干扰
|
|
23
|
+
- **💾 会话持久化** — 基于 tmux,关闭浏览器会话依然存活,任何设备随时重连
|
|
24
|
+
- **📡 CLI 实时状态** — 侧栏直接显示每个 CLI 当前正在执行的任务(读取终端标题,无需轮询界面)
|
|
25
|
+
- **🏷 会话备注** — 给会话设置中文别名,一眼认出哪个窗口在干什么
|
|
26
|
+
- **📁 文件管理器** — 按会话固定项目根:目录树浏览、文件预览、重命名、移动、下载、文件夹压缩 ZIP
|
|
27
|
+
- **📤 多文件上传** — 拖选多个文件上传到项目 `temp/`,实时进度、可取消,一键复制落盘路径贴给 agent
|
|
28
|
+
- **👀 全能预览** — 源码语法高亮、Markdown、HTML(沙箱隔离)、图片、音视频、PDF、DOCX、CSV/TSV 表格
|
|
29
|
+
- **🖱 右键复制粘贴 + 触屏滚动** — 桌面与移动一致的终端操作体验
|
|
30
|
+
- **🔐 密码登录** — Cookie 会话 + 限流,配置 HTTPS 反代后可安全暴露到公网
|
|
31
|
+
- **🐚 多 Shell 支持** — Zsh、Bash、Fish 自由选择
|
|
32
|
+
- **🎨 深色科技感 UI** — Slate 深色主题、毛玻璃效果、流畅动画
|
|
33
|
+
- **⚡️ 零配置启动** — 装好依赖一条命令启动,开箱即用
|
|
34
|
+
|
|
35
|
+
## 🖥 典型工作流
|
|
36
|
+
|
|
37
|
+
1. 在开发机上启动 ACLI Hub,为不同任务各建一个会话(Zsh/Bash 任选)
|
|
38
|
+
2. 在会话里跑起 Claude Code / Codex 等 CLI,开始干活
|
|
39
|
+
3. 关掉浏览器去做别的事——tmux 保活,CLI 继续执行
|
|
40
|
+
4. 通勤路上掏出手机,打开页面:侧栏实时显示各 CLI 正在做什么
|
|
41
|
+
5. 需要给 agent 提供资料时,点 Upload 传文件到项目 `temp/`,复制路径贴进对话
|
|
42
|
+
6. 回到电脑,一切还在,无缝继续
|
|
43
|
+
|
|
44
|
+
## 🛠 环境要求
|
|
45
|
+
|
|
46
|
+
- **Node.js** >= 18
|
|
47
|
+
- **ttyd** — Web 终端模拟器
|
|
48
|
+
- **tmux** — 终端复用器
|
|
49
|
+
|
|
50
|
+
### macOS 安装依赖
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
brew install ttyd tmux
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 🚀 快速开始
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# 安装依赖
|
|
60
|
+
npm install
|
|
61
|
+
cd frontend && npm install && cd ..
|
|
62
|
+
|
|
63
|
+
# 构建前端
|
|
64
|
+
npm run build
|
|
65
|
+
|
|
66
|
+
# 启动服务
|
|
67
|
+
npm start
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
浏览器打开 `http://localhost:3000` 即可使用。
|
|
71
|
+
|
|
72
|
+
## 👨💻 开发模式
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm run dev
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
同时启动后端(端口 3000)和 Vite 开发服务器(端口 5173)。
|
|
79
|
+
|
|
80
|
+
## ⚙️ 配置项
|
|
81
|
+
|
|
82
|
+
通过环境变量或 `.env` 文件设置(参考 `.env.example`):
|
|
83
|
+
|
|
84
|
+
| 变量 | 说明 | 默认值 |
|
|
85
|
+
| ----------------------- | ------------------------------------------ | --------- |
|
|
86
|
+
| `PORT` | 服务监听端口 | `3000` |
|
|
87
|
+
| `HOST` | 监听地址 | `0.0.0.0` |
|
|
88
|
+
| `AUTH_PASSWORD` | 登录密码;不设置则关闭认证(仅限本地开发) | _(不设置)_ |
|
|
89
|
+
| `TTYD_PORT_RANGE_START` | ttyd 内部端口范围起始 | `7681` |
|
|
90
|
+
| `TTYD_PORT_RANGE_END` | ttyd 内部端口范围结束 | `7780` |
|
|
91
|
+
| `UPLOAD_MAX_MB` | 单文件上传上限(MiB),0 为不限 | `500` |
|
|
92
|
+
|
|
93
|
+
### 📁 文件面板说明
|
|
94
|
+
|
|
95
|
+
侧栏「文件」面板和终端工具条的 Upload 首次使用时,会将当前 shell 目录固定为该会话的项目根;之后 `cd` 不会改变文件树,点击 📍 可重新固定。文件默认上传到根目录的 `temp/`,可在项目 `.gitignore` 中加入 `temp/`。取消上传会保留已完成的文件;同名上传和 ZIP 会自动加后缀。删除前始终确认,macOS 移到 `~/.Trash/`,其他平台永久删除。
|
|
96
|
+
|
|
97
|
+
预览支持源码高亮、Markdown、HTML、图片、音视频、PDF、DOCX、CSV/TSV。文本预览上限为 2 MiB,DOCX 为 10 MiB;更大文件可下载查看。
|
|
98
|
+
|
|
99
|
+
### 🔐 公网暴露
|
|
100
|
+
|
|
101
|
+
设置 `AUTH_PASSWORD` 后,建议将 ACLI Hub 部署在 HTTPS 反向代理(如 Caddy / Nginx / frp)之后,只公开 443 端口。登录会话为 7 天有效的 HttpOnly Cookie,终端 iframe 与 WebSocket 均受同一凭据保护。
|
|
102
|
+
|
|
103
|
+
## 📄 License
|
|
104
|
+
|
|
105
|
+
MIT,详见 [LICENSE](./LICENSE)。
|
package/doc/logo.png
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@surenkid/acli-hub",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Web workbench for AI CLIs — run Claude Code, Codex, Kimi and more in your browser (ttyd + tmux)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"bin": {
|
|
7
|
+
"acli-hub": "server/index.js"
|
|
8
|
+
},
|
|
9
|
+
"engines": {
|
|
10
|
+
"node": ">=18"
|
|
11
|
+
},
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"access": "public"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://cnb.cool/surenkid/acli-hub.git"
|
|
18
|
+
},
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://cnb.cool/surenkid/acli-hub/issues"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"server/",
|
|
24
|
+
".env.example",
|
|
25
|
+
"doc/logo.png"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"dev": "concurrently \"npm run dev:server\" \"npm run dev:frontend\"",
|
|
29
|
+
"dev:server": "node server/index.js",
|
|
30
|
+
"dev:frontend": "cd frontend && npm run dev",
|
|
31
|
+
"build": "cd frontend && npm run build",
|
|
32
|
+
"start": "NODE_ENV=production node server/index.js",
|
|
33
|
+
"test": "node --test server/routes/*.test.js server/services/*.test.js"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"archiver": "^7.0.1",
|
|
37
|
+
"dotenv": "^16.4.7",
|
|
38
|
+
"express": "^4.21.2",
|
|
39
|
+
"http-proxy-middleware": "^3.0.5",
|
|
40
|
+
"ws": "^8.18.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"concurrently": "^9.1.2"
|
|
44
|
+
}
|
|
45
|
+
}
|
package/server/index.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
require('dotenv').config();
|
|
3
|
+
const express = require('express');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const http = require('http');
|
|
6
|
+
const { createProxyMiddleware } = require('http-proxy-middleware');
|
|
7
|
+
const SessionManager = require('./services/session-manager');
|
|
8
|
+
const { AuthService, sessionTokenFromRequest } = require('./services/auth');
|
|
9
|
+
const authRoute = require('./routes/auth');
|
|
10
|
+
const sessionsRoute = require('./routes/sessions');
|
|
11
|
+
const filesRoute = require('./routes/files');
|
|
12
|
+
const setupWebSocket = require('./ws');
|
|
13
|
+
|
|
14
|
+
const PORT = parseInt(process.env.PORT || '3000', 10);
|
|
15
|
+
const HOST = process.env.HOST || '0.0.0.0';
|
|
16
|
+
const TTYD_PORT_START = parseInt(process.env.TTYD_PORT_RANGE_START || '7681', 10);
|
|
17
|
+
const TTYD_PORT_END = parseInt(process.env.TTYD_PORT_RANGE_END || '7780', 10);
|
|
18
|
+
|
|
19
|
+
const app = express();
|
|
20
|
+
const server = http.createServer(app);
|
|
21
|
+
|
|
22
|
+
// File uploads are raw bytes, even if the selected file is JSON.
|
|
23
|
+
app.use((req, res, next) => {
|
|
24
|
+
if (req.path === '/api/files/upload') return next();
|
|
25
|
+
express.json()(req, res, next);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const sessionManager = new SessionManager(TTYD_PORT_START, TTYD_PORT_END);
|
|
29
|
+
const auth = new AuthService(process.env.AUTH_PASSWORD);
|
|
30
|
+
|
|
31
|
+
function requireAuth(req, res, next) {
|
|
32
|
+
if (!auth.isEnabled()) return next();
|
|
33
|
+
if (auth.validateSession(sessionTokenFromRequest(req))) return next();
|
|
34
|
+
return res.status(401).json({ error: 'Authentication required' });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function resolveRunningSession(name) {
|
|
38
|
+
if (!name) return null;
|
|
39
|
+
try {
|
|
40
|
+
const session = sessionManager.getSession(name);
|
|
41
|
+
if (session.status !== 'running') return null;
|
|
42
|
+
return session;
|
|
43
|
+
} catch (err) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function getSessionNameFromUrl(url) {
|
|
49
|
+
if (!url) return null;
|
|
50
|
+
const match = /^\/terminal\/([^/?#]+)(?:[/?#]|$)/.exec(url);
|
|
51
|
+
return match ? match[1] : null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const ttydProxy = createProxyMiddleware({
|
|
55
|
+
target: 'http://127.0.0.1',
|
|
56
|
+
changeOrigin: true,
|
|
57
|
+
router: (req) => `http://127.0.0.1:${req.ttydSession.port}`,
|
|
58
|
+
pathRewrite: (path, req) => req.originalUrl || req.url,
|
|
59
|
+
onError: (err, req, res) => {
|
|
60
|
+
console.error('Proxy error:', err);
|
|
61
|
+
if (res && typeof res.status === 'function' && !res.headersSent) {
|
|
62
|
+
res.status(502).json({ error: 'Proxy error' });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// Auth endpoints (login is rate-limited internally), then gate every other
|
|
68
|
+
// API route and the terminal proxy behind a valid session cookie.
|
|
69
|
+
app.use('/api/auth', authRoute(auth));
|
|
70
|
+
app.use('/api', requireAuth);
|
|
71
|
+
|
|
72
|
+
// Proxy /terminal/:name to corresponding ttyd instance
|
|
73
|
+
app.use('/terminal', requireAuth);
|
|
74
|
+
app.use('/terminal/:name', (req, res, next) => {
|
|
75
|
+
const session = resolveRunningSession(req.params.name);
|
|
76
|
+
if (!session) {
|
|
77
|
+
return res.status(404).json({ error: 'Session not found or not running' });
|
|
78
|
+
}
|
|
79
|
+
req.ttydSession = session;
|
|
80
|
+
next();
|
|
81
|
+
});
|
|
82
|
+
app.use('/terminal', (req, res, next) => {
|
|
83
|
+
if (!req.ttydSession) {
|
|
84
|
+
return res.status(404).json({ error: 'Session not found or not running' });
|
|
85
|
+
}
|
|
86
|
+
next();
|
|
87
|
+
});
|
|
88
|
+
app.use('/terminal', ttydProxy);
|
|
89
|
+
|
|
90
|
+
// API routes
|
|
91
|
+
app.use('/api/sessions', sessionsRoute(sessionManager));
|
|
92
|
+
app.use('/api/files', filesRoute());
|
|
93
|
+
|
|
94
|
+
// Serve frontend static files in production
|
|
95
|
+
const publicDir = path.join(__dirname, 'public');
|
|
96
|
+
app.use(express.static(publicDir));
|
|
97
|
+
app.get(/^\/(?!api).*/, (req, res) => {
|
|
98
|
+
res.sendFile(path.join(publicDir, 'index.html'));
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// WebSocket
|
|
102
|
+
setupWebSocket(server, sessionManager, auth);
|
|
103
|
+
|
|
104
|
+
server.on('upgrade', (req, socket, head) => {
|
|
105
|
+
const sessionName = getSessionNameFromUrl(req.url);
|
|
106
|
+
if (!sessionName) return;
|
|
107
|
+
if (!auth.authorize(req)) {
|
|
108
|
+
socket.destroy();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const session = resolveRunningSession(sessionName);
|
|
112
|
+
if (!session) {
|
|
113
|
+
socket.destroy();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
req.ttydSession = session;
|
|
117
|
+
ttydProxy.upgrade(req, socket, head);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
server.listen(PORT, HOST, async () => {
|
|
121
|
+
console.log(`ACLI Hub running at http://${HOST}:${PORT}`);
|
|
122
|
+
if (auth.isEnabled()) {
|
|
123
|
+
console.log('Auth enabled: login required (sessions last 7 days)');
|
|
124
|
+
} else {
|
|
125
|
+
console.warn('WARNING: AUTH_PASSWORD is not set — running WITHOUT authentication. Do not expose this to the internet.');
|
|
126
|
+
}
|
|
127
|
+
const restored = await sessionManager.restore();
|
|
128
|
+
if (restored.length > 0) {
|
|
129
|
+
console.log(`Restored ${restored.length} session(s): ${restored.map(s => s.name).join(', ')}`);
|
|
130
|
+
}
|
|
131
|
+
sessionManager.startTitlePolling();
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Cleanup on exit
|
|
135
|
+
function cleanup() {
|
|
136
|
+
console.log('\nCleaning up ttyd processes...');
|
|
137
|
+
sessionManager.cleanup();
|
|
138
|
+
process.exit(0);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
process.on('SIGINT', cleanup);
|
|
142
|
+
process.on('SIGTERM', cleanup);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 128 128" fill="none"><title>ACLI Hub</title><rect width="128" height="128" fill="#0f172a"/><g transform="translate(8 8) scale(.875)"> <path fill="#3b82f6" d="M24 20 12 32 44 64 12 96 24 108 62 70Q55 66 50 64Q55 62 62 58Z"/>
|
|
2
|
+
<path fill="#f8fafc" d="M90 18C94 46 100 58 118 64C100 70 94 82 90 110C86 82 80 70 58 64C80 58 86 46 90 18Z"/></g></svg>
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/core-DchA7RCO.js","assets/_commonjsHelpers-Cpj98o6Y.js","assets/mammoth.browser-C_M0wsD2.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{e as H,_ as e,a as S,u as U,r as u,p as N,o as K,b as G,c as t,d as J,f as i,t as c,g as $,h as I,i as z,n as Q,j as s,k as V,F as D,l as B,w as W,T as X,s as q,m as Y,q as Z,v as ee}from"./index-STBAhoUs.js";const te={javascript:()=>e(()=>import("./javascript-DUNaicwC.js"),[]),typescript:()=>e(()=>import("./typescript-5pldp2kO.js"),[]),xml:()=>e(()=>import("./xml-FcirFJJ2.js"),[]),css:()=>e(()=>import("./css-AVCICof-.js"),[]),scss:()=>e(()=>import("./scss-UZl0Ag-9.js"),[]),json:()=>e(()=>import("./json-DdsocbVI.js"),[]),python:()=>e(()=>import("./python-CXf-_D6G.js"),[]),bash:()=>e(()=>import("./bash-I8pq0VWm.js"),[]),yaml:()=>e(()=>import("./yaml-drsDnIKT.js"),[]),ini:()=>e(()=>import("./ini-B3BVgEsG.js"),[]),markdown:()=>e(()=>import("./markdown-fzgiUVUV.js"),[]),go:()=>e(()=>import("./go-4VmnRw3R.js"),[]),rust:()=>e(()=>import("./rust-DsMvwcVK.js"),[]),java:()=>e(()=>import("./java-DUnkFH8J.js"),[]),c:()=>e(()=>import("./c-D87IyN5J.js"),[]),cpp:()=>e(()=>import("./cpp-BFCWVspj.js"),[]),csharp:()=>e(()=>import("./csharp-D-6syieo.js"),[]),ruby:()=>e(()=>import("./ruby-CcVTKuP4.js"),[]),php:()=>e(()=>import("./php-kjAv1gW4.js"),[]),sql:()=>e(()=>import("./sql-BC88IN-V.js"),[]),swift:()=>e(()=>import("./swift-jkyvy0ac.js"),[]),kotlin:()=>e(()=>import("./kotlin-Za0-TyUR.js"),[]),lua:()=>e(()=>import("./lua-CD7o2Ci6.js"),[]),perl:()=>e(()=>import("./perl-BWtAWCfC.js"),[]),r:()=>e(()=>import("./r-DWz4c2Y4.js"),[]),dart:()=>e(()=>import("./dart-DbQNmsdu.js"),[]),dockerfile:()=>e(()=>import("./dockerfile-Co-AyC30.js"),[]),makefile:()=>e(()=>import("./makefile-BoJC05FH.js"),[]),diff:()=>e(()=>import("./diff-BLTryEFx.js"),[]),plaintext:()=>e(()=>import("./plaintext-CPM70vnn.js"),[])},se={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"javascript",ts:"typescript",tsx:"typescript",vue:"xml",svelte:"xml",html:"xml",htm:"xml",xml:"xml",svg:"xml",css:"css",scss:"scss",sass:"scss",less:"css",json:"json",jsonc:"json",py:"python",sh:"bash",zsh:"bash",bash:"bash",fish:"bash",yml:"yaml",yaml:"yaml",toml:"ini",ini:"ini",cfg:"ini",conf:"ini",md:"markdown",markdown:"markdown",go:"go",rs:"rust",java:"java",c:"c",h:"c",cpp:"cpp",cc:"cpp",hpp:"cpp",cs:"csharp",rb:"ruby",php:"php",sql:"sql",swift:"swift",kt:"kotlin",kts:"kotlin",lua:"lua",pl:"perl",r:"r",dart:"dart",diff:"diff",patch:"diff"};async function ae(r,k){if(new TextEncoder().encode(r).length>200*1024)return null;const d=k.toLowerCase(),_=d==="dockerfile"?"dockerfile":d==="makefile"?"makefile":se[H(k)];if(!_)return null;const[{default:h},{default:y}]=await Promise.all([e(()=>import("./core-DchA7RCO.js"),__vite__mapDeps([0,1])),te[_]()]);return h.getLanguage(_)||h.registerLanguage(_,y),h.highlight(r,{language:_,ignoreIllegals:!0}).value}const oe={class:"preview-layout"},re={class:"preview-header"},le={class:"preview-heading"},ie={id:"preview-title"},ne=["title"],ue=["href","download"],_e={key:0,class:"preview-message",role:"status"},ce={key:1,class:"preview-message error",role:"alert"},de={key:0,class:"preview-note"},ve={key:0,class:"preview-note"},me={class:"source"},pe=["innerHTML"],fe={key:1},he=["innerHTML"],ye=["srcdoc","title"],Ee=["src","alt"],we=["src"],ge=["src"],ke=["src","title"],be={key:8,class:"table-preview"},Te={class:"preview-note"},Le={class:"row-number"},De={key:9,class:"preview-message"},Pe={__name:"PreviewDialog",props:{entry:{type:Object,required:!0}},emits:["close"],setup(r,{emit:k}){const d=r,_=k,h=U(),y=u(null),a=u(N(d.entry.name)),P=u(!1),f=u(""),v=u(""),A=u(null),E=u(""),w=u([]),b=u(1e3),O=u(!1),g=ee(()=>z(d.entry.path)),R=new AbortController;let x;async function j(n){if(d.entry.size>n)throw new Error(`预览上限为 ${I(n)},请下载文件查看。`);const l=(await h.apiRequest(g.value,{signal:R.signal})).body.getReader(),m=[];let p=0;try{for(;;){const{done:L,value:M}=await l.read();if(L)break;if(p+=M.length,p>n)throw new Error(`预览上限为 ${I(n)},请下载文件查看。`);m.push(M)}}finally{await l.cancel().catch(()=>{})}const T=new Uint8Array(p);let C=0;for(const L of m)T.set(L,C),C+=L.length;return T}async function F(){if(["text","markdown","html","docx","table"].includes(a.value)){P.value=!0;try{if(a.value==="docx"){const n=await j(10485760),{default:o}=await e(async()=>{const{default:m}=await import("./mammoth.browser-C_M0wsD2.js").then(p=>p.m);return{default:m}},__vite__mapDeps([2,1])),l=await o.convertToHtml({arrayBuffer:n.buffer},{externalFileAccess:!1});E.value=q(l.value)}else{if(v.value=new TextDecoder().decode(await j(2*1024*1024)),v.value.includes("\0")){a.value="unsupported";return}if(a.value==="html")E.value=q(v.value);else if(a.value==="markdown")E.value=await Y(v.value);else if(a.value==="table"){const n=await Z(v.value,d.entry.name);n?w.value=n:(O.value=!0,a.value="text")}a.value==="text"&&(A.value=await ae(v.value,d.entry.name).catch(()=>null))}}catch(n){R.signal.aborted||(f.value=n.message)}finally{P.value=!1}}}return K(()=>{x=document.activeElement,y.value.showModal(),F()}),G(()=>{R.abort(),x?.focus()}),(n,o)=>(t(),J(X,{to:"body"},[i("dialog",{ref_key:"dialog",ref:y,class:"preview-dialog","aria-labelledby":"preview-title",onCancel:o[5]||(o[5]=W(l=>_("close"),["prevent"])),onClick:o[6]||(o[6]=l=>{l.target===y.value&&_("close")})},[i("div",oe,[i("header",re,[i("div",le,[i("h3",ie,c(r.entry.name),1),i("p",{title:r.entry.path},c(r.entry.path)+" · "+c($(I)(r.entry.size)),9,ne)]),i("a",{class:"btn",href:$(z)(r.entry.path,!0),download:r.entry.name},"下载",8,ue),i("button",{class:"close","aria-label":"关闭预览",autofocus:"",onClick:o[0]||(o[0]=l=>_("close"))},"×")]),i("main",{class:Q(["preview-body",{"frame-body":["html","docx","pdf"].includes(a.value)}])},[P.value?(t(),s("p",_e,"加载预览…")):f.value?(t(),s("p",ce,c(f.value),1)):(t(),s(D,{key:2},[O.value?(t(),s("p",de,"表格解析失败,已显示原始文本。")):V("",!0),a.value==="text"?(t(),s(D,{key:1},[r.entry.size>200*1024?(t(),s("p",ve,"文件超过 200 KiB,已使用纯文本预览。")):V("",!0),i("pre",me,[A.value!==null?(t(),s("code",{key:0,class:"hljs",innerHTML:A.value},null,8,pe)):(t(),s("code",fe,c(v.value),1))])],64)):a.value==="markdown"?(t(),s("article",{key:2,class:"markdown-body",innerHTML:E.value},null,8,he)):a.value==="html"||a.value==="docx"?(t(),s("iframe",{key:3,srcdoc:E.value,sandbox:"allow-scripts",referrerpolicy:"no-referrer",title:r.entry.name,class:"document-frame"},null,8,ye)):a.value==="image"?(t(),s("img",{key:4,src:g.value,alt:r.entry.name,class:"image-preview",onError:o[1]||(o[1]=l=>f.value="浏览器无法显示这张图片,请下载查看。")},null,40,Ee)):a.value==="audio"?(t(),s("audio",{key:5,src:g.value,controls:"",class:"media-preview",onError:o[2]||(o[2]=l=>f.value="浏览器不支持此音频格式,请下载查看。")},null,40,we)):a.value==="video"?(t(),s("video",{key:6,src:g.value,controls:"",playsinline:"",class:"media-preview",onError:o[3]||(o[3]=l=>f.value="浏览器不支持此视频格式,请下载查看。")},null,40,ge)):a.value==="pdf"?(t(),s("iframe",{key:7,src:g.value,title:r.entry.name,class:"document-frame"},null,8,ke)):a.value==="table"?(t(),s("div",be,[i("p",Te,"已显示 "+c(Math.min(b.value,w.value.length))+" / "+c(w.value.length)+" 行",1),i("table",null,[i("tbody",null,[(t(!0),s(D,null,B(w.value.slice(0,b.value),(l,m)=>(t(),s("tr",{key:m},[i("td",Le,c(m+1),1),(t(!0),s(D,null,B(l,(p,T)=>(t(),s("td",{key:T},c(p),1))),128))]))),128))])]),b.value<w.value.length?(t(),s("button",{key:0,class:"btn btn-primary show-more",onClick:o[4]||(o[4]=l=>b.value+=1e3)},"显示更多(1000 行)")):V("",!0)])):(t(),s("p",De,"此文件类型暂不支持预览,请下载查看。"))],64))],2)])],544)]))}},Re=S(Pe,[["__scopeId","data-v-c613172c"]]);export{Re as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.preview-dialog[data-v-c613172c]{margin:auto;width:min(1100px,calc(100vw - 32px));height:min(850px,calc(100dvh - 48px));max-width:none;max-height:none;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--bg-primary);color:var(--text-primary)}.preview-dialog[data-v-c613172c]::backdrop{background:#000a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.preview-layout[data-v-c613172c]{height:100%;display:flex;flex-direction:column}.preview-header[data-v-c613172c]{display:flex;align-items:center;padding:12px 16px;gap:12px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.preview-heading[data-v-c613172c]{flex:1;min-width:0}.preview-heading h3[data-v-c613172c],.preview-heading p[data-v-c613172c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-heading h3[data-v-c613172c]{font-size:15px}.preview-heading p[data-v-c613172c]{color:var(--text-secondary);font-size:11px}.preview-header a[data-v-c613172c]{color:var(--text-primary);text-decoration:none;padding:4px 8px;border:1px solid var(--border-color)}.close[data-v-c613172c]{border:none;color:var(--text-secondary);background:none;font-size:26px;cursor:pointer;padding:0 4px}.preview-body[data-v-c613172c]{flex:1;min-height:0;overflow:auto;padding:20px}.frame-body[data-v-c613172c]{padding:0;display:flex}.preview-message[data-v-c613172c]{padding:24px;color:var(--text-secondary)}.error[data-v-c613172c]{color:var(--danger)}.preview-note[data-v-c613172c]{color:var(--text-secondary);font-size:12px;margin-bottom:12px}.source[data-v-c613172c]{font:13px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:4}.source code[data-v-c613172c]{padding:0;background:transparent}.document-frame[data-v-c613172c]{border:none;background:#fff;width:100%;height:100%;min-height:0}.image-preview[data-v-c613172c]{display:block;max-width:100%;max-height:100%;object-fit:contain;margin:auto}.media-preview[data-v-c613172c]{display:block;width:100%;max-height:100%;margin:auto}table[data-v-c613172c]{border-collapse:collapse;font-size:12px}td[data-v-c613172c]{padding:5px 10px;border:1px solid var(--border-color);white-space:pre-wrap;min-width:60px;max-width:500px;overflow-wrap:anywhere}.row-number[data-v-c613172c]{color:var(--text-tertiary);text-align:right;min-width:35px;background:var(--bg-secondary)}.show-more[data-v-c613172c]{margin-top:16px}.markdown-body[data-v-c613172c]{line-height:1.7;overflow-wrap:anywhere}.markdown-body[data-v-c613172c] h1,.markdown-body[data-v-c613172c] h2,.markdown-body[data-v-c613172c] h3{margin:20px 0 12px}.markdown-body[data-v-c613172c] p,.markdown-body[data-v-c613172c] ul,.markdown-body[data-v-c613172c] ol,.markdown-body[data-v-c613172c] pre,.markdown-body[data-v-c613172c] table{margin-bottom:16px}.markdown-body[data-v-c613172c] ul,.markdown-body[data-v-c613172c] ol{padding-left:24px}.markdown-body[data-v-c613172c] a{color:#60a5fa}.markdown-body[data-v-c613172c] img{max-width:100%}.markdown-body[data-v-c613172c] pre,.markdown-body[data-v-c613172c] code{background:var(--bg-secondary);padding:2px 5px;border-radius:4px}.markdown-body[data-v-c613172c] pre{padding:12px;overflow:auto}.markdown-body[data-v-c613172c] blockquote{border-left:3px solid var(--border-color);color:var(--text-secondary);padding-left:14px}.markdown-body[data-v-c613172c] td,.markdown-body[data-v-c613172c] th{border:1px solid var(--border-color);padding:5px 10px}@media(max-width:600px){.preview-dialog[data-v-c613172c]{width:calc(100vw - 12px);height:calc(100dvh - 16px)}.preview-header[data-v-c613172c]{padding:10px}.preview-body[data-v-c613172c]:not(.frame-body){padding:12px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function l(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}export{o as c,l as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function w(e){const a=e.regex,t={},c={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:a.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},c]});const s={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},o=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,s]};s.contains.push(n);const r={match:/\\"/},m={className:"string",begin:/'/,end:/'/},p={match:/\\'/},d={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},l=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],u=e.SHEBANG({binary:`(${l.join("|")})`,relevance:10}),h={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},b=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],g=["true","false"],f={match:/(\/[a-z._-]+)+/},E=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],S=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],_=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],N=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:b,literal:g,built_in:[...E,...S,"set","shopt",..._,...N]},contains:[u,e.SHEBANG(),h,d,o,i,f,n,r,m,p,t]}}export{w as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function S(t){const n=t.regex,a=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),l="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",E="("+l+"|"+n.optional(r)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",f=n.concat(/\batomic_/,n.either("bool","char","schar","uchar","short","ushort","int","uint","long","ulong","llong","ullong","char16_t","char32_t","wchar_t","int_least8_t","uint_least8_t","int_least16_t","uint_least16_t","int_least32_t","uint_least32_t","int_least64_t","uint_least64_t","int_fast8_t","uint_fast8_t","int_fast16_t","uint_fast16_t","int_fast32_t","uint_fast32_t","int_fast64_t","uint_fast64_t","intptr_t","uintptr_t","size_t","ptrdiff_t","intmax_t","uintmax_t"),/\b/),i={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:f}]},s={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\\s"]{0,16})\(/,end:/\)([^()\\\s"]{0,16})"/})]},o={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},m={scope:"meta",begin:/#\s*include\b/,end:/$/,keywords:{keyword:"include"},contains:[{begin:/\\\n/},s,{scope:"string",begin:/<.*?>/},a,t.C_BLOCK_COMMENT_MODE]},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(s,{className:"string"}),a,t.C_BLOCK_COMMENT_MODE]},c=[m,u],p={className:"title",begin:n.optional(r)+t.IDENT_RE,relevance:0},d=n.optional(r)+t.IDENT_RE+"\\s*\\(",g=12,e={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},_=[...c,i,a,t.C_BLOCK_COMMENT_MODE,o,s],C={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:e,contains:_.concat([{begin:/\(/,end:/\)/,keywords:e,contains:_.concat(["self"]),relevance:0}]),relevance:0},b={begin:"("+E+"[\\*&\\s]+){1,"+g+"}"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:e,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:l,keywords:e,relevance:0},{begin:d,returnBegin:!0,contains:[t.inherit(p,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:e,relevance:0,contains:[a,t.C_BLOCK_COMMENT_MODE,s,o,i,{begin:/\(/,end:/\)/,keywords:e,relevance:0,contains:["self",a,t.C_BLOCK_COMMENT_MODE,s,o,i]}]},i,a,t.C_BLOCK_COMMENT_MODE,...c]};return{name:"C",aliases:["h"],keywords:e,disableAutodetect:!0,illegal:"</",contains:[].concat(C,b,_,[...c,{begin:t.IDENT_RE+"::",keywords:e},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:u,strings:s,keywords:e}}}export{S as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{g as Kt}from"./_commonjsHelpers-Cpj98o6Y.js";var re,ve;function Ft(){if(ve)return re;ve=1;function ce(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const i=e[t],u=typeof i;(u==="object"||u==="function")&&!Object.isFrozen(i)&&ce(i)}),e}class oe{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function ae(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function T(e,...t){const i=Object.create(null);for(const u in e)i[u]=e[u];return t.forEach(function(u){for(const b in u)i[b]=u[b]}),i}const Ce="</span>",le=e=>!!e.scope,Le=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const i=e.split(".");return[`${t}${i.shift()}`,...i.map((u,b)=>`${u}${"_".repeat(b+1)}`)].join(" ")}return`${t}${e}`};class je{constructor(t,i){this.buffer="",this.classPrefix=i.classPrefix,t.walk(this)}addText(t){this.buffer+=ae(t)}openNode(t){if(!le(t))return;const i=Le(t.scope,{prefix:this.classPrefix});this.span(i)}closeNode(t){le(t)&&(this.buffer+=Ce)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}}const ue=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class J{constructor(){this.rootNode=ue(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const i=ue({scope:t});this.add(i),this.stack.push(i)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,i){return typeof i=="string"?t.addText(i):i.children&&(t.openNode(i),i.children.forEach(u=>this._walk(t,u)),t.closeNode(i)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(i=>typeof i=="string")?t.children=[t.children.join("")]:t.children.forEach(i=>{J._collapse(i)}))}}class He extends J{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,i){const u=t.root;i&&(u.scope=`language:${i}`),this.add(u)}toHTML(){return new je(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function H(e){return e?typeof e=="string"?e:e.source:null}function fe(e){return D("(?=",e,")")}function Pe(e){return D("(?:",e,")*")}function Ue(e){return D("(?:",e,")?")}function D(...e){return e.map(i=>H(i)).join("")}function $e(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function $(...e){return"("+($e(e).capture?"":"?:")+e.map(u=>H(u)).join("|")+")"}function ge(e){return new RegExp(e.toString()+"|").exec("").length-1}function Ge(e,t){const i=e&&e.exec(t);return i&&i.index===0}const We=new RegExp($(/\[(?:[^\\\]]|\\.)*\]/,/\(\?<(?![=!])[^>]+>/,/\(\?'[^']+'/,/\(\??/,/\\([1-9][0-9]*)/,/\\./));function q(e,{joinWith:t}){let i=0;return e.map(u=>{i+=1;const b=i;let _=H(u),c="";for(;_.length>0;){const r=We.exec(_);if(!r){c+=_;break}c+=_.substring(0,r.index),_=_.substring(r.index+r[0].length),r[0][0]==="\\"&&r[1]?c+="\\"+String(Number(r[1])+b):(c+=r[0],(r[0]==="("||/^\(\?[<']/.test(r[0]))&&i++)}return c}).map(u=>`(${u})`).join(t)}const Ke=/\b\B/,he="[a-zA-Z]\\w*",V="[a-zA-Z_]\\w*",pe="\\b\\d+(\\.\\d+)?",de="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ee="\\b(0b[01]+)",Fe="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",ze=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=D(t,/.*\b/,e.binary,/\b.*/)),T({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(i,u)=>{i.index!==0&&u.ignoreMatch()}},e)},P={begin:"\\\\[\\s\\S]",relevance:0},Xe={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[P]},Ye={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[P]},Ze={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},G=function(e,t,i={}){const u=T({scope:"comment",begin:e,end:t,contains:[]},i);u.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const b=$("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return u.contains.push({begin:D(/[ ]+/,"(",b,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),u},Je=G("//","$"),qe=G("/\\*","\\*/"),Ve=G("#","$"),Qe={scope:"number",begin:pe,relevance:0},me={scope:"number",begin:de,relevance:0},et={scope:"number",begin:Ee,relevance:0},tt={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[P,{begin:/\[/,end:/\]/,relevance:0,contains:[P]}]},nt={scope:"title",begin:he,relevance:0},it={scope:"title",begin:V,relevance:0},st={begin:"\\.\\s*"+V,relevance:0};var W=Object.freeze({__proto__:null,APOS_STRING_MODE:Xe,BACKSLASH_ESCAPE:P,BINARY_NUMBER_MODE:et,BINARY_NUMBER_RE:Ee,COMMENT:G,C_BLOCK_COMMENT_MODE:qe,C_LINE_COMMENT_MODE:Je,C_NUMBER_MODE:me,C_NUMBER_RE:de,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(t,i)=>{i.data._beginMatch=t[1]},"on:end":(t,i)=>{i.data._beginMatch!==t[1]&&i.ignoreMatch()}})},HASH_COMMENT_MODE:Ve,IDENT_RE:he,MATCH_NOTHING_RE:Ke,METHOD_GUARD:st,NUMBER_MODE:Qe,NUMBER_RE:pe,PHRASAL_WORDS_MODE:Ze,QUOTE_STRING_MODE:Ye,REGEXP_MODE:tt,RE_STARTERS_RE:Fe,SHEBANG:ze,TITLE_MODE:nt,UNDERSCORE_IDENT_RE:V,UNDERSCORE_TITLE_MODE:it});function rt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function ct(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function ot(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=rt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function at(e,t){Array.isArray(e.illegal)&&(e.illegal=$(...e.illegal))}function lt(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function ut(e,t){e.relevance===void 0&&(e.relevance=1)}const ft=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const i=Object.assign({},e);Object.keys(e).forEach(u=>{delete e[u]}),e.keywords=i.keywords,e.begin=D(i.beforeMatch,fe(i.begin)),e.starts={relevance:0,contains:[Object.assign(i,{endsParent:!0})]},e.relevance=0,delete i.beforeMatch},gt=["of","and","for","in","not","or","if","then","parent","list","value"],ht="keyword";function be(e,t,i=ht){const u=Object.create(null);return typeof e=="string"?b(i,e.split(" ")):Array.isArray(e)?b(i,e):Object.keys(e).forEach(function(_){Object.assign(u,be(e[_],t,_))}),u;function b(_,c){t&&(c=c.map(r=>r.toLowerCase())),c.forEach(function(r){const l=r.split("|");u[l[0]]=[_,pt(l[0],l[1])]})}}function pt(e,t){return t?Number(t):dt(e)?0:1}function dt(e){return gt.includes(e.toLowerCase())}const _e={},v=e=>{console.error(e)},Me=(e,...t)=>{console.log(`WARN: ${e}`,...t)},L=(e,t)=>{_e[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),_e[`${e}/${t}`]=!0)},K=new Error;function xe(e,t,{key:i}){let u=0;const b=e[i],_={},c={};for(let r=1;r<=t.length;r++)c[r+u]=b[r],_[r+u]=!0,u+=ge(t[r-1]);e[i]=c,e[i]._emit=_,e[i]._multi=!0}function Et(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw v("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),K;if(typeof e.beginScope!="object"||e.beginScope===null)throw v("beginScope must be object"),K;xe(e,e.begin,{key:"beginScope"}),e.begin=q(e.begin,{joinWith:""})}}function bt(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw v("skip, excludeEnd, returnEnd not compatible with endScope: {}"),K;if(typeof e.endScope!="object"||e.endScope===null)throw v("endScope must be object"),K;xe(e,e.end,{key:"endScope"}),e.end=q(e.end,{joinWith:""})}}function _t(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Mt(e){_t(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Et(e),bt(e)}function xt(e){function t(c,r){return new RegExp(H(c),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(r?"g":""))}class i{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(r,l){l.position=this.position++,this.matchIndexes[this.matchAt]=l,this.regexes.push([l,r]),this.matchAt+=ge(r)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const r=this.regexes.map(l=>l[1]);this.matcherRe=t(q(r,{joinWith:"|"}),!0),this.lastIndex=0}exec(r){this.matcherRe.lastIndex=this.lastIndex;const l=this.matcherRe.exec(r);if(!l)return null;const w=l.findIndex((U,m)=>m>0&&U!==void 0),M=this.matchIndexes[w];return l.splice(0,w),Object.assign(l,M)}}class u{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(r){if(this.multiRegexes[r])return this.multiRegexes[r];const l=new i;return this.rules.slice(r).forEach(([w,M])=>l.addRule(w,M)),l.compile(),this.multiRegexes[r]=l,l}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(r,l){this.rules.push([r,l]),l.type==="begin"&&this.count++}exec(r){const l=this.getMatcher(this.regexIndex);l.lastIndex=this.lastIndex;let w=l.exec(r);if(this.resumingScanAtSamePosition()&&!(w&&w.index===this.lastIndex)){const M=this.getMatcher(0);M.lastIndex=this.lastIndex+1,w=M.exec(r)}return w&&(this.regexIndex+=w.position+1,this.regexIndex===this.count&&this.considerAll()),w}}function b(c){const r=new u;return c.contains.forEach(l=>r.addRule(l.begin,{rule:l,type:"begin"})),c.terminatorEnd&&r.addRule(c.terminatorEnd,{type:"end"}),c.illegal&&r.addRule(c.illegal,{type:"illegal"}),r}function _(c,r){const l=c;if(c.isCompiled)return l;[ct,lt,Mt,ft].forEach(M=>M(c,r)),e.compilerExtensions.forEach(M=>M(c,r)),c.__beforeBegin=null,[ot,at,ut].forEach(M=>M(c,r)),c.isCompiled=!0;let w=null;return typeof c.keywords=="object"&&c.keywords.$pattern&&(c.keywords=Object.assign({},c.keywords),w=c.keywords.$pattern,delete c.keywords.$pattern),w=w||/\w+/,c.keywords&&(c.keywords=be(c.keywords,e.case_insensitive)),l.keywordPatternRe=t(w,!0),r&&(c.begin||(c.begin=/\B|\b/),l.beginRe=t(l.begin),!c.end&&!c.endsWithParent&&(c.end=/\B|\b/),c.end&&(l.endRe=t(l.end)),l.terminatorEnd=H(l.end)||"",c.endsWithParent&&r.terminatorEnd&&(l.terminatorEnd+=(c.end?"|":"")+r.terminatorEnd)),c.illegal&&(l.illegalRe=t(c.illegal)),c.contains||(c.contains=[]),c.contains=[].concat(...c.contains.map(function(M){return wt(M==="self"?c:M)})),c.contains.forEach(function(M){_(M,l)}),c.starts&&_(c.starts,r),l.matcher=b(l),l}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=T(e.classNameAliases||{}),_(e)}function we(e){return e?e.endsWithParent||we(e.starts):!1}function wt(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return T(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:we(e)?T(e,{starts:e.starts?T(e.starts):null}):Object.isFrozen(e)?T(e):e}var Ot="11.12.0";class Rt extends Error{constructor(t,i){super(t),this.name="HTMLInjectionError",this.html=i}}const Q=ae,Oe=T,Re=Symbol("nomatch"),yt=7,ye=function(e){const t=Object.create(null),i=Object.create(null),u=[];let b=!0;const _="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:He};function l(n){return r.noHighlightRe.test(n)}function w(n){let a=n.className+" ";a+=n.parentNode?n.parentNode.className:"";const h=r.languageDetectRe.exec(a);if(h){const d=I(h[1]);return d||(Me(_.replace("{}",h[1])),Me("Falling back to no-highlight mode for this block.",n)),d?h[1]:"no-highlight"}return a.split(/\s+/).find(d=>l(d)||I(d))}function M(n,a,h){let d="",x="";typeof a=="object"?(d=n,h=a.ignoreIllegals,x=a.language):(L("10.7.0","highlight(lang, code, ...args) has been deprecated."),L("10.7.0",`Please use highlight(code, options) instead.
|
|
2
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),x=n,d=a),h===void 0&&(h=!0);const S={code:d,language:x};z("before:highlight",S);const B=S.result?S.result:U(S.language,S.code,h);return B.code=S.code,z("after:highlight",B),B}function U(n,a,h,d){const x=Object.create(null);function S(s,o){return s.keywords[o]}function B(){if(!f.keywords){O.addText(E);return}let s=0;f.keywordPatternRe.lastIndex=0;let o=f.keywordPatternRe.exec(E),g="";for(;o;){g+=E.substring(s,o.index);const p=A.case_insensitive?o[0].toLowerCase():o[0],R=S(f,p);if(R){const[k,Gt]=R;if(O.addText(g),g="",x[p]=(x[p]||0)+1,x[p]<=yt&&(Z+=Gt),k.startsWith("_"))g+=o[0];else{const Wt=A.classNameAliases[k]||k;N(o[0],Wt)}}else g+=o[0];s=f.keywordPatternRe.lastIndex,o=f.keywordPatternRe.exec(E)}g+=E.substring(s),O.addText(g)}function X(){if(E==="")return;let s=null;if(typeof f.subLanguage=="string"){if(!t[f.subLanguage]){O.addText(E);return}s=U(f.subLanguage,E,!0,De[f.subLanguage]),De[f.subLanguage]=s._top}else s=ee(E,f.subLanguage.length?f.subLanguage:null);f.relevance>0&&(Z+=s.relevance),O.__addSublanguage(s._emitter,s.language)}function y(){f.subLanguage!=null?X():B(),E=""}function N(s,o){s!==""&&(O.startScope(o),O.addText(s),O.endScope())}function ke(s,o){let g=1;const p=o.length-1;for(;g<=p;){if(!s._emit[g]){g++;continue}const R=A.classNameAliases[s[g]]||s[g],k=o[g];R?N(k,R):(E=k,B(),E=""),g++}}function Te(s,o){return s.scope&&typeof s.scope=="string"&&O.openNode(A.classNameAliases[s.scope]||s.scope),s.beginScope&&(s.beginScope._wrap?(N(E,A.classNameAliases[s.beginScope._wrap]||s.beginScope._wrap),E=""):s.beginScope._multi&&(ke(s.beginScope,o),E="")),f=Object.create(s,{parent:{value:f}}),f}function Ie(s,o,g){let p=Ge(s.endRe,g);if(p){if(s["on:end"]){const R=new oe(s);s["on:end"](o,R),R.isMatchIgnored&&(p=!1)}if(p){for(;s.endsParent&&s.parent;)s=s.parent;return s}}if(s.endsWithParent)return Ie(s.parent,o,g)}function jt(s){return f.matcher.regexIndex===0?(E+=s[0],1):(se=!0,0)}function Ht(s){const o=s[0],g=s.rule,p=new oe(g),R=[g.__beforeBegin,g["on:begin"]];for(const k of R)if(k&&(k(s,p),p.isMatchIgnored))return jt(o);return g.skip?E+=o:(g.excludeBegin&&(E+=o),y(),!g.returnBegin&&!g.excludeBegin&&(E=o)),Te(g,s),g.returnBegin?0:o.length}function Pt(s){const o=s[0],g=a.substring(s.index),p=Ie(f,s,g);if(!p)return Re;const R=f;f.endScope&&f.endScope._wrap?(y(),N(o,f.endScope._wrap)):f.endScope&&f.endScope._multi?(y(),ke(f.endScope,s)):R.skip?E+=o:(R.returnEnd||R.excludeEnd||(E+=o),y(),R.excludeEnd&&(E=o));do f.scope&&O.closeNode(),!f.skip&&!f.subLanguage&&(Z+=f.relevance),f=f.parent;while(f!==p.parent);return p.starts&&Te(p.starts,s),R.returnEnd?0:o.length}function Ut(){const s=[];for(let o=f;o!==A;o=o.parent)o.scope&&s.unshift(o.scope);s.forEach(o=>O.openNode(o))}let Y={};function Be(s,o){const g=o&&o[0];if(E+=s,g==null)return y(),0;if(Y.type==="begin"&&o.type==="end"&&Y.index===o.index&&g===""){if(E+=a.slice(o.index,o.index+1),!b){const p=new Error(`0 width match regex (${n})`);throw p.languageName=n,p.badRule=Y.rule,p}return 1}if(Y=o,o.type==="begin")return Ht(o);if(o.type==="illegal"&&!h){const p=new Error('Illegal lexeme "'+g+'" for mode "'+(f.scope||"<unnamed>")+'"');throw p.mode=f,p}else if(o.type==="end"){const p=Pt(o);if(p!==Re)return p}if(o.type==="illegal"&&g==="")return o.index===a.length||(E+=`
|
|
3
|
+
`),1;if(ie>1e5&&ie>o.index*3)throw new Error("potential infinite loop, way more iterations than matches");return E+=g,g.length}const A=I(n);if(!A)throw v(_.replace("{}",n)),new Error('Unknown language: "'+n+'"');const $t=xt(A);let ne="",f=d||$t;const De={},O=new r.__emitter(r);Ut();let E="",Z=0,C=0,ie=0,se=!1;try{if(A.__emitTokens)A.__emitTokens(a,O);else{for(f.matcher.considerAll();;){ie++,se?se=!1:f.matcher.considerAll(),f.matcher.lastIndex=C;const s=f.matcher.exec(a);if(!s)break;const o=a.substring(C,s.index),g=Be(o,s);C=s.index+g}Be(a.substring(C))}return O.finalize(),ne=O.toHTML(),{language:n,value:ne,relevance:Z,illegal:!1,_emitter:O,_top:f}}catch(s){if(s.message&&s.message.includes("Illegal"))return{language:n,value:Q(a),illegal:!0,relevance:0,_illegalBy:{message:s.message,index:C,context:a.slice(C-100,C+100),mode:s.mode,resultSoFar:ne},_emitter:O};if(b)return{language:n,value:Q(a),illegal:!1,relevance:0,errorRaised:s,_emitter:O,_top:f};throw s}}function m(n){const a={value:Q(n),illegal:!1,relevance:0,_top:c,_emitter:new r.__emitter(r)};return a._emitter.addText(n),a}function ee(n,a){a=a||r.languages||Object.keys(t);const h=m(n),d=a.filter(I).filter(Ae).map(y=>U(y,n,!1));d.unshift(h);const x=d.sort((y,N)=>{if(y.relevance!==N.relevance)return N.relevance-y.relevance;if(y.language&&N.language){if(I(y.language).supersetOf===N.language)return 1;if(I(N.language).supersetOf===y.language)return-1}return 0}),[S,B]=x,X=S;return X.secondBest=B,X}function St(n,a,h){const d=a&&i[a]||h;n.classList.add("hljs"),n.classList.add(`language-${d}`)}function te(n){let a=null;const h=w(n);if(l(h))return;if(z("before:highlightElement",{el:n,language:h}),n.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",n);return}if(n.children.length>0&&(r.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(n)),r.throwUnescapedHTML))throw new Rt("One of your code blocks includes unescaped HTML.",n.innerHTML);a=n;const d=a.textContent,x=h?M(d,{language:h,ignoreIllegals:!0}):ee(d);n.innerHTML=x.value,n.dataset.highlighted="yes",St(n,h,x.language),n.result={language:x.language,re:x.relevance,relevance:x.relevance},x.secondBest&&(n.secondBest={language:x.secondBest.language,relevance:x.secondBest.relevance}),z("after:highlightElement",{el:n,result:x,text:d})}function Nt(n){r=Oe(r,n)}const At=()=>{F(),L("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function kt(){F(),L("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Se=!1;function F(){function n(){F()}if(document.readyState==="loading"){Se||window.addEventListener("DOMContentLoaded",n,!1),Se=!0;return}document.querySelectorAll(r.cssSelector).forEach(te)}function Tt(n,a){let h=null;try{h=a(e)}catch(d){if(v("Language definition for '{}' could not be registered.".replace("{}",n)),b)v(d);else throw d;h=c}h.name||(h.name=n),t[n]=h,h.rawDefinition=a.bind(null,e),h.aliases&&Ne(h.aliases,{languageName:n})}function It(n){delete t[n];for(const a of Object.keys(i))i[a]===n&&delete i[a]}function Bt(){return Object.keys(t)}function I(n){return n=(n||"").toLowerCase(),t[n]||t[i[n]]}function Ne(n,{languageName:a}){typeof n=="string"&&(n=[n]),n.forEach(h=>{i[h.toLowerCase()]=a})}function Ae(n){const a=I(n);return a&&!a.disableAutodetect}function Dt(n){n["before:highlightBlock"]&&!n["before:highlightElement"]&&(n["before:highlightElement"]=a=>{n["before:highlightBlock"](Object.assign({block:a.el},a))}),n["after:highlightBlock"]&&!n["after:highlightElement"]&&(n["after:highlightElement"]=a=>{n["after:highlightBlock"](Object.assign({block:a.el},a))})}function vt(n){Dt(n),u.push(n)}function Ct(n){const a=u.indexOf(n);a!==-1&&u.splice(a,1)}function z(n,a){const h=n;u.forEach(function(d){d[h]&&d[h](a)})}function Lt(n){return L("10.7.0","highlightBlock will be removed entirely in v12.0"),L("10.7.0","Please use highlightElement now."),te(n)}Object.assign(e,{highlight:M,highlightAuto:ee,highlightAll:F,highlightElement:te,highlightBlock:Lt,configure:Nt,initHighlighting:At,initHighlightingOnLoad:kt,registerLanguage:Tt,unregisterLanguage:It,listLanguages:Bt,getLanguage:I,registerAliases:Ne,autoDetection:Ae,inherit:Oe,addPlugin:vt,removePlugin:Ct}),e.debugMode=function(){b=!1},e.safeMode=function(){b=!0},e.versionString=Ot,e.regex={concat:D,lookahead:fe,either:$,optional:Ue,anyNumberOfTimes:Pe};for(const n in W)typeof W[n]=="object"&&ce(W[n]);return Object.assign(e,W),e},j=ye({});return j.newInstance=()=>ye({}),re=j,j.HighlightJS=j,j.default=j,re}var zt=Ft();const Zt=Kt(zt);export{Zt as HighlightJS,Zt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function S(e){const n=e.regex,a=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),_="decltype\\(auto\\)",c="[a-zA-Z_]\\w*::",m="(?!struct)("+_+"|"+n.optional(c)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},r={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\\s"]{0,16})\(/,end:/\)([^()\\\s"]{0,16})"/})]},i={className:"number",variants:[{begin:"[+-]?(?:(?:\\b[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|\\b[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|\\b0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},E={scope:"meta",begin:/#\s*include\b/,end:/$/,keywords:{keyword:"include"},contains:[{begin:/\\\n/},r,{scope:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},f={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(r,{className:"string"}),a,e.C_BLOCK_COMMENT_MODE]},o=[E,f],g={className:"title",begin:n.optional(c)+e.IDENT_RE,relevance:0},u=n.optional(c)+e.IDENT_RE+"\\s*\\(",b=12,d=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],N=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],T=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],C=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],t={type:N,keyword:d,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:T},p={className:"function.dispatch",relevance:0,keywords:{_hint:C},begin:n.concat(/\b/,`(?!${d.join("|")})`,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},l=[p,...o,s,a,e.C_BLOCK_COMMENT_MODE,i,r],y={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:t,contains:l.concat([{begin:/\(/,end:/\)/,keywords:t,contains:l.concat(["self"]),relevance:0}]),relevance:0},O={className:"function",begin:"("+m+"[\\*&\\s]+){1,"+b+"}"+u,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:_,keywords:t,relevance:0},{begin:u,returnBegin:!0,contains:[g],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[r,i]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,r,i,s,{begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,r,i,s]}]},s,a,e.C_BLOCK_COMMENT_MODE,...o]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:t,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(y,O,p,l,[...o,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:t,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:t},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}export{S as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function L(e){const g=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],N=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],O=["default","false","null","true"],T=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],M=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],n={keyword:T.concat(M),built_in:g,literal:O},a=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),i="\\d(_*\\d)*",l="([uU][lL]?|[lL][uU]?)?",t={className:"number",variants:[{begin:"\\b0[bB]_*[01](_*[01])*"+l},{begin:"(-?)\\b0[xX]_*[a-fA-F0-9](_*[a-fA-F0-9])*"+l},{begin:"(-?)(\\b"+i+"(\\.("+i+")?)?|\\."+i+")([eE][-+]?"+i+")?"+"([fFdDmM]|[uU][lL]?|[lL][uU]?)?"}],relevance:0},u={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},r={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},b=e.inherit(r,{illegal:/\n/}),c={className:"subst",begin:/\{/,end:/\}/,keywords:n},s=e.inherit(c,{illegal:/\n/}),o={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,s]},E={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},c]},I=e.inherit(E,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},s]});c.contains=[E,o,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE],s.contains=[I,o,b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const d={variants:[u,E,o,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},_={begin:"<",end:">",contains:[{beginKeywords:"in out"},a]},R=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",D={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},d,t,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},a,_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[a,_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+R+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{beginKeywords:N.join(" "),relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,_],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[d,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},D]}}export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const s=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),c=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],d=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],m=[...c,...d],b=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),g=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),p=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),f=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","corner-bottom-left-shape","corner-bottom-right-shape","corner-shape","corner-top-left-shape","corner-top-right-shape","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function h(t){const i=t.regex,e=s(t),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},n="and or not only",a=/@-?\w[\w]*(-\w+)*/,l="[a-zA-Z-][a-zA-Z0-9_-]*",o=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[e.BLOCK_COMMENT,r,e.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+l,relevance:0},e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+g.join("|")+")"},{begin:":(:)?("+p.join("|")+")"}]},e.CSS_VARIABLE,{className:"attribute",begin:"\\b("+f.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[e.BLOCK_COMMENT,e.HEXCOLOR,e.IMPORTANT,e.CSS_NUMBER_MODE,e.UNICODE_RANGE,...o,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...o,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},e.FUNCTION_DISPATCH]},{begin:i.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:a},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:n,attribute:b.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...o,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+m.join("|")+")\\b"}]}}export{h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _(e){const a=e.regex,t={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},n={className:"subst",variants:[{begin:/\$\{/,end:/\}/}],keywords:"true false null this is new super"},i={className:"number",relevance:0,variants:[{match:/\b[0-9][0-9_]*(\.[0-9][0-9_]*)?([eE][+-]?[0-9][0-9_]*)?\b/},{match:/\b0[xX][0-9A-Fa-f][0-9A-Fa-f_]*\b/}]},s={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"""',end:'"""',contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t,n]}]};n.contains=[i,s];const r=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],c=r.map(S=>`${S}?`),o={keyword:["abstract","as","assert","async","await","base","break","case","catch","class","const","continue","covariant","default","deferred","do","dynamic","else","enum","export","extends","extension","external","factory","false","final","finally","for","Function","get","hide","if","implements","import","in","interface","is","late","library","mixin","new","null","on","operator","part","required","rethrow","return","sealed","set","show","static","super","switch","sync","this","throw","true","try","typedef","var","void","when","while","with","yield"],built_in:r.concat(c).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]),$pattern:/[A-Za-z][A-Za-z0-9_]*\??/},l={match:a.concat(/\b_?/,a.either(/(?:[A-Z]+[a-z0-9]+)+/,/(?:[A-Z]+[a-z0-9]+)+[A-Z]+/),/(?![A-Za-z0-9_])/),scope:"title.class"},E={match:/\b(?!(?:assert|catch|for|if|switch|while)\b)[a-z_][A-Za-z0-9_]*(?=\()/,scope:"title.function"};return{name:"Dart",keywords:o,contains:[s,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0}),e.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".",end:"$",relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},l,E,i,{className:"meta",begin:"@[A-Za-z]+"}]}}export{_ as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function a(d){const e=d.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:e.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+,\d+ +\+\d+ +@@/,/^@@ +-\d+ +\+\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function a(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function r(e){const n={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:n,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\b0[bB](_?[01])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,illegal:/["']/}]}]}}export{r as default};
|