url-safe-bitpacking 0.1.11 → 0.1.13
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/README.md +6 -9
- package/dist/factory/helperMethod.d.ts +3 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.js +235 -280
- package/dist/objectmap/index.d.ts +4 -1
- package/dist/objectmap/stateDataModel.d.ts +19 -0
- package/dist/objectmap/stateValueHelperMethods.d.ts +13 -0
- package/dist/objectmap/userMethods.d.ts +12 -0
- package/dist/parsers/parsers.d.ts +1 -0
- package/dist/types/arrayDefinitions.d.ts +4 -4
- package/dist/types/index.d.ts +3 -3
- package/dist/types/semanticMapping.d.ts +6 -0
- package/dist/types/stateValueModel.d.ts +33 -0
- package/dist/types/versionData.d.ts +1 -0
- package/package.json +1 -1
- package/dist/objectmap/versionArrayDefinitionToObjectDefintion.d.ts +0 -14
- package/dist/objectmap/versionReading.d.ts +0 -36
- package/dist/objectmap/versionUpdate.d.ts +0 -26
- package/dist/objectmap/versionUserMethods.d.ts +0 -56
- package/dist/test/arrayDefinition.example.d.ts +0 -14
- package/dist/test/boolean.test.d.ts +0 -1
- package/dist/test/dataParser.test.d.ts +0 -1
- package/dist/test/enum.test.d.ts +0 -1
- package/dist/test/float.test.d.ts +0 -2
- package/dist/test/int.test.d.ts +0 -1
- package/dist/test/parsingArrayDefinition.test.d.ts +0 -1
- package/dist/test/realLifeExample.test.d.ts +0 -1
- package/dist/test/updating.test.d.ts +0 -1
- package/dist/test/version.test.d.ts +0 -2
- package/dist/types/semanticlyNestedDataEntry.d.ts +0 -7
- package/dist/types/versionParser.d.ts +0 -32
package/README.md
CHANGED
|
@@ -11,16 +11,13 @@ Package for creating definitions of parametric models that can be stored as comp
|
|
|
11
11
|
| updating model entries | ✓ | ✓ | |
|
|
12
12
|
| re-using data from old model on change in definition | ½ | ¼ | |
|
|
13
13
|
| flattening and reading of the objects | ✓ | ✓ | ¿ |
|
|
14
|
+
| arrays (both bit-level as arrays of objects) | ½ | ¼ | |
|
|
14
15
|
|
|
15
16
|
## concept
|
|
16
17
|
|
|
17
|
-
The goal of this library is to offer a flexible, minimal and, variable object definition that can be stored in the browser URL. The main imagined use-case is parametric models that have nested and variable sub-object definitions.
|
|
18
|
+
The goal of this library is to offer a flexible, minimal and, variable object definition that can be stored in the browser URL. The main imagined use-case is parametric models that have nested and variable sub-object definitions. The library heavily relies on the bitpacking of custom bitwidth numeric values. Because of that, the biggest trade-off for this library is legibility. Without the related object definition, it would be impossible to reconstruct the state. The big advantage though is the ability to store rather many variables in a very condensed URL, allowing to store all information in rather short urls which then can be used for qr code generation.
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
The big advantage though is the ability to store rather many variables in a very condensed URL, allowing to store all information in rather short urls which then can be used for qr code generation.
|
|
22
|
-
|
|
23
|
-
## data types
|
|
20
|
+
## bit-level data types
|
|
24
21
|
|
|
25
22
|
Currently, there are 4 data types implemented (+1 special case for safety). All data entries have a name that will behave as an attribute name in the object.
|
|
26
23
|
|
|
@@ -64,11 +61,11 @@ There is also a Version object which is a special case of the enum data type and
|
|
|
64
61
|
DataEntryFactory.createVersion(0, 8, 'version');
|
|
65
62
|
```
|
|
66
63
|
|
|
67
|
-
## attribute
|
|
64
|
+
## nested attribute definitions
|
|
68
65
|
|
|
69
|
-
|
|
66
|
+
More often than not in parametric models, certain data belongs together. It can also happen that the specific state of some values will have an impact on other ones being present (or which ranges are allowed). To be able to deal with this there is the option to nest data. I tried to come with an as concise yet versatile way of defining the object definitions.
|
|
70
67
|
|
|
71
|
-
|
|
68
|
+
### single nes
|
|
72
69
|
|
|
73
70
|
For the Double Nested arrays there are currently two variations: either an Optional type, which only accepts two values of which is an empty array and will be toggle on/off in relation to a certain boolean data entry.
|
|
74
71
|
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
+
import { VersionRangeType } from '../types';
|
|
1
2
|
export declare const getBitsForIntegerNumber: (number: number, maxBits: number) => number;
|
|
3
|
+
export declare const getMinimumBitsForInteger: (v: number) => number;
|
|
4
|
+
export declare const getVersionValueRangeValueForNumber: (v: number) => VersionRangeType;
|
|
2
5
|
export declare const getMaxIntegerValueForGivenBitWidth: (bitCount: number) => number;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { DataType } from './enums';
|
|
2
2
|
export { DataEntryFactory } from './factory';
|
|
3
|
-
export {
|
|
4
|
-
export {} from './
|
|
5
|
-
export {
|
|
6
|
-
export {} from './update';
|
|
3
|
+
export { SingleLevelContentType, NestedContentDataType, NestedContentType, DoubleLevelContentType, NonEmptyValidEntryArrayType, OptionalEntryDataType, EnumEntryDataType, PrecisionRangeType, SignificandMaxBits, FloatData, IntegerMaxBits, IntData, VersionRangeType, VersionData, BooleanData, DataEntry, DataEntryArray, StateDataType, StateValueType, EnumSemantics, } from './types';
|
|
4
|
+
export { createParserObject, getStateValue, getBase64String, getDataEntryArray } from './objectmap';
|
|
5
|
+
export { parseBase64ToBits } from './parsers';
|
|
7
6
|
export { interpolateEntryAt, getRelativeValue } from './utils';
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,14 @@ var ObjectGenerationOutputStatus;
|
|
|
18
18
|
// src/types/floatData.ts
|
|
19
19
|
var SignificandMaxBits = 20;
|
|
20
20
|
|
|
21
|
+
// src/types/arrayDefinitions.ts
|
|
22
|
+
var PREFIX_SEPERATOR_DELIMETER = "_";
|
|
23
|
+
// src/types/enumData.ts
|
|
24
|
+
var EnumMaxBits = 8;
|
|
25
|
+
// src/types/intData.ts
|
|
26
|
+
var IntegerMaxBits = 12;
|
|
27
|
+
// src/types/versionData.ts
|
|
28
|
+
var VersionRange = [4, 6, 8, 10];
|
|
21
29
|
// src/factory/helperMethod.ts
|
|
22
30
|
var getBitsForIntegerNumber = (number, maxBits) => {
|
|
23
31
|
const bitCount = Math.ceil(Math.log2(number));
|
|
@@ -25,7 +33,14 @@ var getBitsForIntegerNumber = (number, maxBits) => {
|
|
|
25
33
|
throw new Error(`Cannot get ${maxBits} bits for a number with ${bitCount} bits`);
|
|
26
34
|
return bitCount;
|
|
27
35
|
};
|
|
28
|
-
var
|
|
36
|
+
var getMinimumBitsForInteger = (v) => Math.ceil(Math.log2(v));
|
|
37
|
+
var getVersionValueRangeValueForNumber = (v) => {
|
|
38
|
+
const minBits = getMinimumBitsForInteger(v);
|
|
39
|
+
const versionBits = VersionRange.find((x) => x >= minBits);
|
|
40
|
+
if (versionBits === undefined)
|
|
41
|
+
throw new Error(`Cannot find version range for ${v}, max amount of versions allowed is ${2 ** VersionRange[VersionRange.length - 1]}`);
|
|
42
|
+
return versionBits;
|
|
43
|
+
};
|
|
29
44
|
|
|
30
45
|
// src/factory/floatFactory.ts
|
|
31
46
|
var create = (value, min = 0, max = 1, precision = 2, name = "", index = -1) => {
|
|
@@ -46,9 +61,6 @@ var create = (value, min = 0, max = 1, precision = 2, name = "", index = -1) =>
|
|
|
46
61
|
};
|
|
47
62
|
};
|
|
48
63
|
|
|
49
|
-
// src/types/intData.ts
|
|
50
|
-
var IntegerMaxBits = 12;
|
|
51
|
-
|
|
52
64
|
// src/factory/intFactory.ts
|
|
53
65
|
var create2 = (value, min = 0, max = 10, name = "", index = -1) => {
|
|
54
66
|
if (!Number.isInteger(min) || !Number.isInteger(max))
|
|
@@ -73,9 +85,6 @@ var create4 = (value, bits = 8, name = "", index = -1) => ({
|
|
|
73
85
|
index
|
|
74
86
|
});
|
|
75
87
|
|
|
76
|
-
// src/types/enumData.ts
|
|
77
|
-
var EnumMaxBits = 8;
|
|
78
|
-
|
|
79
88
|
// src/factory/enumFactory.ts
|
|
80
89
|
var create5 = (value, max = 10, name = "", index = -1) => {
|
|
81
90
|
if (!Number.isInteger(max))
|
|
@@ -96,67 +105,8 @@ var DataEntryFactory = {
|
|
|
96
105
|
createBoolean: create3,
|
|
97
106
|
createVersion: create4
|
|
98
107
|
};
|
|
99
|
-
// src/types/arrayDefinitions.ts
|
|
100
|
-
var NAME_DELIMETER = "_";
|
|
101
|
-
|
|
102
|
-
// src/objectmap/versionArrayDefinitionToObjectDefintion.ts
|
|
103
|
-
var isSingleLevelContentType = (data) => singleLevelContentTypeIsDataEntry(data[0]) || singleLevelContentTypeIsNestedContentDataType(data[0]);
|
|
104
|
-
var isDoubleLevelContentType = (data) => !isSingleLevelContentType(data);
|
|
105
|
-
var singleLevelContentTypeIsDataEntry = (data) => !Array.isArray(data) && typeof data === "object";
|
|
106
|
-
var singleLevelContentTypeIsNestedContentDataType = (data) => Array.isArray(data) && typeof data[0] === "string";
|
|
107
|
-
var singleLevelContentTypeIsEnumEntryDataType = (data) => isDoubleLevelContentType(data) && typeof data[0] === "number";
|
|
108
|
-
var singleLevelContentTypeIsOptionalEntryDataType = (data) => isDoubleLevelContentType(data) && typeof data[0] === "boolean";
|
|
109
|
-
var parseSingleLevelContentTypeToDefinitionSubObject = (data, internalPrecedingName) => {
|
|
110
|
-
if (singleLevelContentTypeIsDataEntry(data))
|
|
111
|
-
return parseDataEntry(data, internalPrecedingName);
|
|
112
|
-
else if (singleLevelContentTypeIsNestedContentDataType(data))
|
|
113
|
-
return parseNestedContentDataTypeToDefinitionNestedArray(data, internalPrecedingName);
|
|
114
|
-
else {
|
|
115
|
-
throw new Error("this is an invalid output value, wonder why?");
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
var parseNestedContentDataTypeToDefinitionNestedArray = (data, internalPrecedingName) => {
|
|
119
|
-
const [attributeName, localData] = data;
|
|
120
|
-
if (isSingleLevelContentType(localData))
|
|
121
|
-
return [attributeName, localData.map((v) => parseSingleLevelContentTypeToDefinitionSubObject(v, internalPrecedingName))];
|
|
122
|
-
else if (singleLevelContentTypeIsEnumEntryDataType(localData))
|
|
123
|
-
return parseEnumEntryDataTypeToDefinitionNestedGenerationObject(localData, attributeName, internalPrecedingName);
|
|
124
|
-
else if (singleLevelContentTypeIsOptionalEntryDataType(localData))
|
|
125
|
-
return parseOptionalEntryDataTypeToDefinitionNestedGenerationObject(localData, attributeName, internalPrecedingName);
|
|
126
|
-
else {
|
|
127
|
-
throw new Error("this is an invalid output value, wonder why?");
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
var parseEnumEntryDataTypeToDefinitionNestedGenerationObject = (data, name, internalPrecedingName) => {
|
|
131
|
-
if (Math.round(data[0]) !== data[0])
|
|
132
|
-
`given default (${data[0]}) value isn't an integer, rounding it`;
|
|
133
|
-
if (data.length - 2 < Math.round(data[0]))
|
|
134
|
-
console.log(`given default value (${data[0]}) was larger than the amount of options available, using the largest value (${data.length - 2}) instead`);
|
|
135
|
-
if (data[0] < 0)
|
|
136
|
-
console.log(`given default value (${data[0]}) was negative, using first index (0) instead`);
|
|
137
|
-
const dataEntry = parseDataEntry(DataEntryFactory.createEnum(Math.max(Math.min(data.length - 2, Math.round(data[0])), 0), data.length - 2, name), internalPrecedingName);
|
|
138
|
-
const generationMethod = (d) => [
|
|
139
|
-
d,
|
|
140
|
-
...data[d.value + 1].map((v) => parseSingleLevelContentTypeToDefinitionSubObject(v, dataEntry.internalName))
|
|
141
|
-
];
|
|
142
|
-
return [name, dataEntry, generationMethod];
|
|
143
|
-
};
|
|
144
|
-
var parseOptionalEntryDataTypeToDefinitionNestedGenerationObject = (data, name, internalPrecedingName) => {
|
|
145
|
-
const dataEntry = parseDataEntry(DataEntryFactory.createBoolean(data[0], name), internalPrecedingName);
|
|
146
|
-
const generationMethod = (d) => [
|
|
147
|
-
d,
|
|
148
|
-
...data[Number(!d.value) + 1].map((v) => parseSingleLevelContentTypeToDefinitionSubObject(v, dataEntry.internalName))
|
|
149
|
-
];
|
|
150
|
-
return [name, dataEntry, generationMethod];
|
|
151
|
-
};
|
|
152
|
-
var parseDataEntry = (d, internalPrecedingName) => internalPrecedingName ? { ...d, internalName: `${internalPrecedingName}${NAME_DELIMETER}${d.name}` } : d;
|
|
153
|
-
var parseVersionArrayDefinitionTypeToVersionDefinitionObject = (v, optionalIndexOverwrite) => [
|
|
154
|
-
optionalIndexOverwrite ? { ...parseDataEntry(v[0]), value: optionalIndexOverwrite } : parseDataEntry(v[0]),
|
|
155
|
-
...v.slice(1).map((d) => parseSingleLevelContentTypeToDefinitionSubObject(d, "_"))
|
|
156
|
-
];
|
|
157
|
-
|
|
158
108
|
// src/parsers/intParser.ts
|
|
159
|
-
var getBitsCount = (
|
|
109
|
+
var getBitsCount = (intData3) => intData3.bits;
|
|
160
110
|
var rawValueParser = (stateString, bitCount) => {
|
|
161
111
|
if (stateString.length < bitCount)
|
|
162
112
|
throw new Error(`To few bits for this int bit string (${stateString.length} instead of ${bitCount})`);
|
|
@@ -167,9 +117,9 @@ var rawValueParser = (stateString, bitCount) => {
|
|
|
167
117
|
throw new Error("Invalid int state string");
|
|
168
118
|
return parsed;
|
|
169
119
|
};
|
|
170
|
-
var rawParser = (stateString,
|
|
171
|
-
const v = rawValueParser(stateString,
|
|
172
|
-
if (v >
|
|
120
|
+
var rawParser = (stateString, intData3) => {
|
|
121
|
+
const v = rawValueParser(stateString, intData3.bits) + intData3.min;
|
|
122
|
+
if (v > intData3.max)
|
|
173
123
|
throw new Error("Value exceeds max");
|
|
174
124
|
return v;
|
|
175
125
|
};
|
|
@@ -178,16 +128,16 @@ var rawIntStringifier = (value, bitCount) => {
|
|
|
178
128
|
throw new Error("Value is not an integer");
|
|
179
129
|
return value.toString(2).padStart(bitCount, "0");
|
|
180
130
|
};
|
|
181
|
-
var rawStringifier = (value,
|
|
182
|
-
if (value <
|
|
131
|
+
var rawStringifier = (value, intData3) => {
|
|
132
|
+
if (value < intData3.min)
|
|
183
133
|
throw new Error("Value is below min");
|
|
184
|
-
if (value >
|
|
134
|
+
if (value > intData3.max)
|
|
185
135
|
throw new Error("Value exceeds max");
|
|
186
|
-
return rawIntStringifier(value -
|
|
136
|
+
return rawIntStringifier(value - intData3.min, intData3.bits);
|
|
187
137
|
};
|
|
188
138
|
|
|
189
139
|
// src/parsers/floatParser.ts
|
|
190
|
-
var getBitsCount2 = (
|
|
140
|
+
var getBitsCount2 = (floatData3) => floatData3.significand;
|
|
191
141
|
var rawValueParser2 = (stateString, significandBits, precision) => {
|
|
192
142
|
if (stateString.length < significandBits)
|
|
193
143
|
throw new Error(`To few bits for this float bit string (${stateString.length} instead of ${significandBits})`);
|
|
@@ -196,30 +146,30 @@ var rawValueParser2 = (stateString, significandBits, precision) => {
|
|
|
196
146
|
const significand = rawValueParser(stateString, significandBits);
|
|
197
147
|
return significand * 10 ** -precision;
|
|
198
148
|
};
|
|
199
|
-
var rawParser2 = (stateString,
|
|
200
|
-
const v =
|
|
201
|
-
if (v >
|
|
149
|
+
var rawParser2 = (stateString, floatData3) => {
|
|
150
|
+
const v = floatData3.min + rawValueParser2(stateString, floatData3.significand, floatData3.precision);
|
|
151
|
+
if (v > floatData3.max)
|
|
202
152
|
throw new Error("Float value exceeds max");
|
|
203
153
|
return v;
|
|
204
154
|
};
|
|
205
|
-
var rawStringifier2 = (value,
|
|
155
|
+
var rawStringifier2 = (value, floatData3) => rawIntStringifier(Math.round((value - floatData3.min) * 10 ** floatData3.precision), floatData3.significand);
|
|
206
156
|
|
|
207
157
|
// src/parsers/enumParser.ts
|
|
208
|
-
var getBitsCount3 = (
|
|
209
|
-
var rawParser3 = (rawString,
|
|
210
|
-
var rawStringifier3 = (value,
|
|
211
|
-
if (value >
|
|
158
|
+
var getBitsCount3 = (versionData2) => versionData2.bits;
|
|
159
|
+
var rawParser3 = (rawString, versionData2) => rawValueParser(rawString, versionData2.bits);
|
|
160
|
+
var rawStringifier3 = (value, versionData2) => {
|
|
161
|
+
if (value > versionData2.max)
|
|
212
162
|
throw new Error("Version exceeds max");
|
|
213
|
-
return rawIntStringifier(value,
|
|
163
|
+
return rawIntStringifier(value, versionData2.bits);
|
|
214
164
|
};
|
|
215
165
|
|
|
216
166
|
// src/parsers/versionParser.ts
|
|
217
|
-
var getBitsCount4 = (
|
|
218
|
-
var rawParser4 = (rawString,
|
|
219
|
-
var rawStringifier4 = (value,
|
|
220
|
-
if (value > 2 **
|
|
167
|
+
var getBitsCount4 = (versionData2) => versionData2.bits;
|
|
168
|
+
var rawParser4 = (rawString, versionData2) => rawValueParser(rawString, versionData2.bits);
|
|
169
|
+
var rawStringifier4 = (value, versionData2) => {
|
|
170
|
+
if (value > 2 ** versionData2.bits - 1)
|
|
221
171
|
throw new Error("Version exceeds max");
|
|
222
|
-
return rawIntStringifier(value,
|
|
172
|
+
return rawIntStringifier(value, versionData2.bits);
|
|
223
173
|
};
|
|
224
174
|
|
|
225
175
|
// src/parsers/booleanParser.ts
|
|
@@ -274,15 +224,10 @@ var getBitsCount6 = (mapData) => {
|
|
|
274
224
|
return getBitsCount3(mapData);
|
|
275
225
|
}
|
|
276
226
|
};
|
|
277
|
-
var
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
const start = index === 0 ? 0 : bitStartEndMap[index - 1][1];
|
|
282
|
-
bitStartEndMap.push([start, start + bitCount]);
|
|
283
|
-
});
|
|
284
|
-
return mapDataArray.map((mapData, i) => dataBitsParser(bitString.slice(bitStartEndMap[i][0], bitStartEndMap[i][1]), mapData));
|
|
285
|
-
};
|
|
227
|
+
var dataEntryBitstringParser = (bitstring, dataEntry2) => [
|
|
228
|
+
dataBitsParser(bitstring.slice(0, getBitsCount6(dataEntry2)), dataEntry2),
|
|
229
|
+
bitstring.slice(getBitsCount6(dataEntry2))
|
|
230
|
+
];
|
|
286
231
|
var dataBitsStringifier = (data) => {
|
|
287
232
|
switch (data.type) {
|
|
288
233
|
case DataType.BOOLEAN:
|
|
@@ -297,7 +242,7 @@ var dataBitsStringifier = (data) => {
|
|
|
297
242
|
return rawStringifier3(data.value, data);
|
|
298
243
|
}
|
|
299
244
|
};
|
|
300
|
-
var dataEntryCorrecting = (
|
|
245
|
+
var dataEntryCorrecting = (dataEntry2) => dataBitsParser(dataBitsStringifier(dataEntry2), dataEntry2);
|
|
301
246
|
var base64url = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
|
302
247
|
var parseBitsToBase64 = (bits) => {
|
|
303
248
|
const chunks = bits.match(/.{1,6}/g);
|
|
@@ -312,93 +257,6 @@ var parseBase64ToBits = (base64) => {
|
|
|
312
257
|
var dataArrayStringifier = (dataEntryArray) => {
|
|
313
258
|
return dataEntryArray.map(dataBitsStringifier).join("");
|
|
314
259
|
};
|
|
315
|
-
|
|
316
|
-
// src/objectmap/versionReading.ts
|
|
317
|
-
var currentObjectIndex = -1;
|
|
318
|
-
var nestedDataEntryArrayToObject = (definitionArrayObject) => {
|
|
319
|
-
currentObjectIndex = -1;
|
|
320
|
-
return internalNestedDataEntryArrayToObject(definitionArrayObject);
|
|
321
|
-
};
|
|
322
|
-
var internalNestedDataEntryArrayToObject = (definitionArrayObject) => {
|
|
323
|
-
return Object.fromEntries(definitionArrayObject.map((value) => {
|
|
324
|
-
if (Array.isArray(value)) {
|
|
325
|
-
if (value.length === 2)
|
|
326
|
-
return [value[0], internalNestedDataEntryArrayToObject(value[1])];
|
|
327
|
-
else
|
|
328
|
-
return [value[0], internalNestedDataEntryArrayToObject(value[2](value[1]))];
|
|
329
|
-
}
|
|
330
|
-
return [value.name, { ...value, index: ++currentObjectIndex }];
|
|
331
|
-
}));
|
|
332
|
-
};
|
|
333
|
-
var definitionArrayObjectParser = (bitString, v) => {
|
|
334
|
-
const [key, values] = v;
|
|
335
|
-
const [nestedSemanticObject, objectGenerationStatus, localEndIndex] = parsingDefinitionArrayObject(bitString, values);
|
|
336
|
-
return [[key, nestedSemanticObject], objectGenerationStatus, localEndIndex];
|
|
337
|
-
};
|
|
338
|
-
var methodParser = (bitString, v) => {
|
|
339
|
-
const [key, keyDataDescription, methodGenerator] = v;
|
|
340
|
-
const [keyDataEntry, status] = dataEntryParser(bitString, keyDataDescription, false);
|
|
341
|
-
const [result, localStatus, localEndIndex] = definitionArrayObjectParser(bitString, [key, methodGenerator(keyDataEntry)]);
|
|
342
|
-
return [result, localStatus !== ObjectGenerationOutputStatus.PARSED ? localStatus : status, localEndIndex];
|
|
343
|
-
};
|
|
344
|
-
var dataEntryParser = (bitString, v, iterate = true) => {
|
|
345
|
-
const bitWidth = getBitsCount6(v);
|
|
346
|
-
const value = iterate ? { ...dataBitsParser(bitString.slice(0, bitWidth), v), index: ++currentObjectIndex } : dataBitsParser(bitString.slice(0, bitWidth), v);
|
|
347
|
-
return [value, ObjectGenerationOutputStatus.PARSED, bitWidth];
|
|
348
|
-
};
|
|
349
|
-
var parsingDefinitionArrayObject = (bitString, definitionArrayObject) => {
|
|
350
|
-
let startIndex = 0;
|
|
351
|
-
let objectGenerationStatus = ObjectGenerationOutputStatus.PARSED;
|
|
352
|
-
return [
|
|
353
|
-
Object.fromEntries(definitionArrayObject.map((value) => {
|
|
354
|
-
if (Array.isArray(value)) {
|
|
355
|
-
if (value.length === 2) {
|
|
356
|
-
const [[key, nestedSemanticObject], status, localEndIndex] = definitionArrayObjectParser(bitString.slice(startIndex), value);
|
|
357
|
-
startIndex += localEndIndex;
|
|
358
|
-
ObjectGenerationOutputStatus.PARSED;
|
|
359
|
-
return [key, nestedSemanticObject];
|
|
360
|
-
} else {
|
|
361
|
-
const [[key, nestedSemanticObject], status, localEndIndex] = methodParser(bitString.slice(startIndex), value);
|
|
362
|
-
startIndex += localEndIndex;
|
|
363
|
-
ObjectGenerationOutputStatus.PARSED;
|
|
364
|
-
return [key, nestedSemanticObject];
|
|
365
|
-
}
|
|
366
|
-
} else {
|
|
367
|
-
const [dataEntry, status, localEndIndex] = dataEntryParser(bitString.slice(startIndex), value);
|
|
368
|
-
startIndex += localEndIndex;
|
|
369
|
-
ObjectGenerationOutputStatus.PARSED;
|
|
370
|
-
return [dataEntry.name, dataEntry];
|
|
371
|
-
}
|
|
372
|
-
})),
|
|
373
|
-
objectGenerationStatus,
|
|
374
|
-
startIndex
|
|
375
|
-
];
|
|
376
|
-
};
|
|
377
|
-
var parseUrlMethod = (url, parserVersions) => {
|
|
378
|
-
currentObjectIndex = -1;
|
|
379
|
-
const bitString = parseBase64ToBits(url);
|
|
380
|
-
const version = dataBitsArrayParser(bitString, [DataEntryFactory.createVersion(0, parserVersions.versionBitCount)])[0];
|
|
381
|
-
const versionParser = parserVersions.parsers[version.value];
|
|
382
|
-
if (!versionParser)
|
|
383
|
-
throw new Error(`No parser for version ${version.value}`);
|
|
384
|
-
return parsingDefinitionArrayObject(bitString, versionParser.objectGeneratorParameters)[0];
|
|
385
|
-
};
|
|
386
|
-
var parseDownNestedDataDescription = (nestedDataDescription) => {
|
|
387
|
-
const dataDescriptions = [];
|
|
388
|
-
Object.values(nestedDataDescription).forEach((value) => {
|
|
389
|
-
if (value.hasOwnProperty("type"))
|
|
390
|
-
dataDescriptions.push(value);
|
|
391
|
-
else
|
|
392
|
-
dataDescriptions.push(...parseDownNestedDataDescription(value));
|
|
393
|
-
});
|
|
394
|
-
return dataDescriptions.sort();
|
|
395
|
-
};
|
|
396
|
-
var getURLForData = (data) => {
|
|
397
|
-
const dataEntryArray = parseDownNestedDataDescription(data);
|
|
398
|
-
const bitstring = dataArrayStringifier(dataEntryArray);
|
|
399
|
-
return parseBitsToBase64(bitstring);
|
|
400
|
-
};
|
|
401
|
-
|
|
402
260
|
// src/update/floatUpdate.ts
|
|
403
261
|
var updateValue = (original, update) => {
|
|
404
262
|
const value = Math.max(Math.min(update.value, original.max), original.min);
|
|
@@ -458,100 +316,200 @@ var updateValue6 = (original, update) => {
|
|
|
458
316
|
return updateValue4(original, update);
|
|
459
317
|
}
|
|
460
318
|
};
|
|
319
|
+
// src/objectmap/stateValueHelperMethods.ts
|
|
320
|
+
var flattenDerivativeStateDataType = (stateValue) => [
|
|
321
|
+
stateValue.s,
|
|
322
|
+
...Array.isArray(stateValue.v) ? stateValue.v.map(getDataEntryArray).flat() : getDataEntryArray(stateValue.v)
|
|
323
|
+
];
|
|
324
|
+
var internalGetDataEntryArray = (stateValue) => Object.values(stateValue).map((content) => {
|
|
325
|
+
if (content.type !== undefined)
|
|
326
|
+
return content;
|
|
327
|
+
else if (content.s !== undefined && content.v !== undefined) {
|
|
328
|
+
return flattenDerivativeStateDataType(content);
|
|
329
|
+
} else
|
|
330
|
+
return internalGetDataEntryArray(content);
|
|
331
|
+
}).flat();
|
|
332
|
+
var getStateValueHelperMethod = (stateValue) => {
|
|
333
|
+
if (stateValue.type !== undefined)
|
|
334
|
+
return stateValue.value;
|
|
335
|
+
else if (stateValue.s !== undefined && stateValue.v !== undefined)
|
|
336
|
+
return {
|
|
337
|
+
s: stateValue.s.value,
|
|
338
|
+
v: Array.isArray(stateValue.v) ? stateValue.v.map(getStateValue) : getStateValue(stateValue.v)
|
|
339
|
+
};
|
|
340
|
+
else
|
|
341
|
+
return getStateValue(stateValue);
|
|
342
|
+
};
|
|
343
|
+
var getStateValue = (stateValue) => Object.fromEntries(Object.entries(stateValue).map(([key, value]) => [key, getStateValueHelperMethod(value)]));
|
|
344
|
+
var getDataEntryArray = (stateValue) => internalGetDataEntryArray(stateValue).sort((a, b) => a.index - b.index);
|
|
345
|
+
var getBase64String = (stateValue) => parseBitsToBase64(dataArrayStringifier(getDataEntryArray(stateValue)));
|
|
346
|
+
var isSingleLevelContentType = (data) => singleLevelContentTypeIsDataEntry(data[0]) || singleLevelContentTypeIsNestedContentDataType(data[0]) && !doubleLevelContentTypeIsArrayDefinitionType(data);
|
|
347
|
+
var isDoubleLevelContentType = (data) => !isSingleLevelContentType(data);
|
|
348
|
+
var singleLevelContentTypeIsDataEntry = (data) => !Array.isArray(data) && typeof data === "object";
|
|
349
|
+
var singleLevelContentTypeIsNestedContentDataType = (data) => Array.isArray(data) && typeof data[0] === "string";
|
|
350
|
+
var doubleLevelContentTypeIsEnumEntryDataType = (data) => isDoubleLevelContentType(data) && typeof data[0] === "number";
|
|
351
|
+
var doubleLevelContentTypeIsOptionalEntryDataType = (data) => isDoubleLevelContentType(data) && typeof data[0] === "boolean";
|
|
352
|
+
var doubleLevelContentTypeIsArrayDefinitionType = (data) => Array.isArray(data[0]) && data[0].length === 2 && typeof data[0][0] === "number" && typeof data[0][1] === "number";
|
|
461
353
|
|
|
462
|
-
// src/objectmap/
|
|
463
|
-
var
|
|
464
|
-
var findExistingDataEntry = (
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
};
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
};
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
354
|
+
// src/objectmap/stateDataModel.ts
|
|
355
|
+
var currentDataEntryIndex = 0;
|
|
356
|
+
var findExistingDataEntry = (dataEntry2, dataEntryArray) => dataEntryArray.find((d) => (d.internalName ?? d.name) === (dataEntry2.internalName ?? dataEntry2.name));
|
|
357
|
+
var readDataEntry = (dataEntry2, bitString) => {
|
|
358
|
+
const [d, slicedBitstring] = dataEntryBitstringParser(bitString, dataEntry2);
|
|
359
|
+
currentDataEntryIndex++;
|
|
360
|
+
return [slicedBitstring, [d.name, { ...d, index: currentDataEntryIndex }]];
|
|
361
|
+
};
|
|
362
|
+
var updateDataEntry = (dataEntry2, existingData) => {
|
|
363
|
+
const existingDataEntry = findExistingDataEntry(dataEntry2, existingData);
|
|
364
|
+
currentDataEntryIndex++;
|
|
365
|
+
return [existingData, [dataEntry2.name, { ...existingDataEntry ? updateValue6(dataEntry2, existingDataEntry) : dataEntry2, index: currentDataEntryIndex }]];
|
|
366
|
+
};
|
|
367
|
+
var internalGetDataEntry = (dataEntry2, prefix, additionalData) => {
|
|
368
|
+
const internalName = `${prefix}${PREFIX_SEPERATOR_DELIMETER}${dataEntry2.name}`;
|
|
369
|
+
const localDataEntry = { ...dataEntry2, internalName };
|
|
370
|
+
if (additionalData) {
|
|
371
|
+
if (typeof additionalData === "string")
|
|
372
|
+
return readDataEntry(localDataEntry, additionalData);
|
|
373
|
+
else
|
|
374
|
+
return updateDataEntry(localDataEntry, additionalData);
|
|
375
|
+
}
|
|
376
|
+
currentDataEntryIndex++;
|
|
377
|
+
return [undefined, [localDataEntry.name, { ...localDataEntry, index: currentDataEntryIndex }]];
|
|
378
|
+
};
|
|
379
|
+
var getStateFromOptionalEntryDataType = (oedt, prefix, attributeName) => (additionalData) => {
|
|
380
|
+
const [updatedLocalAdditionalData, [__, s]] = internalGetDataEntry(DataEntryFactory.createBoolean(oedt[0], attributeName), prefix, additionalData);
|
|
381
|
+
const [localAdditionalData, [_, v]] = getStateDateFromSingleLevelContentTypeArray(oedt[Number(s.value) + 1], s.internalName, attributeName)(updatedLocalAdditionalData);
|
|
382
|
+
return [
|
|
383
|
+
localAdditionalData,
|
|
384
|
+
[
|
|
385
|
+
attributeName,
|
|
386
|
+
{
|
|
387
|
+
s,
|
|
388
|
+
v
|
|
494
389
|
}
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
newNestedObject[key] = dataEntry;
|
|
498
|
-
}
|
|
499
|
-
});
|
|
500
|
-
return newNestedObject;
|
|
501
|
-
};
|
|
502
|
-
var updateDataEntry = (data, newDataEntry, parsersForVersion) => {
|
|
503
|
-
currentObjectIndex2 = 0;
|
|
504
|
-
const version = data.version;
|
|
505
|
-
const versionParser = parsersForVersion[version.value];
|
|
506
|
-
if (!versionParser)
|
|
507
|
-
throw new Error(`No parser for version ${version.value}`);
|
|
508
|
-
const correctedDataEntry = dataEntryCorrecting(newDataEntry);
|
|
509
|
-
const dataEntryArray = parseDownNestedDataDescription(data);
|
|
510
|
-
const virginDataEntryArray = [correctedDataEntry, ...dataEntryArray];
|
|
511
|
-
return updateDataEntryObject(versionParser.objectGeneratorParameters, virginDataEntryArray);
|
|
390
|
+
]
|
|
391
|
+
];
|
|
512
392
|
};
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
393
|
+
var getStateFromEnumEntryDataType = (eedt, prefix, attributeName) => (additionalData) => {
|
|
394
|
+
if (Math.round(eedt[0]) !== eedt[0])
|
|
395
|
+
`given default (${eedt[0]}) value isn't an integer, rounding it`;
|
|
396
|
+
if (eedt.length - 2 < Math.round(eedt[0]))
|
|
397
|
+
console.log(`given default value (${eedt[0]}) was larger than the amount of options available, using the largest value (${eedt.length - 2}) instead`);
|
|
398
|
+
if (eedt[0] < 0)
|
|
399
|
+
console.log(`given default value (${eedt[0]}) was negative, using first index (0) instead`);
|
|
400
|
+
const [updatedLocalAdditionalData, [__, s]] = internalGetDataEntry(DataEntryFactory.createEnum(Math.max(Math.min(eedt.length - 2, Math.round(eedt[0])), 0), eedt.length - 1, attributeName), prefix, additionalData);
|
|
401
|
+
const [nestedAdditionalData, [_, v]] = getStateDateFromSingleLevelContentTypeArray(eedt[1 + s.value], s.internalName, attributeName)(updatedLocalAdditionalData);
|
|
402
|
+
return [
|
|
403
|
+
nestedAdditionalData,
|
|
404
|
+
[
|
|
405
|
+
attributeName,
|
|
406
|
+
{
|
|
407
|
+
s,
|
|
408
|
+
v
|
|
409
|
+
}
|
|
410
|
+
]
|
|
411
|
+
];
|
|
412
|
+
};
|
|
413
|
+
var getStateFromArrayEntryDataType = (aedt, prefix, attributeName) => (additionalData) => {
|
|
414
|
+
const [min, max] = [aedt[0][0], aedt[0][1]].sort((a, b) => a - b);
|
|
415
|
+
const [updatedAdditionalData, [__, s]] = internalGetDataEntry(DataEntryFactory.createInt(min, min, max, attributeName), prefix, additionalData);
|
|
416
|
+
const v = [];
|
|
417
|
+
let localAdditionalData = updatedAdditionalData;
|
|
418
|
+
for (let i = 0;i < s.value; i++) {
|
|
419
|
+
const [updateAdditionalData, [_, localStateData]] = getStateDateFromSingleLevelContentTypeArray(aedt[1], `${s.internalName}${PREFIX_SEPERATOR_DELIMETER}${i}`, attributeName)(localAdditionalData);
|
|
420
|
+
localAdditionalData = updateAdditionalData;
|
|
421
|
+
v.push(localStateData);
|
|
422
|
+
}
|
|
423
|
+
return [
|
|
424
|
+
localAdditionalData,
|
|
425
|
+
[
|
|
426
|
+
attributeName,
|
|
427
|
+
{
|
|
428
|
+
s,
|
|
429
|
+
v
|
|
430
|
+
}
|
|
431
|
+
]
|
|
432
|
+
];
|
|
433
|
+
};
|
|
434
|
+
var getStateDataFromDoubleLevelContentType = (dct, prefix, attributeName) => {
|
|
435
|
+
if (doubleLevelContentTypeIsEnumEntryDataType(dct))
|
|
436
|
+
return getStateFromEnumEntryDataType(dct, prefix, attributeName);
|
|
437
|
+
else if (doubleLevelContentTypeIsOptionalEntryDataType(dct))
|
|
438
|
+
return getStateFromOptionalEntryDataType(dct, prefix, attributeName);
|
|
439
|
+
else if (doubleLevelContentTypeIsArrayDefinitionType(dct))
|
|
440
|
+
return getStateFromArrayEntryDataType(dct, prefix, attributeName);
|
|
441
|
+
throw new Error("this is an invalid output value, wonder why?");
|
|
442
|
+
};
|
|
443
|
+
var getStateDateFromSingleLevelContentTypeArray = (slcta, prefix, attributeName) => (additionalData) => {
|
|
444
|
+
const outputDataObject = {};
|
|
445
|
+
let intermediateAdditionalData = additionalData;
|
|
446
|
+
slcta.forEach((slct) => {
|
|
447
|
+
const [localAdditionalData, [localAttributeName, nestedData]] = getStateDataFromSingleLevelContentType(slct, prefix)(intermediateAdditionalData);
|
|
448
|
+
intermediateAdditionalData = localAdditionalData;
|
|
449
|
+
outputDataObject[localAttributeName] = nestedData;
|
|
450
|
+
});
|
|
451
|
+
return [intermediateAdditionalData, [attributeName, outputDataObject]];
|
|
452
|
+
};
|
|
453
|
+
var getStateDataFromNestedContentType = (nct, prefix, attributeName) => {
|
|
454
|
+
if (isDoubleLevelContentType(nct))
|
|
455
|
+
return getStateDataFromDoubleLevelContentType(nct, `${prefix}${PREFIX_SEPERATOR_DELIMETER}${attributeName}`, attributeName);
|
|
456
|
+
return getStateDateFromSingleLevelContentTypeArray(nct, prefix, attributeName);
|
|
457
|
+
};
|
|
458
|
+
var getStateDataFromSingleLevelContentType = (slct, prefix) => {
|
|
459
|
+
if (singleLevelContentTypeIsDataEntry(slct))
|
|
460
|
+
return (additionalData) => internalGetDataEntry(slct, prefix, additionalData);
|
|
461
|
+
else if (singleLevelContentTypeIsNestedContentDataType(slct))
|
|
462
|
+
return getStateDataFromNestedContentType(slct[1], prefix, slct[0]);
|
|
463
|
+
throw new Error("this is an invalid output value, wonder why?");
|
|
464
|
+
};
|
|
465
|
+
var getGenerationMethodForSingleLevelContentTypeArray = (slct) => {
|
|
466
|
+
currentDataEntryIndex = -1;
|
|
467
|
+
return (additionalData) => getStateDateFromSingleLevelContentTypeArray(slct, "", "")(additionalData)[1][1];
|
|
468
|
+
};
|
|
469
|
+
// src/objectmap/userMethods.ts
|
|
470
|
+
var getParsedAdditionalData = (additionalData) => {
|
|
471
|
+
if (typeof additionalData === "string")
|
|
472
|
+
return parseBase64ToBits(additionalData);
|
|
473
|
+
if (additionalData && !Array.isArray(additionalData))
|
|
474
|
+
return getDataEntryArray(additionalData);
|
|
475
|
+
return additionalData;
|
|
476
|
+
};
|
|
477
|
+
var getVersionindex = (additionalData, versionMask, defaultIndex) => {
|
|
478
|
+
if (typeof additionalData === "string")
|
|
479
|
+
return readDataEntry(versionMask, additionalData)[1][1].value;
|
|
480
|
+
if (!additionalData)
|
|
481
|
+
return defaultIndex || 0;
|
|
482
|
+
return additionalData.find((d) => d.name === "version")?.value ?? defaultIndex ?? 0;
|
|
483
|
+
};
|
|
484
|
+
var getParserMethodForVersionDefinition = (vadt, versionBits, defaultVersion) => (state) => {
|
|
485
|
+
const additionalData = getParsedAdditionalData(state);
|
|
486
|
+
const versionIndex = getVersionindex(additionalData, DataEntryFactory.createVersion(0, versionBits, "version"), defaultVersion);
|
|
487
|
+
const versionDefinition = vadt[versionIndex];
|
|
488
|
+
const versionEntry = DataEntryFactory.createVersion(versionIndex, versionBits, "version");
|
|
489
|
+
return getGenerationMethodForSingleLevelContentTypeArray([versionEntry, ...versionDefinition])(additionalData);
|
|
490
|
+
};
|
|
491
|
+
var getUpdaterMethodForVersionDefinition = (parser) => (state, entryToUpdate) => parser([entryToUpdate, ...getDataEntryArray(state)]);
|
|
492
|
+
var getStringifyMethodForVersionDefinition = (parser) => (data) => getBase64String(parser(data));
|
|
493
|
+
var createParserObject = (versionContent, maximumExpectedVersions, defaultVersion, enumSemanticsMapping, attributeSemanticsMapping, exposedVersions) => {
|
|
494
|
+
const versionBitCount = getVersionValueRangeValueForNumber(maximumExpectedVersions);
|
|
495
|
+
const localDefaultVersion = Math.max(0, Math.min(versionContent.length - 1, defaultVersion ?? 0));
|
|
496
|
+
if (versionContent.length > maximumExpectedVersions)
|
|
497
|
+
throw new Error(`Cannot have more than ${maximumExpectedVersions} versions`);
|
|
498
|
+
if (localDefaultVersion !== (defaultVersion ?? 0))
|
|
499
|
+
console.log(`Default version must be between 0 and ${versionContent.length - 1}, instead of ${defaultVersion} will be using ${localDefaultVersion}`);
|
|
500
|
+
const parser = getParserMethodForVersionDefinition(versionContent, versionBitCount, localDefaultVersion);
|
|
501
|
+
const updater = getUpdaterMethodForVersionDefinition(parser);
|
|
502
|
+
const stringify = getStringifyMethodForVersionDefinition(parser);
|
|
519
503
|
return {
|
|
520
504
|
versionBitCount,
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
505
|
+
exposedVersions,
|
|
506
|
+
parser,
|
|
507
|
+
updater,
|
|
508
|
+
stringify,
|
|
509
|
+
enumSemanticsMapping,
|
|
510
|
+
attributeSemanticsMapping
|
|
526
511
|
};
|
|
527
512
|
};
|
|
528
|
-
var parseUrl = (urlSafeBase64, parserVersions) => parseUrlMethod(urlSafeBase64, parserVersions);
|
|
529
|
-
var updateDataEntry2 = (updatedEntry, currentObject, parserVersions) => updateDataEntry(currentObject, updatedEntry, parserVersions.parsers);
|
|
530
|
-
var getURLSafeBase64ForData = (data) => getURLForData(data);
|
|
531
|
-
var internalParseDataEntry = (data, enumSemanticsMapping) => {
|
|
532
|
-
if (data.type === DataType.ENUM && enumSemanticsMapping) {
|
|
533
|
-
const mapping = enumSemanticsMapping[data.name]?.find((entry) => entry.value === data.value);
|
|
534
|
-
if (mapping)
|
|
535
|
-
return mapping.label;
|
|
536
|
-
}
|
|
537
|
-
return data.value;
|
|
538
|
-
};
|
|
539
|
-
var internalStrictSemanticallyNestedValues = (data, enumSemanticsMapping, attributeSemanticsMapping) => Object.fromEntries(Object.entries(data).map(([key, value]) => [
|
|
540
|
-
attributeSemanticsMapping ? attributeSemanticsMapping[key] ?? key : key,
|
|
541
|
-
value.type !== undefined ? internalParseDataEntry(value, enumSemanticsMapping) : internalStrictSemanticallyNestedValues(value, enumSemanticsMapping, attributeSemanticsMapping)
|
|
542
|
-
]));
|
|
543
|
-
var getSemanticallyNestedValues = (data, parserVersions) => {
|
|
544
|
-
const versionNumber = data.version.value;
|
|
545
|
-
const enumSemanticsMapping = parserVersions.parsers[versionNumber]?.enumSemanticsMapping;
|
|
546
|
-
const attributeSemanticsMapping = parserVersions.parsers[versionNumber]?.attributeSemanticsMapping;
|
|
547
|
-
return internalStrictSemanticallyNestedValues(data, enumSemanticsMapping, attributeSemanticsMapping);
|
|
548
|
-
};
|
|
549
|
-
var getDefaultObject = (parserForVersions, versionindex) => {
|
|
550
|
-
if (!parserForVersions.parsers[versionindex])
|
|
551
|
-
throw new Error(`No parser for version ${versionindex} index`);
|
|
552
|
-
return nestedDataEntryArrayToObject(parserForVersions.parsers[versionindex].objectGeneratorParameters);
|
|
553
|
-
};
|
|
554
|
-
var getFlatArray = (data) => parseDownNestedDataDescription(data);
|
|
555
513
|
// src/utils/interpolateData.ts
|
|
556
514
|
var interpolateEntryAt = (dataEntry2, t) => {
|
|
557
515
|
const localT = Math.max(Math.min(1, t), 0);
|
|
@@ -585,17 +543,14 @@ var getRelativeValue = (dataEntry2) => {
|
|
|
585
543
|
}
|
|
586
544
|
};
|
|
587
545
|
export {
|
|
588
|
-
|
|
589
|
-
parseUrl,
|
|
546
|
+
parseBase64ToBits,
|
|
590
547
|
interpolateEntryAt,
|
|
591
|
-
|
|
592
|
-
getSemanticallyNestedValues,
|
|
548
|
+
getStateValue,
|
|
593
549
|
getRelativeValue,
|
|
594
|
-
|
|
595
|
-
|
|
550
|
+
getDataEntryArray,
|
|
551
|
+
getBase64String,
|
|
596
552
|
createParserObject,
|
|
597
553
|
SignificandMaxBits,
|
|
598
|
-
ObjectGenerationOutputStatus,
|
|
599
554
|
IntegerMaxBits,
|
|
600
555
|
DataType,
|
|
601
556
|
DataEntryFactory
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DataEntry, DataEntryArray, NestedContentType, SingleLevelContentType, DoubleLevelContentType, ArrayEntryDataType, EnumEntryDataType, OptionalEntryDataType, DataEntryParsingReturnType, DerivativeStateDataType, InternalStateDataGenerationMethod, StateDataGenerationMethod, StateDataType } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Helper method for finding an existing data entry in case there was a previous object
|
|
4
|
+
* @param dataEntry - new DataEntry
|
|
5
|
+
* @param dataEntryArray - existing DataEntryArray
|
|
6
|
+
*/
|
|
7
|
+
export declare const findExistingDataEntry: (dataEntry: DataEntry, dataEntryArray: DataEntryArray) => DataEntry | undefined;
|
|
8
|
+
export declare const readDataEntry: (dataEntry: DataEntry, bitString: string) => DataEntryParsingReturnType;
|
|
9
|
+
export declare const updateDataEntry: (dataEntry: DataEntry, existingData: DataEntryArray) => DataEntryParsingReturnType;
|
|
10
|
+
export declare const internalGetDataEntry: (dataEntry: DataEntry, prefix: string, additionalData?: DataEntryArray | string) => [DataEntryArray | string | undefined, [string, DataEntry]];
|
|
11
|
+
export declare const getStateFromOptionalEntryDataType: (oedt: OptionalEntryDataType, prefix: string, attributeName: string) => InternalStateDataGenerationMethod;
|
|
12
|
+
export declare const getStateFromEnumEntryDataType: (eedt: EnumEntryDataType, prefix: string, attributeName: string) => (additionalData?: DataEntryArray | string) => [DataEntryArray | string | undefined, [string, StateDataType]];
|
|
13
|
+
export declare const getStateFromArrayEntryDataType: (aedt: ArrayEntryDataType, prefix: string, attributeName: string) => (additionalData?: DataEntryArray | string) => [DataEntryArray | string | undefined, [string, DerivativeStateDataType]];
|
|
14
|
+
export declare const getStateDataFromDoubleLevelContentType: (dct: DoubleLevelContentType, prefix: string, attributeName: string) => InternalStateDataGenerationMethod;
|
|
15
|
+
export declare const getStateDateFromSingleLevelContentTypeArray: (slcta: SingleLevelContentType[], prefix: string, attributeName: string) => (additionalData?: DataEntryArray | string) => [DataEntryArray | string | undefined, [string, StateDataType]];
|
|
16
|
+
export declare const getStateDataFromNestedContentType: (nct: NestedContentType, prefix: string, attributeName: string) => InternalStateDataGenerationMethod;
|
|
17
|
+
export declare const getStateDataFromSingleLevelContentType: (slct: SingleLevelContentType, prefix: string) => InternalStateDataGenerationMethod;
|
|
18
|
+
export declare const getGenerationMethodForSingleLevelContentTypeArray: (slct: SingleLevelContentType[]) => StateDataGenerationMethod;
|
|
19
|
+
export declare const testOnlyResetCurrentDataEntryIndex: () => number;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataEntryArray, NestedContentType, SingleLevelContentType } from '../types';
|
|
2
|
+
import { StateDataType, StateValueType } from '../types/stateValueModel';
|
|
3
|
+
export declare const getStateValue: (stateValue: StateDataType) => StateValueType;
|
|
4
|
+
export declare const getDataEntryArray: (stateValue: StateDataType) => DataEntryArray;
|
|
5
|
+
export declare const getBase64String: (stateValue: StateDataType) => string;
|
|
6
|
+
export declare const isSingleLevelContentType: (data: NestedContentType) => boolean;
|
|
7
|
+
export declare const isDoubleLevelContentType: (data: NestedContentType) => boolean;
|
|
8
|
+
export declare const singleLevelContentTypeIsDataEntry: (data: SingleLevelContentType) => boolean;
|
|
9
|
+
export declare const singleLevelContentTypeIsNestedContentDataType: (data: SingleLevelContentType) => boolean;
|
|
10
|
+
export declare const doubleLevelContentTypeIsEnumEntryDataType: (data: NestedContentType) => boolean;
|
|
11
|
+
export declare const doubleLevelContentTypeIsOptionalEntryDataType: (data: NestedContentType) => boolean;
|
|
12
|
+
export declare const doubleLevelContentTypeIsArrayDefinitionType: (data: NestedContentType) => boolean;
|
|
13
|
+
export declare const isDataEntry: (v: any) => boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EnumSemantics, VersionHandler, VersionContentDefinition } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Method to create version definition objects
|
|
4
|
+
* @param {VersionArrayDefinitionType[]} versionContent - version definition array
|
|
5
|
+
* @param {number} maximumExpectedVersions - maximum expected versions to define
|
|
6
|
+
* @param {number} defaultVersion - number - optional, default it is the first,
|
|
7
|
+
* @param {EnumSemantics[] | EnumSemantics} enumSemanticsMapping - optional - UI semantics mapping for enums. If not given, values will be numbers
|
|
8
|
+
* @param {undefined | Record<string, string> | Record<string, string>[]} attributeSemanticsMapping - optional - UI semantics mapping, if nothing given no semantics will be mapped
|
|
9
|
+
* @param {number[]} exposedVersions?: number[] - optional - UI semantics, masks which objects to show and hide
|
|
10
|
+
* @returns ParsersForVersionObject
|
|
11
|
+
*/
|
|
12
|
+
export declare const createParserObject: (versionContent: VersionContentDefinition, maximumExpectedVersions: number, defaultVersion?: number, enumSemanticsMapping?: EnumSemantics | EnumSemantics[], attributeSemanticsMapping?: Record<string, string> | Record<string, string>[], exposedVersions?: number[]) => VersionHandler;
|
|
@@ -2,6 +2,7 @@ import { DataEntryArray, DataEntry } from '../types/dataEntry';
|
|
|
2
2
|
export declare const valueBitsParser: (bitString: string, mapData: DataEntry) => number | boolean;
|
|
3
3
|
export declare const dataBitsParser: (rawString: string, mapData: DataEntry) => DataEntry;
|
|
4
4
|
export declare const getBitsCount: (mapData: DataEntry) => number;
|
|
5
|
+
export declare const dataEntryBitstringParser: (bitstring: string, dataEntry: DataEntry) => [DataEntry, string];
|
|
5
6
|
/**
|
|
6
7
|
* Method to convert a bitstring into an array of data entries
|
|
7
8
|
* @param bitString bitstring to parse into bits and then data entries
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { DataEntry
|
|
1
|
+
import { DataEntry } from './dataEntry';
|
|
2
2
|
export type SingleLevelContentType = DataEntry | NestedContentDataType;
|
|
3
3
|
export type NestedContentDataType = [string, NestedContentType];
|
|
4
4
|
export type NestedContentType = SingleLevelContentType[] | DoubleLevelContentType;
|
|
5
|
-
export type DoubleLevelContentType = OptionalEntryDataType | EnumEntryDataType;
|
|
5
|
+
export type DoubleLevelContentType = OptionalEntryDataType | EnumEntryDataType | ArrayEntryDataType;
|
|
6
6
|
export type NonEmptyValidEntryArrayType = [SingleLevelContentType, ...SingleLevelContentType[]];
|
|
7
7
|
export type OptionalEntryDataType = [boolean, NonEmptyValidEntryArrayType, []] | [boolean, [], NonEmptyValidEntryArrayType];
|
|
8
8
|
export type EnumEntryDataType = [number, NonEmptyValidEntryArrayType, NonEmptyValidEntryArrayType, ...SingleLevelContentType[][]];
|
|
9
|
-
export type
|
|
10
|
-
export declare const
|
|
9
|
+
export type ArrayEntryDataType = [[number, number], NonEmptyValidEntryArrayType];
|
|
10
|
+
export declare const PREFIX_SEPERATOR_DELIMETER = "_";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
export * from './arrayDefinitions';
|
|
1
2
|
export * from './booleanData';
|
|
2
3
|
export * from './dataEntry';
|
|
3
4
|
export * from './enumData';
|
|
4
5
|
export * from './floatData';
|
|
5
6
|
export * from './intData';
|
|
6
|
-
export * from './
|
|
7
|
+
export * from './semanticMapping';
|
|
8
|
+
export * from './stateValueModel';
|
|
7
9
|
export * from './versionData';
|
|
8
|
-
export * from './versionParser';
|
|
9
|
-
export * from './arrayDefinitions';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SingleLevelContentType } from './arrayDefinitions';
|
|
2
|
+
import { DataEntry, DataEntryArray } from './dataEntry';
|
|
3
|
+
import { EnumSemantics } from './semanticMapping';
|
|
4
|
+
export type StateDataType = {
|
|
5
|
+
[attribute: string]: DataEntry | StateDataType | DerivativeStateDataType;
|
|
6
|
+
};
|
|
7
|
+
export type DerivativeStateDataType = {
|
|
8
|
+
s: DataEntry;
|
|
9
|
+
v: StateDataType | StateDataType[];
|
|
10
|
+
};
|
|
11
|
+
export type StateValueType = {
|
|
12
|
+
[attribute: string]: boolean | number | string | StateValueType | DerivativeStateValueType;
|
|
13
|
+
};
|
|
14
|
+
export type DerivativeStateValueType = {
|
|
15
|
+
s: boolean | number | string;
|
|
16
|
+
v: StateValueType | StateValueType[];
|
|
17
|
+
};
|
|
18
|
+
export type StateDataGenerationMethod = (additionalData?: DataEntryArray | string) => StateDataType;
|
|
19
|
+
export type DataEntryParsingReturnType = [DataEntryArray | string | undefined, [string, DataEntry]];
|
|
20
|
+
export type InternalStateDataGenerationMethod = (additionalData?: DataEntryArray | string) => [DataEntryArray | string | undefined, [string, DataEntry | StateDataType | DerivativeStateDataType]];
|
|
21
|
+
export type ExposedParserStateDataMethod = (additionalData?: StateDataType | DataEntryArray | string) => StateDataType;
|
|
22
|
+
export type UpdateStateDataMethod = (state: StateDataType, entryToUpdate: DataEntry) => StateDataType;
|
|
23
|
+
export type StringifyStateDataMethod = (data: StateDataType | DataEntryArray) => string;
|
|
24
|
+
export type VersionContentDefinition = SingleLevelContentType[][];
|
|
25
|
+
export type VersionHandler = {
|
|
26
|
+
versionBitCount: number;
|
|
27
|
+
exposedVersions?: number[];
|
|
28
|
+
enumSemanticsMapping?: EnumSemantics | EnumSemantics[];
|
|
29
|
+
attributeSemanticsMapping?: Record<string, string> | Record<string, string>[];
|
|
30
|
+
parser: ExposedParserStateDataMethod;
|
|
31
|
+
updater: UpdateStateDataMethod;
|
|
32
|
+
stringify: StringifyStateDataMethod;
|
|
33
|
+
};
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { DataEntry, DefinitionNestedArray, DefinitionNestedGenerationObject, DefinitionSubObject, VersionDefinitionObject } from '../types';
|
|
2
|
-
import { EnumEntryDataType, OptionalEntryDataType, NestedContentType, NestedContentDataType, SingleLevelContentType, VersionArrayDefinitionType } from '../types/arrayDefinitions';
|
|
3
|
-
export declare const isSingleLevelContentType: (data: NestedContentType) => boolean;
|
|
4
|
-
export declare const isDoubleLevelContentType: (data: NestedContentType) => boolean;
|
|
5
|
-
export declare const singleLevelContentTypeIsDataEntry: (data: SingleLevelContentType) => boolean;
|
|
6
|
-
export declare const singleLevelContentTypeIsNestedContentDataType: (data: SingleLevelContentType) => boolean;
|
|
7
|
-
export declare const singleLevelContentTypeIsEnumEntryDataType: (data: NestedContentType) => boolean;
|
|
8
|
-
export declare const singleLevelContentTypeIsOptionalEntryDataType: (data: NestedContentType) => boolean;
|
|
9
|
-
export declare const parseSingleLevelContentTypeToDefinitionSubObject: (data: SingleLevelContentType, internalPrecedingName?: string) => DefinitionSubObject;
|
|
10
|
-
export declare const parseNestedContentDataTypeToDefinitionNestedArray: (data: NestedContentDataType, internalPrecedingName?: string) => DefinitionNestedArray | DefinitionNestedGenerationObject;
|
|
11
|
-
export declare const parseEnumEntryDataTypeToDefinitionNestedGenerationObject: (data: EnumEntryDataType, name: string, internalPrecedingName?: string) => DefinitionNestedGenerationObject;
|
|
12
|
-
export declare const parseOptionalEntryDataTypeToDefinitionNestedGenerationObject: (data: OptionalEntryDataType, name: string, internalPrecedingName?: string) => DefinitionNestedGenerationObject;
|
|
13
|
-
export declare const parseDataEntry: (d: DataEntry, internalPrecedingName?: string) => DataEntry;
|
|
14
|
-
export declare const parseVersionArrayDefinitionTypeToVersionDefinitionObject: (v: VersionArrayDefinitionType, optionalIndexOverwrite?: number) => VersionDefinitionObject;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { DataEntry } from '../types/dataEntry';
|
|
2
|
-
import { SemanticlyNestedDataEntry } from '../types/semanticlyNestedDataEntry';
|
|
3
|
-
import { DefinitionArrayObject, ParsersForVersionObject } from '../types/versionParser';
|
|
4
|
-
/**
|
|
5
|
-
* Method for finding the names of the variable data entries in the DefinitionArrayObject
|
|
6
|
-
* @param definitionArrayObject - DefinitionArrayObject
|
|
7
|
-
* @returns string[] - the key strings
|
|
8
|
-
*/
|
|
9
|
-
export declare const getVariableStrings: (definitionArrayObject: DefinitionArrayObject) => string[];
|
|
10
|
-
/**
|
|
11
|
-
* Method that translates a DefinitionArrayObject into a SemanticlyNestedDataEntry
|
|
12
|
-
* @param definitionArrayObject [DataEntry | [string, DefinitionArrayObject]]
|
|
13
|
-
* @returns
|
|
14
|
-
*/
|
|
15
|
-
export declare const nestedDataEntryArrayToObject: (definitionArrayObject: DefinitionArrayObject) => SemanticlyNestedDataEntry;
|
|
16
|
-
/**
|
|
17
|
-
* Method to parse a url into a SemanticlyNestedDataEntry.
|
|
18
|
-
* @param url - the url to parse
|
|
19
|
-
* @param parserVersions - the object containing the version parsers
|
|
20
|
-
* @returns the parsed SemanticlyNestedDataEntry
|
|
21
|
-
*/
|
|
22
|
-
export declare const parseUrlMethod: (url: string, parserVersions: ParsersForVersionObject) => SemanticlyNestedDataEntry;
|
|
23
|
-
export declare const parseDownNestedDataDescription: (nestedDataDescription: SemanticlyNestedDataEntry) => DataEntry[];
|
|
24
|
-
/**
|
|
25
|
-
* Method to get an URL descriptor from a SemanticlyNestedDataEntry
|
|
26
|
-
* @param data: SemanticlyNestedDataEntry
|
|
27
|
-
* @returns base64 string
|
|
28
|
-
*/
|
|
29
|
-
export declare const getURLForData: (data: SemanticlyNestedDataEntry) => string;
|
|
30
|
-
export declare const getTestStringValues: (data: SemanticlyNestedDataEntry) => {
|
|
31
|
-
bitsString: string;
|
|
32
|
-
base64BitString: string;
|
|
33
|
-
base64SplitString: string;
|
|
34
|
-
base64String: string;
|
|
35
|
-
raw: string;
|
|
36
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { DataEntry, DataEntryArray } from '../types/dataEntry';
|
|
2
|
-
import { SemanticlyNestedDataEntry } from '../types/semanticlyNestedDataEntry';
|
|
3
|
-
import { DefinitionArrayObject, ParserForVersion, ParsersForVersionObject } from '../types/versionParser';
|
|
4
|
-
/**
|
|
5
|
-
* Method to parse a definitionArrayObject according to a given dataArray
|
|
6
|
-
* @param definitionArrayObject
|
|
7
|
-
* @param dataArray
|
|
8
|
-
* @returns - new SemanticlyNestedDataEntry
|
|
9
|
-
*/
|
|
10
|
-
export declare const updateDataEntryObject: (definitionArrayObject: DefinitionArrayObject, dataArray: DataEntryArray) => SemanticlyNestedDataEntry;
|
|
11
|
-
/**
|
|
12
|
-
* Get the default object for a given version
|
|
13
|
-
* @param versionParser - The parsers for all versions
|
|
14
|
-
* @param versionindex - The index of the version for which to get the default object
|
|
15
|
-
* @returns - The default object for the given version
|
|
16
|
-
* @throws - Error if no parser for the given version index
|
|
17
|
-
*/
|
|
18
|
-
export declare const getDefaultObject: (versionParser: ParsersForVersionObject, versionindex: number) => SemanticlyNestedDataEntry;
|
|
19
|
-
/**
|
|
20
|
-
* Method that handles the updating of a single value in a SemanticlyNestedDataEntry object
|
|
21
|
-
* @param data SemanticlyNestedDataEntry
|
|
22
|
-
* @param newDataEntry updated DataEntry
|
|
23
|
-
* @param parsersForVersion version object
|
|
24
|
-
* @returns a newly created object in case of a key data description, otherwise the same object with just the new Data Entry value updated
|
|
25
|
-
*/
|
|
26
|
-
export declare const updateDataEntry: (data: SemanticlyNestedDataEntry, newDataEntry: DataEntry, parsersForVersion: ParserForVersion[]) => SemanticlyNestedDataEntry;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { VersionArrayDefinitionType, VersionRangeType, VersionEnumSemantics, ParsersForVersionObject, SemanticlyNestedDataEntry, DataEntry, SemanticlyNestedValues, DataEntryArray } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Method to create version definition objects
|
|
4
|
-
* @param {VersionArrayDefinitionType[]} versionArray - version definition array
|
|
5
|
-
* @param {VersionRangeType} versionBitCount - bit count
|
|
6
|
-
* @param {VersionEnumSemantics[] | VersionEnumSemantics} enumSemanticsMapping - optional semantics mapping for enums. If not given, values will be numbers
|
|
7
|
-
* @param {undefined | Record<string, string> | Record<string, string>[]} attributeSemanticsMapping - optional semantics mapping, if nothing given no semantics will be mapped
|
|
8
|
-
* @returns ParsersForVersionObject
|
|
9
|
-
*/
|
|
10
|
-
export declare const createParserObject: (versionArray: VersionArrayDefinitionType[], versionBitCount: VersionRangeType, enumSemanticsMapping?: VersionEnumSemantics[] | VersionEnumSemantics, attributeSemanticsMapping?: Record<string, string>[] | Record<string, string>) => ParsersForVersionObject;
|
|
11
|
-
/** the data object needs to be accesible in 3 versions.
|
|
12
|
-
*
|
|
13
|
-
* 1. As a semanticly nested object (primary data structure, also used for UI)
|
|
14
|
-
* 2. As an array of entries (derived from semanticly nested object, to translate and from to bitstream)
|
|
15
|
-
* 3. As an object with all the data entry information stripped (derived from semanticly nested object, read only)
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* Construct SemanticlyNestedDataEntry
|
|
19
|
-
* @param urlSafeBase64 - the url to parse
|
|
20
|
-
* @param parserVersions - the object containing the version parsers
|
|
21
|
-
* @returns the parsed SemanticlyNestedDataEntry
|
|
22
|
-
*/
|
|
23
|
-
export declare const parseUrl: (urlSafeBase64: string, parserVersions: ParsersForVersionObject) => SemanticlyNestedDataEntry;
|
|
24
|
-
/**
|
|
25
|
-
* Update a data entry in a SemanticlyNestedDataEntry
|
|
26
|
-
* @param {DataEntry} updatedEntry - the updated data entry
|
|
27
|
-
* @param {SemanticlyNestedDataEntry} currentObject - the current Data Object
|
|
28
|
-
* @param {ParsersForVersionObject} parserVersions - the object containing the version parsers
|
|
29
|
-
* @returns {SemanticlyNestedDataEntry} - the updated SemanticlyNestedDataEntry
|
|
30
|
-
*/
|
|
31
|
-
export declare const updateDataEntry: (updatedEntry: DataEntry, currentObject: SemanticlyNestedDataEntry, parserVersions: ParsersForVersionObject) => SemanticlyNestedDataEntry;
|
|
32
|
-
/**
|
|
33
|
-
* Method to get the URLSafeBase64 representation of a SemanticlyNestedDataEntry
|
|
34
|
-
* @param {SemanticlyNestedDataEntry} data - the data object
|
|
35
|
-
* @returns {string} - the urlSafeBase64 representation
|
|
36
|
-
*/
|
|
37
|
-
export declare const getURLSafeBase64ForData: (data: SemanticlyNestedDataEntry) => string;
|
|
38
|
-
/**
|
|
39
|
-
* Method for getting the basic object for a given semanticly nested data entry
|
|
40
|
-
* @param {SemanticlyNestedDataEntry} data - the data object
|
|
41
|
-
* @returns {SemanticlyNestedDataEntry} - the basic object
|
|
42
|
-
*/
|
|
43
|
-
export declare const getSemanticallyNestedValues: (data: SemanticlyNestedDataEntry, parserVersions: ParsersForVersionObject) => SemanticlyNestedValues;
|
|
44
|
-
/**
|
|
45
|
-
* Method to get the default object for a given version
|
|
46
|
-
* @param {ParsersForVersionObject} parserForVersions - the object containing the version parsers
|
|
47
|
-
* @param {number} versionindex - number of the version you want to generate the default object for
|
|
48
|
-
* @returns SemanticlyNestedDataEntry
|
|
49
|
-
*/
|
|
50
|
-
export declare const getDefaultObject: (parserForVersions: ParsersForVersionObject, versionindex: number) => SemanticlyNestedDataEntry;
|
|
51
|
-
/**
|
|
52
|
-
* Method to get the get a (sorted by index) flat array of a SemanticallyNestedDataEntry
|
|
53
|
-
* @param {SemanticlyNestedDataEntry} data - the semanticly nested data entry to flatten
|
|
54
|
-
* @returns DataEntryArray
|
|
55
|
-
*/
|
|
56
|
-
export declare const getFlatArray: (data: SemanticlyNestedDataEntry) => DataEntryArray;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ParsersForVersionObject } from '../types';
|
|
2
|
-
import { NestedContentDataType, OptionalEntryDataType, EnumEntryDataType, VersionArrayDefinitionType, NestedContentType } from '../types/arrayDefinitions';
|
|
3
|
-
export declare const nestedContentDataType: NestedContentDataType;
|
|
4
|
-
export declare const validOptionalEntryType: OptionalEntryDataType;
|
|
5
|
-
export declare const anotherValidOptionalEntryType: OptionalEntryDataType;
|
|
6
|
-
export declare const validEnumEntryType: EnumEntryDataType;
|
|
7
|
-
export declare const generalNestedContentDataType: NestedContentDataType;
|
|
8
|
-
export declare const exampleVersion: VersionArrayDefinitionType;
|
|
9
|
-
export declare const lucernaeTuricumArcExamples: EnumEntryDataType;
|
|
10
|
-
export declare const footprintDefinition: EnumEntryDataType;
|
|
11
|
-
export declare const heightParsingDefinition: NestedContentType;
|
|
12
|
-
export declare const shapePreProcessingDefinition: EnumEntryDataType;
|
|
13
|
-
export declare const lucernaeTurici: VersionArrayDefinitionType;
|
|
14
|
-
export declare const lucernaeTuriciVersions: ParsersForVersionObject;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const values: [boolean, string][];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/test/enum.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const values: [number, number, string][];
|
package/dist/test/int.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const values: [number, number, number, string][];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { ObjectGenerationOutputStatus } from '../enums/objectGenerationTypes';
|
|
2
|
-
import { DataEntry, VersionDataEntry } from './dataEntry';
|
|
3
|
-
import { SemanticlyNestedDataEntry } from './semanticlyNestedDataEntry';
|
|
4
|
-
import { VersionRangeType } from './versionData';
|
|
5
|
-
/**
|
|
6
|
-
* A method that generates a nested object based on a set of values
|
|
7
|
-
* @param s - url bit string (optional)
|
|
8
|
-
* @param v - The values to be used to generate the object, can be either a valid value for a dataentry, a bitstring (only 0 or 1 chars) or undefined (default value)
|
|
9
|
-
* @returns [The generated object, the generation status, the index end bit of the bit url (-1 if)]
|
|
10
|
-
*/
|
|
11
|
-
export type ObjectGeneratorMethod = (s?: string, ...v: (DataEntry | undefined)[]) => [SemanticlyNestedDataEntry, ObjectGenerationOutputStatus, number];
|
|
12
|
-
export type DefinitionGenerationObject = (v: DataEntry) => DefinitionArrayObject;
|
|
13
|
-
export type DefinitionNestedArray = [string, DefinitionArrayObject];
|
|
14
|
-
export type DefinitionNestedGenerationObject = [string, DataEntry, DefinitionGenerationObject];
|
|
15
|
-
export type DefinitionSubObject = DataEntry | DefinitionNestedArray | DefinitionNestedGenerationObject;
|
|
16
|
-
export type DefinitionArrayObject = DefinitionSubObject[];
|
|
17
|
-
export type VersionDefinitionObject = [VersionDataEntry, ...DefinitionArrayObject];
|
|
18
|
-
export type VersionEnumSemantics = {
|
|
19
|
-
[key: string]: {
|
|
20
|
-
value: number;
|
|
21
|
-
label: string;
|
|
22
|
-
}[];
|
|
23
|
-
};
|
|
24
|
-
export type ParserForVersion = {
|
|
25
|
-
enumSemanticsMapping?: VersionEnumSemantics;
|
|
26
|
-
attributeSemanticsMapping?: Record<string, string>;
|
|
27
|
-
objectGeneratorParameters: VersionDefinitionObject;
|
|
28
|
-
};
|
|
29
|
-
export type ParsersForVersionObject = {
|
|
30
|
-
versionBitCount: VersionRangeType;
|
|
31
|
-
parsers: ParserForVersion[];
|
|
32
|
-
};
|