@yume-chan/struct 0.0.10 → 0.0.12
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 +27 -0
- package/CHANGELOG.md +16 -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 +15 -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 +86 -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/{variable-length-array-buffer.ts → buffer/variable-length.ts} +48 -34
- 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
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { StructFieldDefinition, StructFieldValue, StructValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions } from '../../basic/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for all types that
|
|
4
|
+
* can be converted from an `Uint8Array` when deserialized,
|
|
5
|
+
* and need to be converted to an `Uint8Array` when serializing
|
|
6
|
+
*
|
|
7
|
+
* @template TValue The actual TypeScript type of this type
|
|
8
|
+
* @template TTypeScriptType Optional another type (should be compatible with `TType`)
|
|
9
|
+
* specified by user when creating field definitions.
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class BufferFieldSubType<TValue = unknown, TTypeScriptType = TValue> {
|
|
12
|
+
readonly TTypeScriptType: TTypeScriptType;
|
|
13
|
+
/**
|
|
14
|
+
* When implemented in derived classes, converts the type-specific `value` to an `Uint8Array`
|
|
15
|
+
*
|
|
16
|
+
* This function should be "pure", i.e.,
|
|
17
|
+
* same `value` should always be converted to `Uint8Array`s that have same content.
|
|
18
|
+
*/
|
|
19
|
+
abstract toBuffer(value: TValue): Uint8Array;
|
|
20
|
+
/** When implemented in derived classes, converts the `Uint8Array` to a type-specific value */
|
|
21
|
+
abstract toValue(array: Uint8Array): TValue;
|
|
22
|
+
/**
|
|
23
|
+
* When implemented in derived classes, gets the size in byte of the type-specific `value`.
|
|
24
|
+
*
|
|
25
|
+
* If the size can't be calculated without first converting the `value` back to an `Uint8Array`,
|
|
26
|
+
* implementer can returns `-1`, so the caller will get its size by first converting it to
|
|
27
|
+
* an `Uint8Array` (and cache the result).
|
|
28
|
+
*/
|
|
29
|
+
abstract getSize(value: TValue): number;
|
|
30
|
+
}
|
|
31
|
+
/** An `BufferFieldSubType` that's actually an `Uint8Array` */
|
|
32
|
+
export declare class Uint8ArrayBufferFieldSubType extends BufferFieldSubType<Uint8Array> {
|
|
33
|
+
static readonly Instance: Uint8ArrayBufferFieldSubType;
|
|
34
|
+
protected constructor();
|
|
35
|
+
toBuffer(value: Uint8Array): Uint8Array;
|
|
36
|
+
toValue(buffer: Uint8Array): Uint8Array;
|
|
37
|
+
getSize(value: Uint8Array): number;
|
|
38
|
+
}
|
|
39
|
+
/** An `BufferFieldSubType` that converts between `Uint8Array` and `string` */
|
|
40
|
+
export declare class StringBufferFieldSubType<TTypeScriptType = string> extends BufferFieldSubType<string, TTypeScriptType> {
|
|
41
|
+
static readonly Instance: StringBufferFieldSubType<string>;
|
|
42
|
+
toBuffer(value: string): Uint8Array;
|
|
43
|
+
toValue(array: Uint8Array): string;
|
|
44
|
+
getSize(): number;
|
|
45
|
+
}
|
|
46
|
+
export declare abstract class BufferLikeFieldDefinition<TType extends BufferFieldSubType<any, any> = BufferFieldSubType<unknown, unknown>, TOptions = void, TOmitInitKey extends PropertyKey = never> extends StructFieldDefinition<TOptions, TType['TTypeScriptType'], TOmitInitKey> {
|
|
47
|
+
readonly type: TType;
|
|
48
|
+
constructor(type: TType, options: TOptions);
|
|
49
|
+
protected getDeserializeSize(struct: StructValue): number;
|
|
50
|
+
/**
|
|
51
|
+
* When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
|
|
52
|
+
*/
|
|
53
|
+
create(options: Readonly<StructOptions>, struct: StructValue, value: TType['TTypeScriptType'], array?: Uint8Array): BufferLikeFieldValue<this>;
|
|
54
|
+
deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): BufferLikeFieldValue<this>;
|
|
55
|
+
deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<BufferLikeFieldValue<this>>;
|
|
56
|
+
}
|
|
57
|
+
export declare class BufferLikeFieldValue<TDefinition extends BufferLikeFieldDefinition<BufferFieldSubType<unknown, unknown>, any, any>> extends StructFieldValue<TDefinition> {
|
|
58
|
+
protected array: Uint8Array | undefined;
|
|
59
|
+
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition['TValue'], array?: Uint8Array);
|
|
60
|
+
set(value: TDefinition['TValue']): void;
|
|
61
|
+
serialize(dataView: DataView, offset: number): void;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// cspell: ignore syncbird
|
|
2
|
+
import { StructFieldDefinition, StructFieldValue } from '../../basic/index.js';
|
|
3
|
+
import { Syncbird } from "../../syncbird.js";
|
|
4
|
+
import { decodeUtf8, encodeUtf8 } from "../../utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Base class for all types that
|
|
7
|
+
* can be converted from an `Uint8Array` when deserialized,
|
|
8
|
+
* and need to be converted to an `Uint8Array` when serializing
|
|
9
|
+
*
|
|
10
|
+
* @template TValue The actual TypeScript type of this type
|
|
11
|
+
* @template TTypeScriptType Optional another type (should be compatible with `TType`)
|
|
12
|
+
* specified by user when creating field definitions.
|
|
13
|
+
*/
|
|
14
|
+
export class BufferFieldSubType {
|
|
15
|
+
TTypeScriptType;
|
|
16
|
+
}
|
|
17
|
+
/** An `BufferFieldSubType` that's actually an `Uint8Array` */
|
|
18
|
+
export class Uint8ArrayBufferFieldSubType extends BufferFieldSubType {
|
|
19
|
+
static Instance = new Uint8ArrayBufferFieldSubType();
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
}
|
|
23
|
+
toBuffer(value) {
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
toValue(buffer) {
|
|
27
|
+
return buffer;
|
|
28
|
+
}
|
|
29
|
+
getSize(value) {
|
|
30
|
+
return value.byteLength;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** An `BufferFieldSubType` that converts between `Uint8Array` and `string` */
|
|
34
|
+
export class StringBufferFieldSubType extends BufferFieldSubType {
|
|
35
|
+
static Instance = new StringBufferFieldSubType();
|
|
36
|
+
toBuffer(value) {
|
|
37
|
+
return encodeUtf8(value);
|
|
38
|
+
}
|
|
39
|
+
toValue(array) {
|
|
40
|
+
return decodeUtf8(array);
|
|
41
|
+
}
|
|
42
|
+
getSize() {
|
|
43
|
+
// Return `-1`, so `BufferLikeFieldDefinition` will
|
|
44
|
+
// convert this `value` into an `Uint8Array` (and cache the result),
|
|
45
|
+
// Then get the size from that `Uint8Array`
|
|
46
|
+
return -1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const EmptyBuffer = new Uint8Array(0);
|
|
50
|
+
export class BufferLikeFieldDefinition extends StructFieldDefinition {
|
|
51
|
+
type;
|
|
52
|
+
constructor(type, options) {
|
|
53
|
+
super(options);
|
|
54
|
+
this.type = type;
|
|
55
|
+
}
|
|
56
|
+
getDeserializeSize(struct) {
|
|
57
|
+
return this.getSize();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
|
|
61
|
+
*/
|
|
62
|
+
create(options, struct, value, array) {
|
|
63
|
+
return new BufferLikeFieldValue(this, options, struct, value, array);
|
|
64
|
+
}
|
|
65
|
+
deserialize(options, stream, struct) {
|
|
66
|
+
return Syncbird.try(() => {
|
|
67
|
+
const size = this.getDeserializeSize(struct);
|
|
68
|
+
if (size === 0) {
|
|
69
|
+
return EmptyBuffer;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return stream.read(size);
|
|
73
|
+
}
|
|
74
|
+
}).then(array => {
|
|
75
|
+
const value = this.type.toValue(array);
|
|
76
|
+
return this.create(options, struct, value, array);
|
|
77
|
+
}).valueOrPromise();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export class BufferLikeFieldValue extends StructFieldValue {
|
|
81
|
+
array;
|
|
82
|
+
constructor(definition, options, struct, value, array) {
|
|
83
|
+
super(definition, options, struct, value);
|
|
84
|
+
this.array = array;
|
|
85
|
+
}
|
|
86
|
+
set(value) {
|
|
87
|
+
super.set(value);
|
|
88
|
+
// When value changes, clear the cached `array`
|
|
89
|
+
// It will be lazily calculated in `serialize()`
|
|
90
|
+
this.array = undefined;
|
|
91
|
+
}
|
|
92
|
+
serialize(dataView, offset) {
|
|
93
|
+
if (!this.array) {
|
|
94
|
+
this.array = this.definition.type.toBuffer(this.value);
|
|
95
|
+
}
|
|
96
|
+
new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength)
|
|
97
|
+
.set(this.array, offset);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BufferLikeFieldDefinition, type BufferFieldSubType } from "./base.js";
|
|
2
|
+
export interface FixedLengthBufferLikeFieldOptions {
|
|
3
|
+
length: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class FixedLengthBufferLikeFieldDefinition<TType extends BufferFieldSubType = BufferFieldSubType, TOptions extends FixedLengthBufferLikeFieldOptions = FixedLengthBufferLikeFieldOptions> extends BufferLikeFieldDefinition<TType, TOptions> {
|
|
6
|
+
getSize(): number;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=fixed-length.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixed-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/E,MAAM,WAAW,iCAAiC;IAC9C,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oCAAoC,CAC7C,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,QAAQ,SAAS,iCAAiC,GAAG,iCAAiC,CACpF,SAAQ,yBAAyB,CACnC,KAAK,EACL,QAAQ,CACP;IACM,OAAO,IAAI,MAAM;CAG3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixed-length.js","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAA2B,MAAM,WAAW,CAAC;AAM/E,MAAM,OAAO,oCAGP,SAAQ,yBAGT;IACM,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACJ;AAAA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/buffer/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { StructFieldValue, type StructFieldDefinition, type StructOptions, type StructValue } from '../../basic/index.js';
|
|
2
|
+
import type { KeysOfType } from '../../utils.js';
|
|
3
|
+
import { BufferLikeFieldDefinition, BufferLikeFieldValue, type BufferFieldSubType } from './base.js';
|
|
4
|
+
export declare type LengthField<TFields> = KeysOfType<TFields, number | string>;
|
|
5
|
+
export interface VariableLengthBufferLikeFieldOptions<TFields = object, TLengthField extends LengthField<TFields> = any> {
|
|
6
|
+
/**
|
|
7
|
+
* The name of the field that contains the length of the buffer.
|
|
8
|
+
*
|
|
9
|
+
* This field must be a `number` or `string` (can't be `bigint`) field.
|
|
10
|
+
*/
|
|
11
|
+
lengthField: TLengthField;
|
|
12
|
+
/**
|
|
13
|
+
* If the `lengthField` refers to a string field,
|
|
14
|
+
* what radix to use when converting the string to a number.
|
|
15
|
+
*
|
|
16
|
+
* @default 10
|
|
17
|
+
*/
|
|
18
|
+
lengthFieldRadix?: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class VariableLengthBufferLikeFieldDefinition<TType extends BufferFieldSubType = BufferFieldSubType, TOptions extends VariableLengthBufferLikeFieldOptions = VariableLengthBufferLikeFieldOptions> extends BufferLikeFieldDefinition<TType, TOptions, TOptions['lengthField']> {
|
|
21
|
+
getSize(): number;
|
|
22
|
+
protected getDeserializeSize(struct: StructValue): number;
|
|
23
|
+
create(options: Readonly<StructOptions>, struct: StructValue, value: TType['TTypeScriptType'], array?: Uint8Array): VariableLengthBufferLikeStructFieldValue<this>;
|
|
24
|
+
}
|
|
25
|
+
export declare class VariableLengthBufferLikeStructFieldValue<TDefinition extends VariableLengthBufferLikeFieldDefinition = VariableLengthBufferLikeFieldDefinition> extends BufferLikeFieldValue<TDefinition> {
|
|
26
|
+
protected length: number | undefined;
|
|
27
|
+
protected lengthFieldValue: VariableLengthBufferLikeFieldLengthValue;
|
|
28
|
+
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition['TValue'], array?: Uint8Array);
|
|
29
|
+
getSize(): number;
|
|
30
|
+
set(value: unknown): void;
|
|
31
|
+
}
|
|
32
|
+
declare type VariableLengthBufferLikeFieldValueLike = StructFieldValue<StructFieldDefinition<VariableLengthBufferLikeFieldOptions, any, any>>;
|
|
33
|
+
export declare class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
|
|
34
|
+
protected originalField: StructFieldValue;
|
|
35
|
+
protected arrayBufferField: VariableLengthBufferLikeFieldValueLike;
|
|
36
|
+
constructor(originalField: StructFieldValue, arrayBufferField: VariableLengthBufferLikeFieldValueLike);
|
|
37
|
+
getSize(): number;
|
|
38
|
+
get(): string | number;
|
|
39
|
+
set(): void;
|
|
40
|
+
serialize(dataView: DataView, offset: number): void;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=variable-length.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAErG,oBAAY,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,oCAAoC,CACjD,OAAO,GAAG,MAAM,EAChB,YAAY,SAAS,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG;IAE/C;;;;OAIG;IACH,WAAW,EAAE,YAAY,CAAC;IAE1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,uCAAuC,CAChD,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,QAAQ,SAAS,oCAAoC,GAAG,oCAAoC,CAC1F,SAAQ,yBAAyB,CACnC,KAAK,EACL,QAAQ,EACR,QAAQ,CAAC,aAAa,CAAC,CACtB;IACM,OAAO,IAAI,MAAM;cAIL,kBAAkB,CAAC,MAAM,EAAE,WAAW;IAQzC,MAAM,CAClB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAC/B,KAAK,CAAC,EAAE,UAAU,GACnB,wCAAwC,CAAC,IAAI,CAAC;CASpD;AAED,qBAAa,wCAAwC,CACjD,WAAW,SAAS,uCAAuC,GAAG,uCAAuC,CACnG,SAAQ,oBAAoB,CAAC,WAAW,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,SAAS,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;gBAGjE,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC5B,KAAK,CAAC,EAAE,UAAU;IAmBN,OAAO;IAYP,GAAG,CAAC,KAAK,EAAE,OAAO;CAKrC;AAGD,aAAK,sCAAsC,GACvC,gBAAgB,CAAC,qBAAqB,CAAC,oCAAoC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE5F,qBAAa,wCACT,SAAQ,gBAAgB;IACxB,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAE1C,SAAS,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;gBAG/D,aAAa,EAAE,gBAAgB,EAC/B,gBAAgB,EAAE,sCAAsC;IAO5C,OAAO;IAIP,GAAG;IAWH,GAAG;IAKnB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;CAI/C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { StructFieldValue } from '../../basic/index.js';
|
|
2
|
+
import { BufferLikeFieldDefinition, BufferLikeFieldValue } from './base.js';
|
|
3
|
+
export class VariableLengthBufferLikeFieldDefinition extends BufferLikeFieldDefinition {
|
|
4
|
+
getSize() {
|
|
5
|
+
return 0;
|
|
6
|
+
}
|
|
7
|
+
getDeserializeSize(struct) {
|
|
8
|
+
let value = struct.value[this.options.lengthField];
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
value = Number.parseInt(value, this.options.lengthFieldRadix ?? 10);
|
|
11
|
+
}
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
create(options, struct, value, array) {
|
|
15
|
+
return new VariableLengthBufferLikeStructFieldValue(this, options, struct, value, array);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class VariableLengthBufferLikeStructFieldValue extends BufferLikeFieldValue {
|
|
19
|
+
length;
|
|
20
|
+
lengthFieldValue;
|
|
21
|
+
constructor(definition, options, struct, value, array) {
|
|
22
|
+
super(definition, options, struct, value, array);
|
|
23
|
+
if (array) {
|
|
24
|
+
this.length = array.byteLength;
|
|
25
|
+
}
|
|
26
|
+
// Patch the associated length field.
|
|
27
|
+
const lengthField = this.definition.options.lengthField;
|
|
28
|
+
const originalValue = struct.get(lengthField);
|
|
29
|
+
this.lengthFieldValue = new VariableLengthBufferLikeFieldLengthValue(originalValue, this);
|
|
30
|
+
struct.set(lengthField, this.lengthFieldValue);
|
|
31
|
+
}
|
|
32
|
+
getSize() {
|
|
33
|
+
if (this.length === undefined) {
|
|
34
|
+
this.length = this.definition.type.getSize(this.value);
|
|
35
|
+
if (this.length === -1) {
|
|
36
|
+
this.array = this.definition.type.toBuffer(this.value);
|
|
37
|
+
this.length = this.array.byteLength;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return this.length;
|
|
41
|
+
}
|
|
42
|
+
set(value) {
|
|
43
|
+
super.set(value);
|
|
44
|
+
this.array = undefined;
|
|
45
|
+
this.length = undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
|
|
49
|
+
originalField;
|
|
50
|
+
arrayBufferField;
|
|
51
|
+
constructor(originalField, arrayBufferField) {
|
|
52
|
+
super(originalField.definition, originalField.options, originalField.struct, 0);
|
|
53
|
+
this.originalField = originalField;
|
|
54
|
+
this.arrayBufferField = arrayBufferField;
|
|
55
|
+
}
|
|
56
|
+
getSize() {
|
|
57
|
+
return this.originalField.getSize();
|
|
58
|
+
}
|
|
59
|
+
get() {
|
|
60
|
+
let value = this.arrayBufferField.getSize();
|
|
61
|
+
const originalValue = this.originalField.get();
|
|
62
|
+
if (typeof originalValue === 'string') {
|
|
63
|
+
value = value.toString(this.arrayBufferField.definition.options.lengthFieldRadix ?? 10);
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
set() {
|
|
68
|
+
// Ignore setting
|
|
69
|
+
// It will always be in sync with the buffer size
|
|
70
|
+
}
|
|
71
|
+
serialize(dataView, offset) {
|
|
72
|
+
this.originalField.set(this.get());
|
|
73
|
+
this.originalField.serialize(dataView, offset);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=variable-length.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-length.js","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
|
package/esm/types/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from './variable-length-array-buffer';
|
|
1
|
+
export * from "./bigint.js";
|
|
2
|
+
export * from "./buffer/index.js";
|
|
3
|
+
export * from "./number.js";
|
|
5
4
|
//# sourceMappingURL=index.js.map
|
package/esm/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StructFieldDefinition, StructFieldValue, StructValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions } from '../basic/index.js';
|
|
2
2
|
export declare type DataViewGetters = {
|
|
3
3
|
[TKey in keyof DataView]: TKey extends `get${string}` ? TKey : never;
|
|
4
4
|
}[keyof DataView];
|
|
5
5
|
export declare type DataViewSetters = {
|
|
6
6
|
[TKey in keyof DataView]: TKey extends `set${string}` ? TKey : never;
|
|
7
7
|
}[keyof DataView];
|
|
8
|
-
export declare class NumberFieldType
|
|
9
|
-
readonly TTypeScriptType:
|
|
8
|
+
export declare class NumberFieldType {
|
|
9
|
+
readonly TTypeScriptType: number;
|
|
10
10
|
readonly size: number;
|
|
11
11
|
readonly dataViewGetter: DataViewGetters;
|
|
12
12
|
readonly dataViewSetter: DataViewSetters;
|
|
13
13
|
constructor(size: number, dataViewGetter: DataViewGetters, dataViewSetter: DataViewSetters);
|
|
14
|
-
static readonly Int8: NumberFieldType
|
|
15
|
-
static readonly Uint8: NumberFieldType
|
|
16
|
-
static readonly Int16: NumberFieldType
|
|
17
|
-
static readonly Uint16: NumberFieldType
|
|
18
|
-
static readonly Int32: NumberFieldType
|
|
19
|
-
static readonly Uint32: NumberFieldType
|
|
20
|
-
static readonly Int64: NumberFieldType<bigint>;
|
|
21
|
-
static readonly Uint64: NumberFieldType<bigint>;
|
|
14
|
+
static readonly Int8: NumberFieldType;
|
|
15
|
+
static readonly Uint8: NumberFieldType;
|
|
16
|
+
static readonly Int16: NumberFieldType;
|
|
17
|
+
static readonly Uint16: NumberFieldType;
|
|
18
|
+
static readonly Int32: NumberFieldType;
|
|
19
|
+
static readonly Uint32: NumberFieldType;
|
|
22
20
|
}
|
|
23
|
-
export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = TType[
|
|
21
|
+
export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = TType["TTypeScriptType"]> extends StructFieldDefinition<void, TTypeScriptType> {
|
|
24
22
|
readonly type: TType;
|
|
25
23
|
constructor(type: TType, _typescriptType?: TTypeScriptType);
|
|
26
24
|
getSize(): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,4BAA4B,EAAE,KAAK,uBAAuB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI9K,oBAAY,eAAe,GACvB;KAAG,IAAI,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,QAAQ,CAAC,CAAC;AAE7F,oBAAY,eAAe,GACvB;KAAG,IAAI,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,QAAQ,CAAC,CAAC;AAE7F,qBAAa,eAAe;IACxB,SAAgB,eAAe,EAAG,MAAM,CAAC;IAEzC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,SAAgB,cAAc,EAAE,eAAe,CAAC;IAEhD,SAAgB,cAAc,EAAE,eAAe,CAAC;gBAG5C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,eAAe;IAOnC,gBAAuB,IAAI,kBAAgD;IAE3E,gBAAuB,KAAK,kBAAkD;IAE9E,gBAAuB,KAAK,kBAAkD;IAE9E,gBAAuB,MAAM,kBAAoD;IAEjF,gBAAuB,KAAK,kBAAkD;IAE9E,gBAAuB,MAAM,kBAAoD;CACpF;AAED,qBAAa,qBAAqB,CAC9B,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,CACxC,SAAQ,qBAAqB,CAC/B,IAAI,EACJ,eAAe,CACd;IACD,SAAgB,IAAI,EAAE,KAAK,CAAC;gBAET,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,eAAe;IAK1D,OAAO,IAAI,MAAM;IAIjB,MAAM,CACT,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACvB,gBAAgB,CAAC,IAAI,CAAC;IAIT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;IACT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,4BAA4B,EACpC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAoBrC;AAED,qBAAa,gBAAgB,CACzB,WAAW,SAAS,qBAAqB,CAAC,eAAe,EAAE,GAAG,CAAC,CAC7D,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAChC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAU7D"}
|
package/esm/types/number.js
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
// cspell: ignore syncbird
|
|
2
|
+
import { StructFieldDefinition, StructFieldValue } from '../basic/index.js';
|
|
3
|
+
import { Syncbird } from "../syncbird.js";
|
|
3
4
|
export class NumberFieldType {
|
|
5
|
+
TTypeScriptType;
|
|
6
|
+
size;
|
|
7
|
+
dataViewGetter;
|
|
8
|
+
dataViewSetter;
|
|
4
9
|
constructor(size, dataViewGetter, dataViewSetter) {
|
|
5
10
|
this.size = size;
|
|
6
11
|
this.dataViewGetter = dataViewGetter;
|
|
7
12
|
this.dataViewSetter = dataViewSetter;
|
|
8
13
|
}
|
|
14
|
+
static Int8 = new NumberFieldType(1, 'getInt8', 'setInt8');
|
|
15
|
+
static Uint8 = new NumberFieldType(1, 'getUint8', 'setUint8');
|
|
16
|
+
static Int16 = new NumberFieldType(2, 'getInt16', 'setInt16');
|
|
17
|
+
static Uint16 = new NumberFieldType(2, 'getUint16', 'setUint16');
|
|
18
|
+
static Int32 = new NumberFieldType(4, 'getInt32', 'setInt32');
|
|
19
|
+
static Uint32 = new NumberFieldType(4, 'getUint32', 'setUint32');
|
|
9
20
|
}
|
|
10
|
-
NumberFieldType.Int8 = new NumberFieldType(1, 'getInt8', 'setInt8');
|
|
11
|
-
NumberFieldType.Uint8 = new NumberFieldType(1, 'getUint8', 'setUint8');
|
|
12
|
-
NumberFieldType.Int16 = new NumberFieldType(2, 'getInt16', 'setInt16');
|
|
13
|
-
NumberFieldType.Uint16 = new NumberFieldType(2, 'getUint16', 'setUint16');
|
|
14
|
-
NumberFieldType.Int32 = new NumberFieldType(4, 'getInt32', 'setInt32');
|
|
15
|
-
NumberFieldType.Uint32 = new NumberFieldType(4, 'getUint32', 'setUint32');
|
|
16
|
-
NumberFieldType.Int64 = new NumberFieldType(8, 'getBigInt64', 'setBigInt64');
|
|
17
|
-
NumberFieldType.Uint64 = new NumberFieldType(8, 'getBigUint64', 'setBigUint64');
|
|
18
21
|
export class NumberFieldDefinition extends StructFieldDefinition {
|
|
22
|
+
type;
|
|
19
23
|
constructor(type, _typescriptType) {
|
|
20
24
|
super();
|
|
21
25
|
this.type = type;
|
|
@@ -27,13 +31,16 @@ export class NumberFieldDefinition extends StructFieldDefinition {
|
|
|
27
31
|
return new NumberFieldValue(this, options, struct, value);
|
|
28
32
|
}
|
|
29
33
|
deserialize(options, stream, struct) {
|
|
30
|
-
return Syncbird
|
|
34
|
+
return Syncbird
|
|
35
|
+
.try(() => {
|
|
31
36
|
return stream.read(this.getSize());
|
|
32
|
-
})
|
|
33
|
-
|
|
37
|
+
})
|
|
38
|
+
.then(array => {
|
|
39
|
+
const view = new DataView(array.buffer, array.byteOffset, array.byteLength);
|
|
34
40
|
const value = view[this.type.dataViewGetter](0, options.littleEndian);
|
|
35
41
|
return this.create(options, struct, value);
|
|
36
|
-
})
|
|
42
|
+
})
|
|
43
|
+
.valueOrPromise();
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
export class NumberFieldValue extends StructFieldValue {
|
package/esm/types/number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAoG,MAAM,mBAAmB,CAAC;AAC9K,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS1C,MAAM,OAAO,eAAe;IACR,eAAe,CAAU;IAEzB,IAAI,CAAS;IAEb,cAAc,CAAkB;IAEhC,cAAc,CAAkB;IAEhD,YACI,IAAY,EACZ,cAA+B,EAC/B,cAA+B;QAE/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;IAEM,MAAM,CAAU,IAAI,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEpE,MAAM,CAAU,KAAK,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvE,MAAM,CAAU,KAAK,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvE,MAAM,CAAU,MAAM,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE1E,MAAM,CAAU,KAAK,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvE,MAAM,CAAU,MAAM,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;;AAGrF,MAAM,OAAO,qBAGP,SAAQ,qBAGT;IACe,IAAI,CAAQ;IAE5B,YAAmB,IAAW,EAAE,eAAiC;QAC7D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,CAAC;IAEM,MAAM,CACT,OAAgC,EAChC,MAAmB,EACnB,KAAsB;QAEtB,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAYe,WAAW,CACvB,OAAgC,EAChC,MAA8D,EAC9D,MAAmB;QAEnB,OAAO,QAAQ;aACV,GAAG,CAAC,GAAG,EAAE;YACN,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;aACD,IAAI,CAAC,KAAK,CAAC,EAAE;YACV,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CACxC,CAAC,EACD,OAAO,CAAC,YAAY,CACvB,CAAC;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAY,CAAC,CAAC;QACtD,CAAC,CAAC;aACD,cAAc,EAAE,CAAC;IAC1B,CAAC;CACJ;AAED,MAAM,OAAO,gBAEP,SAAQ,gBAA6B;IAChC,SAAS,CAAC,QAAkB,EAAE,MAAc;QAC/C,kEAAkE;QAClE,4DAA4D;QAC5D,uBAAuB;QACtB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAS,CAClD,MAAM,EACN,IAAI,CAAC,KAAM,EACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAC5B,CAAC;IACN,CAAC;CACJ"}
|
package/{dts → esm}/utils.d.ts
RENAMED
|
@@ -43,6 +43,6 @@ export declare type ValueOrPromise<T> = T | PromiseLike<T>;
|
|
|
43
43
|
* Returns a (fake) value of the given type.
|
|
44
44
|
*/
|
|
45
45
|
export declare function placeholder<T>(): T;
|
|
46
|
-
export declare function encodeUtf8(input: string):
|
|
47
|
-
export declare function decodeUtf8(buffer:
|
|
46
|
+
export declare function encodeUtf8(input: string): Uint8Array;
|
|
47
|
+
export declare function decodeUtf8(buffer: Uint8Array): string;
|
|
48
48
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAE/E;;GAEG;AACH,oBAAY,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAE7C;;GAEG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEpG;;GAEG;AACH,oBAAY,UAAU,CAAC,CAAC,EAAE,MAAM,IAC5B;KAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAE1E,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEnD;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,KAAK,CAAC,CAElC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAE/E;;GAEG;AACH,oBAAY,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAE7C;;GAEG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEpG;;GAEG;AACH,oBAAY,UAAU,CAAC,CAAC,EAAE,MAAM,IAC5B;KAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAE1E,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEnD;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,KAAK,CAAC,CAElC;AAeD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAErD"}
|
package/esm/utils.js
CHANGED
|
@@ -4,12 +4,18 @@
|
|
|
4
4
|
export function placeholder() {
|
|
5
5
|
return undefined;
|
|
6
6
|
}
|
|
7
|
-
//
|
|
7
|
+
// This library can't use `@types/node` or `lib: dom`
|
|
8
|
+
// because they will pollute the global scope
|
|
9
|
+
// So `TextEncoder` and `TextDecoder` are not available
|
|
10
|
+
// Node.js 8.3 ships `TextEncoder` and `TextDecoder` in `util` module.
|
|
11
|
+
// But using top level await to load them requires Node.js 14.1.
|
|
12
|
+
// So there is no point to do that. Let's just assume they exists in global.
|
|
13
|
+
// @ts-expect-error
|
|
8
14
|
const Utf8Encoder = new TextEncoder();
|
|
9
|
-
// @ts-expect-error
|
|
15
|
+
// @ts-expect-error
|
|
10
16
|
const Utf8Decoder = new TextDecoder();
|
|
11
17
|
export function encodeUtf8(input) {
|
|
12
|
-
return Utf8Encoder.encode(input)
|
|
18
|
+
return Utf8Encoder.encode(input);
|
|
13
19
|
}
|
|
14
20
|
export function decodeUtf8(buffer) {
|
|
15
21
|
return Utf8Decoder.decode(buffer);
|
package/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA2CA;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,SAAyB,CAAC;AACrC,CAAC;AAED,qDAAqD;AACrD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA2CA;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,SAAyB,CAAC;AACrC,CAAC;AAED,qDAAqD;AACrD,6CAA6C;AAC7C,uDAAuD;AAEvD,sEAAsE;AACtE,gEAAgE;AAChE,4EAA4E;AAE5E,mBAAmB;AACnB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,mBAAmB;AACnB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB;IACzC,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
|