@nnilky/structo 1.0.8 → 1.1.0

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.
Files changed (122) hide show
  1. package/README.md +4 -4
  2. package/dist/datatypes/containers/array.d.ts +1 -1
  3. package/dist/datatypes/containers/array.js +9 -12
  4. package/dist/datatypes/containers/array.test.js +2 -2
  5. package/dist/datatypes/containers/exhuastiveArray.d.ts +1 -1
  6. package/dist/datatypes/containers/exhuastiveArray.js +7 -7
  7. package/dist/datatypes/containers/exhuastiveArray.test.js +2 -2
  8. package/dist/datatypes/containers/fastObject.d.ts +1 -1
  9. package/dist/datatypes/containers/fastObject.test.js +2 -2
  10. package/dist/datatypes/containers/list.d.ts +1 -1
  11. package/dist/datatypes/containers/list.js +7 -7
  12. package/dist/datatypes/containers/list.test.js +2 -2
  13. package/dist/datatypes/containers/object.d.ts +1 -1
  14. package/dist/datatypes/containers/object.js +9 -8
  15. package/dist/datatypes/containers/object.test.js +2 -2
  16. package/dist/datatypes/containers/taggedUnion.d.ts +1 -1
  17. package/dist/datatypes/containers/taggedUnion.test.js +2 -2
  18. package/dist/datatypes/index.d.ts +13 -13
  19. package/dist/datatypes/index.js +13 -13
  20. package/dist/datatypes/numbers/bigints.d.ts +1 -1
  21. package/dist/datatypes/numbers/bigints.js +2 -2
  22. package/dist/datatypes/numbers/bigints.test.js +2 -2
  23. package/dist/datatypes/numbers/floats.d.ts +1 -1
  24. package/dist/datatypes/numbers/floats.js +12 -9
  25. package/dist/datatypes/numbers/floats.test.js +2 -2
  26. package/dist/datatypes/numbers/sints.d.ts +1 -1
  27. package/dist/datatypes/numbers/sints.js +13 -10
  28. package/dist/datatypes/numbers/sints.test.js +2 -2
  29. package/dist/datatypes/numbers/uints.d.ts +1 -1
  30. package/dist/datatypes/numbers/uints.js +13 -10
  31. package/dist/datatypes/numbers/uints.test.js +2 -2
  32. package/dist/datatypes/values/bytes.d.ts +2 -2
  33. package/dist/datatypes/values/bytes.js +6 -6
  34. package/dist/datatypes/values/bytes.test.js +4 -4
  35. package/dist/datatypes/values/sizedbytes.d.ts +2 -2
  36. package/dist/datatypes/values/sizedbytes.js +3 -4
  37. package/dist/datatypes/values/sizedbytes.test.js +3 -3
  38. package/dist/datatypes/values/string.d.ts +1 -1
  39. package/dist/datatypes/values/string.js +2 -3
  40. package/dist/datatypes/values/string.test.js +2 -2
  41. package/dist/index.d.ts +6 -6
  42. package/dist/index.js +5 -5
  43. package/dist/read.d.ts +2 -3
  44. package/dist/read.js +10 -12
  45. package/dist/transforms/encode.d.ts +1 -1
  46. package/dist/transforms/enum.d.ts +1 -1
  47. package/dist/transforms/enum.js +1 -1
  48. package/dist/transforms/enum.test.js +2 -2
  49. package/dist/transforms/index.d.ts +11 -11
  50. package/dist/transforms/index.js +11 -11
  51. package/dist/transforms/literal.d.ts +1 -1
  52. package/dist/transforms/literal.js +1 -1
  53. package/dist/transforms/literal.test.js +2 -2
  54. package/dist/transforms/modify.d.ts +1 -1
  55. package/dist/transforms/modify.test.js +2 -2
  56. package/dist/transforms/offset.d.ts +1 -1
  57. package/dist/transforms/offset.test.js +2 -2
  58. package/dist/transforms/pipe.d.ts +1 -1
  59. package/dist/transforms/toAscii.d.ts +1 -1
  60. package/dist/transforms/toAscii.js +3 -3
  61. package/dist/transforms/toAscii.test.js +2 -2
  62. package/dist/transforms/toBase64.d.ts +1 -1
  63. package/dist/transforms/toBase64.js +3 -3
  64. package/dist/transforms/toBase64.test.js +2 -2
  65. package/dist/transforms/toBytes.d.ts +1 -1
  66. package/dist/transforms/toBytes.js +3 -3
  67. package/dist/transforms/toBytes.test.js +2 -2
  68. package/dist/transforms/toHex.d.ts +3 -3
  69. package/dist/transforms/toHex.js +5 -5
  70. package/dist/transforms/toHex.test.js +2 -2
  71. package/dist/transforms/toTypedArray.d.ts +11 -6
  72. package/dist/transforms/toTypedArray.js +11 -6
  73. package/dist/transforms/toTypedArray.test.js +20 -11
  74. package/dist/types.d.ts +11 -9
  75. package/dist/utilities/index.d.ts +3 -3
  76. package/dist/utilities/index.js +3 -3
  77. package/dist/utilities/lazy.d.ts +1 -1
  78. package/dist/utilities/lazy.test.js +2 -2
  79. package/dist/utilities/reference.d.ts +1 -1
  80. package/dist/utilities/reference.test.js +2 -2
  81. package/dist/utilities/remember.d.ts +2 -2
  82. package/dist/utilities/remember.js +3 -3
  83. package/dist/utilities/remember.test.js +2 -2
  84. package/dist/utils.test.d.ts +2 -2
  85. package/dist/utils.test.js +2 -4
  86. package/dist/write.d.ts +2 -2
  87. package/dist/write.js +47 -34
  88. package/package.json +7 -2
  89. package/dist/datatypes/containers/sizedbytes.d.ts +0 -2
  90. package/dist/datatypes/containers/sizedbytes.js +0 -17
  91. package/dist/datatypes/containers/sizedbytes.test.d.ts +0 -1
  92. package/dist/datatypes/containers/sizedbytes.test.js +0 -27
  93. package/dist/datatypes/containers/string.d.ts +0 -2
  94. package/dist/datatypes/containers/string.js +0 -24
  95. package/dist/datatypes/containers/string.test.d.ts +0 -1
  96. package/dist/datatypes/containers/string.test.js +0 -24
  97. package/dist/datatypes/transforms/encode.d.ts +0 -2
  98. package/dist/datatypes/transforms/encode.js +0 -7
  99. package/dist/datatypes/transforms/fixedOffset.d.ts +0 -2
  100. package/dist/datatypes/transforms/fixedOffset.js +0 -18
  101. package/dist/datatypes/transforms/modify.d.ts +0 -2
  102. package/dist/datatypes/transforms/modify.js +0 -7
  103. package/dist/datatypes/transforms/noAdvance.d.ts +0 -16
  104. package/dist/datatypes/transforms/noAdvance.js +0 -30
  105. package/dist/datatypes/transforms/pipe.d.ts +0 -11
  106. package/dist/datatypes/transforms/pipe.js +0 -16
  107. package/dist/datatypes/utilities/remember.d.ts +0 -15
  108. package/dist/datatypes/utilities/remember.js +0 -36
  109. package/dist/datatypes/utilities/remember.test.d.ts +0 -1
  110. package/dist/datatypes/utilities/remember.test.js +0 -44
  111. package/dist/datatypes/utils.test.d.ts +0 -8
  112. package/dist/datatypes/utils.test.js +0 -37
  113. package/dist/datatypes/values/byteliteral.d.ts +0 -2
  114. package/dist/datatypes/values/byteliteral.js +0 -20
  115. package/dist/datatypes/values/json.d.ts +0 -10
  116. package/dist/datatypes/values/json.js +0 -21
  117. package/dist/transforms/fixedOffset.d.ts +0 -2
  118. package/dist/transforms/fixedOffset.js +0 -18
  119. package/dist/transforms/noAdvance.d.ts +0 -16
  120. package/dist/transforms/noAdvance.js +0 -30
  121. package/dist/transforms/noAdvance.test.d.ts +0 -1
  122. package/dist/transforms/noAdvance.test.js +0 -17
