@yume-chan/struct 0.0.10 → 0.0.14
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/CHANGELOG.json +48 -0
- package/CHANGELOG.md +29 -1
- package/LICENSE +1 -1
- package/README.md +102 -53
- package/{dts → esm}/basic/definition.d.ts +9 -13
- package/esm/basic/definition.d.ts.map +1 -0
- package/esm/basic/definition.js +13 -9
- package/esm/basic/definition.js.map +1 -1
- package/{dts → esm}/basic/field-value.d.ts +8 -8
- package/esm/basic/field-value.d.ts.map +1 -0
- package/esm/basic/field-value.js +12 -5
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/index.d.ts +6 -0
- package/esm/basic/index.d.ts.map +1 -0
- package/esm/basic/index.js +5 -4
- package/esm/basic/index.js.map +1 -1
- package/esm/basic/options.d.ts +10 -0
- package/esm/basic/options.d.ts.map +1 -0
- package/esm/basic/{context.js → options.js} +1 -1
- package/esm/basic/options.js.map +1 -0
- package/esm/basic/stream.d.ts +19 -0
- package/esm/basic/stream.d.ts.map +1 -0
- package/esm/basic/stream.js +2 -0
- package/esm/basic/stream.js.map +1 -0
- package/{dts → esm}/basic/struct-value.d.ts +3 -3
- package/esm/basic/struct-value.d.ts.map +1 -0
- package/esm/basic/struct-value.js +7 -9
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/index.d.ts +14 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +5 -5
- package/esm/index.js.map +1 -1
- package/{dts → esm}/struct.d.ts +16 -12
- package/esm/struct.d.ts.map +1 -0
- package/esm/struct.js +67 -54
- package/esm/struct.js.map +1 -1
- package/esm/syncbird.d.ts +65 -0
- package/esm/syncbird.d.ts.map +1 -0
- package/esm/syncbird.js +17 -4
- package/esm/syncbird.js.map +1 -1
- package/esm/types/bigint.d.ts +25 -0
- package/esm/types/bigint.d.ts.map +1 -0
- package/esm/types/bigint.js +45 -0
- package/esm/types/bigint.js.map +1 -0
- package/esm/types/buffer/base.d.ts +63 -0
- package/esm/types/buffer/base.d.ts.map +1 -0
- package/esm/types/buffer/base.js +100 -0
- package/esm/types/buffer/base.js.map +1 -0
- package/esm/types/buffer/fixed-length.d.ts +8 -0
- package/esm/types/buffer/fixed-length.d.ts.map +1 -0
- package/esm/types/buffer/fixed-length.js +8 -0
- package/esm/types/buffer/fixed-length.js.map +1 -0
- package/esm/types/buffer/index.d.ts +4 -0
- package/esm/types/buffer/index.d.ts.map +1 -0
- package/esm/types/buffer/index.js +4 -0
- package/esm/types/buffer/index.js.map +1 -0
- package/esm/types/buffer/variable-length.d.ts +43 -0
- package/esm/types/buffer/variable-length.d.ts.map +1 -0
- package/esm/types/buffer/variable-length.js +76 -0
- package/esm/types/buffer/variable-length.js.map +1 -0
- package/esm/types/index.d.ts +4 -0
- package/esm/types/index.d.ts.map +1 -0
- package/esm/types/index.js +3 -4
- package/esm/types/index.js.map +1 -1
- package/{dts → esm}/types/number.d.ts +10 -12
- package/esm/types/number.d.ts.map +1 -0
- package/esm/types/number.js +21 -14
- package/esm/types/number.js.map +1 -1
- package/{dts → esm}/utils.d.ts +2 -2
- package/{dts → esm}/utils.d.ts.map +1 -1
- package/esm/utils.js +9 -3
- package/esm/utils.js.map +1 -1
- package/package.json +47 -47
- package/src/basic/definition.ts +11 -13
- package/src/basic/field-value.ts +8 -8
- package/src/basic/index.ts +5 -4
- package/src/basic/options.ts +19 -0
- package/src/basic/stream.ts +19 -0
- package/src/basic/struct-value.ts +4 -4
- package/src/index.ts +17 -5
- package/src/struct.ts +89 -75
- package/src/syncbird.ts +88 -10
- package/src/types/bigint.ts +102 -0
- package/src/types/buffer/base.ts +176 -0
- package/src/types/buffer/fixed-length.ts +17 -0
- package/src/types/buffer/index.ts +3 -0
- package/src/types/buffer/variable-length.ts +156 -0
- package/src/types/index.ts +3 -4
- package/src/types/number.ts +27 -26
- package/src/utils.ts +13 -5
- package/dts/basic/context.d.ts +0 -28
- package/dts/basic/context.d.ts.map +0 -1
- package/dts/basic/definition.d.ts.map +0 -1
- package/dts/basic/field-value.d.ts.map +0 -1
- package/dts/basic/index.d.ts +0 -5
- package/dts/basic/index.d.ts.map +0 -1
- package/dts/basic/struct-value.d.ts.map +0 -1
- package/dts/index.d.ts +0 -6
- package/dts/index.d.ts.map +0 -1
- package/dts/struct.d.ts.map +0 -1
- package/dts/syncbird.d.ts +0 -20
- package/dts/syncbird.d.ts.map +0 -1
- package/dts/types/array-buffer.d.ts +0 -71
- package/dts/types/array-buffer.d.ts.map +0 -1
- package/dts/types/fixed-length-array-buffer.d.ts +0 -8
- package/dts/types/fixed-length-array-buffer.d.ts.map +0 -1
- package/dts/types/index.d.ts +0 -5
- package/dts/types/index.d.ts.map +0 -1
- package/dts/types/number.d.ts.map +0 -1
- package/dts/types/variable-length-array-buffer.d.ts +0 -32
- package/dts/types/variable-length-array-buffer.d.ts.map +0 -1
- package/esm/basic/context.js.map +0 -1
- package/esm/types/array-buffer.js +0 -110
- package/esm/types/array-buffer.js.map +0 -1
- package/esm/types/fixed-length-array-buffer.js +0 -8
- package/esm/types/fixed-length-array-buffer.js.map +0 -1
- package/esm/types/variable-length-array-buffer.js +0 -71
- package/esm/types/variable-length-array-buffer.js.map +0 -1
- package/src/basic/context.ts +0 -32
- package/src/types/array-buffer.ts +0 -194
- package/src/types/fixed-length-array-buffer.ts +0 -17
- package/src/types/variable-length-array-buffer.ts +0 -142
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { StructFieldDefinition, StructFieldValue, StructOptions, StructValue } from '../basic';
|
|
2
|
-
import type { KeysOfType } from '../utils';
|
|
3
|
-
import { ArrayBufferLikeFieldDefinition, ArrayBufferLikeFieldType, ArrayBufferLikeFieldValue } from './array-buffer';
|
|
4
|
-
|
|
5
|
-
export type LengthField<TFields> = KeysOfType<TFields, number | string>;
|
|
6
|
-
|
|
7
|
-
export interface VariableLengthArrayBufferLikeFieldOptions<
|
|
8
|
-
TFields = object,
|
|
9
|
-
TLengthField extends LengthField<TFields> = any,
|
|
10
|
-
> {
|
|
11
|
-
lengthField: TLengthField;
|
|
12
|
-
|
|
13
|
-
lengthFieldBase?: number;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class VariableLengthArrayBufferLikeFieldDefinition<
|
|
17
|
-
TType extends ArrayBufferLikeFieldType = ArrayBufferLikeFieldType,
|
|
18
|
-
TOptions extends VariableLengthArrayBufferLikeFieldOptions = VariableLengthArrayBufferLikeFieldOptions
|
|
19
|
-
> extends ArrayBufferLikeFieldDefinition<
|
|
20
|
-
TType,
|
|
21
|
-
TOptions,
|
|
22
|
-
TOptions['lengthField']
|
|
23
|
-
> {
|
|
24
|
-
public getSize(): number {
|
|
25
|
-
return 0;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
protected override getDeserializeSize(struct: StructValue) {
|
|
29
|
-
let value = struct.value[this.options.lengthField] as number | string;
|
|
30
|
-
if (typeof value === 'string') {
|
|
31
|
-
value = Number.parseInt(value, this.options.lengthFieldBase ?? 10);
|
|
32
|
-
}
|
|
33
|
-
return value;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public override create(
|
|
37
|
-
options: Readonly<StructOptions>,
|
|
38
|
-
struct: StructValue,
|
|
39
|
-
value: TType['TTypeScriptType'],
|
|
40
|
-
arrayBuffer?: ArrayBuffer
|
|
41
|
-
): VariableLengthArrayBufferLikeStructFieldValue<this> {
|
|
42
|
-
return new VariableLengthArrayBufferLikeStructFieldValue(
|
|
43
|
-
this,
|
|
44
|
-
options,
|
|
45
|
-
struct,
|
|
46
|
-
value,
|
|
47
|
-
arrayBuffer,
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export class VariableLengthArrayBufferLikeStructFieldValue<
|
|
53
|
-
TDefinition extends VariableLengthArrayBufferLikeFieldDefinition = VariableLengthArrayBufferLikeFieldDefinition,
|
|
54
|
-
> extends ArrayBufferLikeFieldValue<TDefinition> {
|
|
55
|
-
protected length: number | undefined;
|
|
56
|
-
|
|
57
|
-
protected lengthFieldValue: VariableLengthArrayBufferLikeFieldLengthValue;
|
|
58
|
-
|
|
59
|
-
public constructor(
|
|
60
|
-
definition: TDefinition,
|
|
61
|
-
options: Readonly<StructOptions>,
|
|
62
|
-
struct: StructValue,
|
|
63
|
-
value: TDefinition['TValue'],
|
|
64
|
-
arrayBuffer?: ArrayBuffer,
|
|
65
|
-
) {
|
|
66
|
-
super(definition, options, struct, value, arrayBuffer);
|
|
67
|
-
|
|
68
|
-
if (arrayBuffer) {
|
|
69
|
-
this.length = arrayBuffer.byteLength;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Patch the associated length field.
|
|
73
|
-
const lengthField = this.definition.options.lengthField;
|
|
74
|
-
|
|
75
|
-
const originalValue = struct.get(lengthField);
|
|
76
|
-
this.lengthFieldValue = new VariableLengthArrayBufferLikeFieldLengthValue(
|
|
77
|
-
originalValue,
|
|
78
|
-
this,
|
|
79
|
-
);
|
|
80
|
-
struct.set(lengthField, this.lengthFieldValue);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public override getSize() {
|
|
84
|
-
if (this.length === undefined) {
|
|
85
|
-
this.length = this.definition.type.getSize(this.value);
|
|
86
|
-
if (this.length === -1) {
|
|
87
|
-
this.arrayBuffer = this.definition.type.toArrayBuffer(this.value);
|
|
88
|
-
this.length = this.arrayBuffer.byteLength;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return this.length;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
public override set(value: unknown) {
|
|
96
|
-
super.set(value);
|
|
97
|
-
this.arrayBuffer = undefined;
|
|
98
|
-
this.length = undefined;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Not using `VariableLengthArrayBufferLikeStructFieldValue` directly makes writing tests much easier...
|
|
103
|
-
type VariableLengthArrayBufferLikeFieldValueLike =
|
|
104
|
-
StructFieldValue<StructFieldDefinition<VariableLengthArrayBufferLikeFieldOptions, any, any>>;
|
|
105
|
-
|
|
106
|
-
export class VariableLengthArrayBufferLikeFieldLengthValue
|
|
107
|
-
extends StructFieldValue {
|
|
108
|
-
protected originalField: StructFieldValue;
|
|
109
|
-
|
|
110
|
-
protected arrayBufferField: VariableLengthArrayBufferLikeFieldValueLike;
|
|
111
|
-
|
|
112
|
-
public constructor(
|
|
113
|
-
originalField: StructFieldValue,
|
|
114
|
-
arrayBufferField: VariableLengthArrayBufferLikeFieldValueLike,
|
|
115
|
-
) {
|
|
116
|
-
super(originalField.definition, originalField.options, originalField.struct, 0);
|
|
117
|
-
this.originalField = originalField;
|
|
118
|
-
this.arrayBufferField = arrayBufferField;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
public override getSize() {
|
|
122
|
-
return this.originalField.getSize();
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
public override get() {
|
|
126
|
-
let value: string | number = this.arrayBufferField.getSize();
|
|
127
|
-
|
|
128
|
-
const originalValue = this.originalField.get();
|
|
129
|
-
if (typeof originalValue === 'string') {
|
|
130
|
-
value = value.toString(this.arrayBufferField.definition.options.lengthFieldBase ?? 10);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return value;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
public override set() { }
|
|
137
|
-
|
|
138
|
-
serialize(dataView: DataView, offset: number) {
|
|
139
|
-
this.originalField.set(this.get());
|
|
140
|
-
this.originalField.serialize(dataView, offset);
|
|
141
|
-
}
|
|
142
|
-
}
|