@interopio/bridge 0.0.1-alpha → 0.0.3-beta

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 (84) hide show
  1. package/bin/bridge.js +1 -1
  2. package/dist/main.js +2139 -0
  3. package/dist/main.js.map +7 -0
  4. package/package.json +9 -6
  5. package/gen/instance/GeneratedBuildInfo.ts +0 -4
  6. package/src/cluster/Address.ts +0 -57
  7. package/src/cluster/Cluster.ts +0 -13
  8. package/src/cluster/Endpoint.ts +0 -5
  9. package/src/cluster/Member.ts +0 -9
  10. package/src/cluster/MembershipListener.ts +0 -6
  11. package/src/config/Config.ts +0 -100
  12. package/src/config/DiscoveryConfig.ts +0 -21
  13. package/src/config/Duration.ts +0 -168
  14. package/src/config/KubernetesConfig.ts +0 -7
  15. package/src/config/NamedDiscoveryConfig.ts +0 -17
  16. package/src/config/Properties.ts +0 -49
  17. package/src/config/index.ts +0 -1
  18. package/src/discovery/SimpleDiscoveryNode.ts +0 -14
  19. package/src/discovery/index.ts +0 -207
  20. package/src/discovery/multicast/MulticastDiscoveryStrategy.ts +0 -141
  21. package/src/discovery/multicast/MulticastDiscoveryStrategyFactory.ts +0 -30
  22. package/src/discovery/multicast/MulticastProperties.ts +0 -4
  23. package/src/discovery/settings.ts +0 -37
  24. package/src/error/RequestFailure.ts +0 -48
  25. package/src/gossip/ApplicationState.ts +0 -48
  26. package/src/gossip/EndpointState.ts +0 -141
  27. package/src/gossip/FailureDetector.ts +0 -235
  28. package/src/gossip/Gossiper.ts +0 -1133
  29. package/src/gossip/HeartbeatState.ts +0 -66
  30. package/src/gossip/Messenger.ts +0 -130
  31. package/src/gossip/VersionedValue.ts +0 -59
  32. package/src/index.ts +0 -3
  33. package/src/instance/AddressPicker.ts +0 -245
  34. package/src/instance/BridgeNode.ts +0 -141
  35. package/src/instance/ClusterTopologyIntentTracker.ts +0 -4
  36. package/src/io/VersionedSerializer.ts +0 -230
  37. package/src/io/util.ts +0 -117
  38. package/src/kubernetes/DnsEndpointResolver.ts +0 -70
  39. package/src/kubernetes/KubernetesApiEndpointResolver.ts +0 -111
  40. package/src/kubernetes/KubernetesApiProvider.ts +0 -75
  41. package/src/kubernetes/KubernetesClient.ts +0 -264
  42. package/src/kubernetes/KubernetesConfig.ts +0 -130
  43. package/src/kubernetes/KubernetesDiscoveryStrategy.ts +0 -30
  44. package/src/kubernetes/KubernetesDiscoveryStrategyFactory.ts +0 -71
  45. package/src/kubernetes/KubernetesEndpointResolver.ts +0 -43
  46. package/src/kubernetes/KubernetesProperties.ts +0 -22
  47. package/src/license/BridgeLicenseValidator.ts +0 -19
  48. package/src/license/LicenseValidator.ts +0 -114
  49. package/src/license/types.ts +0 -40
  50. package/src/logging.ts +0 -22
  51. package/src/main.mts +0 -53
  52. package/src/net/Action.ts +0 -143
  53. package/src/net/AddressSerializer.ts +0 -44
  54. package/src/net/ByteBufferAllocator.ts +0 -27
  55. package/src/net/FrameDecoder.ts +0 -314
  56. package/src/net/FrameEncoder.ts +0 -138
  57. package/src/net/HandshakeProtocol.ts +0 -143
  58. package/src/net/InboundConnection.ts +0 -108
  59. package/src/net/InboundConnectionInitiator.ts +0 -150
  60. package/src/net/InboundMessageHandler.ts +0 -377
  61. package/src/net/InboundSink.ts +0 -38
  62. package/src/net/Message.ts +0 -428
  63. package/src/net/OutboundConnection.ts +0 -1141
  64. package/src/net/OutboundConnectionInitiator.ts +0 -76
  65. package/src/net/RequestCallbacks.ts +0 -148
  66. package/src/net/ResponseHandler.ts +0 -30
  67. package/src/net/ShareableBytes.ts +0 -125
  68. package/src/net/internal/AsyncResourceExecutor.ts +0 -464
  69. package/src/net/internal/AsyncSocketPromise.ts +0 -37
  70. package/src/net/internal/channel/ChannelHandlerAdapter.ts +0 -99
  71. package/src/net/internal/channel/types.ts +0 -188
  72. package/src/utils/bigint.ts +0 -23
  73. package/src/utils/buffer.ts +0 -434
  74. package/src/utils/clock.ts +0 -148
  75. package/src/utils/collections.ts +0 -283
  76. package/src/utils/crc.ts +0 -39
  77. package/src/utils/internal/IpAddressUtil.ts +0 -161
  78. package/src/utils/memory/BufferPools.ts +0 -40
  79. package/src/utils/network.ts +0 -130
  80. package/src/utils/promise.ts +0 -38
  81. package/src/utils/uuid.ts +0 -5
  82. package/src/utils/vint.ts +0 -238
  83. package/src/version/MemberVersion.ts +0 -42
  84. package/src/version/Version.ts +0 -12
