@rivetkit/engine-runner 2.0.24-rc.1 → 2.0.25-rc.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/.turbo/turbo-build.log +10 -10
- package/dist/mod.cjs +1460 -812
- package/dist/mod.cjs.map +1 -1
- package/dist/mod.d.cts +263 -17
- package/dist/mod.d.ts +263 -17
- package/dist/mod.js +1454 -806
- package/dist/mod.js.map +1 -1
- package/package.json +2 -2
- package/src/actor.ts +196 -0
- package/src/mod.ts +409 -177
- package/src/stringify.ts +182 -12
- package/src/tunnel.ts +822 -428
- package/src/utils.ts +93 -0
- package/src/websocket-tunnel-adapter.ts +340 -357
- package/tests/utils.test.ts +194 -0
package/src/utils.ts
CHANGED
|
@@ -64,3 +64,96 @@ export function parseWebSocketCloseReason(
|
|
|
64
64
|
rayId,
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
+
|
|
68
|
+
const U16_MAX = 65535;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Wrapping greater than comparison for u16 values.
|
|
72
|
+
* Based on shared_state.rs wrapping_gt implementation.
|
|
73
|
+
*/
|
|
74
|
+
export function wrappingGtU16(a: number, b: number): boolean {
|
|
75
|
+
return a !== b && wrappingSub(a, b, U16_MAX) < U16_MAX / 2;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Wrapping less than comparison for u16 values.
|
|
80
|
+
* Based on shared_state.rs wrapping_lt implementation.
|
|
81
|
+
*/
|
|
82
|
+
export function wrappingLtU16(a: number, b: number): boolean {
|
|
83
|
+
return a !== b && wrappingSub(b, a, U16_MAX) < U16_MAX / 2;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Wrapping greater than or equal comparison for u16 values.
|
|
88
|
+
*/
|
|
89
|
+
export function wrappingGteU16(a: number, b: number): boolean {
|
|
90
|
+
return a === b || wrappingGtU16(a, b);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Wrapping less than or equal comparison for u16 values.
|
|
95
|
+
*/
|
|
96
|
+
export function wrappingLteU16(a: number, b: number): boolean {
|
|
97
|
+
return a === b || wrappingLtU16(a, b);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Performs wrapping addition for u16 values.
|
|
102
|
+
*/
|
|
103
|
+
export function wrappingAddU16(a: number, b: number): number {
|
|
104
|
+
return (a + b) % (U16_MAX + 1);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Performs wrapping subtraction for u16 values.
|
|
109
|
+
*/
|
|
110
|
+
export function wrappingSubU16(a: number, b: number): number {
|
|
111
|
+
return wrappingSub(a, b, U16_MAX);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Performs wrapping subtraction for unsigned integers.
|
|
116
|
+
*/
|
|
117
|
+
function wrappingSub(a: number, b: number, max: number): number {
|
|
118
|
+
const result = a - b;
|
|
119
|
+
if (result < 0) {
|
|
120
|
+
return result + max + 1;
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function arraysEqual(a: ArrayBuffer, b: ArrayBuffer): boolean {
|
|
126
|
+
const ua = new Uint8Array(a);
|
|
127
|
+
const ub = new Uint8Array(b);
|
|
128
|
+
if (ua.length !== ub.length) return false;
|
|
129
|
+
for (let i = 0; i < ua.length; i++) {
|
|
130
|
+
if (ua[i] !== ub[i]) return false;
|
|
131
|
+
}
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Polyfill for Promise.withResolvers().
|
|
137
|
+
*
|
|
138
|
+
* This is specifically for Cloudflare Workers. Their implementation of Promise.withResolvers does not work correctly.
|
|
139
|
+
*/
|
|
140
|
+
export function promiseWithResolvers<T>(): {
|
|
141
|
+
promise: Promise<T>;
|
|
142
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
143
|
+
reject: (reason?: any) => void;
|
|
144
|
+
} {
|
|
145
|
+
let resolve!: (value: T | PromiseLike<T>) => void;
|
|
146
|
+
let reject!: (reason?: any) => void;
|
|
147
|
+
const promise = new Promise<T>((res, rej) => {
|
|
148
|
+
resolve = res;
|
|
149
|
+
reject = rej;
|
|
150
|
+
});
|
|
151
|
+
return { promise, resolve, reject };
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export function idToStr(id: ArrayBuffer): string {
|
|
155
|
+
const bytes = new Uint8Array(id);
|
|
156
|
+
return Array.from(bytes)
|
|
157
|
+
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
158
|
+
.join("");
|
|
159
|
+
}
|