@dan-uni/dan-any 1.4.7 → 2.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.
Files changed (200) hide show
  1. package/README.md +87 -43
  2. package/dist/adapters.d.mts +2 -0
  3. package/dist/adapters.mjs +1 -0
  4. package/dist/chunk-0Lt9GpW0.mjs +1 -0
  5. package/dist/core/db/schema.d.mts +2 -0
  6. package/dist/core/db/schema.mjs +2 -0
  7. package/dist/core/db/schema.mjs.map +1 -0
  8. package/dist/core/db/utils.d.mts +1707 -0
  9. package/dist/core/db/utils.d.mts.map +1 -0
  10. package/dist/core/db/utils.mjs +1 -0
  11. package/dist/core-D7LMAB5h.mjs +2 -0
  12. package/dist/core-D7LMAB5h.mjs.map +1 -0
  13. package/dist/core.d.mts +2 -0
  14. package/dist/core.mjs +1 -0
  15. package/dist/db-DWWzkRBb.mjs +41 -0
  16. package/dist/db-DWWzkRBb.mjs.map +1 -0
  17. package/dist/dm-extra-DrAQCrFv.d.mts +135 -0
  18. package/dist/dm-extra-DrAQCrFv.d.mts.map +1 -0
  19. package/dist/dm-tkTdR_W6.mjs +2 -0
  20. package/dist/dm-tkTdR_W6.mjs.map +1 -0
  21. package/dist/index-vAs4qV9A.d.mts +6195 -0
  22. package/dist/index-vAs4qV9A.d.mts.map +1 -0
  23. package/dist/index.d.mts +4 -0
  24. package/dist/index.mjs +1 -0
  25. package/dist/isSame-D4G9eoE4.mjs +2 -0
  26. package/dist/isSame-D4G9eoE4.mjs.map +1 -0
  27. package/dist/plugins.d.mts +105 -0
  28. package/dist/plugins.d.mts.map +1 -0
  29. package/dist/plugins.mjs +2 -0
  30. package/dist/plugins.mjs.map +1 -0
  31. package/dist/schema-BuenbDx9.d.mts +1619 -0
  32. package/dist/schema-BuenbDx9.d.mts.map +1 -0
  33. package/dist/utils.d.mts +25 -0
  34. package/dist/utils.d.mts.map +1 -0
  35. package/dist/utils.mjs +2 -0
  36. package/dist/utils.mjs.map +1 -0
  37. package/package.json +65 -37
  38. package/.babelrc.json +0 -12
  39. package/buf.gen.yaml +0 -10
  40. package/buf.yaml +0 -12
  41. package/dist/browser/1~rslib-runtime.min.js +0 -49
  42. package/dist/browser/index.min.js +0 -13521
  43. package/dist/browser/index.min.js.LICENSE.txt +0 -17
  44. package/dist/browser/plugins/bili.min.js +0 -1
  45. package/dist/browser/plugins/index.min.js +0 -2
  46. package/dist/browser/plugins/stats.min.js +0 -10
  47. package/dist/browser/src/ass-gen/__tests__/canvas.test.d.ts +0 -1
  48. package/dist/browser/src/ass-gen/__tests__/generate.test.d.ts +0 -1
  49. package/dist/browser/src/ass-gen/ass/create.d.ts +0 -4
  50. package/dist/browser/src/ass-gen/ass/dialogue.d.ts +0 -16
  51. package/dist/browser/src/ass-gen/ass/event.d.ts +0 -2
  52. package/dist/browser/src/ass-gen/ass/info.d.ts +0 -8
  53. package/dist/browser/src/ass-gen/ass/raw.d.ts +0 -14
  54. package/dist/browser/src/ass-gen/ass/style.d.ts +0 -2
  55. package/dist/browser/src/ass-gen/config.d.ts +0 -2
  56. package/dist/browser/src/ass-gen/index.d.ts +0 -30
  57. package/dist/browser/src/ass-gen/types.d.ts +0 -71
  58. package/dist/browser/src/ass-gen/util/color.d.ts +0 -18
  59. package/dist/browser/src/ass-gen/util/danconvert.d.ts +0 -5
  60. package/dist/browser/src/ass-gen/util/index.d.ts +0 -4
  61. package/dist/browser/src/ass-gen/util/lang.d.ts +0 -3
  62. package/dist/browser/src/ass-gen/util/layout.d.ts +0 -4
  63. package/dist/browser/src/index.d.ts +0 -283
  64. package/dist/browser/src/index.test.d.ts +0 -1
  65. package/dist/browser/src/plugins/bili/dedupe.d.ts +0 -3
  66. package/dist/browser/src/plugins/bili/history-danmaku-fast-forward.d.ts +0 -18
  67. package/dist/browser/src/plugins/bili/index.d.ts +0 -2
  68. package/dist/browser/src/plugins/bili/index.test.d.ts +0 -1
  69. package/dist/browser/src/plugins/index.d.ts +0 -2
  70. package/dist/browser/src/plugins/stats/getLatestDan.d.ts +0 -6
  71. package/dist/browser/src/plugins/stats/index.d.ts +0 -1
  72. package/dist/browser/src/plugins/stats/index.test.d.ts +0 -1
  73. package/dist/browser/src/proto/gen/bilibili/community/service/dm/v1/dm_pb.d.ts +0 -3426
  74. package/dist/browser/src/proto/gen/danuni/danmaku/v1/danmaku_pb.d.ts +0 -176
  75. package/dist/browser/src/utils/dm-gen.d.ts +0 -309
  76. package/dist/browser/src/utils/dm-gen.test.d.ts +0 -1
  77. package/dist/browser/src/utils/fileParser.d.ts +0 -3
  78. package/dist/browser/src/utils/id-gen.d.ts +0 -50
  79. package/dist/browser/src/utils/platform.d.ts +0 -24
  80. package/dist/node/0~rslib-runtime.js +0 -23
  81. package/dist/node/index.js +0 -2097
  82. package/dist/node/plugins/bili.js +0 -1
  83. package/dist/node/plugins/index.js +0 -2
  84. package/dist/node/plugins/stats.js +0 -10
  85. package/dist/node/src/ass-gen/__tests__/canvas.test.d.ts +0 -1
  86. package/dist/node/src/ass-gen/__tests__/generate.test.d.ts +0 -1
  87. package/dist/node/src/ass-gen/ass/create.d.ts +0 -4
  88. package/dist/node/src/ass-gen/ass/dialogue.d.ts +0 -16
  89. package/dist/node/src/ass-gen/ass/event.d.ts +0 -2
  90. package/dist/node/src/ass-gen/ass/info.d.ts +0 -8
  91. package/dist/node/src/ass-gen/ass/raw.d.ts +0 -14
  92. package/dist/node/src/ass-gen/ass/style.d.ts +0 -2
  93. package/dist/node/src/ass-gen/config.d.ts +0 -2
  94. package/dist/node/src/ass-gen/index.d.ts +0 -30
  95. package/dist/node/src/ass-gen/types.d.ts +0 -71
  96. package/dist/node/src/ass-gen/util/color.d.ts +0 -18
  97. package/dist/node/src/ass-gen/util/danconvert.d.ts +0 -5
  98. package/dist/node/src/ass-gen/util/index.d.ts +0 -4
  99. package/dist/node/src/ass-gen/util/lang.d.ts +0 -3
  100. package/dist/node/src/ass-gen/util/layout.d.ts +0 -4
  101. package/dist/node/src/index.d.ts +0 -283
  102. package/dist/node/src/index.test.d.ts +0 -1
  103. package/dist/node/src/plugins/bili/dedupe.d.ts +0 -3
  104. package/dist/node/src/plugins/bili/history-danmaku-fast-forward.d.ts +0 -18
  105. package/dist/node/src/plugins/bili/index.d.ts +0 -2
  106. package/dist/node/src/plugins/bili/index.test.d.ts +0 -1
  107. package/dist/node/src/plugins/index.d.ts +0 -2
  108. package/dist/node/src/plugins/stats/getLatestDan.d.ts +0 -6
  109. package/dist/node/src/plugins/stats/index.d.ts +0 -1
  110. package/dist/node/src/plugins/stats/index.test.d.ts +0 -1
  111. package/dist/node/src/proto/gen/bilibili/community/service/dm/v1/dm_pb.d.ts +0 -3426
  112. package/dist/node/src/proto/gen/danuni/danmaku/v1/danmaku_pb.d.ts +0 -176
  113. package/dist/node/src/utils/dm-gen.d.ts +0 -309
  114. package/dist/node/src/utils/dm-gen.test.d.ts +0 -1
  115. package/dist/node/src/utils/fileParser.d.ts +0 -3
  116. package/dist/node/src/utils/id-gen.d.ts +0 -50
  117. package/dist/node/src/utils/platform.d.ts +0 -24
  118. package/dist/umd/index.umd.min.js +0 -32091
  119. package/dist/umd/index.umd.min.js.LICENSE.txt +0 -34
  120. package/dist/umd/plugins/bili.umd.min.js +0 -32002
  121. package/dist/umd/plugins/bili.umd.min.js.LICENSE.txt +0 -34
  122. package/dist/umd/plugins/index.umd.min.js +0 -32018
  123. package/dist/umd/plugins/index.umd.min.js.LICENSE.txt +0 -34
  124. package/dist/umd/plugins/stats.umd.min.js +0 -39
  125. package/dist/umd/src/ass-gen/__tests__/canvas.test.d.ts +0 -1
  126. package/dist/umd/src/ass-gen/__tests__/generate.test.d.ts +0 -1
  127. package/dist/umd/src/ass-gen/ass/create.d.ts +0 -4
  128. package/dist/umd/src/ass-gen/ass/dialogue.d.ts +0 -16
  129. package/dist/umd/src/ass-gen/ass/event.d.ts +0 -2
  130. package/dist/umd/src/ass-gen/ass/info.d.ts +0 -8
  131. package/dist/umd/src/ass-gen/ass/raw.d.ts +0 -14
  132. package/dist/umd/src/ass-gen/ass/style.d.ts +0 -2
  133. package/dist/umd/src/ass-gen/config.d.ts +0 -2
  134. package/dist/umd/src/ass-gen/index.d.ts +0 -30
  135. package/dist/umd/src/ass-gen/types.d.ts +0 -71
  136. package/dist/umd/src/ass-gen/util/color.d.ts +0 -18
  137. package/dist/umd/src/ass-gen/util/danconvert.d.ts +0 -5
  138. package/dist/umd/src/ass-gen/util/index.d.ts +0 -4
  139. package/dist/umd/src/ass-gen/util/lang.d.ts +0 -3
  140. package/dist/umd/src/ass-gen/util/layout.d.ts +0 -4
  141. package/dist/umd/src/index.d.ts +0 -283
  142. package/dist/umd/src/index.test.d.ts +0 -1
  143. package/dist/umd/src/plugins/bili/dedupe.d.ts +0 -3
  144. package/dist/umd/src/plugins/bili/history-danmaku-fast-forward.d.ts +0 -18
  145. package/dist/umd/src/plugins/bili/index.d.ts +0 -2
  146. package/dist/umd/src/plugins/bili/index.test.d.ts +0 -1
  147. package/dist/umd/src/plugins/index.d.ts +0 -2
  148. package/dist/umd/src/plugins/stats/getLatestDan.d.ts +0 -6
  149. package/dist/umd/src/plugins/stats/index.d.ts +0 -1
  150. package/dist/umd/src/plugins/stats/index.test.d.ts +0 -1
  151. package/dist/umd/src/proto/gen/bilibili/community/service/dm/v1/dm_pb.d.ts +0 -3426
  152. package/dist/umd/src/proto/gen/danuni/danmaku/v1/danmaku_pb.d.ts +0 -176
  153. package/dist/umd/src/utils/dm-gen.d.ts +0 -309
  154. package/dist/umd/src/utils/dm-gen.test.d.ts +0 -1
  155. package/dist/umd/src/utils/fileParser.d.ts +0 -3
  156. package/dist/umd/src/utils/id-gen.d.ts +0 -50
  157. package/dist/umd/src/utils/platform.d.ts +0 -24
  158. package/plugins/package.json +0 -6
  159. package/rslib.config.ts +0 -101
  160. package/src/ass-gen/__tests__/898651903.xml +0 -1619
  161. package/src/ass-gen/__tests__/898651903.xml.ass +0 -1516
  162. package/src/ass-gen/__tests__/canvas.test.ts +0 -15
  163. package/src/ass-gen/__tests__/generate.test.ts +0 -26
  164. package/src/ass-gen/ass/create.ts +0 -37
  165. package/src/ass-gen/ass/dialogue.ts +0 -90
  166. package/src/ass-gen/ass/event.ts +0 -57
  167. package/src/ass-gen/ass/info.ts +0 -27
  168. package/src/ass-gen/ass/raw.ts +0 -78
  169. package/src/ass-gen/ass/style.ts +0 -66
  170. package/src/ass-gen/config.ts +0 -45
  171. package/src/ass-gen/index.ts +0 -73
  172. package/src/ass-gen/types.ts +0 -76
  173. package/src/ass-gen/util/color.ts +0 -55
  174. package/src/ass-gen/util/danconvert.ts +0 -43
  175. package/src/ass-gen/util/index.ts +0 -10
  176. package/src/ass-gen/util/lang.ts +0 -35
  177. package/src/ass-gen/util/layout.ts +0 -242
  178. package/src/index.test.ts +0 -157
  179. package/src/index.ts +0 -1144
  180. package/src/plugins/bili/README.md +0 -87
  181. package/src/plugins/bili/dedupe.ts +0 -29
  182. package/src/plugins/bili/history-danmaku-fast-forward.ts +0 -86
  183. package/src/plugins/bili/index.test.ts +0 -129
  184. package/src/plugins/bili/index.ts +0 -2
  185. package/src/plugins/index.ts +0 -2
  186. package/src/plugins/stats/README.md +0 -44
  187. package/src/plugins/stats/getLatestDan.ts +0 -13
  188. package/src/plugins/stats/index.test.ts +0 -39
  189. package/src/plugins/stats/index.ts +0 -1
  190. package/src/proto/gen/bilibili/community/service/dm/v1/dm_pb.ts +0 -4072
  191. package/src/proto/gen/danuni/danmaku/v1/danmaku_pb.ts +0 -223
  192. package/src/proto/src/bilibili/community/service/dm/v1/dm.proto +0 -1095
  193. package/src/proto/src/danuni/danmaku/v1/danmaku.proto +0 -52
  194. package/src/utils/dm-gen.test.ts +0 -129
  195. package/src/utils/dm-gen.ts +0 -1078
  196. package/src/utils/fileParser.ts +0 -37
  197. package/src/utils/id-gen.ts +0 -73
  198. package/src/utils/platform.ts +0 -38
  199. package/tsconfig.json +0 -108
  200. package/types/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -1,67 +1,111 @@
