@dan-uni/dan-any 2.0.1 → 2.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/dist/adapters.mjs +1 -1
- package/dist/{core-BSNwOgso.mjs → core-BsUKRX1y.mjs} +2 -2
- package/dist/{core-BSNwOgso.mjs.map → core-BsUKRX1y.mjs.map} +1 -1
- package/dist/core.mjs +1 -1
- package/dist/{dm-CBYaViIb.mjs → dm-BPBsbygx.mjs} +2 -2
- package/dist/{dm-CBYaViIb.mjs.map → dm-BPBsbygx.mjs.map} +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{isSame-Cdw0xkUV.mjs → isSame-DciV3b4U.mjs} +2 -2
- package/dist/{isSame-Cdw0xkUV.mjs.map → isSame-DciV3b4U.mjs.map} +1 -1
- package/dist/plugins.mjs +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +2 -2
package/dist/core.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,n as t,r as n,t as r}from"./core-
|
|
1
|
+
import{a as e,n as t,r as n,t as r}from"./core-BsUKRX1y.mjs";import{a as i,c as a,d as o,f as s,i as c,l,m as u,n as d,p as f,r as p,s as m,t as h,u as g}from"./dm-BPBsbygx.mjs";export{h as DMAttr,d as DanUniConvertTipTemplate,r as InitedUniDB,p as Modes,m as PlatformDanmakuOnlySource,a as PlatformDanmakuOnlySources,l as PlatformDanmakuSources,g as PlatformInfoSource,o as PlatformInfoSources,s as PlatformSources,f as PlatformVideoSource,u as PlatformVideoSources,c as Pools,t as UniChunk,n as UniDB,e as createDMID,i as defaultUniDM};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{z as e}from"zod";var t=`@dan-uni/dan-any`,n=`2.0.
|
|
2
|
-
//# sourceMappingURL=dm-
|
|
1
|
+
import{z as e}from"zod";var t=`@dan-uni/dan-any`,n=`2.0.2`;let r=function(e){return e.Bangumi=`bgm`,e.TMDB=`tmdb`,e}({});const i=Object.values(r);let a=function(e){return e.Acfun=`acfun`,e.Baha=`baha`,e.Bilibili=`bili`,e.BilibiliGlobal=`bglobal`,e.Iqiyi=`iqiyi`,e.Tencent=`tencent`,e.Youku=`youku`,e}({});const o=Object.values(a);let s=function(e){return e.DanDanPlay=`ddplay`,e.TuCao=`tucao`,e}({});const c=Object.values(s),l=[...o,...c],u=[...i,...l],d=e.templateLiteral([e.string(),`@`,e.string()]);var f=class e{constructor(e,t){this.id=e,this.domain=t}static validateString(e){return d.safeParse(e).success}static fromStringSafe(e){return this.fromString(d.parse(e))}static fromString(t){let[n,r]=t.split(`@`);return new e(n,r)}toString(){return`${this.id}@${this.domain}`}static fromNull(t){return new e(t===`runtime`?`runtime`:`anonymous`,t||`danuni`)}static fromBili({cid:t,mid:n,midHash:r}){return t?new e(t.toString(),`bili`):n?new e(n.toString(),`bili`):r?new e(r,`bili`):this.fromNull(`bili`)}static fromUnknown(t,n){return t?new e(t,n):this.fromNull(n)}};let p=function(e){return e[e.Normal=0]=`Normal`,e[e.Bottom=1]=`Bottom`,e[e.Top=2]=`Top`,e[e.Reverse=3]=`Reverse`,e[e.Ext=4]=`Ext`,e}({}),m=function(e){return e[e.Def=0]=`Def`,e[e.Sub=1]=`Sub`,e[e.Adv=2]=`Adv`,e[e.Ix=3]=`Ix`,e}({}),h=function(e){return e.Protect=`Protect`,e.FromLive=`FromLive`,e.HighLike=`HighLike`,e.Compatible=`Compatible`,e.Reported=`Reported`,e.Unchecked=`Unchecked`,e.HasEvent=`HasEvent`,e.Hide=`Hide`,e}({});const g={SOID:f.fromNull().toString(),progress:0,mode:0,fontsize:25,color:16777215,senderID:f.fromNull().toString(),content:``,weight:0,pool:0,attr:[],platform:null,extra:null},_={meassage:`Converted by DanUni!`,version:`JS/TS ${t} (v${n})`};export{g as a,c,i as d,u as f,m as i,l,o as m,_ as n,f as o,a as p,p as r,s,h as t,r as u};
|
|
2
|
+
//# sourceMappingURL=dm-BPBsbygx.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dm-
|
|
1
|
+
{"version":3,"file":"dm-BPBsbygx.mjs","names":["pkg.name","pkg.version"],"sources":["../package.json","../src/core/platform.ts","../src/core/uni-id.ts","../src/core/dm.ts"],"sourcesContent":["","export enum PlatformInfoSource {\n Bangumi = \"bgm\",\n TMDB = \"tmdb\",\n}\nexport const PlatformInfoSources = Object.values(PlatformInfoSource);\n\nexport enum PlatformVideoSource {\n Acfun = \"acfun\",\n Baha = \"baha\",\n Bilibili = \"bili\",\n BilibiliGlobal = \"bglobal\",\n Iqiyi = \"iqiyi\",\n Tencent = \"tencent\",\n Youku = \"youku\",\n}\nexport const PlatformVideoSources = Object.values(PlatformVideoSource);\n\nexport enum PlatformDanmakuOnlySource {\n DanDanPlay = \"ddplay\",\n TuCao = \"tucao\",\n}\nexport const PlatformDanmakuOnlySources = Object.values(PlatformDanmakuOnlySource);\n\nexport type PlatformDanmakuSource = PlatformVideoSource | PlatformDanmakuOnlySource;\nexport const PlatformDanmakuSources = [...PlatformVideoSources, ...PlatformDanmakuOnlySources];\n\nexport type PlatformSource = PlatformInfoSource | PlatformDanmakuSource;\nexport const PlatformSources = [...PlatformInfoSources, ...PlatformDanmakuSources];\n","import { z } from \"zod\";\nimport { type PlatformSource, PlatformVideoSource } from \"./platform.ts\";\n\nconst UniIDStrSchema = z.templateLiteral([z.string(), \"@\", z.string()]);\ntype UniIDStr = z.infer<typeof UniIDStrSchema>;\n\nexport class UniID {\n constructor(\n /**\n * @description 每个domain下应为唯一值\n * @example danuni: 推荐为UUID/ULID/NanoID\n * bili: midHash hash算法为CRC32\n */\n public id: string,\n /**\n * @description 弹幕首次出现的平台域名(注意可以为如localhost等根域名)\n * ### 预设\n * - `{any}.danuni` (若使用IP或无域名,请使用该domain,防止隐私泄露/无法解析)\n * #### 注意\n * - `any`值建议为UUID/ULID/NanoID以防同步错误\n * ### 非DanUni弹幕服务建议使用预设,或自行填写域名\n */\n public domain: PlatformSource | string,\n ) {}\n static validateString(str: string) {\n return UniIDStrSchema.safeParse(str).success;\n }\n static fromStringSafe(str: string) {\n return this.fromString(UniIDStrSchema.parse(str));\n }\n static fromString(str: UniIDStr) {\n const [id, domain] = str.split(\"@\");\n return new UniID(id, domain);\n }\n toString(): UniIDStr {\n return `${this.id}@${this.domain}`;\n }\n static fromNull(domain?: PlatformSource | string) {\n return new UniID(domain === \"runtime\" ? \"runtime\" : \"anonymous\", domain || \"danuni\");\n }\n static fromBili({\n cid,\n mid,\n midHash,\n }: {\n cid?: number | bigint | string;\n mid?: number | bigint;\n midHash?: string;\n }) {\n if (cid) return new UniID(cid.toString(), PlatformVideoSource.Bilibili);\n else if (mid) return new UniID(mid.toString(), PlatformVideoSource.Bilibili);\n else if (midHash) return new UniID(midHash, PlatformVideoSource.Bilibili);\n else return this.fromNull(PlatformVideoSource.Bilibili);\n }\n static fromUnknown(\n id: string,\n /**\n * 可使用预设\n */\n domain: PlatformSource | string,\n ) {\n if (id) return new UniID(id, domain);\n else return this.fromNull(domain);\n }\n}\n","import type { PlatformDanmakuSource } from \"./platform.ts\";\n\nimport pkg from \"../../package.json\" with { type: \"json\" };\nimport { UniID } from \"./uni-id.ts\";\nimport type { Extra } from \"./dm-extra.ts\";\n\nexport enum Modes {\n Normal,\n Bottom,\n Top,\n Reverse, //逆向弹幕\n Ext, //需要读取extra的弹幕,用于兼容bili等复杂弹幕\n}\nexport enum Pools {\n Def, //默认池\n Sub, //重要池,建议强制加载,含字幕、科普、空降等\n Adv, //高级弹幕专用池,均需读取extra\n Ix, //互动池\n}\nexport enum DMAttr {\n Protect = \"Protect\",\n FromLive = \"FromLive\",\n HighLike = \"HighLike\",\n Compatible = \"Compatible\", // 由dan-any进行过兼容处理的弹幕,可能丢失部分信息\n Reported = \"Reported\", // 在DanUni上被多人举报过的弹幕\n Unchecked = \"Unchecked\", // 在DanUni上未被审核过的弹幕\n HasEvent = \"HasEvent\", // 该弹幕当前在DanUni上存在事件(如点赞/举报等)\n Hide = \"Hide\", // 由于其它原因需要隐藏的弹幕(建议在server端不返回该类弹幕)\n}\n\nexport interface UniDMObj {\n SOID: string;\n progress: number; // int32, ms\n mode: Modes;\n fontsize: number;\n color: number;\n senderID: string;\n content: string;\n ctime: Date;\n weight: number;\n pool: Pools;\n attr: DMAttr[];\n platform: PlatformDanmakuSource | string | null;\n extra: Extra | null;\n // extraStr: string;\n DMID: string;\n}\n\nexport const defaultUniDM = {\n SOID: UniID.fromNull().toString(),\n progress: 0,\n mode: Modes.Normal,\n fontsize: 25,\n color: 0xffffff,\n senderID: UniID.fromNull().toString(),\n content: \"\",\n // ctime: new Date(), // ctime 应根据实际构建时间创建\n weight: 0,\n pool: Pools.Def,\n attr: [] as DMAttr[],\n platform: null,\n extra: null,\n} as const;\n\nexport interface DanUniConvertTip {\n meassage: string;\n version: string;\n data?: string;\n}\n\nexport const DanUniConvertTipTemplate: DanUniConvertTip = {\n meassage: \"Converted by DanUni!\",\n version: `JS/TS ${pkg.name} (v${pkg.version})`,\n};\n"],"mappings":"2DCAA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,MACA,EAAA,KAAA,aACD,CACD,MAAa,EAAsB,OAAO,OAAO,EAAmB,CAEpE,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,MAAA,QACA,EAAA,KAAA,OACA,EAAA,SAAA,OACA,EAAA,eAAA,UACA,EAAA,MAAA,QACA,EAAA,QAAA,UACA,EAAA,MAAA,cACD,CACD,MAAa,EAAuB,OAAO,OAAO,EAAoB,CAEtE,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,WAAA,SACA,EAAA,MAAA,cACD,CACD,MAAa,EAA6B,OAAO,OAAO,EAA0B,CAGrE,EAAyB,CAAC,GAAG,EAAsB,GAAG,EAA2B,CAGjF,EAAkB,CAAC,GAAG,EAAqB,GAAG,EAAuB,CCxB5E,EAAiB,EAAE,gBAAgB,CAAC,EAAE,QAAQ,CAAE,IAAK,EAAE,QAAQ,CAAC,CAAC,CAGvE,IAAa,EAAb,MAAa,CAAM,CACjB,YAME,EASA,EACA,CAVO,KAAA,GAAA,EASA,KAAA,OAAA,EAET,OAAO,eAAe,EAAa,CACjC,OAAO,EAAe,UAAU,EAAI,CAAC,QAEvC,OAAO,eAAe,EAAa,CACjC,OAAO,KAAK,WAAW,EAAe,MAAM,EAAI,CAAC,CAEnD,OAAO,WAAW,EAAe,CAC/B,GAAM,CAAC,EAAI,GAAU,EAAI,MAAM,IAAI,CACnC,OAAO,IAAI,EAAM,EAAI,EAAO,CAE9B,UAAqB,CACnB,MAAO,GAAG,KAAK,GAAG,GAAG,KAAK,SAE5B,OAAO,SAAS,EAAkC,CAChD,OAAO,IAAI,EAAM,IAAW,UAAY,UAAY,YAAa,GAAU,SAAS,CAEtF,OAAO,SAAS,CACd,MACA,MACA,WAKC,CAII,OAHD,EAAY,IAAI,EAAM,EAAI,UAAU,CAAA,OAA+B,CAC9D,EAAY,IAAI,EAAM,EAAI,UAAU,CAAA,OAA+B,CACnE,EAAgB,IAAI,EAAM,EAAA,OAAsC,CAC7D,KAAK,SAAA,OAAsC,CAEzD,OAAO,YACL,EAIA,EACA,CAEK,OADD,EAAW,IAAI,EAAM,EAAI,EAAO,CACxB,KAAK,SAAS,EAAO,GCxDrC,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,IAAA,GAAA,MACA,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,IAAA,GAAA,YACD,CACW,EAAL,SAAA,EAAA,OACL,GAAA,EAAA,IAAA,GAAA,MACA,EAAA,EAAA,IAAA,GAAA,MACA,EAAA,EAAA,IAAA,GAAA,MACA,EAAA,EAAA,GAAA,GAAA,WACD,CACW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,UACA,EAAA,SAAA,WACA,EAAA,SAAA,WACA,EAAA,WAAA,aACA,EAAA,SAAA,WACA,EAAA,UAAA,YACA,EAAA,SAAA,WACA,EAAA,KAAA,aACD,CAoBD,MAAa,EAAe,CAC1B,KAAM,EAAM,UAAU,CAAC,UAAU,CACjC,SAAU,EACV,KAAA,EACA,SAAU,GACV,MAAO,SACP,SAAU,EAAM,UAAU,CAAC,UAAU,CACrC,QAAS,GAET,OAAQ,EACR,KAAA,EACA,KAAM,EAAE,CACR,SAAU,KACV,MAAO,KACR,CAQY,EAA6C,CACxD,SAAU,uBACV,QAAS,SAASA,EAAS,KAAKC,EAAY,GAC7C"}
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,o as t}from"./core-
|
|
1
|
+
import{i as e,o as t}from"./core-BsUKRX1y.mjs";import{t as n}from"./plugins.mjs";import{t as r}from"./utils.mjs";export{t as adapters,e as core,n as plugins,r as utils};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./core/db/schema.mjs";import"./dm-
|
|
2
|
-
//# sourceMappingURL=isSame-
|
|
1
|
+
import"./core/db/schema.mjs";import"./dm-BPBsbygx.mjs";function e(e){return e.adv||e.code||e.bas||e.command}function t(t,n,r){if(t===n)return!0;if(t.mode===`Ext`||n.mode===`Ext`||!r?.skipDanuniMerge&&(t.extra?.danuni?.merge||n.extra?.danuni?.merge)||t.extra?.bili?.dmid&&n.extra?.bili?.dmid&&(e(t.extra.bili)||e(n.extra.bili)||t.extra?.bili.mid&&!n.extra?.bili.mid||!t.extra?.bili.mid&&n.extra?.bili.mid)||t.extra?.artplayer&&!n.extra?.artplayer||!t.extra?.artplayer&&n.extra?.artplayer||t.extra?.artplayer&&n.extra?.artplayer&&(t.extra?.artplayer.border!==n.extra?.artplayer.border||JSON.stringify(t.extra?.artplayer.style)!==JSON.stringify(n.extra?.artplayer.style)))return!1;let i=e=>t[e]===n[e];return[`SOID`,`content`,`mode`,`pool`,`platform`].every(e=>i(e))}export{t};
|
|
2
|
+
//# sourceMappingURL=isSame-DciV3b4U.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSame-
|
|
1
|
+
{"version":3,"file":"isSame-DciV3b4U.mjs","names":[],"sources":["../src/utils/isSame.ts"],"sourcesContent":["import { DMAttrSchema, ModeSchema, PoolSchema } from \"@/core/db/schema.ts\";\nimport type { ExtraBili } from \"@/core/dm-extra.ts\";\nimport { type UniDMObj } from \"@/core/dm.ts\";\nimport type { UniChunk } from \"@/core/index.ts\";\nimport type { z } from \"zod\";\n\ninterface UniDMComparable extends Omit<UniDMObj, \"mode\" | \"pool\" | \"attr\"> {\n mode: z.infer<typeof ModeSchema>;\n pool: z.infer<typeof PoolSchema>;\n attr: z.infer<typeof DMAttrSchema>[];\n}\n\ntype Comp = Pick<\n UniDMComparable | Awaited<UniChunk[\"$danmakus\"]>[number],\n \"SOID\" | \"content\" | \"mode\" | \"pool\" | \"platform\" | \"extra\"\n>;\n\nfunction biliSp(that: ExtraBili) {\n return that.adv || that.code || that.bas || that.command;\n}\n\nexport function isSame(that: Comp, dan: Comp, options?: { skipDanuniMerge?: boolean }): boolean {\n // 引用相同直接返回\n if (that === dan) return true;\n // 不支持比较高级弹幕\n if (that.mode === \"Ext\" || dan.mode === \"Ext\") return false;\n // 合并过视为不同,防止存在合并完成弹幕后再次合并造成计数错误\n if (!options?.skipDanuniMerge && (that.extra?.danuni?.merge || dan.extra?.danuni?.merge))\n return false;\n // 如果是bili弹幕,则以dmid判断是否相同\n if (that.extra?.bili?.dmid && dan.extra?.bili?.dmid) {\n // bili所有非一般类型的弹幕均直接判断为不同\n if (biliSp(that.extra.bili) || biliSp(dan.extra.bili)) return false;\n // 下面只会有来自 std/up 源的普通弹幕\n // 此时可以用mid原始值是否存在判断是否为up源弹幕\n // 当来源不同(标准源/创作中心源)时,视为不同弹幕\n if (\n (that.extra?.bili.mid && !dan.extra?.bili.mid) ||\n (!that.extra?.bili.mid && dan.extra?.bili.mid)\n )\n return false;\n // 不对dmid等原始值备份进行比较(若比较dmid,则必定不同,不符合比较函数使用场景)\n // 直接跳出bili特定判断,进入后续通用比较\n }\n // 如果是artplayer弹幕,需额外比较extra项目\n if (\n (that.extra?.artplayer && !dan.extra?.artplayer) ||\n (!that.extra?.artplayer && dan.extra?.artplayer)\n )\n return false;\n else if (\n that.extra?.artplayer &&\n dan.extra?.artplayer &&\n (that.extra?.artplayer.border !== dan.extra?.artplayer.border ||\n JSON.stringify(that.extra?.artplayer.style) !== JSON.stringify(dan.extra?.artplayer.style))\n )\n return false;\n const isSame = (k: keyof Comp) => that[k] === dan[k];\n const checks = ([\"SOID\", \"content\", \"mode\", \"pool\", \"platform\"] satisfies (keyof Comp)[]).every(\n (k) => isSame(k),\n );\n // 忽略使用了extra字段却不在mode里标记的弹幕\n return checks;\n}\n"],"mappings":"uDAiBA,SAAS,EAAO,EAAiB,CAC/B,OAAO,EAAK,KAAO,EAAK,MAAQ,EAAK,KAAO,EAAK,QAGnD,SAAgB,EAAO,EAAY,EAAW,EAAkD,CAE9F,GAAI,IAAS,EAAK,MAAO,GA2BpB,GAzBD,EAAK,OAAS,OAAS,EAAI,OAAS,OAEpC,CAAC,GAAS,kBAAoB,EAAK,OAAO,QAAQ,OAAS,EAAI,OAAO,QAAQ,QAG9E,EAAK,OAAO,MAAM,MAAQ,EAAI,OAAO,MAAM,OAEzC,EAAO,EAAK,MAAM,KAAK,EAAI,EAAO,EAAI,MAAM,KAAK,EAKlD,EAAK,OAAO,KAAK,KAAO,CAAC,EAAI,OAAO,KAAK,KACzC,CAAC,EAAK,OAAO,KAAK,KAAO,EAAI,OAAO,KAAK,MAQ3C,EAAK,OAAO,WAAa,CAAC,EAAI,OAAO,WACrC,CAAC,EAAK,OAAO,WAAa,EAAI,OAAO,WAItC,EAAK,OAAO,WACZ,EAAI,OAAO,YACV,EAAK,OAAO,UAAU,SAAW,EAAI,OAAO,UAAU,QACrD,KAAK,UAAU,EAAK,OAAO,UAAU,MAAM,GAAK,KAAK,UAAU,EAAI,OAAO,UAAU,MAAM,EAE5F,MAAO,GACT,IAAM,EAAU,GAAkB,EAAK,KAAO,EAAI,GAKlD,MAJgB,CAAC,OAAQ,UAAW,OAAQ,OAAQ,WAAW,CAA2B,MACvF,GAAM,EAAO,EAAE,CAGL"}
|
package/dist/plugins.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./chunk-0Lt9GpW0.mjs";import{danmakusSelectZod as t}from"./core/db/schema.mjs";import{c as n,l as r,n as i}from"./core-
|
|
1
|
+
import{t as e}from"./chunk-0Lt9GpW0.mjs";import{danmakusSelectZod as t}from"./core/db/schema.mjs";import{c as n,l as r,n as i}from"./core-BsUKRX1y.mjs";import"./dm-BPBsbygx.mjs";import{t as a}from"./isSame-DciV3b4U.mjs";const o=r(e=>e.then(e=>e.length)),s=({include:e,exclude:t}={})=>n(async n=>{e||=[],t||=[];let r=n=>e?.includes(n)||!t?.includes(n),a=await i.makeChunk(n,{tmp:!0});return await a.upsertDanmakus((await n.$danmakus).map(e=>{if(!e.extra)return e;let t={...e,mode:`Top`,senderID:`compat[bot]@dan-any`};if(r(`danuni`)&&e.extra?.danuni){let n=e.extra.danuni;n.merge&&(t.content=`${t.content} x${n.merge.count}`)}else if(r(`bili`)&&e.extra?.bili){let n=e.extra.bili;n.mode===7&&n.adv?t.content=`[B站高级弹幕]${JSON.parse(n.adv)[4]||``}`:n.command&&(t.content=`[B站指令弹幕]${n.command.content}`,t.fontsize=36)}return t.attr.push(`Compatible`),{...t,DMID:a.$UniDB.DMIDGenerator(t)}})),a});t.pick({content:!0,SOID:!0,mode:!0,fontsize:!0,color:!0,senderID:!0,weight:!0,pool:!0,platform:!0});const c=e=>r(async function(t){let n={},r=await t,i=e=>{let t=new Map;for(let n of r){let r=n[e];t.set(r,(t.get(r)??0)+1)}n[e]=t};for(let t of e)i(t);return n});function l(e){if(e.size===0)return{val:void 0,count:0};let t,n=0;for(let[r,i]of e.entries())i>n&&(n=i,t=r);return{val:t,count:n}}const u=(e=0)=>n(async t=>{let n=await i.makeChunk(t,{tmp:!0}),r=[...await t.$danmakus].sort((e,t)=>e.progress-t.progress||e.ctime.getTime()-t.ctime.getTime());if(e<=0)return await n.upsertDanmakus(r,!1),n;let o=e*1e3,s=e=>[e.SOID,e.content,e.mode,e.pool,e.platform??``].join(`|`),c=new Map,l=[];for(let e of r){let t=s(e),n=c.get(t)??[],r;for(let t=n.length-1;t>=0;t--){let i=n[t];if(e.progress-i.lastProgress>o)break;if(a(i.base,e)){r=i;break}}if(r){r.members.push(e),r.lastProgress=e.progress,r.senderSet.has(e.senderID)||(r.senderSet.add(e.senderID),r.senders.push(e.senderID));continue}let i={base:e,lastProgress:e.progress,senders:[e.senderID],senderSet:new Set([e.senderID]),members:[e]};n.push(i),c.set(t,n),l.push(i)}return await n.upsertDanmakus(l.map(e=>{if(e.members.length===1)return e.base;let t={duration:e.lastProgress-e.base.progress,count:e.members.length,senders:e.senders,taolu_count:e.members.length,taolu_senders:e.senders},r=e.base.extra?{...e.base.extra,danuni:{...e.base.extra.danuni?e.base.extra.danuni:{},merge:t}}:{danuni:{merge:t}};if(e.senders.length===1){let e=r.danuni;if(e?.merge){let{merge:t,...n}=e;if(Object.keys(n).length>0)r={...r,danuni:n};else{let{danuni:e,...t}=r;r=Object.keys(t).length>0?t:null}}}let i=e.base.attr.includes(`Protect`)?e.base.attr:[...e.base.attr,`Protect`],a=`merge[bot]@dan-any`;return{...e.base,senderID:a,attr:i,extra:r,DMID:n.$UniDB.DMIDGenerator({content:e.base.content,mode:e.base.mode,pool:e.base.pool,platform:e.base.platform,extra:r&&Object.keys(r).length>0?r:null,senderID:a,ctime:e.base.ctime})}})),n});var d=e({CountTransformer:()=>o,DowngradeAdvancedPluginConfigurator:()=>s,GetStatsTransformerConfigurator:()=>c,GetStatsUtil4getMost:()=>l,MergePluginConfigurator:()=>u});export{o as CountTransformer,s as DowngradeAdvancedPluginConfigurator,c as GetStatsTransformerConfigurator,l as GetStatsUtil4getMost,u as MergePluginConfigurator,d as t};
|
|
2
2
|
//# sourceMappingURL=plugins.mjs.map
|
package/dist/utils.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./chunk-0Lt9GpW0.mjs";import{t}from"./isSame-
|
|
1
|
+
import{t as e}from"./chunk-0Lt9GpW0.mjs";import{t}from"./isSame-DciV3b4U.mjs";function n(e,t){let n=e instanceof ArrayBuffer||e instanceof Uint8Array;switch(t){case`bin`:if(n)return e;throw TypeError(`Expected binary data for mod "bin"`);case`string`:if(typeof e==`string`)return e;if(n)return new TextDecoder().decode(e);throw TypeError(`Expected binary data or string for mod "string"`);case`json`:{if(typeof e==`object`&&e&&!n)return e;if(typeof e!=`string`&&!n)throw TypeError(`Expected object, JSON string, or binary data for mod "json"`);let t=typeof e==`string`?e:new TextDecoder().decode(e);try{return JSON.parse(t)}catch{throw Error(`Invalid JSON string`)}}default:throw Error(`Unsupported mod`)}}var r=e({fileParser:()=>n,isSame:()=>t});export{n as fileParser,t as isSame,r as t};
|
|
2
2
|
//# sourceMappingURL=utils.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dan-uni/dan-any",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "A danmaku transformer lib, supporting danmaku from different platforms.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bangumi",
|
|
@@ -80,4 +80,4 @@
|
|
|
80
80
|
"trustedDependencies": [
|
|
81
81
|
"protobufjs"
|
|
82
82
|
]
|
|
83
|
-
}
|
|
83
|
+
}
|