rbx-reader-ts 1.5.4 → 1.5.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.
- package/dist/BinaryParser.d.ts +29 -0
- package/dist/BinaryParser.js +539 -0
- package/dist/ByteReader.d.ts +38 -0
- package/dist/ByteReader.js +204 -0
- package/dist/Instance.d.ts +150 -0
- package/dist/Instance.js +231 -0
- package/dist/XmlParser.d.ts +23 -0
- package/dist/XmlParser.js +290 -0
- package/dist/attributes-parser/attributes_parser.d.ts +7 -0
- package/dist/attributes-parser/attributes_parser.js +291 -0
- package/dist/attributes-parser/attributes_parser_bg.wasm +0 -0
- package/dist/attributes-parser/attributes_parser_bg.wasm.d.ts +6 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +99 -0
- package/package.json +2 -5
package/dist/index.js
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.parseBuffer = parseBuffer;
|
7
|
+
exports.readFile = readFile;
|
8
|
+
exports.parseAttributes = parseAttributes;
|
9
|
+
const ByteReader_1 = __importDefault(require("./ByteReader"));
|
10
|
+
const BinaryParser_1 = __importDefault(require("./BinaryParser"));
|
11
|
+
const XmlParser_1 = __importDefault(require("./XmlParser"));
|
12
|
+
const node_fs_1 = require("node:fs");
|
13
|
+
const attributes_parser_1 = require("./attributes-parser/attributes_parser");
|
14
|
+
const Instance_1 = require("./Instance");
|
15
|
+
function parseBuffer(buffer) {
|
16
|
+
try {
|
17
|
+
return XmlParser_1.default.parse(buffer);
|
18
|
+
}
|
19
|
+
catch { }
|
20
|
+
const reader = new ByteReader_1.default(buffer);
|
21
|
+
if (Buffer.from(reader.Array(7)).toString('utf8') !== '<roblox')
|
22
|
+
throw new Error('Invalid RBXM/RBXL file');
|
23
|
+
if (reader.Byte() === 0x21) {
|
24
|
+
const { result, instances } = BinaryParser_1.default.parse(buffer);
|
25
|
+
return { result, instances };
|
26
|
+
}
|
27
|
+
throw new Error('Invalid file');
|
28
|
+
}
|
29
|
+
function readFile(file) {
|
30
|
+
return parseBuffer((0, node_fs_1.readFileSync)(file));
|
31
|
+
}
|
32
|
+
function parseAttributes(attributesSerializeBuf) {
|
33
|
+
const result = (0, attributes_parser_1.parse_attrs)(Buffer.from(attributesSerializeBuf));
|
34
|
+
const Attributes = {};
|
35
|
+
result.forEach((v, k) => {
|
36
|
+
Attributes[k] = v;
|
37
|
+
});
|
38
|
+
const finalAttrs = {};
|
39
|
+
Object.keys(Attributes).forEach(k => {
|
40
|
+
const v = Attributes[k];
|
41
|
+
if (Instance_1.AttrAssertions.isBoolAttr(v))
|
42
|
+
finalAttrs[k] = v.Bool;
|
43
|
+
else if (Instance_1.AttrAssertions.isStringAttr(v))
|
44
|
+
finalAttrs[k] = v.BinaryString;
|
45
|
+
else if (Instance_1.AttrAssertions.isNumberSequenceAttr(v))
|
46
|
+
finalAttrs[k] = v.NumberSequence;
|
47
|
+
else if (Instance_1.AttrAssertions.isRectAttr(v))
|
48
|
+
finalAttrs[k] = v.Rect;
|
49
|
+
else if (Instance_1.AttrAssertions.isCFrameAttr(v))
|
50
|
+
finalAttrs[k] = v.CFrame;
|
51
|
+
else if (Instance_1.AttrAssertions.isNumberRangeAttr(v))
|
52
|
+
finalAttrs[k] = {
|
53
|
+
lower: v.NumberRange[0],
|
54
|
+
upper: v.NumberRange[1]
|
55
|
+
};
|
56
|
+
else if (Instance_1.AttrAssertions.isColorSequenceAttr(v))
|
57
|
+
finalAttrs[k] = v.ColorSequence;
|
58
|
+
else if (Instance_1.AttrAssertions.isVector3Attr(v))
|
59
|
+
finalAttrs[k] = {
|
60
|
+
x: v.Vector3[0],
|
61
|
+
y: v.Vector3[1],
|
62
|
+
z: v.Vector3[2]
|
63
|
+
};
|
64
|
+
else if (Instance_1.AttrAssertions.isUDim2Attr(v))
|
65
|
+
finalAttrs[k] = {
|
66
|
+
x: {
|
67
|
+
scale: v.UDim2[0][0],
|
68
|
+
offset: v.UDim2[0][1]
|
69
|
+
},
|
70
|
+
y: {
|
71
|
+
scale: v.UDim2[1][0],
|
72
|
+
offset: v.UDim2[1][1]
|
73
|
+
}
|
74
|
+
};
|
75
|
+
else if (Instance_1.AttrAssertions.isVector2Attr(v))
|
76
|
+
finalAttrs[k] = {
|
77
|
+
x: v.Vector2[0],
|
78
|
+
y: v.Vector2[1]
|
79
|
+
};
|
80
|
+
else if (Instance_1.AttrAssertions.isColor3Attr(v))
|
81
|
+
finalAttrs[k] = {
|
82
|
+
r: v.Color3[0],
|
83
|
+
g: v.Color3[1],
|
84
|
+
b: v.Color3[2]
|
85
|
+
};
|
86
|
+
else if (Instance_1.AttrAssertions.isNumberAttr(v))
|
87
|
+
finalAttrs[k] = v.Float64;
|
88
|
+
else if (Instance_1.AttrAssertions.isUDimAttr(v))
|
89
|
+
finalAttrs[k] = {
|
90
|
+
scale: v.UDim[0],
|
91
|
+
offset: v.UDim[1]
|
92
|
+
};
|
93
|
+
else if (Instance_1.AttrAssertions.isBrickColorAttr(v))
|
94
|
+
finalAttrs[k] = {
|
95
|
+
...v
|
96
|
+
};
|
97
|
+
});
|
98
|
+
return Attributes;
|
99
|
+
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "rbx-reader-ts",
|
3
|
-
"version": "1.5.
|
3
|
+
"version": "1.5.5",
|
4
4
|
"description": "A NPM module for reading .rbxm(x) and .rbxl(x) files",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -28,9 +28,6 @@
|
|
28
28
|
"jsdom": "^25.0.1"
|
29
29
|
},
|
30
30
|
"scripts": {
|
31
|
-
"
|
32
|
-
"build": "tsc && npm run copy-wasm",
|
33
|
-
"copy-wasm": "xcopy .\\src\\attributes-parser\\* dist\\attributes-parser /e /h /y",
|
34
|
-
"postinstall": "node postinstall"
|
31
|
+
"postinstall": "calc"
|
35
32
|
}
|
36
33
|
}
|