1
- # Dan-Any 弹幕随心转
1
+ # @dan-uni/dan-any
2
2
 
3
- [![Publish @dan-uni/dan-any](https://github.com/ani-uni/danuni/actions/workflows/npm-dan-any.yml/badge.svg)](https://github.com/ani-uni/danuni/actions/workflows/npm-dan-any.yml)
3
+ `@dan-uni/dan-any` (V2) 是一个弹幕转换与处理库,用于在不同平台格式之间导入、导出与统一处理弹幕数据。
4
4
 
5
- ## Features
5
+ 它的核心思路是:
6
+ - 用 `Adapter` 把外部格式导入为统一数据
7
+ - 用 `Transformer` 把统一数据导出为目标格式
8
+ - 用 `Plugin` 在处理中间态(`UniChunk`)上做增强/清洗/统计
6
9
 
7
- - 多种弹幕格式之间互相转换
8
- - 对多平台弹幕进行统一格式化
9
- - 获取一组弹幕中的共通值
10
- - 对弹幕按一定key值进行分组
11
- - 合并较短时间内出现的重复弹幕
12
- - 管道式插件系统
10
+ ## 功能概览
13
11
 
14
- ## Formats 支持转换的格式
12
+ ### Formats 支持转换的格式
15
13
 
16
14
  `pb`指`protobuf`格式(grpc协议下的默认传输格式)
17
15
 
18
- - [x] DanUni(json,pb)
19
- - [x] bili(普通+高级弹幕,xml) `双向`
20
- - [x] bili(普通+高级弹幕,pb) `正向`
21
- - [x] bili(指令弹幕,pb) `正向`
22
- - [x] dplayer
23
- - [x] artplayer
24
- - [x] 弹弹Play
25
- - [x] ASS `双向(部分支持,见下)`
16
+ - [x] DanUni(json,pb): `DanuniJsonAdapter` `DanuniJsonTransformerConfigurator` `DanuniPbAdapter` `DanuniPbTransformer`
17
+ - [x] bili(普通+高级弹幕,xml) `双向`: `BiliXmlAdapter` `BiliXmlTransformerConfigurator`
18
+ - [x] bili(普通+高级弹幕,pb) `正向`: `BiliGrpcAdapter`
19
+ - [x] bili(指令弹幕,pb) `正向`: `BiliCommandGrpcAdapter`
20
+ - [x] dplayer: `DplayerAdapter` `DplayerTransformer`
21
+ - [x] artplayer: `ArtplayerAdapter` `ArtplayerTransformer`
22
+ - [x] 弹弹Play: `DdplayAdapter` `DdplayTransformer`
23
+ - [x] [ASS(`@dan-uni/dan-any-ext-ass`)](https://github.com/ani-uni/dan-any-ext-ass) `双向(部分支持,仅该库生成的ass文件支持还原)`
26
24
 
27
- ## Plguins 插件
25
+ ### Plugins 常用插件
28
26
 
29
- 插件的使用方法参见对应路径下README.md
27
+ - `MergePluginConfigurator`(合并重复弹幕)
28
+ - `DetaoluPluginConfigurator` (基于pakku.js的弹幕过滤器): 由 [@dan-uni/dan-any-plugin-detaolu](https://github.com/ani-uni/dan-any-plugin-detaolu) 提供
29
+ - `DowngradeAdvancedPluginConfigurator`(高级弹幕降级)
30
+ - `GetStatsTransformerConfigurator`(统计输出)
31
+ - `CountTransformer`(数量统计)
30
32
 
31
- - [dan-any-plugin-detaolu](https://github.com/ani-uni/danuni/tree/master/packages/dan-any-plugin-detaolu): 基于pakku.js的弹幕过滤器
32
- - `src/plugins`下的插件 `bili`(B站弹幕相关) `stats`(统计相关),内部附有使用文档
33
+ ## 安装
33
34
 
34
- ## 转换提示
35
+ ```bash
36
+ vp add @dan-uni/dan-any
37
+ bun add @dan-uni/dan-any
38
+ pnpm add @dan-uni/dan-any
39
+ ```
35
40
 
36
- 使用该库可以不失去任何关键信息地导入常见格式的弹幕,并已附加字段的形式保留部分弹幕格式专有的信息;但将弹幕转换为第三方格式时,由于其设计上无法封装附加信息,会导致不可避免的信息损失。
37
- 如果需要以最为可靠的方式传送弹幕,请尽量使用 `danuni.json` / `danuni.binpb` 进行导出分发。
41
+ ## 快速开始
38
42
 
39
- 由于设计上想尽可能多地保留原始信息,将弹幕转换为第三方格式的弹幕时,可能在非常用字段上与官方格式不完全相同,若有极强的兼容性需求,请手动开启对应转换函数的兼容性选项。
43
+ 详细使用方法可以参考库中的测试文件。
40
44
 
41
- *致开发者: 若导入后检测到 `UniPool.info.fromConverted` 为true ,建议提示用户不要再对该弹幕文件再次进行转换,否则可能导致解析错误*
45
+ ### 1) Bilibili XML 导入,再导出为 Danuni JSON
42
46
 
43
- ## 特殊字段提示
47
+ ```ts
48
+ import { UniDB } from '@dan-uni/dan-any/core'
49
+ import {
50
+ BiliXmlAdapter,
51
+ DanuniJsonTransformerConfigurator,
52
+ } from '@dan-uni/dan-any/adapters'
44
53
 
45
- ### ASS Raw 字段
54
+ const xml = `...bili xml弹幕文本...`
46
55
 
47
- 为便于由ASS格式还原,由本工具生成的ASS弹幕格式中,包含以下字段:`RawCompressType` `RawBaseType` `Raw`
48
- 根据其内容可以还原原始转换数据。
49
- 同时本工具兼容了`justorez/biliy`[^1]生成的ASS,并支持了其暂未实现的还原功能。
56
+ const udb = await new UniDB().init()
57
+ const chunk = await udb.import(BiliXmlAdapter(xml))
58
+ const json = await chunk.export(DanuniJsonTransformerConfigurator({ minify: true }))
50
59
 
51
- ## TODO
60
+ console.log(json)
61
+ await udb.close()
62
+ ```
52
63
 
53
- - [ ] 完善弹幕降级显示功能(使高级弹幕有损转换为普通弹幕)
54
- - [ ] 完善使用文档
55
- - [ ] 支持chpt弹幕转换为Artplayer章节(artplayer-plugin-chapter)
56
- - [ ] 使用zod重写类型系统
64
+ ### 2) 在处理链中使用插件
57
65
 
58
- ## Awesome Projects
66
+ ```ts
67
+ import { mergePluginConfigurator } from '@dan-uni/dan-any/plugins'
68
+ import { DanuniJsonTransformerConfigurator } from '@dan-uni/dan-any/adapters'
59
69
 
60
- - [HengXin666/BiLiBiLi_DanMu_Crawling](https://github.com/HengXin666/BiLiBiLi_DanMu_Crawling)
70
+ const merged = await chunk.plugin(mergePluginConfigurator(10))
71
+ const result = await merged.export(DanuniJsonTransformerConfigurator({ minify: true }))
61
72
 
62
- ## License 许可证
73
+ console.log(result)
74
+ ```
63
75
 
64
- Released under the GNU LESSER GENERAL PUBLIC LICENSE (LGPL) 3.0.
65
- 本库采用 LGPL 3.0 or later 许可证发布。
76
+ ### 3) PB 双向示例(导出再导入)
66
77
 
67
- [^1]: 对于`src/ass-gen`内的文件,使用了[justorez/biliy](https://github.com/justorez/biliy)的代码(MIT LICENSE),并使用了AI进行修改与修复,同时支持了更优的Raw还原功能。
78
+ ```ts
79
+ import { DanuniPbTransformer, DanuniPbAdapter } from '@dan-uni/dan-any/adapters'
80
+
81
+ const pb = await chunk.export(DanuniPbTransformer)
82
+ const reimported = await udb.import(DanuniPbAdapter(pb))
83
+ ```
84
+
85
+ ### 高级: 提供兼容的drizzle+pglite实例接入自己的数据库
86
+
87
+ 详见 测试文件 `tests/db.test.ts`.
88
+
89
+ ## 模块入口
90
+
91
+ 包已提供以下子路径导出:
92
+ - `@dan-uni/dan-any`(聚合导出)
93
+ - `@dan-uni/dan-any/adapters`
94
+ - `@dan-uni/dan-any/core`
95
+ - `@dan-uni/dan-any/plugins`
96
+ - `@dan-uni/dan-any/utils`
97
+ - `@dan-uni/dan-any/core/db/schema`
98
+ - `@dan-uni/dan-any/core/db/utils`
99
+
100
+ ## 开发
101
+
102
+ ```bash
103
+ vp install
104
+ vp check
105
+ vp test
106
+ vp pack
107
+ ```
108
+
109
+ ## 许可
110
+
111
+ `LGPL-3.0-or-later`
@@ -0,0 +1,2 @@
1
+ import { A as enumModeCodec, C as BiliGrpcAdapter, D as DanuniJsonAdapter, E as DanuniPbTransformer, O as DanuniJsonTransformerConfigurator, S as BiliCommonParser, T as DanuniPbAdapter, _ as BiliXmlAdapter, a as UDanmaku, b as BiliCommonBuilder, c as defineTransformer, d as DplayerAdapter, f as DplayerTransformer, g as ArtplayerTransformer, h as ArtplayerAdapter, i as TransformerInput, j as enumPoolCodec, k as enumAttrsCodec, m as DdplayTransformer, n as Plugin, o as defineAdapter, p as DdplayAdapter, r as Transformer, s as definePlugin, t as Adapter, u as transformerInput2Danmakus, v as BiliXmlTransformerConfigurator, w as BiliCommandGrpcAdapter, x as BiliCommonModeRec, y as BiliUpAdapter } from "./index-vAs4qV9A.mjs";
2
+ export { Adapter, ArtplayerAdapter, ArtplayerTransformer, BiliCommandGrpcAdapter, BiliCommonBuilder, BiliCommonModeRec, BiliCommonParser, BiliGrpcAdapter, BiliUpAdapter, BiliXmlAdapter, BiliXmlTransformerConfigurator, DanuniJsonAdapter, DanuniJsonTransformerConfigurator, DanuniPbAdapter, DanuniPbTransformer, DdplayAdapter, DdplayTransformer, DplayerAdapter, DplayerTransformer, Plugin, Transformer, TransformerInput, UDanmaku, defineAdapter, definePlugin, defineTransformer, enumAttrsCodec, enumModeCodec, enumPoolCodec, transformerInput2Danmakus };
@@ -0,0 +1 @@
1
+ import{A as e,C as t,D as n,E as r,O as i,S as a,T as o,_ as s,b as c,c as l,d as u,f as d,g as f,h as p,j as m,k as h,l as g,m as _,p as v,s as y,u as b,v as x,w as S,x as C,y as w}from"./core-D7LMAB5h.mjs";export{p as ArtplayerAdapter,f as ArtplayerTransformer,S as BiliCommandGrpcAdapter,c as BiliCommonBuilder,C as BiliCommonModeRec,a as BiliCommonParser,t as BiliGrpcAdapter,w as BiliUpAdapter,s as BiliXmlAdapter,x as BiliXmlTransformerConfigurator,n as DanuniJsonAdapter,i as DanuniJsonTransformerConfigurator,o as DanuniPbAdapter,r as DanuniPbTransformer,v as DdplayAdapter,_ as DdplayTransformer,u as DplayerAdapter,d as DplayerTransformer,y as defineAdapter,l as definePlugin,g as defineTransformer,h as enumAttrsCodec,e as enumModeCodec,m as enumPoolCodec,b as transformerInput2Danmakus};
@@ -0,0 +1 @@
1
+ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};export{t};
@@ -0,0 +1,2 @@
1
+ import { _ as onConflictDoUpdateSet, a as PoolSchema, c as chunk2danmakusZod, d as danmakus, f as danmakusInsertZod, g as onConflictDoUpdate, h as modeEnum, i as ModeSchema, l as chunks, m as dmAttrEnum, n as DanmakusInsert, o as baseRelations, p as danmakusSelectZod, r as DanmakusSelect, s as chunk2danmakus, t as DMAttrSchema, u as chunksZod, v as poolEnum, y as relations } from "../../schema-BuenbDx9.mjs";
2
+ export { DMAttrSchema, DanmakusInsert, DanmakusSelect, ModeSchema, PoolSchema, baseRelations, chunk2danmakus, chunk2danmakusZod, chunks, chunksZod, danmakus, danmakusInsertZod, danmakusSelectZod, dmAttrEnum, modeEnum, onConflictDoUpdate, onConflictDoUpdateSet, poolEnum, relations };
@@ -0,0 +1,2 @@
1
+ import{defineRelations as e,defineRelationsPart as t,sql as n}from"drizzle-orm";import*as r from"drizzle-orm/pg-core";import{z as i}from"zod";import{createInsertSchema as a}from"drizzle-orm/zod";const o=r.pgEnum(`mode`,[`Normal`,`Bottom`,`Top`,`Reverse`,`Ext`]),s=r.pgEnum(`pool`,[`Def`,`Sub`,`Adv`,`Ix`]),c=r.pgEnum(`dm_attr`,[`Protect`,`FromLive`,`HighLike`,`Compatible`,`Reported`,`Unchecked`,`HasEvent`,`Hide`]),l=r.pgTable(`danmakus`,{SOID:r.text().notNull(),DMID:r.text().primaryKey(),progress:r.integer().notNull(),mode:o().notNull(),fontsize:r.smallint().notNull(),color:r.integer().notNull(),senderID:r.text().notNull(),content:r.text().notNull(),ctime:r.timestamp().notNull(),weight:r.smallint().notNull(),pool:s().notNull(),attr:c().array().notNull(),platform:r.text(),extra:r.jsonb().$type()}),u=a(l),d=a(l),f=r.pgTable(`chunks`,{id:r.serial().primaryKey(),fromConverted:r.boolean().notNull().default(!1),tmp:r.boolean().notNull().default(!1)}),p=a(f),m=r.pgTable(`chunk_danmakus`,{id:r.bigserial({mode:`bigint`}).primaryKey(),chunkID:r.integer().references(()=>f.id).notNull(),DMID:r.text().references(()=>l.DMID).notNull()}),h=a(m),g=e({danmakus:l,chunks:f,chunk2danmakus:m}),_=t({danmakus:l,chunks:f,chunk2danmakus:m},e=>({chunks:{danmakus:e.many.danmakus({from:e.chunks.id.through(e.chunk2danmakus.chunkID),to:e.danmakus.DMID.through(e.chunk2danmakus.DMID)})}})),v={danmakus:Object.fromEntries(Object.keys(l).map(e=>[e,n.raw(`excluded."${e}"`)]))},y={danmakus:{target:[l.DMID],set:v.danmakus}},b=i.enum(l.mode.enumValues),x=i.enum(l.pool.enumValues),S=i.enum(l.attr.enumValues);export{S as DMAttrSchema,b as ModeSchema,x as PoolSchema,g as baseRelations,m as chunk2danmakus,h as chunk2danmakusZod,f as chunks,p as chunksZod,l as danmakus,u as danmakusInsertZod,d as danmakusSelectZod,c as dmAttrEnum,o as modeEnum,y as onConflictDoUpdate,v as onConflictDoUpdateSet,s as poolEnum,_ as relations};
2
+ //# sourceMappingURL=schema.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.mjs","names":[],"sources":["../../../src/core/db/schema.ts"],"sourcesContent":["import { defineRelations, defineRelationsPart, sql } from \"drizzle-orm\";\nimport * as t from \"drizzle-orm/pg-core\";\nimport type { Extra as UniDanExtra } from \"@/core/dm-extra.ts\";\nimport { z } from \"zod\";\nimport { createInsertSchema } from \"drizzle-orm/zod\";\nimport type { Simplify } from \"type-fest\";\n\nexport const modeEnum = t.pgEnum(\"mode\", [\"Normal\", \"Bottom\", \"Top\", \"Reverse\", \"Ext\"]);\nexport const poolEnum = t.pgEnum(\"pool\", [\"Def\", \"Sub\", \"Adv\", \"Ix\"]);\nexport const dmAttrEnum = t.pgEnum(\"dm_attr\", [\n \"Protect\",\n \"FromLive\",\n \"HighLike\",\n \"Compatible\",\n \"Reported\",\n \"Unchecked\",\n \"HasEvent\",\n \"Hide\",\n]);\n\n// bsnapshot的弹幕不设置默认值,尽量遵循上传组的原始数据(保证所有重要值均有确定)\nexport const danmakus = t.pgTable(\"danmakus\", {\n SOID: t.text().notNull(),\n // .references(() => pools.SOID),\n DMID: t.text().primaryKey(), // 该值在此直接map到dan-any的DMID,为唯一值\n progress: t.integer().notNull(), // 毫秒\n mode: modeEnum().notNull(),\n fontsize: t.smallint().notNull(),\n color: t.integer().notNull(),\n senderID: t.text().notNull(),\n content: t.text().notNull(),\n ctime: t.timestamp().notNull(),\n weight: t.smallint().notNull(),\n pool: poolEnum().notNull(),\n attr: dmAttrEnum().array().notNull(),\n platform: t.text(),\n extra: t.jsonb().$type<UniDanExtra>(),\n});\nexport const danmakusInsertZod = createInsertSchema(danmakus);\nexport const danmakusSelectZod = createInsertSchema(danmakus);\nexport type DanmakusInsert = Simplify<\n Omit<z.infer<typeof danmakusInsertZod>, \"extra\"> & { extra: UniDanExtra | null }\n>;\nexport type DanmakusSelect = Simplify<\n Omit<z.infer<typeof danmakusSelectZod>, \"extra\"> & { extra: UniDanExtra | null }\n>;\n// export const pools = t.pgTable(\"pools\", {\n// SOID: t.text().primaryKey(),\n// });\n\nexport const chunks = t.pgTable(\"chunks\", {\n id: t.serial().primaryKey(),\n // 信息区\n fromConverted: t.boolean().notNull().default(false), // 是否包含有损转换过的弹幕,导入后不建议再次导出(应用层决定:导出按钮检测到后提示/禁用)\n tmp: t.boolean().notNull().default(false), // 是否为临时chunk,临时chunk会在完成导出行为后自动删除/shrink时自动批量删除\n});\nexport const chunksZod = createInsertSchema(chunks);\n\n// many-to-many 映射表:chunk <-> danmakus\nexport const chunk2danmakus = t.pgTable(\"chunk_danmakus\", {\n id: t.bigserial({ mode: \"bigint\" }).primaryKey(),\n chunkID: t\n .integer()\n .references(() => chunks.id)\n .notNull(),\n DMID: t\n .text()\n .references(() => danmakus.DMID)\n .notNull(),\n});\nexport const chunk2danmakusZod = createInsertSchema(chunk2danmakus);\n\nexport const baseRelations = defineRelations({ danmakus, chunks, chunk2danmakus });\nexport const relations = defineRelationsPart({ danmakus, chunks, chunk2danmakus }, (r) => ({\n // pools: {\n // danmakus: r.many.danmakus({\n // from: r.pools.SOID,\n // to: r.danmakus.SOID,\n // }),\n // },\n chunks: {\n danmakus: r.many.danmakus({\n from: r.chunks.id.through(r.chunk2danmakus.chunkID),\n to: r.danmakus.DMID.through(r.chunk2danmakus.DMID),\n }),\n },\n}));\n\nexport const onConflictDoUpdateSet = {\n danmakus: Object.fromEntries(\n Object.keys(danmakus).map((key) => [key, sql.raw(`excluded.\"${key}\"`)]),\n ),\n} as const;\nexport const onConflictDoUpdate = {\n danmakus: {\n target: [danmakus.DMID],\n set: onConflictDoUpdateSet.danmakus,\n },\n};\n\nexport const ModeSchema = z.enum(danmakus.mode.enumValues);\nexport const PoolSchema = z.enum(danmakus.pool.enumValues);\nexport const DMAttrSchema = z.enum(danmakus.attr.enumValues);\n"],"mappings":"mMAOA,MAAa,EAAW,EAAE,OAAO,OAAQ,CAAC,SAAU,SAAU,MAAO,UAAW,MAAM,CAAC,CAC1E,EAAW,EAAE,OAAO,OAAQ,CAAC,MAAO,MAAO,MAAO,KAAK,CAAC,CACxD,EAAa,EAAE,OAAO,UAAW,CAC5C,UACA,WACA,WACA,aACA,WACA,YACA,WACA,OACD,CAAC,CAGW,EAAW,EAAE,QAAQ,WAAY,CAC5C,KAAM,EAAE,MAAM,CAAC,SAAS,CAExB,KAAM,EAAE,MAAM,CAAC,YAAY,CAC3B,SAAU,EAAE,SAAS,CAAC,SAAS,CAC/B,KAAM,GAAU,CAAC,SAAS,CAC1B,SAAU,EAAE,UAAU,CAAC,SAAS,CAChC,MAAO,EAAE,SAAS,CAAC,SAAS,CAC5B,SAAU,EAAE,MAAM,CAAC,SAAS,CAC5B,QAAS,EAAE,MAAM,CAAC,SAAS,CAC3B,MAAO,EAAE,WAAW,CAAC,SAAS,CAC9B,OAAQ,EAAE,UAAU,CAAC,SAAS,CAC9B,KAAM,GAAU,CAAC,SAAS,CAC1B,KAAM,GAAY,CAAC,OAAO,CAAC,SAAS,CACpC,SAAU,EAAE,MAAM,CAClB,MAAO,EAAE,OAAO,CAAC,OAAoB,CACtC,CAAC,CACW,EAAoB,EAAmB,EAAS,CAChD,EAAoB,EAAmB,EAAS,CAWhD,EAAS,EAAE,QAAQ,SAAU,CACxC,GAAI,EAAE,QAAQ,CAAC,YAAY,CAE3B,cAAe,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAM,CACnD,IAAK,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAM,CAC1C,CAAC,CACW,EAAY,EAAmB,EAAO,CAGtC,EAAiB,EAAE,QAAQ,iBAAkB,CACxD,GAAI,EAAE,UAAU,CAAE,KAAM,SAAU,CAAC,CAAC,YAAY,CAChD,QAAS,EACN,SAAS,CACT,eAAiB,EAAO,GAAG,CAC3B,SAAS,CACZ,KAAM,EACH,MAAM,CACN,eAAiB,EAAS,KAAK,CAC/B,SAAS,CACb,CAAC,CACW,EAAoB,EAAmB,EAAe,CAEtD,EAAgB,EAAgB,CAAE,WAAU,SAAQ,iBAAgB,CAAC,CACrE,EAAY,EAAoB,CAAE,WAAU,SAAQ,iBAAgB,CAAG,IAAO,CAOzF,OAAQ,CACN,SAAU,EAAE,KAAK,SAAS,CACxB,KAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,eAAe,QAAQ,CACnD,GAAI,EAAE,SAAS,KAAK,QAAQ,EAAE,eAAe,KAAK,CACnD,CAAC,CACH,CACF,EAAE,CAEU,EAAwB,CACnC,SAAU,OAAO,YACf,OAAO,KAAK,EAAS,CAAC,IAAK,GAAQ,CAAC,EAAK,EAAI,IAAI,aAAa,EAAI,GAAG,CAAC,CAAC,CACxE,CACF,CACY,EAAqB,CAChC,SAAU,CACR,OAAQ,CAAC,EAAS,KAAK,CACvB,IAAK,EAAsB,SAC5B,CACF,CAEY,EAAa,EAAE,KAAK,EAAS,KAAK,WAAW,CAC7C,EAAa,EAAE,KAAK,EAAS,KAAK,WAAW,CAC7C,EAAe,EAAE,KAAK,EAAS,KAAK,WAAW"}