@nnilky/structo 1.0.0 → 1.0.1
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/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/array.ts +0 -24
- package/structo/datatypes/containers/fastObject.ts +0 -66
- package/structo/datatypes/containers/list.test.ts +0 -44
- package/structo/datatypes/containers/list.ts +0 -29
- 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/containers/sizedbuffer.ts +0 -20
- package/structo/datatypes/index.ts +0 -18
- 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/bigints.ts +0 -48
- package/structo/datatypes/numbers/floats.test.ts +0 -91
- package/structo/datatypes/numbers/floats.ts +0 -33
- package/structo/datatypes/numbers/sints.test.ts +0 -109
- package/structo/datatypes/numbers/sints.ts +0 -83
- package/structo/datatypes/numbers/uints.test.ts +0 -110
- package/structo/datatypes/numbers/uints.ts +0 -82
- package/structo/datatypes/transforms/pipe.test.ts +0 -17
- package/structo/datatypes/transforms/pipe.ts +0 -88
- package/structo/datatypes/transforms/readOffset.ts +0 -20
- package/structo/datatypes/transforms/transform.ts +0 -15
- package/structo/datatypes/utils.test.ts +0 -39
- package/structo/datatypes/values/buffer.test.ts +0 -52
- package/structo/datatypes/values/buffer.ts +0 -20
- package/structo/datatypes/values/byteliteral.ts +0 -24
- package/structo/datatypes/values/string.test.ts +0 -22
- package/structo/datatypes/values/string.ts +0 -28
- package/structo/index.ts +0 -11
- package/structo/read.ts +0 -14
- package/structo/types.ts +0 -21
- package/structo/utils.test.ts +0 -0
- package/structo/write.ts +0 -43
package/package.json
CHANGED
|
@@ -1,23 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nnilky/structo",
|
|
3
3
|
"description": "A library for serializing and deserializing binary content",
|
|
4
|
-
"keywords": ["library"],
|
|
4
|
+
"keywords": ["binary", "library", "utility", "web", "node"],
|
|
5
5
|
"license": "ISC",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.1",
|
|
7
7
|
"author": "Ben Brady",
|
|
8
8
|
"private": false,
|
|
9
|
-
"publishConfig": {
|
|
10
|
-
|
|
9
|
+
"publishConfig": {"access": "public"},
|
|
10
|
+
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/Ben-Brady/structo-ts.git"
|
|
11
14
|
},
|
|
12
15
|
|
|
13
16
|
"readme": "README.md",
|
|
14
|
-
"
|
|
17
|
+
"type": "module",
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"module": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
15
21
|
"exports": {
|
|
16
|
-
"
|
|
22
|
+
"./package.json": "./package.json",
|
|
23
|
+
".": {
|
|
24
|
+
"default": "./dist/index.js",
|
|
25
|
+
"import": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts"
|
|
27
|
+
},
|
|
28
|
+
"./index.js": {
|
|
29
|
+
"default": "./dist/index.js",
|
|
30
|
+
"import": "./dist/index.js",
|
|
31
|
+
"types": "./dist/index.d.ts"
|
|
32
|
+
}
|
|
17
33
|
},
|
|
18
|
-
"files": [
|
|
34
|
+
"files": [
|
|
35
|
+
"LICENSE",
|
|
36
|
+
"README.md",
|
|
37
|
+
"./dist/*.d.ts",
|
|
38
|
+
"./dist/*.js.map",
|
|
39
|
+
"./dist/*.js"
|
|
40
|
+
],
|
|
19
41
|
|
|
20
42
|
"scripts": {
|
|
43
|
+
"build": "tsc",
|
|
44
|
+
"prepublish": "tsc",
|
|
21
45
|
"check": "tsc --noEmit",
|
|
22
46
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
23
47
|
},
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// Bun Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`st.list matches snapshots 1`] = `
|
|
4
|
-
ArrayBuffer [
|
|
5
|
-
3,
|
|
6
|
-
0,
|
|
7
|
-
0,
|
|
8
|
-
0,
|
|
9
|
-
3,
|
|
10
|
-
0,
|
|
11
|
-
102,
|
|
12
|
-
111,
|
|
13
|
-
111,
|
|
14
|
-
3,
|
|
15
|
-
0,
|
|
16
|
-
98,
|
|
17
|
-
97,
|
|
18
|
-
114,
|
|
19
|
-
3,
|
|
20
|
-
0,
|
|
21
|
-
98,
|
|
22
|
-
97,
|
|
23
|
-
122,
|
|
24
|
-
]
|
|
25
|
-
`;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// Bun Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`st.object matches snapshots 1`] = `
|
|
4
|
-
ArrayBuffer [
|
|
5
|
-
1,
|
|
6
|
-
0,
|
|
7
|
-
0,
|
|
8
|
-
0,
|
|
9
|
-
19,
|
|
10
|
-
0,
|
|
11
|
-
0,
|
|
12
|
-
0,
|
|
13
|
-
119,
|
|
14
|
-
111,
|
|
15
|
-
111,
|
|
16
|
-
102,
|
|
17
|
-
32,
|
|
18
|
-
119,
|
|
19
|
-
111,
|
|
20
|
-
111,
|
|
21
|
-
102,
|
|
22
|
-
32,
|
|
23
|
-
98,
|
|
24
|
-
97,
|
|
25
|
-
114,
|
|
26
|
-
107,
|
|
27
|
-
32,
|
|
28
|
-
98,
|
|
29
|
-
97,
|
|
30
|
-
114,
|
|
31
|
-
107,
|
|
32
|
-
19,
|
|
33
|
-
87,
|
|
34
|
-
19,
|
|
35
|
-
83,
|
|
36
|
-
]
|
|
37
|
-
`;
|
|
@@ -1,28 +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.array", () => {
|
|
8
|
-
it("encode correctly", () => {
|
|
9
|
-
const spec = st.array(4, st.u16());
|
|
10
|
-
expectEncode(spec, [1, 2, 3, 4]);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it("works on empty lists", () => {
|
|
14
|
-
const spec = st.array(0, st.u16());
|
|
15
|
-
expectEncode(spec, []);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("throws error on invalid size", () => {
|
|
19
|
-
const spec = st.array(2, st.u16());
|
|
20
|
-
expectError(() => st.write(spec, [1]));
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("throws error on invalid value", () => {
|
|
24
|
-
const spec = st.array(2, st.u16());
|
|
25
|
-
expectError(() => st.write(spec, [1, -1]));
|
|
26
|
-
expectError(() => st.write(spec, [2 ** 16 + 1, 0]));
|
|
27
|
-
});
|
|
28
|
-
});
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Serializer } from "../../types";
|
|
2
|
-
|
|
3
|
-
export function array<T>(size: number, type: Serializer<T>): Serializer<T[]> {
|
|
4
|
-
const { read: readType, write: writeType, size: typeSize } = type;
|
|
5
|
-
|
|
6
|
-
return {
|
|
7
|
-
size: type.size ? size * type.size : undefined,
|
|
8
|
-
write: (ctx, value) => {
|
|
9
|
-
if (value.length !== size) throw new Error("Invalid Size");
|
|
10
|
-
|
|
11
|
-
if (typeSize) ctx.alloc(size * typeSize);
|
|
12
|
-
for (let i = 0; i < size; i++) {
|
|
13
|
-
writeType(ctx, value[i]);
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
read: (ctx) => {
|
|
17
|
-
const arr = new Array(size);
|
|
18
|
-
for (let i = 0; i < size; i++) {
|
|
19
|
-
arr[i] = readType(ctx);
|
|
20
|
-
}
|
|
21
|
-
return arr;
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import type { InferInput, Serializer } from "../../types";
|
|
2
|
-
|
|
3
|
-
type InferObject<T> =
|
|
4
|
-
T extends Record<string, Serializer<any>> ? { [Key in keyof T]: InferInput<T[Key]> } : never;
|
|
5
|
-
|
|
6
|
-
const definitionSymbol = Symbol();
|
|
7
|
-
|
|
8
|
-
export function fastObject<T extends Record<string, Serializer<any>>>(
|
|
9
|
-
definition: T,
|
|
10
|
-
): Serializer<InferObject<T>> {
|
|
11
|
-
let serializers: [string, Serializer<any>][] = [];
|
|
12
|
-
|
|
13
|
-
let writeBody = "";
|
|
14
|
-
let readBody = "";
|
|
15
|
-
|
|
16
|
-
function generateSerializers(serializer: Serializer<any>, keys: string[]) {
|
|
17
|
-
if (definitionSymbol in serializer) {
|
|
18
|
-
const definition = serializer[definitionSymbol] as any;
|
|
19
|
-
readBody += `${keys[keys.length - 1]}: {`;
|
|
20
|
-
for (const key of Object.keys(definition as any)) {
|
|
21
|
-
generateSerializers(definition[key], [...keys, key]);
|
|
22
|
-
}
|
|
23
|
-
readBody += `},`;
|
|
24
|
-
} else {
|
|
25
|
-
let path = "";
|
|
26
|
-
for (const key of keys) {
|
|
27
|
-
if (key.match(/[a-zA-Z_][a-zA-Z0-9_]*/)) {
|
|
28
|
-
path += `.${key}`;
|
|
29
|
-
} else {
|
|
30
|
-
path += `[${JSON.stringify(key)}]`;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let name = `s${Object.keys(serializers).length}`;
|
|
35
|
-
serializers.push([name, serializer]);
|
|
36
|
-
writeBody += `${name}(c, v${path});`;
|
|
37
|
-
readBody += `${keys[keys.length - 1]}: ${name}(c),`;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
for (const key of Object.keys(definition)) {
|
|
42
|
-
generateSerializers(definition[key], [key]);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const writeFactory = new Function(
|
|
46
|
-
...serializers.map((v) => v[0]),
|
|
47
|
-
`return (c, v) => {${writeBody}}`,
|
|
48
|
-
);
|
|
49
|
-
const readFactory = new Function(
|
|
50
|
-
...serializers.map((v) => v[0]),
|
|
51
|
-
`return (c, v) => ({${readBody}})`,
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
const write = writeFactory(...serializers.map((v) => v[1].write));
|
|
55
|
-
const read = readFactory(...serializers.map((v) => v[1].read));
|
|
56
|
-
|
|
57
|
-
let size = Object.values(definition).reduce((total, v) => total + (v.size as number), 0);
|
|
58
|
-
|
|
59
|
-
return {
|
|
60
|
-
//@ts-ignore
|
|
61
|
-
[definitionSymbol]: definition,
|
|
62
|
-
size: isNaN(size) ? undefined : size,
|
|
63
|
-
write,
|
|
64
|
-
read,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
//@ts-ignore TODO
|
|
2
|
-
import { describe, it, expect } from "bun:test";
|
|
3
|
-
import { expectEncode, expectEncodeSnapshot, expectError, randint } from "../utils.test";
|
|
4
|
-
|
|
5
|
-
import * as st from "../../index";
|
|
6
|
-
|
|
7
|
-
describe("st.list", () => {
|
|
8
|
-
it("encode correctly", () => {
|
|
9
|
-
const spec = st.list({ type: st.u16(), length: st.u8() });
|
|
10
|
-
expectEncode(spec, [1, 2, 3, 4]);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it("works on empty lists", () => {
|
|
14
|
-
const spec = st.list({ type: st.u16(), length: st.u8() });
|
|
15
|
-
expectEncode(spec, []);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("throws error on too large array", () => {
|
|
19
|
-
const spec = st.list({ type: st.u16(), length: st.u8() });
|
|
20
|
-
expectError(() => {
|
|
21
|
-
st.write(
|
|
22
|
-
spec,
|
|
23
|
-
Array.from({ length: 10000 }, () => 0),
|
|
24
|
-
);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("throws error on invalid value", () => {
|
|
29
|
-
const spec = st.list({ type: st.u16(), length: st.u8() });
|
|
30
|
-
expectError(() => {
|
|
31
|
-
st.write(spec, [-1]);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it(`matches snapshots`, () => {
|
|
36
|
-
expectEncodeSnapshot(
|
|
37
|
-
st.list({
|
|
38
|
-
type: st.string(st.u16()),
|
|
39
|
-
length: st.s32(),
|
|
40
|
-
}),
|
|
41
|
-
["foo", "bar", "baz"],
|
|
42
|
-
);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { Serializer } from "../../types";
|
|
2
|
-
|
|
3
|
-
export function list<T>(options: {
|
|
4
|
-
type: Serializer<T>;
|
|
5
|
-
length: Serializer<number>;
|
|
6
|
-
}): Serializer<T[]> {
|
|
7
|
-
const { read: readLength, write: writeLength } = options.length;
|
|
8
|
-
const { read: readType, write: writeType, size: sizeType } = options.type;
|
|
9
|
-
|
|
10
|
-
return {
|
|
11
|
-
write: (ctx, value) => {
|
|
12
|
-
writeLength(ctx, value.length);
|
|
13
|
-
|
|
14
|
-
if (sizeType) ctx.alloc(value.length * sizeType);
|
|
15
|
-
for (const v of value) {
|
|
16
|
-
writeType(ctx, v);
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
read: (ctx) => {
|
|
20
|
-
const size = readLength(ctx);
|
|
21
|
-
|
|
22
|
-
const arr = new Array(size);
|
|
23
|
-
for (let i = 0; i < size; i++) {
|
|
24
|
-
arr[i] = readType(ctx);
|
|
25
|
-
}
|
|
26
|
-
return arr;
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
//@ts-ignore TODO
|
|
2
|
-
import { describe, it, expect } from "bun:test";
|
|
3
|
-
import { bytes, expectEncode, expectEncodeSnapshot } from "../utils.test";
|
|
4
|
-
|
|
5
|
-
import * as st from "../../index";
|
|
6
|
-
|
|
7
|
-
describe("st.object", () => {
|
|
8
|
-
const test = st.object({
|
|
9
|
-
a: st.u8(),
|
|
10
|
-
b: st.u8(),
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it("encodes correctly", () => {
|
|
14
|
-
st.write(test, { b: 2, a: 1 });
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it("encode in correct order", () => {
|
|
18
|
-
const data = st.write(test, { b: 2, a: 1 });
|
|
19
|
-
const arr = new Uint8Array(data);
|
|
20
|
-
expect(arr[0]).toBe(1);
|
|
21
|
-
expect(arr[1]).toBe(2);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("encodes empty", () => {
|
|
25
|
-
expectEncode(st.object({}), {});
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it(`matches snapshots`, () => {
|
|
29
|
-
expectEncodeSnapshot(
|
|
30
|
-
st.object({
|
|
31
|
-
number: st.u32(),
|
|
32
|
-
puppy: st.string(st.s32()),
|
|
33
|
-
buffer: st.buffer(4),
|
|
34
|
-
}),
|
|
35
|
-
{
|
|
36
|
-
number: 1,
|
|
37
|
-
puppy: "woof woof bark bark",
|
|
38
|
-
buffer: bytes([19, 87, 19, 83]),
|
|
39
|
-
},
|
|
40
|
-
);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { InferInput, InferOutput, Serializer } from "../../types";
|
|
2
|
-
|
|
3
|
-
type InferObjectInfer<T> =
|
|
4
|
-
T extends Record<string, Serializer<any>> ? { [Key in keyof T]: InferInput<T[Key]> } : never;
|
|
5
|
-
|
|
6
|
-
type InferObjectOutput<T> =
|
|
7
|
-
T extends Record<string, Serializer<any>> ? { [Key in keyof T]: InferOutput<T[Key]> } : never;
|
|
8
|
-
|
|
9
|
-
export function object<T extends Record<string, Serializer<any>>>(
|
|
10
|
-
definition: T,
|
|
11
|
-
): Serializer<InferObjectInfer<T>, InferObjectOutput<T>> {
|
|
12
|
-
const entires = Object.entries(definition);
|
|
13
|
-
|
|
14
|
-
// Use the fact: number + undefined = NaN
|
|
15
|
-
// Check for NaN afterwards
|
|
16
|
-
let computedSize = Object.values(definition).reduce(
|
|
17
|
-
(total, v) => total + (v.size as number),
|
|
18
|
-
0,
|
|
19
|
-
);
|
|
20
|
-
const size = isNaN(computedSize) ? undefined : computedSize;
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
size,
|
|
24
|
-
write: (ctx, value) => {
|
|
25
|
-
if (size) ctx.alloc(size);
|
|
26
|
-
|
|
27
|
-
for (let i = 0; i < entires.length; i++) {
|
|
28
|
-
entires[i][1].write(ctx, value[entires[i][0]]);
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
read: (ctx) => {
|
|
32
|
-
const output: [string, unknown][] = new Array(entires.length);
|
|
33
|
-
for (let i = 0; i < entires.length; i++) {
|
|
34
|
-
output[i] = [entires[i][0], entires[i][1].read(ctx)];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return Object.fromEntries(output) as InferObject<T>;
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
}
|
|
@@ -1,34 +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
|
-
it("encode correctly", () => {
|
|
9
|
-
const buffer = st.sizedBuffer(st.u8());
|
|
10
|
-
expectEncode(buffer, bytes([1, 2]));
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it("encodes empty correctly", () => {
|
|
14
|
-
const spec = st.sizedBuffer(st.u8());
|
|
15
|
-
expectEncode(spec, bytes([]));
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("holds large data", () => {
|
|
19
|
-
const size = 1024 * 1024 * 8; // 8MB
|
|
20
|
-
const spec = st.sizedBuffer(st.u32());
|
|
21
|
-
|
|
22
|
-
const data = new Uint8Array(size);
|
|
23
|
-
data.set([3, 4], 1000);
|
|
24
|
-
data.set([3, 4], 2000);
|
|
25
|
-
expectEncode(spec, data.buffer);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("errors on invalid length", () => {
|
|
29
|
-
const spec = st.sizedBuffer(st.u8());
|
|
30
|
-
expectError(() => {
|
|
31
|
-
st.write(spec, bytes(Array.from({ length: 256 }, () => 0)));
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Serializer } from "../../types";
|
|
2
|
-
|
|
3
|
-
export function sizedBuffer(length: Serializer<number>): Serializer<ArrayBuffer> {
|
|
4
|
-
return {
|
|
5
|
-
write: (ctx, value) => {
|
|
6
|
-
length.write(ctx, value.byteLength);
|
|
7
|
-
|
|
8
|
-
const bytes = new Uint8Array(value);
|
|
9
|
-
ctx.alloc(value.byteLength);
|
|
10
|
-
new Uint8Array(ctx.view.buffer).set(bytes, ctx.offset);
|
|
11
|
-
ctx.offset += value.byteLength;
|
|
12
|
-
},
|
|
13
|
-
read: (ctx) => {
|
|
14
|
-
const size = length.read(ctx);
|
|
15
|
-
const slice = ctx.buffer.slice(ctx.offset, ctx.offset + size);
|
|
16
|
-
ctx.offset += size;
|
|
17
|
-
return slice;
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export { u64Bigint, s64Bigint } from "./numbers/bigints";
|
|
2
|
-
export { f32, f64 } from "./numbers/floats";
|
|
3
|
-
export { s8, s16, s32, s64 } from "./numbers/sints";
|
|
4
|
-
export { u8, u16, u32, u64 } from "./numbers/uints";
|
|
5
|
-
|
|
6
|
-
export { array } from "./containers/array";
|
|
7
|
-
export { fastObject } from "./containers/fastObject";
|
|
8
|
-
export { object } from "./containers/object";
|
|
9
|
-
export { list } from "./containers/list";
|
|
10
|
-
export { sizedBuffer } from "./containers/sizedbuffer";
|
|
11
|
-
|
|
12
|
-
export { string } from "./values/string";
|
|
13
|
-
export { buffer } from "./values/buffer";
|
|
14
|
-
export { byteLiteral } from "./values/byteliteral";
|
|
15
|
-
|
|
16
|
-
export { type Transform as Pipeline, pipe } from "./transforms/pipe";
|
|
17
|
-
export { positionOffset } from "./transforms/readOffset";
|
|
18
|
-
export { transform } from "./transforms/transform";
|
|
File without changes
|