@dan-uni/dan-any 2.2.4 → 2.2.5

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 (37) hide show
  1. package/dist/{adapters-BWKFhVcX.js → adapters-n4ZeTSYX.js} +2 -2
  2. package/dist/{adapters-BWKFhVcX.js.map → adapters-n4ZeTSYX.js.map} +1 -1
  3. package/dist/adapters.d.ts +1 -1
  4. package/dist/adapters.js +1 -1
  5. package/dist/core/db/schema.d.ts +1 -1
  6. package/dist/core/db/utils.d.ts +1 -1
  7. package/dist/core/main/drizzle.d.ts +3 -3
  8. package/dist/core/main/drizzle.js +1 -1
  9. package/dist/core/main/pure.d.ts +1 -1
  10. package/dist/core/main/pure.js +1 -1
  11. package/dist/core/main.d.ts +1 -1
  12. package/dist/core/main.js +1 -1
  13. package/dist/{core-BKtvRbLS.js → core-D1XUOSXa.js} +2 -2
  14. package/dist/{core-BKtvRbLS.js.map → core-D1XUOSXa.js.map} +1 -1
  15. package/dist/core.d.ts +3 -3
  16. package/dist/core.js +1 -1
  17. package/dist/{dm-extra-6EjI8V-C.d.ts → dm-extra--BY805J3.d.ts} +6 -2
  18. package/dist/{dm-extra-6EjI8V-C.d.ts.map → dm-extra--BY805J3.d.ts.map} +1 -1
  19. package/dist/{index-B0rdTeW8.d.ts → index-DPxMOW6E.d.ts} +3 -3
  20. package/dist/{index-B0rdTeW8.d.ts.map → index-DPxMOW6E.d.ts.map} +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/{isSame-BAhY0_yj.js → isSame-MiM4wHvK.js} +2 -2
  24. package/dist/{isSame-BAhY0_yj.js.map → isSame-MiM4wHvK.js.map} +1 -1
  25. package/dist/{main-drizzle-BBmwzpaC.js → main-drizzle-QIklYdJq.js} +2 -2
  26. package/dist/{main-drizzle-BBmwzpaC.js.map → main-drizzle-QIklYdJq.js.map} +1 -1
  27. package/dist/{main-pure-C1oipitq.js → main-pure-BTqDH2ll.js} +2 -2
  28. package/dist/{main-pure-C1oipitq.js.map → main-pure-BTqDH2ll.js.map} +1 -1
  29. package/dist/{main-pure-BnkXf_jV.d.ts → main-pure-BVFJVQIq.d.ts} +2 -2
  30. package/dist/{main-pure-BnkXf_jV.d.ts.map → main-pure-BVFJVQIq.d.ts.map} +1 -1
  31. package/dist/plugins.d.ts +2 -2
  32. package/dist/plugins.js +1 -1
  33. package/dist/{schema-D44OKqTj.d.ts → schema-B08Jk3HR.d.ts} +2 -2
  34. package/dist/{schema-D44OKqTj.d.ts.map → schema-B08Jk3HR.d.ts.map} +1 -1
  35. package/dist/utils.d.ts +2 -2
  36. package/dist/utils.js +1 -1
  37. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"main-pure-C1oipitq.js","names":["#freeSerials","#nextSerial","#map"],"sources":["../src/utils/serialMap.ts","../src/core/main-pure.ts"],"sourcesContent":["type innerSerialMap<V> = Map<number, V>;\nexport class SerialMap<V> implements Map<number, V> {\n #map = new Map<number, V>();\n #freeSerials: number[] = [];\n #nextSerial: number = 0;\n get nextSerial(): number {\n if (this.#freeSerials.length > 0) return this.#freeSerials.shift()!;\n else return this.#nextSerial++;\n }\n add(value: V) {\n this.#map.set(this.nextSerial, value);\n return this;\n }\n delete(serial: number) {\n const existed = this.#map.delete(serial);\n if (existed) this.#freeSerials.push(serial);\n return existed;\n }\n clear() {\n this.#map.clear();\n this.#freeSerials = [];\n this.#nextSerial = 0;\n }\n toJSON() {\n return {\n $typeName: \"SerialMap\",\n \"#map\": this.#map.entries().toArray(),\n \"#freeSerials\": this.#freeSerials,\n \"#nextSerial\": this.#nextSerial,\n };\n }\n static fromJSON<V>(data: ReturnType<SerialMap<V>[\"toJSON\"]>): SerialMap<V> {\n if (data.$typeName !== \"SerialMap\") throw new Error(\"Invalid data for SerialMap\");\n const map = new SerialMap<V>();\n map.#map = new Map<number, V>(data[\"#map\"]);\n map.#freeSerials = data[\"#freeSerials\"];\n map.#nextSerial = data[\"#nextSerial\"];\n return map;\n }\n get size() {\n return this.#map.size;\n }\n has(...args: Parameters<innerSerialMap<V>[\"has\"]>) {\n return this.#map.has(...args);\n }\n get(...args: Parameters<innerSerialMap<V>[\"get\"]>) {\n return this.#map.get(...args);\n }\n set(...args: Parameters<innerSerialMap<V>[\"set\"]>) {\n this.#map.set(...args);\n return this;\n }\n getOrInsert(...args: Parameters<innerSerialMap<V>[\"getOrInsert\"]>) {\n return this.#map.getOrInsert(...args);\n }\n getOrInsertComputed(...args: Parameters<innerSerialMap<V>[\"getOrInsertComputed\"]>) {\n return this.#map.getOrInsertComputed(...args);\n }\n forEach(...args: Parameters<innerSerialMap<V>[\"forEach\"]>) {\n return this.#map.forEach(...args);\n }\n keys(...args: Parameters<innerSerialMap<V>[\"keys\"]>) {\n return this.#map.keys(...args);\n }\n values(...args: Parameters<innerSerialMap<V>[\"values\"]>) {\n return this.#map.values(...args);\n }\n entries(...args: Parameters<innerSerialMap<V>[\"entries\"]>) {\n return this.#map.entries(...args);\n }\n [Symbol.iterator]() {\n return this.#map[Symbol.iterator]();\n }\n get [Symbol.toStringTag]() {\n return \"SerialMap\";\n }\n}\n\ntype innerBigSerialMap<V> = Map<bigint, V>;\nexport class BigSerialMap<V> implements Map<bigint, V> {\n #map = new Map<bigint, V>();\n #freeSerials: bigint[] = [];\n #nextSerial: bigint = 0n;\n get nextSerial(): bigint {\n if (this.#freeSerials.length > 0) return this.#freeSerials.shift()!;\n else return this.#nextSerial++;\n }\n add(value: V) {\n this.#map.set(this.nextSerial, value);\n return this;\n }\n delete(serial: bigint) {\n const existed = this.#map.delete(serial);\n if (existed) this.#freeSerials.push(serial);\n return existed;\n }\n clear() {\n this.#map.clear();\n this.#freeSerials = [];\n this.#nextSerial = 0n;\n }\n toJSON() {\n return {\n $typeName: \"BigSerialMap\",\n \"#map\": this.#map\n .entries()\n .map(([k, v]) => [k.toString(), v] as [string, V])\n .toArray(),\n \"#freeSerials\": this.#freeSerials.map((s) => s.toString()),\n \"#nextSerial\": this.#nextSerial.toString(),\n };\n }\n static fromJSON<V>(data: ReturnType<BigSerialMap<V>[\"toJSON\"]>): BigSerialMap<V> {\n if (data.$typeName !== \"BigSerialMap\") throw new Error(\"Invalid data for BigSerialMap\");\n const map = new BigSerialMap<V>();\n map.#map = new Map<bigint, V>(data[\"#map\"].map(([k, v]) => [BigInt(k), v]));\n map.#freeSerials = data[\"#freeSerials\"].map(BigInt);\n map.#nextSerial = BigInt(data[\"#nextSerial\"]);\n return map;\n }\n get size() {\n return this.#map.size;\n }\n has(...args: Parameters<innerBigSerialMap<V>[\"has\"]>) {\n return this.#map.has(...args);\n }\n get(...args: Parameters<innerBigSerialMap<V>[\"get\"]>) {\n return this.#map.get(...args);\n }\n set(...args: Parameters<innerBigSerialMap<V>[\"set\"]>) {\n this.#map.set(...args);\n return this;\n }\n getOrInsert(...args: Parameters<innerBigSerialMap<V>[\"getOrInsert\"]>) {\n return this.#map.getOrInsert(...args);\n }\n getOrInsertComputed(...args: Parameters<innerBigSerialMap<V>[\"getOrInsertComputed\"]>) {\n return this.#map.getOrInsertComputed(...args);\n }\n forEach(...args: Parameters<innerBigSerialMap<V>[\"forEach\"]>) {\n return this.#map.forEach(...args);\n }\n keys(...args: Parameters<innerBigSerialMap<V>[\"keys\"]>) {\n return this.#map.keys(...args);\n }\n values(...args: Parameters<innerBigSerialMap<V>[\"values\"]>) {\n return this.#map.values(...args);\n }\n entries(...args: Parameters<innerBigSerialMap<V>[\"entries\"]>) {\n return this.#map.entries(...args);\n }\n [Symbol.iterator]() {\n return this.#map[Symbol.iterator]();\n }\n get [Symbol.toStringTag]() {\n return \"BigSerialMap\";\n }\n}\n","import { createDMID, type DMIDGenerator } from \"./id.ts\";\nimport * as base from \"./index.ts\";\nimport type { Plugin, Transformer, TransformerInput } from \"@/adapters/index.ts\";\nimport type { Asyncify, Promisable, Simplify } from \"type-fest\";\nimport { BigSerialMap, SerialMap } from \"@/utils/serialMap.ts\";\n\ntype baseClassTrans<T> = base.baseClassTrans<T, UniDB, InitedUniDB, UniChunk>;\n\ninterface UJson {\n danmakus: base.UDanmaku[];\n chunks: ReturnType<SerialMap<base.UChunk>[\"toJSON\"]>;\n chunk2danmakus: ReturnType<BigSerialMap<base.UChunk2Danmaku>[\"toJSON\"]>;\n}\n\ninterface UMaps {\n danmakus: Map<string, base.UDanmaku>;\n chunks: SerialMap<base.UChunk>;\n chunk2danmakus: BigSerialMap<base.UChunk2Danmaku>;\n}\n\nconst emptyDB: UMaps = {\n danmakus: new Map(),\n chunks: new SerialMap(),\n chunk2danmakus: new BigSerialMap(),\n};\nexport function initNewDb() {\n return { ...emptyDB };\n}\n\nexport class UniDB implements base.UniDB {\n __isUniDB = true;\n constructor(\n public $db: UMaps = emptyDB,\n public DMIDGenerator: DMIDGenerator = createDMID,\n ) {}\n init($json?: UJson) {\n if ($json)\n this.$db = {\n danmakus: new Map($json.danmakus.map((d) => [d.DMID, d])),\n chunks: SerialMap.fromJSON($json.chunks),\n chunk2danmakus: BigSerialMap.fromJSON($json.chunk2danmakus),\n };\n else this.$db = emptyDB;\n return new InitedUniDB(this.$db, this.DMIDGenerator);\n }\n close() {\n this.$db = { danmakus: new Map(), chunks: new SerialMap(), chunk2danmakus: new BigSerialMap() };\n }\n}\n\nfunction $Private4InitedUniDB_upsertDanmakus(that: InitedUniDB, data: base.DanmakusInsert[]) {\n data.forEach((d) => {\n const rawContent = d.content;\n // oxlint-disable-next-line no-control-regex\n d.content = rawContent.replace(/[\\x00-\\x1F\\x7F]/g, \"\");\n if (d.content !== rawContent)\n d.extra = {\n ...d.extra,\n danuni: {\n ...d.extra?.danuni,\n raw: {\n ...d.extra?.danuni?.raw,\n content: Buffer.from(rawContent, \"utf8\").toString(\"base64\"),\n },\n },\n };\n that.$db.danmakus.set(d.DMID, { ...d, platform: d.platform ?? null });\n });\n}\n\nexport class InitedUniDB extends UniDB implements base.InitedUniDB {\n __isInitedUniDB = true;\n constructor(\n public $db: UMaps,\n public DMIDGenerator: DMIDGenerator = createDMID,\n ) {\n super($db, DMIDGenerator);\n }\n dump(): UJson {\n return {\n danmakus: [...this.$db.danmakus.values()],\n chunks: this.$db.chunks.toJSON(),\n chunk2danmakus: this.$db.chunk2danmakus.toJSON(),\n };\n }\n get $chunks() {\n return [...this.$db.chunks.values()];\n }\n get $danmakus() {\n return [...this.$db.danmakus.values()];\n }\n listChunks() {\n const cs = this.$chunks;\n return cs.map((c) => new UniChunk(this, c.id));\n }\n makeChunk(data: Omit<base.ChunksInsert, \"id\">) {\n const newID = this.$db.chunks.nextSerial;\n this.$db.chunks.set(newID, {\n id: newID,\n fromConverted: data.fromConverted ?? false,\n tmp: data.tmp ?? false,\n });\n return new UniChunk(this, newID);\n }\n upsertDanmakus(\n data: base.DanmakusInsert[] | Map<string, base.DanmakusInsert>,\n dedupeDMID = true,\n ) {\n if (data instanceof Map) this.upsertDanmakus([...data.values()], false);\n else if (dedupeDMID) {\n const map = new Map<string, base.DanmakusInsert>();\n data.forEach((d) => {\n map.set(d.DMID, d);\n });\n $Private4InitedUniDB_upsertDanmakus(this, [...map.values()]);\n } else $Private4InitedUniDB_upsertDanmakus(this, data);\n }\n /**\n * 清理临时chunks\n */\n shrink() {\n const uchunks = this.$db.chunks.values().filter((c) => c.tmp);\n for (const c of uchunks) new UniChunk(this, c.id).delete();\n }\n import(adapterStore: base.AdapterStore): Promisable<UniChunk> {\n return <Promisable<UniChunk>>adapterStore(this);\n }\n export<T extends Transformer>(transformer: T): ReturnType<T>;\n async export<T extends Asyncify<Transformer>>(transformer: T): Promise<ReturnType<T>>;\n export<T extends Transformer | Asyncify<Transformer>>(transformer: T): Promisable<ReturnType<T>> {\n return <ReturnType<T>>transformer(this.$danmakus, { DMIDGenerator: this.DMIDGenerator });\n }\n}\n\nexport class UniChunk implements base.UniChunk {\n __isUniChunk = true;\n constructor(\n public $UniDB: InitedUniDB,\n public id: number,\n ) {}\n get $db() {\n return this.$UniDB.$db;\n }\n static makeChunk(u: TransformerInput<InitedUniDB | UniChunk>, data: base.ChunksInsert): UniChunk {\n return u instanceof InitedUniDB ? u.makeChunk(data) : u.$UniDB.makeChunk(data);\n }\n /**\n * 合并弹幕库\n * @description 将多个chunk的弹幕合并到base chunk中,合并后原chunk会被删除\n * @param base 目标chunk,合并后其他chunk的弹幕会被移到这个chunk中\n * @param chunks 待合并的chunk列表,这些chunk中的弹幕会被移到base chunk中,合并后这些chunk会被删除\n * @returns 合并后的目标chunk实例\n * @throws 如果chunks列表为空,函数会直接返回base chunk;如果目标chunk在数据库中未找到,会抛出错误;如果chunks中有来自不同数据库的chunk且options.allowDifferentDB为false,也会抛出错误\n */\n static assign(base: UniChunk, chunks: UniChunk[]) {\n if (chunks.length < 1) return base;\n const targetId = base.id;\n const targetRow = base.$chunk();\n let newFromConverted = targetRow.fromConverted;\n for (const c of chunks) {\n const srcChunkRow = c.$chunk();\n newFromConverted = newFromConverted && !!srcChunkRow.fromConverted;\n base.upsertDanmakus(c.$danmakus, false);\n c.delete();\n }\n base.$db.chunks.set(targetId, { ...targetRow, fromConverted: newFromConverted });\n return new UniChunk(base.$UniDB, targetId);\n }\n /**\n * 比较两个chunk的弹幕是否相同\n * @description 可用于跨DB比较\n */\n static compare(u1: UniChunk, u2: UniChunk) {\n const dms1 = u1.$danmakus;\n const dms2 = u2.$danmakus;\n if (dms1.length !== dms2.length) return false;\n const dmidSet = new Set<string>();\n for (const dm of dms1) {\n dmidSet.add(dm.DMID);\n }\n for (const dm of dms2) {\n const target = dmidSet.has(dm.DMID);\n if (!target) return false;\n if (JSON.stringify(target) !== JSON.stringify(dm)) return false;\n }\n return true;\n }\n get $chunks() {\n const chunk = this.$db.chunks.get(this.id);\n return chunk ? [chunk] : [];\n }\n $chunk() {\n const c = this.$chunks;\n return c[0];\n }\n get $danmakus() {\n const c2d = this.$db.chunk2danmakus.values().filter((cd) => cd.chunkID === this.id);\n const ds = c2d\n .map((cd) => this.$db.danmakus.get(cd.DMID))\n .filter((d): d is base.UDanmaku => !!d);\n return [...ds];\n }\n get $count() {\n const c2d = this.$db.chunk2danmakus.values().filter((cd) => cd.chunkID === this.id);\n return c2d.reduce((acc) => acc + 1, 0);\n }\n get isDeleted() {\n return !this.$db.chunks.has(this.id);\n }\n upsertDanmakus(\n data: Map<string, base.DanmakusInsert & { platform: string | null }>,\n autoSetDMID?: false,\n dedupeDMID?: false,\n ): void;\n upsertDanmakus(\n data: Simplify<base.DanmakusInsert & { DMID: string; platform: string | null }>[],\n autoSetDMID?: false,\n dedupeDMID?: boolean,\n ): void;\n upsertDanmakus(\n data: Simplify<base.DanmakusInsert & { DMID?: undefined }>[],\n autoSetDMID: true,\n dedupeDMID?: true,\n ): void;\n upsertDanmakus(\n data:\n | (base.DanmakusInsert & { DMID?: string; platform: string | null })[]\n | Map<string, base.DanmakusInsert & { platform: string | null }>,\n autoSetDMID = false,\n dedupeDMID = true,\n ) {\n const dmids = new Set<string>();\n if (data instanceof Map) {\n this.$UniDB.upsertDanmakus([...data.values()], false);\n data.forEach((d) => dmids.add(d.DMID));\n } else {\n if (autoSetDMID)\n data = data.map((d) => {\n const DMID = this.$UniDB.DMIDGenerator(d);\n dmids.add(DMID);\n return { ...d, DMID };\n });\n else\n data.forEach((d) => {\n dmids.add(d.DMID!);\n });\n this.$UniDB.upsertDanmakus(data, dedupeDMID);\n }\n dmids.forEach((dmid) => {\n const chunk2danmakuID = this.$db.chunk2danmakus.nextSerial;\n this.$db.chunk2danmakus.set(chunk2danmakuID, {\n id: chunk2danmakuID,\n chunkID: this.id,\n DMID: dmid,\n });\n });\n }\n import(adapterStore: base.AdapterStore): Promisable<UniChunk> {\n return <Promisable<UniChunk>>adapterStore(this.$UniDB, this);\n }\n export<T extends Transformer>(transformer: T): ReturnType<T>;\n async export<T extends Asyncify<Transformer>>(transformer: T): Promise<ReturnType<T>>;\n export<T extends Transformer | Asyncify<Transformer>>(transformer: T): Promisable<ReturnType<T>> {\n // transformer 格式转换器 不应对数据库执行任何写操作\n return <ReturnType<T>>transformer(this.$danmakus, {\n DMIDGenerator: this.$UniDB.DMIDGenerator,\n uchunk: this.$chunk(),\n });\n }\n plugin<T extends Plugin>(plugin: T): baseClassTrans<ReturnType<T>>;\n plugin<T extends Asyncify<Plugin>>(plugin: T): Promise<baseClassTrans<ReturnType<T>>>;\n plugin<T extends Plugin | Asyncify<Plugin>>(\n plugin: T,\n ): Promisable<baseClassTrans<ReturnType<T>>> {\n const output = <baseClassTrans<ReturnType<T>>>plugin(this);\n return output;\n }\n delete() {\n const DMIDs = new Set<string>();\n this.$db.chunk2danmakus.forEach((cd) => {\n if (cd.chunkID === this.id) {\n DMIDs.add(cd.DMID);\n this.$db.chunk2danmakus.delete(cd.id);\n }\n });\n // 对于不再被任何 chunk 引用的弹幕,删除它们\n DMIDs.forEach((dmid) => {\n const still = this.$db.chunk2danmakus.values().some((cd) => cd.DMID === dmid);\n if (!still) this.$db.danmakus.delete(dmid);\n });\n this.$db.chunks.delete(this.id);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"main-pure-BTqDH2ll.js","names":["#freeSerials","#nextSerial","#map"],"sources":["../src/utils/serialMap.ts","../src/core/main-pure.ts"],"sourcesContent":["type innerSerialMap<V> = Map<number, V>;\nexport class SerialMap<V> implements Map<number, V> {\n #map = new Map<number, V>();\n #freeSerials: number[] = [];\n #nextSerial: number = 0;\n get nextSerial(): number {\n if (this.#freeSerials.length > 0) return this.#freeSerials.shift()!;\n else return this.#nextSerial++;\n }\n add(value: V) {\n this.#map.set(this.nextSerial, value);\n return this;\n }\n delete(serial: number) {\n const existed = this.#map.delete(serial);\n if (existed) this.#freeSerials.push(serial);\n return existed;\n }\n clear() {\n this.#map.clear();\n this.#freeSerials = [];\n this.#nextSerial = 0;\n }\n toJSON() {\n return {\n $typeName: \"SerialMap\",\n \"#map\": this.#map.entries().toArray(),\n \"#freeSerials\": this.#freeSerials,\n \"#nextSerial\": this.#nextSerial,\n };\n }\n static fromJSON<V>(data: ReturnType<SerialMap<V>[\"toJSON\"]>): SerialMap<V> {\n if (data.$typeName !== \"SerialMap\") throw new Error(\"Invalid data for SerialMap\");\n const map = new SerialMap<V>();\n map.#map = new Map<number, V>(data[\"#map\"]);\n map.#freeSerials = data[\"#freeSerials\"];\n map.#nextSerial = data[\"#nextSerial\"];\n return map;\n }\n get size() {\n return this.#map.size;\n }\n has(...args: Parameters<innerSerialMap<V>[\"has\"]>) {\n return this.#map.has(...args);\n }\n get(...args: Parameters<innerSerialMap<V>[\"get\"]>) {\n return this.#map.get(...args);\n }\n set(...args: Parameters<innerSerialMap<V>[\"set\"]>) {\n this.#map.set(...args);\n return this;\n }\n getOrInsert(...args: Parameters<innerSerialMap<V>[\"getOrInsert\"]>) {\n return this.#map.getOrInsert(...args);\n }\n getOrInsertComputed(...args: Parameters<innerSerialMap<V>[\"getOrInsertComputed\"]>) {\n return this.#map.getOrInsertComputed(...args);\n }\n forEach(...args: Parameters<innerSerialMap<V>[\"forEach\"]>) {\n return this.#map.forEach(...args);\n }\n keys(...args: Parameters<innerSerialMap<V>[\"keys\"]>) {\n return this.#map.keys(...args);\n }\n values(...args: Parameters<innerSerialMap<V>[\"values\"]>) {\n return this.#map.values(...args);\n }\n entries(...args: Parameters<innerSerialMap<V>[\"entries\"]>) {\n return this.#map.entries(...args);\n }\n [Symbol.iterator]() {\n return this.#map[Symbol.iterator]();\n }\n get [Symbol.toStringTag]() {\n return \"SerialMap\";\n }\n}\n\ntype innerBigSerialMap<V> = Map<bigint, V>;\nexport class BigSerialMap<V> implements Map<bigint, V> {\n #map = new Map<bigint, V>();\n #freeSerials: bigint[] = [];\n #nextSerial: bigint = 0n;\n get nextSerial(): bigint {\n if (this.#freeSerials.length > 0) return this.#freeSerials.shift()!;\n else return this.#nextSerial++;\n }\n add(value: V) {\n this.#map.set(this.nextSerial, value);\n return this;\n }\n delete(serial: bigint) {\n const existed = this.#map.delete(serial);\n if (existed) this.#freeSerials.push(serial);\n return existed;\n }\n clear() {\n this.#map.clear();\n this.#freeSerials = [];\n this.#nextSerial = 0n;\n }\n toJSON() {\n return {\n $typeName: \"BigSerialMap\",\n \"#map\": this.#map\n .entries()\n .map(([k, v]) => [k.toString(), v] as [string, V])\n .toArray(),\n \"#freeSerials\": this.#freeSerials.map((s) => s.toString()),\n \"#nextSerial\": this.#nextSerial.toString(),\n };\n }\n static fromJSON<V>(data: ReturnType<BigSerialMap<V>[\"toJSON\"]>): BigSerialMap<V> {\n if (data.$typeName !== \"BigSerialMap\") throw new Error(\"Invalid data for BigSerialMap\");\n const map = new BigSerialMap<V>();\n map.#map = new Map<bigint, V>(data[\"#map\"].map(([k, v]) => [BigInt(k), v]));\n map.#freeSerials = data[\"#freeSerials\"].map(BigInt);\n map.#nextSerial = BigInt(data[\"#nextSerial\"]);\n return map;\n }\n get size() {\n return this.#map.size;\n }\n has(...args: Parameters<innerBigSerialMap<V>[\"has\"]>) {\n return this.#map.has(...args);\n }\n get(...args: Parameters<innerBigSerialMap<V>[\"get\"]>) {\n return this.#map.get(...args);\n }\n set(...args: Parameters<innerBigSerialMap<V>[\"set\"]>) {\n this.#map.set(...args);\n return this;\n }\n getOrInsert(...args: Parameters<innerBigSerialMap<V>[\"getOrInsert\"]>) {\n return this.#map.getOrInsert(...args);\n }\n getOrInsertComputed(...args: Parameters<innerBigSerialMap<V>[\"getOrInsertComputed\"]>) {\n return this.#map.getOrInsertComputed(...args);\n }\n forEach(...args: Parameters<innerBigSerialMap<V>[\"forEach\"]>) {\n return this.#map.forEach(...args);\n }\n keys(...args: Parameters<innerBigSerialMap<V>[\"keys\"]>) {\n return this.#map.keys(...args);\n }\n values(...args: Parameters<innerBigSerialMap<V>[\"values\"]>) {\n return this.#map.values(...args);\n }\n entries(...args: Parameters<innerBigSerialMap<V>[\"entries\"]>) {\n return this.#map.entries(...args);\n }\n [Symbol.iterator]() {\n return this.#map[Symbol.iterator]();\n }\n get [Symbol.toStringTag]() {\n return \"BigSerialMap\";\n }\n}\n","import { createDMID, type DMIDGenerator } from \"./id.ts\";\nimport * as base from \"./index.ts\";\nimport type { Plugin, Transformer, TransformerInput } from \"@/adapters/index.ts\";\nimport type { Asyncify, Promisable, Simplify } from \"type-fest\";\nimport { BigSerialMap, SerialMap } from \"@/utils/serialMap.ts\";\n\ntype baseClassTrans<T> = base.baseClassTrans<T, UniDB, InitedUniDB, UniChunk>;\n\ninterface UJson {\n danmakus: base.UDanmaku[];\n chunks: ReturnType<SerialMap<base.UChunk>[\"toJSON\"]>;\n chunk2danmakus: ReturnType<BigSerialMap<base.UChunk2Danmaku>[\"toJSON\"]>;\n}\n\ninterface UMaps {\n danmakus: Map<string, base.UDanmaku>;\n chunks: SerialMap<base.UChunk>;\n chunk2danmakus: BigSerialMap<base.UChunk2Danmaku>;\n}\n\nconst emptyDB: UMaps = {\n danmakus: new Map(),\n chunks: new SerialMap(),\n chunk2danmakus: new BigSerialMap(),\n};\nexport function initNewDb() {\n return { ...emptyDB };\n}\n\nexport class UniDB implements base.UniDB {\n __isUniDB = true;\n constructor(\n public $db: UMaps = emptyDB,\n public DMIDGenerator: DMIDGenerator = createDMID,\n ) {}\n init($json?: UJson) {\n if ($json)\n this.$db = {\n danmakus: new Map($json.danmakus.map((d) => [d.DMID, d])),\n chunks: SerialMap.fromJSON($json.chunks),\n chunk2danmakus: BigSerialMap.fromJSON($json.chunk2danmakus),\n };\n else this.$db = emptyDB;\n return new InitedUniDB(this.$db, this.DMIDGenerator);\n }\n close() {\n this.$db = { danmakus: new Map(), chunks: new SerialMap(), chunk2danmakus: new BigSerialMap() };\n }\n}\n\nfunction $Private4InitedUniDB_upsertDanmakus(that: InitedUniDB, data: base.DanmakusInsert[]) {\n data.forEach((d) => {\n const rawContent = d.content;\n // oxlint-disable-next-line no-control-regex\n d.content = rawContent.replace(/[\\x00-\\x1F\\x7F]/g, \"\");\n if (d.content !== rawContent)\n d.extra = {\n ...d.extra,\n danuni: {\n ...d.extra?.danuni,\n raw: {\n ...d.extra?.danuni?.raw,\n content: Buffer.from(rawContent, \"utf8\").toString(\"base64\"),\n },\n },\n };\n that.$db.danmakus.set(d.DMID, { ...d, platform: d.platform ?? null });\n });\n}\n\nexport class InitedUniDB extends UniDB implements base.InitedUniDB {\n __isInitedUniDB = true;\n constructor(\n public $db: UMaps,\n public DMIDGenerator: DMIDGenerator = createDMID,\n ) {\n super($db, DMIDGenerator);\n }\n dump(): UJson {\n return {\n danmakus: [...this.$db.danmakus.values()],\n chunks: this.$db.chunks.toJSON(),\n chunk2danmakus: this.$db.chunk2danmakus.toJSON(),\n };\n }\n get $chunks() {\n return [...this.$db.chunks.values()];\n }\n get $danmakus() {\n return [...this.$db.danmakus.values()];\n }\n listChunks() {\n const cs = this.$chunks;\n return cs.map((c) => new UniChunk(this, c.id));\n }\n makeChunk(data: Omit<base.ChunksInsert, \"id\">) {\n const newID = this.$db.chunks.nextSerial;\n this.$db.chunks.set(newID, {\n id: newID,\n fromConverted: data.fromConverted ?? false,\n tmp: data.tmp ?? false,\n });\n return new UniChunk(this, newID);\n }\n upsertDanmakus(\n data: base.DanmakusInsert[] | Map<string, base.DanmakusInsert>,\n dedupeDMID = true,\n ) {\n if (data instanceof Map) this.upsertDanmakus([...data.values()], false);\n else if (dedupeDMID) {\n const map = new Map<string, base.DanmakusInsert>();\n data.forEach((d) => {\n map.set(d.DMID, d);\n });\n $Private4InitedUniDB_upsertDanmakus(this, [...map.values()]);\n } else $Private4InitedUniDB_upsertDanmakus(this, data);\n }\n /**\n * 清理临时chunks\n */\n shrink() {\n const uchunks = this.$db.chunks.values().filter((c) => c.tmp);\n for (const c of uchunks) new UniChunk(this, c.id).delete();\n }\n import(adapterStore: base.AdapterStore): Promisable<UniChunk> {\n return <Promisable<UniChunk>>adapterStore(this);\n }\n export<T extends Transformer>(transformer: T): ReturnType<T>;\n async export<T extends Asyncify<Transformer>>(transformer: T): Promise<ReturnType<T>>;\n export<T extends Transformer | Asyncify<Transformer>>(transformer: T): Promisable<ReturnType<T>> {\n return <ReturnType<T>>transformer(this.$danmakus, { DMIDGenerator: this.DMIDGenerator });\n }\n}\n\nexport class UniChunk implements base.UniChunk {\n __isUniChunk = true;\n constructor(\n public $UniDB: InitedUniDB,\n public id: number,\n ) {}\n get $db() {\n return this.$UniDB.$db;\n }\n static makeChunk(u: TransformerInput<InitedUniDB | UniChunk>, data: base.ChunksInsert): UniChunk {\n return u instanceof InitedUniDB ? u.makeChunk(data) : u.$UniDB.makeChunk(data);\n }\n /**\n * 合并弹幕库\n * @description 将多个chunk的弹幕合并到base chunk中,合并后原chunk会被删除\n * @param base 目标chunk,合并后其他chunk的弹幕会被移到这个chunk中\n * @param chunks 待合并的chunk列表,这些chunk中的弹幕会被移到base chunk中,合并后这些chunk会被删除\n * @returns 合并后的目标chunk实例\n * @throws 如果chunks列表为空,函数会直接返回base chunk;如果目标chunk在数据库中未找到,会抛出错误;如果chunks中有来自不同数据库的chunk且options.allowDifferentDB为false,也会抛出错误\n */\n static assign(base: UniChunk, chunks: UniChunk[]) {\n if (chunks.length < 1) return base;\n const targetId = base.id;\n const targetRow = base.$chunk();\n let newFromConverted = targetRow.fromConverted;\n for (const c of chunks) {\n const srcChunkRow = c.$chunk();\n newFromConverted = newFromConverted && !!srcChunkRow.fromConverted;\n base.upsertDanmakus(c.$danmakus, false);\n c.delete();\n }\n base.$db.chunks.set(targetId, { ...targetRow, fromConverted: newFromConverted });\n return new UniChunk(base.$UniDB, targetId);\n }\n /**\n * 比较两个chunk的弹幕是否相同\n * @description 可用于跨DB比较\n */\n static compare(u1: UniChunk, u2: UniChunk) {\n const dms1 = u1.$danmakus;\n const dms2 = u2.$danmakus;\n if (dms1.length !== dms2.length) return false;\n const dmidSet = new Set<string>();\n for (const dm of dms1) {\n dmidSet.add(dm.DMID);\n }\n for (const dm of dms2) {\n const target = dmidSet.has(dm.DMID);\n if (!target) return false;\n if (JSON.stringify(target) !== JSON.stringify(dm)) return false;\n }\n return true;\n }\n get $chunks() {\n const chunk = this.$db.chunks.get(this.id);\n return chunk ? [chunk] : [];\n }\n $chunk() {\n const c = this.$chunks;\n return c[0];\n }\n get $danmakus() {\n const c2d = this.$db.chunk2danmakus.values().filter((cd) => cd.chunkID === this.id);\n const ds = c2d\n .map((cd) => this.$db.danmakus.get(cd.DMID))\n .filter((d): d is base.UDanmaku => !!d);\n return [...ds];\n }\n get $count() {\n const c2d = this.$db.chunk2danmakus.values().filter((cd) => cd.chunkID === this.id);\n return c2d.reduce((acc) => acc + 1, 0);\n }\n get isDeleted() {\n return !this.$db.chunks.has(this.id);\n }\n upsertDanmakus(\n data: Map<string, base.DanmakusInsert & { platform: string | null }>,\n autoSetDMID?: false,\n dedupeDMID?: false,\n ): void;\n upsertDanmakus(\n data: Simplify<base.DanmakusInsert & { DMID: string; platform: string | null }>[],\n autoSetDMID?: false,\n dedupeDMID?: boolean,\n ): void;\n upsertDanmakus(\n data: Simplify<base.DanmakusInsert & { DMID?: undefined }>[],\n autoSetDMID: true,\n dedupeDMID?: true,\n ): void;\n upsertDanmakus(\n data:\n | (base.DanmakusInsert & { DMID?: string; platform: string | null })[]\n | Map<string, base.DanmakusInsert & { platform: string | null }>,\n autoSetDMID = false,\n dedupeDMID = true,\n ) {\n const dmids = new Set<string>();\n if (data instanceof Map) {\n this.$UniDB.upsertDanmakus([...data.values()], false);\n data.forEach((d) => dmids.add(d.DMID));\n } else {\n if (autoSetDMID)\n data = data.map((d) => {\n const DMID = this.$UniDB.DMIDGenerator(d);\n dmids.add(DMID);\n return { ...d, DMID };\n });\n else\n data.forEach((d) => {\n dmids.add(d.DMID!);\n });\n this.$UniDB.upsertDanmakus(data, dedupeDMID);\n }\n dmids.forEach((dmid) => {\n const chunk2danmakuID = this.$db.chunk2danmakus.nextSerial;\n this.$db.chunk2danmakus.set(chunk2danmakuID, {\n id: chunk2danmakuID,\n chunkID: this.id,\n DMID: dmid,\n });\n });\n }\n import(adapterStore: base.AdapterStore): Promisable<UniChunk> {\n return <Promisable<UniChunk>>adapterStore(this.$UniDB, this);\n }\n export<T extends Transformer>(transformer: T): ReturnType<T>;\n async export<T extends Asyncify<Transformer>>(transformer: T): Promise<ReturnType<T>>;\n export<T extends Transformer | Asyncify<Transformer>>(transformer: T): Promisable<ReturnType<T>> {\n // transformer 格式转换器 不应对数据库执行任何写操作\n return <ReturnType<T>>transformer(this.$danmakus, {\n DMIDGenerator: this.$UniDB.DMIDGenerator,\n uchunk: this.$chunk(),\n });\n }\n plugin<T extends Plugin>(plugin: T): baseClassTrans<ReturnType<T>>;\n plugin<T extends Asyncify<Plugin>>(plugin: T): Promise<baseClassTrans<ReturnType<T>>>;\n plugin<T extends Plugin | Asyncify<Plugin>>(\n plugin: T,\n ): Promisable<baseClassTrans<ReturnType<T>>> {\n const output = <baseClassTrans<ReturnType<T>>>plugin(this);\n return output;\n }\n delete() {\n const DMIDs = new Set<string>();\n this.$db.chunk2danmakus.forEach((cd) => {\n if (cd.chunkID === this.id) {\n DMIDs.add(cd.DMID);\n this.$db.chunk2danmakus.delete(cd.id);\n }\n });\n // 对于不再被任何 chunk 引用的弹幕,删除它们\n DMIDs.forEach((dmid) => {\n const still = this.$db.chunk2danmakus.values().some((cd) => cd.DMID === dmid);\n if (!still) this.$db.danmakus.delete(dmid);\n });\n this.$db.chunks.delete(this.id);\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { $ as UDanmaku, J as ChunksInsert, Q as UChunk2Danmaku, St as DMIDGenerator, Tt as Promisable, X as InitedUniDB$1, Y as DanmakusInsert, Z as UChunk, a as TransformerInput, et as UniChunk$1, i as Transformer, nt as baseClassTrans$1, q as AdapterStore, r as Plugin, tt as UniDB$1, wt as Asyncify } from "./index-B0rdTeW8.js";
1
+ import { $ as UDanmaku, J as ChunksInsert, Q as UChunk2Danmaku, St as DMIDGenerator, Tt as Promisable, X as InitedUniDB$1, Y as DanmakusInsert, Z as UChunk, a as TransformerInput, et as UniChunk$1, i as Transformer, nt as baseClassTrans$1, q as AdapterStore, r as Plugin, tt as UniDB$1, wt as Asyncify } from "./index-DPxMOW6E.js";
2
2
  import { t as Simplify } from "./simplify-d7VEIjlJ.js";
3
3
 
4
4
  //#region src/utils/serialMap.d.ts
@@ -147,4 +147,4 @@ declare class UniChunk implements UniChunk$1 {
147
147
  }
148
148
  //#endregion
149
149
  export { main_pure_d_exports as a, initNewDb as i, UniChunk as n, UniDB as r, InitedUniDB as t };
150
- //# sourceMappingURL=main-pure-BnkXf_jV.d.ts.map
150
+ //# sourceMappingURL=main-pure-BVFJVQIq.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main-pure-BnkXf_jV.d.ts","names":[],"sources":["../src/utils/serialMap.ts","../src/core/main-pure.ts"],"mappings":"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"}
1
+ {"version":3,"file":"main-pure-BVFJVQIq.d.ts","names":[],"sources":["../src/utils/serialMap.ts","../src/core/main-pure.ts"],"mappings":"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"}
package/dist/plugins.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as UDanmaku, et as UniChunk } from "./index-B0rdTeW8.js";
2
- import { t as Extra } from "./dm-extra-6EjI8V-C.js";
1
+ import { $ as UDanmaku, et as UniChunk } from "./index-DPxMOW6E.js";
2
+ import { t as Extra } from "./dm-extra--BY805J3.js";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/plugins/count.d.ts
package/dist/plugins.js CHANGED
@@ -1,2 +1,2 @@
1
- import{t as e}from"./chunk-DK3Fl9T5.js";import{n as t}from"./core-BKtvRbLS.js";import{danmakusSelectZod as n}from"./core/db/schema.js";import{a as r,i}from"./adapters-BWKFhVcX.js";import{t as a}from"./isSame-BAhY0_yj.js";const o=r(e=>e.length),s=({include:e,exclude:n}={})=>i(async r=>{e||=[],n||=[];let i=t=>e?.includes(t)||!n?.includes(t),a=await t.makeChunk(r,{tmp:!0});return await a.upsertDanmakus((await r.$danmakus).map(e=>{if(!e.extra)return e;let t={...e,mode:`Top`,senderID:`compat[bot]@dan-any`};if(i(`danuni`)&&e.extra?.danuni){let n=e.extra.danuni;n.merge&&(t.content=`${t.content} x${n.merge.count}`)}else if(i(`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});n.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=e=>{let r=new Map;for(let n of t){let t=n[e];r.set(t,(r.get(t)??0)+1)}n[e]=r};for(let t of e)r(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)=>i(async n=>{let r=await t.makeChunk(n,{tmp:!0}),i=[...await n.$danmakus].sort((e,t)=>e.progress-t.progress||e.ctime.getTime()-t.ctime.getTime());if(e<=0)return await r.upsertDanmakus(i,!1),r;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 i){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 r.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},n=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=n.danuni;if(e?.merge){let{merge:t,...r}=e;if(Object.keys(r).length>0)n={...n,danuni:r};else{let{danuni:e,...t}=n;n=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:n,DMID:r.$UniDB.DMIDGenerator({...e.base,extra:n&&Object.keys(n).length>0?n:null,senderID:a})}})),r});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};
1
+ import{t as e}from"./chunk-DK3Fl9T5.js";import{n as t}from"./core-D1XUOSXa.js";import{danmakusSelectZod as n}from"./core/db/schema.js";import{a as r,i}from"./adapters-n4ZeTSYX.js";import{t as a}from"./isSame-MiM4wHvK.js";const o=r(e=>e.length),s=({include:e,exclude:n}={})=>i(async r=>{e||=[],n||=[];let i=t=>e?.includes(t)||!n?.includes(t),a=await t.makeChunk(r,{tmp:!0});return await a.upsertDanmakus((await r.$danmakus).map(e=>{if(!e.extra)return e;let t={...e,mode:`Top`,senderID:`compat[bot]@dan-any`};if(i(`danuni`)&&e.extra?.danuni){let n=e.extra.danuni;n.merge&&(t.content=`${t.content} x${n.merge.count}`)}else if(i(`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});n.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=e=>{let r=new Map;for(let n of t){let t=n[e];r.set(t,(r.get(t)??0)+1)}n[e]=r};for(let t of e)r(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)=>i(async n=>{let r=await t.makeChunk(n,{tmp:!0}),i=[...await n.$danmakus].sort((e,t)=>e.progress-t.progress||e.ctime.getTime()-t.ctime.getTime());if(e<=0)return await r.upsertDanmakus(i,!1),r;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 i){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 r.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},n=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=n.danuni;if(e?.merge){let{merge:t,...r}=e;if(Object.keys(r).length>0)n={...n,danuni:r};else{let{danuni:e,...t}=n;n=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:n,DMID:r.$UniDB.DMIDGenerator({...e.base,extra:n&&Object.keys(n).length>0?n:null,senderID:a})}})),r});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.js.map
@@ -1,5 +1,5 @@
1
1
  import { t as Simplify } from "./simplify-d7VEIjlJ.js";
2
- import { t as Extra } from "./dm-extra-6EjI8V-C.js";
2
+ import { t as Extra } from "./dm-extra--BY805J3.js";
3
3
  import { z } from "zod";
4
4
  import * as t from "drizzle-orm/pg-core";
5
5
 
@@ -1551,4 +1551,4 @@ declare const DMAttrSchema: z.ZodEnum<{
1551
1551
  }>;
1552
1552
  //#endregion
1553
1553
  export { poolEnum as _, baseRelations as a, chunks as c, danmakusInsertZod as d, danmakusSelectZod as f, onConflictDoUpdateSet as g, onConflictDoUpdate as h, PoolSchema as i, chunksZod as l, modeEnum as m, DanmakusInsert as n, chunk2danmakus as o, dmAttrEnum as p, ModeSchema as r, chunk2danmakusZod as s, DMAttrSchema as t, danmakus as u, relations as v };
1554
- //# sourceMappingURL=schema-D44OKqTj.d.ts.map
1554
+ //# sourceMappingURL=schema-B08Jk3HR.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-D44OKqTj.d.ts","names":[],"sources":["../src/core/db/schema.ts"],"mappings":"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"}
1
+ {"version":3,"file":"schema-B08Jk3HR.d.ts","names":[],"sources":["../src/core/db/schema.ts"],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Tt as Promisable, X as InitedUniDB, et as UniChunk, n as Metadata, t as Adapter, ut as UniDMObj } from "./index-B0rdTeW8.js";
2
- import { i as PoolSchema, r as ModeSchema, t as DMAttrSchema } from "./schema-D44OKqTj.js";
1
+ import { Tt as Promisable, X as InitedUniDB, et as UniChunk, n as Metadata, t as Adapter, ut as UniDMObj } from "./index-DPxMOW6E.js";
2
+ import { i as PoolSchema, r as ModeSchema, t as DMAttrSchema } from "./schema-B08Jk3HR.js";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/utils/fileParser.d.ts
package/dist/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- import{t as e}from"./chunk-DK3Fl9T5.js";import{n as t}from"./core-BKtvRbLS.js";import{H as n}from"./adapters-BWKFhVcX.js";import{t as r}from"./isSame-BAhY0_yj.js";const i=async(e,n,r)=>{let i=e instanceof t?e:await e.makeChunk({});for(let e of n){if(e.check?.body){let t=await e.check.body(r);if(t!==null)return i.delete(),t}if(e.check?.adapter){let t=await e.check.adapter(i,r);if(t!==null)return t}}return i.delete(),null},a=(e,t)=>{let n=[];for(let[r,i]of e)if(r.check?.fn){if(r.check.fn(t)){n.push([r,i]);continue}}else{if(t.includes(r.type))return[[r,i]];r.ext.some(e=>t.endsWith(e))&&n.push([r,i])}return n};async function o(e,n,r,o){let s=e instanceof t?e:await e.makeChunk({});return r instanceof File?i(s,a(n,r.name).map(([e])=>e),r):i(s,a(n,r).map(([e])=>e),o)}var s=e({WildcardAdapterUtil:()=>o,WildcardBodyAdapterUtil:()=>i,WildcardFnAdapterUtil:()=>a,fileParser:()=>n,isSame:()=>r});export{o as WildcardAdapterUtil,i as WildcardBodyAdapterUtil,a as WildcardFnAdapterUtil,n as fileParser,r as isSame,s as t};
1
+ import{t as e}from"./chunk-DK3Fl9T5.js";import{n as t}from"./core-D1XUOSXa.js";import{H as n}from"./adapters-n4ZeTSYX.js";import{t as r}from"./isSame-MiM4wHvK.js";const i=async(e,n,r)=>{let i=e instanceof t?e:await e.makeChunk({});for(let e of n){if(e.check?.body){let t=await e.check.body(r);if(t!==null)return i.delete(),t}if(e.check?.adapter){let t=await e.check.adapter(i,r);if(t!==null)return t}}return i.delete(),null},a=(e,t)=>{let n=[];for(let[r,i]of e)if(r.check?.fn){if(r.check.fn(t)){n.push([r,i]);continue}}else{if(t.includes(r.type))return[[r,i]];r.ext.some(e=>t.endsWith(e))&&n.push([r,i])}return n};async function o(e,n,r,o){let s=e instanceof t?e:await e.makeChunk({});return r instanceof File?i(s,a(n,r.name).map(([e])=>e),r):i(s,a(n,r).map(([e])=>e),o)}var s=e({WildcardAdapterUtil:()=>o,WildcardBodyAdapterUtil:()=>i,WildcardFnAdapterUtil:()=>a,fileParser:()=>n,isSame:()=>r});export{o as WildcardAdapterUtil,i as WildcardBodyAdapterUtil,a as WildcardFnAdapterUtil,n as fileParser,r as isSame,s as t};
2
2
  //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dan-uni/dan-any",
3
- "version": "2.2.4",
3
+ "version": "2.2.5",
4
4
  "description": "A danmaku transformer lib, supporting danmaku from different platforms.",
5
5
  "keywords": [
6
6
  "bangumi",
@@ -52,7 +52,7 @@
52
52
  "@noble/hashes": "^2.2.0",
53
53
  "drizzle-orm": "^1.0.0-rc.4-5d5b77c",
54
54
  "fast-xml-builder": "^1.2.0",
55
- "fast-xml-parser": "^5.8.0",
55
+ "fast-xml-parser": "^5.9.0",
56
56
  "json-bigint": "^1.0.0",
57
57
  "zod": "^4.4.3"
58
58
  },
@@ -62,8 +62,8 @@
62
62
  "@bufbuild/protoc-gen-es": "^2.12.0",
63
63
  "@types/json-bigint": "^1.0.4",
64
64
  "@types/node": "^25.9.3",
65
- "@typescript/native-preview": "^7.0.0-dev.20260611.2",
66
- "@vitest/ui": "^4.1.8",
65
+ "@typescript/native-preview": "^7.0.0-dev.20260616.1",
66
+ "@vitest/ui": "^4.1.9",
67
67
  "bumpp": "^11.1.0",
68
68
  "bun-types": "^1.3.14",
69
69
  "drizzle-kit": "^1.0.0-rc.4-ca0f029",