@fuman/io 0.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.
Files changed (81) hide show
  1. package/LICENSE +8 -0
  2. package/_utils.cjs +23 -0
  3. package/_utils.d.ts +2 -0
  4. package/_utils.js +23 -0
  5. package/bits/index.d.ts +2 -0
  6. package/bits/reader.cjs +122 -0
  7. package/bits/reader.d.ts +15 -0
  8. package/bits/reader.js +122 -0
  9. package/bits/utils.cjs +49 -0
  10. package/bits/utils.d.ts +12 -0
  11. package/bits/utils.js +49 -0
  12. package/buf-reader.cjs +60 -0
  13. package/buf-reader.d.ts +9 -0
  14. package/buf-reader.js +60 -0
  15. package/bytes.cjs +114 -0
  16. package/bytes.d.ts +24 -0
  17. package/bytes.js +114 -0
  18. package/codec/delimiter.cjs +38 -0
  19. package/codec/delimiter.d.ts +22 -0
  20. package/codec/delimiter.js +38 -0
  21. package/codec/index.d.ts +6 -0
  22. package/codec/length-delimited.cjs +42 -0
  23. package/codec/length-delimited.d.ts +14 -0
  24. package/codec/length-delimited.js +42 -0
  25. package/codec/reader.cjs +51 -0
  26. package/codec/reader.d.ts +12 -0
  27. package/codec/reader.js +51 -0
  28. package/codec/text-delimiter.cjs +24 -0
  29. package/codec/text-delimiter.d.ts +11 -0
  30. package/codec/text-delimiter.js +24 -0
  31. package/codec/types.d.ts +16 -0
  32. package/codec/writer.cjs +24 -0
  33. package/codec/writer.d.ts +10 -0
  34. package/codec/writer.js +24 -0
  35. package/errors.cjs +9 -0
  36. package/errors.d.ts +9 -0
  37. package/errors.js +9 -0
  38. package/index.cjs +39 -0
  39. package/index.d.ts +12 -0
  40. package/index.js +39 -0
  41. package/package.json +29 -0
  42. package/read/adapters.cjs +90 -0
  43. package/read/adapters.d.ts +4 -0
  44. package/read/adapters.js +90 -0
  45. package/read/async/index.cjs +5 -0
  46. package/read/async/index.d.ts +1 -0
  47. package/read/async/index.js +5 -0
  48. package/read/async/strings.cjs +40 -0
  49. package/read/async/strings.d.ts +3 -0
  50. package/read/async/strings.js +40 -0
  51. package/read/index.cjs +40 -0
  52. package/read/index.d.ts +4 -0
  53. package/read/index.js +40 -0
  54. package/read/numbers.cjs +181 -0
  55. package/read/numbers.d.ts +27 -0
  56. package/read/numbers.js +181 -0
  57. package/read/strings.cjs +67 -0
  58. package/read/strings.d.ts +9 -0
  59. package/read/strings.js +67 -0
  60. package/reader-with-final.cjs +69 -0
  61. package/reader-with-final.d.ts +13 -0
  62. package/reader-with-final.js +69 -0
  63. package/streams.cjs +15 -0
  64. package/streams.d.ts +1 -0
  65. package/streams.js +15 -0
  66. package/types.d.ts +66 -0
  67. package/write/adapters.cjs +38 -0
  68. package/write/adapters.d.ts +4 -0
  69. package/write/adapters.js +38 -0
  70. package/write/index.cjs +37 -0
  71. package/write/index.d.ts +3 -0
  72. package/write/index.js +37 -0
  73. package/write/numbers.cjs +311 -0
  74. package/write/numbers.d.ts +27 -0
  75. package/write/numbers.js +311 -0
  76. package/write/pipe.cjs +11 -0
  77. package/write/pipe.d.ts +2 -0
  78. package/write/pipe.js +11 -0
  79. package/write/strings.cjs +38 -0
  80. package/write/strings.d.ts +6 -0
  81. package/write/strings.js +38 -0
