@seer-pet-anim/swf-rebuild 0.1.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.
- package/LICENSE +21 -0
- package/README.md +78 -0
- package/dist/abc.d.ts +14 -0
- package/dist/abc.d.ts.map +1 -0
- package/dist/abc.js +258 -0
- package/dist/abc.js.map +1 -0
- package/dist/binary.d.ts +32 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +129 -0
- package/dist/binary.js.map +1 -0
- package/dist/browser.d.ts +9 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +27 -0
- package/dist/browser.js.map +1 -0
- package/dist/buffer-setup.d.ts +2 -0
- package/dist/buffer-setup.d.ts.map +1 -0
- package/dist/buffer-setup.js +5 -0
- package/dist/buffer-setup.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +73 -0
- package/dist/cli.js.map +1 -0
- package/dist/frames.d.ts +12 -0
- package/dist/frames.d.ts.map +1 -0
- package/dist/frames.js +104 -0
- package/dist/frames.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/material.d.ts +11 -0
- package/dist/material.d.ts.map +1 -0
- package/dist/material.js +40 -0
- package/dist/material.js.map +1 -0
- package/dist/rebuild-core.d.ts +15 -0
- package/dist/rebuild-core.d.ts.map +1 -0
- package/dist/rebuild-core.js +220 -0
- package/dist/rebuild-core.js.map +1 -0
- package/dist/rebuild.d.ts +8 -0
- package/dist/rebuild.d.ts.map +1 -0
- package/dist/rebuild.js +22 -0
- package/dist/rebuild.js.map +1 -0
- package/dist/resources.d.ts +27 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +114 -0
- package/dist/resources.js.map +1 -0
- package/dist/source.d.ts +29 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +259 -0
- package/dist/source.js.map +1 -0
- package/dist/swf.d.ts +42 -0
- package/dist/swf.d.ts.map +1 -0
- package/dist/swf.js +290 -0
- package/dist/swf.js.map +1 -0
- package/dist/textures.d.ts +6 -0
- package/dist/textures.d.ts.map +1 -0
- package/dist/textures.js +38 -0
- package/dist/textures.js.map +1 -0
- package/dist/types.d.ts +66 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/unity-clip.d.ts +3 -0
- package/dist/unity-clip.d.ts.map +1 -0
- package/dist/unity-clip.js +64 -0
- package/dist/unity-clip.js.map +1 -0
- package/dist/unity.d.ts +4 -0
- package/dist/unity.d.ts.map +1 -0
- package/dist/unity.js +41 -0
- package/dist/unity.js.map +1 -0
- package/package.json +60 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nattsu39
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# `@seer-pet-anim/swf-rebuild`
|
|
2
|
+
|
|
3
|
+
从 Unity 动画资源重建精灵 SWF 动画。该工具读取原始 SWF、对应的动画 bundle 和共享材质 bundle,生成可供 Flash 端使用的 SWF。
|
|
4
|
+
|
|
5
|
+
## 准备
|
|
6
|
+
|
|
7
|
+
- Node.js 23.5 或更新版本。
|
|
8
|
+
- 同一只精灵对应的原始 SWF 和 Unity 动画 bundle(通常名为 `ppets_<编号>.bundle`)。
|
|
9
|
+
- 该 bundle 所引用的 `shared-materials.bundle`。
|
|
10
|
+
|
|
11
|
+
工具会从文件内容识别动作和坐标,但不能证明 SWF 与两个 bundle 一定属于同一只精灵。请使用配套资源。当前只支持符合本工具预期结构的资源;不支持的结构会报错。
|
|
12
|
+
|
|
13
|
+
## 使用方式
|
|
14
|
+
|
|
15
|
+
### 预览器网页
|
|
16
|
+
|
|
17
|
+
单宠布局的控制栏提供「导出 SWF」按钮与缩放倍率输入框。导出当前完整 bundle 的动画,倍率支持 `1`、`0.5`、`0.25`,仅影响生成的贴图分辨率,保持动画坐标和尺寸。切换 bundle 时,文件超过 15 MB(15 × 1024 × 1024 字节)默认使用 `0.5`,其他文件默认使用 `1`,可以手动修改。
|
|
18
|
+
|
|
19
|
+
导出需要原始 bundle 和已加载的共享材质包,并按精灵编号从官网获取原始 SWF。Spine 动画与缺少原始 bundle 的预转换包禁用该控件;战斗布局不显示该控件。转换在独立 Worker 内执行,切换精灵或离开单宠布局会取消导出并释放 Worker。
|
|
20
|
+
|
|
21
|
+
浏览器集成入口为 `@seer-pet-anim/swf-rebuild/browser`,提供 `loadUnityClip` 和异步 `rebuildPet`。浏览器使用 fflate 压缩,Node 入口保留原有 zlib 输出;两者共用动画重建逻辑。只需要完整 SWF 时,可传入 `includePreviews: false`,省去单独的动作预览文件。
|
|
22
|
+
|
|
23
|
+
### 命令行
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
npx @seer-pet-anim/swf-rebuild@latest \
|
|
27
|
+
--source path/to/pet.swf \
|
|
28
|
+
--bundle path/to/ppets_1234.bundle \
|
|
29
|
+
--materials path/to/shared-materials.bundle \
|
|
30
|
+
--out out/pet-rebuilt.swf \
|
|
31
|
+
--previews out/previews
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Windows PowerShell 可将命令写在一行。`--previews` 可省略;查看所有参数可运行:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
npx @seer-pet-anim/swf-rebuild@latest --help
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
测试过程中发现 Flash 端无法加载部分尺寸过高的动画资源,遇到这种情况时可尝试降低新生成贴图的分辨率:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
npx @seer-pet-anim/swf-rebuild@latest --source path/to/pet.swf --bundle path/to/ppets_1234.bundle --materials path/to/shared-materials.bundle --out out/pet-rebuilt-half.swf --texture-scale 0.5
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`--texture-scale` 可设为 `1`(默认)、`0.5` 或 `0.25`。它只缩小重建时新增的贴图,不改变动画帧和几何;较低分辨率会降低图像细节。
|
|
47
|
+
|
|
48
|
+
## 输出文件
|
|
49
|
+
|
|
50
|
+
- 指定的 `.swf`:重建后的动画,保留游戏使用的动作接口。
|
|
51
|
+
- `<输出文件>.swf.json`:处理报告,包含识别到的动作、帧数、贴图和遮罩统计,以及输入文件信息。
|
|
52
|
+
- `--previews` 目录中的 SWF(若指定):每个动作一个无脚本循环预览,便于独立查看动作内容。
|
|
53
|
+
|
|
54
|
+
CLI 不会覆盖已有输出文件。再次运行时请指定新的 `.swf` 路径;报告文件和预览文件也不能与已有文件重名。
|
|
55
|
+
|
|
56
|
+
## 在代码中使用
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
60
|
+
import { loadUnityClip, rebuildPet } from "@seer-pet-anim/swf-rebuild";
|
|
61
|
+
|
|
62
|
+
const clip = await loadUnityClip(
|
|
63
|
+
await readFile("ppets_1234.bundle"),
|
|
64
|
+
await readFile("shared-materials.bundle"),
|
|
65
|
+
);
|
|
66
|
+
const result = rebuildPet(await readFile("pet.swf"), clip, {
|
|
67
|
+
textureScale: 1,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
await writeFile("pet-rebuilt.swf", result.swf, { flag: "wx" });
|
|
71
|
+
console.log(result.report.actions);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`loadUnityClip` 解析动画 bundle 和共享材质;`rebuildPet` 返回重建后的 `swf`、动作 `previews` 和 `report`。`textureScale` 是可选项,允许值与 CLI 相同。API 详情见 [`src/index.ts`](src/index.ts) 及导出的类型定义。
|
|
75
|
+
|
|
76
|
+
## 支持范围
|
|
77
|
+
|
|
78
|
+
当前工具针对特定格式的 FlashTools 精灵动画资源,不是通用 SWF 编辑器。SWF 与 bundle 的帧率必须一致;动画需要包含可识别的 `pet` 导出、待机序列和预期的动作包装结构。遇到不支持的材质、遮罩或时间轴结构时,转换会失败并说明原因。
|
package/dist/abc.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
export interface FrameRegistration {
|
|
3
|
+
className: string;
|
|
4
|
+
/** 现有停止、命中和停止处理器对应的零基帧索引。 */
|
|
5
|
+
frames: [number, number, number];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 通过 ABC 表定位构造函数,并在替换帧操作数前验证完整的操作码序列。
|
|
9
|
+
* 较大的操作数使用 pushshort,同时重新计算方法的 code_length。
|
|
10
|
+
* 这里只接受没有分支和异常处理器的桩函数,因此无需调整控制流偏移。
|
|
11
|
+
* 其他方法和常量池均保留原始字节。
|
|
12
|
+
*/
|
|
13
|
+
export declare function patchFrameRegistrations(data: Buffer, registrations: FrameRegistration[]): Buffer;
|
|
14
|
+
//# sourceMappingURL=abc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abc.d.ts","sourceRoot":"","sources":["../src/abc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,iBAAiB,EAAE,GACjC,MAAM,CA+OR"}
|
package/dist/abc.js
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
import { Reader, encodedU30 } from "./binary.js";
|
|
3
|
+
/**
|
|
4
|
+
* 通过 ABC 表定位构造函数,并在替换帧操作数前验证完整的操作码序列。
|
|
5
|
+
* 较大的操作数使用 pushshort,同时重新计算方法的 code_length。
|
|
6
|
+
* 这里只接受没有分支和异常处理器的桩函数,因此无需调整控制流偏移。
|
|
7
|
+
* 其他方法和常量池均保留原始字节。
|
|
8
|
+
*/
|
|
9
|
+
export function patchFrameRegistrations(data, registrations) {
|
|
10
|
+
const reader = new Reader(data);
|
|
11
|
+
const minor = reader.u16();
|
|
12
|
+
const major = reader.u16();
|
|
13
|
+
if (major !== 46 || minor !== 16)
|
|
14
|
+
throw new Error(`Unsupported ABC version ${major}.${minor}`);
|
|
15
|
+
for (let pool = 0; pool < 2; pool++) {
|
|
16
|
+
const count = reader.encoded();
|
|
17
|
+
for (let i = 1; i < count; i++)
|
|
18
|
+
reader.encoded();
|
|
19
|
+
}
|
|
20
|
+
const doubles = reader.encoded();
|
|
21
|
+
reader.take(Math.max(0, doubles - 1) * 8);
|
|
22
|
+
const strings = [""];
|
|
23
|
+
const stringCount = reader.encoded();
|
|
24
|
+
for (let i = 1; i < stringCount; i++)
|
|
25
|
+
strings.push(reader.take(reader.encoded()).toString("utf8"));
|
|
26
|
+
const namespaces = [""];
|
|
27
|
+
const namespaceCount = reader.encoded();
|
|
28
|
+
for (let i = 1; i < namespaceCount; i++) {
|
|
29
|
+
reader.u8();
|
|
30
|
+
namespaces.push(strings[reader.encoded()]);
|
|
31
|
+
}
|
|
32
|
+
const sets = reader.encoded();
|
|
33
|
+
for (let i = 1; i < sets; i++) {
|
|
34
|
+
const count = reader.encoded();
|
|
35
|
+
for (let j = 0; j < count; j++)
|
|
36
|
+
reader.encoded();
|
|
37
|
+
}
|
|
38
|
+
const names = [
|
|
39
|
+
{ local: "", qualified: "" },
|
|
40
|
+
];
|
|
41
|
+
const nameCount = reader.encoded();
|
|
42
|
+
for (let i = 1; i < nameCount; i++) {
|
|
43
|
+
const kind = reader.u8();
|
|
44
|
+
let local = "";
|
|
45
|
+
let namespace = "";
|
|
46
|
+
switch (kind) {
|
|
47
|
+
case 0x07:
|
|
48
|
+
case 0x0d:
|
|
49
|
+
namespace = namespaces[reader.encoded()];
|
|
50
|
+
local = strings[reader.encoded()];
|
|
51
|
+
break;
|
|
52
|
+
case 0x0f:
|
|
53
|
+
case 0x10:
|
|
54
|
+
local = strings[reader.encoded()];
|
|
55
|
+
break;
|
|
56
|
+
case 0x11:
|
|
57
|
+
case 0x12:
|
|
58
|
+
break;
|
|
59
|
+
case 0x09:
|
|
60
|
+
case 0x0e:
|
|
61
|
+
local = strings[reader.encoded()];
|
|
62
|
+
reader.encoded();
|
|
63
|
+
break;
|
|
64
|
+
case 0x1b:
|
|
65
|
+
case 0x1c:
|
|
66
|
+
reader.encoded();
|
|
67
|
+
break;
|
|
68
|
+
case 0x1d: {
|
|
69
|
+
reader.encoded();
|
|
70
|
+
const count = reader.encoded();
|
|
71
|
+
for (let j = 0; j < count; j++)
|
|
72
|
+
reader.encoded();
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
default:
|
|
76
|
+
throw new Error(`Unsupported ABC multiname kind ${kind}`);
|
|
77
|
+
}
|
|
78
|
+
names.push({
|
|
79
|
+
local,
|
|
80
|
+
qualified: namespace ? `${namespace}.${local}` : local,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const methods = reader.encoded();
|
|
84
|
+
for (let i = 0; i < methods; i++) {
|
|
85
|
+
const parameters = reader.encoded();
|
|
86
|
+
reader.encoded();
|
|
87
|
+
for (let j = 0; j < parameters; j++)
|
|
88
|
+
reader.encoded();
|
|
89
|
+
reader.encoded();
|
|
90
|
+
const flags = reader.u8();
|
|
91
|
+
if (flags & 8) {
|
|
92
|
+
const count = reader.encoded();
|
|
93
|
+
for (let j = 0; j < count; j++) {
|
|
94
|
+
reader.encoded();
|
|
95
|
+
reader.u8();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (flags & 128)
|
|
99
|
+
for (let j = 0; j < parameters; j++)
|
|
100
|
+
reader.encoded();
|
|
101
|
+
}
|
|
102
|
+
const metadata = reader.encoded();
|
|
103
|
+
for (let i = 0; i < metadata; i++) {
|
|
104
|
+
reader.encoded();
|
|
105
|
+
const count = reader.encoded();
|
|
106
|
+
for (let j = 0; j < count * 2; j++)
|
|
107
|
+
reader.encoded();
|
|
108
|
+
}
|
|
109
|
+
function traits() {
|
|
110
|
+
const count = reader.encoded();
|
|
111
|
+
for (let i = 0; i < count; i++) {
|
|
112
|
+
reader.encoded();
|
|
113
|
+
const kind = reader.u8();
|
|
114
|
+
switch (kind & 15) {
|
|
115
|
+
case 0:
|
|
116
|
+
case 6:
|
|
117
|
+
reader.encoded();
|
|
118
|
+
reader.encoded();
|
|
119
|
+
if (reader.encoded())
|
|
120
|
+
reader.u8();
|
|
121
|
+
break;
|
|
122
|
+
case 1:
|
|
123
|
+
case 2:
|
|
124
|
+
case 3:
|
|
125
|
+
case 4:
|
|
126
|
+
case 5:
|
|
127
|
+
reader.encoded();
|
|
128
|
+
reader.encoded();
|
|
129
|
+
break;
|
|
130
|
+
default:
|
|
131
|
+
throw new Error(`Unsupported ABC trait ${kind & 15}`);
|
|
132
|
+
}
|
|
133
|
+
if (kind & 64) {
|
|
134
|
+
const entries = reader.encoded();
|
|
135
|
+
for (let j = 0; j < entries; j++)
|
|
136
|
+
reader.encoded();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const targets = new Map(registrations.map((entry) => [entry.className, entry]));
|
|
141
|
+
if (targets.size !== registrations.length)
|
|
142
|
+
throw new Error("Duplicate ABC registration target");
|
|
143
|
+
const constructors = new Map();
|
|
144
|
+
const classes = reader.encoded();
|
|
145
|
+
for (let i = 0; i < classes; i++) {
|
|
146
|
+
const name = names[reader.encoded()]?.qualified;
|
|
147
|
+
reader.encoded();
|
|
148
|
+
if (reader.u8() & 8)
|
|
149
|
+
reader.encoded();
|
|
150
|
+
const interfaces = reader.encoded();
|
|
151
|
+
for (let j = 0; j < interfaces; j++)
|
|
152
|
+
reader.encoded();
|
|
153
|
+
const initializer = reader.encoded();
|
|
154
|
+
const target = targets.get(name);
|
|
155
|
+
if (target)
|
|
156
|
+
constructors.set(initializer, target);
|
|
157
|
+
traits();
|
|
158
|
+
}
|
|
159
|
+
for (let i = 0; i < classes; i++) {
|
|
160
|
+
reader.encoded();
|
|
161
|
+
traits();
|
|
162
|
+
}
|
|
163
|
+
const scripts = reader.encoded();
|
|
164
|
+
for (let i = 0; i < scripts; i++) {
|
|
165
|
+
reader.encoded();
|
|
166
|
+
traits();
|
|
167
|
+
}
|
|
168
|
+
const edits = [];
|
|
169
|
+
const patched = new Set();
|
|
170
|
+
const bodies = reader.encoded();
|
|
171
|
+
for (let i = 0; i < bodies; i++) {
|
|
172
|
+
const method = reader.encoded();
|
|
173
|
+
for (let j = 0; j < 4; j++)
|
|
174
|
+
reader.encoded(); // 操作数栈、局部变量、作用域深度。
|
|
175
|
+
const lengthOffset = reader.position;
|
|
176
|
+
const length = reader.encoded();
|
|
177
|
+
const offset = reader.position;
|
|
178
|
+
const code = new Reader(reader.take(length));
|
|
179
|
+
const target = constructors.get(method);
|
|
180
|
+
if (target) {
|
|
181
|
+
const parts = [];
|
|
182
|
+
let copied = 0;
|
|
183
|
+
const fail = () => {
|
|
184
|
+
throw new Error(`Unexpected constructor in ${target.className}`);
|
|
185
|
+
};
|
|
186
|
+
const opcode = (expected) => {
|
|
187
|
+
if (code.u8() !== expected)
|
|
188
|
+
fail();
|
|
189
|
+
};
|
|
190
|
+
const property = (expected) => {
|
|
191
|
+
if (names[code.encoded()]?.local !== expected)
|
|
192
|
+
fail();
|
|
193
|
+
};
|
|
194
|
+
opcode(0xd0);
|
|
195
|
+
opcode(0x30);
|
|
196
|
+
opcode(0xd0);
|
|
197
|
+
opcode(0x49);
|
|
198
|
+
if (code.encoded() !== 0)
|
|
199
|
+
fail();
|
|
200
|
+
opcode(0x5d);
|
|
201
|
+
property("addFrameScript");
|
|
202
|
+
for (let index = 0; index < 3; index++) {
|
|
203
|
+
const frame = target.frames[index];
|
|
204
|
+
if (!Number.isInteger(frame) || frame < 0 || frame > 32767) {
|
|
205
|
+
throw new Error("This stub patcher supports frame indices 0..32767 only");
|
|
206
|
+
}
|
|
207
|
+
const instruction = code.position;
|
|
208
|
+
opcode(0x24);
|
|
209
|
+
if (code.u8() !== index)
|
|
210
|
+
fail();
|
|
211
|
+
parts.push(code.data.slice(copied, instruction), frame <= 127
|
|
212
|
+
? Buffer.from([0x24, frame])
|
|
213
|
+
: Buffer.concat([Buffer.from([0x25]), encodedU30(frame)]));
|
|
214
|
+
copied = code.position;
|
|
215
|
+
opcode(0xd0);
|
|
216
|
+
opcode(0x66);
|
|
217
|
+
property(`frame${index + 1}`);
|
|
218
|
+
}
|
|
219
|
+
opcode(0x4f);
|
|
220
|
+
property("addFrameScript");
|
|
221
|
+
if (code.encoded() !== 6)
|
|
222
|
+
fail();
|
|
223
|
+
opcode(0x47);
|
|
224
|
+
if (code.position !== length || patched.has(target.className))
|
|
225
|
+
fail();
|
|
226
|
+
parts.push(code.data.slice(copied));
|
|
227
|
+
const replacement = Buffer.concat(parts);
|
|
228
|
+
edits.push({
|
|
229
|
+
start: lengthOffset,
|
|
230
|
+
end: offset + length,
|
|
231
|
+
replacement: Buffer.concat([
|
|
232
|
+
encodedU30(replacement.length),
|
|
233
|
+
replacement,
|
|
234
|
+
]),
|
|
235
|
+
});
|
|
236
|
+
patched.add(target.className);
|
|
237
|
+
}
|
|
238
|
+
const exceptions = reader.encoded();
|
|
239
|
+
if (target && exceptions)
|
|
240
|
+
throw new Error("Stub constructors must not have exception handlers");
|
|
241
|
+
for (let j = 0; j < exceptions * 5; j++)
|
|
242
|
+
reader.encoded();
|
|
243
|
+
traits();
|
|
244
|
+
}
|
|
245
|
+
if (reader.position !== data.length)
|
|
246
|
+
throw new Error("Trailing ABC bytes");
|
|
247
|
+
if (patched.size !== targets.size)
|
|
248
|
+
throw new Error("Not all requested ABC constructors were found");
|
|
249
|
+
const parts = [];
|
|
250
|
+
let copied = 0;
|
|
251
|
+
for (const edit of edits) {
|
|
252
|
+
parts.push(data.slice(copied, edit.start), edit.replacement);
|
|
253
|
+
copied = edit.end;
|
|
254
|
+
}
|
|
255
|
+
parts.push(data.slice(copied));
|
|
256
|
+
return Buffer.concat(parts);
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=abc.js.map
|
package/dist/abc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abc.js","sourceRoot":"","sources":["../src/abc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQjD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,aAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IAE/D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IACrB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;IACxB,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,EAAE,EAAE,CAAC;QACZ,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,KAAK,GAA2C;QACpD,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;KAC7B,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;oBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjD,MAAM;YACR,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;YACT,KAAK;YACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK;SACvD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;QAC1B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,GAAG;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,SAAS,MAAM;QACb,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;YACzB,QAAQ,IAAI,GAAG,EAAE,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC;gBACP,KAAK,CAAC;oBACJ,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,IAAI,MAAM,CAAC,OAAO,EAAE;wBAAE,MAAM,CAAC,EAAE,EAAE,CAAC;oBAClC,MAAM;gBACR,KAAK,CAAC,CAAC;gBACP,KAAK,CAAC,CAAC;gBACP,KAAK,CAAC,CAAC;gBACP,KAAK,CAAC,CAAC;gBACP,KAAK,CAAC;oBACJ,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE;oBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACvD,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;QACvC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC;QAChD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,MAAM;YAAE,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC;IACX,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAA0D,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,mBAAmB;QACjE,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,GAAU,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAQ,EAAE;gBACxC,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,QAAQ;oBAAE,IAAI,EAAE,CAAC;YACrC,CAAC,CAAC;YACF,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAQ,EAAE;gBAC1C,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,QAAQ;oBAAE,IAAI,EAAE,CAAC;YACxD,CAAC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;oBAC3D,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAC;gBACJ,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACb,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK;oBAAE,IAAI,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,KAAK,IAAI,GAAG;oBACV,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC5B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5D,CAAC;gBACF,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,CAAC;gBACb,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,IAAI,EAAE,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,YAAY;gBACnB,GAAG,EAAE,MAAM,GAAG,MAAM;gBACpB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;oBACzB,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;oBAC9B,WAAW;iBACZ,CAAC;aACH,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,MAAM,IAAI,UAAU;YACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/binary.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
/** SWF 和 ABC 共用的位操作基础工具,按字节对齐并采用高位优先顺序。 */
|
|
3
|
+
export declare class Reader {
|
|
4
|
+
readonly data: Buffer;
|
|
5
|
+
position: number;
|
|
6
|
+
constructor(data: Buffer);
|
|
7
|
+
take(length: number): Buffer;
|
|
8
|
+
u8(): number;
|
|
9
|
+
u16(): number;
|
|
10
|
+
u32(): number;
|
|
11
|
+
encoded(): number;
|
|
12
|
+
string(): string;
|
|
13
|
+
}
|
|
14
|
+
export declare class BitReader {
|
|
15
|
+
readonly data: Buffer;
|
|
16
|
+
bit: number;
|
|
17
|
+
constructor(data: Buffer);
|
|
18
|
+
read(count: number, signed?: boolean): number;
|
|
19
|
+
get bytes(): number;
|
|
20
|
+
}
|
|
21
|
+
export declare function signedBits(values: number[]): number;
|
|
22
|
+
export declare class BitWriter {
|
|
23
|
+
private values;
|
|
24
|
+
private bit;
|
|
25
|
+
write(value: number, count: number): void;
|
|
26
|
+
bytes(): Buffer;
|
|
27
|
+
}
|
|
28
|
+
export declare function u16(value: number): Buffer;
|
|
29
|
+
export declare function u32(value: number): Buffer;
|
|
30
|
+
export declare function encodedU30(value: number): Buffer;
|
|
31
|
+
export declare function cstring(value: string): Buffer;
|
|
32
|
+
//# sourceMappingURL=binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,2CAA2C;AAC3C,qBAAa,MAAM;IAEL,QAAQ,CAAC,IAAI,EAAE,MAAM;IADjC,QAAQ,SAAK;gBACQ,IAAI,EAAE,MAAM;IAEjC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAY5B,EAAE,IAAI,MAAM;IAGZ,GAAG,IAAI,MAAM;IAGb,GAAG,IAAI,MAAM;IAGb,OAAO,IAAI,MAAM;IAUjB,MAAM,IAAI,MAAM;CAOjB;AAED,qBAAa,SAAS;IAER,QAAQ,CAAC,IAAI,EAAE,MAAM;IADjC,GAAG,SAAK;gBACa,IAAI,EAAE,MAAM;IACjC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM;IAY3C,IAAI,KAAK,IAAI,MAAM,CAElB;CACF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAcnD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,GAAG,CAAK;IAChB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYzC,KAAK,IAAI,MAAM;CAGhB;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzC;AACD,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzC;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUhD;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG7C"}
|
package/dist/binary.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
/** SWF 和 ABC 共用的位操作基础工具,按字节对齐并采用高位优先顺序。 */
|
|
3
|
+
export class Reader {
|
|
4
|
+
data;
|
|
5
|
+
position = 0;
|
|
6
|
+
constructor(data) {
|
|
7
|
+
this.data = data;
|
|
8
|
+
}
|
|
9
|
+
take(length) {
|
|
10
|
+
if (!Number.isInteger(length) ||
|
|
11
|
+
length < 0 ||
|
|
12
|
+
this.position + length > this.data.length) {
|
|
13
|
+
throw new Error(`Truncated binary record at byte ${this.position}`);
|
|
14
|
+
}
|
|
15
|
+
const result = this.data.slice(this.position, this.position + length);
|
|
16
|
+
this.position += length;
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
u8() {
|
|
20
|
+
return this.take(1)[0];
|
|
21
|
+
}
|
|
22
|
+
u16() {
|
|
23
|
+
return this.take(2).readUInt16LE(0);
|
|
24
|
+
}
|
|
25
|
+
u32() {
|
|
26
|
+
return this.take(4).readUInt32LE(0);
|
|
27
|
+
}
|
|
28
|
+
encoded() {
|
|
29
|
+
let value = 0;
|
|
30
|
+
for (let shift = 0; shift <= 28; shift += 7) {
|
|
31
|
+
const byte = this.u8();
|
|
32
|
+
if (shift === 28 && byte > 15)
|
|
33
|
+
throw new Error("Invalid encoded integer");
|
|
34
|
+
value += (byte & 127) * 2 ** shift;
|
|
35
|
+
if (!(byte & 128))
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
throw new Error("Invalid encoded integer");
|
|
39
|
+
}
|
|
40
|
+
string() {
|
|
41
|
+
const end = this.data.indexOf(0, this.position);
|
|
42
|
+
if (end < 0)
|
|
43
|
+
throw new Error("Unterminated SWF string");
|
|
44
|
+
return this.take(end - this.position + 1)
|
|
45
|
+
.slice(0, -1)
|
|
46
|
+
.toString("utf8");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class BitReader {
|
|
50
|
+
data;
|
|
51
|
+
bit = 0;
|
|
52
|
+
constructor(data) {
|
|
53
|
+
this.data = data;
|
|
54
|
+
}
|
|
55
|
+
read(count, signed = false) {
|
|
56
|
+
if (count < 0 || this.bit + count > this.data.length * 8)
|
|
57
|
+
throw new Error("Truncated bit record");
|
|
58
|
+
let value = 0;
|
|
59
|
+
for (let i = 0; i < count; i++, this.bit++) {
|
|
60
|
+
value =
|
|
61
|
+
value * 2 + ((this.data[this.bit >> 3] >> (7 - (this.bit & 7))) & 1);
|
|
62
|
+
}
|
|
63
|
+
return signed && count && value >= 2 ** (count - 1)
|
|
64
|
+
? value - 2 ** count
|
|
65
|
+
: value;
|
|
66
|
+
}
|
|
67
|
+
get bytes() {
|
|
68
|
+
return Math.ceil(this.bit / 8);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function signedBits(values) {
|
|
72
|
+
if (values.some((value) => !Number.isSafeInteger(value)))
|
|
73
|
+
throw new Error("Expected finite integer bit fields");
|
|
74
|
+
let count = 1;
|
|
75
|
+
while (values.some((value) => value < -(2 ** (count - 1)) || value >= 2 ** (count - 1)))
|
|
76
|
+
count++;
|
|
77
|
+
if (count > 31) {
|
|
78
|
+
throw new Error("Signed SWF field exceeds its supported range");
|
|
79
|
+
}
|
|
80
|
+
return count;
|
|
81
|
+
}
|
|
82
|
+
export class BitWriter {
|
|
83
|
+
values = [];
|
|
84
|
+
bit = 0;
|
|
85
|
+
write(value, count) {
|
|
86
|
+
if (!Number.isInteger(value) || count < 0 || count > 31)
|
|
87
|
+
throw new Error("Invalid bit field");
|
|
88
|
+
if (value < 0)
|
|
89
|
+
value += 2 ** count;
|
|
90
|
+
if (value < 0 || value >= 2 ** count)
|
|
91
|
+
throw new Error("Bit field overflow");
|
|
92
|
+
for (let i = count - 1; i >= 0; i--, this.bit++) {
|
|
93
|
+
const index = this.bit >> 3;
|
|
94
|
+
this.values[index] =
|
|
95
|
+
(this.values[index] ?? 0) |
|
|
96
|
+
((Math.floor(value / 2 ** i) % 2) << (7 - (this.bit & 7)));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
bytes() {
|
|
100
|
+
return Buffer.from(this.values);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export function u16(value) {
|
|
104
|
+
const bytes = Buffer.alloc(2);
|
|
105
|
+
bytes.writeUInt16LE(value, 0);
|
|
106
|
+
return bytes;
|
|
107
|
+
}
|
|
108
|
+
export function u32(value) {
|
|
109
|
+
const bytes = Buffer.alloc(4);
|
|
110
|
+
bytes.writeUInt32LE(value, 0);
|
|
111
|
+
return bytes;
|
|
112
|
+
}
|
|
113
|
+
export function encodedU30(value) {
|
|
114
|
+
if (!Number.isInteger(value) || value < 0 || value > 0x3fffffff)
|
|
115
|
+
throw new Error("U30 overflow");
|
|
116
|
+
const bytes = [];
|
|
117
|
+
do {
|
|
118
|
+
const byte = value & 127;
|
|
119
|
+
value = Math.floor(value / 128);
|
|
120
|
+
bytes.push(byte | (value ? 128 : 0));
|
|
121
|
+
} while (value);
|
|
122
|
+
return Buffer.from(bytes);
|
|
123
|
+
}
|
|
124
|
+
export function cstring(value) {
|
|
125
|
+
if (value.includes("\0"))
|
|
126
|
+
throw new Error("SWF strings cannot contain NUL");
|
|
127
|
+
return Buffer.from(`${value}\0`, "utf8");
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,2CAA2C;AAC3C,MAAM,OAAO,MAAM;IAEI;IADrB,QAAQ,GAAG,CAAC,CAAC;IACb,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAErC,IAAI,CAAC,MAAc;QACjB,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YACzB,MAAM,GAAG,CAAC;YACV,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EACzC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,EAAE;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,GAAG;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,GAAG;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO;QACL,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YACvB,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC1E,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;YACnC,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,GAAG,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aACtC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACZ,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,SAAS;IAEC;IADrB,GAAG,GAAG,CAAC,CAAC;IACR,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IACrC,IAAI,CAAC,KAAa,EAAE,MAAM,GAAG,KAAK;QAChC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3C,KAAK;gBACH,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACjD,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK;YACpB,CAAC,CAAC,KAAK,CAAC;IACZ,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAC,MAAgB;IACzC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OACE,MAAM,CAAC,IAAI,CACT,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CACpE;QAED,KAAK,EAAE,CAAC;IACV,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,SAAS;IACZ,MAAM,GAAa,EAAE,CAAC;IACtB,GAAG,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,KAAa,EAAE,KAAa;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC;YAAE,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,KAAK;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,GAAG,CAAC,KAAa;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,KAAa;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,UAAU;QAC7D,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,GAAG,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;QACzB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,QAAQ,KAAK,EAAE;IAChB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "./buffer-setup.js";
|
|
2
|
+
import { type RebuildResult } from "./rebuild-core.js";
|
|
3
|
+
import type { Clip, RebuildOptions } from "./types.js";
|
|
4
|
+
export type { Clip, RebuildOptions, TextureScale } from "./types.js";
|
|
5
|
+
export { validateTextureScale } from "./textures.js";
|
|
6
|
+
export declare function loadUnityClip(bytes: Uint8Array, sharedBytes: Uint8Array): Promise<Clip>;
|
|
7
|
+
/** 在 Worker 中运行:解码和重建会占用较多 CPU 和内存。 */
|
|
8
|
+
export declare function rebuildPet(source: Uint8Array, clip: Clip, options?: RebuildOptions): Promise<RebuildResult>;
|
|
9
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAI3B,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEvD,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAEf;AASD,uCAAuC;AACvC,wBAAsB,UAAU,CAC9B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAWxB"}
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "./buffer-setup.js";
|
|
2
|
+
import { Buffer } from "buffer";
|
|
3
|
+
import * as unity from "@arkntools/unity-js";
|
|
4
|
+
import { loadUnityClipWithModule } from "./unity-clip.js";
|
|
5
|
+
import { rebuildPetCore } from "./rebuild-core.js";
|
|
6
|
+
export { validateTextureScale } from "./textures.js";
|
|
7
|
+
export function loadUnityClip(bytes, sharedBytes) {
|
|
8
|
+
return loadUnityClipWithModule(bytes, sharedBytes, unity);
|
|
9
|
+
}
|
|
10
|
+
async function sha256(bytes) {
|
|
11
|
+
const digest = await crypto.subtle.digest("SHA-256", Uint8Array.from(bytes));
|
|
12
|
+
return Array.from(new Uint8Array(digest), (value) => value.toString(16).padStart(2, "0")).join("");
|
|
13
|
+
}
|
|
14
|
+
/** 在 Worker 中运行:解码和重建会占用较多 CPU 和内存。 */
|
|
15
|
+
export async function rebuildPet(source, clip, options = {}) {
|
|
16
|
+
const sourceSha256 = await sha256(source);
|
|
17
|
+
const result = rebuildPetCore(Buffer.from(source), clip, options);
|
|
18
|
+
return {
|
|
19
|
+
...result,
|
|
20
|
+
report: {
|
|
21
|
+
...result.report,
|
|
22
|
+
sourceSha256,
|
|
23
|
+
outputSha256: await sha256(result.swf),
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC;AAIvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,UAAU,aAAa,CAC3B,KAAiB,EACjB,WAAuB;IAEvB,OAAO,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,KAAiB;IACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClD,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACpC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAkB,EAClB,IAAU,EACV,UAA0B,EAAE;IAE5B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClE,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE;YACN,GAAG,MAAM,CAAC,MAAM;YAChB,YAAY;YACZ,YAAY,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;SACvC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer-setup.d.ts","sourceRoot":"","sources":["../src/buffer-setup.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer-setup.js","sourceRoot":"","sources":["../src/buffer-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,wCAAwC;AACxC,MAAM,OAAO,GAAG,UAA4D,CAAC;AAC7E,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|