@@ -1,20 +0,0 @@
1
- export function bytesLiteral(bytes) {
2
- const length = bytes.length;
3
- return {
4
- size: bytes.length,
5
- read: (ctx) => {
6
- const arr = new Uint8Array(ctx.view.buffer);
7
- for (let i = 0; i < length; i++) {
8
- if (arr[ctx.offset + i] !== bytes[i]) {
9
- throw new Error("Invalid Value");
10
- }
11
- }
12
- ctx.offset += length;
13
- return bytes;
14
- },
15
- write(ctx) {
16
- new Uint8Array(ctx.view.buffer).set(bytes, ctx.offset);
17
- ctx.offset += length;
18
- },
19
- };
20
- }
@@ -1,10 +0,0 @@
1
- import type { Serializer } from "../../types";
2
- /**
3
- * `st.json` stores JSON data using a string serializer
4
- *
5
- * ```
6
- * st.json(st.string(st.u32()))
7
- * ```
8
- *
9
- */
10
- export declare function json(type: Serializer<string>): Serializer<any>;
@@ -1,21 +0,0 @@
1
- /**
2
- * `st.json` stores JSON data using a string serializer
3
- *
4
- * ```
5
- * st.json(st.string(st.u32()))
6
- * ```
7
- *
8
- */
9
- export function json(type) {
10
- return {
11
- size: type.size,
12
- write: (ctx, value) => {
13
- const json = JSON.stringify(value);
14
- type.write(ctx, json);
15
- },
16
- read: (ctx) => {
17
- const value = type.read(ctx);
18
- return JSON.parse(value);
19
- },
20
- };
21
- }
@@ -1,2 +0,0 @@
1
- import type { Serializer } from "../types";
2
- export declare function fixedOffset<T>(delta: number): (type: Serializer<T>) => Serializer<T>;
@@ -1,18 +0,0 @@
1
- export function fixedOffset(delta) {
2
- return (type) => ({
3
- size: type.size,
4
- read: (ctx) => {
5
- let start = ctx.offset;
6
- ctx.offset += delta;
7
- const value = type.read(ctx);
8
- ctx.offset = start;
9
- return value;
10
- },
11
- write: (ctx, value) => {
12
- let start = ctx.offset;
13
- ctx.offset += delta;
14
- type.write(ctx, value);
15
- ctx.offset = start;
16
- },
17
- });
18
- }
@@ -1,16 +0,0 @@
1
- import type { Serializer } from "../types";
2
- /**
3
- * Whilst reading this type, don't advance the offset after reading
4
- *
5
- * This can be useful for taggedUnions where they key is the first value in all the variants
6
- *
7
- * ```
8
- * st.object({
9
- * stringLength: st.pipe(
10
- * st.u16(),
11
- * st.noAdvance(),
12
- * ),
13
- * text: st.string(st.u16()),
14
- * })
15
- */
16
- export declare function noAdvance<T>(): (type: Serializer<T>) => Serializer<T>;
@@ -1,30 +0,0 @@
1
- /**
2
- * Whilst reading this type, don't advance the offset after reading
3
- *
4
- * This can be useful for taggedUnions where they key is the first value in all the variants
5
- *
6
- * ```
7
- * st.object({
8
- * stringLength: st.pipe(
9
- * st.u16(),
10
- * st.noAdvance(),
11
- * ),
12
- * text: st.string(st.u16()),
13
- * })
14
- */
15
- export function noAdvance() {
16
- return (type) => ({
17
- size: type.size,
18
- read: (ctx) => {
19
- let start = ctx.offset;
20
- const value = type.read(ctx);
21
- ctx.offset = start;
22
- return value;
23
- },
24
- write: (ctx, value) => {
25
- let start = ctx.offset;
26
- type.write(ctx, value);
27
- ctx.offset = start;
28
- },
29
- });
30
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,17 +0,0 @@
1
- import { describe, it } from "node:test";
2
- import * as st from "../index";
3
- import { encodeTest } from "../utils.test";
4
- describe("st.noAdvance", () => {
5
- it("encode correctly", () => {
6
- encodeTest(st.object({
7
- length: st.pipe(st.u8(), st.noAdvance()),
8
- text: st.string(st.u8()),
9
- }), //
10
- { length: 3, text: "foo" });
11
- encodeTest(st.object({
12
- a: st.pipe(st.u16(), st.noAdvance()),
13
- b: st.f16(),
14
- }), //
15
- { a: 0, b: 1 }, { a: 15360, b: 1 });
16
- });
17
- });