@composy/log-viewer-core 0.0.1 → 0.0.2
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/CHANGELOG.md +52 -0
- package/README.md +175 -37
- package/dist/index.js +614 -299
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +548 -1
- package/dist/index.min.js.map +1 -0
- package/es/.dts-output-manifest.json +1 -0
- package/es/.dts.tsbuildinfo +1 -0
- package/es/core/EventEmitter.d.ts +0 -1
- package/es/core/EventEmitter.js +13 -9
- package/es/core/EventEmitter.js.map +1 -1
- package/es/core/LogViewer.d.ts +14 -11
- package/es/core/LogViewer.js +243 -64
- package/es/core/LogViewer.js.map +1 -1
- package/es/filters/FilterEngine.d.ts +0 -1
- package/es/filters/FilterEngine.js +31 -26
- package/es/filters/FilterEngine.js.map +1 -1
- package/es/index.d.ts +7 -7
- package/es/index.js +3 -3
- package/es/index.js.map +1 -1
- package/es/renderers/DiffRenderer.d.ts +0 -1
- package/es/renderers/DiffRenderer.js +13 -3
- package/es/renderers/DiffRenderer.js.map +1 -1
- package/es/renderers/TimelineRenderer.d.ts +7 -3
- package/es/renderers/TimelineRenderer.js +56 -22
- package/es/renderers/TimelineRenderer.js.map +1 -1
- package/es/styles/index.d.ts +1 -5
- package/es/styles/index.js +167 -131
- package/es/styles/index.js.map +1 -1
- package/es/types/index.d.ts +4 -1
- package/es/types/index.js +1 -1
- package/es/types/index.js.map +1 -1
- package/es/utils/index.d.ts +1 -2
- package/es/utils/index.js +54 -6
- package/es/utils/index.js.map +1 -1
- package/esm/core/EventEmitter.js +13 -9
- package/esm/core/EventEmitter.js.map +1 -1
- package/esm/core/LogViewer.js +243 -64
- package/esm/core/LogViewer.js.map +1 -1
- package/esm/filters/FilterEngine.js +31 -26
- package/esm/filters/FilterEngine.js.map +1 -1
- package/esm/index.js +2 -2
- package/esm/index.js.map +1 -1
- package/esm/renderers/DiffRenderer.js +13 -3
- package/esm/renderers/DiffRenderer.js.map +1 -1
- package/esm/renderers/TimelineRenderer.js +56 -22
- package/esm/renderers/TimelineRenderer.js.map +1 -1
- package/esm/styles/index.js +167 -131
- package/esm/styles/index.js.map +1 -1
- package/esm/types/index.js +1 -1
- package/esm/types/index.js.map +1 -1
- package/esm/utils/index.js +54 -6
- package/esm/utils/index.js.map +1 -1
- package/lib/core/EventEmitter.cjs +13 -9
- package/lib/core/EventEmitter.cjs.map +1 -1
- package/{esm/core/EventEmitter.d.ts → lib/core/EventEmitter.d.cts} +0 -1
- package/lib/core/LogViewer.cjs +247 -68
- package/lib/core/LogViewer.cjs.map +1 -1
- package/{esm/core/LogViewer.d.ts → lib/core/LogViewer.d.cts} +14 -11
- package/lib/filters/FilterEngine.cjs +31 -26
- package/lib/filters/FilterEngine.cjs.map +1 -1
- package/lib/filters/{FilterEngine.d.ts → FilterEngine.d.cts} +0 -1
- package/lib/index.cjs +3 -3
- package/lib/index.cjs.map +1 -1
- package/{esm/index.d.ts → lib/index.d.cts} +7 -7
- package/lib/renderers/DiffRenderer.cjs +13 -3
- package/lib/renderers/DiffRenderer.cjs.map +1 -1
- package/lib/renderers/{DiffRenderer.d.ts → DiffRenderer.d.cts} +0 -1
- package/lib/renderers/TimelineRenderer.cjs +55 -21
- package/lib/renderers/TimelineRenderer.cjs.map +1 -1
- package/lib/renderers/{TimelineRenderer.d.ts → TimelineRenderer.d.cts} +7 -3
- package/lib/styles/index.cjs +167 -131
- package/lib/styles/index.cjs.map +1 -1
- package/{esm/styles/index.d.ts → lib/styles/index.d.cts} +1 -5
- package/lib/types/index.cjs +1 -1
- package/lib/types/index.cjs.map +1 -1
- package/{esm/types/index.d.ts → lib/types/index.d.cts} +4 -1
- package/lib/utils/index.cjs +54 -6
- package/lib/utils/index.cjs.map +1 -1
- package/{esm/utils/index.d.ts → lib/utils/index.d.cts} +1 -2
- package/package.json +15 -9
- package/es/core/EventEmitter.d.ts.map +0 -1
- package/es/core/LogViewer.d.ts.map +0 -1
- package/es/filters/FilterEngine.d.ts.map +0 -1
- package/es/index.d.ts.map +0 -1
- package/es/renderers/DiffRenderer.d.ts.map +0 -1
- package/es/renderers/TimelineRenderer.d.ts.map +0 -1
- package/es/styles/index.d.ts.map +0 -1
- package/es/types/index.d.ts.map +0 -1
- package/es/utils/index.d.ts.map +0 -1
- package/esm/core/EventEmitter.d.ts.map +0 -1
- package/esm/core/LogViewer.d.ts.map +0 -1
- package/esm/filters/FilterEngine.d.ts +0 -26
- package/esm/filters/FilterEngine.d.ts.map +0 -1
- package/esm/index.d.ts.map +0 -1
- package/esm/renderers/DiffRenderer.d.ts +0 -18
- package/esm/renderers/DiffRenderer.d.ts.map +0 -1
- package/esm/renderers/TimelineRenderer.d.ts +0 -22
- package/esm/renderers/TimelineRenderer.d.ts.map +0 -1
- package/esm/styles/index.d.ts.map +0 -1
- package/esm/types/index.d.ts.map +0 -1
- package/esm/utils/index.d.ts.map +0 -1
- package/lib/core/EventEmitter.d.ts +0 -11
- package/lib/core/LogViewer.d.ts +0 -46
- package/lib/index.d.ts +0 -26
- package/lib/styles/index.d.ts +0 -9
- package/lib/types/index.d.ts +0 -113
- package/lib/utils/index.d.ts +0 -18
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.0.2] - 2026-10-12
|
|
4
|
+
|
|
5
|
+
### ✨ 新功能
|
|
6
|
+
|
|
7
|
+
- **log-viewer**: 重构项目结构并完善文档与示例 ([7844674](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/78446741f92a4e0fa35e358481246c597c5d3691)) - @swimly
|
|
8
|
+
- **log-viewer**: 添加项目配置文件 ([a952739](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/a9527395a4999212ec4f0444c7f1a54a021da0ca)) - @swimly
|
|
9
|
+
- auto-generated playground + README for log-viewer sub-packages ([a2250ec](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/a2250ecd98551c15e822dde8a61389b02f161725)) - @swimly
|
|
10
|
+
- **log-viewer**: 实现核心库、Vue组件和playground演示 ([ec9764a](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/ec9764a7bc8964b95486f1035ece6783801380a3)) - @swimly
|
|
11
|
+
- init log-viewer project structure ([304c73f](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/304c73f7c9dbd6886abf059806bf619cb724cc84)) - @swimly
|
|
12
|
+
|
|
13
|
+
### 🐛 Bug 修复
|
|
14
|
+
|
|
15
|
+
- **log-viewer**: 规范 EventEmitter 类型 ([58545d3](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/58545d346c1031471c84cc972b91614cee4c3858)) - @swimly
|
|
16
|
+
|
|
17
|
+
### 📝 文档更新
|
|
18
|
+
|
|
19
|
+
- **core**: 更新 README 文档,补充使用说明与示例 ([8e1330e](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/8e1330e5c293e76554444351ed1be15d5559b634)) - @swimly
|
|
20
|
+
|
|
21
|
+
### 📦 构建系统
|
|
22
|
+
|
|
23
|
+
- **packages**: 更新各包依赖与配置项 ([939d05c](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/939d05c5a3a94e576023c360224cdd0600f73d8f)) - @swimly
|
|
24
|
+
- 调整本地ldesign依赖为本地链接,更新核心包构建配置 ([1a9d4a1](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/1a9d4a1d8e05ee6773e6e7876eec50663baeaf45)) - @swimly
|
|
25
|
+
- **tsconfig**: 完善 tsconfig 配置,添加声明文件输出与映射配置 ([d5f862a](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/d5f862a0149af874e78e26116ce0d276c3479a6c)) - @swimly
|
|
26
|
+
- 为 core 和 vue 包添加 ldesign-builder 配置 ([0ded57e](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/0ded57e7bde3fcfe8fa1a2af05beb9a6c1beb7e1)) - @swimly
|
|
27
|
+
|
|
28
|
+
### 🔧 其他
|
|
29
|
+
|
|
30
|
+
- **log-viewer**: 更新项目配置与依赖管理 ([986acd2](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/986acd26bdecd9096450049f32d067bf4ae8b292)) - @swimly
|
|
31
|
+
- 更新 core 和 vue 包的依赖版本 ([a50b9d7](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/a50b9d79ed2dfb4296ab960bc605394ad233eb2e)) - @swimly
|
|
32
|
+
- update log-viewer (15 files) ([c45bb7d](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/c45bb7d3705ff21255c7900f1547d3e23ff6abd0)) - @swimly
|
|
33
|
+
- normalize versions, clean artifacts, update gitignore ([1fa0666](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/1fa0666c7516c24c943c3bd5e0edd2ce5c664203)) - @swimly
|
|
34
|
+
- update - chore(code-quality): 完成首轮代码优化与æ ([ac14af0](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/ac14af054dd10254ed40c7cb2efa4bf9c9b23735)) - @swimly
|
|
35
|
+
- **code-quality**: 完成首轮代码优化与标准化工作 ([82f7750](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/82f77508bedc8f99c2c0db16098c3bc81f05f185)) - @swimly
|
|
36
|
+
- 批量更新 - 规范 .gitignore 清理源码 ([cf22736](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/cf22736fbb924cc0a40506e2b06b304d7aa4356d)) - @swimly
|
|
37
|
+
- unified build config and structure ([b193057](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/b1930571dadec0dbe8240dfc0fcd7fbef046b28e)) - @swimly
|
|
38
|
+
- 添加 ESLint 配置和测试脚本到 core 和 vue 包 ([6742aec](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/6742aec2dc2d11b66d9a8ecbd7db4f5ab0616cf4)) - @swimly
|
|
39
|
+
- add build config, tsconfig, README ([1c1c88f](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/1c1c88fc9c35a9f82161b98e6800a8ac98b811e8)) - @swimly
|
|
40
|
+
- clean up project structure - keep only packages/core/src and packages/vue/src ([fed9abd](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/fed9abd6ac1a5b65123f79d9f60cc394beda1822)) - @swimly
|
|
41
|
+
- 标准化构建配置并更新外部依赖声明 ([645e72d](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/645e72dfa27e428da23270dc6dbbcbaaee88e384)) - @swimly
|
|
42
|
+
- batch commit submodule changes ([dae1c30](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/dae1c30d34b23869b357ee1ef6f954d08b7d5781)) - @swimly
|
|
43
|
+
- set versions to 0.0.1 and pin @ldesign deps ([0b6b3a9](https://gitee.com/ldesign-v1/ldesign-log-viewer/commit/0b6b3a98fb6096a0ac735216166ea9e63ed081b3)) - @swimly
|
|
44
|
+
|
|
45
|
+
### 👥 Contributors
|
|
46
|
+
|
|
47
|
+
swimly
|
|
48
|
+
|
|
49
|
+
### 📊 Statistics
|
|
50
|
+
|
|
51
|
+
- Total Commits: **25**
|
|
52
|
+
- Contributors: **1**
|
package/README.md
CHANGED
|
@@ -1,37 +1,175 @@
|
|
|
1
|
-
# @composy/log-viewer-core
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## 安装
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
├──
|
|
30
|
-
├──
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
# @composy/log-viewer-core
|
|
2
|
+
|
|
3
|
+
审计日志查看器核心库 — 操作日志的计时线可视化与追溯(渲染库,类实例模式,非 Web Component)。
|
|
4
|
+
|
|
5
|
+
`log-viewer-core` 通过 `LogViewer` 类实例 + `TimelineRenderer` + `DiffRenderer`
|
|
6
|
+
直接操作宿主 DOM,将审计日志渲染为时间线:支持按操作类型/模块/用户/IP/关键字/时间范围的多条件筛选,时间戳倒序排列与服务端式分页,条目点击展开详情并通过
|
|
7
|
+
`DiffRenderer`
|
|
8
|
+
呈现字段级变更对比(DiffEntry),内置异常标记(非工作时间/敏感操作/高频操作)与明暗主题切换。它不依赖任何 UI 框架,`packages/vue`
|
|
9
|
+
另行提供 Vue 3 适配器;样式通过 `injectStyles()` 注入 `<head>`。
|
|
10
|
+
|
|
11
|
+
## 安装
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# pnpm
|
|
15
|
+
pnpm add @composy/log-viewer-core
|
|
16
|
+
# npm
|
|
17
|
+
npm install @composy/log-viewer-core
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 目录结构
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
packages/core/
|
|
24
|
+
├── src/
|
|
25
|
+
│ ├── index.ts # 统一导出入口 + createLogViewer 工厂
|
|
26
|
+
│ ├── types/index.ts # 全部类型与常量(ACTION_LABELS/ACTION_COLORS)
|
|
27
|
+
│ ├── core/ # LogViewer.ts / EventEmitter.ts
|
|
28
|
+
│ ├── filters/ # FilterEngine.ts 多条件筛选引擎
|
|
29
|
+
│ ├── renderers/ # TimelineRenderer.ts / DiffRenderer.ts
|
|
30
|
+
│ ├── styles/index.ts # 样式定义 + injectStyles 注入
|
|
31
|
+
│ └── utils/index.ts # formatDate/formatRelativeTime/escapeHtml/debounce/uid/formatValue/deepClone
|
|
32
|
+
├── .ldesign/
|
|
33
|
+
│ ├── builder.config.ts # @composy/builder(rolldown)构建配置
|
|
34
|
+
│ ├── tsconfig.esm.json # ESM 类型检查配置
|
|
35
|
+
│ └── tsconfig.cjs.json # CJS 类型检查配置
|
|
36
|
+
└── package.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 核心 API 详表
|
|
40
|
+
|
|
41
|
+
以下导出均严格来自 `src/index.ts`,按分组列出。
|
|
42
|
+
|
|
43
|
+
### 常量与核心(core/)
|
|
44
|
+
|
|
45
|
+
| 名称 | 类型 | 签名 | 用途 |
|
|
46
|
+
| ----------------- | -------- | ---------------------------------------- | -------------------------------------- |
|
|
47
|
+
| `VERSION` | const | `'0.1.0'` | 包版本常量 |
|
|
48
|
+
| `LogViewer` | class | `implements LogViewerInstance` | 主引擎:数据管理、筛选、分页、渲染编排 |
|
|
49
|
+
| `createLogViewer` | function | `(config: LogViewerConfig) => LogViewer` | 创建查看器实例的工厂函数 |
|
|
50
|
+
| `EventEmitter` | class | `on/emit/removeAllListeners` | 轻量事件总线 |
|
|
51
|
+
|
|
52
|
+
### 筛选与渲染器
|
|
53
|
+
|
|
54
|
+
| 名称 | 类型 | 签名 | 用途 |
|
|
55
|
+
| ------------------ | ----- | -------------------------------------------------------------------- | --------------------------------------- |
|
|
56
|
+
| `FilterEngine` | class | `filter(data, filter) => LogEntry[]` | 按用户/动作/模块/IP/时间范围/关键字过滤 |
|
|
57
|
+
| `TimelineRenderer` | class | `render(pageData, expanded) => HTMLElement`、`renderPagination(...)` | 渲染时间线条目与分页 |
|
|
58
|
+
| `DiffRenderer` | class | `renderDetail(entry) => HTMLElement` | 渲染条目字段级变更详情 |
|
|
59
|
+
|
|
60
|
+
### 工具与样式
|
|
61
|
+
|
|
62
|
+
| 名称 | 类型 | 签名 | 用途 |
|
|
63
|
+
| ----------------------------------- | -------- | --------------------------------------- | ----------------------- |
|
|
64
|
+
| `formatDate` / `formatRelativeTime` | function | `(value) => string` | 日期 / 相对时间格式化 |
|
|
65
|
+
| `escapeHtml` | function | `(str) => string` | HTML 转义(防 XSS) |
|
|
66
|
+
| `debounce` | function | `(fn, wait?) => 包装函数` | 防抖 |
|
|
67
|
+
| `uid` | function | `() => string` | 生成唯一 ID |
|
|
68
|
+
| `formatValue` / `deepClone` | function | `(value) => string` / `(obj) => 深拷贝` | 值格式化显示 / 深拷贝 |
|
|
69
|
+
| `injectStyles` | function | `() => void` | 注入全局样式到 `<head>` |
|
|
70
|
+
|
|
71
|
+
### 类型与常量(types/)
|
|
72
|
+
|
|
73
|
+
| 名称 | 类型 | 说明 |
|
|
74
|
+
| ----------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
75
|
+
| `ActionType` | type | `'create' \| 'update' \| 'delete' \| 'query' \| 'login' \| 'logout' \| 'export' \| 'import' \| 'approve' \| 'reject' \| 'other'` 操作类型 |
|
|
76
|
+
| `ThemeMode` / `AnomalyType` | type | 主题 `'light' \| 'dark'`;异常标记 `'off-hours' \| 'sensitive' \| 'high-frequency' \| 'none'` |
|
|
77
|
+
| `DiffEntry` | interface | 字段变更条目 `{ field; label?; oldValue; newValue }` |
|
|
78
|
+
| `LogEntry` | interface | 日志条目(id、timestamp、user、action、module、detail、changes、anomaly 等) |
|
|
79
|
+
| `FilterConfig` / `PaginationConfig` | interface | 筛选配置、分页配置 |
|
|
80
|
+
| `LogViewerConfig` | interface | 查看器配置(container、data/dataSource、filter、pagination、theme、locale、showFilter/showDiff/showAnomalyBadge 及回调) |
|
|
81
|
+
| `LogViewerInstance` | interface | 实例 API(getData/setData/appendData/setFilter/resetFilter/setTheme/expandEntry/goToPage/on/refresh/destroy) |
|
|
82
|
+
| `LogViewerEvents` | interface | 事件映射(`filter:change`、`entry:click`、`entry:expand` 等) |
|
|
83
|
+
| `ACTION_LABELS` / `ACTION_COLORS` | const | 操作类型中文标签 / 颜色映射 |
|
|
84
|
+
|
|
85
|
+
## 使用示例
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
import { createLogViewer, type LogEntry } from '@composy/log-viewer-core'
|
|
89
|
+
|
|
90
|
+
const entries: LogEntry[] = [
|
|
91
|
+
{
|
|
92
|
+
id: 'e1',
|
|
93
|
+
timestamp: new Date().toISOString(),
|
|
94
|
+
user: 'admin',
|
|
95
|
+
action: 'update',
|
|
96
|
+
module: '订单',
|
|
97
|
+
ip: '10.0.0.1',
|
|
98
|
+
detail: '修改了订单状态',
|
|
99
|
+
changes: [{ field: 'status', oldValue: '待发货', newValue: '已发货' }],
|
|
100
|
+
},
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
const viewer = createLogViewer({
|
|
104
|
+
container: '#log-viewer',
|
|
105
|
+
data: entries,
|
|
106
|
+
theme: 'dark',
|
|
107
|
+
pageSize: 10,
|
|
108
|
+
showFilter: true,
|
|
109
|
+
showDiff: true,
|
|
110
|
+
showAnomalyBadge: true,
|
|
111
|
+
onEntryClick: entry => console.log('点击日志', entry.id),
|
|
112
|
+
onFilterChange: filter => console.log('筛选变更', filter),
|
|
113
|
+
})
|
|
114
|
+
viewer.appendData([
|
|
115
|
+
{ id: 'e2', timestamp: Date.now(), user: 'alice', action: 'login', module: '认证' },
|
|
116
|
+
])
|
|
117
|
+
viewer.setFilter({ action: 'login' })
|
|
118
|
+
viewer.expandEntry('e1')
|
|
119
|
+
console.log('当前分页:', viewer.getPagination())
|
|
120
|
+
viewer.on('theme:change', theme => console.log('主题', theme))
|
|
121
|
+
viewer.destroy() // 卸载时销毁
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 构建脚本 & 验证命令
|
|
125
|
+
|
|
126
|
+
| 命令 | 说明 |
|
|
127
|
+
| ----------------------------------------------------------------- | ---------------------------------------------- |
|
|
128
|
+
| `pnpm --dir packages/core run build` | `@composy/builder`(rolldown)产出多格式产物 |
|
|
129
|
+
| `pnpm --dir packages/core run type-check` / `type-check:cjs` | 分别检查 ESM 与 CJS 配置 |
|
|
130
|
+
| `pnpm --dir packages/core run lint` / `lint:check` / `lint:fix` | ESLint 检查 / 零告警严格 / 自动修复 |
|
|
131
|
+
| `pnpm --dir packages/core run test` / `test:coverage` / `test:ui` | `ltesting` 单测 / 覆盖率 / 仪表盘 |
|
|
132
|
+
| `pnpm --dir packages/core run release` | `ldesign-release publish --package-dir .` 发布 |
|
|
133
|
+
|
|
134
|
+
## 产物说明
|
|
135
|
+
|
|
136
|
+
`exports` 暴露多入口;根入口按 `types/import/require/default` 映射到 `es`、`lib`:
|
|
137
|
+
|
|
138
|
+
- `es/` — ESM 产物(`index.js` + `index.d.ts`),`import` 与类型入口(`module`/`types` 指向)。
|
|
139
|
+
- `lib/` — CJS 产物(`index.cjs`),`require` 入口(`main` 指向 `lib/index.cjs`)。
|
|
140
|
+
- `esm/` — ESM 与样式源的保留模块目录。
|
|
141
|
+
- `dist/` — UMD 浏览器产物(`index.js`/`index.min.js`),`unpkg`/`jsdelivr`/`browser` 指向。
|
|
142
|
+
|
|
143
|
+
子路径别名(`./core/*`、`./filters/*`、`./renderers/*`、`./styles`、`./types`、`./utils`)均同时解析到
|
|
144
|
+
`es` 与 `lib`。`sideEffects: false`,可安全 tree-shaking。
|
|
145
|
+
|
|
146
|
+
## 备注
|
|
147
|
+
|
|
148
|
+
- **依赖**:`dependencies` 为空,无运行时三方依赖;`devDependencies` 含
|
|
149
|
+
`@composy/builder`、`@composy/testing`、`@composy/release`、`@antfu/eslint-config`、`typescript`。发布注册中心
|
|
150
|
+
`http://npm.longrise.cn:6286/`。
|
|
151
|
+
- **渲染库架构**:非 Web Component、无 Shadow DOM;直接操作宿主 DOM,根节点 class 为
|
|
152
|
+
`lv-root`(内部采用 `lv-*` 前缀),样式由 `injectStyles()` 注入 `<head>`。
|
|
153
|
+
- **浏览器依赖**:使用 `document`/`window`,仅限浏览器环境,SSR 需环境判断。
|
|
154
|
+
- **容器解析**:`container` 传字符串选择器找不到元素时抛出 `[LogViewer] Container not found`。
|
|
155
|
+
- **数据来源**:`LogViewerConfig.dataSource` 支持字符串 URL 或
|
|
156
|
+
`() => Promise<LogEntry[]>`,异步拉取需自行在回调中 `setData`。
|
|
157
|
+
- **代码任务边界**:CSS 变量/class 前缀、样式 token 和测试覆盖属于源码任务;本工作区结构任务只维护配置、产物契约和文档。
|
|
158
|
+
|
|
159
|
+
## License
|
|
160
|
+
|
|
161
|
+
MIT
|
|
162
|
+
|
|
163
|
+
## Runtime guarantees
|
|
164
|
+
|
|
165
|
+
- `dataSource` accepts a URL or an async loader. Call `loadData()` to load it explicitly; the
|
|
166
|
+
constructor also starts the initial load when a source is configured. URL responses may be an
|
|
167
|
+
array or an object containing `data`, `logs`, `items`, or `entries`.
|
|
168
|
+
- `showFilter`, `showDiff`, and `showAnomalyBadge` control the matching runtime surfaces. Invalid
|
|
169
|
+
page sizes are normalized and page changes are clamped to the available range.
|
|
170
|
+
- `getData()` and `getFilter()` return deep snapshots. Filtering and timestamp sorting operate on
|
|
171
|
+
derived arrays, so caller-owned data is not reordered or mutated.
|
|
172
|
+
- Timeline actions and diff metadata are rendered with DOM text nodes. User-provided values do not
|
|
173
|
+
become HTML or CSS declarations.
|
|
174
|
+
- Injected styles consume `@composy/color` and `@composy/size` CSS variables. The package remains
|
|
175
|
+
framework-neutral and requires a browser `document` at runtime.
|