rivetkit 2.3.7 → 2.3.9
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/dist/browser/client.d.ts +34 -6
- package/dist/browser/client.js +33 -14
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +1 -1
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/tsup/agent-os/index.cjs +1 -1
- package/dist/tsup/agent-os/index.cjs.map +1 -1
- package/dist/tsup/agent-os/index.d.cts +34 -6
- package/dist/tsup/agent-os/index.d.ts +34 -6
- package/dist/tsup/agent-os/index.js +1 -1
- package/dist/tsup/agent-os/index.js.map +1 -1
- package/dist/tsup/{chunk-46AE7JOI.cjs → chunk-3IDKUXQT.cjs} +173 -152
- package/dist/tsup/chunk-3IDKUXQT.cjs.map +1 -0
- package/dist/tsup/{chunk-DOPH7DT2.cjs → chunk-AVUMOGUE.cjs} +7 -7
- package/dist/tsup/{chunk-DOPH7DT2.cjs.map → chunk-AVUMOGUE.cjs.map} +1 -1
- package/dist/tsup/{chunk-7YQJXWBW.js → chunk-BQU4XTKM.js} +3 -3
- package/dist/tsup/{chunk-6D2WRHJV.js → chunk-CQ23UFQ4.js} +2 -2
- package/dist/tsup/{chunk-UIZZCJ5W.cjs → chunk-GZ5DYSIR.cjs} +4 -4
- package/dist/tsup/{chunk-UIZZCJ5W.cjs.map → chunk-GZ5DYSIR.cjs.map} +1 -1
- package/dist/tsup/{chunk-TQHMPWL6.cjs → chunk-KPP2YRS5.cjs} +9 -9
- package/dist/tsup/{chunk-TQHMPWL6.cjs.map → chunk-KPP2YRS5.cjs.map} +1 -1
- package/dist/tsup/{chunk-CH25U5NO.js → chunk-KVKWTOW7.js} +3 -3
- package/dist/tsup/{chunk-2SGPZEAJ.cjs → chunk-M4R2O5NJ.cjs} +6 -3
- package/dist/tsup/chunk-M4R2O5NJ.cjs.map +1 -0
- package/dist/tsup/{chunk-YU3C5OCU.js → chunk-MQDQ3A72.js} +39 -18
- package/dist/tsup/chunk-MQDQ3A72.js.map +1 -0
- package/dist/tsup/{chunk-MNZFNIVI.cjs → chunk-S57DMBTM.cjs} +3 -3
- package/dist/tsup/{chunk-MNZFNIVI.cjs.map → chunk-S57DMBTM.cjs.map} +1 -1
- package/dist/tsup/{chunk-OG4OR2CM.js → chunk-UBYPRYJR.js} +6 -3
- package/dist/tsup/chunk-UBYPRYJR.js.map +1 -0
- package/dist/tsup/{chunk-YHPFCYL3.js → chunk-X25YYVFL.js} +2 -2
- package/dist/tsup/client/mod.cjs +5 -5
- package/dist/tsup/client/mod.d.cts +2 -2
- package/dist/tsup/client/mod.d.ts +2 -2
- package/dist/tsup/client/mod.js +4 -4
- package/dist/tsup/common/log.cjs +2 -2
- package/dist/tsup/common/log.js +1 -1
- package/dist/tsup/common/websocket.cjs +3 -3
- package/dist/tsup/common/websocket.js +2 -2
- package/dist/tsup/{config-BRpVbJCD.d.ts → config-CUymbyM6.d.ts} +35 -7
- package/dist/tsup/{config-BobvQpex.d.cts → config-CpB-e4I9.d.cts} +35 -7
- package/dist/tsup/{context-Cj-DFyiy.d.ts → context-YBUBTwTS.d.ts} +1 -1
- package/dist/tsup/{context-YEBNJrws.d.cts → context-c-6G4mjk.d.cts} +1 -1
- package/dist/tsup/db/drizzle.cjs +2 -2
- package/dist/tsup/db/drizzle.js +1 -1
- package/dist/tsup/db/mod.cjs +2 -2
- package/dist/tsup/db/mod.js +1 -1
- package/dist/tsup/dynamic/mod.d.cts +1 -1
- package/dist/tsup/dynamic/mod.d.ts +1 -1
- package/dist/tsup/inspector/mod.cjs +4 -4
- package/dist/tsup/inspector/mod.js +3 -3
- package/dist/tsup/inspector-tab/mod.d.cts +2 -2
- package/dist/tsup/inspector-tab/mod.d.ts +2 -2
- package/dist/tsup/mod.cjs +449 -124
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +3 -3
- package/dist/tsup/mod.d.ts +3 -3
- package/dist/tsup/mod.js +388 -63
- package/dist/tsup/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +6 -6
- package/dist/tsup/test/mod.d.cts +1 -1
- package/dist/tsup/test/mod.d.ts +1 -1
- package/dist/tsup/test/mod.js +4 -4
- package/dist/tsup/utils.cjs +2 -2
- package/dist/tsup/utils.js +1 -1
- package/dist/tsup/workflow/mod.cjs +6 -6
- package/dist/tsup/workflow/mod.d.cts +3 -3
- package/dist/tsup/workflow/mod.d.ts +3 -3
- package/dist/tsup/workflow/mod.js +3 -3
- package/package.json +8 -8
- package/src/client/actor-handle.ts +3 -1
- package/src/client/raw-utils.ts +11 -2
- package/src/common/actor-router-consts.ts +1 -0
- package/src/common/encoding.ts +4 -1
- package/src/common/fetch-like.ts +49 -0
- package/src/engine-client/actor-http-client.ts +6 -22
- package/src/registry/index.ts +159 -14
- package/src/registry/napi-runtime.ts +74 -0
- package/src/registry/native-http.ts +208 -0
- package/src/registry/native.ts +111 -63
- package/src/registry/runtime.ts +35 -0
- package/src/registry/wasm-runtime.ts +11 -0
- package/dist/tsup/chunk-2SGPZEAJ.cjs.map +0 -1
- package/dist/tsup/chunk-46AE7JOI.cjs.map +0 -1
- package/dist/tsup/chunk-OG4OR2CM.js.map +0 -1
- package/dist/tsup/chunk-YU3C5OCU.js.map +0 -1
- /package/dist/tsup/{chunk-7YQJXWBW.js.map → chunk-BQU4XTKM.js.map} +0 -0
- /package/dist/tsup/{chunk-6D2WRHJV.js.map → chunk-CQ23UFQ4.js.map} +0 -0
- /package/dist/tsup/{chunk-CH25U5NO.js.map → chunk-KVKWTOW7.js.map} +0 -0
- /package/dist/tsup/{chunk-YHPFCYL3.js.map → chunk-X25YYVFL.js.map} +0 -0
package/dist/browser/client.d.ts
CHANGED
|
@@ -1765,6 +1765,12 @@ interface RuntimeHttpRequest {
|
|
|
1765
1765
|
headers?: Record<string, string>;
|
|
1766
1766
|
body?: RuntimeBytes;
|
|
1767
1767
|
}
|
|
1768
|
+
interface RuntimeHttpResponseBodyStream {
|
|
1769
|
+
cancelled(): Promise<void>;
|
|
1770
|
+
write(chunk: Uint8Array): Promise<void>;
|
|
1771
|
+
end(): Promise<void>;
|
|
1772
|
+
error(message: string): Promise<void>;
|
|
1773
|
+
}
|
|
1768
1774
|
interface RuntimeStateDeltaPayload {
|
|
1769
1775
|
state?: RuntimeBytes;
|
|
1770
1776
|
connHibernation: Array<{
|
|
@@ -1987,6 +1993,7 @@ interface RuntimeListenerConfig {
|
|
|
1987
1993
|
port: number;
|
|
1988
1994
|
host?: string;
|
|
1989
1995
|
publicDir?: string;
|
|
1996
|
+
application?: RuntimeApplicationFetch;
|
|
1990
1997
|
}
|
|
1991
1998
|
interface RuntimeServerlessRequest {
|
|
1992
1999
|
method: string;
|
|
@@ -1994,6 +2001,19 @@ interface RuntimeServerlessRequest {
|
|
|
1994
2001
|
headers: Record<string, string>;
|
|
1995
2002
|
body: RuntimeBytes;
|
|
1996
2003
|
}
|
|
2004
|
+
interface RuntimeApplicationRequest extends RuntimeServerlessRequest {
|
|
2005
|
+
cancelToken?: CancellationTokenHandle;
|
|
2006
|
+
}
|
|
2007
|
+
interface RuntimeApplicationResponse {
|
|
2008
|
+
status: number;
|
|
2009
|
+
headers: Record<string, string>;
|
|
2010
|
+
body?: RuntimeBytes;
|
|
2011
|
+
stream?: boolean;
|
|
2012
|
+
}
|
|
2013
|
+
type RuntimeApplicationFetch = (request: RuntimeApplicationRequest, responseBodyStream?: RuntimeHttpResponseBodyStream) => Promise<RuntimeApplicationResponse>;
|
|
2014
|
+
interface RuntimeApplicationListenerConfig extends RuntimeListenerConfig {
|
|
2015
|
+
application: RuntimeApplicationFetch;
|
|
2016
|
+
}
|
|
1997
2017
|
interface RuntimeServerlessResponseHead {
|
|
1998
2018
|
status: number;
|
|
1999
2019
|
headers: Record<string, string>;
|
|
@@ -2036,6 +2056,7 @@ interface CoreRuntime {
|
|
|
2036
2056
|
registryActorStopThresholdMs?(registry: RegistryHandle): Promise<number | undefined>;
|
|
2037
2057
|
handleServerlessRequest(registry: RegistryHandle, req: RuntimeServerlessRequest, onStreamEvent: RuntimeServerlessStreamCallback, cancelToken: CancellationTokenHandle, config: RuntimeServeConfig): Promise<RuntimeServerlessResponseHead>;
|
|
2038
2058
|
serveListener(registry: RegistryHandle, listener: RuntimeListenerConfig, config: RuntimeServeConfig): Promise<void>;
|
|
2059
|
+
serveApplicationListener(registry: RegistryHandle, listener: RuntimeApplicationListenerConfig, config: RuntimeServeConfig): Promise<void>;
|
|
2039
2060
|
registryHealth?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
|
|
2040
2061
|
registryMetadata?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
|
|
2041
2062
|
registryMetrics?(registry: RegistryHandle): Promise<RuntimeRegistryRouteResponse>;
|
|
@@ -2146,6 +2167,15 @@ type FetchHandler = (request: Request, ...args: any) => Response | Promise<Respo
|
|
|
2146
2167
|
interface ServerlessHandler {
|
|
2147
2168
|
fetch: FetchHandler;
|
|
2148
2169
|
}
|
|
2170
|
+
interface RegistryApplication {
|
|
2171
|
+
fetch: FetchHandler;
|
|
2172
|
+
}
|
|
2173
|
+
interface RegistryListenOptions {
|
|
2174
|
+
port?: number;
|
|
2175
|
+
host?: string;
|
|
2176
|
+
publicDir?: string;
|
|
2177
|
+
application?: RegistryApplication;
|
|
2178
|
+
}
|
|
2149
2179
|
interface RegistryRoutes {
|
|
2150
2180
|
health(): Promise<Response>;
|
|
2151
2181
|
metadata(): Promise<Response>;
|
|
@@ -2195,18 +2225,16 @@ declare class Registry<A extends RegistryActors> {
|
|
|
2195
2225
|
* @param opts.host Address to bind. Defaults to `0.0.0.0`.
|
|
2196
2226
|
* @param opts.publicDir If set, serves static files from this directory
|
|
2197
2227
|
* as a fallback below the framework routes.
|
|
2228
|
+
* @param opts.application If set, handles requests that do not match a
|
|
2229
|
+
* framework route.
|
|
2198
2230
|
*
|
|
2199
2231
|
* @example
|
|
2200
2232
|
* ```ts
|
|
2201
2233
|
* await registry.listen();
|
|
2202
|
-
* await registry.listen({
|
|
2234
|
+
* await registry.listen({ application: app });
|
|
2203
2235
|
* ```
|
|
2204
2236
|
*/
|
|
2205
|
-
listen(opts?:
|
|
2206
|
-
port?: number;
|
|
2207
|
-
host?: string;
|
|
2208
|
-
publicDir?: string;
|
|
2209
|
-
}): Promise<void>;
|
|
2237
|
+
listen(opts?: RegistryListenOptions): Promise<void>;
|
|
2210
2238
|
/**
|
|
2211
2239
|
* Gracefully drains all live registries.
|
|
2212
2240
|
*
|
package/dist/browser/client.js
CHANGED
|
@@ -194,7 +194,7 @@ function noopNext() {
|
|
|
194
194
|
// package.json
|
|
195
195
|
var package_default = {
|
|
196
196
|
name: "rivetkit",
|
|
197
|
-
version: "2.3.
|
|
197
|
+
version: "2.3.9",
|
|
198
198
|
description: "Lightweight libraries for building stateful actors on edge platforms",
|
|
199
199
|
license: "Apache-2.0",
|
|
200
200
|
keywords: [
|
|
@@ -729,7 +729,10 @@ function jsonStringifyCompat(input, space) {
|
|
|
729
729
|
return [JSON_COMPAT_BIGINT, value.toString()];
|
|
730
730
|
}
|
|
731
731
|
if (value instanceof ArrayBuffer) {
|
|
732
|
-
return [
|
|
732
|
+
return [
|
|
733
|
+
JSON_COMPAT_ARRAY_BUFFER,
|
|
734
|
+
base64EncodeArrayBuffer(value)
|
|
735
|
+
];
|
|
733
736
|
}
|
|
734
737
|
if (value instanceof Uint8Array) {
|
|
735
738
|
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];
|
|
@@ -1109,6 +1112,7 @@ var PATH_WEBSOCKET_BASE = "/websocket";
|
|
|
1109
1112
|
var PATH_WEBSOCKET_PREFIX = "/websocket/";
|
|
1110
1113
|
var HEADER_ENCODING = "x-rivet-encoding";
|
|
1111
1114
|
var HEADER_CONN_PARAMS = "x-rivet-conn-params";
|
|
1115
|
+
var HEADER_ORIGINAL_REQUEST_URL = "x-rivet-internal-original-request-url";
|
|
1112
1116
|
var HEADER_RIVET_TOKEN = "x-rivet-token";
|
|
1113
1117
|
var HEADER_RIVET_TARGET = "x-rivet-target";
|
|
1114
1118
|
var HEADER_RIVET_ACTOR = "x-rivet-actor";
|
|
@@ -1135,23 +1139,19 @@ async function sendHttpRequestToGateway(runConfig, gatewayUrl, actorRequest, opt
|
|
|
1135
1139
|
if (actorRequest.bodyUsed) {
|
|
1136
1140
|
throw new Error("Request body has already been consumed");
|
|
1137
1141
|
}
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
bodyToSend = reqBody;
|
|
1142
|
+
if (actorRequest.body) {
|
|
1143
|
+
bodyToSend = actorRequest.body;
|
|
1141
1144
|
guardHeaders.delete("transfer-encoding");
|
|
1142
1145
|
guardHeaders.delete("content-length");
|
|
1143
1146
|
}
|
|
1144
1147
|
}
|
|
1145
|
-
|
|
1148
|
+
return fetch(gatewayUrl, {
|
|
1146
1149
|
method: actorRequest.method,
|
|
1147
1150
|
headers: guardHeaders,
|
|
1148
1151
|
body: bodyToSend,
|
|
1149
|
-
signal: actorRequest.signal
|
|
1152
|
+
signal: actorRequest.signal,
|
|
1153
|
+
...bodyToSend ? { duplex: "half" } : {}
|
|
1150
1154
|
});
|
|
1151
|
-
return mutableResponse(await fetch(guardRequest));
|
|
1152
|
-
}
|
|
1153
|
-
function mutableResponse(fetchRes) {
|
|
1154
|
-
return new Response(fetchRes.body, fetchRes);
|
|
1155
1155
|
}
|
|
1156
1156
|
function buildGuardHeaders(runConfig, actorRequest, options) {
|
|
1157
1157
|
const headers = new Headers();
|
|
@@ -5824,6 +5824,17 @@ var ActorConnRaw = class {
|
|
|
5824
5824
|
}
|
|
5825
5825
|
};
|
|
5826
5826
|
|
|
5827
|
+
// src/common/fetch-like.ts
|
|
5828
|
+
function isUrlLike(value) {
|
|
5829
|
+
return typeof value === "object" && value !== null && typeof value.href === "string" && typeof value.pathname === "string" && typeof value.search === "string";
|
|
5830
|
+
}
|
|
5831
|
+
function isRequestLike(value) {
|
|
5832
|
+
return typeof value === "object" && value !== null && typeof value.url === "string" && typeof value.method === "string" && isHeadersLike(value.headers);
|
|
5833
|
+
}
|
|
5834
|
+
function isHeadersLike(value) {
|
|
5835
|
+
return typeof value === "object" && value !== null && typeof value.entries === "function";
|
|
5836
|
+
}
|
|
5837
|
+
|
|
5827
5838
|
// src/common/database/shared.ts
|
|
5828
5839
|
var MIGRATION_TRANSACTION_TIMEOUT_MS = 5 * 6e4;
|
|
5829
5840
|
var AsyncMutex = class {
|
|
@@ -5855,14 +5866,17 @@ var AsyncMutex = class {
|
|
|
5855
5866
|
// src/client/raw-utils.ts
|
|
5856
5867
|
async function rawHttpFetch(driver, target, params, input, init, options = {}) {
|
|
5857
5868
|
let path;
|
|
5869
|
+
let originalUrl;
|
|
5858
5870
|
let mergedInit = init || {};
|
|
5859
5871
|
if (typeof input === "string") {
|
|
5860
5872
|
path = input;
|
|
5861
|
-
} else if (input
|
|
5873
|
+
} else if (isUrlLike(input)) {
|
|
5862
5874
|
path = input.pathname + input.search;
|
|
5863
|
-
|
|
5875
|
+
originalUrl = input.toString();
|
|
5876
|
+
} else if (isRequestLike(input)) {
|
|
5864
5877
|
const url = new URL(input.url);
|
|
5865
5878
|
path = url.pathname + url.search;
|
|
5879
|
+
originalUrl = url.toString();
|
|
5866
5880
|
const requestHeaders = new Headers(input.headers);
|
|
5867
5881
|
const initHeaders = new Headers(init?.headers || {});
|
|
5868
5882
|
const mergedHeaders = new Headers(requestHeaders);
|
|
@@ -5904,6 +5918,10 @@ async function rawHttpFetch(driver, target, params, input, init, options = {}) {
|
|
|
5904
5918
|
const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
5905
5919
|
const url = new URL(`http://actor/request/${normalizedPath}`);
|
|
5906
5920
|
const proxyRequestHeaders = new Headers(mergedInit.headers);
|
|
5921
|
+
proxyRequestHeaders.delete(HEADER_ORIGINAL_REQUEST_URL);
|
|
5922
|
+
if (originalUrl) {
|
|
5923
|
+
proxyRequestHeaders.set(HEADER_ORIGINAL_REQUEST_URL, originalUrl);
|
|
5924
|
+
}
|
|
5907
5925
|
if (params) {
|
|
5908
5926
|
proxyRequestHeaders.set(HEADER_CONN_PARAMS, JSON.stringify(params));
|
|
5909
5927
|
}
|
|
@@ -6376,6 +6394,7 @@ var ActorHandleRaw = class {
|
|
|
6376
6394
|
async #fetchWithResolvedActor(input, init) {
|
|
6377
6395
|
const maxAttempts = this.#getDynamicQueryMaxAttempts();
|
|
6378
6396
|
let useQueryTarget = false;
|
|
6397
|
+
const retryableRequest = isRequestLike(input) ? input.clone() : void 0;
|
|
6379
6398
|
const { skipReadyWait, ...requestInit } = init ?? {};
|
|
6380
6399
|
const gatewayOptions = resolveActorGatewayOptions(
|
|
6381
6400
|
this.#gatewayOptions,
|
|
@@ -6395,7 +6414,7 @@ var ActorHandleRaw = class {
|
|
|
6395
6414
|
this.#driver,
|
|
6396
6415
|
target,
|
|
6397
6416
|
this.#params,
|
|
6398
|
-
input,
|
|
6417
|
+
retryableRequest ? retryableRequest.clone() : input,
|
|
6399
6418
|
requestInit,
|
|
6400
6419
|
gatewayOptions
|
|
6401
6420
|
);
|