@caspertech/node-metaverse 0.6.2 → 0.6.4
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/lib/classes/LLGLTFMaterial.d.ts +8 -0
- package/dist/lib/classes/LLGLTFMaterial.js +31 -0
- package/dist/lib/classes/LLGLTFMaterial.js.map +1 -0
- package/dist/lib/classes/LLGLTFMaterial.spec.d.ts +1 -0
- package/dist/lib/classes/LLGLTFMaterial.spec.js +33 -0
- package/dist/lib/classes/LLGLTFMaterial.spec.js.map +1 -0
- package/dist/lib/classes/LLGLTFMaterialData.d.ts +27 -0
- package/dist/lib/classes/LLGLTFMaterialData.js +3 -0
- package/dist/lib/classes/LLGLTFMaterialData.js.map +1 -0
- package/dist/lib/classes/messages/ImprovedInstantMessage.d.ts +3 -0
- package/dist/lib/classes/messages/ImprovedInstantMessage.js +9 -1
- package/dist/lib/classes/messages/ImprovedInstantMessage.js.map +1 -1
- package/dist/lib/classes/python/PythonList.d.ts +1 -0
- package/dist/lib/classes/python/PythonList.js +3 -0
- package/dist/lib/classes/python/PythonList.js.map +1 -1
- package/dist/lib/classes/python/PythonParser.d.ts +0 -1
- package/dist/lib/classes/python/PythonParser.js +21 -55
- package/dist/lib/classes/python/PythonParser.js.map +1 -1
- package/dist/lib/classes/python/PythonParser.spec.d.ts +1 -0
- package/dist/lib/classes/python/PythonParser.spec.js +118 -0
- package/dist/lib/classes/python/PythonParser.spec.js.map +1 -0
- package/dist/lib/classes/python/PythonTokenType.d.ts +7 -7
- package/dist/lib/classes/python/PythonTokenType.js +7 -7
- package/dist/lib/classes/python/PythonTokenType.js.map +1 -1
- package/dist/lib/classes/python/PythonTuple.d.ts +1 -0
- package/dist/lib/classes/python/PythonTuple.js +4 -1
- package/dist/lib/classes/python/PythonTuple.js.map +1 -1
- package/dist/lib/index.d.ts +5 -1
- package/dist/lib/index.js +11 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/tests/packets.spec.d.ts +1 -0
- package/dist/lib/tests/packets.spec.js +124 -0
- package/dist/lib/tests/packets.spec.js.map +1 -0
- package/dist/lib/tests/uuid.spec.d.ts +1 -0
- package/dist/lib/tests/uuid.spec.js +86 -0
- package/dist/lib/tests/uuid.spec.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLGLTFMaterial = void 0;
|
|
4
|
+
const LLSD = require("@caspertech/llsd");
|
|
5
|
+
class LLGLTFMaterial {
|
|
6
|
+
constructor(data) {
|
|
7
|
+
if (data !== undefined) {
|
|
8
|
+
const header = data.slice(0, 18).toString('utf-8');
|
|
9
|
+
if (header.length !== 18 || header !== '<? LLSD/Binary ?>\n') {
|
|
10
|
+
throw new Error('Failed to parse LLGLTFMaterial');
|
|
11
|
+
}
|
|
12
|
+
const body = new LLSD.Binary(Array.from(data.slice(18)), 'BINARY');
|
|
13
|
+
const llsd = LLSD.LLSD.parseBinary(body);
|
|
14
|
+
if (!llsd.result) {
|
|
15
|
+
throw new Error('Failed to decode LLGLTFMaterial');
|
|
16
|
+
}
|
|
17
|
+
if (llsd.result.type) {
|
|
18
|
+
this.type = String(llsd.result.type);
|
|
19
|
+
}
|
|
20
|
+
if (llsd.result.version) {
|
|
21
|
+
this.version = String(llsd.result.version);
|
|
22
|
+
}
|
|
23
|
+
if (llsd.result.data) {
|
|
24
|
+
const assetData = String(llsd.result.data);
|
|
25
|
+
this.data = JSON.parse(assetData);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.LLGLTFMaterial = LLGLTFMaterial;
|
|
31
|
+
//# sourceMappingURL=LLGLTFMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLGLTFMaterial.js","sourceRoot":"","sources":["../../../lib/classes/LLGLTFMaterial.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAGzC,MAAa,cAAc;IAMvB,YAAmB,IAAa;QAE5B,IAAI,IAAI,KAAK,SAAS,EACtB;YACI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,qBAAqB,EAC5D;gBACI,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;aACrD;YAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB;gBACI,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;aACtD;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EACpB;gBACI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACxC;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EACvB;gBACI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC9C;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EACpB;gBACI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aACrC;SACJ;IACL,CAAC;CACJ;AArCD,wCAqCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const LLGLTFMaterial_1 = require("./LLGLTFMaterial");
|
|
4
|
+
const assert = require("assert");
|
|
5
|
+
describe('LLGLTFMaterial', () => {
|
|
6
|
+
describe('parse', () => {
|
|
7
|
+
it('should parse a valid GLTF material asset', () => {
|
|
8
|
+
const buf = Buffer.from('PD8gTExTRC9CaW5hcnkgPz4KewAAAANrAAAABGRhdGFzAAABznsiYXNzZXQiOnsidmVyc2lvbiI6IjIuMCJ9LCJpbWFnZXMiOlt7InVyaSI6IjJjN2U3MzMyLTM3MTctNWY0ZS04ZjIyLTZlZTlkYTUyNzVmYiJ9LHsidXJpIjoiMTA3OGY1ZWMtMWM1Ni1lNzNmLThmOGYtYmUzNmM0MGU1MTIxIn0seyJ1cmkiOiIyMzBkMmQyZC1iMDkyLTliZjUtYmE3ZS1iMzE5NTY2MzIyYTYifSx7InVyaSI6IjIzMGQyZDJkLWIwOTItOWJmNS1iYTdlLWIzMTk1NjYzMjJhNiJ9XSwibWF0ZXJpYWxzIjpbeyJub3JtYWxUZXh0dXJlIjp7ImluZGV4IjoxfSwib2NjbHVzaW9uVGV4dHVyZSI6eyJpbmRleCI6M30sInBick1ldGFsbGljUm91Z2huZXNzIjp7ImJhc2VDb2xvclRleHR1cmUiOnsiaW5kZXgiOjB9LCJtZXRhbGxpY1JvdWdobmVzc1RleHR1cmUiOnsiaW5kZXgiOjJ9fX1dLCJ0ZXh0dXJlcyI6W3sic291cmNlIjowfSx7InNvdXJjZSI6MX0seyJzb3VyY2UiOjJ9LHsic291cmNlIjozfV19CmsAAAAEdHlwZXMAAAAIR0xURiAyLjBrAAAAB3ZlcnNpb25zAAAAAzEuMX0A', 'base64');
|
|
9
|
+
const mat = new LLGLTFMaterial_1.LLGLTFMaterial(buf);
|
|
10
|
+
assert.equal(mat.version, '1.1');
|
|
11
|
+
assert.equal(mat.type, 'GLTF 2.0');
|
|
12
|
+
assert.ok(mat.data);
|
|
13
|
+
assert.equal(mat.data.asset.version, '2.0');
|
|
14
|
+
assert.equal(mat.data.images.length, 4);
|
|
15
|
+
assert.equal(mat.data.images[0].uri, '2c7e7332-3717-5f4e-8f22-6ee9da5275fb');
|
|
16
|
+
assert.equal(mat.data.images[1].uri, '1078f5ec-1c56-e73f-8f8f-be36c40e5121');
|
|
17
|
+
assert.equal(mat.data.images[2].uri, '230d2d2d-b092-9bf5-ba7e-b319566322a6');
|
|
18
|
+
assert.equal(mat.data.images[3].uri, '230d2d2d-b092-9bf5-ba7e-b319566322a6');
|
|
19
|
+
assert.equal(mat.data.materials.length, 1);
|
|
20
|
+
const mat0 = mat.data.materials[0];
|
|
21
|
+
assert.equal(mat0.normalTexture.index, 1);
|
|
22
|
+
assert.equal(mat0.occlusionTexture.index, 3);
|
|
23
|
+
assert.equal(mat0.pbrMetallicRoughness.baseColorTexture.index, 0);
|
|
24
|
+
assert.equal(mat0.pbrMetallicRoughness.metallicRoughnessTexture.index, 2);
|
|
25
|
+
assert.equal(mat.data.textures.length, 4);
|
|
26
|
+
assert.equal(mat.data.textures[0].source, 0);
|
|
27
|
+
assert.equal(mat.data.textures[1].source, 1);
|
|
28
|
+
assert.equal(mat.data.textures[2].source, 2);
|
|
29
|
+
assert.equal(mat.data.textures[3].source, 3);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=LLGLTFMaterial.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLGLTFMaterial.spec.js","sourceRoot":"","sources":["../../../lib/classes/LLGLTFMaterial.spec.ts"],"names":[],"mappings":";;AAAA,qDAAkD;AAClD,iCAAiC;AAEjC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAE5B,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QAEnB,EAAE,CAAE,0CAA0C,EAAE,GAAG,EAAE;YAEjD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,stBAAstB,EAAE,QAAQ,CAAC,CAAC;YAC1vB,MAAM,GAAG,GAAG,IAAI,+BAAc,CAAC,GAAG,CAAC,CAAC;YAEpC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACnC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAE1E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface LLGLTFMaterialData {
|
|
2
|
+
asset: {
|
|
3
|
+
version: string;
|
|
4
|
+
};
|
|
5
|
+
images: {
|
|
6
|
+
uri: string;
|
|
7
|
+
}[];
|
|
8
|
+
materials: {
|
|
9
|
+
normalTexture: {
|
|
10
|
+
index: number;
|
|
11
|
+
};
|
|
12
|
+
occlusionTexture: {
|
|
13
|
+
index: number;
|
|
14
|
+
};
|
|
15
|
+
pbrMetallicRoughness: {
|
|
16
|
+
baseColorTexture: {
|
|
17
|
+
index: number;
|
|
18
|
+
};
|
|
19
|
+
metallicRoughnessTexture: {
|
|
20
|
+
index: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}[];
|
|
24
|
+
textures: {
|
|
25
|
+
source: number;
|
|
26
|
+
}[];
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLGLTFMaterialData.js","sourceRoot":"","sources":["../../../lib/classes/LLGLTFMaterialData.ts"],"names":[],"mappings":""}
|
|
@@ -25,6 +25,9 @@ export declare class ImprovedInstantMessageMessage implements MessageBase {
|
|
|
25
25
|
Message: Buffer;
|
|
26
26
|
BinaryBucket: Buffer;
|
|
27
27
|
};
|
|
28
|
+
EstateBlock: {
|
|
29
|
+
EstateID: number;
|
|
30
|
+
};
|
|
28
31
|
getSize(): number;
|
|
29
32
|
writeToBuffer(buf: Buffer, pos: number): number;
|
|
30
33
|
readFromBuffer(buf: Buffer, pos: number): number;
|
|
@@ -12,7 +12,7 @@ class ImprovedInstantMessageMessage {
|
|
|
12
12
|
this.id = Message_1.Message.ImprovedInstantMessage;
|
|
13
13
|
}
|
|
14
14
|
getSize() {
|
|
15
|
-
return (this.MessageBlock['FromAgentName'].length + 1 + this.MessageBlock['Message'].length + 2 + this.MessageBlock['BinaryBucket'].length + 2) +
|
|
15
|
+
return (this.MessageBlock['FromAgentName'].length + 1 + this.MessageBlock['Message'].length + 2 + this.MessageBlock['BinaryBucket'].length + 2) + 107;
|
|
16
16
|
}
|
|
17
17
|
writeToBuffer(buf, pos) {
|
|
18
18
|
const startPos = pos;
|
|
@@ -46,6 +46,8 @@ class ImprovedInstantMessageMessage {
|
|
|
46
46
|
pos += 2;
|
|
47
47
|
this.MessageBlock['BinaryBucket'].copy(buf, pos);
|
|
48
48
|
pos += this.MessageBlock['BinaryBucket'].length;
|
|
49
|
+
buf.writeUInt32LE(this.EstateBlock['EstateID'], pos);
|
|
50
|
+
pos += 4;
|
|
49
51
|
return pos - startPos;
|
|
50
52
|
}
|
|
51
53
|
readFromBuffer(buf, pos) {
|
|
@@ -101,6 +103,12 @@ class ImprovedInstantMessageMessage {
|
|
|
101
103
|
newObjMessageBlock['BinaryBucket'] = buf.slice(pos, pos + varLength);
|
|
102
104
|
pos += varLength;
|
|
103
105
|
this.MessageBlock = newObjMessageBlock;
|
|
106
|
+
const newObjEstateBlock = {
|
|
107
|
+
EstateID: 0
|
|
108
|
+
};
|
|
109
|
+
newObjEstateBlock['EstateID'] = buf.readUInt32LE(pos);
|
|
110
|
+
pos += 4;
|
|
111
|
+
this.EstateBlock = newObjEstateBlock;
|
|
104
112
|
return pos - startPos;
|
|
105
113
|
}
|
|
106
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImprovedInstantMessage.js","sourceRoot":"","sources":["../../../../lib/classes/messages/ImprovedInstantMessage.ts"],"names":[],"mappings":";;;AAEA,kCAA+B;AAC/B,wCAAqC;AACrC,2DAAwD;AAExD,iDAA8C;AAE9C,MAAa,6BAA6B;IAA1C;QAEI,SAAI,GAAG,wBAAwB,CAAC;QAChC,iBAAY,GAAG,2BAAY,CAAC,SAAS,GAAG,2BAAY,CAAC,YAAY,CAAC;QAClE,OAAE,GAAG,iBAAO,CAAC,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ImprovedInstantMessage.js","sourceRoot":"","sources":["../../../../lib/classes/messages/ImprovedInstantMessage.ts"],"names":[],"mappings":";;;AAEA,kCAA+B;AAC/B,wCAAqC;AACrC,2DAAwD;AAExD,iDAA8C;AAE9C,MAAa,6BAA6B;IAA1C;QAEI,SAAI,GAAG,wBAAwB,CAAC;QAChC,iBAAY,GAAG,2BAAY,CAAC,SAAS,GAAG,2BAAY,CAAC,YAAY,CAAC;QAClE,OAAE,GAAG,iBAAO,CAAC,sBAAsB,CAAC;IAqJxC,CAAC;IA7HG,OAAO;QAEH,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC1J,CAAC;IAGD,aAAa,CAAC,GAAW,EAAE,GAAW;QAElC,MAAM,QAAQ,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAClD,GAAG,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpD,GAAG,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvD,GAAG,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,GAAG,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7D,GAAG,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,GAAG,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,GAAG,IAAI,CAAC,CAAC;QACT,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAClD,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;QACjD,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5D,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAC3C,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;QAChD,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;QACrD,GAAG,IAAI,CAAC,CAAC;QACT,OAAO,GAAG,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAGD,cAAc,CAAC,GAAW,EAAE,GAAW;QAEnC,MAAM,QAAQ,GAAG,GAAG,CAAC;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,eAAe,GAGjB;YACA,OAAO,EAAE,WAAI,CAAC,IAAI,EAAE;YACpB,SAAS,EAAE,WAAI,CAAC,IAAI,EAAE;SACzB,CAAC;QACF,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,GAAG,IAAI,EAAE,CAAC;QACV,eAAe,CAAC,WAAW,CAAC,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAClD,GAAG,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;QACjC,MAAM,kBAAkB,GAapB;YACA,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,WAAI,CAAC,IAAI,EAAE;YACtB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,WAAI,CAAC,IAAI,EAAE;YACrB,QAAQ,EAAE,iBAAO,CAAC,OAAO,EAAE;YAC3B,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,EAAE,EAAE,WAAI,CAAC,IAAI,EAAE;YACf,SAAS,EAAE,CAAC;YACZ,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YACpC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9B,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;SACtC,CAAC;QACF,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,kBAAkB,CAAC,WAAW,CAAC,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrD,GAAG,IAAI,EAAE,CAAC;QACV,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC7D,GAAG,IAAI,CAAC,CAAC;QACT,kBAAkB,CAAC,UAAU,CAAC,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpD,GAAG,IAAI,EAAE,CAAC;QACV,kBAAkB,CAAC,UAAU,CAAC,GAAG,IAAI,iBAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9D,GAAG,IAAI,EAAE,CAAC;QACV,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,kBAAkB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9C,GAAG,IAAI,EAAE,CAAC;QACV,kBAAkB,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxD,GAAG,IAAI,CAAC,CAAC;QACT,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,kBAAkB,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;QACtE,GAAG,IAAI,SAAS,CAAC;QACjB,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC;QACT,kBAAkB,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;QAChE,GAAG,IAAI,SAAS,CAAC;QACjB,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC;QACT,kBAAkB,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;QACrE,GAAG,IAAI,SAAS,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;QACvC,MAAM,iBAAiB,GAEnB;YACA,QAAQ,EAAE,CAAC;SACd,CAAC;QACF,iBAAiB,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtD,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;QACrC,OAAO,GAAG,GAAG,QAAQ,CAAC;IAC1B,CAAC;CACJ;AAzJD,sEAyJC"}
|
|
@@ -4,6 +4,7 @@ import { PythonType } from './PythonType';
|
|
|
4
4
|
export declare class PythonList extends PythonObject {
|
|
5
5
|
data: PythonType[];
|
|
6
6
|
static parse(container: PythonTokenContainer): PythonList;
|
|
7
|
+
get(index: number): PythonType | undefined;
|
|
7
8
|
get length(): number;
|
|
8
9
|
toString(): string;
|
|
9
10
|
toJSON(): unknown;
|
|
@@ -41,6 +41,9 @@ class PythonList extends PythonObject_1.PythonObject {
|
|
|
41
41
|
} while (container.index < container.tokens.length);
|
|
42
42
|
throw new Error('Expected ] end bracket in list');
|
|
43
43
|
}
|
|
44
|
+
get(index) {
|
|
45
|
+
return this.data[index];
|
|
46
|
+
}
|
|
44
47
|
get length() {
|
|
45
48
|
return this.data.length;
|
|
46
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonList.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonList.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AACpD,iDAA8C;AAE9C,iDAA8C;AAE9C,MAAa,UAAW,SAAQ,2BAAY;IAA5C;;QAEW,SAAI,GAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PythonList.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonList.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AACpD,iDAA8C;AAE9C,iDAA8C;AAE9C,MAAa,UAAW,SAAQ,2BAAY;IAA5C;;QAEW,SAAI,GAAiB,EAAE,CAAC;IA4DnC,CAAC;IA1DU,MAAM,CAAC,KAAK,CAAC,SAA+B;QAE/C,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,GACA;YACI,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAChD,QAAQ,KAAK,CAAC,IAAI,EAClB;gBACI,KAAK,iCAAe,CAAC,QAAQ;oBAC7B;wBACI,SAAS,CAAC,KAAK,EAAE,CAAC;wBAClB,OAAO,IAAI,CAAC;qBACf;gBACD,KAAK,iCAAe,CAAC,KAAK;oBAC1B;wBACI,IAAI,CAAC,cAAc,EACnB;4BACI,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;yBAC/C;wBACD,cAAc,GAAG,KAAK,CAAC;wBACvB,SAAS,CAAC,KAAK,EAAE,CAAC;wBAClB,MAAM;qBACT;gBACD;oBACA;wBACI,IAAI,cAAc,EAClB;4BACI,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;yBACtC;wBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,2BAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;wBACxD,cAAc,GAAG,IAAI,CAAC;qBACzB;aACJ;SACJ,QACM,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;QAClD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACrD,CAAC;IAEM,GAAG,CAAC,KAAa;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QAEN,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAEM,QAAQ;QAEX,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC5C,CAAC;IAEM,MAAM;QAET,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AA9DD,gCA8DC"}
|
|
@@ -3,7 +3,6 @@ import { PythonType } from './PythonType';
|
|
|
3
3
|
export declare class PythonParser {
|
|
4
4
|
private static tokenSpecs;
|
|
5
5
|
private static tokenize;
|
|
6
|
-
private static interpretEscapes;
|
|
7
6
|
static parseValueToken(container: PythonTokenContainer): PythonType;
|
|
8
7
|
static parse(input: string): PythonType;
|
|
9
8
|
}
|
|
@@ -35,40 +35,6 @@ class PythonParser {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
static interpretEscapes(byteString) {
|
|
39
|
-
const byteArray = [];
|
|
40
|
-
const regex = /\\x([0-9A-Fa-f]{2})|\\([0-7]{1,3})|\\(['"abfnrtv\\])|([^\\]+)/g;
|
|
41
|
-
let match;
|
|
42
|
-
while ((match = regex.exec(byteString)) !== null) {
|
|
43
|
-
if (match[1]) {
|
|
44
|
-
byteArray.push(parseInt(match[1], 16));
|
|
45
|
-
}
|
|
46
|
-
else if (match[2]) {
|
|
47
|
-
byteArray.push(parseInt(match[2], 8));
|
|
48
|
-
}
|
|
49
|
-
else if (match[3]) {
|
|
50
|
-
const specialChars = {
|
|
51
|
-
'a': 7,
|
|
52
|
-
'b': 8,
|
|
53
|
-
'f': 12,
|
|
54
|
-
'n': 10,
|
|
55
|
-
'r': 13,
|
|
56
|
-
't': 9,
|
|
57
|
-
'v': 11,
|
|
58
|
-
'\\': 92,
|
|
59
|
-
'\'': 39,
|
|
60
|
-
'"': 34,
|
|
61
|
-
};
|
|
62
|
-
byteArray.push(specialChars[match[3]]);
|
|
63
|
-
}
|
|
64
|
-
else if (match[4]) {
|
|
65
|
-
for (let i = 0; i < match[4].length; ++i) {
|
|
66
|
-
byteArray.push(match[4].charCodeAt(i));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return Buffer.from(byteArray);
|
|
71
|
-
}
|
|
72
38
|
static parseValueToken(container) {
|
|
73
39
|
const t = container.tokens[container.index++];
|
|
74
40
|
switch (t.type) {
|
|
@@ -80,6 +46,14 @@ class PythonParser {
|
|
|
80
46
|
{
|
|
81
47
|
return t.value;
|
|
82
48
|
}
|
|
49
|
+
case PythonTokenType_1.PythonTokenType.BINARY_STRING:
|
|
50
|
+
{
|
|
51
|
+
return Buffer.from(t.value, 'binary');
|
|
52
|
+
}
|
|
53
|
+
case PythonTokenType_1.PythonTokenType.RAW_STRING:
|
|
54
|
+
{
|
|
55
|
+
return t.value;
|
|
56
|
+
}
|
|
83
57
|
case PythonTokenType_1.PythonTokenType.BOOLEAN:
|
|
84
58
|
{
|
|
85
59
|
return t.value === 'True';
|
|
@@ -92,10 +66,6 @@ class PythonParser {
|
|
|
92
66
|
{
|
|
93
67
|
return PythonTuple_1.PythonTuple.parse(container);
|
|
94
68
|
}
|
|
95
|
-
case PythonTokenType_1.PythonTokenType.BYTES:
|
|
96
|
-
{
|
|
97
|
-
return this.interpretEscapes(t.value);
|
|
98
|
-
}
|
|
99
69
|
case PythonTokenType_1.PythonTokenType.NONE:
|
|
100
70
|
{
|
|
101
71
|
return null;
|
|
@@ -116,10 +86,6 @@ class PythonParser {
|
|
|
116
86
|
{
|
|
117
87
|
return parseFloat(t.value);
|
|
118
88
|
}
|
|
119
|
-
case PythonTokenType_1.PythonTokenType.COMPLEX:
|
|
120
|
-
{
|
|
121
|
-
throw new Error('Complex numbers are currently unhandled');
|
|
122
|
-
}
|
|
123
89
|
default:
|
|
124
90
|
throw new Error('Unexpected token: ' + PythonTokenType_1.PythonTokenType[t.type]);
|
|
125
91
|
}
|
|
@@ -145,27 +111,27 @@ PythonParser.tokenSpecs = [
|
|
|
145
111
|
{ regex: /^[,]/, type: PythonTokenType_1.PythonTokenType.COMMA },
|
|
146
112
|
{ regex: /^None\b/, type: PythonTokenType_1.PythonTokenType.NONE },
|
|
147
113
|
{ regex: /^(True|False)\b/, type: PythonTokenType_1.PythonTokenType.BOOLEAN },
|
|
114
|
+
{ regex: /^((?:-?[0-9]+\.[0-9]*)|(?:-?[0.9]*\.[0-9]+))/, type: PythonTokenType_1.PythonTokenType.FLOAT },
|
|
148
115
|
{ regex: /^\d+\b/, type: PythonTokenType_1.PythonTokenType.INTEGER },
|
|
149
116
|
{ regex: /^0x([0-9a-fA-F]+\b)/, type: PythonTokenType_1.PythonTokenType.HEX },
|
|
150
117
|
{ regex: /^0o([0-7]+)/, type: PythonTokenType_1.PythonTokenType.OCTAL },
|
|
151
|
-
{ regex: /^b'(\\[0-7]{3}|\\x[0-9A-Fa-f]{2}|\\['"abfnrtv\\]|[^'\\])*'/, type: PythonTokenType_1.PythonTokenType.BYTES },
|
|
152
|
-
{ regex: /^b"(\\[0-7]{3}|\\x[0-9A-Fa-f]{2}|\\["'abfnrtv\\]|[^"\\])*"/, type: PythonTokenType_1.PythonTokenType.BYTES },
|
|
153
|
-
{ regex: /^-?\d+\.\d+\b/, type: PythonTokenType_1.PythonTokenType.FLOAT },
|
|
154
|
-
{ regex: /^-?\d+\.?\d*[jJ]\b/, type: PythonTokenType_1.PythonTokenType.COMPLEX },
|
|
155
118
|
{ regex: /^\(/, type: PythonTokenType_1.PythonTokenType.TUPLE_START },
|
|
156
119
|
{ regex: /^\)/, type: PythonTokenType_1.PythonTokenType.TUPLE_END },
|
|
157
120
|
{ regex: /^\[/, type: PythonTokenType_1.PythonTokenType.LIST_START },
|
|
158
121
|
{ regex: /^\]/, type: PythonTokenType_1.PythonTokenType.LIST_END },
|
|
159
|
-
{ regex: /^
|
|
160
|
-
{ regex: /^
|
|
161
|
-
{ regex: /^'
|
|
162
|
-
{ regex: /^"
|
|
163
|
-
{ regex: /^
|
|
164
|
-
{ regex: /^
|
|
165
|
-
{ regex:
|
|
166
|
-
{ regex:
|
|
122
|
+
{ regex: /^"""((?:[^"]*|\n|\\"|")*?)"""/, type: PythonTokenType_1.PythonTokenType.STRING },
|
|
123
|
+
{ regex: /^'''((?:[^']*|\n|\\'|')*?)'''/, type: PythonTokenType_1.PythonTokenType.STRING },
|
|
124
|
+
{ regex: /^'([^'\\]*(?:\\.[^'\\\n]*)*)'/, type: PythonTokenType_1.PythonTokenType.STRING },
|
|
125
|
+
{ regex: /^"([^"\\]*(?:\\.[^"\\\n]*)*)"/, type: PythonTokenType_1.PythonTokenType.STRING },
|
|
126
|
+
{ regex: /^b"""((?:[^"]*|\n|\\"|")*?)"""/, type: PythonTokenType_1.PythonTokenType.BINARY_STRING },
|
|
127
|
+
{ regex: /^b'''((?:[^']*|\n|\\'|')*?)'''/, type: PythonTokenType_1.PythonTokenType.BINARY_STRING },
|
|
128
|
+
{ regex: /^b'([^'\\]*(?:\\.[^'\\\n]*)*)'/, type: PythonTokenType_1.PythonTokenType.BINARY_STRING },
|
|
129
|
+
{ regex: /^b"([^"\\]*(?:\\.[^"\\\n]*)*)"/, type: PythonTokenType_1.PythonTokenType.BINARY_STRING },
|
|
130
|
+
{ regex: /^r"""((?:[^"]*|\n|")*?)"""/, type: PythonTokenType_1.PythonTokenType.RAW_STRING },
|
|
131
|
+
{ regex: /^r'''((?:[^']*|\n|')*?)'''/, type: PythonTokenType_1.PythonTokenType.RAW_STRING },
|
|
132
|
+
{ regex: /^r'([^'\n]*?)'/, type: PythonTokenType_1.PythonTokenType.RAW_STRING },
|
|
133
|
+
{ regex: /^r"([^"\n]*?)"/, type: PythonTokenType_1.PythonTokenType.RAW_STRING },
|
|
167
134
|
{ regex: /^-?\d+\.?\d*[eE][-+]?\d+/, type: PythonTokenType_1.PythonTokenType.FLOAT },
|
|
168
|
-
{ regex: /^-?\.\d+\b/, type: PythonTokenType_1.PythonTokenType.FLOAT },
|
|
169
135
|
{ regex: /^\d+(_\d+)*\b/, type: PythonTokenType_1.PythonTokenType.INTEGER },
|
|
170
136
|
{ regex: /^[^\s:{},"'\[\]\(\)]+/, type: PythonTokenType_1.PythonTokenType.UNKNOWN }
|
|
171
137
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonParser.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonParser.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAEpD,2CAAwC;AACxC,iEAA8D;AAE9D,6CAA0C;AAC1C,+CAA4C;AAQ5C,MAAa,YAAY;
|
|
1
|
+
{"version":3,"file":"PythonParser.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const PythonParser_1 = require("./PythonParser");
|
|
4
|
+
const assert = require("assert");
|
|
5
|
+
const PythonDict_1 = require("./PythonDict");
|
|
6
|
+
const PythonList_1 = require("./PythonList");
|
|
7
|
+
const PythonTuple_1 = require("./PythonTuple");
|
|
8
|
+
describe('PythonParser', () => {
|
|
9
|
+
describe('parse', () => {
|
|
10
|
+
it('can parse a complex python dictionary notation', () => {
|
|
11
|
+
const notationDoc = `{
|
|
12
|
+
"nested_dict": {
|
|
13
|
+
"key1": "value1",
|
|
14
|
+
"key2": {
|
|
15
|
+
"inner_key": "inner_value"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"list": [1, 2, 3, [4, 5]],
|
|
19
|
+
"boolean": True,
|
|
20
|
+
"tuple": (1, 2, ("nested_tuple", 3)),
|
|
21
|
+
"bytes": b'hello',
|
|
22
|
+
"float": 3.14,
|
|
23
|
+
'integer': 42,
|
|
24
|
+
"hex_number": 0x1A,
|
|
25
|
+
"octal_number": 0o52,
|
|
26
|
+
"string_single": 'single-quoted\\' string',
|
|
27
|
+
"string_double": "double-quoted \\" string",
|
|
28
|
+
"string_triple_single": '''triple-quoted\'
|
|
29
|
+
single-quoted string''',
|
|
30
|
+
"string_triple_double": """triple-quoted\"
|
|
31
|
+
double-quoted string""",
|
|
32
|
+
"raw_string_single": r'raw single-quoted\\ string',
|
|
33
|
+
"raw_string_double": r"raw double-quoted\\ string",
|
|
34
|
+
"raw_string_triple_single": r'''raw triple\\''-quoted
|
|
35
|
+
single-quoted string''',
|
|
36
|
+
"raw_string_triple_double": r"""raw triple\\""-quoted
|
|
37
|
+
double-quoted string"""
|
|
38
|
+
}`;
|
|
39
|
+
const parsed = PythonParser_1.PythonParser.parse(notationDoc);
|
|
40
|
+
if (!(parsed instanceof PythonDict_1.PythonDict)) {
|
|
41
|
+
assert(false);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const nested = parsed.get('nested_dict');
|
|
45
|
+
assert.ok(nested);
|
|
46
|
+
if (!(nested instanceof PythonDict_1.PythonDict)) {
|
|
47
|
+
assert(false);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
assert.equal(nested.get('key1'), 'value1');
|
|
51
|
+
const key2 = nested.get('key2');
|
|
52
|
+
if (!(key2 instanceof PythonDict_1.PythonDict)) {
|
|
53
|
+
assert(false);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
assert.equal(key2.get('inner_key'), 'inner_value');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const list = parsed.get('list');
|
|
60
|
+
if (!(list instanceof PythonList_1.PythonList)) {
|
|
61
|
+
assert(false);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
assert.equal(list.length, 4);
|
|
65
|
+
assert.equal(list.get(0), 1);
|
|
66
|
+
assert.equal(list.get(1), 2);
|
|
67
|
+
assert.equal(list.get(2), 3);
|
|
68
|
+
const nestedList = list.get(3);
|
|
69
|
+
if (!(nestedList instanceof PythonList_1.PythonList)) {
|
|
70
|
+
assert(false);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
assert.equal(nestedList.get(0), 4);
|
|
74
|
+
assert.equal(nestedList.get(1), 5);
|
|
75
|
+
}
|
|
76
|
+
assert.equal(list.get(4), undefined);
|
|
77
|
+
}
|
|
78
|
+
assert.equal(parsed.get('boolean'), true);
|
|
79
|
+
const tuple = parsed.get('tuple');
|
|
80
|
+
if (!(tuple instanceof PythonTuple_1.PythonTuple)) {
|
|
81
|
+
assert(false);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
assert.equal(tuple.get(0), 1);
|
|
85
|
+
assert.equal(tuple.get(1), 2);
|
|
86
|
+
const nestedTuple = tuple.get(2);
|
|
87
|
+
if (!(nestedTuple instanceof PythonTuple_1.PythonTuple)) {
|
|
88
|
+
assert(false);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
assert.equal(nestedTuple.get(0), 'nested_tuple');
|
|
92
|
+
assert.equal(nestedTuple.get(1), 3);
|
|
93
|
+
}
|
|
94
|
+
assert.equal(tuple.get(3), undefined);
|
|
95
|
+
}
|
|
96
|
+
const buf = parsed.get('bytes');
|
|
97
|
+
if (buf instanceof Buffer) {
|
|
98
|
+
assert.equal(Buffer.from('hello', 'binary').compare(buf), 0);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
assert(false);
|
|
102
|
+
}
|
|
103
|
+
assert.equal(parsed.get('float'), 3.14);
|
|
104
|
+
assert.equal(parsed.get('integer'), 42);
|
|
105
|
+
assert.equal(parsed.get('hex_number'), 26);
|
|
106
|
+
assert.equal(parsed.get('octal_number'), 42);
|
|
107
|
+
assert.equal(parsed.get('string_single'), 'single-quoted\\\' string');
|
|
108
|
+
assert.equal(parsed.get('string_double'), 'double-quoted \\" string');
|
|
109
|
+
assert.equal(parsed.get('string_triple_single'), 'triple-quoted\'\nsingle-quoted string');
|
|
110
|
+
assert.equal(parsed.get('string_triple_double'), 'triple-quoted\"\ndouble-quoted string');
|
|
111
|
+
assert.equal(parsed.get('raw_string_single'), 'raw single-quoted\\ string');
|
|
112
|
+
assert.equal(parsed.get('raw_string_double'), 'raw double-quoted\\ string');
|
|
113
|
+
assert.equal(parsed.get('raw_string_triple_single'), 'raw triple\\\'\'-quoted\nsingle-quoted string');
|
|
114
|
+
assert.equal(parsed.get('raw_string_triple_double'), 'raw triple\\""-quoted\ndouble-quoted string');
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=PythonParser.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PythonParser.spec.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonParser.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,13 @@ export declare enum PythonTokenType {
|
|
|
7
7
|
BOOLEAN = 5,
|
|
8
8
|
INTEGER = 6,
|
|
9
9
|
FLOAT = 7,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
STRING = 8,
|
|
11
|
+
BINARY_STRING = 9,
|
|
12
|
+
RAW_STRING = 10,
|
|
13
|
+
LIST_START = 11,
|
|
14
|
+
LIST_END = 12,
|
|
15
|
+
TUPLE_START = 13,
|
|
16
|
+
TUPLE_END = 14,
|
|
17
17
|
HEX = 15,
|
|
18
18
|
OCTAL = 16,
|
|
19
19
|
UNKNOWN = 17
|
|
@@ -11,13 +11,13 @@ var PythonTokenType;
|
|
|
11
11
|
PythonTokenType[PythonTokenType["BOOLEAN"] = 5] = "BOOLEAN";
|
|
12
12
|
PythonTokenType[PythonTokenType["INTEGER"] = 6] = "INTEGER";
|
|
13
13
|
PythonTokenType[PythonTokenType["FLOAT"] = 7] = "FLOAT";
|
|
14
|
-
PythonTokenType[PythonTokenType["
|
|
15
|
-
PythonTokenType[PythonTokenType["
|
|
16
|
-
PythonTokenType[PythonTokenType["
|
|
17
|
-
PythonTokenType[PythonTokenType["
|
|
18
|
-
PythonTokenType[PythonTokenType["
|
|
19
|
-
PythonTokenType[PythonTokenType["
|
|
20
|
-
PythonTokenType[PythonTokenType["
|
|
14
|
+
PythonTokenType[PythonTokenType["STRING"] = 8] = "STRING";
|
|
15
|
+
PythonTokenType[PythonTokenType["BINARY_STRING"] = 9] = "BINARY_STRING";
|
|
16
|
+
PythonTokenType[PythonTokenType["RAW_STRING"] = 10] = "RAW_STRING";
|
|
17
|
+
PythonTokenType[PythonTokenType["LIST_START"] = 11] = "LIST_START";
|
|
18
|
+
PythonTokenType[PythonTokenType["LIST_END"] = 12] = "LIST_END";
|
|
19
|
+
PythonTokenType[PythonTokenType["TUPLE_START"] = 13] = "TUPLE_START";
|
|
20
|
+
PythonTokenType[PythonTokenType["TUPLE_END"] = 14] = "TUPLE_END";
|
|
21
21
|
PythonTokenType[PythonTokenType["HEX"] = 15] = "HEX";
|
|
22
22
|
PythonTokenType[PythonTokenType["OCTAL"] = 16] = "OCTAL";
|
|
23
23
|
PythonTokenType[PythonTokenType["UNKNOWN"] = 17] = "UNKNOWN";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonTokenType.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonTokenType.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAoBX;AApBD,WAAY,eAAe;IAEvB,qDAAI,CAAA;IACJ,mEAAW,CAAA;IACX,+DAAS,CAAA;IACT,uDAAK,CAAA;IACL,uDAAK,CAAA;IACL,2DAAO,CAAA;IACP,2DAAO,CAAA;IACP,uDAAK,CAAA;IACL,
|
|
1
|
+
{"version":3,"file":"PythonTokenType.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonTokenType.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAoBX;AApBD,WAAY,eAAe;IAEvB,qDAAI,CAAA;IACJ,mEAAW,CAAA;IACX,+DAAS,CAAA;IACT,uDAAK,CAAA;IACL,uDAAK,CAAA;IACL,2DAAO,CAAA;IACP,2DAAO,CAAA;IACP,uDAAK,CAAA;IACL,yDAAM,CAAA;IACN,uEAAa,CAAA;IACb,kEAAU,CAAA;IACV,kEAAU,CAAA;IACV,8DAAQ,CAAA;IACR,oEAAW,CAAA;IACX,gEAAS,CAAA;IACT,oDAAG,CAAA;IACH,wDAAK,CAAA;IACL,4DAAO,CAAA;AACX,CAAC,EApBW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAoB1B"}
|
|
@@ -4,6 +4,7 @@ import { PythonType } from './PythonType';
|
|
|
4
4
|
export declare class PythonTuple extends PythonObject {
|
|
5
5
|
data: PythonType[];
|
|
6
6
|
static parse(container: PythonTokenContainer): PythonTuple;
|
|
7
|
+
get(index: number): PythonType | undefined;
|
|
7
8
|
get length(): number;
|
|
8
9
|
toString(): string;
|
|
9
10
|
toJSON(): unknown;
|
|
@@ -10,7 +10,7 @@ class PythonTuple extends PythonObject_1.PythonObject {
|
|
|
10
10
|
this.data = [];
|
|
11
11
|
}
|
|
12
12
|
static parse(container) {
|
|
13
|
-
let expectingComma =
|
|
13
|
+
let expectingComma = false;
|
|
14
14
|
const tuple = new PythonTuple();
|
|
15
15
|
do {
|
|
16
16
|
const token = container.tokens[container.index];
|
|
@@ -42,6 +42,9 @@ class PythonTuple extends PythonObject_1.PythonObject {
|
|
|
42
42
|
} while (container.index < container.tokens.length);
|
|
43
43
|
throw new Error('Expected ) end bracket in tuple');
|
|
44
44
|
}
|
|
45
|
+
get(index) {
|
|
46
|
+
return this.data[index];
|
|
47
|
+
}
|
|
45
48
|
get length() {
|
|
46
49
|
return this.data.length;
|
|
47
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonTuple.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonTuple.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AACpD,iDAA8C;AAE9C,iDAA8C;AAE9C,MAAa,WAAY,SAAQ,2BAAY;IAA7C;;QAEW,SAAI,GAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PythonTuple.js","sourceRoot":"","sources":["../../../../lib/classes/python/PythonTuple.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AACpD,iDAA8C;AAE9C,iDAA8C;AAE9C,MAAa,WAAY,SAAQ,2BAAY;IAA7C;;QAEW,SAAI,GAAiB,EAAE,CAAC;IA6DnC,CAAC;IA3DU,MAAM,CAAC,KAAK,CAAC,SAA+B;QAE/C,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,GACA;YACI,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAChD,QAAQ,KAAK,CAAC,IAAI,EAClB;gBACI,KAAK,iCAAe,CAAC,SAAS;oBAC9B;wBACI,SAAS,CAAC,KAAK,EAAE,CAAC;wBAClB,OAAO,KAAK,CAAC;qBAChB;gBACD,KAAK,iCAAe,CAAC,KAAK;oBAC1B;wBACI,IAAI,CAAC,cAAc,EACnB;4BACI,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;yBAC/C;wBACD,cAAc,GAAG,KAAK,CAAC;wBACvB,SAAS,CAAC,KAAK,EAAE,CAAC;wBAClB,MAAM;qBACT;gBACD;oBACA;wBACI,IAAI,cAAc,EAClB;4BACI,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;yBACtC;wBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2BAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;wBACzD,cAAc,GAAG,IAAI,CAAC;wBACtB,MAAM;qBACT;aACJ;SACJ,QACM,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;QAClD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACtD,CAAC;IAEM,GAAG,CAAC,KAAa;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QAEN,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAEM,QAAQ;QAEX,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC5C,CAAC;IAEM,MAAM;QAET,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AA/DD,kCA+DC"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -104,4 +104,8 @@ import { LLGestureWaitStep } from './classes/LLGestureWaitStep';
|
|
|
104
104
|
import { LLGestureChatStep } from './classes/LLGestureChatStep';
|
|
105
105
|
import { LLGestureStepType } from './enums/LLGestureStepType';
|
|
106
106
|
import { LLLindenText } from './classes/LLLindenText';
|
|
107
|
-
|
|
107
|
+
import { LLGLTFMaterial } from './classes/LLGLTFMaterial';
|
|
108
|
+
import { ExtendedMeshData } from './classes/public/ExtendedMeshData';
|
|
109
|
+
import { ReflectionProbeData } from './classes/public/ReflectionProbeData';
|
|
110
|
+
import { RenderMaterialData } from './classes/public/RenderMaterialData';
|
|
111
|
+
export { Bot, LoginParameters, ClientEvents, BVH, ChatSourceType, UUID, Vector3, Vector2, Utils, TextureEntry, LLWearable, LLLindenText, LLGLTFMaterial, LLGesture, LLGestureAnimationStep, LLGestureSoundStep, LLGestureChatStep, LLGestureWaitStep, ParticleSystem, ExtraParams, AgentFlags, BotOptionFlags, CompressedFlags, ControlFlags, DecodeFlags, InstantMessageEventFlags, InventoryItemFlags, LoginFlags, MessageFlags, ParcelInfoFlags, PacketFlags, RegionProtocolFlags, SoundFlags, TeleportFlags, RegionFlags, RightsFlags, ParticleDataFlags, TextureFlags, PrimFlags, ParcelFlags, SimAccessFlags, TextureAnimFlags, InventoryType, AssetType, HTTPAssets, FolderType, TransferStatus, SourcePattern, BlendFunc, PCode, Bumpiness, HoleType, LayerType, MappingType, PhysicsShapeType, ProfileShape, SculptType, Shininess, LLGestureStepType, ChatEvent, DisconnectEvent, FriendRequestEvent, FriendResponseEvent, GroupChatEvent, GroupChatSessionAgentListEvent, GroupChatSessionJoinEvent, GroupNoticeEvent, GroupInviteEvent, InstantMessageEvent, InventoryOfferedEvent, LureEvent, MapInfoRangeReplyEvent, MapInfoReplyEvent, ParcelInfoReplyEvent, RegionInfoReplyEvent, TeleportEvent, ScriptDialogEvent, EventQueueStateChangeEvent, FriendOnlineEvent, FriendRightsEvent, FriendRemovedEvent, ObjectPhysicsDataEvent, ParcelPropertiesEvent, NewObjectEvent, ObjectKilledEvent, ObjectUpdatedEvent, GroupProfileReplyEvent, AvatarPropertiesReplyEvent, Avatar, Friend, FlexibleData, LightData, LightImageData, GameObject, Material, Parcel, RegionEnvironment, SculptData, MeshData, LLMesh, InventoryItem, TarReader, TarWriter, ExtendedMeshData, ReflectionProbeData, RenderMaterialData, GlobalPosition, MapLocation, SkyPreset, WaterPreset };
|
package/dist/lib/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.TarWriter = exports.TarReader = void 0;
|
|
3
|
+
exports.PCode = exports.BlendFunc = exports.SourcePattern = exports.TransferStatus = exports.FolderType = exports.HTTPAssets = exports.AssetType = exports.InventoryType = exports.TextureAnimFlags = exports.SimAccessFlags = exports.ParcelFlags = exports.PrimFlags = exports.TextureFlags = exports.ParticleDataFlags = exports.RightsFlags = exports.RegionFlags = exports.TeleportFlags = exports.SoundFlags = exports.RegionProtocolFlags = exports.PacketFlags = exports.ParcelInfoFlags = exports.MessageFlags = exports.LoginFlags = exports.InventoryItemFlags = exports.InstantMessageEventFlags = exports.DecodeFlags = exports.ControlFlags = exports.CompressedFlags = exports.BotOptionFlags = exports.AgentFlags = exports.ExtraParams = exports.ParticleSystem = exports.LLGestureWaitStep = exports.LLGestureChatStep = exports.LLGestureSoundStep = exports.LLGestureAnimationStep = exports.LLGesture = exports.LLGLTFMaterial = exports.LLLindenText = exports.LLWearable = exports.TextureEntry = exports.Utils = exports.Vector2 = exports.Vector3 = exports.UUID = exports.ChatSourceType = exports.BVH = exports.ClientEvents = exports.LoginParameters = exports.Bot = void 0;
|
|
4
|
+
exports.LLMesh = exports.MeshData = exports.SculptData = exports.RegionEnvironment = exports.Parcel = exports.Material = exports.GameObject = exports.LightImageData = exports.LightData = exports.FlexibleData = exports.Friend = exports.Avatar = exports.AvatarPropertiesReplyEvent = exports.GroupProfileReplyEvent = exports.ObjectUpdatedEvent = exports.ObjectKilledEvent = exports.NewObjectEvent = exports.ParcelPropertiesEvent = exports.ObjectPhysicsDataEvent = exports.FriendRemovedEvent = exports.FriendRightsEvent = exports.FriendOnlineEvent = exports.EventQueueStateChangeEvent = exports.ScriptDialogEvent = exports.TeleportEvent = exports.RegionInfoReplyEvent = exports.ParcelInfoReplyEvent = exports.MapInfoReplyEvent = exports.MapInfoRangeReplyEvent = exports.LureEvent = exports.InventoryOfferedEvent = exports.InstantMessageEvent = exports.GroupInviteEvent = exports.GroupNoticeEvent = exports.GroupChatSessionJoinEvent = exports.GroupChatSessionAgentListEvent = exports.GroupChatEvent = exports.FriendResponseEvent = exports.FriendRequestEvent = exports.DisconnectEvent = exports.ChatEvent = exports.LLGestureStepType = exports.Shininess = exports.SculptType = exports.ProfileShape = exports.PhysicsShapeType = exports.MappingType = exports.LayerType = exports.HoleType = exports.Bumpiness = void 0;
|
|
5
|
+
exports.RenderMaterialData = exports.ReflectionProbeData = exports.ExtendedMeshData = exports.TarWriter = exports.TarReader = exports.InventoryItem = void 0;
|
|
6
6
|
const Bot_1 = require("./Bot");
|
|
7
7
|
Object.defineProperty(exports, "Bot", { enumerable: true, get: function () { return Bot_1.Bot; } });
|
|
8
8
|
const LoginParameters_1 = require("./classes/LoginParameters");
|
|
@@ -207,4 +207,12 @@ const LLGestureStepType_1 = require("./enums/LLGestureStepType");
|
|
|
207
207
|
Object.defineProperty(exports, "LLGestureStepType", { enumerable: true, get: function () { return LLGestureStepType_1.LLGestureStepType; } });
|
|
208
208
|
const LLLindenText_1 = require("./classes/LLLindenText");
|
|
209
209
|
Object.defineProperty(exports, "LLLindenText", { enumerable: true, get: function () { return LLLindenText_1.LLLindenText; } });
|
|
210
|
+
const LLGLTFMaterial_1 = require("./classes/LLGLTFMaterial");
|
|
211
|
+
Object.defineProperty(exports, "LLGLTFMaterial", { enumerable: true, get: function () { return LLGLTFMaterial_1.LLGLTFMaterial; } });
|
|
212
|
+
const ExtendedMeshData_1 = require("./classes/public/ExtendedMeshData");
|
|
213
|
+
Object.defineProperty(exports, "ExtendedMeshData", { enumerable: true, get: function () { return ExtendedMeshData_1.ExtendedMeshData; } });
|
|
214
|
+
const ReflectionProbeData_1 = require("./classes/public/ReflectionProbeData");
|
|
215
|
+
Object.defineProperty(exports, "ReflectionProbeData", { enumerable: true, get: function () { return ReflectionProbeData_1.ReflectionProbeData; } });
|
|
216
|
+
const RenderMaterialData_1 = require("./classes/public/RenderMaterialData");
|
|
217
|
+
Object.defineProperty(exports, "RenderMaterialData", { enumerable: true, get: function () { return RenderMaterialData_1.RenderMaterialData; } });
|
|
210
218
|
//# sourceMappingURL=index.js.map
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'mocha';
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("mocha");
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const Packet_1 = require("../classes/Packet");
|
|
7
|
+
const DecodeFlags_1 = require("../enums/DecodeFlags");
|
|
8
|
+
const PacketFlags_1 = require("../enums/PacketFlags");
|
|
9
|
+
function compareArrays(arr1, arr2) {
|
|
10
|
+
if (arr1.length === arr2.length
|
|
11
|
+
&& arr1.every(function (u, i) {
|
|
12
|
+
return u === arr2[i];
|
|
13
|
+
})) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
describe('Packets', () => {
|
|
21
|
+
const p = path.resolve(__dirname + '/../../../testing/packets');
|
|
22
|
+
const files = fs.readdirSync(p);
|
|
23
|
+
for (const file of files) {
|
|
24
|
+
if (file.substr(file.length - 7) === '.packet') {
|
|
25
|
+
const fullPath = p + '/' + file;
|
|
26
|
+
const stats = fs.statSync(fullPath);
|
|
27
|
+
if (!stats.isDirectory()) {
|
|
28
|
+
describe(file, () => {
|
|
29
|
+
let pos = 0;
|
|
30
|
+
let data = Buffer.allocUnsafe(0);
|
|
31
|
+
const packet = new Packet_1.Packet();
|
|
32
|
+
const acksReceived = [];
|
|
33
|
+
const acksSent = [];
|
|
34
|
+
it('should decode correctly', (done) => {
|
|
35
|
+
try {
|
|
36
|
+
data = fs.readFileSync(fullPath);
|
|
37
|
+
pos = packet.readFromBuffer(data, 0, (number) => {
|
|
38
|
+
acksReceived.push(number);
|
|
39
|
+
}, (number) => {
|
|
40
|
+
acksSent.push(number);
|
|
41
|
+
});
|
|
42
|
+
done();
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
done(err);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
it('should have read the entire packet', (done) => {
|
|
49
|
+
if (pos < data.length) {
|
|
50
|
+
done('Finished reading but we\'re not at the end of the packet (' + pos + ' < ' + data.length + ', seq ' + packet.sequenceNumber + ')');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
done();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const jsonFN = fullPath.replace('.packet', '.json');
|
|
57
|
+
const jsFile = fs.readFileSync(jsonFN);
|
|
58
|
+
const json = JSON.parse(jsFile.toString('utf8'));
|
|
59
|
+
it('should have sent the correct number of packet ACKs', (done) => {
|
|
60
|
+
if (!compareArrays(json.sentAcks, acksSent)) {
|
|
61
|
+
done('Sent acks does not match expected');
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
done();
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
it('should have received the correct number of packet ACKs', (done) => {
|
|
68
|
+
if (!compareArrays(json.receivedAcks, acksReceived)) {
|
|
69
|
+
done('Received acks does not match expected');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
done();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
it('should match our expected decoded data', (done) => {
|
|
76
|
+
let pckt = json['packet'];
|
|
77
|
+
pckt = JSON.stringify(pckt);
|
|
78
|
+
if (JSON.stringify(packet) !== pckt) {
|
|
79
|
+
done('JSON strings do not match');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
done();
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
let buf = Buffer.allocUnsafe(0);
|
|
86
|
+
let extra = 0;
|
|
87
|
+
it('should encode back to binary', (done) => {
|
|
88
|
+
try {
|
|
89
|
+
buf = Buffer.alloc(packet.getSize());
|
|
90
|
+
buf = packet.writeToBuffer(buf, 0, DecodeFlags_1.DecodeFlags.DontChangeFlags);
|
|
91
|
+
let bl = buf.length;
|
|
92
|
+
if (packet.packetFlags & PacketFlags_1.PacketFlags.Ack) {
|
|
93
|
+
extra += 4 * acksReceived.length;
|
|
94
|
+
extra++;
|
|
95
|
+
}
|
|
96
|
+
bl += extra;
|
|
97
|
+
if (data.length !== bl) {
|
|
98
|
+
console.log(buf.toString('hex'));
|
|
99
|
+
console.log(data.toString('hex'));
|
|
100
|
+
done('Packet size ' + bl + ' but expected length was ' + data.length + ' sentAcks: ' + acksSent.length + ', receivedAcks: ' + acksReceived.length + ', getSize: ' + packet.getSize());
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
done();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
done(err);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
it('should match the original packet byte-for-byte', (done) => {
|
|
111
|
+
const trimmedData = data.slice(0, data.length - extra);
|
|
112
|
+
if (trimmedData.compare(buf) !== 0) {
|
|
113
|
+
done('Buffers do not match');
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
done();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=packets.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packets.spec.js","sourceRoot":"","sources":["../../../lib/tests/packets.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'mocha';
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("mocha");
|
|
4
|
+
const validator_1 = require("validator");
|
|
5
|
+
const assert = require("assert");
|
|
6
|
+
const UUID_1 = require("../classes/UUID");
|
|
7
|
+
describe('UUID', () => {
|
|
8
|
+
describe('random', () => {
|
|
9
|
+
it('should generate a random, valid v4 UUID', () => {
|
|
10
|
+
const uuid = UUID_1.UUID.random().toString();
|
|
11
|
+
const secondUUID = UUID_1.UUID.random().toString();
|
|
12
|
+
if (typeof uuid !== 'string') {
|
|
13
|
+
assert.fail('Returned UUID is not a string');
|
|
14
|
+
}
|
|
15
|
+
if (!validator_1.default.isUUID(uuid)) {
|
|
16
|
+
assert.fail('Returned string is not a valid UUID');
|
|
17
|
+
}
|
|
18
|
+
if (uuid === '00000000-0000-0000-0000-000000000000') {
|
|
19
|
+
assert.fail('Random UUID should not be zero');
|
|
20
|
+
}
|
|
21
|
+
if (typeof secondUUID !== 'string') {
|
|
22
|
+
assert.fail('Returned second UUID is not a string');
|
|
23
|
+
}
|
|
24
|
+
if (!validator_1.default.isUUID(secondUUID)) {
|
|
25
|
+
assert.fail('Second UUID is not a valid UUID');
|
|
26
|
+
}
|
|
27
|
+
if (secondUUID === '00000000-0000-0000-0000-000000000000') {
|
|
28
|
+
assert.fail('Random UUID should not be zero');
|
|
29
|
+
}
|
|
30
|
+
if (uuid === secondUUID) {
|
|
31
|
+
assert.fail('Two random UUIDs match! (Not random)');
|
|
32
|
+
}
|
|
33
|
+
assert.ok(true);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe('zero', () => {
|
|
37
|
+
it('should generate a zeroed, valid v4 UUID', () => {
|
|
38
|
+
const uuid = UUID_1.UUID.zero().toString();
|
|
39
|
+
if (typeof uuid !== 'string') {
|
|
40
|
+
assert.fail('Returned UUID is not a string');
|
|
41
|
+
}
|
|
42
|
+
if (!validator_1.default.isUUID(uuid)) {
|
|
43
|
+
assert.fail('Returned string is not a valid UUID');
|
|
44
|
+
}
|
|
45
|
+
if (uuid !== '00000000-0000-0000-0000-000000000000') {
|
|
46
|
+
assert.fail('UUID is not zero');
|
|
47
|
+
}
|
|
48
|
+
assert.ok(true);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('encode/decode', () => {
|
|
52
|
+
it('should correctly decode a 16-byte UUID from a buffer', () => {
|
|
53
|
+
const buf = Buffer.from('00004af668bb6fe34893881408f586c5657c4e1c9910', 'hex');
|
|
54
|
+
const uuid = new UUID_1.UUID(buf, 2);
|
|
55
|
+
const str = uuid.toString();
|
|
56
|
+
if (typeof str !== 'string') {
|
|
57
|
+
assert.fail('Returned UUID is not a string');
|
|
58
|
+
}
|
|
59
|
+
if (!validator_1.default.isUUID(str)) {
|
|
60
|
+
assert.fail('Returned string is not a valid UUID');
|
|
61
|
+
}
|
|
62
|
+
if (str !== '4af668bb-6fe3-4893-8814-08f586c5657c') {
|
|
63
|
+
assert.fail('UUID decoded incorrectly');
|
|
64
|
+
}
|
|
65
|
+
assert.ok(true);
|
|
66
|
+
});
|
|
67
|
+
it('should correct encode a UUID into the correct position in a buffer', () => {
|
|
68
|
+
const buf = Buffer.alloc(22);
|
|
69
|
+
const uuid = new UUID_1.UUID('4af668bb-6fe3-4893-8814-08f586c5657c');
|
|
70
|
+
uuid.writeToBuffer(buf, 2);
|
|
71
|
+
const bufCmp = Buffer.from('00004af668bb6fe34893881408f586c5657c00000000', 'hex');
|
|
72
|
+
if (buf.compare(bufCmp) !== 0) {
|
|
73
|
+
assert.fail('Encoded buffer does not match expected output');
|
|
74
|
+
}
|
|
75
|
+
const result = uuid.toString();
|
|
76
|
+
if (typeof result !== 'string') {
|
|
77
|
+
assert.fail('Returned UUID is not a string');
|
|
78
|
+
}
|
|
79
|
+
if (!validator_1.default.isUUID(result)) {
|
|
80
|
+
assert.fail('Returned string is not a valid UUID');
|
|
81
|
+
}
|
|
82
|
+
assert.ok(true);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=uuid.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.spec.js","sourceRoot":"","sources":["../../../lib/tests/uuid.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@caspertech/node-metaverse",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "A node.js interface for Second Life.",
|
|
5
5
|
"main": "dist/lib/index.js",
|
|
6
6
|
"types": "dist/lib/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"setup": "npm install",
|
|
9
9
|
"prepublish": "npm run build",
|
|
10
|
-
"test-only": "mocha -r source-map-support/register dist
|
|
10
|
+
"test-only": "mocha -r source-map-support/register 'dist/**/*.spec.js'",
|
|
11
11
|
"pretest": "npm run build",
|
|
12
12
|
"test": "npm run test-only",
|
|
13
13
|
"build": "tsc --removeComments",
|