@plurnk/plurnk-schemes-http 1.4.0 → 1.6.0
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/.env.defaults +10 -40
- package/README.md +38 -34
- package/SPEC.md +260 -227
- package/dist/Config.d.ts +3 -0
- package/dist/Config.d.ts.map +1 -0
- package/dist/Config.js +18 -0
- package/dist/Config.js.map +1 -0
- package/dist/Guard.d.ts.map +1 -1
- package/dist/Guard.js +2 -3
- package/dist/Guard.js.map +1 -1
- package/dist/Http.d.ts +5 -18
- package/dist/Http.d.ts.map +1 -1
- package/dist/Http.js +216 -233
- package/dist/Http.js.map +1 -1
- package/dist/TavilyExtract.d.ts +35 -0
- package/dist/TavilyExtract.d.ts.map +1 -0
- package/dist/TavilyExtract.js +204 -0
- package/dist/TavilyExtract.js.map +1 -0
- package/dist/WebFetcher.d.ts +58 -24
- package/dist/WebFetcher.d.ts.map +1 -1
- package/dist/WebFetcher.js +485 -108
- package/dist/WebFetcher.js.map +1 -1
- package/dist/Ws.d.ts +3 -2
- package/dist/Ws.d.ts.map +1 -1
- package/dist/Ws.js +132 -94
- package/dist/Ws.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/docs/http.md +74 -59
- package/docs/wss.md +19 -14
- package/package.json +3 -5
- package/dist/Browser.d.ts +0 -75
- package/dist/Browser.d.ts.map +0 -1
- package/dist/Browser.js +0 -295
- package/dist/Browser.js.map +0 -1
package/dist/WebFetcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebFetcher.js","sourceRoot":"","sources":["../src/WebFetcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebFetcher.js","sourceRoot":"","sources":["../src/WebFetcher.ts"],"names":[],"mappings":"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"}
|
package/dist/Ws.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SchemeCtx, PassthroughResult, SchemeManifest, SchemeHandler,
|
|
1
|
+
import type { SchemeCtx, PassthroughResult, SchemeManifest, SchemeHandler, RepresentationPreparationRequest, RepresentationPreparationResult, ResolvedEditStatement, SendStatement, KillStatement } from "@plurnk/plurnk-schemes";
|
|
2
2
|
interface SocketEvent {
|
|
3
3
|
readonly data?: unknown;
|
|
4
4
|
readonly code?: number;
|
|
@@ -18,8 +18,9 @@ export default class Ws implements SchemeHandler {
|
|
|
18
18
|
#private;
|
|
19
19
|
static manifest: SchemeManifest;
|
|
20
20
|
constructor(connect?: SocketFactory);
|
|
21
|
-
|
|
21
|
+
prepareRepresentation(request: RepresentationPreparationRequest, ctx: SchemeCtx): Promise<RepresentationPreparationResult>;
|
|
22
22
|
close(): Promise<void>;
|
|
23
|
+
editBatch(statements: readonly ResolvedEditStatement[], ctx: SchemeCtx): Promise<PassthroughResult>;
|
|
23
24
|
send(statement: SendStatement, ctx: SchemeCtx): Promise<PassthroughResult>;
|
|
24
25
|
kill(statement: KillStatement, ctx: SchemeCtx): Promise<PassthroughResult>;
|
|
25
26
|
}
|
package/dist/Ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ws.d.ts","sourceRoot":"","sources":["../src/Ws.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,SAAS,EAGT,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"Ws.d.ts","sourceRoot":"","sources":["../src/Ws.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,SAAS,EAGT,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gCAAgC,EAChC,+BAA+B,EAC/B,qBAAqB,EACrB,aAAa,EACb,aAAa,EAGhB,MAAM,wBAAwB,CAAC;AAYhC,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AACD,UAAU,MAAM;IACZ,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CACZ,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,EAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EACtC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,IAAI,CAAC;IACR,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AACD,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAwB7C,MAAM,CAAC,OAAO,OAAO,EAAG,YAAW,aAAa;;IAC5C,MAAM,CAAC,QAAQ,EAAE,cAAc,CAsB7B;IAOF,YAAY,OAAO,GAAE,aAA6B,EAEjD;IAKK,qBAAqB,CACvB,OAAO,EAAE,gCAAgC,EACzC,GAAG,EAAE,SAAS,GACf,OAAO,CAAC,+BAA+B,CAAC,CA2R1C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB3B;IAIK,SAAS,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmCxG;IAGK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgB/E;IA4DK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiD/E;CAsEJ"}
|
package/dist/Ws.js
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
// WebSocket handler. {§ws} owns its operation surface; {§ws-lifecycle} owns
|
|
2
2
|
// address claims and settlement. Retained sockets follow {§handler-lifecycle}
|
|
3
3
|
// and use the canonical network identity {§network-address}.
|
|
4
|
+
var _a;
|
|
4
5
|
import { NetworkAddress, Results } from "@plurnk/plurnk-schemes";
|
|
5
6
|
import { readFile } from "node:fs/promises";
|
|
6
7
|
// The inbound-frame channel - every message the origin pushes streams here.
|
|
7
8
|
const MESSAGES = "messages";
|
|
8
9
|
const documentation = await readFile(new URL("../docs/wss.md", import.meta.url), "utf-8");
|
|
9
10
|
const SOCKET_OPEN = 1;
|
|
11
|
+
const SOCKET_CLOSE_NORMAL = 1000;
|
|
12
|
+
const SOCKET_CLOSE_UNSUPPORTED_DATA = 4003;
|
|
13
|
+
const SOCKET_CLOSE_INTERNAL_ERROR = 4011;
|
|
10
14
|
// Default: the Node 26+ global WebSocket, reached through globalThis so the lib
|
|
11
15
|
// typing is not a compile dependency (tests always inject, so this path is
|
|
12
16
|
// runtime-only). Fail-hard if the runtime lacks it.
|
|
13
17
|
const connectGlobal = (url) => new globalThis.WebSocket(url);
|
|
14
|
-
|
|
18
|
+
class Ws {
|
|
15
19
|
static manifest = {
|
|
16
20
|
name: "wss",
|
|
17
21
|
channels: { [MESSAGES]: "text/plain" },
|
|
@@ -21,7 +25,15 @@ export default class Ws {
|
|
|
21
25
|
volatile: true,
|
|
22
26
|
modelVisible: true,
|
|
23
27
|
glyph: "🔌",
|
|
24
|
-
example:
|
|
28
|
+
example: [
|
|
29
|
+
"## READ0 (wss://api.example.com/feed)",
|
|
30
|
+
"",
|
|
31
|
+
"## EDIT0 (wss://api.example.com/feed)",
|
|
32
|
+
'{"type":"subscribe","channel":"updates"}',
|
|
33
|
+
"",
|
|
34
|
+
"## SEND0 [200] (wss://api.example.com/feed)",
|
|
35
|
+
'{"type":"message","text":"Hello"}',
|
|
36
|
+
].join("\n"),
|
|
25
37
|
documentation,
|
|
26
38
|
flags: {
|
|
27
39
|
requiresWeb: true,
|
|
@@ -38,28 +50,23 @@ export default class Ws {
|
|
|
38
50
|
// {§ws-lifecycle} Claim and connect through native open plus durable channel
|
|
39
51
|
// activation. READ then returns 102 while the owner and its retained
|
|
40
52
|
// subscription continue to stream and settle independently.
|
|
41
|
-
async
|
|
42
|
-
if (
|
|
43
|
-
return
|
|
53
|
+
async prepareRepresentation(request, ctx) {
|
|
54
|
+
if (request.target.kind !== "url") {
|
|
55
|
+
return _a.#bad(400, "bad-target", "READ requires a ws(s):// URL target.", {
|
|
44
56
|
stage: "target-validation",
|
|
45
57
|
recovery: "Provide a ws(s):// URL target.",
|
|
46
58
|
retryable: false,
|
|
47
59
|
});
|
|
48
60
|
}
|
|
49
|
-
const address =
|
|
61
|
+
const address = _a.#address(request.target);
|
|
50
62
|
if (!(address instanceof NetworkAddress))
|
|
51
63
|
return address;
|
|
52
|
-
const { url
|
|
53
|
-
const
|
|
64
|
+
const { url } = address;
|
|
65
|
+
const pathname = request.pathname;
|
|
66
|
+
const key = _a.#key(ctx.workspaceId, address);
|
|
54
67
|
const existing = this.#sockets.get(key);
|
|
55
68
|
if (existing !== undefined) {
|
|
56
|
-
return
|
|
57
|
-
target: url,
|
|
58
|
-
connectionState: existing.state,
|
|
59
|
-
stage: "connection",
|
|
60
|
-
recovery: "Use the existing owner after it opens or KILL it before opening another.",
|
|
61
|
-
retryable: false,
|
|
62
|
-
});
|
|
69
|
+
return { status: 200, connectionState: existing.state };
|
|
63
70
|
}
|
|
64
71
|
const done = Promise.withResolvers();
|
|
65
72
|
const owner = {
|
|
@@ -76,16 +83,16 @@ export default class Ws {
|
|
|
76
83
|
let settled = false;
|
|
77
84
|
try {
|
|
78
85
|
// {§ws-lifecycle} Seed the declared channel before subscription open.
|
|
79
|
-
const written = await ctx.entries.write(pathname,
|
|
86
|
+
const written = await ctx.entries.write(pathname, _a.#seedEntry());
|
|
80
87
|
if (Results.isErrorStatus(written.status))
|
|
81
|
-
return
|
|
88
|
+
return _a.#passthrough(written);
|
|
82
89
|
if (owner.shutdownRequested)
|
|
83
|
-
return
|
|
90
|
+
return _a.#cancelled(url);
|
|
84
91
|
let requestCancel = () => { owner.shutdownRequested = true; };
|
|
85
92
|
const handle = { cancel: () => requestCancel() };
|
|
86
93
|
const subscription = await ctx.subscriptions.open(pathname, handle);
|
|
87
94
|
if (owner.shutdownRequested) {
|
|
88
|
-
const cancelled =
|
|
95
|
+
const cancelled = _a.#cancelled(url);
|
|
89
96
|
await subscription.close(cancelled, "WebSocket execution was cancelled.");
|
|
90
97
|
return cancelled;
|
|
91
98
|
}
|
|
@@ -96,7 +103,7 @@ export default class Ws {
|
|
|
96
103
|
catch (err) {
|
|
97
104
|
console.error("WebSocket connection failed", { url, err });
|
|
98
105
|
const detail = `The WebSocket connection to ${url} failed.`;
|
|
99
|
-
const result =
|
|
106
|
+
const result = _a.#bad(502, "connect-failed", detail, {
|
|
100
107
|
target: url,
|
|
101
108
|
stage: "connection",
|
|
102
109
|
retryable: true,
|
|
@@ -167,19 +174,19 @@ export default class Ws {
|
|
|
167
174
|
void task.then(() => pending.delete(task), () => pending.delete(task));
|
|
168
175
|
return task;
|
|
169
176
|
};
|
|
170
|
-
const cancelled = () =>
|
|
177
|
+
const cancelled = () => _a.#cancelled(url);
|
|
171
178
|
requestCancel = () => {
|
|
172
179
|
owner.shutdownRequested = true;
|
|
173
180
|
const result = cancelled();
|
|
174
181
|
void settle(result, "WebSocket execution was cancelled.", {
|
|
175
|
-
code:
|
|
182
|
+
code: SOCKET_CLOSE_NORMAL,
|
|
176
183
|
reason: "cancelled",
|
|
177
184
|
}).catch(reportCleanupFailure);
|
|
178
185
|
};
|
|
179
186
|
owner.shutdown = () => {
|
|
180
187
|
const result = cancelled();
|
|
181
|
-
return settle(result, () => `ws closed (
|
|
182
|
-
code:
|
|
188
|
+
return settle(result, () => `ws closed (${SOCKET_CLOSE_NORMAL}); ${messages} messages`, {
|
|
189
|
+
code: SOCKET_CLOSE_NORMAL,
|
|
183
190
|
reason: "shutdown",
|
|
184
191
|
});
|
|
185
192
|
};
|
|
@@ -198,8 +205,8 @@ export default class Ws {
|
|
|
198
205
|
try {
|
|
199
206
|
const activated = await setChannelState(pathname, MESSAGES, "active");
|
|
200
207
|
if (Results.isErrorStatus(activated.status)) {
|
|
201
|
-
const result =
|
|
202
|
-
void settle(result, result.problem?.detail ?? "WebSocket channel activation failed.", { code:
|
|
208
|
+
const result = _a.#passthrough(activated);
|
|
209
|
+
void settle(result, result.problem?.detail ?? "WebSocket channel activation failed.", { code: SOCKET_CLOSE_INTERNAL_ERROR, reason: "activation failed" }).catch(reportCleanupFailure);
|
|
203
210
|
return;
|
|
204
211
|
}
|
|
205
212
|
if (owner.state !== "connecting")
|
|
@@ -211,12 +218,12 @@ export default class Ws {
|
|
|
211
218
|
}
|
|
212
219
|
catch (err) {
|
|
213
220
|
console.error("WebSocket channel activation failed", { url, err });
|
|
214
|
-
const result =
|
|
221
|
+
const result = _a.#bad(500, "channel-activation-failed", "The WebSocket message channel could not enter its active state.", {
|
|
215
222
|
target: url,
|
|
216
223
|
stage: "persistence",
|
|
217
224
|
retryable: false,
|
|
218
225
|
});
|
|
219
|
-
void settle(result, result.problem?.detail ?? "WebSocket channel activation failed.", { code:
|
|
226
|
+
void settle(result, result.problem?.detail ?? "WebSocket channel activation failed.", { code: SOCKET_CLOSE_INTERNAL_ERROR, reason: "activation failed" }).catch(reportCleanupFailure);
|
|
220
227
|
}
|
|
221
228
|
})());
|
|
222
229
|
}, { once: true });
|
|
@@ -232,13 +239,13 @@ export default class Ws {
|
|
|
232
239
|
return;
|
|
233
240
|
if (typeof data !== "string") {
|
|
234
241
|
const detail = "The received WebSocket frame is binary; the messages channel accepts text only.";
|
|
235
|
-
const result =
|
|
242
|
+
const result = _a.#bad(415, "binary-frame-unsupported", detail, {
|
|
236
243
|
target: url,
|
|
237
244
|
stage: "materialization",
|
|
238
245
|
retryable: false,
|
|
239
246
|
});
|
|
240
247
|
frameFailure = { result, summary: detail };
|
|
241
|
-
void settle(result, detail, { code:
|
|
248
|
+
void settle(result, detail, { code: SOCKET_CLOSE_UNSUPPORTED_DATA, reason: "binary unsupported" }).catch(reportCleanupFailure);
|
|
242
249
|
return;
|
|
243
250
|
}
|
|
244
251
|
try {
|
|
@@ -249,14 +256,14 @@ export default class Ws {
|
|
|
249
256
|
if (frameFailure !== null)
|
|
250
257
|
return;
|
|
251
258
|
console.error("WebSocket message persistence failed", { url, err });
|
|
252
|
-
const result =
|
|
259
|
+
const result = _a.#bad(500, "message-persistence-failed", "The received WebSocket message could not be persisted.", {
|
|
253
260
|
target: url,
|
|
254
261
|
stage: "persistence",
|
|
255
262
|
retryable: false,
|
|
256
263
|
});
|
|
257
264
|
const failureSummary = result.problem?.detail ?? "WebSocket message persistence failed.";
|
|
258
265
|
frameFailure = { result, summary: failureSummary };
|
|
259
|
-
void settle(result, failureSummary, { code:
|
|
266
|
+
void settle(result, failureSummary, { code: SOCKET_CLOSE_INTERNAL_ERROR, reason: "persistence failed" }).catch(reportCleanupFailure);
|
|
260
267
|
}
|
|
261
268
|
});
|
|
262
269
|
persistenceTail = persistence;
|
|
@@ -265,20 +272,20 @@ export default class Ws {
|
|
|
265
272
|
socket.addEventListener("error", (event) => {
|
|
266
273
|
console.error("WebSocket transport failed", { url, message: event.message });
|
|
267
274
|
const detail = `The WebSocket connection to ${url} failed.`;
|
|
268
|
-
const result =
|
|
275
|
+
const result = _a.#bad(502, "connection-failed", detail, {
|
|
269
276
|
target: url,
|
|
270
277
|
stage: "connection",
|
|
271
278
|
retryable: true,
|
|
272
279
|
});
|
|
273
280
|
void settle(result, detail, {
|
|
274
|
-
code:
|
|
281
|
+
code: SOCKET_CLOSE_INTERNAL_ERROR,
|
|
275
282
|
reason: "transport failed",
|
|
276
283
|
}).catch(reportCleanupFailure);
|
|
277
284
|
});
|
|
278
285
|
socket.addEventListener("close", (event) => {
|
|
279
286
|
if (!owner.opened && !owner.killRequested && !subscription.aborted) {
|
|
280
287
|
const detail = `The WebSocket connection to ${url} closed before it opened.`;
|
|
281
|
-
const result =
|
|
288
|
+
const result = _a.#bad(502, "connection-failed", detail, {
|
|
282
289
|
target: url,
|
|
283
290
|
stage: "connection",
|
|
284
291
|
retryable: true,
|
|
@@ -330,11 +337,38 @@ export default class Ws {
|
|
|
330
337
|
if (errors.length > 0)
|
|
331
338
|
throw new AggregateError(errors, "WebSocket shutdown failed");
|
|
332
339
|
}
|
|
333
|
-
// SEND
|
|
334
|
-
//
|
|
340
|
+
// EDIT and SEND signal 200 target only an open owner whose native transport
|
|
341
|
+
// is still OPEN. Both operations converge on one outbound-frame path.
|
|
342
|
+
async editBatch(statements, ctx) {
|
|
343
|
+
if (statements.length !== 1) {
|
|
344
|
+
return _a.#bad(409, "non-atomic-edit-batch", `${statements.length} EDIT statements cannot be committed atomically to one WebSocket connection.`, {
|
|
345
|
+
statements: statements.length,
|
|
346
|
+
stage: "mutation",
|
|
347
|
+
recovery: "Submit one whole-message EDIT.",
|
|
348
|
+
retryable: false,
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
const statement = statements[0];
|
|
352
|
+
if (statement.target === null || statement.target.kind !== "url") {
|
|
353
|
+
return _a.#bad(400, "bad-target", "EDIT requires a ws(s):// URL target.", {
|
|
354
|
+
stage: "target-validation",
|
|
355
|
+
recovery: "Provide a ws(s):// URL target.",
|
|
356
|
+
retryable: false,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
if (statement.lineMarker !== null) {
|
|
360
|
+
return _a.#bad(400, "line-edit-unsupported", "WebSocket EDIT sends one whole message and does not accept a line range.", {
|
|
361
|
+
stage: "mutation",
|
|
362
|
+
recovery: "Remove the line range and submit the complete message body.",
|
|
363
|
+
retryable: false,
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
return this.#write(statement.target, statement.body ?? "", ctx, "EDIT");
|
|
367
|
+
}
|
|
368
|
+
// SEND signal 499 is routed to the owning READ handle; scheme dispatch is a no-op.
|
|
335
369
|
async send(statement, ctx) {
|
|
336
370
|
if (statement.target === null || statement.target.kind !== "url") {
|
|
337
|
-
return
|
|
371
|
+
return _a.#bad(400, "bad-target", "SEND requires a ws(s):// URL target.", {
|
|
338
372
|
stage: "target-validation",
|
|
339
373
|
recovery: "Provide a ws(s):// URL target.",
|
|
340
374
|
retryable: false,
|
|
@@ -343,71 +377,73 @@ export default class Ws {
|
|
|
343
377
|
const status = statement.signal;
|
|
344
378
|
if (status === 499)
|
|
345
379
|
return { shape: "passthrough", status: 200 };
|
|
346
|
-
if (status === 200)
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
return address;
|
|
350
|
-
const owner = this.#sockets.get(Ws.#key(ctx.workspaceId, address));
|
|
351
|
-
if (owner === undefined) {
|
|
352
|
-
return Ws.#bad(409, "no-open-socket", `No WebSocket connection is open for ${address.url}.`, {
|
|
353
|
-
target: address.url,
|
|
354
|
-
stage: "connection",
|
|
355
|
-
recovery: "READ the WebSocket URL before sending a message.",
|
|
356
|
-
retryable: false,
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
const socket = owner.socket;
|
|
360
|
-
if (owner.state !== "open" || socket === null || socket.readyState !== SOCKET_OPEN) {
|
|
361
|
-
const connectionState = owner.state === "open" && socket?.readyState !== SOCKET_OPEN
|
|
362
|
-
? "settling"
|
|
363
|
-
: owner.state;
|
|
364
|
-
if (connectionState === "settling")
|
|
365
|
-
owner.state = "settling";
|
|
366
|
-
return Ws.#bad(409, "socket-not-open", `The WebSocket connection to ${address.url} is ${connectionState}; SEND requires open.`, {
|
|
367
|
-
target: address.url,
|
|
368
|
-
connectionState,
|
|
369
|
-
stage: "connection",
|
|
370
|
-
recovery: connectionState === "settling"
|
|
371
|
-
? "Wait for the current READ to settle, then READ the WebSocket URL again."
|
|
372
|
-
: "Wait for the connection's active stream event before sending.",
|
|
373
|
-
retryable: connectionState !== "settling",
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
try {
|
|
377
|
-
socket.send(statement.body?.raw ?? "");
|
|
378
|
-
return { shape: "passthrough", status: 200 };
|
|
379
|
-
}
|
|
380
|
-
catch (err) {
|
|
381
|
-
console.error("WebSocket send failed", { target: address.url, err });
|
|
382
|
-
return Ws.#bad(502, "send-failed", "The WebSocket message could not be sent.", {
|
|
383
|
-
target: address.url,
|
|
384
|
-
stage: "transfer",
|
|
385
|
-
retryable: false,
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
return Ws.#bad(501, "send-status-unsupported", `The WebSocket scheme does not interpret SEND status ${status}.`, {
|
|
380
|
+
if (status === 200)
|
|
381
|
+
return this.#write(statement.target, statement.body?.raw ?? "", ctx, "SEND");
|
|
382
|
+
return _a.#bad(501, "send-status-unsupported", `The WebSocket scheme does not interpret SEND status ${status}.`, {
|
|
390
383
|
requestedStatus: status,
|
|
391
384
|
stage: "dispatch",
|
|
392
385
|
retryable: false,
|
|
393
386
|
});
|
|
394
387
|
}
|
|
388
|
+
async #write(target, body, ctx, operation) {
|
|
389
|
+
const address = _a.#address(target);
|
|
390
|
+
if (!(address instanceof NetworkAddress))
|
|
391
|
+
return address;
|
|
392
|
+
const owner = this.#sockets.get(_a.#key(ctx.workspaceId, address));
|
|
393
|
+
if (owner === undefined) {
|
|
394
|
+
return _a.#bad(409, "no-open-socket", `No WebSocket connection is open for ${address.url}.`, {
|
|
395
|
+
target: address.url,
|
|
396
|
+
stage: "connection",
|
|
397
|
+
recovery: "READ the WebSocket URL before sending a message.",
|
|
398
|
+
retryable: false,
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
const socket = owner.socket;
|
|
402
|
+
if (owner.state !== "open" || socket === null || socket.readyState !== SOCKET_OPEN) {
|
|
403
|
+
const connectionState = owner.state === "open" && socket?.readyState !== SOCKET_OPEN
|
|
404
|
+
? "settling"
|
|
405
|
+
: owner.state;
|
|
406
|
+
if (connectionState === "settling")
|
|
407
|
+
owner.state = "settling";
|
|
408
|
+
return _a.#bad(409, "socket-not-open", `The WebSocket connection to ${address.url} is ${connectionState}; ${operation} requires open.`, {
|
|
409
|
+
target: address.url,
|
|
410
|
+
connectionState,
|
|
411
|
+
stage: "connection",
|
|
412
|
+
recovery: connectionState === "settling"
|
|
413
|
+
? "Wait for the current READ to settle, then READ the WebSocket URL again."
|
|
414
|
+
: "Wait for the connection's active stream event before sending.",
|
|
415
|
+
retryable: connectionState !== "settling",
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
try {
|
|
419
|
+
socket.send(body);
|
|
420
|
+
return { shape: "passthrough", status: 200 };
|
|
421
|
+
}
|
|
422
|
+
catch (err) {
|
|
423
|
+
console.error("WebSocket send failed", { operation, target: address.url, err });
|
|
424
|
+
return _a.#bad(502, "send-failed", "The WebSocket message could not be sent.", {
|
|
425
|
+
target: address.url,
|
|
426
|
+
stage: "transfer",
|
|
427
|
+
retryable: false,
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
}
|
|
395
431
|
// KILL closes or cancels the one claimed owner. Its terminal path settles
|
|
396
432
|
// the READ subscription before releasing the address.
|
|
397
433
|
async kill(statement, ctx) {
|
|
398
434
|
if (statement.target === null || statement.target.kind !== "url") {
|
|
399
|
-
return
|
|
435
|
+
return _a.#bad(400, "bad-target", "KILL requires a ws(s):// URL target.", {
|
|
400
436
|
stage: "target-validation",
|
|
401
437
|
recovery: "Provide a ws(s):// URL target.",
|
|
402
438
|
retryable: false,
|
|
403
439
|
});
|
|
404
440
|
}
|
|
405
|
-
const address =
|
|
441
|
+
const address = _a.#address(statement.target);
|
|
406
442
|
if (!(address instanceof NetworkAddress))
|
|
407
443
|
return address;
|
|
408
|
-
const owner = this.#sockets.get(
|
|
444
|
+
const owner = this.#sockets.get(_a.#key(ctx.workspaceId, address));
|
|
409
445
|
if (owner === undefined) {
|
|
410
|
-
return
|
|
446
|
+
return _a.#bad(404, "no-open-socket", `No WebSocket connection is open for ${address.url}.`, {
|
|
411
447
|
target: address.url,
|
|
412
448
|
stage: "connection",
|
|
413
449
|
retryable: false,
|
|
@@ -430,12 +466,12 @@ export default class Ws {
|
|
|
430
466
|
return { shape: "passthrough", status: 200 };
|
|
431
467
|
}
|
|
432
468
|
catch (err) {
|
|
433
|
-
if (this.#sockets.get(
|
|
469
|
+
if (this.#sockets.get(_a.#key(ctx.workspaceId, address)) === owner) {
|
|
434
470
|
owner.killRequested = false;
|
|
435
471
|
owner.state = priorState;
|
|
436
472
|
}
|
|
437
473
|
console.error("WebSocket close failed", { target: address.url, err });
|
|
438
|
-
return
|
|
474
|
+
return _a.#bad(502, "close-failed", "The WebSocket connection could not be closed.", {
|
|
439
475
|
target: address.url,
|
|
440
476
|
stage: "connection",
|
|
441
477
|
retryable: true,
|
|
@@ -451,21 +487,21 @@ export default class Ws {
|
|
|
451
487
|
address = NetworkAddress.from(target);
|
|
452
488
|
}
|
|
453
489
|
catch {
|
|
454
|
-
return
|
|
490
|
+
return _a.#bad(400, "bad-target", "WebSocket operations require a ws(s):// URL with an authority.", {
|
|
455
491
|
stage: "target-validation",
|
|
456
492
|
recovery: "Provide a ws(s):// URL with a host.",
|
|
457
493
|
retryable: false,
|
|
458
494
|
});
|
|
459
495
|
}
|
|
460
496
|
if (address.scheme !== "ws" && address.scheme !== "wss") {
|
|
461
|
-
return
|
|
497
|
+
return _a.#bad(400, "bad-target", "WebSocket operations require a ws(s):// URL target.", {
|
|
462
498
|
stage: "target-validation",
|
|
463
499
|
recovery: "Provide a ws(s):// URL target.",
|
|
464
500
|
retryable: false,
|
|
465
501
|
});
|
|
466
502
|
}
|
|
467
503
|
if (address.hasCredentials) {
|
|
468
|
-
return
|
|
504
|
+
return _a.#bad(400, "userinfo-not-allowed", "WebSocket URL userinfo is not allowed.", {
|
|
469
505
|
target: address.url,
|
|
470
506
|
stage: "target-validation",
|
|
471
507
|
recovery: "Remove credentials from the URL.",
|
|
@@ -476,14 +512,14 @@ export default class Ws {
|
|
|
476
512
|
}
|
|
477
513
|
// {§ws-lifecycle} open() binds an existing entry, so seed the manifest shape.
|
|
478
514
|
static #seedEntry() {
|
|
479
|
-
const channels = Object.fromEntries(Object.entries(
|
|
480
|
-
return { channels
|
|
515
|
+
const channels = Object.fromEntries(Object.entries(_a.manifest.channels).map(([name, mimetype]) => [name, { content: "", mimetype }]));
|
|
516
|
+
return { channels };
|
|
481
517
|
}
|
|
482
518
|
static #passthrough(result) {
|
|
483
519
|
return Results.assert({ ...result, shape: "passthrough" });
|
|
484
520
|
}
|
|
485
521
|
static #cancelled(url) {
|
|
486
|
-
return
|
|
522
|
+
return _a.#bad(499, "cancelled", "WebSocket execution was cancelled.", {
|
|
487
523
|
target: url,
|
|
488
524
|
stage: "connection",
|
|
489
525
|
retryable: false,
|
|
@@ -493,4 +529,6 @@ export default class Ws {
|
|
|
493
529
|
return Results.failure("scheme:wss", kind, status, message, { shape: "passthrough" }, extensions);
|
|
494
530
|
}
|
|
495
531
|
}
|
|
532
|
+
_a = Ws;
|
|
533
|
+
export default Ws;
|
|
496
534
|
//# sourceMappingURL=Ws.js.map
|