@nnilky/structo 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/structo/datatypes/containers/array.d.ts +2 -0
- package/{structo/datatypes/containers/array.ts → dist/structo/datatypes/containers/array.js} +5 -7
- package/dist/structo/datatypes/containers/fastObject.d.ts +6 -0
- package/{structo/datatypes/containers/fastObject.ts → dist/structo/datatypes/containers/fastObject.js} +12 -32
- package/dist/structo/datatypes/containers/list.d.ts +5 -0
- package/{structo/datatypes/containers/list.ts → dist/structo/datatypes/containers/list.js} +3 -10
- package/dist/structo/datatypes/containers/object.d.ts +9 -0
- package/dist/structo/datatypes/containers/object.js +24 -0
- package/dist/structo/datatypes/containers/sizedbuffer.d.ts +2 -0
- package/{structo/datatypes/containers/sizedbuffer.ts → dist/structo/datatypes/containers/sizedbuffer.js} +1 -4
- package/{structo/datatypes/index.ts → dist/structo/datatypes/index.d.ts} +0 -3
- package/dist/structo/datatypes/index.js +15 -0
- package/dist/structo/datatypes/numbers/bigints.d.ts +3 -0
- package/{structo/datatypes/numbers/bigints.ts → dist/structo/datatypes/numbers/bigints.js} +3 -14
- package/dist/structo/datatypes/numbers/floats.d.ts +3 -0
- package/{structo/datatypes/numbers/floats.ts → dist/structo/datatypes/numbers/floats.js} +2 -5
- package/dist/structo/datatypes/numbers/sints.d.ts +5 -0
- package/{structo/datatypes/numbers/sints.ts → dist/structo/datatypes/numbers/sints.js} +5 -16
- package/dist/structo/datatypes/numbers/uints.d.ts +5 -0
- package/{structo/datatypes/numbers/uints.ts → dist/structo/datatypes/numbers/uints.js} +20 -26
- package/dist/structo/datatypes/transforms/pipe.d.ts +11 -0
- package/dist/structo/datatypes/transforms/pipe.js +4 -0
- package/dist/structo/datatypes/transforms/readOffset.d.ts +2 -0
- package/{structo/datatypes/transforms/readOffset.ts → dist/structo/datatypes/transforms/readOffset.js} +2 -4
- package/dist/structo/datatypes/transforms/transform.d.ts +2 -0
- package/{structo/datatypes/transforms/transform.ts → dist/structo/datatypes/transforms/transform.js} +2 -4
- package/dist/structo/datatypes/values/buffer.d.ts +2 -0
- package/{structo/datatypes/values/buffer.ts → dist/structo/datatypes/values/buffer.js} +3 -5
- package/dist/structo/datatypes/values/byteliteral.d.ts +2 -0
- package/{structo/datatypes/values/byteliteral.ts → dist/structo/datatypes/values/byteliteral.js} +1 -5
- package/dist/structo/datatypes/values/string.d.ts +2 -0
- package/{structo/datatypes/values/string.ts → dist/structo/datatypes/values/string.js} +1 -8
- package/dist/structo/index.d.ts +4 -0
- package/dist/structo/index.js +3 -0
- package/dist/structo/read.d.ts +7 -0
- package/dist/structo/read.js +10 -0
- package/{structo/types.ts → dist/structo/types.d.ts} +0 -3
- package/dist/structo/types.js +1 -0
- package/dist/structo/write.d.ts +3 -0
- package/{structo/write.ts → dist/structo/write.js} +9 -11
- package/package.json +31 -7
- package/structo/datatypes/containers/__snapshots__/list.test.ts.snap +0 -25
- package/structo/datatypes/containers/__snapshots__/object.test.ts.snap +0 -37
- package/structo/datatypes/containers/array.test.ts +0 -28
- package/structo/datatypes/containers/list.test.ts +0 -44
- package/structo/datatypes/containers/object.test.ts +0 -42
- package/structo/datatypes/containers/object.ts +0 -40
- package/structo/datatypes/containers/sizedbuffer.test.ts +0 -34
- package/structo/datatypes/lazy.ts +0 -0
- package/structo/datatypes/numbers/__snapshots__/bigints.test.ts.snap +0 -261
- package/structo/datatypes/numbers/__snapshots__/floats.test.ts.snap +0 -191
- package/structo/datatypes/numbers/__snapshots__/sints.test.ts.snap +0 -321
- package/structo/datatypes/numbers/__snapshots__/uints.test.ts.snap +0 -321
- package/structo/datatypes/numbers/bigints.test.ts +0 -85
- package/structo/datatypes/numbers/floats.test.ts +0 -91
- package/structo/datatypes/numbers/sints.test.ts +0 -109
- package/structo/datatypes/numbers/uints.test.ts +0 -110
- package/structo/datatypes/transforms/pipe.test.ts +0 -17
- package/structo/datatypes/transforms/pipe.ts +0 -88
- package/structo/datatypes/utils.test.ts +0 -39
- package/structo/datatypes/values/buffer.test.ts +0 -52
- package/structo/datatypes/values/string.test.ts +0 -22
- package/structo/index.ts +0 -11
- package/structo/read.ts +0 -14
- package/structo/utils.test.ts +0 -0
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { Serializer } from "../../types";
|
|
2
|
-
|
|
3
|
-
export type Transform<T = any, TNext = T> = (type: Serializer<TNext>) => Serializer<T>;
|
|
4
|
-
|
|
5
|
-
export function pipe<TStart, T1>(
|
|
6
|
-
type: Serializer<TStart>,
|
|
7
|
-
p1: Transform<T1, TStart>,
|
|
8
|
-
): Serializer<T1>;
|
|
9
|
-
|
|
10
|
-
export function pipe<TStart, T1, T2>(
|
|
11
|
-
type: Serializer<TStart>,
|
|
12
|
-
p1: Transform<T1, TStart>,
|
|
13
|
-
p2: Transform<T2, T1>,
|
|
14
|
-
): Serializer<T2>;
|
|
15
|
-
|
|
16
|
-
export function pipe<TStart, T1, T2, T3>(
|
|
17
|
-
type: Serializer<TStart>,
|
|
18
|
-
p1: Transform<T1, TStart>,
|
|
19
|
-
p2: Transform<T2, T1>,
|
|
20
|
-
p3: Transform<T3, T2>,
|
|
21
|
-
): Serializer<T3>;
|
|
22
|
-
|
|
23
|
-
export function pipe<TStart, T1, T2, T3, T4>(
|
|
24
|
-
type: Serializer<TStart>,
|
|
25
|
-
p1: Transform<T1, TStart>,
|
|
26
|
-
p2: Transform<T2, T1>,
|
|
27
|
-
p3: Transform<T3, T2>,
|
|
28
|
-
p4: Transform<T4, T3>,
|
|
29
|
-
): Serializer<T4>;
|
|
30
|
-
|
|
31
|
-
export function pipe<TStart, T1, T2, T3, T4, T5>(
|
|
32
|
-
type: Serializer<TStart>,
|
|
33
|
-
p1: Transform<T1, TStart>,
|
|
34
|
-
p2: Transform<T2, T1>,
|
|
35
|
-
p3: Transform<T3, T2>,
|
|
36
|
-
p4: Transform<T4, T3>,
|
|
37
|
-
p5: Transform<T5, T4>,
|
|
38
|
-
): Serializer<T5>;
|
|
39
|
-
|
|
40
|
-
export function pipe<TStart, T1, T2, T3, T4, T5, T6>(
|
|
41
|
-
type: Serializer<TStart>,
|
|
42
|
-
p1: Transform<T1, TStart>,
|
|
43
|
-
p2: Transform<T2, T1>,
|
|
44
|
-
p3: Transform<T3, T2>,
|
|
45
|
-
p4: Transform<T4, T3>,
|
|
46
|
-
p5: Transform<T5, T6>,
|
|
47
|
-
): Serializer<T6>;
|
|
48
|
-
|
|
49
|
-
export function pipe<TStart, T1, T2, T3, T4, T5, T6, T7>(
|
|
50
|
-
type: Serializer<TStart>,
|
|
51
|
-
p1: Transform<T1, TStart>,
|
|
52
|
-
p2: Transform<T2, T1>,
|
|
53
|
-
p3: Transform<T3, T2>,
|
|
54
|
-
p4: Transform<T4, T3>,
|
|
55
|
-
p5: Transform<T5, T6>,
|
|
56
|
-
p6: Transform<T6, T7>,
|
|
57
|
-
): Serializer<T7>;
|
|
58
|
-
|
|
59
|
-
export function pipe<TStart, T1, T2, T3, T4, T5, T6, T7, T8>(
|
|
60
|
-
type: Serializer<TStart>,
|
|
61
|
-
p1: Transform<T1, TStart>,
|
|
62
|
-
p2: Transform<T2, T1>,
|
|
63
|
-
p3: Transform<T3, T2>,
|
|
64
|
-
p4: Transform<T4, T3>,
|
|
65
|
-
p5: Transform<T5, T6>,
|
|
66
|
-
p6: Transform<T6, T7>,
|
|
67
|
-
p7: Transform<T7, T8>,
|
|
68
|
-
): Serializer<T8>;
|
|
69
|
-
|
|
70
|
-
export function pipe<TStart, T1, T2, T3, T4, T5, T6, T7, T8, T9>(
|
|
71
|
-
type: Serializer<TStart>,
|
|
72
|
-
p1: Transform<T1, TStart>,
|
|
73
|
-
p2: Transform<T2, T1>,
|
|
74
|
-
p3: Transform<T3, T2>,
|
|
75
|
-
p4: Transform<T4, T3>,
|
|
76
|
-
p5: Transform<T5, T6>,
|
|
77
|
-
p6: Transform<T6, T7>,
|
|
78
|
-
p7: Transform<T7, T8>,
|
|
79
|
-
p8: Transform<T8, T9>,
|
|
80
|
-
): Serializer<T9>;
|
|
81
|
-
|
|
82
|
-
export function pipe<T, TPipeline extends Transform[]>(
|
|
83
|
-
type: Serializer<T>,
|
|
84
|
-
...pipeline: TPipeline[]
|
|
85
|
-
): any {
|
|
86
|
-
//@ts-ignore
|
|
87
|
-
return pipeline.reduce((v, func) => func(v), type);
|
|
88
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
//@ts-ignore TODO
|
|
2
|
-
import { describe, it, expect } from "bun:test";
|
|
3
|
-
import * as st from "../index";
|
|
4
|
-
|
|
5
|
-
export const randint = (start: number, end: number) => {
|
|
6
|
-
const range = end - start;
|
|
7
|
-
return Math.floor(start + range * Math.random());
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export const randbigint = (start: bigint, end: bigint) => {
|
|
11
|
-
const range = end - start;
|
|
12
|
-
const offset = BigInt(Math.floor(Number(range) * Math.random()));
|
|
13
|
-
|
|
14
|
-
return start + offset;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export const expectEncode = <T>(serializer: st.Serializer<T>, value: T) => {
|
|
18
|
-
const data = st.write(serializer, value);
|
|
19
|
-
const newValue = st.read(serializer, data);
|
|
20
|
-
expect(value).toEqual(newValue);
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export const expectEncodeSnapshot = <T>(serializer: st.Serializer<T>, value: T) => {
|
|
24
|
-
const data = st.write(serializer, value);
|
|
25
|
-
expect(data).toMatchSnapshot();
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const expectError = (callback: () => void) => {
|
|
29
|
-
try {
|
|
30
|
-
callback();
|
|
31
|
-
} catch {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
throw new Error("Expected Error");
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export const bytes = (bytes: number[]) => {
|
|
38
|
-
return new Uint8Array(bytes).buffer;
|
|
39
|
-
};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
//@ts-ignore TODO
|
|
2
|
-
import { describe, it, expect } from "bun:test";
|
|
3
|
-
import { bytes, expectEncode, expectError, randint } from "../utils.test";
|
|
4
|
-
|
|
5
|
-
import * as st from "../../index";
|
|
6
|
-
|
|
7
|
-
describe("st.buffer", () => {
|
|
8
|
-
const buffer = st.buffer(2);
|
|
9
|
-
|
|
10
|
-
it("encode correctly", () => {
|
|
11
|
-
expectEncode(buffer, bytes([1, 2]));
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it("encodes empty correctly", () => {
|
|
15
|
-
const spec = st.buffer(0);
|
|
16
|
-
expectEncode(spec, bytes([]));
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it("holds large data", () => {
|
|
20
|
-
const size = 1024 * 1024 * 8; // 8MB
|
|
21
|
-
const spec = st.buffer(size);
|
|
22
|
-
|
|
23
|
-
const data = new Uint8Array(size);
|
|
24
|
-
data.set([3, 4], 1000);
|
|
25
|
-
data.set([3, 4], 2000);
|
|
26
|
-
expectEncode(spec, data.buffer);
|
|
27
|
-
});
|
|
28
|
-
it("large data writes work", () => {
|
|
29
|
-
const size = 1024 * 1024 * 8; // 8MB
|
|
30
|
-
const spec = st.object({
|
|
31
|
-
before: st.u8(),
|
|
32
|
-
data: st.buffer(size),
|
|
33
|
-
after: st.u8(),
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const data = new Uint8Array(size);
|
|
37
|
-
data.set([3, 4], 1000);
|
|
38
|
-
data.set([3, 4], 2000);
|
|
39
|
-
expectEncode(spec, {
|
|
40
|
-
before: 1,
|
|
41
|
-
data: data.buffer,
|
|
42
|
-
after: 2,
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("errors on invalid length", () => {
|
|
47
|
-
const spec = st.buffer(5);
|
|
48
|
-
expectError(() => {
|
|
49
|
-
st.write(spec, bytes([1, 2, 3, 4]));
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
//@ts-ignore TODO
|
|
2
|
-
import { describe, it, expect } from "bun:test";
|
|
3
|
-
import { expectEncode, expectError, randint } from "../utils.test";
|
|
4
|
-
|
|
5
|
-
import * as st from "../../index";
|
|
6
|
-
|
|
7
|
-
describe("st.string", () => {
|
|
8
|
-
const string_u8 = st.string(st.u8());
|
|
9
|
-
const string_u32 = st.string(st.u32());
|
|
10
|
-
|
|
11
|
-
it("encode correctly", () => {
|
|
12
|
-
expectEncode(string_u8, "foo");
|
|
13
|
-
});
|
|
14
|
-
it("works on empty strings", () => {
|
|
15
|
-
expectEncode(string_u32, "");
|
|
16
|
-
});
|
|
17
|
-
it("errors on too long strings", () => {
|
|
18
|
-
expectError(() => {
|
|
19
|
-
st.write(string_u8, "A".repeat(256));
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
package/structo/index.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
InferInput as Infer,
|
|
3
|
-
InferInput,
|
|
4
|
-
InferOutput,
|
|
5
|
-
ReaderContext,
|
|
6
|
-
WriterContext,
|
|
7
|
-
Serializer,
|
|
8
|
-
} from "./types";
|
|
9
|
-
export * from "./datatypes";
|
|
10
|
-
export { write, createdWriterContext } from "./write";
|
|
11
|
-
export { read, createReaderContext } from "./read";
|
package/structo/read.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Serializer, ReaderContext } from "./types";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export function read<T>(serializer: Serializer<T>, buffer: ArrayBuffer): T {
|
|
5
|
-
return serializer.read(createReaderContext(buffer));
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export function createReaderContext(buffer: ArrayBuffer) {
|
|
9
|
-
return {
|
|
10
|
-
offset: 0,
|
|
11
|
-
buffer,
|
|
12
|
-
view: new DataView(buffer),
|
|
13
|
-
};
|
|
14
|
-
}
|
package/structo/utils.test.ts
DELETED
|
File without changes
|