@caspertech/node-metaverse 0.6.4 → 0.6.6
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.spec.js +47 -17
- package/dist/lib/classes/LLGLTFMaterial.spec.js.map +1 -1
- package/dist/lib/classes/LLGLTFMaterialData.d.ts +180 -21
- package/dist/lib/classes/LLGLTFMaterialOverride.d.ts +16 -0
- package/dist/lib/classes/LLGLTFMaterialOverride.js +7 -0
- package/dist/lib/classes/LLGLTFMaterialOverride.js.map +1 -0
- package/dist/lib/classes/ObjectStoreFull.js +86 -58
- package/dist/lib/classes/ObjectStoreFull.js.map +1 -1
- package/dist/lib/classes/ObjectStoreLite.d.ts +38 -15
- package/dist/lib/classes/ObjectStoreLite.js +229 -116
- package/dist/lib/classes/ObjectStoreLite.js.map +1 -1
- package/dist/lib/classes/TextureEntry.d.ts +2 -0
- package/dist/lib/classes/TextureEntry.js +1 -0
- package/dist/lib/classes/TextureEntry.js.map +1 -1
- package/dist/lib/classes/commands/CommunicationsCommands.js +21 -0
- package/dist/lib/classes/commands/CommunicationsCommands.js.map +1 -1
- package/dist/lib/classes/commands/FriendCommands.js +3 -0
- package/dist/lib/classes/commands/FriendCommands.js.map +1 -1
- package/dist/lib/classes/commands/GroupCommands.js +9 -0
- package/dist/lib/classes/commands/GroupCommands.js.map +1 -1
- package/dist/lib/classes/llsd/LLSDArray.d.ts +5 -0
- package/dist/lib/classes/llsd/LLSDArray.js +45 -0
- package/dist/lib/classes/llsd/LLSDArray.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDMap.d.ts +10 -0
- package/dist/lib/classes/llsd/LLSDMap.js +94 -0
- package/dist/lib/classes/llsd/LLSDMap.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDNotationParser.d.ts +9 -0
- package/dist/lib/classes/llsd/LLSDNotationParser.js +174 -0
- package/dist/lib/classes/llsd/LLSDNotationParser.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDNotationParser.spec.d.ts +1 -0
- package/dist/lib/classes/llsd/LLSDNotationParser.spec.js +167 -0
- package/dist/lib/classes/llsd/LLSDNotationParser.spec.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDObject.d.ts +4 -0
- package/dist/lib/classes/llsd/LLSDObject.js +10 -0
- package/dist/lib/classes/llsd/LLSDObject.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDToken.d.ts +10 -0
- package/dist/lib/classes/llsd/LLSDToken.js +3 -0
- package/dist/lib/classes/llsd/LLSDToken.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDTokenContainer.d.ts +7 -0
- package/dist/lib/classes/llsd/LLSDTokenContainer.js +3 -0
- package/dist/lib/classes/llsd/LLSDTokenContainer.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDTokenGenerator.d.ts +2 -0
- package/dist/lib/classes/llsd/LLSDTokenGenerator.js +3 -0
- package/dist/lib/classes/llsd/LLSDTokenGenerator.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDTokenSpec.d.ts +5 -0
- package/dist/lib/classes/llsd/LLSDTokenSpec.js +3 -0
- package/dist/lib/classes/llsd/LLSDTokenSpec.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDTokenType.d.ts +22 -0
- package/dist/lib/classes/llsd/LLSDTokenType.js +27 -0
- package/dist/lib/classes/llsd/LLSDTokenType.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDType.d.ts +4 -0
- package/dist/lib/classes/llsd/LLSDType.js +3 -0
- package/dist/lib/classes/llsd/LLSDType.js.map +1 -0
- package/dist/lib/classes/public/GameObject.js +161 -2
- package/dist/lib/classes/public/GameObject.js.map +1 -1
- package/dist/lib/classes/public/GameObject.spec.d.ts +1 -0
- package/dist/lib/classes/public/GameObject.spec.js +148 -0
- package/dist/lib/classes/public/GameObject.spec.js.map +1 -0
- package/dist/lib/classes/python/PythonDict.js +6 -2
- package/dist/lib/classes/python/PythonDict.js.map +1 -1
- package/dist/lib/classes/python/PythonParser.js +5 -4
- package/dist/lib/classes/python/PythonParser.js.map +1 -1
- package/dist/lib/classes/python/PythonParser.spec.js +8 -0
- package/dist/lib/classes/python/PythonParser.spec.js.map +1 -1
- package/dist/lib/classes/python/PythonSet.js +2 -0
- package/dist/lib/classes/python/PythonSet.js.map +1 -1
- package/dist/lib/classes/python/PythonTokenType.js +2 -2
- package/dist/lib/classes/python/PythonTokenType.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDArray.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDArray.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAChD,6DAA0D;AAG1D,MAAa,SAAS;IAEX,MAAM,CAAC,KAAK,CAAC,GAAuB;QAEvC,MAAM,GAAG,GAAe,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAyB,SAAS,CAAC;QAC5C,OAAO,IAAI,EACX;YACI,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;YACpB,IAAI,KAAK,KAAK,SAAS,EACvB;gBACI,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACvD;YACD,QAAQ,KAAK,CAAC,IAAI,EAClB;gBACI,KAAK,6BAAa,CAAC,UAAU;oBAC7B;wBACI,SAAS;qBACZ;gBACD,KAAK,6BAAa,CAAC,SAAS;oBAC5B;wBACI,IAAI,KAAK,KAAK,SAAS,EACvB;4BACI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACnB;wBACD,OAAO,GAAG,CAAC;qBACd;gBACD,KAAK,6BAAa,CAAC,KAAK;oBACxB;wBACI,IAAI,KAAK,KAAK,SAAS,EACvB;4BACI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;yBAClD;wBACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAChB,KAAK,GAAG,SAAS,CAAC;wBAClB,SAAS;qBACZ;aACJ;YAED,IAAI,KAAK,KAAK,SAAS,EACvB;gBACI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAClD;YAED,KAAK,GAAG,uCAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC1D;IACL,CAAC;CACJ;AA/CD,8BA+CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LLSDObject } from './LLSDObject';
|
|
2
|
+
import { LLSDTokenGenerator } from './LLSDTokenGenerator';
|
|
3
|
+
import { LLSDType } from './LLSDType';
|
|
4
|
+
export declare class LLSDMap extends LLSDObject {
|
|
5
|
+
data: Map<LLSDType, LLSDType>;
|
|
6
|
+
static parse(gen: LLSDTokenGenerator): LLSDMap;
|
|
7
|
+
get length(): number;
|
|
8
|
+
get(key: LLSDType): LLSDType | undefined;
|
|
9
|
+
toJSON(): unknown;
|
|
10
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLSDMap = void 0;
|
|
4
|
+
const LLSDObject_1 = require("./LLSDObject");
|
|
5
|
+
const LLSDTokenType_1 = require("./LLSDTokenType");
|
|
6
|
+
const LLSDNotationParser_1 = require("./LLSDNotationParser");
|
|
7
|
+
class LLSDMap extends LLSDObject_1.LLSDObject {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.data = new Map();
|
|
11
|
+
}
|
|
12
|
+
static parse(gen) {
|
|
13
|
+
const m = new LLSDMap();
|
|
14
|
+
let expectsKey = true;
|
|
15
|
+
let key = undefined;
|
|
16
|
+
let value = undefined;
|
|
17
|
+
while (true) {
|
|
18
|
+
const token = gen();
|
|
19
|
+
if (token === undefined) {
|
|
20
|
+
throw new Error('Unexpected end of input in map');
|
|
21
|
+
}
|
|
22
|
+
switch (token.type) {
|
|
23
|
+
case LLSDTokenType_1.LLSDTokenType.WHITESPACE:
|
|
24
|
+
{
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
case LLSDTokenType_1.LLSDTokenType.MAP_END:
|
|
28
|
+
{
|
|
29
|
+
if (expectsKey) {
|
|
30
|
+
throw new Error('Unexpected end of map');
|
|
31
|
+
}
|
|
32
|
+
if (key !== undefined && value !== undefined) {
|
|
33
|
+
m.data.set(key, value);
|
|
34
|
+
}
|
|
35
|
+
else if (m.data.size > 0) {
|
|
36
|
+
throw new Error('Expected value before end of map');
|
|
37
|
+
}
|
|
38
|
+
return m;
|
|
39
|
+
}
|
|
40
|
+
case LLSDTokenType_1.LLSDTokenType.COLON:
|
|
41
|
+
{
|
|
42
|
+
if (!expectsKey) {
|
|
43
|
+
throw new Error('Unexpected symbol: :');
|
|
44
|
+
}
|
|
45
|
+
if (key === undefined) {
|
|
46
|
+
throw new Error('Empty key not allowed');
|
|
47
|
+
}
|
|
48
|
+
expectsKey = false;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
case LLSDTokenType_1.LLSDTokenType.COMMA:
|
|
52
|
+
{
|
|
53
|
+
if (expectsKey) {
|
|
54
|
+
throw new Error('Empty map entry not allowed');
|
|
55
|
+
}
|
|
56
|
+
if (value === undefined) {
|
|
57
|
+
throw new Error('Empty map value not allowed');
|
|
58
|
+
}
|
|
59
|
+
if (key !== undefined) {
|
|
60
|
+
m.data.set(key, value);
|
|
61
|
+
}
|
|
62
|
+
key = undefined;
|
|
63
|
+
value = undefined;
|
|
64
|
+
expectsKey = true;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (expectsKey && key !== undefined) {
|
|
69
|
+
throw new Error('Colon expected');
|
|
70
|
+
}
|
|
71
|
+
else if (value !== undefined) {
|
|
72
|
+
throw new Error('Comma or end brace expected');
|
|
73
|
+
}
|
|
74
|
+
const val = LLSDNotationParser_1.LLSDNotationParser.parseValueToken(gen, token);
|
|
75
|
+
if (expectsKey) {
|
|
76
|
+
key = val;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
value = val;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
get length() {
|
|
84
|
+
return Object.keys(this.data).length;
|
|
85
|
+
}
|
|
86
|
+
get(key) {
|
|
87
|
+
return this.data.get(key);
|
|
88
|
+
}
|
|
89
|
+
toJSON() {
|
|
90
|
+
return Object.fromEntries(this.data);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.LLSDMap = LLSDMap;
|
|
94
|
+
//# sourceMappingURL=LLSDMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDMap.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LLSDType } from './LLSDType';
|
|
2
|
+
import { LLSDToken } from './LLSDToken';
|
|
3
|
+
import { LLSDTokenGenerator } from './LLSDTokenGenerator';
|
|
4
|
+
export declare class LLSDNotationParser {
|
|
5
|
+
private static tokenSpecs;
|
|
6
|
+
private static tokenize;
|
|
7
|
+
static parseValueToken(gen: LLSDTokenGenerator, initialToken?: LLSDToken): LLSDType;
|
|
8
|
+
static parse(input: string): LLSDType;
|
|
9
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLSDNotationParser = void 0;
|
|
4
|
+
const LLSDTokenType_1 = require("./LLSDTokenType");
|
|
5
|
+
const LLSDMap_1 = require("./LLSDMap");
|
|
6
|
+
const UUID_1 = require("../UUID");
|
|
7
|
+
const LLSDArray_1 = require("./LLSDArray");
|
|
8
|
+
class LLSDNotationParser {
|
|
9
|
+
static *tokenize(inpt) {
|
|
10
|
+
const dataContainer = {
|
|
11
|
+
input: inpt,
|
|
12
|
+
index: 0
|
|
13
|
+
};
|
|
14
|
+
while (dataContainer.index < dataContainer.input.length) {
|
|
15
|
+
const currentInput = dataContainer.input.slice(dataContainer.index);
|
|
16
|
+
if (currentInput.length === 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
let matched = false;
|
|
20
|
+
for (const { regex, type } of this.tokenSpecs) {
|
|
21
|
+
const tokenMatch = currentInput.match(regex);
|
|
22
|
+
if (tokenMatch) {
|
|
23
|
+
matched = true;
|
|
24
|
+
let value = tokenMatch[0];
|
|
25
|
+
if (tokenMatch.length > 1) {
|
|
26
|
+
value = tokenMatch[tokenMatch.length - 1];
|
|
27
|
+
}
|
|
28
|
+
dataContainer.index += tokenMatch[0].length;
|
|
29
|
+
yield { type, value, rawValue: tokenMatch[0], dataContainer };
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!matched) {
|
|
34
|
+
dataContainer.index++;
|
|
35
|
+
yield { type: LLSDTokenType_1.LLSDTokenType.UNKNOWN, value: dataContainer.input[dataContainer.index - 1], rawValue: dataContainer.input[dataContainer.index - 1], dataContainer };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
static parseValueToken(gen, initialToken) {
|
|
40
|
+
while (true) {
|
|
41
|
+
let t;
|
|
42
|
+
if (initialToken !== undefined) {
|
|
43
|
+
t = initialToken;
|
|
44
|
+
initialToken = undefined;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
t = gen();
|
|
48
|
+
if (t === undefined) {
|
|
49
|
+
throw new Error('Unexpected end of input');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
switch (t.type) {
|
|
53
|
+
case LLSDTokenType_1.LLSDTokenType.UNKNOWN:
|
|
54
|
+
{
|
|
55
|
+
throw new Error('Unexpected token: ' + t.value);
|
|
56
|
+
}
|
|
57
|
+
case LLSDTokenType_1.LLSDTokenType.WHITESPACE:
|
|
58
|
+
{
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
case LLSDTokenType_1.LLSDTokenType.NULL:
|
|
62
|
+
{
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
case LLSDTokenType_1.LLSDTokenType.BOOLEAN:
|
|
66
|
+
{
|
|
67
|
+
return t.value === 'true' || t.value === 'TRUE' || t.value === 'T' || t.value === 't' || t.value === '1';
|
|
68
|
+
}
|
|
69
|
+
case LLSDTokenType_1.LLSDTokenType.INTEGER:
|
|
70
|
+
{
|
|
71
|
+
return parseInt(t.value, 10);
|
|
72
|
+
}
|
|
73
|
+
case LLSDTokenType_1.LLSDTokenType.REAL:
|
|
74
|
+
{
|
|
75
|
+
return parseFloat(t.value);
|
|
76
|
+
}
|
|
77
|
+
case LLSDTokenType_1.LLSDTokenType.UUID:
|
|
78
|
+
{
|
|
79
|
+
return new UUID_1.UUID(t.value);
|
|
80
|
+
}
|
|
81
|
+
case LLSDTokenType_1.LLSDTokenType.STRING_FIXED_SINGLE:
|
|
82
|
+
{
|
|
83
|
+
return t.value.replace(/\\'/, '\'')
|
|
84
|
+
.replace(/\\\\/g, '\\');
|
|
85
|
+
}
|
|
86
|
+
case LLSDTokenType_1.LLSDTokenType.STRING_FIXED_DOUBLE:
|
|
87
|
+
{
|
|
88
|
+
return t.value.replace(/\\"/, '"')
|
|
89
|
+
.replace(/\\\\/g, '\\');
|
|
90
|
+
}
|
|
91
|
+
case LLSDTokenType_1.LLSDTokenType.URI:
|
|
92
|
+
{
|
|
93
|
+
return t.value;
|
|
94
|
+
}
|
|
95
|
+
case LLSDTokenType_1.LLSDTokenType.DATE:
|
|
96
|
+
{
|
|
97
|
+
return new Date(t.value);
|
|
98
|
+
}
|
|
99
|
+
case LLSDTokenType_1.LLSDTokenType.BINARY_STATIC:
|
|
100
|
+
{
|
|
101
|
+
const b = t.value.match(/^b([0-9]{2})"([0-9a-zA-Z+\/=]*?)"/);
|
|
102
|
+
if (b === null || b.length < 3) {
|
|
103
|
+
throw new Error('Invalid BINARY_STATIC');
|
|
104
|
+
}
|
|
105
|
+
const base = parseInt(b[1], 10);
|
|
106
|
+
if (base !== 16 && base !== 64) {
|
|
107
|
+
throw new Error('Unsupported base ' + String(base));
|
|
108
|
+
}
|
|
109
|
+
return Buffer.from(b[2], base === 64 ? 'base64' : 'hex');
|
|
110
|
+
}
|
|
111
|
+
case LLSDTokenType_1.LLSDTokenType.STRING_DYNAMIC_START:
|
|
112
|
+
{
|
|
113
|
+
const length = parseInt(t.value, 10);
|
|
114
|
+
const s = t.dataContainer.input.slice(t.dataContainer.index, t.dataContainer.index + length);
|
|
115
|
+
t.dataContainer.index += length;
|
|
116
|
+
if (t.dataContainer.input[t.dataContainer.index] !== '"') {
|
|
117
|
+
throw new Error('Expected " at end of dynamic string');
|
|
118
|
+
}
|
|
119
|
+
t.dataContainer.index += 1;
|
|
120
|
+
return s;
|
|
121
|
+
}
|
|
122
|
+
case LLSDTokenType_1.LLSDTokenType.BINARY_DYNAMIC_START:
|
|
123
|
+
{
|
|
124
|
+
const length = parseInt(t.value, 10);
|
|
125
|
+
const s = t.dataContainer.input.slice(t.dataContainer.index, t.dataContainer.index + length);
|
|
126
|
+
t.dataContainer.index += length;
|
|
127
|
+
if (t.dataContainer.input[t.dataContainer.index] !== '"') {
|
|
128
|
+
throw new Error('Expected " at end of dynamic binary string');
|
|
129
|
+
}
|
|
130
|
+
t.dataContainer.index += 1;
|
|
131
|
+
return Buffer.from(s, 'binary');
|
|
132
|
+
}
|
|
133
|
+
case LLSDTokenType_1.LLSDTokenType.MAP_START:
|
|
134
|
+
{
|
|
135
|
+
return LLSDMap_1.LLSDMap.parse(gen);
|
|
136
|
+
}
|
|
137
|
+
case LLSDTokenType_1.LLSDTokenType.ARRAY_START:
|
|
138
|
+
{
|
|
139
|
+
return LLSDArray_1.LLSDArray.parse(gen);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
static parse(input) {
|
|
145
|
+
const generator = this.tokenize(input);
|
|
146
|
+
const getToken = () => {
|
|
147
|
+
return generator.next().value;
|
|
148
|
+
};
|
|
149
|
+
return this.parseValueToken(getToken);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.LLSDNotationParser = LLSDNotationParser;
|
|
153
|
+
LLSDNotationParser.tokenSpecs = [
|
|
154
|
+
{ regex: /^\s+/, type: LLSDTokenType_1.LLSDTokenType.WHITESPACE },
|
|
155
|
+
{ regex: /^!/, type: LLSDTokenType_1.LLSDTokenType.NULL },
|
|
156
|
+
{ regex: /^\{/, type: LLSDTokenType_1.LLSDTokenType.MAP_START },
|
|
157
|
+
{ regex: /^}/, type: LLSDTokenType_1.LLSDTokenType.MAP_END },
|
|
158
|
+
{ regex: /^:/, type: LLSDTokenType_1.LLSDTokenType.COLON },
|
|
159
|
+
{ regex: /^,/, type: LLSDTokenType_1.LLSDTokenType.COMMA },
|
|
160
|
+
{ regex: /^\[/, type: LLSDTokenType_1.LLSDTokenType.ARRAY_START },
|
|
161
|
+
{ regex: /^]/, type: LLSDTokenType_1.LLSDTokenType.ARRAY_END },
|
|
162
|
+
{ regex: /^(?:true|false|TRUE|FALSE|1|0|T|F|t|f)/, type: LLSDTokenType_1.LLSDTokenType.BOOLEAN },
|
|
163
|
+
{ regex: /^i(-?[0-9]+)/, type: LLSDTokenType_1.LLSDTokenType.INTEGER },
|
|
164
|
+
{ regex: /^r(-?[0-9.]+)/, type: LLSDTokenType_1.LLSDTokenType.REAL },
|
|
165
|
+
{ regex: /^u([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/, type: LLSDTokenType_1.LLSDTokenType.UUID },
|
|
166
|
+
{ regex: /^'([^'\\]*(?:\\.[^'\\\n]*)*)'/, type: LLSDTokenType_1.LLSDTokenType.STRING_FIXED_SINGLE },
|
|
167
|
+
{ regex: /^"([^"\\]*(?:\\.[^"\\\n]*)*)"/, type: LLSDTokenType_1.LLSDTokenType.STRING_FIXED_DOUBLE },
|
|
168
|
+
{ regex: /^s\(([0-9]+)\)"/, type: LLSDTokenType_1.LLSDTokenType.STRING_DYNAMIC_START },
|
|
169
|
+
{ regex: /^l"([^"]*?)"/, type: LLSDTokenType_1.LLSDTokenType.URI },
|
|
170
|
+
{ regex: /^d"([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{2}Z)"/, type: LLSDTokenType_1.LLSDTokenType.DATE },
|
|
171
|
+
{ regex: /^b[0-9]{2}"[0-9a-zA-Z+\/=]*?"/, type: LLSDTokenType_1.LLSDTokenType.BINARY_STATIC },
|
|
172
|
+
{ regex: /^b\(([0-9]+)\)"/, type: LLSDTokenType_1.LLSDTokenType.BINARY_DYNAMIC_START }
|
|
173
|
+
];
|
|
174
|
+
//# sourceMappingURL=LLSDNotationParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDNotationParser.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDNotationParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const LLSDNotationParser_1 = require("./LLSDNotationParser");
|
|
5
|
+
const LLSDMap_1 = require("./LLSDMap");
|
|
6
|
+
const UUID_1 = require("../UUID");
|
|
7
|
+
describe('LLSDNotationParser', () => {
|
|
8
|
+
describe('parse', () => {
|
|
9
|
+
it('can parse a complex LLSD Notation document', () => {
|
|
10
|
+
const notationDoc = `{
|
|
11
|
+
'nested_map': {
|
|
12
|
+
'nested_again': {
|
|
13
|
+
'array': [
|
|
14
|
+
i0,
|
|
15
|
+
'string',
|
|
16
|
+
"string2",
|
|
17
|
+
[
|
|
18
|
+
"another",
|
|
19
|
+
"array",
|
|
20
|
+
r4.3,
|
|
21
|
+
i22,
|
|
22
|
+
!,
|
|
23
|
+
{
|
|
24
|
+
'isThis': i42
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
'undef': !,
|
|
31
|
+
'booleans': [
|
|
32
|
+
true,
|
|
33
|
+
false,
|
|
34
|
+
1,
|
|
35
|
+
0,
|
|
36
|
+
T,
|
|
37
|
+
F,
|
|
38
|
+
t,
|
|
39
|
+
f,
|
|
40
|
+
TRUE,
|
|
41
|
+
FALSE
|
|
42
|
+
],
|
|
43
|
+
'integer': i69,
|
|
44
|
+
'negInt': i-69,
|
|
45
|
+
'real': r3.141,
|
|
46
|
+
'realNeg': r-3.141,
|
|
47
|
+
'uuid': ufb54f6b1-8120-40c9-9aa3-f9abef1a168f,
|
|
48
|
+
'string1': "gday\\"mate",
|
|
49
|
+
'string2': 'gday\\'mate',
|
|
50
|
+
'string3': s(11)"hello"there",
|
|
51
|
+
'uri': l"https://secondlife.com/",
|
|
52
|
+
'date': d"2023-11-10T13:32:32.93Z",
|
|
53
|
+
'binary': b64"amVsbHlmaXNo",
|
|
54
|
+
'binary2': b16"6261636F6E62697473",
|
|
55
|
+
'binary3': b(32)"KÚ~¬\béGÀt|Ïh,9µEK¹*;]ÆÁåb/"
|
|
56
|
+
}`;
|
|
57
|
+
const parsed = LLSDNotationParser_1.LLSDNotationParser.parse(notationDoc);
|
|
58
|
+
if (!(parsed instanceof LLSDMap_1.LLSDMap)) {
|
|
59
|
+
assert('Parsed document is not a map');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const nested = parsed.get('nested_map');
|
|
63
|
+
if (nested instanceof LLSDMap_1.LLSDMap) {
|
|
64
|
+
const nestedAgain = nested.get('nested_again');
|
|
65
|
+
if (nestedAgain instanceof LLSDMap_1.LLSDMap) {
|
|
66
|
+
const arr = nestedAgain.get('array');
|
|
67
|
+
if (!Array.isArray(arr)) {
|
|
68
|
+
assert(false, 'Nested array is not an array');
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
assert.equal(arr.length, 4);
|
|
72
|
+
assert.equal(arr[0], 0);
|
|
73
|
+
assert.equal(arr[1], 'string');
|
|
74
|
+
assert.equal(arr[2], 'string2');
|
|
75
|
+
const nestedAgainArr = arr[3];
|
|
76
|
+
if (!Array.isArray(nestedAgainArr)) {
|
|
77
|
+
assert(false, 'Nested again array is not an array');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
assert.equal(nestedAgainArr.length, 6);
|
|
81
|
+
assert.equal(nestedAgainArr[0], 'another');
|
|
82
|
+
assert.equal(nestedAgainArr[1], 'array');
|
|
83
|
+
assert.equal(nestedAgainArr[2], 4.3);
|
|
84
|
+
assert.equal(nestedAgainArr[3], 22);
|
|
85
|
+
assert.equal(nestedAgainArr[4], null);
|
|
86
|
+
const thirdNestedMap = nestedAgainArr[5];
|
|
87
|
+
if (thirdNestedMap instanceof LLSDMap_1.LLSDMap) {
|
|
88
|
+
assert.equal(thirdNestedMap.get('isThis'), 42);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
assert(false, 'Third nested map is not a map');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
assert(false, 'NestedAgain is not a map');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
assert(false, 'Nested is not a map');
|
|
102
|
+
}
|
|
103
|
+
assert.equal(parsed.get('undef'), null);
|
|
104
|
+
const bools = parsed.get('booleans');
|
|
105
|
+
if (!Array.isArray(bools)) {
|
|
106
|
+
assert(false, 'Booleans array is not bools');
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
assert.equal(bools.length, 10);
|
|
110
|
+
assert.equal(bools[0], true);
|
|
111
|
+
assert.equal(bools[1], false);
|
|
112
|
+
assert.equal(bools[2], true);
|
|
113
|
+
assert.equal(bools[3], false);
|
|
114
|
+
assert.equal(bools[4], true);
|
|
115
|
+
assert.equal(bools[5], false);
|
|
116
|
+
assert.equal(bools[6], true);
|
|
117
|
+
assert.equal(bools[7], false);
|
|
118
|
+
assert.equal(bools[8], true);
|
|
119
|
+
assert.equal(bools[9], false);
|
|
120
|
+
}
|
|
121
|
+
assert.equal(parsed.get('integer'), 69);
|
|
122
|
+
assert.equal(parsed.get('negInt'), -69);
|
|
123
|
+
assert.equal(parsed.get('real'), 3.141);
|
|
124
|
+
assert.equal(parsed.get('realNeg'), -3.141);
|
|
125
|
+
const u = parsed.get('uuid');
|
|
126
|
+
if (u instanceof UUID_1.UUID) {
|
|
127
|
+
assert.equal(u.equals('fb54f6b1-8120-40c9-9aa3-f9abef1a168f'), true);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
assert(false, 'UUID is not a UUID');
|
|
131
|
+
}
|
|
132
|
+
assert.equal(parsed.get('string1'), 'gday"mate');
|
|
133
|
+
assert.equal(parsed.get('string2'), 'gday\'mate');
|
|
134
|
+
assert.equal(parsed.get('string3'), 'hello"there');
|
|
135
|
+
assert.equal(parsed.get('uri'), 'https://secondlife.com/');
|
|
136
|
+
const d = parsed.get('date');
|
|
137
|
+
if (d instanceof Date) {
|
|
138
|
+
assert.equal(d.getTime(), 1699623152930);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
assert(false, 'Date entry is not a date');
|
|
142
|
+
}
|
|
143
|
+
const buf1 = parsed.get('binary');
|
|
144
|
+
if (buf1 instanceof Buffer) {
|
|
145
|
+
assert.equal(buf1.toString('utf-8'), 'jellyfish');
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
assert(false, 'Buf1 is not a buffer');
|
|
149
|
+
}
|
|
150
|
+
const buf2 = parsed.get('binary2');
|
|
151
|
+
if (buf2 instanceof Buffer) {
|
|
152
|
+
assert.equal(buf2.toString('utf-8'), 'baconbits');
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
assert(false, 'Buf2 is not a buffer');
|
|
156
|
+
}
|
|
157
|
+
const buf3 = parsed.get('binary3');
|
|
158
|
+
if (buf3 instanceof Buffer) {
|
|
159
|
+
assert.equal(buf3.equals(Buffer.from('KÚ~¬\béGÀt|Ïh,9µEK¹*;]ÆÁåb/', 'binary')), true);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
assert(false, 'Buf3 is not a buffer');
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=LLSDNotationParser.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDNotationParser.spec.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDNotationParser.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLSDObject = void 0;
|
|
4
|
+
class LLSDObject {
|
|
5
|
+
toString() {
|
|
6
|
+
return JSON.stringify(this.toJSON());
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.LLSDObject = LLSDObject;
|
|
10
|
+
//# sourceMappingURL=LLSDObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDObject.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDObject.ts"],"names":[],"mappings":";;;AAAA,MAAsB,UAAU;IAErB,QAAQ;QAEX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;CAGJ;AARD,gCAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDToken.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDToken.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDTokenContainer.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDTokenContainer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDTokenGenerator.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDTokenGenerator.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDTokenSpec.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDTokenSpec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare enum LLSDTokenType {
|
|
2
|
+
UNKNOWN = 0,
|
|
3
|
+
WHITESPACE = 1,
|
|
4
|
+
NULL = 2,
|
|
5
|
+
MAP_START = 3,
|
|
6
|
+
MAP_END = 4,
|
|
7
|
+
COLON = 5,
|
|
8
|
+
COMMA = 6,
|
|
9
|
+
ARRAY_START = 7,
|
|
10
|
+
ARRAY_END = 8,
|
|
11
|
+
BOOLEAN = 9,
|
|
12
|
+
INTEGER = 10,
|
|
13
|
+
REAL = 11,
|
|
14
|
+
UUID = 12,
|
|
15
|
+
STRING_FIXED_SINGLE = 13,
|
|
16
|
+
STRING_FIXED_DOUBLE = 14,
|
|
17
|
+
STRING_DYNAMIC_START = 15,
|
|
18
|
+
URI = 16,
|
|
19
|
+
DATE = 17,
|
|
20
|
+
BINARY_STATIC = 18,
|
|
21
|
+
BINARY_DYNAMIC_START = 19
|
|
22
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLSDTokenType = void 0;
|
|
4
|
+
var LLSDTokenType;
|
|
5
|
+
(function (LLSDTokenType) {
|
|
6
|
+
LLSDTokenType[LLSDTokenType["UNKNOWN"] = 0] = "UNKNOWN";
|
|
7
|
+
LLSDTokenType[LLSDTokenType["WHITESPACE"] = 1] = "WHITESPACE";
|
|
8
|
+
LLSDTokenType[LLSDTokenType["NULL"] = 2] = "NULL";
|
|
9
|
+
LLSDTokenType[LLSDTokenType["MAP_START"] = 3] = "MAP_START";
|
|
10
|
+
LLSDTokenType[LLSDTokenType["MAP_END"] = 4] = "MAP_END";
|
|
11
|
+
LLSDTokenType[LLSDTokenType["COLON"] = 5] = "COLON";
|
|
12
|
+
LLSDTokenType[LLSDTokenType["COMMA"] = 6] = "COMMA";
|
|
13
|
+
LLSDTokenType[LLSDTokenType["ARRAY_START"] = 7] = "ARRAY_START";
|
|
14
|
+
LLSDTokenType[LLSDTokenType["ARRAY_END"] = 8] = "ARRAY_END";
|
|
15
|
+
LLSDTokenType[LLSDTokenType["BOOLEAN"] = 9] = "BOOLEAN";
|
|
16
|
+
LLSDTokenType[LLSDTokenType["INTEGER"] = 10] = "INTEGER";
|
|
17
|
+
LLSDTokenType[LLSDTokenType["REAL"] = 11] = "REAL";
|
|
18
|
+
LLSDTokenType[LLSDTokenType["UUID"] = 12] = "UUID";
|
|
19
|
+
LLSDTokenType[LLSDTokenType["STRING_FIXED_SINGLE"] = 13] = "STRING_FIXED_SINGLE";
|
|
20
|
+
LLSDTokenType[LLSDTokenType["STRING_FIXED_DOUBLE"] = 14] = "STRING_FIXED_DOUBLE";
|
|
21
|
+
LLSDTokenType[LLSDTokenType["STRING_DYNAMIC_START"] = 15] = "STRING_DYNAMIC_START";
|
|
22
|
+
LLSDTokenType[LLSDTokenType["URI"] = 16] = "URI";
|
|
23
|
+
LLSDTokenType[LLSDTokenType["DATE"] = 17] = "DATE";
|
|
24
|
+
LLSDTokenType[LLSDTokenType["BINARY_STATIC"] = 18] = "BINARY_STATIC";
|
|
25
|
+
LLSDTokenType[LLSDTokenType["BINARY_DYNAMIC_START"] = 19] = "BINARY_DYNAMIC_START";
|
|
26
|
+
})(LLSDTokenType = exports.LLSDTokenType || (exports.LLSDTokenType = {}));
|
|
27
|
+
//# sourceMappingURL=LLSDTokenType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLSDTokenType.js","sourceRoot":"","sources":["../../../../lib/classes/llsd/LLSDTokenType.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAsBX;AAtBD,WAAY,aAAa;IAErB,uDAAW,CAAA;IACX,6DAAU,CAAA;IACV,iDAAI,CAAA;IACJ,2DAAS,CAAA;IACT,uDAAO,CAAA;IACP,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,+DAAW,CAAA;IACX,2DAAS,CAAA;IACT,uDAAO,CAAA;IACP,wDAAO,CAAA;IACP,kDAAI,CAAA;IACJ,kDAAI,CAAA;IACJ,gFAAmB,CAAA;IACnB,gFAAmB,CAAA;IACnB,kFAAoB,CAAA;IACpB,gDAAG,CAAA;IACH,kDAAI,CAAA;IACJ,oEAAa,CAAA;IACb,kFAAoB,CAAA;AACxB,CAAC,EAtBW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAsBxB"}
|