rivetkit 2.0.6 → 2.0.7
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/schemas/actor-persist/v1.ts +0 -6
- package/dist/tsup/actor-router-consts-B3Lu87yJ.d.cts +28 -0
- package/dist/tsup/actor-router-consts-B3Lu87yJ.d.ts +28 -0
- package/dist/tsup/{chunk-7OUKNSTU.js → chunk-2NL3KGJ7.js} +17 -14
- package/dist/tsup/chunk-2NL3KGJ7.js.map +1 -0
- package/dist/tsup/{chunk-6P6RA47N.cjs → chunk-3ALZ7EGX.cjs} +14 -10
- package/dist/tsup/chunk-3ALZ7EGX.cjs.map +1 -0
- package/dist/tsup/chunk-4EXJ4ITR.cjs +102 -0
- package/dist/tsup/chunk-4EXJ4ITR.cjs.map +1 -0
- package/dist/tsup/{chunk-ZYLTS2EM.js → chunk-54MAHBLL.js} +2 -2
- package/dist/tsup/{chunk-NTCUGYSD.cjs → chunk-7OOBMCQI.cjs} +34 -31
- package/dist/tsup/chunk-7OOBMCQI.cjs.map +1 -0
- package/dist/tsup/{chunk-VCEHU56K.js → chunk-B6N6VM37.js} +2 -2
- package/dist/tsup/{chunk-VPV4MWXR.js → chunk-DIHKN7NM.js} +3 -3
- package/dist/tsup/{chunk-MRRT2CZD.cjs → chunk-ETDWYT2P.cjs} +7 -7
- package/dist/tsup/{chunk-MRRT2CZD.cjs.map → chunk-ETDWYT2P.cjs.map} +1 -1
- package/dist/tsup/{chunk-TWGATZ3X.cjs → chunk-F7YL5G7Q.cjs} +922 -872
- package/dist/tsup/chunk-F7YL5G7Q.cjs.map +1 -0
- package/dist/tsup/{chunk-UTI5NCES.cjs → chunk-GWJTWY3G.cjs} +6 -6
- package/dist/tsup/{chunk-UTI5NCES.cjs.map → chunk-GWJTWY3G.cjs.map} +1 -1
- package/dist/tsup/{chunk-W6LN7AF5.js → chunk-KHRZPP5T.js} +866 -816
- package/dist/tsup/chunk-KHRZPP5T.js.map +1 -0
- package/dist/tsup/{chunk-5JBFVV4C.cjs → chunk-LXAVET4A.cjs} +21 -7
- package/dist/tsup/chunk-LXAVET4A.cjs.map +1 -0
- package/dist/tsup/{chunk-TCUI5JFE.cjs → chunk-NDCVQZBS.cjs} +45 -18
- package/dist/tsup/chunk-NDCVQZBS.cjs.map +1 -0
- package/dist/tsup/{chunk-4CKHQRXG.js → chunk-NII4KKHD.js} +515 -240
- package/dist/tsup/chunk-NII4KKHD.js.map +1 -0
- package/dist/tsup/{chunk-2K3JMDAN.js → chunk-NRELKXIX.js} +40 -13
- package/dist/tsup/chunk-NRELKXIX.js.map +1 -0
- package/dist/tsup/{chunk-UFWAK3X2.cjs → chunk-NUA6LOOJ.cjs} +660 -385
- package/dist/tsup/chunk-NUA6LOOJ.cjs.map +1 -0
- package/dist/tsup/{chunk-DIAYNQTE.cjs → chunk-OSK2VSJF.cjs} +12 -12
- package/dist/tsup/{chunk-DIAYNQTE.cjs.map → chunk-OSK2VSJF.cjs.map} +1 -1
- package/dist/tsup/chunk-PD6HCAJE.js +102 -0
- package/dist/tsup/chunk-PD6HCAJE.js.map +1 -0
- package/dist/tsup/{chunk-RGQR2J7S.js → chunk-RLBM6D4L.js} +20 -6
- package/dist/tsup/chunk-RLBM6D4L.js.map +1 -0
- package/dist/tsup/{chunk-KG3C7MKR.cjs → chunk-VAF63BEI.cjs} +3 -3
- package/dist/tsup/{chunk-KG3C7MKR.cjs.map → chunk-VAF63BEI.cjs.map} +1 -1
- package/dist/tsup/{chunk-G75SVQON.js → chunk-WAT5AE7S.js} +9 -5
- package/dist/tsup/chunk-WAT5AE7S.js.map +1 -0
- package/dist/tsup/{chunk-WC2PSJWN.js → chunk-YL4VZMMT.js} +2 -2
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +7 -8
- package/dist/tsup/client/mod.d.ts +7 -8
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +3 -3
- package/dist/tsup/common/log.js +2 -2
- package/dist/tsup/common/websocket.cjs +4 -4
- package/dist/tsup/common/websocket.js +3 -3
- package/dist/tsup/{connection-BLemxi4f.d.ts → conn-DCSQgIlw.d.ts} +1605 -1353
- package/dist/tsup/{connection-CpDIydXf.d.cts → conn-DdzHTm2E.d.cts} +1605 -1353
- package/dist/tsup/driver-helpers/mod.cjs +31 -5
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +7 -8
- package/dist/tsup/driver-helpers/mod.d.ts +7 -8
- package/dist/tsup/driver-helpers/mod.js +33 -7
- package/dist/tsup/driver-test-suite/mod.cjs +317 -222
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +7 -7
- package/dist/tsup/driver-test-suite/mod.d.ts +7 -7
- package/dist/tsup/driver-test-suite/mod.js +582 -487
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +16 -6
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +34 -7
- package/dist/tsup/inspector/mod.d.ts +34 -7
- package/dist/tsup/inspector/mod.js +17 -7
- package/dist/tsup/mod.cjs +10 -20
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +9 -7
- package/dist/tsup/mod.d.ts +9 -7
- package/dist/tsup/mod.js +9 -19
- package/dist/tsup/test/mod.cjs +11 -11
- package/dist/tsup/test/mod.d.cts +6 -7
- package/dist/tsup/test/mod.d.ts +6 -7
- package/dist/tsup/test/mod.js +10 -10
- package/dist/tsup/utils.cjs +4 -2
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +11 -1
- package/dist/tsup/utils.d.ts +11 -1
- package/dist/tsup/utils.js +3 -1
- package/package.json +8 -4
- package/src/actor/action.ts +1 -1
- package/src/actor/config.ts +1 -1
- package/src/actor/conn-drivers.ts +205 -0
- package/src/actor/conn-socket.ts +6 -0
- package/src/actor/{connection.ts → conn.ts} +78 -84
- package/src/actor/context.ts +1 -1
- package/src/actor/driver.ts +4 -43
- package/src/actor/instance.ts +162 -86
- package/src/actor/mod.ts +1 -11
- package/src/actor/persisted.ts +2 -5
- package/src/actor/protocol/old.ts +1 -1
- package/src/actor/router-endpoints.ts +142 -106
- package/src/actor/router.ts +81 -45
- package/src/actor/utils.ts +5 -1
- package/src/client/actor-conn.ts +154 -23
- package/src/client/client.ts +1 -1
- package/src/client/config.ts +7 -0
- package/src/common/actor-router-consts.ts +29 -8
- package/src/common/router.ts +2 -1
- package/src/common/versioned-data.ts +5 -5
- package/src/driver-helpers/mod.ts +14 -1
- package/src/driver-test-suite/mod.ts +11 -2
- package/src/driver-test-suite/test-inline-client-driver.ts +36 -18
- package/src/driver-test-suite/tests/actor-conn-state.ts +66 -22
- package/src/driver-test-suite/tests/actor-conn.ts +65 -126
- package/src/driver-test-suite/tests/actor-reconnect.ts +160 -0
- package/src/driver-test-suite/tests/actor-sleep.ts +0 -1
- package/src/driver-test-suite/tests/raw-websocket.ts +0 -35
- package/src/driver-test-suite/utils.ts +3 -3
- package/src/drivers/default.ts +8 -7
- package/src/drivers/engine/actor-driver.ts +53 -31
- package/src/drivers/engine/config.ts +4 -0
- package/src/drivers/file-system/actor.ts +0 -6
- package/src/drivers/file-system/global-state.ts +3 -14
- package/src/drivers/file-system/manager.ts +12 -8
- package/src/inspector/actor.ts +4 -3
- package/src/inspector/config.ts +10 -1
- package/src/inspector/mod.ts +1 -0
- package/src/inspector/utils.ts +23 -4
- package/src/manager/driver.ts +11 -1
- package/src/manager/gateway.ts +407 -0
- package/src/manager/router.ts +269 -468
- package/src/manager-api/actors.ts +61 -0
- package/src/manager-api/common.ts +4 -0
- package/src/mod.ts +1 -1
- package/src/registry/mod.ts +119 -10
- package/src/remote-manager-driver/actor-http-client.ts +30 -19
- package/src/remote-manager-driver/actor-websocket-client.ts +43 -16
- package/src/remote-manager-driver/api-endpoints.ts +19 -21
- package/src/remote-manager-driver/api-utils.ts +10 -1
- package/src/remote-manager-driver/mod.ts +51 -48
- package/src/remote-manager-driver/ws-proxy.ts +2 -9
- package/src/test/mod.ts +6 -2
- package/src/utils.ts +21 -2
- package/dist/tsup/actor-router-consts-BK6arfy8.d.cts +0 -17
- package/dist/tsup/actor-router-consts-BK6arfy8.d.ts +0 -17
- package/dist/tsup/chunk-2K3JMDAN.js.map +0 -1
- package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
- package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
- package/dist/tsup/chunk-4CKHQRXG.js.map +0 -1
- package/dist/tsup/chunk-5JBFVV4C.cjs.map +0 -1
- package/dist/tsup/chunk-6P6RA47N.cjs.map +0 -1
- package/dist/tsup/chunk-7OUKNSTU.js.map +0 -1
- package/dist/tsup/chunk-G75SVQON.js.map +0 -1
- package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
- package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
- package/dist/tsup/chunk-NTCUGYSD.cjs.map +0 -1
- package/dist/tsup/chunk-RGQR2J7S.js.map +0 -1
- package/dist/tsup/chunk-TCUI5JFE.cjs.map +0 -1
- package/dist/tsup/chunk-TWGATZ3X.cjs.map +0 -1
- package/dist/tsup/chunk-UFWAK3X2.cjs.map +0 -1
- package/dist/tsup/chunk-W6LN7AF5.js.map +0 -1
- package/dist/tsup/common-CXCe7s6i.d.cts +0 -218
- package/dist/tsup/common-CXCe7s6i.d.ts +0 -218
- package/src/actor/generic-conn-driver.ts +0 -246
- package/src/common/fake-event-source.ts +0 -267
- package/src/manager-api/routes/actors-create.ts +0 -16
- package/src/manager-api/routes/actors-delete.ts +0 -4
- package/src/manager-api/routes/actors-get-by-id.ts +0 -7
- package/src/manager-api/routes/actors-get-or-create-by-id.ts +0 -29
- package/src/manager-api/routes/actors-get.ts +0 -7
- package/src/manager-api/routes/common.ts +0 -18
- /package/dist/tsup/{chunk-ZYLTS2EM.js.map → chunk-54MAHBLL.js.map} +0 -0
- /package/dist/tsup/{chunk-VCEHU56K.js.map → chunk-B6N6VM37.js.map} +0 -0
- /package/dist/tsup/{chunk-VPV4MWXR.js.map → chunk-DIHKN7NM.js.map} +0 -0
- /package/dist/tsup/{chunk-WC2PSJWN.js.map → chunk-YL4VZMMT.js.map} +0 -0
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkOSK2VSJFcjs = require('./chunk-OSK2VSJF.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkVAF63BEIcjs = require('./chunk-VAF63BEI.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ var _chunkKG3C7MKRcjs = require('./chunk-KG3C7MKR.cjs');
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _chunk7OOBMCQIcjs = require('./chunk-7OOBMCQI.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
|
|
@@ -36,12 +36,10 @@ var _chunkNTCUGYSDcjs = require('./chunk-NTCUGYSD.cjs');
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
var _chunkTCUI5JFEcjs = require('./chunk-TCUI5JFE.cjs');
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
|
|
43
42
|
|
|
44
|
-
var _chunkMRRT2CZDcjs = require('./chunk-MRRT2CZD.cjs');
|
|
45
43
|
|
|
46
44
|
|
|
47
45
|
|
|
@@ -50,10 +48,25 @@ var _chunkMRRT2CZDcjs = require('./chunk-MRRT2CZD.cjs');
|
|
|
50
48
|
|
|
51
49
|
|
|
52
50
|
|
|
51
|
+
var _chunkNDCVQZBScjs = require('./chunk-NDCVQZBS.cjs');
|
|
53
52
|
|
|
54
53
|
|
|
55
54
|
|
|
56
|
-
|
|
55
|
+
|
|
56
|
+
var _chunkETDWYT2Pcjs = require('./chunk-ETDWYT2P.cjs');
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
var _chunkLXAVET4Acjs = require('./chunk-LXAVET4A.cjs');
|
|
57
70
|
|
|
58
71
|
|
|
59
72
|
|
|
@@ -69,44 +82,134 @@ var _chunk5JBFVV4Ccjs = require('./chunk-5JBFVV4C.cjs');
|
|
|
69
82
|
|
|
70
83
|
var _chunk5QGQK44Lcjs = require('./chunk-5QGQK44L.cjs');
|
|
71
84
|
|
|
72
|
-
// src/actor/
|
|
85
|
+
// src/actor/conn.ts
|
|
73
86
|
var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx); var cbor2 = _interopRequireWildcard(_cborx); var cbor5 = _interopRequireWildcard(_cborx); var cbor4 = _interopRequireWildcard(_cborx); var cbor3 = _interopRequireWildcard(_cborx); var cbor6 = _interopRequireWildcard(_cborx);
|
|
87
|
+
|
|
88
|
+
// src/actor/conn-drivers.ts
|
|
89
|
+
var WEBSOCKET_DRIVER = {
|
|
90
|
+
sendMessage: (actor, _conn, state, message) => {
|
|
91
|
+
const serialized = message.serialize(state.encoding);
|
|
92
|
+
actor.rLog.debug({
|
|
93
|
+
msg: "sending websocket message",
|
|
94
|
+
encoding: state.encoding,
|
|
95
|
+
dataType: typeof serialized,
|
|
96
|
+
isUint8Array: serialized instanceof Uint8Array,
|
|
97
|
+
isArrayBuffer: serialized instanceof ArrayBuffer,
|
|
98
|
+
dataLength: serialized.byteLength || serialized.length
|
|
99
|
+
});
|
|
100
|
+
if (serialized instanceof Uint8Array) {
|
|
101
|
+
const buffer = serialized.buffer.slice(
|
|
102
|
+
serialized.byteOffset,
|
|
103
|
+
serialized.byteOffset + serialized.byteLength
|
|
104
|
+
);
|
|
105
|
+
if (buffer instanceof SharedArrayBuffer) {
|
|
106
|
+
const arrayBuffer = new ArrayBuffer(buffer.byteLength);
|
|
107
|
+
new Uint8Array(arrayBuffer).set(new Uint8Array(buffer));
|
|
108
|
+
actor.rLog.debug({
|
|
109
|
+
msg: "converted SharedArrayBuffer to ArrayBuffer",
|
|
110
|
+
byteLength: arrayBuffer.byteLength
|
|
111
|
+
});
|
|
112
|
+
state.websocket.send(arrayBuffer);
|
|
113
|
+
} else {
|
|
114
|
+
actor.rLog.debug({
|
|
115
|
+
msg: "sending ArrayBuffer",
|
|
116
|
+
byteLength: buffer.byteLength
|
|
117
|
+
});
|
|
118
|
+
state.websocket.send(buffer);
|
|
119
|
+
}
|
|
120
|
+
} else {
|
|
121
|
+
actor.rLog.debug({
|
|
122
|
+
msg: "sending string data",
|
|
123
|
+
length: serialized.length
|
|
124
|
+
});
|
|
125
|
+
state.websocket.send(serialized);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
disconnect: async (_actor, _conn, state, reason) => {
|
|
129
|
+
state.websocket.close(1e3, reason);
|
|
130
|
+
await state.closePromise.promise;
|
|
131
|
+
},
|
|
132
|
+
getConnectionReadyState: (_actor, _conn, state) => {
|
|
133
|
+
return state.websocket.readyState;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
var SSE_DRIVER = {
|
|
137
|
+
sendMessage: (_actor, _conn, state, message) => {
|
|
138
|
+
state.stream.writeSSE({
|
|
139
|
+
data: _chunkNDCVQZBScjs.encodeDataToString.call(void 0, message.serialize(state.encoding))
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
disconnect: async (_actor, _conn, state, _reason) => {
|
|
143
|
+
state.stream.close();
|
|
144
|
+
},
|
|
145
|
+
getConnectionReadyState: (_actor, _conn, state) => {
|
|
146
|
+
if (state.stream.aborted || state.stream.closed) {
|
|
147
|
+
return 3 /* CLOSED */;
|
|
148
|
+
}
|
|
149
|
+
return 1 /* OPEN */;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
var HTTP_DRIVER = {
|
|
153
|
+
getConnectionReadyState(_actor, _conn) {
|
|
154
|
+
return 1 /* OPEN */;
|
|
155
|
+
},
|
|
156
|
+
disconnect: async () => {
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var CONN_DRIVERS = {
|
|
160
|
+
[0 /* WEBSOCKET */]: WEBSOCKET_DRIVER,
|
|
161
|
+
[1 /* SSE */]: SSE_DRIVER,
|
|
162
|
+
[2 /* HTTP */]: HTTP_DRIVER
|
|
163
|
+
};
|
|
164
|
+
function getConnDriverKindFromState(state) {
|
|
165
|
+
if (0 /* WEBSOCKET */ in state) return 0 /* WEBSOCKET */;
|
|
166
|
+
else if (1 /* SSE */ in state) return 1 /* SSE */;
|
|
167
|
+
else if (2 /* HTTP */ in state) return 2 /* HTTP */;
|
|
168
|
+
else _chunkLXAVET4Acjs.assertUnreachable.call(void 0, state);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// src/actor/conn.ts
|
|
74
172
|
function generateConnId() {
|
|
75
173
|
return crypto.randomUUID();
|
|
76
174
|
}
|
|
77
175
|
function generateConnToken() {
|
|
78
|
-
return
|
|
176
|
+
return _chunkNDCVQZBScjs.generateSecureToken.call(void 0, 32);
|
|
177
|
+
}
|
|
178
|
+
function generateConnSocketId() {
|
|
179
|
+
return crypto.randomUUID();
|
|
79
180
|
}
|
|
80
|
-
var CONNECTION_DRIVER_WEBSOCKET = "webSocket";
|
|
81
|
-
var CONNECTION_DRIVER_SSE = "sse";
|
|
82
|
-
var CONNECTION_DRIVER_HTTP = "http";
|
|
83
|
-
var CONNECTION_CHECK_LIVENESS_SYMBOL = Symbol("checkLiveness");
|
|
84
181
|
var Conn = (_class = class {
|
|
85
182
|
__init() {this.subscriptions = /* @__PURE__ */ new Set()}
|
|
86
|
-
#stateEnabled;
|
|
87
183
|
// TODO: Remove this cyclical reference
|
|
88
184
|
#actor;
|
|
89
|
-
#status = "connected";
|
|
90
185
|
/**
|
|
91
186
|
* The proxied state that notifies of changes automatically.
|
|
92
187
|
*
|
|
93
188
|
* Any data that should be stored indefinitely should be held within this object.
|
|
94
189
|
*/
|
|
95
190
|
|
|
191
|
+
get __driverState() {
|
|
192
|
+
var _a;
|
|
193
|
+
return (_a = this.__socket) == null ? void 0 : _a.driverState;
|
|
194
|
+
}
|
|
96
195
|
/**
|
|
97
|
-
*
|
|
196
|
+
* Socket connected to this connection.
|
|
98
197
|
*
|
|
99
|
-
*
|
|
198
|
+
* If undefined, then nothing is connected to this.
|
|
100
199
|
*/
|
|
101
|
-
|
|
200
|
+
|
|
201
|
+
get __status() {
|
|
202
|
+
if (this.__socket) {
|
|
203
|
+
return "connected";
|
|
204
|
+
} else {
|
|
205
|
+
return "reconnecting";
|
|
206
|
+
}
|
|
207
|
+
}
|
|
102
208
|
get params() {
|
|
103
209
|
return this.__persist.params;
|
|
104
210
|
}
|
|
105
|
-
get
|
|
106
|
-
return this.
|
|
107
|
-
}
|
|
108
|
-
get _stateEnabled() {
|
|
109
|
-
return this.#stateEnabled;
|
|
211
|
+
get __stateEnabled() {
|
|
212
|
+
return this.#actor.connStateEnabled;
|
|
110
213
|
}
|
|
111
214
|
/**
|
|
112
215
|
* Gets the current state of the connection.
|
|
@@ -143,7 +246,7 @@ var Conn = (_class = class {
|
|
|
143
246
|
* Status of the connection.
|
|
144
247
|
*/
|
|
145
248
|
get status() {
|
|
146
|
-
return this
|
|
249
|
+
return this.__status;
|
|
147
250
|
}
|
|
148
251
|
/**
|
|
149
252
|
* Timestamp of the last time the connection was seen, i.e. the last time the connection was active and checked for liveness.
|
|
@@ -158,14 +261,12 @@ var Conn = (_class = class {
|
|
|
158
261
|
*
|
|
159
262
|
* @protected
|
|
160
263
|
*/
|
|
161
|
-
constructor(actor, persist
|
|
264
|
+
constructor(actor, persist) {;_class.prototype.__init.call(this);
|
|
162
265
|
this.#actor = actor;
|
|
163
266
|
this.__persist = persist;
|
|
164
|
-
this.#driver = driver;
|
|
165
|
-
this.#stateEnabled = stateEnabled;
|
|
166
267
|
}
|
|
167
268
|
#validateStateEnabled() {
|
|
168
|
-
if (!this
|
|
269
|
+
if (!this.__stateEnabled) {
|
|
169
270
|
throw new (0, _chunk5QGQK44Lcjs.ConnStateNotEnabled)();
|
|
170
271
|
}
|
|
171
272
|
}
|
|
@@ -177,14 +278,28 @@ var Conn = (_class = class {
|
|
|
177
278
|
* @protected
|
|
178
279
|
*/
|
|
179
280
|
_sendMessage(message) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
281
|
+
if (this.__driverState) {
|
|
282
|
+
const driverKind = getConnDriverKindFromState(this.__driverState);
|
|
283
|
+
const driver = CONN_DRIVERS[driverKind];
|
|
284
|
+
if (driver.sendMessage) {
|
|
285
|
+
driver.sendMessage(
|
|
286
|
+
this.#actor,
|
|
287
|
+
this,
|
|
288
|
+
this.__driverState[driverKind],
|
|
289
|
+
message
|
|
290
|
+
);
|
|
291
|
+
} else {
|
|
292
|
+
this.#actor.rLog.debug({
|
|
293
|
+
msg: "conn driver does not support sending messages",
|
|
294
|
+
conn: this.id
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
} else {
|
|
298
|
+
this.#actor.rLog.warn({
|
|
299
|
+
msg: "missing connection driver state for send message",
|
|
300
|
+
conn: this.id
|
|
301
|
+
});
|
|
302
|
+
}
|
|
188
303
|
}
|
|
189
304
|
/**
|
|
190
305
|
* Sends an event with arguments to the client.
|
|
@@ -201,17 +316,17 @@ var Conn = (_class = class {
|
|
|
201
316
|
connId: this.id
|
|
202
317
|
});
|
|
203
318
|
this._sendMessage(
|
|
204
|
-
new (0,
|
|
319
|
+
new (0, _chunkNDCVQZBScjs.CachedSerializer)(
|
|
205
320
|
{
|
|
206
321
|
body: {
|
|
207
322
|
tag: "Event",
|
|
208
323
|
val: {
|
|
209
324
|
name: eventName,
|
|
210
|
-
args:
|
|
325
|
+
args: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor.encode(args))
|
|
211
326
|
}
|
|
212
327
|
}
|
|
213
328
|
},
|
|
214
|
-
|
|
329
|
+
_chunk7OOBMCQIcjs.TO_CLIENT_VERSIONED
|
|
215
330
|
)
|
|
216
331
|
);
|
|
217
332
|
}
|
|
@@ -221,43 +336,30 @@ var Conn = (_class = class {
|
|
|
221
336
|
* @param reason - The reason for disconnection.
|
|
222
337
|
*/
|
|
223
338
|
async disconnect(reason) {
|
|
224
|
-
this
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
actorId: this.#actor.id,
|
|
247
|
-
readyState,
|
|
248
|
-
status: this.#status,
|
|
249
|
-
newStatus,
|
|
250
|
-
lastSeen: this.__persist.lastSeen,
|
|
251
|
-
currentTs: newLastSeen
|
|
252
|
-
});
|
|
253
|
-
if (!isConnectionClosed) {
|
|
254
|
-
this.__persist.lastSeen = newLastSeen;
|
|
339
|
+
if (this.__socket && this.__driverState) {
|
|
340
|
+
const driverKind = getConnDriverKindFromState(this.__driverState);
|
|
341
|
+
const driver = CONN_DRIVERS[driverKind];
|
|
342
|
+
if (driver.disconnect) {
|
|
343
|
+
driver.disconnect(
|
|
344
|
+
this.#actor,
|
|
345
|
+
this,
|
|
346
|
+
this.__driverState[driverKind],
|
|
347
|
+
reason
|
|
348
|
+
);
|
|
349
|
+
} else {
|
|
350
|
+
this.#actor.rLog.debug({
|
|
351
|
+
msg: "no disconnect handler for conn driver",
|
|
352
|
+
conn: this.id
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
this.#actor.__connDisconnected(this, true, this.__socket.socketId);
|
|
356
|
+
} else {
|
|
357
|
+
this.#actor.rLog.warn({
|
|
358
|
+
msg: "missing connection driver state for disconnect",
|
|
359
|
+
conn: this.id
|
|
360
|
+
});
|
|
255
361
|
}
|
|
256
|
-
this
|
|
257
|
-
return {
|
|
258
|
-
status: this.#status,
|
|
259
|
-
lastSeen: this.__persist.lastSeen
|
|
260
|
-
};
|
|
362
|
+
this.__socket = void 0;
|
|
261
363
|
}
|
|
262
364
|
}, _class);
|
|
263
365
|
|
|
@@ -291,7 +393,7 @@ function createActorInspectorRouter() {
|
|
|
291
393
|
"/state",
|
|
292
394
|
_standardvalidator.sValidator.call(void 0,
|
|
293
395
|
"json",
|
|
294
|
-
_v42.default.object({ patch:
|
|
396
|
+
_v42.default.object({ patch: _chunkOSK2VSJFcjs.PatchSchema }).or(_v42.default.object({ replace: _v42.default.any() }))
|
|
295
397
|
),
|
|
296
398
|
async (c) => {
|
|
297
399
|
if (!await c.var.inspector.accessors.isStateEnabled()) {
|
|
@@ -335,7 +437,7 @@ function createActorInspectorRouter() {
|
|
|
335
437
|
id: String(id++)
|
|
336
438
|
});
|
|
337
439
|
});
|
|
338
|
-
const { promise } =
|
|
440
|
+
const { promise } = _chunkLXAVET4Acjs.promiseWithResolvers.call(void 0, );
|
|
339
441
|
return promise;
|
|
340
442
|
},
|
|
341
443
|
async () => {
|
|
@@ -360,7 +462,7 @@ function createActorInspectorRouter() {
|
|
|
360
462
|
id: String(id++)
|
|
361
463
|
});
|
|
362
464
|
});
|
|
363
|
-
const { promise } =
|
|
465
|
+
const { promise } = _chunkLXAVET4Acjs.promiseWithResolvers.call(void 0, );
|
|
364
466
|
return promise;
|
|
365
467
|
},
|
|
366
468
|
async () => {
|
|
@@ -386,7 +488,7 @@ function createActorInspectorRouter() {
|
|
|
386
488
|
id: String(id++)
|
|
387
489
|
});
|
|
388
490
|
});
|
|
389
|
-
const { promise } =
|
|
491
|
+
const { promise } = _chunkLXAVET4Acjs.promiseWithResolvers.call(void 0, );
|
|
390
492
|
return promise;
|
|
391
493
|
},
|
|
392
494
|
async () => {
|
|
@@ -402,20 +504,20 @@ function createActorInspectorRouter() {
|
|
|
402
504
|
}
|
|
403
505
|
const db = await c.var.inspector.accessors.getDb();
|
|
404
506
|
const rows = await db.execute(`PRAGMA table_list`);
|
|
405
|
-
const tables =
|
|
507
|
+
const tables = _chunkOSK2VSJFcjs.TablesSchema.parse(rows).filter(
|
|
406
508
|
(table) => table.schema !== "temp" && !table.name.startsWith("sqlite_")
|
|
407
509
|
);
|
|
408
510
|
const tablesInfo = await Promise.all(
|
|
409
511
|
tables.map((table) => db.execute(`PRAGMA table_info(${table.name})`))
|
|
410
512
|
);
|
|
411
|
-
const columns = tablesInfo.map((def) =>
|
|
513
|
+
const columns = tablesInfo.map((def) => _chunkOSK2VSJFcjs.ColumnsSchema.parse(def));
|
|
412
514
|
const foreignKeysList = await Promise.all(
|
|
413
515
|
tables.map(
|
|
414
516
|
(table) => db.execute(`PRAGMA foreign_key_list(${table.name})`)
|
|
415
517
|
)
|
|
416
518
|
);
|
|
417
519
|
const foreignKeys = foreignKeysList.map(
|
|
418
|
-
(def) =>
|
|
520
|
+
(def) => _chunkOSK2VSJFcjs.ForeignKeysSchema.parse(def)
|
|
419
521
|
);
|
|
420
522
|
const countInfo = await Promise.all(
|
|
421
523
|
tables.map(
|
|
@@ -695,15 +797,14 @@ var ActorInstance = class {
|
|
|
695
797
|
#persist;
|
|
696
798
|
/** Raw state without the proxy wrapper */
|
|
697
799
|
#persistRaw;
|
|
698
|
-
#persistWriteQueue = new (0,
|
|
699
|
-
#alarmWriteQueue = new (0,
|
|
800
|
+
#persistWriteQueue = new (0, _chunkLXAVET4Acjs.SinglePromiseQueue)();
|
|
801
|
+
#alarmWriteQueue = new (0, _chunkLXAVET4Acjs.SinglePromiseQueue)();
|
|
700
802
|
#lastSaveTime = 0;
|
|
701
803
|
#pendingSaveTimeout;
|
|
702
804
|
#vars;
|
|
703
805
|
#backgroundPromises = [];
|
|
704
806
|
#abortController = new AbortController();
|
|
705
807
|
#config;
|
|
706
|
-
#connectionDrivers;
|
|
707
808
|
#actorDriver;
|
|
708
809
|
#inlineClient;
|
|
709
810
|
#actorId;
|
|
@@ -741,9 +842,9 @@ var ActorInstance = class {
|
|
|
741
842
|
getConnections: async () => {
|
|
742
843
|
return Array.from(this.#connections.entries()).map(([id, conn]) => ({
|
|
743
844
|
id,
|
|
744
|
-
stateEnabled: conn.
|
|
845
|
+
stateEnabled: conn.__stateEnabled,
|
|
745
846
|
params: conn.params,
|
|
746
|
-
state: conn.
|
|
847
|
+
state: conn.__stateEnabled ? conn.state : void 0
|
|
747
848
|
}));
|
|
748
849
|
},
|
|
749
850
|
setState: async (state) => {
|
|
@@ -776,23 +877,22 @@ var ActorInstance = class {
|
|
|
776
877
|
this.#config = config;
|
|
777
878
|
this.actorContext = new ActorContext(this);
|
|
778
879
|
}
|
|
779
|
-
async start(
|
|
880
|
+
async start(actorDriver, inlineClient, actorId, name, key, region) {
|
|
780
881
|
var _a, _b;
|
|
781
882
|
const logParams = {
|
|
782
883
|
actor: name,
|
|
783
884
|
key: serializeActorKey(key),
|
|
784
885
|
actorId
|
|
785
886
|
};
|
|
786
|
-
this.#log =
|
|
787
|
-
Object.assign(
|
|
887
|
+
this.#log = _chunkETDWYT2Pcjs.getBaseLogger.call(void 0, ).child(
|
|
888
|
+
Object.assign(_chunkETDWYT2Pcjs.getIncludeTarget.call(void 0, ) ? { target: "actor" } : {}, logParams)
|
|
788
889
|
);
|
|
789
|
-
this.#rLog =
|
|
890
|
+
this.#rLog = _chunkETDWYT2Pcjs.getBaseLogger.call(void 0, ).child(
|
|
790
891
|
Object.assign(
|
|
791
|
-
|
|
892
|
+
_chunkETDWYT2Pcjs.getIncludeTarget.call(void 0, ) ? { target: "actor-runtime" } : {},
|
|
792
893
|
logParams
|
|
793
894
|
)
|
|
794
895
|
);
|
|
795
|
-
this.#connectionDrivers = connectionDrivers;
|
|
796
896
|
this.#actorDriver = actorDriver;
|
|
797
897
|
this.#inlineClient = inlineClient;
|
|
798
898
|
this.#actorId = actorId;
|
|
@@ -809,7 +909,7 @@ var ActorInstance = class {
|
|
|
809
909
|
this.#actorDriver.getContext(this.#actorId)
|
|
810
910
|
);
|
|
811
911
|
if (dataOrPromise instanceof Promise) {
|
|
812
|
-
vars = await
|
|
912
|
+
vars = await _chunkNDCVQZBScjs.deadline.call(void 0,
|
|
813
913
|
dataOrPromise,
|
|
814
914
|
this.#config.options.createVarsTimeout
|
|
815
915
|
);
|
|
@@ -936,7 +1036,7 @@ var ActorInstance = class {
|
|
|
936
1036
|
} catch (error) {
|
|
937
1037
|
this.actorContext.log.error({
|
|
938
1038
|
msg: "error while running event",
|
|
939
|
-
error:
|
|
1039
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error),
|
|
940
1040
|
event: event.eventId,
|
|
941
1041
|
timestamp: event.timestamp,
|
|
942
1042
|
action: event.kind.generic.actionName
|
|
@@ -945,7 +1045,7 @@ var ActorInstance = class {
|
|
|
945
1045
|
} catch (error) {
|
|
946
1046
|
this.actorContext.log.error({
|
|
947
1047
|
msg: "internal error while running event",
|
|
948
|
-
error:
|
|
1048
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error),
|
|
949
1049
|
...event
|
|
950
1050
|
});
|
|
951
1051
|
}
|
|
@@ -958,7 +1058,7 @@ var ActorInstance = class {
|
|
|
958
1058
|
kind: {
|
|
959
1059
|
generic: {
|
|
960
1060
|
actionName: action,
|
|
961
|
-
args:
|
|
1061
|
+
args: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(args))
|
|
962
1062
|
}
|
|
963
1063
|
}
|
|
964
1064
|
});
|
|
@@ -971,7 +1071,7 @@ var ActorInstance = class {
|
|
|
971
1071
|
throw new (0, _chunk5QGQK44Lcjs.StateNotEnabled)();
|
|
972
1072
|
}
|
|
973
1073
|
}
|
|
974
|
-
get
|
|
1074
|
+
get connStateEnabled() {
|
|
975
1075
|
return "createConnState" in this.#config || "connState" in this.#config;
|
|
976
1076
|
}
|
|
977
1077
|
get #varsEnabled() {
|
|
@@ -1012,7 +1112,7 @@ var ActorInstance = class {
|
|
|
1012
1112
|
const bareData = this.#convertToBarePersisted(this.#persistRaw);
|
|
1013
1113
|
await this.#actorDriver.writePersistedData(
|
|
1014
1114
|
this.#actorId,
|
|
1015
|
-
|
|
1115
|
+
_chunk7OOBMCQIcjs.PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData)
|
|
1016
1116
|
);
|
|
1017
1117
|
this.#rLog.debug({ msg: "persist saved" });
|
|
1018
1118
|
});
|
|
@@ -1036,7 +1136,7 @@ var ActorInstance = class {
|
|
|
1036
1136
|
this.#persistRaw = target;
|
|
1037
1137
|
if (target === null || typeof target !== "object") {
|
|
1038
1138
|
let invalidPath = "";
|
|
1039
|
-
if (!
|
|
1139
|
+
if (!_chunkLXAVET4Acjs.isCborSerializable.call(void 0,
|
|
1040
1140
|
target,
|
|
1041
1141
|
(path) => {
|
|
1042
1142
|
invalidPath = path;
|
|
@@ -1058,7 +1158,7 @@ var ActorInstance = class {
|
|
|
1058
1158
|
return;
|
|
1059
1159
|
}
|
|
1060
1160
|
let invalidPath = "";
|
|
1061
|
-
if (!
|
|
1161
|
+
if (!_chunkLXAVET4Acjs.isCborSerializable.call(void 0,
|
|
1062
1162
|
value,
|
|
1063
1163
|
(invalidPathPart) => {
|
|
1064
1164
|
invalidPath = invalidPathPart;
|
|
@@ -1081,7 +1181,7 @@ var ActorInstance = class {
|
|
|
1081
1181
|
} catch (error) {
|
|
1082
1182
|
this.#rLog.error({
|
|
1083
1183
|
msg: "error in `_onStateChange`",
|
|
1084
|
-
error:
|
|
1184
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1085
1185
|
});
|
|
1086
1186
|
} finally {
|
|
1087
1187
|
this.#isInOnStateChange = false;
|
|
@@ -1099,7 +1199,7 @@ var ActorInstance = class {
|
|
|
1099
1199
|
persistDataBuffer !== void 0,
|
|
1100
1200
|
"persist data has not been set, it should be set when initialized"
|
|
1101
1201
|
);
|
|
1102
|
-
const bareData =
|
|
1202
|
+
const bareData = _chunk7OOBMCQIcjs.PERSISTED_ACTOR_VERSIONED.deserializeWithEmbeddedVersion(
|
|
1103
1203
|
persistDataBuffer
|
|
1104
1204
|
);
|
|
1105
1205
|
const persistData = this.#convertFromBarePersisted(bareData);
|
|
@@ -1110,13 +1210,7 @@ var ActorInstance = class {
|
|
|
1110
1210
|
});
|
|
1111
1211
|
this.#setPersist(persistData);
|
|
1112
1212
|
for (const connPersist of this.#persist.connections) {
|
|
1113
|
-
const
|
|
1114
|
-
const conn = new Conn(
|
|
1115
|
-
this,
|
|
1116
|
-
connPersist,
|
|
1117
|
-
driver,
|
|
1118
|
-
this.#connStateEnabled
|
|
1119
|
-
);
|
|
1213
|
+
const conn = new Conn(this, connPersist);
|
|
1120
1214
|
this.#connections.set(conn.id, conn);
|
|
1121
1215
|
for (const sub of connPersist.subscriptions) {
|
|
1122
1216
|
this.#addSubscription(sub.eventName, conn, true);
|
|
@@ -1147,7 +1241,7 @@ var ActorInstance = class {
|
|
|
1147
1241
|
const bareData2 = this.#convertToBarePersisted(persistData);
|
|
1148
1242
|
await this.#actorDriver.writePersistedData(
|
|
1149
1243
|
this.#actorId,
|
|
1150
|
-
|
|
1244
|
+
_chunk7OOBMCQIcjs.PERSISTED_ACTOR_VERSIONED.serializeWithEmbeddedVersion(bareData2)
|
|
1151
1245
|
);
|
|
1152
1246
|
this.#setPersist(persistData);
|
|
1153
1247
|
if (this.#config.onCreate) {
|
|
@@ -1159,13 +1253,36 @@ var ActorInstance = class {
|
|
|
1159
1253
|
return this.#connections.get(id);
|
|
1160
1254
|
}
|
|
1161
1255
|
/**
|
|
1162
|
-
*
|
|
1256
|
+
* Connection disconnected.
|
|
1257
|
+
*
|
|
1258
|
+
* If a clean diconnect, will be removed immediately.
|
|
1259
|
+
*
|
|
1260
|
+
* If not a clean disconnect, will keep the connection alive for a given interval to wait for reconnect.
|
|
1163
1261
|
*/
|
|
1164
|
-
|
|
1165
|
-
if (
|
|
1166
|
-
this
|
|
1262
|
+
__connDisconnected(conn, wasClean, socketId) {
|
|
1263
|
+
if (socketId && conn.__socket && socketId !== conn.__socket.socketId) {
|
|
1264
|
+
this.rLog.debug({
|
|
1265
|
+
msg: "ignoring stale disconnect event",
|
|
1266
|
+
connId: conn.id,
|
|
1267
|
+
eventSocketId: socketId,
|
|
1268
|
+
currentSocketId: conn.__socket.socketId
|
|
1269
|
+
});
|
|
1167
1270
|
return;
|
|
1168
1271
|
}
|
|
1272
|
+
if (wasClean) {
|
|
1273
|
+
this.#removeConn(conn);
|
|
1274
|
+
} else {
|
|
1275
|
+
if (!conn.__driverState) {
|
|
1276
|
+
this.rLog.warn("called conn disconnected without driver state");
|
|
1277
|
+
}
|
|
1278
|
+
conn.__persist.lastSeen = Date.now();
|
|
1279
|
+
conn.__socket = void 0;
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
/**
|
|
1283
|
+
* Removes a connection and cleans up its resources.
|
|
1284
|
+
*/
|
|
1285
|
+
#removeConn(conn) {
|
|
1169
1286
|
const connIdx = this.#persist.connections.findIndex(
|
|
1170
1287
|
(c) => c.connId === conn.id
|
|
1171
1288
|
);
|
|
@@ -1190,20 +1307,80 @@ var ActorInstance = class {
|
|
|
1190
1307
|
result.catch((error) => {
|
|
1191
1308
|
this.#rLog.error({
|
|
1192
1309
|
msg: "error in `onDisconnect`",
|
|
1193
|
-
error:
|
|
1310
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1194
1311
|
});
|
|
1195
1312
|
});
|
|
1196
1313
|
}
|
|
1197
1314
|
} catch (error) {
|
|
1198
1315
|
this.#rLog.error({
|
|
1199
1316
|
msg: "error in `onDisconnect`",
|
|
1200
|
-
error:
|
|
1317
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1201
1318
|
});
|
|
1202
1319
|
}
|
|
1203
1320
|
}
|
|
1204
1321
|
this.#resetSleepTimer();
|
|
1205
1322
|
}
|
|
1206
|
-
|
|
1323
|
+
/**
|
|
1324
|
+
* Called to create a new connection or reconnect an existing one.
|
|
1325
|
+
*/
|
|
1326
|
+
async createConn(socket, params, request, connectionId, connectionToken) {
|
|
1327
|
+
this.#assertReady();
|
|
1328
|
+
if (connectionId && connectionToken) {
|
|
1329
|
+
this.rLog.debug({
|
|
1330
|
+
msg: "checking for existing connection",
|
|
1331
|
+
connectionId
|
|
1332
|
+
});
|
|
1333
|
+
const existingConn = this.#connections.get(connectionId);
|
|
1334
|
+
if (existingConn && existingConn._token === connectionToken) {
|
|
1335
|
+
this.rLog.debug({
|
|
1336
|
+
msg: "reconnecting existing connection",
|
|
1337
|
+
connectionId
|
|
1338
|
+
});
|
|
1339
|
+
if (existingConn.__driverState) {
|
|
1340
|
+
const driverKind = getConnDriverKindFromState(
|
|
1341
|
+
existingConn.__driverState
|
|
1342
|
+
);
|
|
1343
|
+
const driver = CONN_DRIVERS[driverKind];
|
|
1344
|
+
if (driver.disconnect) {
|
|
1345
|
+
driver.disconnect(
|
|
1346
|
+
this,
|
|
1347
|
+
existingConn,
|
|
1348
|
+
existingConn.__driverState[driverKind],
|
|
1349
|
+
"Reconnecting with new driver state"
|
|
1350
|
+
);
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
existingConn.__socket = socket;
|
|
1354
|
+
existingConn.__persist.lastSeen = Date.now();
|
|
1355
|
+
this.#resetSleepTimer();
|
|
1356
|
+
this.inspector.emitter.emit("connectionUpdated");
|
|
1357
|
+
existingConn._sendMessage(
|
|
1358
|
+
new (0, _chunkNDCVQZBScjs.CachedSerializer)(
|
|
1359
|
+
{
|
|
1360
|
+
body: {
|
|
1361
|
+
tag: "Init",
|
|
1362
|
+
val: {
|
|
1363
|
+
actorId: this.id,
|
|
1364
|
+
connectionId: existingConn.id,
|
|
1365
|
+
connectionToken: existingConn._token
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
},
|
|
1369
|
+
_chunk7OOBMCQIcjs.TO_CLIENT_VERSIONED
|
|
1370
|
+
)
|
|
1371
|
+
);
|
|
1372
|
+
return existingConn;
|
|
1373
|
+
}
|
|
1374
|
+
this.rLog.debug({
|
|
1375
|
+
msg: "connection not found or token mismatch, creating new connection",
|
|
1376
|
+
connectionId
|
|
1377
|
+
});
|
|
1378
|
+
}
|
|
1379
|
+
const newConnId = generateConnId();
|
|
1380
|
+
const newConnToken = generateConnToken();
|
|
1381
|
+
if (this.#connections.has(newConnId)) {
|
|
1382
|
+
throw new Error(`Connection already exists: ${newConnId}`);
|
|
1383
|
+
}
|
|
1207
1384
|
let connState;
|
|
1208
1385
|
const onBeforeConnectOpts = {
|
|
1209
1386
|
request
|
|
@@ -1215,7 +1392,7 @@ var ActorInstance = class {
|
|
|
1215
1392
|
params
|
|
1216
1393
|
);
|
|
1217
1394
|
}
|
|
1218
|
-
if (this
|
|
1395
|
+
if (this.connStateEnabled) {
|
|
1219
1396
|
if ("createConnState" in this.#config) {
|
|
1220
1397
|
const dataOrPromise = this.#config.createConnState(
|
|
1221
1398
|
this.actorContext,
|
|
@@ -1223,7 +1400,7 @@ var ActorInstance = class {
|
|
|
1223
1400
|
params
|
|
1224
1401
|
);
|
|
1225
1402
|
if (dataOrPromise instanceof Promise) {
|
|
1226
|
-
connState = await
|
|
1403
|
+
connState = await _chunkNDCVQZBScjs.deadline.call(void 0,
|
|
1227
1404
|
dataOrPromise,
|
|
1228
1405
|
this.#config.options.createConnStateTimeout
|
|
1229
1406
|
);
|
|
@@ -1238,39 +1415,16 @@ var ActorInstance = class {
|
|
|
1238
1415
|
);
|
|
1239
1416
|
}
|
|
1240
1417
|
}
|
|
1241
|
-
return connState;
|
|
1242
|
-
}
|
|
1243
|
-
__getConnDriver(driverId) {
|
|
1244
|
-
const driver = this.#connectionDrivers[driverId];
|
|
1245
|
-
if (!driver) throw new Error(`No connection driver: ${driverId}`);
|
|
1246
|
-
return driver;
|
|
1247
|
-
}
|
|
1248
|
-
/**
|
|
1249
|
-
* Called after establishing a connection handshake.
|
|
1250
|
-
*/
|
|
1251
|
-
async createConn(connectionId, connectionToken, params, state, driverId, driverState, authData) {
|
|
1252
|
-
this.#assertReady();
|
|
1253
|
-
if (this.#connections.has(connectionId)) {
|
|
1254
|
-
throw new Error(`Connection already exists: ${connectionId}`);
|
|
1255
|
-
}
|
|
1256
|
-
const driver = this.__getConnDriver(driverId);
|
|
1257
1418
|
const persist = {
|
|
1258
|
-
connId:
|
|
1259
|
-
token:
|
|
1260
|
-
connDriver: driverId,
|
|
1261
|
-
connDriverState: driverState,
|
|
1419
|
+
connId: newConnId,
|
|
1420
|
+
token: newConnToken,
|
|
1262
1421
|
params,
|
|
1263
|
-
state,
|
|
1264
|
-
authData,
|
|
1422
|
+
state: connState,
|
|
1265
1423
|
lastSeen: Date.now(),
|
|
1266
1424
|
subscriptions: []
|
|
1267
1425
|
};
|
|
1268
|
-
const conn = new Conn(
|
|
1269
|
-
|
|
1270
|
-
persist,
|
|
1271
|
-
driver,
|
|
1272
|
-
this.#connStateEnabled
|
|
1273
|
-
);
|
|
1426
|
+
const conn = new Conn(this, persist);
|
|
1427
|
+
conn.__socket = socket;
|
|
1274
1428
|
this.#connections.set(conn.id, conn);
|
|
1275
1429
|
this.#resetSleepTimer();
|
|
1276
1430
|
this.#persist.connections.push(persist);
|
|
@@ -1279,7 +1433,7 @@ var ActorInstance = class {
|
|
|
1279
1433
|
try {
|
|
1280
1434
|
const result = this.#config.onConnect(this.actorContext, conn);
|
|
1281
1435
|
if (result instanceof Promise) {
|
|
1282
|
-
|
|
1436
|
+
_chunkNDCVQZBScjs.deadline.call(void 0, result, this.#config.options.onConnectTimeout).catch(
|
|
1283
1437
|
(error) => {
|
|
1284
1438
|
this.#rLog.error({
|
|
1285
1439
|
msg: "error in `onConnect`, closing socket",
|
|
@@ -1292,14 +1446,14 @@ var ActorInstance = class {
|
|
|
1292
1446
|
} catch (error) {
|
|
1293
1447
|
this.#rLog.error({
|
|
1294
1448
|
msg: "error in `onConnect`",
|
|
1295
|
-
error:
|
|
1449
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1296
1450
|
});
|
|
1297
1451
|
conn == null ? void 0 : conn.disconnect("`onConnect` failed");
|
|
1298
1452
|
}
|
|
1299
1453
|
}
|
|
1300
1454
|
this.inspector.emitter.emit("connectionUpdated");
|
|
1301
1455
|
conn._sendMessage(
|
|
1302
|
-
new (0,
|
|
1456
|
+
new (0, _chunkNDCVQZBScjs.CachedSerializer)(
|
|
1303
1457
|
{
|
|
1304
1458
|
body: {
|
|
1305
1459
|
tag: "Init",
|
|
@@ -1310,14 +1464,14 @@ var ActorInstance = class {
|
|
|
1310
1464
|
}
|
|
1311
1465
|
}
|
|
1312
1466
|
},
|
|
1313
|
-
|
|
1467
|
+
_chunk7OOBMCQIcjs.TO_CLIENT_VERSIONED
|
|
1314
1468
|
)
|
|
1315
1469
|
);
|
|
1316
1470
|
return conn;
|
|
1317
1471
|
}
|
|
1318
1472
|
// MARK: Messages
|
|
1319
1473
|
async processMessage(message, conn) {
|
|
1320
|
-
await
|
|
1474
|
+
await _chunk7OOBMCQIcjs.processMessage.call(void 0, message, this, conn, {
|
|
1321
1475
|
onExecuteAction: async (ctx, name, args) => {
|
|
1322
1476
|
this.inspector.emitter.emit("eventFired", {
|
|
1323
1477
|
type: "action",
|
|
@@ -1411,11 +1565,10 @@ var ActorInstance = class {
|
|
|
1411
1565
|
#checkConnectionsLiveness() {
|
|
1412
1566
|
this.#rLog.debug({ msg: "checking connections liveness" });
|
|
1413
1567
|
for (const conn of this.#connections.values()) {
|
|
1414
|
-
|
|
1415
|
-
if (liveness.status === "connected") {
|
|
1568
|
+
if (conn.__status === "connected") {
|
|
1416
1569
|
this.#rLog.debug({ msg: "connection is alive", connId: conn.id });
|
|
1417
1570
|
} else {
|
|
1418
|
-
const lastSeen =
|
|
1571
|
+
const lastSeen = conn.__persist.lastSeen;
|
|
1419
1572
|
const sinceLastSeen = Date.now() - lastSeen;
|
|
1420
1573
|
if (sinceLastSeen < this.#config.options.connectionLivenessTimeout) {
|
|
1421
1574
|
this.#rLog.debug({
|
|
@@ -1431,7 +1584,7 @@ var ActorInstance = class {
|
|
|
1431
1584
|
connId: conn.id,
|
|
1432
1585
|
lastSeen
|
|
1433
1586
|
});
|
|
1434
|
-
this
|
|
1587
|
+
this.#removeConn(conn);
|
|
1435
1588
|
}
|
|
1436
1589
|
}
|
|
1437
1590
|
}
|
|
@@ -1487,7 +1640,7 @@ var ActorInstance = class {
|
|
|
1487
1640
|
msg: "awaiting async action",
|
|
1488
1641
|
actionName
|
|
1489
1642
|
});
|
|
1490
|
-
output = await
|
|
1643
|
+
output = await _chunkNDCVQZBScjs.deadline.call(void 0,
|
|
1491
1644
|
outputOrPromise,
|
|
1492
1645
|
this.#config.options.actionTimeout
|
|
1493
1646
|
);
|
|
@@ -1522,7 +1675,7 @@ var ActorInstance = class {
|
|
|
1522
1675
|
} catch (error) {
|
|
1523
1676
|
this.#rLog.error({
|
|
1524
1677
|
msg: "error in `onBeforeActionResponse`",
|
|
1525
|
-
error:
|
|
1678
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1526
1679
|
});
|
|
1527
1680
|
}
|
|
1528
1681
|
}
|
|
@@ -1534,13 +1687,13 @@ var ActorInstance = class {
|
|
|
1534
1687
|
});
|
|
1535
1688
|
return output;
|
|
1536
1689
|
} catch (error) {
|
|
1537
|
-
if (error instanceof
|
|
1690
|
+
if (error instanceof _chunkNDCVQZBScjs.DeadlineError) {
|
|
1538
1691
|
throw new (0, _chunk5QGQK44Lcjs.ActionTimedOut)();
|
|
1539
1692
|
}
|
|
1540
1693
|
this.#rLog.error({
|
|
1541
1694
|
msg: "action error",
|
|
1542
1695
|
actionName,
|
|
1543
|
-
error:
|
|
1696
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1544
1697
|
});
|
|
1545
1698
|
throw error;
|
|
1546
1699
|
} finally {
|
|
@@ -1574,7 +1727,7 @@ var ActorInstance = class {
|
|
|
1574
1727
|
}
|
|
1575
1728
|
return response;
|
|
1576
1729
|
} catch (error) {
|
|
1577
|
-
this.#rLog.error({ msg: "onFetch error", error:
|
|
1730
|
+
this.#rLog.error({ msg: "onFetch error", error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error) });
|
|
1578
1731
|
throw error;
|
|
1579
1732
|
} finally {
|
|
1580
1733
|
this.#activeRawFetchCount = Math.max(0, this.#activeRawFetchCount - 1);
|
|
@@ -1615,7 +1768,7 @@ var ActorInstance = class {
|
|
|
1615
1768
|
} catch (error) {
|
|
1616
1769
|
this.#rLog.error({
|
|
1617
1770
|
msg: "onWebSocket error",
|
|
1618
|
-
error:
|
|
1771
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1619
1772
|
});
|
|
1620
1773
|
throw error;
|
|
1621
1774
|
} finally {
|
|
@@ -1710,17 +1863,17 @@ var ActorInstance = class {
|
|
|
1710
1863
|
});
|
|
1711
1864
|
const subscriptions = this.#subscriptionIndex.get(name);
|
|
1712
1865
|
if (!subscriptions) return;
|
|
1713
|
-
const toClientSerializer = new (0,
|
|
1866
|
+
const toClientSerializer = new (0, _chunkNDCVQZBScjs.CachedSerializer)(
|
|
1714
1867
|
{
|
|
1715
1868
|
body: {
|
|
1716
1869
|
tag: "Event",
|
|
1717
1870
|
val: {
|
|
1718
1871
|
name,
|
|
1719
|
-
args:
|
|
1872
|
+
args: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(args))
|
|
1720
1873
|
}
|
|
1721
1874
|
}
|
|
1722
1875
|
},
|
|
1723
|
-
|
|
1876
|
+
_chunk7OOBMCQIcjs.TO_CLIENT_VERSIONED
|
|
1724
1877
|
);
|
|
1725
1878
|
for (const connection of subscriptions) {
|
|
1726
1879
|
connection._sendMessage(toClientSerializer);
|
|
@@ -1741,7 +1894,7 @@ var ActorInstance = class {
|
|
|
1741
1894
|
}).catch((error) => {
|
|
1742
1895
|
this.#rLog.error({
|
|
1743
1896
|
msg: "wait until promise failed",
|
|
1744
|
-
error:
|
|
1897
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1745
1898
|
});
|
|
1746
1899
|
});
|
|
1747
1900
|
this.#backgroundPromises.push(nonfailablePromise);
|
|
@@ -1761,7 +1914,7 @@ var ActorInstance = class {
|
|
|
1761
1914
|
await this.#savePersistInner();
|
|
1762
1915
|
} else {
|
|
1763
1916
|
if (!this.#onPersistSavedPromise) {
|
|
1764
|
-
this.#onPersistSavedPromise =
|
|
1917
|
+
this.#onPersistSavedPromise = _chunkLXAVET4Acjs.promiseWithResolvers.call(void 0, );
|
|
1765
1918
|
}
|
|
1766
1919
|
this.#savePersistThrottled();
|
|
1767
1920
|
await this.#onPersistSavedPromise.promise;
|
|
@@ -1797,7 +1950,7 @@ var ActorInstance = class {
|
|
|
1797
1950
|
this._sleep().catch((error) => {
|
|
1798
1951
|
this.#rLog.error({
|
|
1799
1952
|
msg: "error during sleep",
|
|
1800
|
-
error:
|
|
1953
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1801
1954
|
});
|
|
1802
1955
|
});
|
|
1803
1956
|
}, this.#config.options.sleepTimeout);
|
|
@@ -1849,16 +2002,16 @@ var ActorInstance = class {
|
|
|
1849
2002
|
this.#rLog.debug({ msg: "calling onStop" });
|
|
1850
2003
|
const result = this.#config.onStop(this.actorContext);
|
|
1851
2004
|
if (result instanceof Promise) {
|
|
1852
|
-
await
|
|
2005
|
+
await _chunkNDCVQZBScjs.deadline.call(void 0, result, this.#config.options.onStopTimeout);
|
|
1853
2006
|
}
|
|
1854
2007
|
this.#rLog.debug({ msg: "onStop completed" });
|
|
1855
2008
|
} catch (error) {
|
|
1856
|
-
if (error instanceof
|
|
2009
|
+
if (error instanceof _chunkNDCVQZBScjs.DeadlineError) {
|
|
1857
2010
|
this.#rLog.error({ msg: "onStop timed out" });
|
|
1858
2011
|
} else {
|
|
1859
2012
|
this.#rLog.error({
|
|
1860
2013
|
msg: "error in onStop",
|
|
1861
|
-
error:
|
|
2014
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
1862
2015
|
});
|
|
1863
2016
|
}
|
|
1864
2017
|
}
|
|
@@ -1919,18 +2072,14 @@ var ActorInstance = class {
|
|
|
1919
2072
|
// MARK: BARE Conversion Helpers
|
|
1920
2073
|
#convertToBarePersisted(persist) {
|
|
1921
2074
|
return {
|
|
1922
|
-
input: persist.input !== void 0 ?
|
|
2075
|
+
input: persist.input !== void 0 ? _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(persist.input)) : null,
|
|
1923
2076
|
hasInitialized: persist.hasInitiated,
|
|
1924
|
-
state:
|
|
2077
|
+
state: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(persist.state)),
|
|
1925
2078
|
connections: persist.connections.map((conn) => ({
|
|
1926
2079
|
id: conn.connId,
|
|
1927
2080
|
token: conn.token,
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
cbor2.encode(conn.connDriverState || {})
|
|
1931
|
-
),
|
|
1932
|
-
parameters: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.params || {})),
|
|
1933
|
-
state: _chunk5JBFVV4Ccjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.state || {})),
|
|
2081
|
+
parameters: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.params || {})),
|
|
2082
|
+
state: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(conn.state || {})),
|
|
1934
2083
|
subscriptions: conn.subscriptions.map((sub) => ({
|
|
1935
2084
|
eventName: sub.eventName
|
|
1936
2085
|
})),
|
|
@@ -1957,8 +2106,6 @@ var ActorInstance = class {
|
|
|
1957
2106
|
connections: bareData.connections.map((conn) => ({
|
|
1958
2107
|
connId: conn.id,
|
|
1959
2108
|
token: conn.token,
|
|
1960
|
-
connDriver: conn.driver,
|
|
1961
|
-
connDriverState: cbor2.decode(new Uint8Array(conn.driverState)),
|
|
1962
2109
|
params: cbor2.decode(new Uint8Array(conn.parameters)),
|
|
1963
2110
|
state: cbor2.decode(new Uint8Array(conn.state)),
|
|
1964
2111
|
subscriptions: conn.subscriptions.map((sub) => ({
|
|
@@ -2050,7 +2197,7 @@ async function importEventSource() {
|
|
|
2050
2197
|
try {
|
|
2051
2198
|
const es = await Promise.resolve().then(() => _interopRequireWildcard(require("eventsource")));
|
|
2052
2199
|
_EventSource = es.EventSource;
|
|
2053
|
-
|
|
2200
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug("using eventsource from npm");
|
|
2054
2201
|
} catch (err) {
|
|
2055
2202
|
_EventSource = class MockEventSource {
|
|
2056
2203
|
constructor() {
|
|
@@ -2059,7 +2206,7 @@ async function importEventSource() {
|
|
|
2059
2206
|
);
|
|
2060
2207
|
}
|
|
2061
2208
|
};
|
|
2062
|
-
|
|
2209
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug("using mock eventsource");
|
|
2063
2210
|
}
|
|
2064
2211
|
return _EventSource;
|
|
2065
2212
|
})();
|
|
@@ -2068,7 +2215,7 @@ async function importEventSource() {
|
|
|
2068
2215
|
|
|
2069
2216
|
// src/client/actor-query.ts
|
|
2070
2217
|
async function queryActor(c, query, managerDriver) {
|
|
2071
|
-
|
|
2218
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "querying actor", query: JSON.stringify(query) });
|
|
2072
2219
|
let actorOutput;
|
|
2073
2220
|
if ("getForId" in query) {
|
|
2074
2221
|
const output = await managerDriver.getForId({
|
|
@@ -2115,7 +2262,7 @@ async function queryActor(c, query, managerDriver) {
|
|
|
2115
2262
|
} else {
|
|
2116
2263
|
throw new (0, _chunk5QGQK44Lcjs.InvalidRequest)("Invalid query format");
|
|
2117
2264
|
}
|
|
2118
|
-
|
|
2265
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "actor query result", actorId: actorOutput.actorId });
|
|
2119
2266
|
return { actorId: actorOutput.actorId };
|
|
2120
2267
|
}
|
|
2121
2268
|
|
|
@@ -2165,13 +2312,13 @@ async function rawHttpFetch(driver, actorQuery, params, input, init) {
|
|
|
2165
2312
|
}
|
|
2166
2313
|
try {
|
|
2167
2314
|
const { actorId } = await queryActor(void 0, actorQuery, driver);
|
|
2168
|
-
|
|
2315
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "found actor for raw http", actorId });
|
|
2169
2316
|
_invariant2.default.call(void 0, actorId, "Missing actor ID");
|
|
2170
2317
|
const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
2171
2318
|
const url = new URL(`http://actor/raw/http/${normalizedPath}`);
|
|
2172
2319
|
const proxyRequestHeaders = new Headers(mergedInit.headers);
|
|
2173
2320
|
if (params) {
|
|
2174
|
-
proxyRequestHeaders.set(
|
|
2321
|
+
proxyRequestHeaders.set(_chunkNDCVQZBScjs.HEADER_CONN_PARAMS, JSON.stringify(params));
|
|
2175
2322
|
}
|
|
2176
2323
|
const proxyRequest = new Request(url, {
|
|
2177
2324
|
...mergedInit,
|
|
@@ -2179,9 +2326,9 @@ async function rawHttpFetch(driver, actorQuery, params, input, init) {
|
|
|
2179
2326
|
});
|
|
2180
2327
|
return driver.sendRequest(actorId, proxyRequest);
|
|
2181
2328
|
} catch (err) {
|
|
2182
|
-
const { group, code, message, metadata } =
|
|
2329
|
+
const { group, code, message, metadata } = _chunkLXAVET4Acjs.deconstructError.call(void 0,
|
|
2183
2330
|
err,
|
|
2184
|
-
|
|
2331
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ),
|
|
2185
2332
|
{},
|
|
2186
2333
|
true
|
|
2187
2334
|
);
|
|
@@ -2191,7 +2338,7 @@ async function rawHttpFetch(driver, actorQuery, params, input, init) {
|
|
|
2191
2338
|
async function rawWebSocket(driver, actorQuery, params, path, protocols) {
|
|
2192
2339
|
const encoding = "bare";
|
|
2193
2340
|
const { actorId } = await queryActor(void 0, actorQuery, driver);
|
|
2194
|
-
|
|
2341
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "found actor for action", actorId });
|
|
2195
2342
|
_invariant2.default.call(void 0, actorId, "Missing actor ID");
|
|
2196
2343
|
let pathPortion = "";
|
|
2197
2344
|
let queryPortion = "";
|
|
@@ -2207,8 +2354,8 @@ async function rawWebSocket(driver, actorQuery, params, path, protocols) {
|
|
|
2207
2354
|
pathPortion = pathPortion.slice(1);
|
|
2208
2355
|
}
|
|
2209
2356
|
}
|
|
2210
|
-
const fullPath = `${
|
|
2211
|
-
|
|
2357
|
+
const fullPath = `${_chunkNDCVQZBScjs.PATH_RAW_WEBSOCKET_PREFIX}${pathPortion}${queryPortion}`;
|
|
2358
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2212
2359
|
msg: "opening websocket",
|
|
2213
2360
|
actorId,
|
|
2214
2361
|
encoding,
|
|
@@ -2234,10 +2381,10 @@ function messageLength(message) {
|
|
|
2234
2381
|
if (typeof message === "string") {
|
|
2235
2382
|
return message.length;
|
|
2236
2383
|
}
|
|
2237
|
-
|
|
2384
|
+
_chunkLXAVET4Acjs.assertUnreachable.call(void 0, message);
|
|
2238
2385
|
}
|
|
2239
2386
|
async function sendHttpRequest(opts) {
|
|
2240
|
-
|
|
2387
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2241
2388
|
msg: "sending http request",
|
|
2242
2389
|
url: opts.url,
|
|
2243
2390
|
encoding: opts.encoding
|
|
@@ -2246,8 +2393,8 @@ async function sendHttpRequest(opts) {
|
|
|
2246
2393
|
let bodyData;
|
|
2247
2394
|
if (opts.method === "POST" || opts.method === "PUT") {
|
|
2248
2395
|
_invariant2.default.call(void 0, opts.body !== void 0, "missing body");
|
|
2249
|
-
contentType =
|
|
2250
|
-
bodyData =
|
|
2396
|
+
contentType = _chunkNDCVQZBScjs.contentTypeForEncoding.call(void 0, opts.encoding);
|
|
2397
|
+
bodyData = _chunkNDCVQZBScjs.serializeWithEncoding.call(void 0,
|
|
2251
2398
|
opts.encoding,
|
|
2252
2399
|
opts.body,
|
|
2253
2400
|
opts.requestVersionedDataHandler
|
|
@@ -2263,7 +2410,7 @@ async function sendHttpRequest(opts) {
|
|
|
2263
2410
|
...contentType ? {
|
|
2264
2411
|
"Content-Type": contentType
|
|
2265
2412
|
} : {},
|
|
2266
|
-
"User-Agent":
|
|
2413
|
+
"User-Agent": _chunkLXAVET4Acjs.httpUserAgent.call(void 0, )
|
|
2267
2414
|
},
|
|
2268
2415
|
body: bodyData,
|
|
2269
2416
|
credentials: "include",
|
|
@@ -2279,10 +2426,10 @@ async function sendHttpRequest(opts) {
|
|
|
2279
2426
|
const bufferResponse = await response.arrayBuffer();
|
|
2280
2427
|
let responseData;
|
|
2281
2428
|
try {
|
|
2282
|
-
responseData =
|
|
2429
|
+
responseData = _chunkNDCVQZBScjs.deserializeWithEncoding.call(void 0,
|
|
2283
2430
|
opts.encoding,
|
|
2284
2431
|
new Uint8Array(bufferResponse),
|
|
2285
|
-
|
|
2432
|
+
_chunk7OOBMCQIcjs.HTTP_RESPONSE_ERROR_VERSIONED
|
|
2286
2433
|
);
|
|
2287
2434
|
} catch (error) {
|
|
2288
2435
|
const textResponse = new TextDecoder("utf-8", { fatal: false }).decode(
|
|
@@ -2305,7 +2452,7 @@ ${textResponse}`
|
|
|
2305
2452
|
}
|
|
2306
2453
|
try {
|
|
2307
2454
|
const buffer = new Uint8Array(await response.arrayBuffer());
|
|
2308
|
-
return
|
|
2455
|
+
return _chunkNDCVQZBScjs.deserializeWithEncoding.call(void 0,
|
|
2309
2456
|
opts.encoding,
|
|
2310
2457
|
buffer,
|
|
2311
2458
|
opts.responseVersionedDataHandler
|
|
@@ -2352,9 +2499,9 @@ var ActorHandleRaw = class {
|
|
|
2352
2499
|
this.#actorQuery,
|
|
2353
2500
|
this.#driver
|
|
2354
2501
|
);
|
|
2355
|
-
|
|
2502
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "found actor for action", actorId });
|
|
2356
2503
|
_invariant2.default.call(void 0, actorId, "Missing actor ID");
|
|
2357
|
-
|
|
2504
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2358
2505
|
msg: "handling action",
|
|
2359
2506
|
name: opts.name,
|
|
2360
2507
|
encoding: this.#encoding
|
|
@@ -2363,23 +2510,23 @@ var ActorHandleRaw = class {
|
|
|
2363
2510
|
url: `http://actor/action/${encodeURIComponent(opts.name)}`,
|
|
2364
2511
|
method: "POST",
|
|
2365
2512
|
headers: {
|
|
2366
|
-
[
|
|
2367
|
-
...this.#params !== void 0 ? { [
|
|
2513
|
+
[_chunkNDCVQZBScjs.HEADER_ENCODING]: this.#encoding,
|
|
2514
|
+
...this.#params !== void 0 ? { [_chunkNDCVQZBScjs.HEADER_CONN_PARAMS]: JSON.stringify(this.#params) } : {}
|
|
2368
2515
|
},
|
|
2369
2516
|
body: {
|
|
2370
|
-
args:
|
|
2517
|
+
args: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor4.encode(opts.args))
|
|
2371
2518
|
},
|
|
2372
2519
|
encoding: this.#encoding,
|
|
2373
2520
|
customFetch: this.#driver.sendRequest.bind(this.#driver, actorId),
|
|
2374
2521
|
signal: opts == null ? void 0 : opts.signal,
|
|
2375
|
-
requestVersionedDataHandler:
|
|
2376
|
-
responseVersionedDataHandler:
|
|
2522
|
+
requestVersionedDataHandler: _chunk7OOBMCQIcjs.HTTP_ACTION_REQUEST_VERSIONED,
|
|
2523
|
+
responseVersionedDataHandler: _chunk7OOBMCQIcjs.HTTP_ACTION_RESPONSE_VERSIONED
|
|
2377
2524
|
});
|
|
2378
2525
|
return cbor4.decode(new Uint8Array(responseData.output));
|
|
2379
2526
|
} catch (err) {
|
|
2380
|
-
const { group, code, message, metadata } =
|
|
2527
|
+
const { group, code, message, metadata } = _chunkLXAVET4Acjs.deconstructError.call(void 0,
|
|
2381
2528
|
err,
|
|
2382
|
-
|
|
2529
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ),
|
|
2383
2530
|
{},
|
|
2384
2531
|
true
|
|
2385
2532
|
);
|
|
@@ -2393,7 +2540,7 @@ var ActorHandleRaw = class {
|
|
|
2393
2540
|
* @returns {ActorConn<AD>} A connection to the actor.
|
|
2394
2541
|
*/
|
|
2395
2542
|
connect() {
|
|
2396
|
-
|
|
2543
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2397
2544
|
msg: "establishing connection from handle",
|
|
2398
2545
|
query: this.#actorQuery
|
|
2399
2546
|
});
|
|
@@ -2453,7 +2600,7 @@ var ActorHandleRaw = class {
|
|
|
2453
2600
|
} else if ("getOrCreateForKey" in this.#actorQuery) {
|
|
2454
2601
|
name = this.#actorQuery.getOrCreateForKey.name;
|
|
2455
2602
|
} else {
|
|
2456
|
-
|
|
2603
|
+
_chunkNDCVQZBScjs.assertUnreachable.call(void 0, this.#actorQuery);
|
|
2457
2604
|
}
|
|
2458
2605
|
const { actorId } = await queryActor(
|
|
2459
2606
|
void 0,
|
|
@@ -2467,7 +2614,7 @@ var ActorHandleRaw = class {
|
|
|
2467
2614
|
} else if ("create" in this.#actorQuery) {
|
|
2468
2615
|
_invariant2.default.call(void 0, false, "actorQuery cannot be create");
|
|
2469
2616
|
} else {
|
|
2470
|
-
|
|
2617
|
+
_chunkNDCVQZBScjs.assertUnreachable.call(void 0, this.#actorQuery);
|
|
2471
2618
|
}
|
|
2472
2619
|
}
|
|
2473
2620
|
};
|
|
@@ -2504,7 +2651,7 @@ var ClientRaw = (_class4 = class {
|
|
|
2504
2651
|
* @returns {ActorHandle<AD>} - A handle to the actor.
|
|
2505
2652
|
*/
|
|
2506
2653
|
getForId(name, actorId, opts) {
|
|
2507
|
-
|
|
2654
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2508
2655
|
msg: "get handle to actor with id",
|
|
2509
2656
|
name,
|
|
2510
2657
|
actorId,
|
|
@@ -2530,7 +2677,7 @@ var ClientRaw = (_class4 = class {
|
|
|
2530
2677
|
*/
|
|
2531
2678
|
get(name, key, opts) {
|
|
2532
2679
|
const keyArray = typeof key === "string" ? [key] : key || [];
|
|
2533
|
-
|
|
2680
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2534
2681
|
msg: "get handle to actor",
|
|
2535
2682
|
name,
|
|
2536
2683
|
key: keyArray,
|
|
@@ -2556,7 +2703,7 @@ var ClientRaw = (_class4 = class {
|
|
|
2556
2703
|
*/
|
|
2557
2704
|
getOrCreate(name, key, opts) {
|
|
2558
2705
|
const keyArray = typeof key === "string" ? [key] : key || [];
|
|
2559
|
-
|
|
2706
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2560
2707
|
msg: "get or create handle to actor",
|
|
2561
2708
|
name,
|
|
2562
2709
|
key: keyArray,
|
|
@@ -2594,7 +2741,7 @@ var ClientRaw = (_class4 = class {
|
|
|
2594
2741
|
key: keyArray
|
|
2595
2742
|
}
|
|
2596
2743
|
};
|
|
2597
|
-
|
|
2744
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2598
2745
|
msg: "create actor handle",
|
|
2599
2746
|
name,
|
|
2600
2747
|
key: keyArray,
|
|
@@ -2602,7 +2749,7 @@ var ClientRaw = (_class4 = class {
|
|
|
2602
2749
|
create: createQuery.create
|
|
2603
2750
|
});
|
|
2604
2751
|
const { actorId } = await queryActor(void 0, createQuery, this.#driver);
|
|
2605
|
-
|
|
2752
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2606
2753
|
msg: "created actor with ID",
|
|
2607
2754
|
name,
|
|
2608
2755
|
key: keyArray,
|
|
@@ -2639,11 +2786,11 @@ var ClientRaw = (_class4 = class {
|
|
|
2639
2786
|
*/
|
|
2640
2787
|
async dispose() {
|
|
2641
2788
|
if (this.#disposed) {
|
|
2642
|
-
|
|
2789
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({ msg: "client already disconnected" });
|
|
2643
2790
|
return;
|
|
2644
2791
|
}
|
|
2645
2792
|
this.#disposed = true;
|
|
2646
|
-
|
|
2793
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "disposing client" });
|
|
2647
2794
|
const disposePromises = [];
|
|
2648
2795
|
for (const conn of this[ACTOR_CONNS_SYMBOL].values()) {
|
|
2649
2796
|
disposePromises.push(conn.dispose());
|
|
@@ -2699,7 +2846,7 @@ function createActorProxy(handle) {
|
|
|
2699
2846
|
return Reflect.get(target, prop, receiver);
|
|
2700
2847
|
}
|
|
2701
2848
|
if (prop === "constructor" || prop in target) {
|
|
2702
|
-
const value = Reflect.get(target, prop,
|
|
2849
|
+
const value = Reflect.get(target, prop, target);
|
|
2703
2850
|
if (typeof value === "function") {
|
|
2704
2851
|
return value.bind(target);
|
|
2705
2852
|
}
|
|
@@ -2757,7 +2904,7 @@ var ActorConnRaw = class {
|
|
|
2757
2904
|
#abortController = new AbortController();
|
|
2758
2905
|
/** If attempting to connect. Helpful for knowing if in a retry loop when reconnecting. */
|
|
2759
2906
|
#connecting = false;
|
|
2760
|
-
//
|
|
2907
|
+
// Connection info, used for reconnection and HTTP requests
|
|
2761
2908
|
#actorId;
|
|
2762
2909
|
#connectionId;
|
|
2763
2910
|
#connectionToken;
|
|
@@ -2808,10 +2955,10 @@ var ActorConnRaw = class {
|
|
|
2808
2955
|
* @returns {Promise<Response>} - A promise that resolves to the response of the action function.
|
|
2809
2956
|
*/
|
|
2810
2957
|
async action(opts) {
|
|
2811
|
-
|
|
2958
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "action", name: opts.name, args: opts.args });
|
|
2812
2959
|
const actionId = this.#actionIdCounter;
|
|
2813
2960
|
this.#actionIdCounter += 1;
|
|
2814
|
-
const { promise, resolve, reject } =
|
|
2961
|
+
const { promise, resolve, reject } = _chunkLXAVET4Acjs.promiseWithResolvers.call(void 0, );
|
|
2815
2962
|
this.#actionsInFlight.set(actionId, { name: opts.name, resolve, reject });
|
|
2816
2963
|
this.#sendMessage({
|
|
2817
2964
|
body: {
|
|
@@ -2819,7 +2966,7 @@ var ActorConnRaw = class {
|
|
|
2819
2966
|
val: {
|
|
2820
2967
|
id: BigInt(actionId),
|
|
2821
2968
|
name: opts.name,
|
|
2822
|
-
args:
|
|
2969
|
+
args: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor5.encode(opts.args))
|
|
2823
2970
|
}
|
|
2824
2971
|
}
|
|
2825
2972
|
});
|
|
@@ -2848,10 +2995,10 @@ var ActorConnRaw = class {
|
|
|
2848
2995
|
minTimeout: 250,
|
|
2849
2996
|
maxTimeout: 3e4,
|
|
2850
2997
|
onFailedAttempt: (error) => {
|
|
2851
|
-
|
|
2998
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({
|
|
2852
2999
|
msg: "failed to reconnect",
|
|
2853
3000
|
attempt: error.attemptNumber,
|
|
2854
|
-
error:
|
|
3001
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
2855
3002
|
});
|
|
2856
3003
|
},
|
|
2857
3004
|
// Cancel retry if aborted
|
|
@@ -2859,7 +3006,7 @@ var ActorConnRaw = class {
|
|
|
2859
3006
|
});
|
|
2860
3007
|
} catch (err) {
|
|
2861
3008
|
if (err.name === "AbortError") {
|
|
2862
|
-
|
|
3009
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).info({ msg: "connection retry aborted" });
|
|
2863
3010
|
return;
|
|
2864
3011
|
} else {
|
|
2865
3012
|
throw err;
|
|
@@ -2871,13 +3018,13 @@ var ActorConnRaw = class {
|
|
|
2871
3018
|
try {
|
|
2872
3019
|
if (this.#onOpenPromise)
|
|
2873
3020
|
throw new Error("#onOpenPromise already defined");
|
|
2874
|
-
this.#onOpenPromise =
|
|
3021
|
+
this.#onOpenPromise = _chunkLXAVET4Acjs.promiseWithResolvers.call(void 0, );
|
|
2875
3022
|
if (this.#client[TRANSPORT_SYMBOL] === "websocket") {
|
|
2876
3023
|
await this.#connectWebSocket();
|
|
2877
3024
|
} else if (this.#client[TRANSPORT_SYMBOL] === "sse") {
|
|
2878
3025
|
await this.#connectSse();
|
|
2879
3026
|
} else {
|
|
2880
|
-
|
|
3027
|
+
_chunkLXAVET4Acjs.assertUnreachable.call(void 0, this.#client[TRANSPORT_SYMBOL]);
|
|
2881
3028
|
}
|
|
2882
3029
|
await this.#onOpenPromise.promise;
|
|
2883
3030
|
} finally {
|
|
@@ -2890,15 +3037,34 @@ var ActorConnRaw = class {
|
|
|
2890
3037
|
this.#actorQuery,
|
|
2891
3038
|
this.#driver
|
|
2892
3039
|
);
|
|
3040
|
+
const isReconnection = this.#connectionId && this.#connectionToken;
|
|
3041
|
+
if (isReconnection) {
|
|
3042
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3043
|
+
msg: "attempting websocket reconnection",
|
|
3044
|
+
connectionId: this.#connectionId
|
|
3045
|
+
});
|
|
3046
|
+
}
|
|
2893
3047
|
const ws = await this.#driver.openWebSocket(
|
|
2894
|
-
|
|
3048
|
+
_chunkNDCVQZBScjs.PATH_CONNECT_WEBSOCKET,
|
|
2895
3049
|
actorId,
|
|
2896
3050
|
this.#encoding,
|
|
2897
|
-
this.#params
|
|
3051
|
+
this.#params,
|
|
3052
|
+
// Pass connection ID and token for reconnection if available
|
|
3053
|
+
isReconnection ? this.#connectionId : void 0,
|
|
3054
|
+
isReconnection ? this.#connectionToken : void 0
|
|
2898
3055
|
);
|
|
3056
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3057
|
+
msg: "transport set to new websocket",
|
|
3058
|
+
connectionId: this.#connectionId,
|
|
3059
|
+
readyState: ws.readyState,
|
|
3060
|
+
messageQueueLength: this.#messageQueue.length
|
|
3061
|
+
});
|
|
2899
3062
|
this.#transport = { websocket: ws };
|
|
2900
3063
|
ws.addEventListener("open", () => {
|
|
2901
|
-
|
|
3064
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3065
|
+
msg: "client websocket open",
|
|
3066
|
+
connectionId: this.#connectionId
|
|
3067
|
+
});
|
|
2902
3068
|
});
|
|
2903
3069
|
ws.addEventListener("message", async (ev) => {
|
|
2904
3070
|
this.#handleOnMessage(ev.data);
|
|
@@ -2917,13 +3083,14 @@ var ActorConnRaw = class {
|
|
|
2917
3083
|
this.#actorQuery,
|
|
2918
3084
|
this.#driver
|
|
2919
3085
|
);
|
|
2920
|
-
|
|
3086
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "found actor for sse connection", actorId });
|
|
2921
3087
|
_invariant2.default.call(void 0, actorId, "Missing actor ID");
|
|
2922
|
-
|
|
3088
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2923
3089
|
msg: "opening sse connection",
|
|
2924
3090
|
actorId,
|
|
2925
3091
|
encoding: this.#encoding
|
|
2926
3092
|
});
|
|
3093
|
+
const isReconnection = this.#connectionId && this.#connectionToken;
|
|
2927
3094
|
const eventSource = new EventSource("http://actor/connect/sse", {
|
|
2928
3095
|
fetch: (input, init) => {
|
|
2929
3096
|
return this.#driver.sendRequest(
|
|
@@ -2932,9 +3099,13 @@ var ActorConnRaw = class {
|
|
|
2932
3099
|
...init,
|
|
2933
3100
|
headers: {
|
|
2934
3101
|
...init == null ? void 0 : init.headers,
|
|
2935
|
-
"User-Agent":
|
|
2936
|
-
[
|
|
2937
|
-
...this.#params !== void 0 ? { [
|
|
3102
|
+
"User-Agent": _chunkLXAVET4Acjs.httpUserAgent.call(void 0, ),
|
|
3103
|
+
[_chunkNDCVQZBScjs.HEADER_ENCODING]: this.#encoding,
|
|
3104
|
+
...this.#params !== void 0 ? { [_chunkNDCVQZBScjs.HEADER_CONN_PARAMS]: JSON.stringify(this.#params) } : {},
|
|
3105
|
+
...isReconnection ? {
|
|
3106
|
+
[_chunkNDCVQZBScjs.HEADER_CONN_ID]: this.#connectionId,
|
|
3107
|
+
[_chunkNDCVQZBScjs.HEADER_CONN_TOKEN]: this.#connectionToken
|
|
3108
|
+
} : {}
|
|
2938
3109
|
}
|
|
2939
3110
|
})
|
|
2940
3111
|
);
|
|
@@ -2942,6 +3113,7 @@ var ActorConnRaw = class {
|
|
|
2942
3113
|
});
|
|
2943
3114
|
this.#transport = { sse: eventSource };
|
|
2944
3115
|
eventSource.addEventListener("message", (ev) => {
|
|
3116
|
+
if (ev.type === "ping") return;
|
|
2945
3117
|
this.#handleOnMessage(ev.data);
|
|
2946
3118
|
});
|
|
2947
3119
|
eventSource.addEventListener("error", (ev) => {
|
|
@@ -2950,44 +3122,49 @@ var ActorConnRaw = class {
|
|
|
2950
3122
|
}
|
|
2951
3123
|
/** Called by the onopen event from drivers. */
|
|
2952
3124
|
#handleOnOpen() {
|
|
2953
|
-
|
|
3125
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
2954
3126
|
msg: "socket open",
|
|
2955
|
-
messageQueueLength: this.#messageQueue.length
|
|
3127
|
+
messageQueueLength: this.#messageQueue.length,
|
|
3128
|
+
connectionId: this.#connectionId
|
|
2956
3129
|
});
|
|
2957
3130
|
if (this.#onOpenPromise) {
|
|
2958
3131
|
this.#onOpenPromise.resolve(void 0);
|
|
2959
3132
|
} else {
|
|
2960
|
-
|
|
3133
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({ msg: "#onOpenPromise is undefined" });
|
|
2961
3134
|
}
|
|
2962
3135
|
for (const eventName of this.#eventSubscriptions.keys()) {
|
|
2963
3136
|
this.#sendSubscription(eventName, true);
|
|
2964
3137
|
}
|
|
2965
3138
|
const queue = this.#messageQueue;
|
|
2966
3139
|
this.#messageQueue = [];
|
|
3140
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3141
|
+
msg: "flushing message queue",
|
|
3142
|
+
queueLength: queue.length
|
|
3143
|
+
});
|
|
2967
3144
|
for (const msg of queue) {
|
|
2968
3145
|
this.#sendMessage(msg);
|
|
2969
3146
|
}
|
|
2970
3147
|
}
|
|
2971
3148
|
/** Called by the onmessage event from drivers. */
|
|
2972
3149
|
async #handleOnMessage(data) {
|
|
2973
|
-
|
|
3150
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace({
|
|
2974
3151
|
msg: "received message",
|
|
2975
3152
|
dataType: typeof data,
|
|
2976
3153
|
isBlob: data instanceof Blob,
|
|
2977
3154
|
isArrayBuffer: data instanceof ArrayBuffer
|
|
2978
3155
|
});
|
|
2979
3156
|
const response = await this.#parseMessage(data);
|
|
2980
|
-
|
|
2981
|
-
|
|
3157
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace(
|
|
3158
|
+
_chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "_RIVETKIT_LOG_MESSAGE") ? {
|
|
2982
3159
|
msg: "parsed message",
|
|
2983
|
-
message:
|
|
3160
|
+
message: _chunkNDCVQZBScjs.jsonStringifyCompat.call(void 0, response).substring(0, 100) + "..."
|
|
2984
3161
|
} : { msg: "parsed message" }
|
|
2985
3162
|
);
|
|
2986
3163
|
if (response.body.tag === "Init") {
|
|
2987
3164
|
this.#actorId = response.body.val.actorId;
|
|
2988
3165
|
this.#connectionId = response.body.val.connectionId;
|
|
2989
3166
|
this.#connectionToken = response.body.val.connectionToken;
|
|
2990
|
-
|
|
3167
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace({
|
|
2991
3168
|
msg: "received init message",
|
|
2992
3169
|
actorId: this.#actorId,
|
|
2993
3170
|
connectionId: this.#connectionId
|
|
@@ -2997,7 +3174,7 @@ var ActorConnRaw = class {
|
|
|
2997
3174
|
const { group, code, message, metadata, actionId } = response.body.val;
|
|
2998
3175
|
if (actionId) {
|
|
2999
3176
|
const inFlight = this.#takeActionInFlight(Number(actionId));
|
|
3000
|
-
|
|
3177
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({
|
|
3001
3178
|
msg: "action error",
|
|
3002
3179
|
actionId,
|
|
3003
3180
|
actionName: inFlight == null ? void 0 : inFlight.name,
|
|
@@ -3008,7 +3185,7 @@ var ActorConnRaw = class {
|
|
|
3008
3185
|
});
|
|
3009
3186
|
inFlight.reject(new ActorError(group, code, message, metadata));
|
|
3010
3187
|
} else {
|
|
3011
|
-
|
|
3188
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({
|
|
3012
3189
|
msg: "connection error",
|
|
3013
3190
|
group,
|
|
3014
3191
|
code,
|
|
@@ -3032,22 +3209,22 @@ var ActorConnRaw = class {
|
|
|
3032
3209
|
}
|
|
3033
3210
|
} else if (response.body.tag === "ActionResponse") {
|
|
3034
3211
|
const { id: actionId } = response.body.val;
|
|
3035
|
-
|
|
3212
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace({
|
|
3036
3213
|
msg: "received action response",
|
|
3037
3214
|
actionId
|
|
3038
3215
|
});
|
|
3039
3216
|
const inFlight = this.#takeActionInFlight(Number(actionId));
|
|
3040
|
-
|
|
3217
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace({
|
|
3041
3218
|
msg: "resolving action promise",
|
|
3042
3219
|
actionId,
|
|
3043
3220
|
actionName: inFlight == null ? void 0 : inFlight.name
|
|
3044
3221
|
});
|
|
3045
3222
|
inFlight.resolve(response.body.val);
|
|
3046
3223
|
} else if (response.body.tag === "Event") {
|
|
3047
|
-
|
|
3224
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace({ msg: "received event", name: response.body.val.name });
|
|
3048
3225
|
this.#dispatchEvent(response.body.val);
|
|
3049
3226
|
} else {
|
|
3050
|
-
|
|
3227
|
+
_chunkLXAVET4Acjs.assertUnreachable.call(void 0, response.body);
|
|
3051
3228
|
}
|
|
3052
3229
|
}
|
|
3053
3230
|
/** Called by the onclose event from drivers. */
|
|
@@ -3056,30 +3233,45 @@ var ActorConnRaw = class {
|
|
|
3056
3233
|
this.#onOpenPromise.reject(new Error("Closed"));
|
|
3057
3234
|
}
|
|
3058
3235
|
const closeEvent = event;
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3236
|
+
const wasClean = closeEvent.wasClean;
|
|
3237
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).info({
|
|
3238
|
+
msg: "socket closed",
|
|
3239
|
+
code: closeEvent.code,
|
|
3240
|
+
reason: closeEvent.reason,
|
|
3241
|
+
wasClean,
|
|
3242
|
+
connectionId: this.#connectionId,
|
|
3243
|
+
messageQueueLength: this.#messageQueue.length,
|
|
3244
|
+
actionsInFlight: this.#actionsInFlight.size
|
|
3245
|
+
});
|
|
3246
|
+
if (this.#actionsInFlight.size > 0) {
|
|
3247
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3248
|
+
msg: "rejecting in-flight actions after disconnect",
|
|
3249
|
+
count: this.#actionsInFlight.size,
|
|
3250
|
+
connectionId: this.#connectionId,
|
|
3251
|
+
wasClean
|
|
3072
3252
|
});
|
|
3253
|
+
const disconnectError = new Error(
|
|
3254
|
+
wasClean ? "Connection closed" : "Connection lost"
|
|
3255
|
+
);
|
|
3256
|
+
for (const actionInfo of this.#actionsInFlight.values()) {
|
|
3257
|
+
actionInfo.reject(disconnectError);
|
|
3258
|
+
}
|
|
3259
|
+
this.#actionsInFlight.clear();
|
|
3073
3260
|
}
|
|
3074
3261
|
this.#transport = void 0;
|
|
3075
3262
|
if (!this.#disposed && !this.#connecting) {
|
|
3263
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3264
|
+
msg: "triggering reconnect",
|
|
3265
|
+
connectionId: this.#connectionId,
|
|
3266
|
+
messageQueueLength: this.#messageQueue.length
|
|
3267
|
+
});
|
|
3076
3268
|
this.#connectWithRetry();
|
|
3077
3269
|
}
|
|
3078
3270
|
}
|
|
3079
3271
|
/** Called by the onerror event from drivers. */
|
|
3080
3272
|
#handleOnError() {
|
|
3081
3273
|
if (this.#disposed) return;
|
|
3082
|
-
|
|
3274
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn("socket error");
|
|
3083
3275
|
}
|
|
3084
3276
|
#takeActionInFlight(id) {
|
|
3085
3277
|
const inFlight = this.#actionsInFlight.get(id);
|
|
@@ -3109,9 +3301,9 @@ var ActorConnRaw = class {
|
|
|
3109
3301
|
try {
|
|
3110
3302
|
handler(error);
|
|
3111
3303
|
} catch (err) {
|
|
3112
|
-
|
|
3304
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).error({
|
|
3113
3305
|
msg: "error in connection error handler",
|
|
3114
|
-
error:
|
|
3306
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, err)
|
|
3115
3307
|
});
|
|
3116
3308
|
}
|
|
3117
3309
|
}
|
|
@@ -3176,33 +3368,49 @@ var ActorConnRaw = class {
|
|
|
3176
3368
|
};
|
|
3177
3369
|
}
|
|
3178
3370
|
#sendMessage(message, opts) {
|
|
3371
|
+
var _a, _b;
|
|
3179
3372
|
if (this.#disposed) {
|
|
3180
3373
|
throw new ActorConnDisposed();
|
|
3181
3374
|
}
|
|
3182
3375
|
let queueMessage = false;
|
|
3183
3376
|
if (!this.#transport) {
|
|
3377
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "no transport, queueing message" });
|
|
3184
3378
|
queueMessage = true;
|
|
3185
3379
|
} else if ("websocket" in this.#transport) {
|
|
3186
|
-
|
|
3380
|
+
const readyState = this.#transport.websocket.readyState;
|
|
3381
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3382
|
+
msg: "websocket send attempt",
|
|
3383
|
+
readyState,
|
|
3384
|
+
readyStateString: readyState === 0 ? "CONNECTING" : readyState === 1 ? "OPEN" : readyState === 2 ? "CLOSING" : "CLOSED",
|
|
3385
|
+
connectionId: this.#connectionId,
|
|
3386
|
+
messageType: message.body.tag,
|
|
3387
|
+
actionName: (_a = message.body.val) == null ? void 0 : _a.name
|
|
3388
|
+
});
|
|
3389
|
+
if (readyState === 1) {
|
|
3187
3390
|
try {
|
|
3188
|
-
const messageSerialized =
|
|
3391
|
+
const messageSerialized = _chunkNDCVQZBScjs.serializeWithEncoding.call(void 0,
|
|
3189
3392
|
this.#encoding,
|
|
3190
3393
|
message,
|
|
3191
|
-
|
|
3394
|
+
_chunk7OOBMCQIcjs.TO_SERVER_VERSIONED
|
|
3192
3395
|
);
|
|
3193
3396
|
this.#transport.websocket.send(messageSerialized);
|
|
3194
|
-
|
|
3397
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace({
|
|
3195
3398
|
msg: "sent websocket message",
|
|
3196
3399
|
len: messageLength(messageSerialized)
|
|
3197
3400
|
});
|
|
3198
3401
|
} catch (error) {
|
|
3199
|
-
|
|
3402
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({
|
|
3200
3403
|
msg: "failed to send message, added to queue",
|
|
3201
|
-
error
|
|
3404
|
+
error,
|
|
3405
|
+
connectionId: this.#connectionId
|
|
3202
3406
|
});
|
|
3203
3407
|
queueMessage = true;
|
|
3204
3408
|
}
|
|
3205
3409
|
} else {
|
|
3410
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3411
|
+
msg: "websocket not open, queueing message",
|
|
3412
|
+
readyState
|
|
3413
|
+
});
|
|
3206
3414
|
queueMessage = true;
|
|
3207
3415
|
}
|
|
3208
3416
|
} else if ("sse" in this.#transport) {
|
|
@@ -3212,24 +3420,30 @@ var ActorConnRaw = class {
|
|
|
3212
3420
|
queueMessage = true;
|
|
3213
3421
|
}
|
|
3214
3422
|
} else {
|
|
3215
|
-
|
|
3423
|
+
_chunkLXAVET4Acjs.assertUnreachable.call(void 0, this.#transport);
|
|
3216
3424
|
}
|
|
3217
3425
|
if (!(opts == null ? void 0 : opts.ephemeral) && queueMessage) {
|
|
3218
3426
|
this.#messageQueue.push(message);
|
|
3219
|
-
|
|
3427
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3428
|
+
msg: "queued connection message",
|
|
3429
|
+
queueLength: this.#messageQueue.length,
|
|
3430
|
+
connectionId: this.#connectionId,
|
|
3431
|
+
messageType: message.body.tag,
|
|
3432
|
+
actionName: (_b = message.body.val) == null ? void 0 : _b.name
|
|
3433
|
+
});
|
|
3220
3434
|
}
|
|
3221
3435
|
}
|
|
3222
3436
|
async #sendHttpMessage(message, opts) {
|
|
3223
3437
|
try {
|
|
3224
3438
|
if (!this.#actorId || !this.#connectionId || !this.#connectionToken)
|
|
3225
3439
|
throw new InternalError2("Missing connection ID or token.");
|
|
3226
|
-
|
|
3227
|
-
|
|
3440
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).trace(
|
|
3441
|
+
_chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "_RIVETKIT_LOG_MESSAGE") ? {
|
|
3228
3442
|
msg: "sent http message",
|
|
3229
|
-
message: `${
|
|
3443
|
+
message: `${_chunkNDCVQZBScjs.jsonStringifyCompat.call(void 0, message).substring(0, 100)}...`
|
|
3230
3444
|
} : { msg: "sent http message" }
|
|
3231
3445
|
);
|
|
3232
|
-
|
|
3446
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({
|
|
3233
3447
|
msg: "sending http message",
|
|
3234
3448
|
actorId: this.#actorId,
|
|
3235
3449
|
connectionId: this.#connectionId
|
|
@@ -3238,19 +3452,19 @@ var ActorConnRaw = class {
|
|
|
3238
3452
|
url: "http://actor/connections/message",
|
|
3239
3453
|
method: "POST",
|
|
3240
3454
|
headers: {
|
|
3241
|
-
[
|
|
3242
|
-
[
|
|
3243
|
-
[
|
|
3455
|
+
[_chunkNDCVQZBScjs.HEADER_ENCODING]: this.#encoding,
|
|
3456
|
+
[_chunkNDCVQZBScjs.HEADER_CONN_ID]: this.#connectionId,
|
|
3457
|
+
[_chunkNDCVQZBScjs.HEADER_CONN_TOKEN]: this.#connectionToken
|
|
3244
3458
|
},
|
|
3245
3459
|
body: message,
|
|
3246
3460
|
encoding: this.#encoding,
|
|
3247
3461
|
skipParseResponse: true,
|
|
3248
3462
|
customFetch: this.#driver.sendRequest.bind(this.#driver, this.#actorId),
|
|
3249
|
-
requestVersionedDataHandler:
|
|
3250
|
-
responseVersionedDataHandler:
|
|
3463
|
+
requestVersionedDataHandler: _chunk7OOBMCQIcjs.TO_SERVER_VERSIONED,
|
|
3464
|
+
responseVersionedDataHandler: _chunk7OOBMCQIcjs.TO_CLIENT_VERSIONED
|
|
3251
3465
|
});
|
|
3252
3466
|
} catch (error) {
|
|
3253
|
-
|
|
3467
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({ msg: "failed to send message, added to queue", error });
|
|
3254
3468
|
if (!(opts == null ? void 0 : opts.ephemeral)) {
|
|
3255
3469
|
this.#messageQueue.unshift(message);
|
|
3256
3470
|
}
|
|
@@ -3258,7 +3472,7 @@ var ActorConnRaw = class {
|
|
|
3258
3472
|
}
|
|
3259
3473
|
async #parseMessage(data) {
|
|
3260
3474
|
_invariant2.default.call(void 0, this.#transport, "transport must be defined");
|
|
3261
|
-
if (
|
|
3475
|
+
if (_chunkNDCVQZBScjs.encodingIsBinary.call(void 0, this.#encoding) && "sse" in this.#transport) {
|
|
3262
3476
|
if (typeof data === "string") {
|
|
3263
3477
|
const binaryString = atob(data);
|
|
3264
3478
|
data = new Uint8Array(
|
|
@@ -3270,8 +3484,22 @@ var ActorConnRaw = class {
|
|
|
3270
3484
|
);
|
|
3271
3485
|
}
|
|
3272
3486
|
}
|
|
3273
|
-
const buffer = await
|
|
3274
|
-
return
|
|
3487
|
+
const buffer = await _chunk7OOBMCQIcjs.inputDataToBuffer.call(void 0, data);
|
|
3488
|
+
return _chunkNDCVQZBScjs.deserializeWithEncoding.call(void 0, this.#encoding, buffer, _chunk7OOBMCQIcjs.TO_CLIENT_VERSIONED);
|
|
3489
|
+
}
|
|
3490
|
+
/**
|
|
3491
|
+
* Get the actor ID (for testing purposes).
|
|
3492
|
+
* @internal
|
|
3493
|
+
*/
|
|
3494
|
+
get actorId() {
|
|
3495
|
+
return this.#actorId;
|
|
3496
|
+
}
|
|
3497
|
+
/**
|
|
3498
|
+
* Get the connection ID (for testing purposes).
|
|
3499
|
+
* @internal
|
|
3500
|
+
*/
|
|
3501
|
+
get connectionId() {
|
|
3502
|
+
return this.#connectionId;
|
|
3275
3503
|
}
|
|
3276
3504
|
/**
|
|
3277
3505
|
* Disconnects from the actor.
|
|
@@ -3280,11 +3508,11 @@ var ActorConnRaw = class {
|
|
|
3280
3508
|
*/
|
|
3281
3509
|
async dispose() {
|
|
3282
3510
|
if (this.#disposed) {
|
|
3283
|
-
|
|
3511
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({ msg: "connection already disconnected" });
|
|
3284
3512
|
return;
|
|
3285
3513
|
}
|
|
3286
3514
|
this.#disposed = true;
|
|
3287
|
-
|
|
3515
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "disposing actor conn" });
|
|
3288
3516
|
clearInterval(this.#keepNodeAliveInterval);
|
|
3289
3517
|
this.#abortController.abort();
|
|
3290
3518
|
this.#client[ACTOR_CONNS_SYMBOL].delete(this);
|
|
@@ -3292,20 +3520,42 @@ var ActorConnRaw = class {
|
|
|
3292
3520
|
} else if ("websocket" in this.#transport) {
|
|
3293
3521
|
const ws = this.#transport.websocket;
|
|
3294
3522
|
if (ws.readyState === 2 || ws.readyState === 3) {
|
|
3295
|
-
|
|
3523
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "ws already closed or closing" });
|
|
3296
3524
|
} else {
|
|
3297
|
-
const { promise, resolve } =
|
|
3525
|
+
const { promise, resolve } = _chunkLXAVET4Acjs.promiseWithResolvers.call(void 0, );
|
|
3298
3526
|
ws.addEventListener("close", () => {
|
|
3299
|
-
|
|
3527
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).debug({ msg: "ws closed" });
|
|
3300
3528
|
resolve(void 0);
|
|
3301
3529
|
});
|
|
3302
3530
|
ws.close();
|
|
3303
3531
|
await promise;
|
|
3304
3532
|
}
|
|
3305
3533
|
} else if ("sse" in this.#transport) {
|
|
3534
|
+
if (this.#connectionId && this.#connectionToken) {
|
|
3535
|
+
try {
|
|
3536
|
+
await sendHttpRequest({
|
|
3537
|
+
url: "http://actor/connections/close",
|
|
3538
|
+
method: "POST",
|
|
3539
|
+
headers: {
|
|
3540
|
+
[_chunkNDCVQZBScjs.HEADER_CONN_ID]: this.#connectionId,
|
|
3541
|
+
[_chunkNDCVQZBScjs.HEADER_CONN_TOKEN]: this.#connectionToken
|
|
3542
|
+
},
|
|
3543
|
+
encoding: this.#encoding,
|
|
3544
|
+
skipParseResponse: true,
|
|
3545
|
+
customFetch: this.#driver.sendRequest.bind(
|
|
3546
|
+
this.#driver,
|
|
3547
|
+
this.#actorId
|
|
3548
|
+
),
|
|
3549
|
+
requestVersionedDataHandler: _chunk7OOBMCQIcjs.TO_SERVER_VERSIONED,
|
|
3550
|
+
responseVersionedDataHandler: _chunk7OOBMCQIcjs.TO_CLIENT_VERSIONED
|
|
3551
|
+
});
|
|
3552
|
+
} catch (error) {
|
|
3553
|
+
_chunkVAF63BEIcjs.logger.call(void 0, ).warn({ msg: "failed to send close request", error });
|
|
3554
|
+
}
|
|
3555
|
+
}
|
|
3306
3556
|
this.#transport.sse.close();
|
|
3307
3557
|
} else {
|
|
3308
|
-
|
|
3558
|
+
_chunkLXAVET4Acjs.assertUnreachable.call(void 0, this.#transport);
|
|
3309
3559
|
}
|
|
3310
3560
|
this.#transport = void 0;
|
|
3311
3561
|
}
|
|
@@ -3331,7 +3581,7 @@ var ActorConnRaw = class {
|
|
|
3331
3581
|
|
|
3332
3582
|
// src/remote-manager-driver/log.ts
|
|
3333
3583
|
function logger2() {
|
|
3334
|
-
return
|
|
3584
|
+
return _chunkETDWYT2Pcjs.getLogger.call(void 0, "remote-manager-driver");
|
|
3335
3585
|
}
|
|
3336
3586
|
|
|
3337
3587
|
// src/remote-manager-driver/api-utils.ts
|
|
@@ -3348,14 +3598,20 @@ function getEndpoint(config) {
|
|
|
3348
3598
|
}
|
|
3349
3599
|
async function apiCall(config, method, path, body) {
|
|
3350
3600
|
const endpoint = getEndpoint(config);
|
|
3351
|
-
const url =
|
|
3601
|
+
const url = _chunkLXAVET4Acjs.combineUrlPath.call(void 0, endpoint, path, {
|
|
3352
3602
|
namespace: config.namespace
|
|
3353
3603
|
});
|
|
3354
3604
|
logger2().debug({ msg: "making api call", method, url });
|
|
3605
|
+
const headers = {
|
|
3606
|
+
...config.headers
|
|
3607
|
+
};
|
|
3608
|
+
if (config.token) {
|
|
3609
|
+
headers.Authorization = `Bearer ${config.token}`;
|
|
3610
|
+
}
|
|
3355
3611
|
return await sendHttpRequest({
|
|
3356
3612
|
method,
|
|
3357
3613
|
url,
|
|
3358
|
-
headers
|
|
3614
|
+
headers,
|
|
3359
3615
|
body,
|
|
3360
3616
|
encoding: "json",
|
|
3361
3617
|
skipParseResponse: false,
|
|
@@ -3368,20 +3624,23 @@ async function apiCall(config, method, path, body) {
|
|
|
3368
3624
|
async function sendHttpRequestToActor(runConfig, actorId, actorRequest) {
|
|
3369
3625
|
const url = new URL(actorRequest.url);
|
|
3370
3626
|
const endpoint = getEndpoint(runConfig);
|
|
3371
|
-
const guardUrl =
|
|
3627
|
+
const guardUrl = _chunkLXAVET4Acjs.combineUrlPath.call(void 0, endpoint, url.pathname + url.search);
|
|
3372
3628
|
let bodyToSend = null;
|
|
3373
|
-
const guardHeaders = buildGuardHeadersForHttp(
|
|
3374
|
-
|
|
3629
|
+
const guardHeaders = buildGuardHeadersForHttp(
|
|
3630
|
+
runConfig,
|
|
3631
|
+
actorRequest,
|
|
3632
|
+
actorId
|
|
3633
|
+
);
|
|
3634
|
+
if (actorRequest.method !== "GET" && actorRequest.method !== "HEAD") {
|
|
3375
3635
|
if (actorRequest.bodyUsed) {
|
|
3376
3636
|
throw new Error("Request body has already been consumed");
|
|
3377
3637
|
}
|
|
3378
|
-
const
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
"content-length",
|
|
3383
|
-
|
|
3384
|
-
);
|
|
3638
|
+
const reqBody = await actorRequest.arrayBuffer();
|
|
3639
|
+
if (reqBody.byteLength !== 0) {
|
|
3640
|
+
bodyToSend = reqBody;
|
|
3641
|
+
guardHeaders.delete("transfer-encoding");
|
|
3642
|
+
guardHeaders.set("content-length", String(bodyToSend.byteLength));
|
|
3643
|
+
}
|
|
3385
3644
|
}
|
|
3386
3645
|
const guardRequest = new Request(guardUrl, {
|
|
3387
3646
|
method: actorRequest.method,
|
|
@@ -3394,71 +3653,92 @@ async function sendHttpRequestToActor(runConfig, actorId, actorRequest) {
|
|
|
3394
3653
|
function mutableResponse(fetchRes) {
|
|
3395
3654
|
return new Response(fetchRes.body, fetchRes);
|
|
3396
3655
|
}
|
|
3397
|
-
function buildGuardHeadersForHttp(actorRequest, actorId) {
|
|
3656
|
+
function buildGuardHeadersForHttp(runConfig, actorRequest, actorId) {
|
|
3398
3657
|
const headers = new Headers();
|
|
3399
3658
|
for (const [key, value] of actorRequest.headers.entries()) {
|
|
3400
3659
|
headers.set(key, value);
|
|
3401
3660
|
}
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3661
|
+
for (const [key, value] of Object.entries(runConfig.headers)) {
|
|
3662
|
+
headers.set(key, value);
|
|
3663
|
+
}
|
|
3664
|
+
headers.set(_chunkNDCVQZBScjs.HEADER_RIVET_TARGET, "actor");
|
|
3665
|
+
headers.set(_chunkNDCVQZBScjs.HEADER_RIVET_ACTOR, actorId);
|
|
3666
|
+
if (runConfig.token) {
|
|
3667
|
+
headers.set(_chunkNDCVQZBScjs.HEADER_RIVET_TOKEN, runConfig.token);
|
|
3668
|
+
}
|
|
3405
3669
|
return headers;
|
|
3406
3670
|
}
|
|
3407
3671
|
|
|
3408
3672
|
// src/remote-manager-driver/actor-websocket-client.ts
|
|
3409
|
-
async function openWebSocketToActor(runConfig, path, actorId, encoding, params) {
|
|
3410
|
-
const WebSocket2 = await
|
|
3673
|
+
async function openWebSocketToActor(runConfig, path, actorId, encoding, params, connId, connToken) {
|
|
3674
|
+
const WebSocket2 = await _chunkVAF63BEIcjs.importWebSocket.call(void 0, );
|
|
3411
3675
|
const endpoint = getEndpoint(runConfig);
|
|
3412
|
-
const guardUrl =
|
|
3676
|
+
const guardUrl = _chunkLXAVET4Acjs.combineUrlPath.call(void 0, endpoint, path);
|
|
3413
3677
|
logger2().debug({
|
|
3414
3678
|
msg: "opening websocket to actor via guard",
|
|
3415
3679
|
actorId,
|
|
3416
3680
|
path,
|
|
3417
3681
|
guardUrl
|
|
3418
3682
|
});
|
|
3419
|
-
const ws = new WebSocket2(
|
|
3420
|
-
|
|
3421
|
-
|
|
3683
|
+
const ws = new WebSocket2(
|
|
3684
|
+
guardUrl,
|
|
3685
|
+
buildWebSocketProtocols(
|
|
3686
|
+
runConfig,
|
|
3687
|
+
actorId,
|
|
3688
|
+
encoding,
|
|
3689
|
+
params,
|
|
3690
|
+
connId,
|
|
3691
|
+
connToken
|
|
3692
|
+
)
|
|
3693
|
+
);
|
|
3422
3694
|
ws.binaryType = "arraybuffer";
|
|
3423
3695
|
logger2().debug({ msg: "websocket connection opened", actorId });
|
|
3424
3696
|
return ws;
|
|
3425
3697
|
}
|
|
3426
|
-
function
|
|
3427
|
-
const
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3698
|
+
function buildWebSocketProtocols(runConfig, actorId, encoding, params, connId, connToken) {
|
|
3699
|
+
const protocols = [];
|
|
3700
|
+
protocols.push(_chunkNDCVQZBScjs.WS_PROTOCOL_STANDARD);
|
|
3701
|
+
protocols.push(`${_chunkNDCVQZBScjs.WS_PROTOCOL_TARGET}actor`);
|
|
3702
|
+
protocols.push(`${_chunkNDCVQZBScjs.WS_PROTOCOL_ACTOR}${actorId}`);
|
|
3703
|
+
protocols.push(`${_chunkNDCVQZBScjs.WS_PROTOCOL_ENCODING}${encoding}`);
|
|
3704
|
+
if (runConfig.token) {
|
|
3705
|
+
protocols.push(`${_chunkNDCVQZBScjs.WS_PROTOCOL_TOKEN}${runConfig.token}`);
|
|
3706
|
+
}
|
|
3432
3707
|
if (params) {
|
|
3433
|
-
|
|
3708
|
+
protocols.push(
|
|
3709
|
+
`${_chunkNDCVQZBScjs.WS_PROTOCOL_CONN_PARAMS}${encodeURIComponent(JSON.stringify(params))}`
|
|
3710
|
+
);
|
|
3434
3711
|
}
|
|
3435
|
-
if (
|
|
3436
|
-
|
|
3712
|
+
if (connId) {
|
|
3713
|
+
protocols.push(`${_chunkNDCVQZBScjs.WS_PROTOCOL_CONN_ID}${connId}`);
|
|
3437
3714
|
}
|
|
3438
|
-
|
|
3715
|
+
if (connToken) {
|
|
3716
|
+
protocols.push(`${_chunkNDCVQZBScjs.WS_PROTOCOL_CONN_TOKEN}${connToken}`);
|
|
3717
|
+
}
|
|
3718
|
+
return protocols;
|
|
3439
3719
|
}
|
|
3440
3720
|
|
|
3441
3721
|
// src/remote-manager-driver/api-endpoints.ts
|
|
3442
|
-
async function getActor(config, actorId) {
|
|
3722
|
+
async function getActor(config, name, actorId) {
|
|
3443
3723
|
return apiCall(
|
|
3444
3724
|
config,
|
|
3445
3725
|
"GET",
|
|
3446
|
-
`/actors
|
|
3726
|
+
`/actors?name=${name}&actor_ids=${encodeURIComponent(actorId)}`
|
|
3447
3727
|
);
|
|
3448
3728
|
}
|
|
3449
|
-
async function
|
|
3729
|
+
async function getActorByKey(config, name, key) {
|
|
3450
3730
|
const serializedKey = serializeActorKey(key);
|
|
3451
3731
|
return apiCall(
|
|
3452
3732
|
config,
|
|
3453
3733
|
"GET",
|
|
3454
|
-
`/actors
|
|
3734
|
+
`/actors?name=${encodeURIComponent(name)}&key=${encodeURIComponent(serializedKey)}`
|
|
3455
3735
|
);
|
|
3456
3736
|
}
|
|
3457
|
-
async function
|
|
3737
|
+
async function getOrCreateActor(config, request) {
|
|
3458
3738
|
return apiCall(
|
|
3459
3739
|
config,
|
|
3460
3740
|
"PUT",
|
|
3461
|
-
`/actors
|
|
3741
|
+
`/actors`,
|
|
3462
3742
|
request
|
|
3463
3743
|
);
|
|
3464
3744
|
}
|
|
@@ -3479,13 +3759,8 @@ async function destroyActor(config, actorId) {
|
|
|
3479
3759
|
}
|
|
3480
3760
|
|
|
3481
3761
|
// src/remote-manager-driver/ws-proxy.ts
|
|
3482
|
-
async function createWebSocketProxy(c, targetUrl,
|
|
3483
|
-
const WebSocket2 = await
|
|
3484
|
-
for (const [k, v] of c.req.raw.headers.entries()) {
|
|
3485
|
-
if (!k.startsWith("sec-") && k !== "connection" && k !== "upgrade") {
|
|
3486
|
-
headers[k] = v;
|
|
3487
|
-
}
|
|
3488
|
-
}
|
|
3762
|
+
async function createWebSocketProxy(c, targetUrl, protocols) {
|
|
3763
|
+
const WebSocket2 = await _chunkVAF63BEIcjs.importWebSocket.call(void 0, );
|
|
3489
3764
|
const state = {};
|
|
3490
3765
|
return {
|
|
3491
3766
|
onOpen: async (event, clientWs) => {
|
|
@@ -3498,7 +3773,7 @@ async function createWebSocketProxy(c, targetUrl, headers) {
|
|
|
3498
3773
|
});
|
|
3499
3774
|
return;
|
|
3500
3775
|
}
|
|
3501
|
-
const targetWs = new WebSocket2(targetUrl,
|
|
3776
|
+
const targetWs = new WebSocket2(targetUrl, protocols);
|
|
3502
3777
|
state.targetWs = targetWs;
|
|
3503
3778
|
state.connectPromise = new Promise((resolve, reject) => {
|
|
3504
3779
|
targetWs.addEventListener("open", () => {
|
|
@@ -3545,7 +3820,7 @@ async function createWebSocketProxy(c, targetUrl, headers) {
|
|
|
3545
3820
|
logger2().error({
|
|
3546
3821
|
msg: "target websocket error",
|
|
3547
3822
|
targetUrl,
|
|
3548
|
-
error:
|
|
3823
|
+
error: _chunkLXAVET4Acjs.stringifyError.call(void 0, error)
|
|
3549
3824
|
});
|
|
3550
3825
|
closeWebSocketIfOpen(clientWs, 1011, "Target WebSocket error");
|
|
3551
3826
|
});
|
|
@@ -3620,31 +3895,26 @@ var RemoteManagerDriver = class {
|
|
|
3620
3895
|
name,
|
|
3621
3896
|
actorId
|
|
3622
3897
|
}) {
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
apiName: response.actor.name,
|
|
3630
|
-
requestedName: name
|
|
3631
|
-
});
|
|
3632
|
-
return void 0;
|
|
3633
|
-
}
|
|
3634
|
-
const keyRaw = response.actor.key;
|
|
3635
|
-
_invariant2.default.call(void 0, keyRaw, `actor ${actorId} should have key`);
|
|
3636
|
-
const key = deserializeActorKey(keyRaw);
|
|
3637
|
-
return {
|
|
3898
|
+
const response = await getActor(this.#config, name, actorId);
|
|
3899
|
+
const actor = response.actors[0];
|
|
3900
|
+
if (!actor) return void 0;
|
|
3901
|
+
if (actor.name !== name) {
|
|
3902
|
+
logger2().debug({
|
|
3903
|
+
msg: "actor name mismatch from api",
|
|
3638
3904
|
actorId,
|
|
3639
|
-
name,
|
|
3640
|
-
|
|
3641
|
-
};
|
|
3642
|
-
|
|
3643
|
-
if (error instanceof EngineApiError && error.group === "actor" && error.code === "not_found") {
|
|
3644
|
-
return void 0;
|
|
3645
|
-
}
|
|
3646
|
-
throw error;
|
|
3905
|
+
apiName: actor.name,
|
|
3906
|
+
requestedName: name
|
|
3907
|
+
});
|
|
3908
|
+
return void 0;
|
|
3647
3909
|
}
|
|
3910
|
+
const keyRaw = actor.key;
|
|
3911
|
+
_invariant2.default.call(void 0, keyRaw, `actor ${actorId} should have key`);
|
|
3912
|
+
const key = deserializeActorKey(keyRaw);
|
|
3913
|
+
return {
|
|
3914
|
+
actorId,
|
|
3915
|
+
name,
|
|
3916
|
+
key
|
|
3917
|
+
};
|
|
3648
3918
|
}
|
|
3649
3919
|
async getWithKey({
|
|
3650
3920
|
c,
|
|
@@ -3653,11 +3923,10 @@ var RemoteManagerDriver = class {
|
|
|
3653
3923
|
}) {
|
|
3654
3924
|
logger2().debug({ msg: "getWithKey: searching for actor", name, key });
|
|
3655
3925
|
try {
|
|
3656
|
-
const response = await
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
const actorId = response.actor_id;
|
|
3926
|
+
const response = await getActorByKey(this.#config, name, key);
|
|
3927
|
+
const actor = response.actors[0];
|
|
3928
|
+
if (!actor) return void 0;
|
|
3929
|
+
const actorId = actor.actor_id;
|
|
3661
3930
|
logger2().debug({
|
|
3662
3931
|
msg: "getWithKey: found actor via api",
|
|
3663
3932
|
actorId,
|
|
@@ -3683,20 +3952,20 @@ var RemoteManagerDriver = class {
|
|
|
3683
3952
|
name,
|
|
3684
3953
|
key
|
|
3685
3954
|
});
|
|
3686
|
-
const
|
|
3955
|
+
const { actor, created } = await getOrCreateActor(this.#config, {
|
|
3687
3956
|
name,
|
|
3688
3957
|
key: serializeActorKey(key),
|
|
3689
3958
|
runner_name_selector: this.#config.runnerName,
|
|
3690
|
-
input:
|
|
3959
|
+
input: actorInput ? cbor6.encode(actorInput).toString("base64") : void 0,
|
|
3691
3960
|
crash_policy: "sleep"
|
|
3692
3961
|
});
|
|
3693
|
-
const actorId =
|
|
3962
|
+
const actorId = actor.actor_id;
|
|
3694
3963
|
logger2().info({
|
|
3695
3964
|
msg: "getOrCreateWithKey: actor ready",
|
|
3696
3965
|
actorId,
|
|
3697
3966
|
name,
|
|
3698
3967
|
key,
|
|
3699
|
-
created
|
|
3968
|
+
created
|
|
3700
3969
|
});
|
|
3701
3970
|
return {
|
|
3702
3971
|
actorId,
|
|
@@ -3734,24 +4003,26 @@ var RemoteManagerDriver = class {
|
|
|
3734
4003
|
async sendRequest(actorId, actorRequest) {
|
|
3735
4004
|
return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
|
|
3736
4005
|
}
|
|
3737
|
-
async openWebSocket(path, actorId, encoding, params) {
|
|
4006
|
+
async openWebSocket(path, actorId, encoding, params, connId, connToken) {
|
|
3738
4007
|
return await openWebSocketToActor(
|
|
3739
4008
|
this.#config,
|
|
3740
4009
|
path,
|
|
3741
4010
|
actorId,
|
|
3742
4011
|
encoding,
|
|
3743
|
-
params
|
|
4012
|
+
params,
|
|
4013
|
+
connId,
|
|
4014
|
+
connToken
|
|
3744
4015
|
);
|
|
3745
4016
|
}
|
|
3746
4017
|
async proxyRequest(_c, actorRequest, actorId) {
|
|
3747
4018
|
return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
|
|
3748
4019
|
}
|
|
3749
|
-
async proxyWebSocket(c, path, actorId, encoding, params,
|
|
4020
|
+
async proxyWebSocket(c, path, actorId, encoding, params, connId, connToken) {
|
|
3750
4021
|
var _a, _b;
|
|
3751
4022
|
const upgradeWebSocket = (_b = (_a = this.#config).getUpgradeWebSocket) == null ? void 0 : _b.call(_a);
|
|
3752
4023
|
_invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
|
|
3753
4024
|
const endpoint = getEndpoint(this.#config);
|
|
3754
|
-
const guardUrl =
|
|
4025
|
+
const guardUrl = _chunkLXAVET4Acjs.combineUrlPath.call(void 0, endpoint, path);
|
|
3755
4026
|
const wsGuardUrl = guardUrl.replace("http://", "ws://");
|
|
3756
4027
|
logger2().debug({
|
|
3757
4028
|
msg: "forwarding websocket to actor via guard",
|
|
@@ -3759,18 +4030,23 @@ var RemoteManagerDriver = class {
|
|
|
3759
4030
|
path,
|
|
3760
4031
|
guardUrl
|
|
3761
4032
|
});
|
|
3762
|
-
const
|
|
4033
|
+
const protocols = buildWebSocketProtocols(
|
|
4034
|
+
this.#config,
|
|
3763
4035
|
actorId,
|
|
3764
4036
|
encoding,
|
|
3765
4037
|
params,
|
|
3766
|
-
|
|
4038
|
+
connId,
|
|
4039
|
+
connToken
|
|
3767
4040
|
);
|
|
3768
|
-
const args = await createWebSocketProxy(c, wsGuardUrl,
|
|
3769
|
-
return await upgradeWebSocket(() => args)(c,
|
|
4041
|
+
const args = await createWebSocketProxy(c, wsGuardUrl, protocols);
|
|
4042
|
+
return await upgradeWebSocket(() => args)(c, _chunkLXAVET4Acjs.noopNext.call(void 0, ));
|
|
3770
4043
|
}
|
|
3771
4044
|
displayInformation() {
|
|
3772
4045
|
return { name: "Remote", properties: {} };
|
|
3773
4046
|
}
|
|
4047
|
+
getOrCreateInspectorAccessToken() {
|
|
4048
|
+
return _chunkNDCVQZBScjs.generateRandomString.call(void 0, );
|
|
4049
|
+
}
|
|
3774
4050
|
};
|
|
3775
4051
|
|
|
3776
4052
|
|
|
@@ -3791,6 +4067,5 @@ var RemoteManagerDriver = class {
|
|
|
3791
4067
|
|
|
3792
4068
|
|
|
3793
4069
|
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
//# sourceMappingURL=chunk-UFWAK3X2.cjs.map
|
|
4070
|
+
exports.generateConnId = generateConnId; exports.generateConnToken = generateConnToken; exports.generateConnSocketId = generateConnSocketId; exports.createActorInspectorRouter = createActorInspectorRouter; exports.serializeActorKey = serializeActorKey; exports.deserializeActorKey = deserializeActorKey; exports.ActorDefinition = ActorDefinition; exports.lookupInRegistry = lookupInRegistry; exports.ActorClientError = ActorClientError; exports.InternalError = InternalError2; exports.ManagerError = ManagerError; exports.MalformedResponseMessage = MalformedResponseMessage; exports.ActorError = ActorError; exports.ActorConnRaw = ActorConnRaw; exports.ActorHandleRaw = ActorHandleRaw; exports.createClientWithDriver = createClientWithDriver; exports.RemoteManagerDriver = RemoteManagerDriver;
|
|
4071
|
+
//# sourceMappingURL=chunk-NUA6LOOJ.cjs.map
|