@@ -1,188 +0,0 @@
1
- import type {Address} from '../../../cluster/Address.ts';
2
- import {type EventExecutor, type EventExecutorGroup} from '../AsyncResourceExecutor.ts';
3
-
4
- export interface SocketAddress {}
5
-
6
- export type InetSocketAddress = SocketAddress & Address;
7
-
8
- export interface ChannelOutboundInvoker {
9
- bind(localAddress: SocketAddress): Promise<void>
10
- connect(remoteAddress: SocketAddress, localAddress?: SocketAddress): Promise<void>
11
- disconnect(): Promise<void>
12
- close(error?: Error): Promise<void>
13
- deregister(): Promise<void>
14
- write(message: unknown): Promise<void>
15
- flush(): this
16
- writeAndFlush(message: unknown): Promise<void>
17
- read(): this
18
- newPromise(): ChannelPromise<void>
19
- }
20
-
21
- interface ChannelInboundInvoker {
22
- fireChannelRegistered(): this;
23
- fireChannelUnregistered(): this;
24
- fireChannelActive(): this;
25
- fireChannelInactive(): this;
26
- fireErrorCaught(error: Error): this;
27
- fireChannelRead(data: unknown): this;
28
- fireChannelReadComplete(): this;
29
- fireChannelWritabilityChanged(): this;
30
- }
31
-
32
- export interface EventLoopGroup extends EventExecutorGroup {
33
- next(): EventLoop
34
- register(channel: Channel): Promise<void>;
35
- }
36
-
37
- export interface EventLoop extends EventExecutor, EventLoopGroup {
38
- next(): EventLoop
39
- readonly ordered: true
40
- }
41
-
42
- export interface ChannelConfig {
43
- autoRead: boolean
44
- messageSizeEstimator: MessageSizeEstimator
45
- writeBufferHighWaterMark: number
46
- writeBufferLowWaterMark: number
47
- }
48
-
49
- export interface MessageSizeEstimator {
50
- newHandle(): MessageSizeEstimatorHandle
51
- }
52
- export interface MessageSizeEstimatorHandle {
53
- size(message: unknown): number
54
- }
55
-
56
- export interface ChannelMetadata {
57
- readonly hasDisconnect: boolean
58
- }
59
-
60
- export interface Channel extends ChannelOutboundInvoker {
61
- readonly id: string
62
- readonly eventLoop: EventLoop
63
- readonly parent?: Channel
64
- readonly config: ChannelConfig
65
- readonly metadata: ChannelMetadata
66
- isOpen(): boolean
67
- isRegistered(): boolean
68
- readonly localAddress: SocketAddress
69
- readonly remoteAddress: SocketAddress
70
- readonly closePromise: Promise<void>
71
-
72
- readonly unsafe: Unsafe
73
- readonly pipeline: ChannelPipeline
74
- }
75
-
76
- export interface Unsafe {
77
-
78
- readonly localAddress: SocketAddress
79
- readonly remoteAddress: SocketAddress
80
- register(eventLoop: EventLoop): Promise<void>
81
- deregister(promise: ChannelPromise<void>): void
82
- bind(localAddress: SocketAddress): Promise<void>
83
- connect(remoteAddress: SocketAddress, localAddress: SocketAddress): Promise<void>
84
- disconnect(promise: ChannelPromise<void>): void
85
- close(error: Error): Promise<void>
86
- closeForcibly(): void
87
- beginRead(): void
88
- write(message: unknown): Promise<void>
89
- flush(): void
90
- }
91
-
92
- export interface ServerChannel extends Channel {}
93
-
94
- export interface DuplexChannelConfig extends ChannelConfig {
95
- allowHalfOpen: boolean
96
- }
97
- export interface DuplexChannel extends Channel {}
98
-
99
- export interface ServerSocketChannelConfig extends ChannelConfig {
100
- backlog: number
101
- }
102
-
103
- export interface ServerSocketChannel extends ServerChannel {
104
- readonly config: ServerSocketChannelConfig
105
- readonly localAddress: InetSocketAddress
106
- readonly remoteAddress: InetSocketAddress
107
- }
108
-
109
- export interface SocketChannelConfig extends DuplexChannelConfig {
110
- noDelay?: boolean
111
- }
112
- export interface SocketChannel extends DuplexChannel {
113
- readonly parent: ServerSocketChannel
114
- readonly localAddress: InetSocketAddress
115
- readonly remoteAddress: InetSocketAddress
116
- }
117
- export interface DatagramChannel extends Channel {}
118
-
119
- export interface ChannelPipeline extends ChannelInboundInvoker, ChannelOutboundInvoker {
120
- readonly channel: Channel
121
-
122
- newPromise(): ChannelPromise<void>
123
-
124
- addFirst(handler: ChannelHandler): this
125
- addFirst(handler: ChannelHandler, name: string): this
126
- addBefore(base: string, handler: ChannelHandler): this
127
- addBefore(base: string, handler: ChannelHandler, name: string): this
128
- addAfter(base: string, handler: ChannelHandler): this
129
- addAfter(base: string, handler: ChannelHandler, name: string): this
130
- addLast(handler: ChannelHandler): this
131
- addLast(handler: ChannelHandler, name: string): this
132
- remove(name: string): this
133
- remove(handler: ChannelHandler): this
134
- }
135
-
136
- export interface ChannelHandlerContext extends ChannelInboundInvoker, ChannelOutboundInvoker {
137
- readonly channel: Channel
138
- readonly executor: EventExecutor
139
- readonly name: string
140
- readonly handler: ChannelHandler
141
- readonly pipeline: ChannelPipeline
142
- isRemoved(): boolean
143
- }
144
-
145
- export interface ChannelHandler {
146
- handlerAdded(ctx: ChannelHandlerContext): void
147
- handlerRemoved(ctx: ChannelHandlerContext): void
148
-
149
- }
150
-
151
- export interface ChannelInboundHandler extends ChannelHandler {
152
- channelRegistered(ctx: ChannelHandlerContext): void
153
- channelUnregistered(ctx: ChannelHandlerContext): void
154
- channelActive(ctx: ChannelHandlerContext): void
155
- channelInactive(ctx: ChannelHandlerContext): void
156
- channelRead(ctx: ChannelHandlerContext, data: unknown): void
157
- channelReadComplete(ctx: ChannelHandlerContext): void
158
- channelWritabilityChanged(ctx: ChannelHandlerContext): void
159
- errorCaught(ctx: ChannelHandlerContext, error: Error): void
160
- }
161
-
162
- export interface ChannelOutboundHandler extends ChannelHandler {
163
- onBind(ctx: ChannelHandlerContext, localAddress: SocketAddress): Promise<void>
164
- onConnect(ctx: ChannelHandlerContext, remoteAddress: SocketAddress, localAddress: SocketAddress): Promise<void>
165
- onDisconnect(ctx: ChannelHandlerContext): Promise<void>
166
- onClose(ctx: ChannelHandlerContext, error?: Error): Promise<void>
167
- onDeregister(ctx: ChannelHandlerContext): Promise<void>
168
- onWrite(ctx: ChannelHandlerContext, message: unknown): Promise<void>
169
- onFlush(ctx: ChannelHandlerContext): void;
170
- onRead(ctx: ChannelHandlerContext): void
171
- }
172
-
173
-
174
- export interface ChannelPromise<T> {
175
- readonly promise: Promise<T>
176
- readonly channel: Channel
177
- success(value: T): boolean
178
- failure(error: Error): boolean
179
- isSuccess(): boolean
180
- isDone(): boolean
181
- cancel(): boolean
182
-
183
- readonly reason: any | undefined
184
- addListener(listener: (promise: ChannelPromise<T>) => void): this
185
- sync(): Promise<this>
186
- }
187
-
188
-
@@ -1,23 +0,0 @@
1
- export function maxn(...values: bigint[]) {
2
- let max = values[0];
3
- for (let i = 1; i < values.length; i++) {
4
- if (values[i] > max) {
5
- max = values[i];
6
- }
7
- }
8
- return max;
9
- }
10
-
11
- export function minn(...values: bigint[]) {
12
- let min = values[0];
13
- for (let i = 1; i < values.length; i++) {
14
- if (values[i] < min) {
15
- min = values[i];
16
- }
17
- }
18
- return min;
19
- }
20
-
21
- export function absn(n: bigint) {
22
- return n < 0n ? -n : n;
23
- }
@@ -1,434 +0,0 @@
1
- export interface ByteBuffer /*extends DataView*/ {
2
- readonly remaining: number;
3
- readonly hasRemaining: boolean;
4
- readonly capacity: number;
5
-
6
- mark(): this;
7
- reset(): this;
8
- clear(): this;
9
- flip(): this;
10
- duplicate(): this;
11
- position: number;
12
- limit: number;
13
-
14
- order: 'little-endian' | 'big-endian';
15
-
16
- // unsigned byte
17
- getUint8(): number;
18
- setUint8(value: number): this;
19
- getUint8(offset: number): number;
20
- setUint8(value: number, offset: number): this;
21
-
22
- // singed byte
23
- getInt8(): number
24
- setInt8(value: number): this;
25
- getInt8(offset: number): number
26
- setInt8(offset: number, value: number): this;
27
-
28
- // signed short
29
- getInt16(): number;
30
- setInt16(value: number): this;
31
- getInt16(offset: number): number;
32
- setInt16(offset: number, value: number): this;
33
-
34
- // unsigned short
35
- getUint16(): number;
36
- setUint16(value: number): this;
37
- getUint16(offset: number): number;
38
- setUint16(offset: number, value: number): this;
39
-
40
- // signed int
41
- getInt32(): number;
42
- setInt32(value: number): this;
43
- getInt32(offset: number): number;
44
- setInt32(offset: number, value: number): this;
45
-
46
- // unsigned int
47
- getUint32(): number;
48
- setUint32(value: number): this;
49
- getUint32(offset: number): number;
50
- setUint32(offset: number, value: number): this;
51
-
52
- // signed long
53
- getBigInt64(): bigint;
54
- setBigInt64(value: bigint): this;
55
- getBigInt64(offset: number): bigint;
56
- setBigInt64(offset: number, value: bigint): this;
57
-
58
- // byte array
59
- getUint8Array(value: Uint8Array): this;
60
- setUint8Array(value: Uint8Array): this;
61
- getUint8Array(value: Uint8Array, offset: number, length: number): this;
62
- setUint8Array(value: Uint8Array, offset: number, length: number): this;
63
-
64
- setByteBuffer(value: ByteBuffer): this;
65
-
66
- }
67
-
68
- abstract class BaseBuffer {
69
- private _mark = -1;
70
- private _position = 0;
71
- private _limit: number;
72
- private _capacity: number;
73
-
74
- /*protected*/ constructor(mark: number, pos: number, lim: number, cap: number) {
75
- if (cap < 0) {
76
- throw new Error(`capacity must not be negative (${cap} < 0)`);
77
- }
78
- this._capacity = cap;
79
- this.limit = lim;
80
- this.position = pos;
81
- if (mark >= 0) {
82
- if (mark > pos) {
83
- throw new Error(`mark > position (${mark} > ${pos})`);
84
- }
85
- this._mark = mark;
86
- }
87
- }
88
-
89
- get capacity(): number {
90
- return this._capacity;
91
- }
92
-
93
- get position(): number {
94
- return this._position;
95
- }
96
-
97
- set position(value: number) {
98
- if (value < 0 || value > this._limit) {
99
- throw new Error(`invalid position ${value} (limit: ${this._limit})`);
100
- }
101
- if (this._mark > value) {
102
- this._mark = -1;
103
- }
104
- this._position = value;
105
- }
106
-
107
- get limit(): number {
108
- return this._limit;
109
- }
110
-
111
- set limit(value: number) {
112
- if (value < 0 || value > this._capacity) {
113
- throw new Error(`invalid limit ${value} (capacity: ${this._capacity})`);
114
- }
115
- this._limit = value;
116
- if (this._position > value) {
117
- this._position = value;
118
- }
119
- if (this._mark > value) {
120
- this._mark = -1;
121
- }
122
- }
123
-
124
- mark(): this {
125
- this._mark = this._position;
126
- return this;
127
- }
128
- reset(): this {
129
- const m = this._mark;
130
- if (m < 0) {
131
- throw new Error('invalid mark');
132
- }
133
- this._position = m;
134
- return this;
135
- }
136
-
137
- clear(): this {
138
- this._position = 0;
139
- this._limit = this._capacity;
140
- this._mark = -1;
141
- return this;
142
- }
143
-
144
- flip(): this {
145
- this._limit = this._position;
146
- this._position = 0;
147
- this._mark = -1;
148
- return this;
149
- }
150
-
151
- rewind(): this {
152
- this._position = 0;
153
- this._mark = -1;
154
- return this;
155
- }
156
-
157
- get remaining(): number {
158
- const rem = this._limit - this._position;
159
- return rem > 0 ? rem : 0;
160
- }
161
-
162
- get hasRemaining(): boolean {
163
- return this._position < this._limit;
164
- }
165
-
166
- private truncate(): void {
167
- this._mark = -1;
168
- this._position = 0;
169
- this._limit = 0;
170
- this._capacity = 0;
171
- }
172
-
173
- protected nextGetByteOffset(numberOfBytes = 1): number {
174
- const p = this.position;
175
- if (this._limit - p < numberOfBytes) {
176
- throw new Error('Buffer underflow');
177
- }
178
- this._position = p + numberOfBytes;
179
- return p;
180
- }
181
-
182
- protected nextSetByteOffset(numberOfBytes = 1): number {
183
- const p = this.position;
184
- if (this._limit - p < numberOfBytes) {
185
- throw new Error('Buffer overflow');
186
- }
187
- this._position = p + numberOfBytes;
188
- return p;
189
- }
190
-
191
- protected checkByteOffset(byteOffset: number, numberOfBytes = 1): number {
192
- if (byteOffset < 0 || numberOfBytes > this._limit - byteOffset) {
193
- throw new Error(`byteOffset ${byteOffset} for ${numberOfBytes} bytes out of bounds: (limits ${this._limit})`);
194
- }
195
- return byteOffset;
196
- }
197
- }
198
-
199
-
200
- export function allocate(capacity: number) {
201
- return new ArrayByteBuffer(capacity, capacity);
202
- }
203
-
204
- export function wrap(view: DataView<ArrayBuffer>) {
205
- return new ArrayByteBuffer(view.byteLength, view.byteLength - view.byteOffset, view);
206
- }
207
-
208
- function checkBounds(offset: number, length: number, size: number): void {
209
- if (offset < 0 || length < 0 || offset + length > size) {
210
- throw new Error(`index out of bounds: ${offset} + ${length} > ${size}`);
211
- }
212
- }
213
-
214
- class ArrayByteBuffer extends BaseBuffer implements ByteBuffer {
215
- private readonly _view: DataView<ArrayBuffer>;
216
- private _littleEndian?: boolean;
217
-
218
- constructor(cap: number, lim: number, view?: DataView<ArrayBuffer>) {
219
- super(-1, 0, lim, cap);
220
-
221
- this._view = view ?? new DataView(new ArrayBuffer(lim, { maxByteLength: cap }));
222
- }
223
-
224
- duplicate(): this {
225
- const dup = new ArrayByteBuffer(this.capacity, this.limit, this._view);
226
- dup.position = this.position;
227
- dup._littleEndian = this._littleEndian;
228
- return dup as this;
229
- }
230
-
231
-
232
- get order(): 'little-endian' | 'big-endian' {
233
- return this._littleEndian ? 'little-endian' : 'big-endian';
234
- }
235
-
236
- set order(value: 'little-endian' | 'big-endian') {
237
- this._littleEndian = value === 'little-endian';
238
- }
239
-
240
- // get buffer() {
241
- // return this._view.buffer;
242
- // }
243
- //
244
- // get byteLength(): number {
245
- // return this._view.byteLength;
246
- // }
247
- //
248
- // get byteOffset(): number {
249
- // return this._view.byteOffset;
250
- // }
251
-
252
- private index(byteOffset: number): number {
253
- return byteOffset + this._view.byteOffset;
254
- }
255
-
256
- getInt8(byteOffset?: number): number {
257
- byteOffset = byteOffset !== undefined ? super.checkByteOffset(byteOffset) : super.nextGetByteOffset();
258
- return this._view.getInt8(this.index(byteOffset));
259
- }
260
-
261
- setInt8(byteOffsetOrValue: number, value?: number): this {
262
- let byteOffset: number;
263
- if (value === undefined) {
264
- value = byteOffsetOrValue;
265
- byteOffset = super.nextSetByteOffset();
266
- }
267
- else {
268
- byteOffset = super.checkByteOffset(byteOffsetOrValue);
269
- }
270
- this._view.setInt8(this.index(byteOffset), value);
271
- return this;
272
- }
273
-
274
- getUint8(byteOffset?: number): number {
275
- byteOffset = byteOffset !== undefined ? super.checkByteOffset(byteOffset) : super.nextGetByteOffset();
276
- return this._view.getUint8(this.index(byteOffset));
277
- }
278
-
279
- setUint8(byteOffsetOrValue: number, value?: number): this {
280
- let byteOffset: number;
281
- if (value === undefined) {
282
- value = byteOffsetOrValue;
283
- byteOffset = super.nextSetByteOffset();
284
- }
285
- else {
286
- byteOffset = super.checkByteOffset(byteOffsetOrValue);
287
- }
288
- this._view.setUint8(this.index(byteOffset), value);
289
- return this;
290
- }
291
-
292
- getInt16(bytesOffset?: number): number {
293
- bytesOffset = bytesOffset !== undefined ? super.checkByteOffset(bytesOffset, 2) : super.nextGetByteOffset(2);
294
- return this._view.getInt16(this.index(bytesOffset), this._littleEndian);
295
- }
296
-
297
- setInt16(byteOffsetOrValue: number, value?: number): this {
298
- let byteOffset: number;
299
- if (value === undefined) {
300
- value = byteOffsetOrValue;
301
- byteOffset = super.nextSetByteOffset(2);
302
- }
303
- else {
304
- byteOffset = super.checkByteOffset(byteOffsetOrValue, 2);
305
- }
306
- this._view.setInt16(this.index(byteOffset), value, this._littleEndian);
307
- return this;
308
- }
309
-
310
- getUint16(bytesOffset?: number): number {
311
- bytesOffset = bytesOffset !== undefined ? super.checkByteOffset(bytesOffset, 2) : super.nextGetByteOffset(2);
312
- return this._view.getUint16(this.index(bytesOffset), this._littleEndian);
313
- }
314
-
315
- setUint16(byteOffsetOrValue: number, value?: number): this {
316
- let byteOffset: number;
317
- if (value === undefined) {
318
- value = byteOffsetOrValue;
319
- byteOffset = super.nextSetByteOffset(2);
320
- }
321
- else {
322
- byteOffset = super.checkByteOffset(byteOffsetOrValue, 2);
323
- }
324
- this._view.setUint16(this.index(byteOffset), value, this._littleEndian);
325
- return this;
326
- }
327
-
328
- getInt32(byteOffset?: number): number {
329
- byteOffset = byteOffset !== undefined ? super.checkByteOffset(byteOffset, 4) : super.nextGetByteOffset(4);
330
- return this._view.getInt32(this.index(byteOffset), this._littleEndian);
331
- }
332
-
333
- setInt32(byteOffsetOrValue: number, value?: number): this {
334
- let byteOffset: number;
335
- if (value === undefined) {
336
- value = byteOffsetOrValue;
337
- byteOffset = super.nextSetByteOffset(4);
338
- }
339
- else {
340
- byteOffset = super.checkByteOffset(byteOffsetOrValue, 4);
341
- }
342
- this._view.setInt32(this.index(byteOffset), value, this._littleEndian);
343
- return this;
344
- }
345
-
346
- getUint32(byteOffset?: number): number {
347
- byteOffset = byteOffset !== undefined ? super.checkByteOffset(byteOffset, 4) : super.nextGetByteOffset(4);
348
- return this._view.getUint32(this.index(byteOffset), this._littleEndian);
349
- }
350
-
351
- setUint32(byteOffsetOrValue: number, value?: number): this {
352
- let byteOffset: number;
353
- if (value === undefined) {
354
- value = byteOffsetOrValue;
355
- byteOffset = super.nextSetByteOffset(4);
356
- }
357
- else {
358
- byteOffset = super.checkByteOffset(byteOffsetOrValue, 4);
359
- }
360
- this._view.setUint32(this.index(byteOffset), value, this._littleEndian);
361
- return this;
362
- }
363
-
364
- getBigInt64(byteOffset?: number): bigint {
365
- byteOffset = byteOffset !== undefined ? super.checkByteOffset(byteOffset, 8) : super.nextGetByteOffset(8);
366
- return this._view.getBigInt64(this.index(byteOffset), this._littleEndian);
367
- }
368
-
369
- setBigInt64(byteOffsetOrValue: bigint | number, value?: bigint): this {
370
- let byteOffset: number;
371
- if (value === undefined) {
372
- value = typeof byteOffsetOrValue === 'bigint' ? byteOffsetOrValue : BigInt(byteOffsetOrValue);
373
- byteOffset = super.nextSetByteOffset(8);
374
- }
375
- else {
376
- byteOffset = super.checkByteOffset(typeof byteOffsetOrValue === 'number' ? byteOffsetOrValue : Number(byteOffsetOrValue), 8);
377
- }
378
- this._view.setBigInt64(this.index(byteOffset), value);
379
- return this;
380
- }
381
-
382
- getUint8Array(value: Uint8Array, offset: number = 0, length?: number): this {
383
- length ??= value.length - offset;
384
- checkBounds(offset, length, value.length);
385
- if (length > this.remaining) {
386
- throw new Error(`Buffer underflow`);
387
- }
388
- const end = offset + length;
389
- for (let i = offset; i < end; i++) {
390
- value[i] = this.getUint8();
391
- }
392
- return this;
393
- }
394
-
395
- setUint8Array(value: Uint8Array, offset: number = 0, length?: number): this {
396
- length ??= value.length - offset;
397
- checkBounds(offset, length, value.length);
398
- if (length > this.remaining) {
399
- throw new Error(`Buffer overflow`);
400
- }
401
- const end = offset + length;
402
- for (let i = offset; i < end; i++) {
403
- this.setUint8(value[i]);
404
- }
405
- return this;
406
- }
407
-
408
- setByteBuffer(value: ByteBuffer): this {
409
- if (value === this) {
410
- throw new Error('cannot set self');
411
- }
412
- const pos = this.position;
413
- const sbpos = value.position;
414
- const n = value.limit - sbpos;
415
- if (n > this.limit - pos) {
416
- throw new Error(`buffer underflow: ${n} > ${this.limit - pos}`);
417
- }
418
- let array: Uint8Array;
419
- if (value instanceof ArrayByteBuffer) {
420
- const byteOffset = value.nextGetByteOffset(n);
421
- array = new Uint8Array(value._view.buffer, byteOffset, n);
422
- }
423
- else {
424
- array = new Uint8Array(n);
425
- value.getUint8Array(array);
426
- }
427
- this.setUint8Array(array);
428
- return this;
429
- }
430
- }
431
-
432
- export function adopt(data: Buffer<ArrayBufferLike>) {
433
- return wrap(new DataView<ArrayBuffer>(data.buffer as ArrayBuffer, data.byteOffset, data.byteLength));
434
- }