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