{"_id":"@dan-uni/dan-any-ext-ass","_rev":"7-477c0c429dd6d59f4c0db80b2297fbe4","name":"@dan-uni/dan-any-ext-ass","dist-tags":{"latest":"2.2.3"},"versions":{"0.0.1":{"name":"@dan-uni/dan-any-ext-ass","version":"0.0.1","keywords":["oidc","trusted-publishing","setup"],"_id":"@dan-uni/dan-any-ext-ass@0.0.1","maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"dist":{"shasum":"66d1e3f294798cbb4fe1793ee5c041f680dfa9af","tarball":"https://registry.npmjs.org/@dan-uni/dan-any-ext-ass/-/dan-any-ext-ass-0.0.1.tgz","fileCount":2,"integrity":"sha512-W0OG1CxqG+ZRLlCpQG3srUmSBsnT5dRc9jezPcZkXNkjEWCzEKHn/ZkyeTFu19jORzTVnZfI3IH0PTdJOBoYww==","signatures":[{"sig":"MEUCIQDfb8LK5Z9OPv1j0qgW4DZVAkaQO3X2JZ3LGkvBc6GuKAIgJ5Gb3PPvblQtHhxCtQc5J9EH/ziZdOydDWbrCc/MFGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2059},"_npmUser":{"name":"dan-uni","email":"npm@rinne.in"},"_npmVersion":"11.13.0","description":"OIDC trusted publishing setup package for @dan-uni/dan-any-ext-ass","directories":{},"_nodeVersion":"26.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dan-any-ext-ass_0.0.1_1779267088146_0.5856786366724882","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@dan-uni/dan-any-ext-ass","version":"2.0.0","keywords":["ass","bangumi","biliy","danmaku"],"author":{"name":"rinne"},"license":"LGPL-3.0-or-later","_id":"@dan-uni/dan-any-ext-ass@2.0.0","maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"homepage":"https://github.com/ani-uni/dan-any-ext-ass#readme","bugs":{"url":"https://github.com/ani-uni/dan-any-ext-ass/issues"},"dist":{"shasum":"2240ee42d53e269cb8989811ce889eb433c60560","tarball":"https://registry.npmjs.org/@dan-uni/dan-any-ext-ass/-/dan-any-ext-ass-2.0.0.tgz","fileCount":6,"integrity":"sha512-CXYeRzdqJKRF7mOdT/14JUsG4ViqTCZKJw+NgtOZkHhjcTM1qXWlT5bVCf9tMYouKpWESbd1ZykwD131b9Rs3Q==","signatures":[{"sig":"MEUCICv4EBeSndE81TMCWQnRsFG1jpN+iDv6DQN0OXRX23oNAiEAhpwscAClBr4aZqSytu/joARN+l7Fon8QCuDfvuRnmUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dan-uni%2fdan-any-ext-ass@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":85900},"type":"module","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"d2e51528f6371dc367b95023556cb2355b92934e","scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","check":"vp check","prepare":"vp config","prepublishOnly":"vp run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a857c39-e967-41fe-b447-5d28be27ee8f"}},"overrides":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"npm:@voidzero-dev/vite-plus-test@latest"},"repository":{"url":"git+https://github.com/ani-uni/dan-any-ext-ass.git","type":"git"},"_npmVersion":"11.13.0","description":"Ass extension for dan-any, a danmaku transformer lib, based on biliy.","directories":{},"_nodeVersion":"26.1.0","dependencies":{"base16384":"^1.0.0","@dan-uni/dan-any":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"bumpp":"^11.1.0","canvas":"^3.2.3","vite-plus":"^0.1.21","typescript":"^6.0.3","@types/node":"^25.9.0","@typescript/native-preview":"7.0.0-dev.20260509.2"},"inlinedDependencies":{"canvas":"3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/dan-any-ext-ass_2.0.0_1779267285812_0.3015371734611867","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@dan-uni/dan-any-ext-ass","version":"2.0.1","keywords":["ass","bangumi","biliy","danmaku"],"author":{"name":"rinne"},"license":"MIT","_id":"@dan-uni/dan-any-ext-ass@2.0.1","maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"homepage":"https://github.com/ani-uni/dan-any-ext-ass#readme","bugs":{"url":"https://github.com/ani-uni/dan-any-ext-ass/issues"},"dist":{"shasum":"da8ef5c60ae5447be5d25a8e7b90c1bb0783d8da","tarball":"https://registry.npmjs.org/@dan-uni/dan-any-ext-ass/-/dan-any-ext-ass-2.0.1.tgz","fileCount":6,"integrity":"sha512-3JmRzsGs/uTa9tYn8dX83kSFMGSPXZxvNLkscCviCPcQREWEDb1k1S032VFc64VEAllzO3A+wD8AZRdRhXpjLQ==","signatures":[{"sig":"MEUCIQD9J9CEFxt0chOdfv114t4rZiorKDgt3sOTm6cUHvo4cgIgRf9UtDTkYd2xINVAWfq9Qj34dvkwC9MkpgEl63CTblw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dan-uni%2fdan-any-ext-ass@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86013},"type":"module","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"3b486d1dd1c66cbef23f08969c65e0e704ac6841","scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","check":"vp check","prepare":"vp config","prepublishOnly":"vp run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a857c39-e967-41fe-b447-5d28be27ee8f"}},"overrides":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"npm:@voidzero-dev/vite-plus-test@latest"},"repository":{"url":"git+https://github.com/ani-uni/dan-any-ext-ass.git","type":"git"},"_npmVersion":"11.13.0","description":"Ass extension for dan-any, a danmaku transformer lib, based on biliy.","directories":{},"_nodeVersion":"26.1.0","dependencies":{"base16384":"^1.0.0","@dan-uni/dan-any":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"bumpp":"^11.1.0","canvas":"^3.2.3","vite-plus":"^0.1.21","typescript":"^6.0.3","@types/node":"^25.9.0","@typescript/native-preview":"7.0.0-dev.20260509.2"},"inlinedDependencies":{"canvas":"3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/dan-any-ext-ass_2.0.1_1779268992713_0.30408525197761826","host":"s3://npm-registry-packages-npm-production"}},"2.0.7":{"name":"@dan-uni/dan-any-ext-ass","version":"2.0.7","keywords":["ass","bangumi","biliy","danmaku"],"author":{"name":"rinne"},"license":"MIT","_id":"@dan-uni/dan-any-ext-ass@2.0.7","maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"homepage":"https://github.com/ani-uni/dan-any-ext-ass#readme","bugs":{"url":"https://github.com/ani-uni/dan-any-ext-ass/issues"},"dist":{"shasum":"5ac280e1a20959beab2b2393e232c61f3fdcfe75","tarball":"https://registry.npmjs.org/@dan-uni/dan-any-ext-ass/-/dan-any-ext-ass-2.0.7.tgz","fileCount":7,"integrity":"sha512-xp8xHk6prnj1nKaIXtEsW8v1x2QRgzcnBY7DKdRMRE6a5tLwSZbEaQrlijpWEpac5Qqtjb9XkNfkh8jBAmtnPg==","signatures":[{"sig":"MEQCIEgGt35IXq7vzsEz2Q3ysGDhnjP9JfvaEDBC1V7WtkgJAiASj+/QhGZkoV7D94vCzs7hagVM1ROwuyTwYxemfocz1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dan-uni%2fdan-any-ext-ass@2.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":87568},"type":"module","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"0b02411a8e15904b21028ba3da515d6dffb33e1b","scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","check":"vp check","prepare":"vp config","prepublishOnly":"vp run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a857c39-e967-41fe-b447-5d28be27ee8f"}},"overrides":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"npm:@voidzero-dev/vite-plus-test@latest"},"repository":{"url":"git+https://github.com/ani-uni/dan-any-ext-ass.git","type":"git"},"_npmVersion":"11.13.0","description":"Ass extension for dan-any, a danmaku transformer lib, based on biliy.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"base16384":"^1.0.0","@dan-uni/dan-any":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"bumpp":"^11.1.0","canvas":"^3.2.3","vite-plus":"^0.1.21","typescript":"^6.0.3","@types/node":"^25.9.0","@typescript/native-preview":"7.0.0-dev.20260509.2"},"inlinedDependencies":{"canvas":"3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/dan-any-ext-ass_2.0.7_1779464592856_0.9828813520248165","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@dan-uni/dan-any-ext-ass","version":"2.1.0","keywords":["ass","bangumi","biliy","danmaku"],"author":{"name":"rinne"},"license":"MIT","_id":"@dan-uni/dan-any-ext-ass@2.1.0","maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"homepage":"https://github.com/ani-uni/dan-any-ext-ass#readme","bugs":{"url":"https://github.com/ani-uni/dan-any-ext-ass/issues"},"dist":{"shasum":"659cd459e84e1f9936c653b051e2a75d4ee7fe86","tarball":"https://registry.npmjs.org/@dan-uni/dan-any-ext-ass/-/dan-any-ext-ass-2.1.0.tgz","fileCount":7,"integrity":"sha512-P8qMR9S0PnAWTLmnJhujo2QA/r3OrruXy95dqvpbbHFcYpurR82fwfMCX3Qs8P2hb0zW9FqStZptvBFvWJ54bw==","signatures":[{"sig":"MEYCIQCkRaLqPvyLm+Xaqopc7X1p0yBtVT7K64b/zHEezQXWXgIhALrrsSzc6M5xRoVZSpYOtHAwLMlx5Mjpw4y9m1cskVkk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dan-uni%2fdan-any-ext-ass@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":88482},"type":"module","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"fb57a609c5029a7bcbfb9fb081d7499476a2ba1c","scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","check":"vp check","prepare":"vp config","prepublishOnly":"vp run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a857c39-e967-41fe-b447-5d28be27ee8f"}},"overrides":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"npm:@voidzero-dev/vite-plus-test@latest"},"repository":{"url":"git+https://github.com/ani-uni/dan-any-ext-ass.git","type":"git"},"_npmVersion":"11.13.0","description":"Ass extension for dan-any, a danmaku transformer lib, based on biliy.","directories":{},"_nodeVersion":"26.2.0","dependencies":{"base16384":"^1.0.0","@dan-uni/dan-any":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"bumpp":"^11.1.0","canvas":"^3.2.3","vite-plus":"^0.1.21","typescript":"^6.0.3","@types/node":"^25.9.0","@typescript/native-preview":"7.0.0-dev.20260509.2"},"inlinedDependencies":{"canvas":"3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/dan-any-ext-ass_2.1.0_1779554354329_0.5413278513338364","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@dan-uni/dan-any-ext-ass","version":"2.2.1","keywords":["ass","bangumi","biliy","danmaku"],"author":{"name":"rinne"},"license":"MIT","_id":"@dan-uni/dan-any-ext-ass@2.2.1","maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"homepage":"https://github.com/ani-uni/dan-any-ext-ass#readme","bugs":{"url":"https://github.com/ani-uni/dan-any-ext-ass/issues"},"dist":{"shasum":"9675cd8b909d8d990d0384dee1dc661b97b4f95b","tarball":"https://registry.npmjs.org/@dan-uni/dan-any-ext-ass/-/dan-any-ext-ass-2.2.1.tgz","fileCount":7,"integrity":"sha512-gMtXUuBK7EGbAJW6+s6lk9nyGZpzUXScoZSfVsBEZ00DXq9LfW3rYbrPDvm0sfNBmkG1WZdUaigdShVDNKFh7w==","signatures":[{"sig":"MEQCIGoG3XjaRaVt+WYna3zp6FCUZTCZOC01Z3svqThVKSTmAiBoXTtQ8z2t9l7pCGNnH5Myt6yk43iDBiRd6W0uikMvMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dan-uni%2fdan-any-ext-ass@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":87822},"type":"module","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"gitHead":"38554de1a50baf749eecee21d4e176d0912b547e","scripts":{"dev":"vp pack --watch","test":"vp test","build":"vp pack","check":"vp check","prepare":"vp config","prepublishOnly":"vp run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a857c39-e967-41fe-b447-5d28be27ee8f"}},"overrides":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"npm:@voidzero-dev/vite-plus-test@latest"},"repository":{"url":"git+https://github.com/ani-uni/dan-any-ext-ass.git","type":"git"},"_npmVersion":"11.16.0","description":"Ass extension for dan-any, a danmaku transformer lib, based on biliy.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"base16384":"^1.0.0","@dan-uni/dan-any":"^2.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"bumpp":"^11.1.0","canvas":"^3.2.3","vite-plus":"^0.1.24","typescript":"^6.0.3","@types/node":"^25.9.1","@typescript/native-preview":"7.0.0-dev.20260509.2"},"inlinedDependencies":{"canvas":"3.2.3"},"_npmOperationalInternal":{"tmp":"tmp/dan-any-ext-ass_2.2.1_1780678024486_0.9401470520068966","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@dan-uni/dan-any-ext-ass","version":"2.2.3","description":"Ass extension for dan-any, a danmaku transformer lib, based on biliy.","keywords":["ass","bangumi","biliy","danmaku"],"homepage":"https://github.com/ani-uni/dan-any-ext-ass#readme","bugs":{"url":"https://github.com/ani-uni/dan-any-ext-ass/issues"},"license":"MIT","author":{"name":"rinne"},"repository":{"type":"git","url":"git+https://github.com/ani-uni/dan-any-ext-ass.git"},"type":"module","exports":{".":"./dist/index.js","./package.json":"./package.json"},"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","dev":"vp pack --watch","test":"vp test","check":"vp check","prepublishOnly":"vp run build","prepare":"vp config"},"dependencies":{"@bokuweb/zstd-wasm":"^0.0.27","@dan-uni/dan-any":"^2.2.3","base16384":"^1.0.0","brotli":"^1.3.3","pako":"^2.1.0"},"devDependencies":{"@arethetypeswrong/core":"^0.18.3","@edge-runtime/vm":"^5.0.0","@types/brotli":"^1.3.5","@types/node":"^25.9.3","@types/pako":"^2.0.4","@typescript/native-preview":"7.0.0-dev.20260509.2","bumpp":"^11.1.0","canvas":"^3.2.3","typescript":"^6.0.3","vite-plus":"^0.1.24"},"overrides":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vitest":"npm:@voidzero-dev/vite-plus-test@latest"},"packageManager":"bun@1.3.14","inlinedDependencies":{"canvas":"3.2.3"},"gitHead":"a6779937a01ac6096df9f984d0d37b00aea1dbf9","_id":"@dan-uni/dan-any-ext-ass@2.2.3","_nodeVersion":"26.3.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-uMh6wDgPa2UsXqVfW+55IZCyD8WZwXmvqb8OpXJ+2iVkf9Drf987OicLHrfw5lJYsye9iS0PSbkK10lFs+x0xw==","shasum":"61e47a5ee4528551a5e4214b4637f5925d83394c","tarball":"https://registry.npmjs.org/@dan-uni/dan-any-ext-ass/-/dan-any-ext-ass-2.2.3.tgz","fileCount":7,"unpackedSize":88850,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dan-uni%2fdan-any-ext-ass@2.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD7gns0Znlqmr2I1hf5AODTIavLNoDvV4WmhBMl/jnCrAIhAMb1TWFq8Mict6pfbsEn6u6An+V6e56K15nJrlnyP+Hd"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4a857c39-e967-41fe-b447-5d28be27ee8f"}},"directories":{},"maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dan-any-ext-ass_2.2.3_1781272336252_0.4432107697966323"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-20T08:51:27.968Z","modified":"2026-06-12T13:52:16.808Z","0.0.1":"2026-05-20T08:51:28.267Z","2.0.0":"2026-05-20T08:54:45.965Z","2.0.1":"2026-05-20T09:23:12.874Z","2.0.7":"2026-05-22T15:43:12.988Z","2.1.0":"2026-05-23T16:39:14.464Z","2.2.1":"2026-06-05T16:47:04.646Z","2.2.3":"2026-06-12T13:52:16.434Z"},"bugs":{"url":"https://github.com/ani-uni/dan-any-ext-ass/issues"},"author":{"name":"rinne"},"license":"MIT","homepage":"https://github.com/ani-uni/dan-any-ext-ass#readme","keywords":["ass","bangumi","biliy","danmaku"],"repository":{"type":"git","url":"git+https://github.com/ani-uni/dan-any-ext-ass.git"},"description":"Ass extension for dan-any, a danmaku transformer lib, based on biliy.","maintainers":[{"name":"dan-uni","email":"npm@rinne.in"}],"readme":"# @dan-uni/dan-any-ext-ass\n\n`@dan-uni/dan-any-ext-ass` 是 `dan-any` 的 ASS 扩展，负责将弹幕数据生成 ASS 字幕文件，并提供与 `dan-any` 插件/适配器的集成点。\n\n主要功能\n\n- 从 `UniChunk` 生成标准 ASS 字幕文本\n- 提供 `AssAdapter` 用于从带有 raw 信息的 ASS 还原为 `UniChunk`\n- 提供 `AssTransformerLikePluginConfigurator`，以 plugin 形式将生成器注入到 `dan-any` 的处理流水中\n\n`AssAdapter` 支持还原由 `dan-any v1 / v2` / `biliy` 生成的 ASS：\n\n- v2：从 `raw.new` 读取并恢复为 `DanuniPbAdapter`\n- v1/biliy：从 `raw.old` 读取并恢复为 `DanuniJsonAdapter`\n\n快速开始\n\n1. 安装依赖：\n\n```bash\nvp install\n```\n\n2. 运行测试：\n\n```bash\nvp test\n```\n\n3. 打包构建：\n\n```bash\nvp pack\n```\n\n使用示例\n\n### 1) 从 `UniChunk` 生成 ASS\n\n```ts\nimport fs from \"node:fs\";\nimport { AssTransformerLikePluginConfigurator } from \"@dan-uni/dan-any-ext-ass\";\n\n// 你需要先准备一个 50x50 的 2D canvas 上下文\n// 不同环境的获取方式见下方「Canvas 上下文获取方式」\nconst assText = await chunk.plugin(\n  AssTransformerLikePluginConfigurator(canvasCtx, {\n    filename: \"video.xml\",\n    title: \"示例\",\n  }),\n);\nfs.writeFileSync(\"output.ass\", assText, \"utf-8\");\n```\n\n### 2) 从 ASS 还原为 `UniChunk`\n\n```ts\nimport { AssAdapter } from \"@dan-uni/dan-any-ext-ass\";\n\n// assText 是由 dan-any v1 / v2 生成的、包含 raw 信息的 ASS 文本\nconst restoredChunk = await udb.import(AssAdapter(assText));\n```\n\n### 3) Canvas 上下文获取方式\n\n`generateASS` / `AssTransformerLikePluginConfigurator` 需要一个 50x50 的 2D Canvas 上下文 `CanvasCtx`。\n下面是常见环境的获取方式：\n\n```ts\n// Node.js + canvas\nimport { createCanvas } from \"canvas\";\n\nconst canvas = createCanvas(50, 50);\nconst canvasCtx = canvas.getContext(\"2d\");\n```\n\n```ts\n// Node.js + Fabric.js\nimport { StaticCanvas } from \"fabric/node\";\n\nconst canvasCtx = new StaticCanvas(undefined, { width: 50, height: 50 }).getContext();\n```\n\n```ts\n// Browser + Native Canvas\nconst canvas = document.createElement(\"canvas\");\ncanvas.width = 50;\ncanvas.height = 50;\n\nconst canvasCtx = canvas.getContext(\"2d\");\n```\n\n```ts\n// Browser + Fabric.js\nimport { Canvas } from \"fabric\";\n\nconst canvasCtx = new Canvas(\"canvas\", { width: 50, height: 50 }).getContext();\n```\n\nAPI 概览\n\n- `AssAdapter(ass: string)` — 从带 raw 信息的 ASS 还原并返回 `UniChunk`，兼容 `dan-any v1 / v2`\n- `AssTransformerLikePluginConfigurator(canvasCtx, options?)` — 返回一个 plugin configurator，调用后会把 `UniChunk` 转换成 ASS 文本\n- `generateASS(uchunk, options, canvasCtx)` — 底层生成函数（可直接调用）\n- `parseAssRawField(ass)` — 从 ASS 文本解析出内嵌的 raw 信息并还原为弹幕记录（若存在）\n\n配置与扩展\n\n- 可通过传入 `options` 自定义输出文件名、ASS 的 Script Info 标题、字幕样式等（参见源码 `ass-gen/types.ts` 与 `config.ts`）\n- `CanvasCtx` 的类型定义与环境示例可直接参考源码 `src/ass-gen/types.ts`\n\n许可与致谢\n\n- 本项目许可：MIT\n- 依赖于 `dan-any` 核心库以完成弹幕数据结构与转换\n- 使用了[justorez/biliy](https://github.com/justorez/biliy)的代码(MIT LICENSE)，并使用了AI进行修改与修复，同时支持了更优的Raw还原功能。\n\n贡献\n\n- 欢迎提交 issues / PR。提交前请运行 `vp check` 与 `vp test`。\n\n更多\n\n- 源码与示例请查看 `src/ass-gen`、`src/ass`、`src/util` 子目录。\n","readmeFilename":"README.md"}