package/index.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import * as read from './read/index.js';
2
+ import * as write from './write/index.js';
3
+ export * from './bits/index.js';
4
+ export * from './buf-reader.js';
5
+ export * from './bytes.js';
6
+ export * from './codec/index.js';
7
+ export * from './errors.js';
8
+ export * from './read/adapters.js';
9
+ export * from './reader-with-final.js';
10
+ export * from './types.js';
11
+ export * from './write/adapters.js';
12
+ export { read, write };
package/index.js ADDED
@@ -0,0 +1,39 @@
1
+ import * as index from "./read/index.js";
2
+ import * as index$1 from "./write/index.js";
3
+ import { BufReader } from "./buf-reader.js";
4
+ import { Bytes } from "./bytes.js";
5
+ import { PartialReadError } from "./errors.js";
6
+ import { fumanReadableToWeb, fumanSyncReadableToAsync, webReadableToFuman } from "./read/adapters.js";
7
+ import { ReaderWithFinal } from "./reader-with-final.js";
8
+ import { fumanSyncWritableToAsync, fumanWritableToWeb, webWritableToFuman } from "./write/adapters.js";
9
+ import { BitReader } from "./bits/reader.js";
10
+ import { reverse8Bits, reverseBits, reverseBitsAll, reverseBitsBig } from "./bits/utils.js";
11
+ import { DelimiterCodec } from "./codec/delimiter.js";
12
+ import { LengthDelimitedCodec } from "./codec/length-delimited.js";
13
+ import { FramedReader } from "./codec/reader.js";
14
+ import { TextDelimiterCodec } from "./codec/text-delimiter.js";
15
+ import { FramedWriter } from "./codec/writer.js";
16
+ export {
17
+ BitReader,
18
+ BufReader,
19
+ Bytes,
20
+ DelimiterCodec,
21
+ FramedReader,
22
+ FramedWriter,
23
+ LengthDelimitedCodec,
24
+ PartialReadError,
25
+ ReaderWithFinal,
26
+ TextDelimiterCodec,
27
+ fumanReadableToWeb,
28
+ fumanSyncReadableToAsync,
29
+ fumanSyncWritableToAsync,
30
+ fumanWritableToWeb,
31
+ index as read,
32
+ reverse8Bits,
33
+ reverseBits,
34
+ reverseBitsAll,
35
+ reverseBitsBig,
36
+ webReadableToFuman,
37
+ webWritableToFuman,
38
+ index$1 as write
39
+ };
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@fuman/io",
3
+ "type": "module",
4
+ "version": "0.0.1",
5
+ "description": "experimental i/o abstractions",
6
+ "license": "MIT",
7
+ "scripts": {},
8
+ "dependencies": {
9
+ "@fuman/utils": "^0.0.1"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "import": {
14
+ "types": "./index.d.ts",
15
+ "default": "./index.js"
16
+ },
17
+ "require": {
18
+ "types": "./index.d.cts",
19
+ "default": "./index.cjs"
20
+ }
21
+ }
22
+ },
23
+ "sideEffects": false,
24
+ "author": "",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/teidesu/fuman.git"
28
+ }
29
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const bytes = require("../bytes.cjs");
4
+ const streams = require("../streams.cjs");
5
+ function fumanSyncReadableToAsync(readable) {
6
+ return {
7
+ async read(into) {
8
+ const buf = readable.readSync(into.length);
9
+ into.set(buf);
10
+ return buf.length;
11
+ }
12
+ };
13
+ }
14
+ function webReadableToFuman(readable) {
15
+ if (streams.isByobCapableStream(readable)) {
16
+ const reader2 = readable.getReader({ mode: "byob" });
17
+ return {
18
+ async read(into) {
19
+ const temp = new Uint8Array(into.length);
20
+ const { value, done } = await reader2.read(temp);
21
+ if (done) return 0;
22
+ into.set(value);
23
+ return value.byteLength;
24
+ },
25
+ close() {
26
+ reader2.cancel().catch(() => {
27
+ });
28
+ }
29
+ };
30
+ }
31
+ const reader = readable.getReader();
32
+ const buf = bytes.Bytes.alloc();
33
+ return {
34
+ async read(into) {
35
+ if (buf.available === 0) {
36
+ const { value, done } = await reader.read();
37
+ if (done) return 0;
38
+ buf.writeSync(value.byteLength).set(value);
39
+ buf.disposeWriteSync();
40
+ }
41
+ const read = Math.min(into.length, buf.available);
42
+ into.set(buf.readSync(read), 0);
43
+ buf.reclaim();
44
+ return read;
45
+ },
46
+ close() {
47
+ reader.cancel().catch(() => {
48
+ });
49
+ }
50
+ };
51
+ }
52
+ function fumanReadableToWeb(readable) {
53
+ return new ReadableStream({
54
+ type: "bytes",
55
+ async pull(controller) {
56
+ if (controller.byobRequest) {
57
+ if (!controller.byobRequest.view) {
58
+ controller.byobRequest.respond(0);
59
+ return;
60
+ }
61
+ const view = new Uint8Array(
62
+ controller.byobRequest.view.buffer,
63
+ controller.byobRequest.view.byteOffset,
64
+ controller.byobRequest.view.byteLength
65
+ );
66
+ const nread2 = await readable.read(view);
67
+ if (nread2 === 0) {
68
+ controller.close();
69
+ controller.byobRequest.respond(0);
70
+ return;
71
+ }
72
+ controller.byobRequest.respond(nread2);
73
+ return;
74
+ }
75
+ const buf = new Uint8Array(1024 * 32);
76
+ let nread = 0;
77
+ while (nread === 0) {
78
+ nread = await readable.read(buf);
79
+ if (nread === 0) break;
80
+ controller.enqueue(buf.subarray(0, nread));
81
+ }
82
+ if (nread === 0) {
83
+ controller.close();
84
+ }
85
+ }
86
+ });
87
+ }
88
+ exports.fumanReadableToWeb = fumanReadableToWeb;
89
+ exports.fumanSyncReadableToAsync = fumanSyncReadableToAsync;
90
+ exports.webReadableToFuman = webReadableToFuman;
@@ -0,0 +1,4 @@
1
+ import { IClosable, IReadable, ISyncReadable } from '../types.js';
2
+ export declare function fumanSyncReadableToAsync(readable: ISyncReadable): IReadable;
3
+ export declare function webReadableToFuman(readable: ReadableStream<Uint8Array>): IReadable & IClosable;
4
+ export declare function fumanReadableToWeb(readable: IReadable): ReadableStream<Uint8Array>;
@@ -0,0 +1,90 @@
1
+ import { Bytes } from "../bytes.js";
2
+ import { isByobCapableStream } from "../streams.js";
3
+ function fumanSyncReadableToAsync(readable) {
4
+ return {
5
+ async read(into) {
6
+ const buf = readable.readSync(into.length);
7
+ into.set(buf);
8
+ return buf.length;
9
+ }
10
+ };
11
+ }
12
+ function webReadableToFuman(readable) {
13
+ if (isByobCapableStream(readable)) {
14
+ const reader2 = readable.getReader({ mode: "byob" });
15
+ return {
16
+ async read(into) {
17
+ const temp = new Uint8Array(into.length);
18
+ const { value, done } = await reader2.read(temp);
19
+ if (done) return 0;
20
+ into.set(value);
21
+ return value.byteLength;
22
+ },
23
+ close() {
24
+ reader2.cancel().catch(() => {
25
+ });
26
+ }
27
+ };
28
+ }
29
+ const reader = readable.getReader();
30
+ const buf = Bytes.alloc();
31
+ return {
32
+ async read(into) {
33
+ if (buf.available === 0) {
34
+ const { value, done } = await reader.read();
35
+ if (done) return 0;
36
+ buf.writeSync(value.byteLength).set(value);
37
+ buf.disposeWriteSync();
38
+ }
39
+ const read = Math.min(into.length, buf.available);
40
+ into.set(buf.readSync(read), 0);
41
+ buf.reclaim();
42
+ return read;
43
+ },
44
+ close() {
45
+ reader.cancel().catch(() => {
46
+ });
47
+ }
48
+ };
49
+ }
50
+ function fumanReadableToWeb(readable) {
51
+ return new ReadableStream({
52
+ type: "bytes",
53
+ async pull(controller) {
54
+ if (controller.byobRequest) {
55
+ if (!controller.byobRequest.view) {
56
+ controller.byobRequest.respond(0);
57
+ return;
58
+ }
59
+ const view = new Uint8Array(
60
+ controller.byobRequest.view.buffer,
61
+ controller.byobRequest.view.byteOffset,
62
+ controller.byobRequest.view.byteLength
63
+ );
64
+ const nread2 = await readable.read(view);
65
+ if (nread2 === 0) {
66
+ controller.close();
67
+ controller.byobRequest.respond(0);
68
+ return;
69
+ }
70
+ controller.byobRequest.respond(nread2);
71
+ return;
72
+ }
73
+ const buf = new Uint8Array(1024 * 32);
74
+ let nread = 0;
75
+ while (nread === 0) {
76
+ nread = await readable.read(buf);
77
+ if (nread === 0) break;
78
+ controller.enqueue(buf.subarray(0, nread));
79
+ }
80
+ if (nread === 0) {
81
+ controller.close();
82
+ }
83
+ }
84
+ });
85
+ }
86
+ export {
87
+ fumanReadableToWeb,
88
+ fumanSyncReadableToAsync,
89
+ webReadableToFuman
90
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const strings = require("./strings.cjs");
4
+ exports.exactly = strings.exactly;
5
+ exports.untilEnd = strings.untilEnd;
@@ -0,0 +1 @@
1
+ export * from './strings.js';
@@ -0,0 +1,5 @@
1
+ import { exactly, untilEnd } from "./strings.js";
2
+ export {
3
+ exactly,
4
+ untilEnd
5
+ };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const utils = require("@fuman/utils");
4
+ const bytes = require("../../bytes.cjs");
5
+ const errors = require("../../errors.cjs");
6
+ async function exactly(readable, length, onEof = "error") {
7
+ const res = typeof length === "number" ? utils.u8.alloc(length) : length;
8
+ let remaining = res.length;
9
+ let pos = 0;
10
+ while (remaining > 0) {
11
+ const read = await readable.read(res.subarray(pos, pos + remaining));
12
+ if (read === 0) {
13
+ if (onEof === "error") {
14
+ throw new errors.PartialReadError(
15
+ res.subarray(0, pos),
16
+ res.length
17
+ );
18
+ } else {
19
+ return res.subarray(0, pos);
20
+ }
21
+ }
22
+ remaining -= read;
23
+ pos += read;
24
+ }
25
+ return res;
26
+ }
27
+ async function untilEnd(readable, chunkSize = 1024 * 16) {
28
+ const buf = bytes.Bytes.alloc(chunkSize);
29
+ while (true) {
30
+ const into = buf.writeSync(chunkSize);
31
+ const read = await readable.read(into);
32
+ buf.disposeWriteSync(read);
33
+ if (read === 0) {
34
+ break;
35
+ }
36
+ }
37
+ return buf.result();
38
+ }
39
+ exports.exactly = exactly;
40
+ exports.untilEnd = untilEnd;
@@ -0,0 +1,3 @@
1
+ import { IReadable } from '../../types.js';
2
+ export declare function exactly(readable: IReadable, length: number | Uint8Array, onEof?: 'error' | 'truncate'): Promise<Uint8Array>;
3
+ export declare function untilEnd(readable: IReadable, chunkSize?: number): Promise<Uint8Array>;
@@ -0,0 +1,40 @@
1
+ import { u8 } from "@fuman/utils";
2
+ import { Bytes } from "../../bytes.js";
3
+ import { PartialReadError } from "../../errors.js";
4
+ async function exactly(readable, length, onEof = "error") {
5
+ const res = typeof length === "number" ? u8.alloc(length) : length;
6
+ let remaining = res.length;
7
+ let pos = 0;
8
+ while (remaining > 0) {
9
+ const read = await readable.read(res.subarray(pos, pos + remaining));
10
+ if (read === 0) {
11
+ if (onEof === "error") {
12
+ throw new PartialReadError(
13
+ res.subarray(0, pos),
14
+ res.length
15
+ );
16
+ } else {
17
+ return res.subarray(0, pos);
18
+ }
19
+ }
20
+ remaining -= read;
21
+ pos += read;
22
+ }
23
+ return res;
24
+ }
25
+ async function untilEnd(readable, chunkSize = 1024 * 16) {
26
+ const buf = Bytes.alloc(chunkSize);
27
+ while (true) {
28
+ const into = buf.writeSync(chunkSize);
29
+ const read = await readable.read(into);
30
+ buf.disposeWriteSync(read);
31
+ if (read === 0) {
32
+ break;
33
+ }
34
+ }
35
+ return buf.result();
36
+ }
37
+ export {
38
+ exactly,
39
+ untilEnd
40
+ };
package/read/index.cjs ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const index = require("./async/index.cjs");
4
+ const numbers = require("./numbers.cjs");
5
+ const strings = require("./strings.cjs");
6
+ exports.async = index;
7
+ exports.float32be = numbers.float32be;
8
+ exports.float32le = numbers.float32le;
9
+ exports.float64be = numbers.float64be;
10
+ exports.float64le = numbers.float64le;
11
+ exports.int16be = numbers.int16be;
12
+ exports.int16le = numbers.int16le;
13
+ exports.int24be = numbers.int24be;
14
+ exports.int24le = numbers.int24le;
15
+ exports.int32be = numbers.int32be;
16
+ exports.int32le = numbers.int32le;
17
+ exports.int64be = numbers.int64be;
18
+ exports.int64le = numbers.int64le;
19
+ exports.int8 = numbers.int8;
20
+ exports.intbe = numbers.intbe;
21
+ exports.intle = numbers.intle;
22
+ exports.uint16be = numbers.uint16be;
23
+ exports.uint16le = numbers.uint16le;
24
+ exports.uint24be = numbers.uint24be;
25
+ exports.uint24le = numbers.uint24le;
26
+ exports.uint32be = numbers.uint32be;
27
+ exports.uint32le = numbers.uint32le;
28
+ exports.uint64be = numbers.uint64be;
29
+ exports.uint64le = numbers.uint64le;
30
+ exports.uint8 = numbers.uint8;
31
+ exports.uintbe = numbers.uintbe;
32
+ exports.uintle = numbers.uintle;
33
+ exports.cUtf8String = strings.cUtf8String;
34
+ exports.exactly = strings.exactly;
35
+ exports.lengthPrefixed = strings.lengthPrefixed;
36
+ exports.rawString = strings.rawString;
37
+ exports.untilCondition = strings.untilCondition;
38
+ exports.untilEnd = strings.untilEnd;
39
+ exports.untilZero = strings.untilZero;
40
+ exports.utf8String = strings.utf8String;
@@ -0,0 +1,4 @@
1
+ import * as async from './async/index.js';
2
+ export * from './numbers.js';
3
+ export * from './strings.js';
4
+ export { async };
package/read/index.js ADDED
@@ -0,0 +1,40 @@
1
+ import * as index from "./async/index.js";
2
+ import { float32be, float32le, float64be, float64le, int16be, int16le, int24be, int24le, int32be, int32le, int64be, int64le, int8, intbe, intle, uint16be, uint16le, uint24be, uint24le, uint32be, uint32le, uint64be, uint64le, uint8, uintbe, uintle } from "./numbers.js";
3
+ import { cUtf8String, exactly, lengthPrefixed, rawString, untilCondition, untilEnd, untilZero, utf8String } from "./strings.js";
4
+ export {
5
+ index as async,
6
+ cUtf8String,
7
+ exactly,
8
+ float32be,
9
+ float32le,
10
+ float64be,
11
+ float64le,
12
+ int16be,
13
+ int16le,
14
+ int24be,
15
+ int24le,
16
+ int32be,
17
+ int32le,
18
+ int64be,
19
+ int64le,
20
+ int8,
21
+ intbe,
22
+ intle,
23
+ lengthPrefixed,
24
+ rawString,
25
+ uint16be,
26
+ uint16le,
27
+ uint24be,
28
+ uint24le,
29
+ uint32be,
30
+ uint32le,
31
+ uint64be,
32
+ uint64le,
33
+ uint8,
34
+ uintbe,
35
+ uintle,
36
+ untilCondition,
37
+ untilEnd,
38
+ untilZero,
39
+ utf8String
40
+ };
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const _utils = require("../_utils.cjs");
4
+ const errors = require("../errors.cjs");
5
+ const strings = require("./strings.cjs");
6
+ function uint8(readable) {
7
+ return strings.exactly(readable, 1)[0];
8
+ }
9
+ function _maybeRead(readable, size) {
10
+ if (ArrayBuffer.isView(readable)) {
11
+ if (readable.byteLength < size) {
12
+ throw new errors.PartialReadError(readable, size);
13
+ }
14
+ return readable;
15
+ }
16
+ return strings.exactly(readable, size);
17
+ }
18
+ function int8(readable) {
19
+ const val = _maybeRead(readable, 1)[0];
20
+ if (!(val & 128)) return val;
21
+ return -(255 - val + 1);
22
+ }
23
+ function uint16le(readable) {
24
+ const buffer = _maybeRead(readable, 2);
25
+ return buffer[0] | buffer[1] << 8;
26
+ }
27
+ function uint16be(readable) {
28
+ const buffer = _maybeRead(readable, 2);
29
+ return buffer[0] << 8 | buffer[1];
30
+ }
31
+ function uint24le(readable) {
32
+ const buffer = _maybeRead(readable, 3);
33
+ return buffer[0] | buffer[1] << 8 | buffer[2] << 16;
34
+ }
35
+ function uint24be(readable) {
36
+ const buffer = _maybeRead(readable, 3);
37
+ return buffer[0] << 16 | buffer[1] << 8 | buffer[2];
38
+ }
39
+ function uint32le(readable) {
40
+ const buffer = _maybeRead(readable, 4);
41
+ return (buffer[0] | buffer[1] << 8 | buffer[2] << 16) + buffer[3] * 16777216;
42
+ }
43
+ function uint32be(readable) {
44
+ const buffer = _maybeRead(readable, 4);
45
+ return buffer[0] * 16777216 + (buffer[1] << 16 | buffer[2] << 8 | buffer[3]);
46
+ }
47
+ function uint64le(readable) {
48
+ const buffer = _maybeRead(readable, 8);
49
+ const lo = (buffer[0] | buffer[1] << 8 | buffer[2] << 16) + buffer[3] * 16777216;
50
+ const hi = (buffer[4] | buffer[5] << 8 | buffer[6] << 16) + buffer[7] * 16777216;
51
+ return BigInt(lo) | BigInt(hi) << 32n;
52
+ }
53
+ function uint64be(readable) {
54
+ const buffer = _maybeRead(readable, 8);
55
+ const lo = buffer[0] * 16777216 + (buffer[1] << 16 | buffer[2] << 8 | buffer[3]);
56
+ const hi = buffer[4] * 16777216 + (buffer[5] << 16 | buffer[6] << 8 | buffer[7]);
57
+ return BigInt(lo) << 32n | BigInt(hi);
58
+ }
59
+ function int16le(readable) {
60
+ const buffer = _maybeRead(readable, 2);
61
+ const val = buffer[0] | buffer[1] << 8;
62
+ return val & 32768 ? val | 4294901760 : val;
63
+ }
64
+ function int16be(readable) {
65
+ const buffer = _maybeRead(readable, 2);
66
+ const val = buffer[0] << 8 | buffer[1];
67
+ return val & 32768 ? val | 4294901760 : val;
68
+ }
69
+ function int24le(readable) {
70
+ const buffer = _maybeRead(readable, 3);
71
+ const val = buffer[0] | buffer[1] << 8 | buffer[2] << 16;
72
+ return val & 8388608 ? val | 4278190080 : val;
73
+ }
74
+ function int24be(readable) {
75
+ const buffer = _maybeRead(readable, 3);
76
+ const val = buffer[0] << 16 | buffer[1] << 8 | buffer[2];
77
+ return val & 8388608 ? val | 4278190080 : val;
78
+ }
79
+ function int32le(readable) {
80
+ const buffer = _maybeRead(readable, 4);
81
+ return buffer[0] | buffer[1] << 8 | buffer[2] << 16 | buffer[3] << 24;
82
+ }
83
+ function int32be(readable) {
84
+ const buffer = _maybeRead(readable, 4);
85
+ return buffer[0] << 24 | buffer[1] << 16 | buffer[2] << 8 | buffer[3];
86
+ }
87
+ function int64le(readable) {
88
+ const buffer = _maybeRead(readable, 8);
89
+ const val = buffer[4] + buffer[5] * 2 ** 8 + buffer[6] * 2 ** 16 + (buffer[7] << 24);
90
+ return (BigInt(val) << 32n) + BigInt(buffer[0] + buffer[1] * 2 ** 8 + buffer[2] * 2 ** 16 + buffer[3] * 2 ** 24);
91
+ }
92
+ function int64be(readable) {
93
+ const buffer = _maybeRead(readable, 8);
94
+ const val = (buffer[0] << 24) + buffer[1] * 2 ** 16 + buffer[2] * 2 ** 8 + buffer[3];
95
+ return (BigInt(val) << 32n) + BigInt(buffer[4] * 2 ** 24 + buffer[5] * 2 ** 16 + buffer[6] * 2 ** 8 + buffer[7]);
96
+ }
97
+ function uintle(readable, size) {
98
+ const buffer = _maybeRead(readable, size);
99
+ let val = BigInt(buffer[0]);
100
+ let mul = 1;
101
+ let i = 0;
102
+ while (++i < size && (mul *= 256)) {
103
+ val |= BigInt(buffer[i] * mul);
104
+ }
105
+ return val;
106
+ }
107
+ function uintbe(readable, size) {
108
+ const buffer = _maybeRead(readable, size);
109
+ let val = BigInt(buffer[--size]);
110
+ let mul = 1;
111
+ while (size > 0 && (mul *= 256)) {
112
+ val |= BigInt(buffer[--size] * mul);
113
+ }
114
+ return val;
115
+ }
116
+ function intbe(readable, size) {
117
+ const buffer = _maybeRead(readable, size);
118
+ let i = size - 1;
119
+ let mul = 1;
120
+ let val = BigInt(buffer[i]);
121
+ while (i > 0 && (mul *= 256)) {
122
+ val |= BigInt(buffer[--i] * mul);
123
+ }
124
+ mul *= 128;
125
+ if (val >= mul) val -= 2n ** BigInt(8 * size);
126
+ return val;
127
+ }
128
+ function intle(readable, size) {
129
+ const buffer = _maybeRead(readable, size);
130
+ let val = BigInt(buffer[0]);
131
+ let mul = 1;
132
+ let i = 0;
133
+ while (++i < size && (mul *= 256)) {
134
+ val |= BigInt(buffer[i] * mul);
135
+ }
136
+ mul *= 128;
137
+ if (val >= mul) val -= 2n ** BigInt(8 * size);
138
+ return val;
139
+ }
140
+ function float32le(readable) {
141
+ const buffer = _maybeRead(readable, 4);
142
+ return _utils.getDv(buffer).getFloat32(buffer.byteOffset, true);
143
+ }
144
+ function float32be(readable) {
145
+ const buffer = _maybeRead(readable, 4);
146
+ return _utils.getDv(buffer).getFloat32(buffer.byteOffset, false);
147
+ }
148
+ function float64le(readable) {
149
+ const buffer = _maybeRead(readable, 8);
150
+ return _utils.getDv(buffer).getFloat64(buffer.byteOffset, true);
151
+ }
152
+ function float64be(readable) {
153
+ const buffer = _maybeRead(readable, 8);
154
+ return _utils.getDv(buffer).getFloat64(buffer.byteOffset, false);
155
+ }
156
+ exports.float32be = float32be;
157
+ exports.float32le = float32le;
158
+ exports.float64be = float64be;
159
+ exports.float64le = float64le;
160
+ exports.int16be = int16be;
161
+ exports.int16le = int16le;
162
+ exports.int24be = int24be;
163
+ exports.int24le = int24le;
164
+ exports.int32be = int32be;
165
+ exports.int32le = int32le;
166
+ exports.int64be = int64be;
167
+ exports.int64le = int64le;
168
+ exports.int8 = int8;
169
+ exports.intbe = intbe;
170
+ exports.intle = intle;
171
+ exports.uint16be = uint16be;
172
+ exports.uint16le = uint16le;
173
+ exports.uint24be = uint24be;
174
+ exports.uint24le = uint24le;
175
+ exports.uint32be = uint32be;
176
+ exports.uint32le = uint32le;
177
+ exports.uint64be = uint64be;
178
+ exports.uint64le = uint64le;
179
+ exports.uint8 = uint8;
180
+ exports.uintbe = uintbe;
181
+ exports.uintle = uintle;
@@ -0,0 +1,27 @@
1
+ import { ISyncReadable } from '../types.js';
2
+ export declare function uint8(readable: ISyncReadable): number;
3
+ export declare function int8(readable: ISyncReadable | Uint8Array): number;
4
+ export declare function uint16le(readable: ISyncReadable | Uint8Array): number;
5
+ export declare function uint16be(readable: ISyncReadable | Uint8Array): number;
6
+ export declare function uint24le(readable: ISyncReadable | Uint8Array): number;
7
+ export declare function uint24be(readable: ISyncReadable | Uint8Array): number;
8
+ export declare function uint32le(readable: ISyncReadable | Uint8Array): number;
9
+ export declare function uint32be(readable: ISyncReadable | Uint8Array): number;
10
+ export declare function uint64le(readable: ISyncReadable | Uint8Array): bigint;
11
+ export declare function uint64be(readable: ISyncReadable | Uint8Array): bigint;
12
+ export declare function int16le(readable: ISyncReadable | Uint8Array): number;
13
+ export declare function int16be(readable: ISyncReadable | Uint8Array): number;
14
+ export declare function int24le(readable: ISyncReadable | Uint8Array): number;
15
+ export declare function int24be(readable: ISyncReadable | Uint8Array): number;
16
+ export declare function int32le(readable: ISyncReadable | Uint8Array): number;
17
+ export declare function int32be(readable: ISyncReadable | Uint8Array): number;
18
+ export declare function int64le(readable: ISyncReadable | Uint8Array): bigint;
19
+ export declare function int64be(readable: ISyncReadable | Uint8Array): bigint;
20
+ export declare function uintle(readable: ISyncReadable | Uint8Array, size: number): bigint;
21
+ export declare function uintbe(readable: ISyncReadable | Uint8Array, size: number): bigint;
22
+ export declare function intbe(readable: ISyncReadable | Uint8Array, size: number): bigint;
23
+ export declare function intle(readable: ISyncReadable | Uint8Array, size: number): bigint;
24
+ export declare function float32le(readable: ISyncReadable | Uint8Array): number;
25
+ export declare function float32be(readable: ISyncReadable | Uint8Array): number;
26
+ export declare function float64le(readable: ISyncReadable | Uint8Array): number;
27
+ export declare function float64be(readable: ISyncReadable | Uint8Array): number;