@plurnk/plurnk-schemes-http 1.18.0 → 1.19.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.
@@ -3,9 +3,12 @@ import { formatJsonDocument } from "@plurnk/plurnk-contracts";
3
3
  import Guard, { GuardBlockedError } from "./Guard.js";
4
4
  import { responseMimetype } from "./ContentType.js";
5
5
  import MaterializerRegistry from "./Materializer.js";
6
- import { requirePositiveIntegerEnv } from "./Config.js";
6
+ import { requirePositiveIntegerEnv, requireTextEnv } from "./Config.js";
7
7
  import ErrorDetail from "./ErrorDetail.js";
8
- export const DEFAULT_WEB_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36";
8
+ import HostPolicy from "./HostPolicy.js";
9
+ // {§operator-config-only-home} — which identity a request presents is the operator's choice, and a
10
+ // browser impersonation least of all belongs buried in code.
11
+ export const webUserAgent = () => requireTextEnv("PLURNK_SCHEMES_HTTP_USER_AGENT");
9
12
  export const MARKDOWN_ACCEPT = "text/markdown, text/html;q=0.9, */*;q=0.1";
10
13
  export const PROJECTION_ID_HEADER = "x-plurnk-projection-id";
11
14
  export const CACHE_VARIANT_HEADER = "x-plurnk-cache-variant";
@@ -93,63 +96,25 @@ export default class WebFetcher {
93
96
  originFailure,
94
97
  };
95
98
  }
96
- // {§readable-channel} — a page's server source is its `body`; the curated text (the selected
97
- // materializer's Markdown, or the installed local projection) is `readable`. A response that is
98
- // not an HTML page has no projection: its `body` is the response text, or the readable text of a
99
- // binary body under {§mimetype-binary-input}.
99
+ // {§readable-channel}/{§http-binary-source} — source and projection have the same channel
100
+ // identities here as in the durable entry, regardless of the source format.
100
101
  static materializedChannels(materialized, source) {
101
- const channels = {};
102
- const page = materialized.html !== undefined || materialized.htmlOutcome !== undefined;
103
- const curated = materialized.body;
104
- const curatedOutcome = materialized.bodyOutcome;
105
- if (page) {
106
- if (materialized.html !== undefined) {
107
- channels.body = {
108
- ...materialized.html,
109
- ...(materialized.htmlOutcome?.failure === undefined ? {} : { state: "errored" }),
110
- };
111
- }
112
- else if (materialized.htmlOutcome?.failure !== undefined) {
113
- channels.body = { content: "", mimetype: "text/html", state: "errored" };
114
- }
115
- if (curated !== undefined) {
116
- channels.readable = {
117
- ...curated,
118
- ...(curatedOutcome.failure === undefined ? {} : { state: "errored" }),
119
- };
120
- }
121
- else if (curatedOutcome.failure !== undefined) {
122
- channels.readable = { content: "", mimetype: "text/markdown", state: "errored" };
123
- }
124
- }
125
- else if (curated !== undefined) {
126
- channels.body = {
127
- ...curated,
128
- ...(curatedOutcome.failure === undefined ? {} : { state: "errored" }),
129
- };
130
- }
131
- else if (curatedOutcome.failure !== undefined) {
132
- channels.body = { content: "", mimetype: "text/markdown", state: "errored" };
133
- }
102
+ const channels = { body: materialized.body };
103
+ if (materialized.readable !== undefined)
104
+ channels.readable = materialized.readable;
134
105
  if (materialized.header !== undefined) {
135
106
  channels.header = { content: materialized.header, mimetype: "text/plain" };
136
107
  }
137
- if (source === undefined)
138
- return channels;
139
108
  const headerOutcome = materialized.header === undefined
140
- ? failure(502, "header-unavailable", `Acquisition evidence for ${source.url} was unavailable.`, true)
109
+ ? failure(502, "header-unavailable", `Acquisition evidence for ${source?.url ?? "the response"} was unavailable.`, true)
141
110
  : success();
142
- const outcomes = page
143
- ? {
144
- body: materialized.htmlOutcome ?? (materialized.html === undefined
145
- ? failure(502, "html-unavailable", `Server-source HTML for ${source.url} was unavailable.`, true)
146
- : success()),
147
- header: headerOutcome,
148
- readable: curatedOutcome,
149
- }
150
- : { body: curatedOutcome, header: headerOutcome };
111
+ const outcomes = {
112
+ body: materialized.bodyOutcome,
113
+ ...(source === undefined ? {} : { header: headerOutcome }),
114
+ ...(materialized.readableOutcome === undefined ? {} : { readable: materialized.readableOutcome }),
115
+ };
151
116
  const defaults = {
152
- body: page ? "text/html" : "text/markdown",
117
+ body: "application/octet-stream",
153
118
  header: "text/plain",
154
119
  readable: "text/markdown",
155
120
  };
@@ -158,7 +123,7 @@ export default class WebFetcher {
158
123
  content: "",
159
124
  mimetype: defaults[channel],
160
125
  };
161
- const producerResult = WebFetcher.#producerResult(source, outcome);
126
+ const producerResult = source === undefined ? undefined : WebFetcher.#producerResult(source, outcome);
162
127
  channels[channel] = {
163
128
  ...existing,
164
129
  ...(outcome.failure === undefined ? {} : { state: "errored" }),
@@ -193,11 +158,12 @@ export default class WebFetcher {
193
158
  const binary = await WebFetcher.classifyBinary(fetched.body, fetched.mimetype, projection);
194
159
  if (binary) {
195
160
  const projected = await WebFetcher.projectBytes(fetched.body, fetched.mimetype, projection);
196
- if (projected === null)
197
- return null;
198
- return WebFetcher.#materialized(projected, {
161
+ return WebFetcher.#materialized(projected.readable, {
162
+ source: { content: "", bytes: projected.bytes, mimetype: fetched.mimetype },
163
+ projectionIdentity: projected.projectionIdentity,
199
164
  header: fetched.header,
200
165
  bodyOutcome: originOutcome,
166
+ readableOutcome: originOutcome,
201
167
  });
202
168
  }
203
169
  const content = WebFetcher.readableText(await fetched.body.text(), fetched.mimetype);
@@ -251,11 +217,11 @@ export default class WebFetcher {
251
217
  if (result.outcome === "success") {
252
218
  const header = WebFetcher.#appendEvidence(fetched.header, evidence);
253
219
  return {
254
- body: { content: result.body, mimetype: "text/markdown" },
255
- ...(html === undefined ? {} : { html }),
220
+ readable: { content: result.body, mimetype: "text/markdown" },
221
+ body: html ?? { content: "", mimetype: "text/html" },
256
222
  ...(header === undefined ? {} : { header }),
257
- bodyOutcome: success(),
258
- htmlOutcome: html === undefined ? WebFetcher.#sourceUnavailable(fetched) : originOutcome,
223
+ readableOutcome: success(),
224
+ bodyOutcome: html === undefined ? WebFetcher.#sourceUnavailable(fetched) : originOutcome,
259
225
  };
260
226
  }
261
227
  if (result.outcome === "hard" || html === undefined) {
@@ -272,32 +238,32 @@ export default class WebFetcher {
272
238
  retryable: true,
273
239
  });
274
240
  return {
275
- ...(html === undefined ? {} : { html }),
241
+ body: html ?? { content: "", mimetype: "text/html" },
276
242
  ...(header === undefined ? {} : { header }),
277
- bodyOutcome: failure(problem.status, problem.code, problem.detail, problem.retryable),
278
- htmlOutcome: html === undefined ? WebFetcher.#sourceUnavailable(fetched) : originOutcome,
243
+ readableOutcome: failure(problem.status, problem.code, problem.detail, problem.retryable),
244
+ bodyOutcome: html === undefined ? WebFetcher.#sourceUnavailable(fetched) : originOutcome,
279
245
  };
280
246
  }
281
247
  const projected = await WebFetcher.#project(html, projection);
282
248
  if (projected === null) {
283
249
  return {
284
- html,
250
+ body: html,
285
251
  header: WebFetcher.#appendEvidence(fetched.header, evidence),
286
- bodyOutcome: result.problem === undefined
252
+ readableOutcome: result.problem === undefined
287
253
  ? failure(502, "materializer-recoverable", `The materializer could not extract ${fetched.url} (${result.reason}) and no local projection was possible.`, true)
288
254
  : failure(result.problem.status, result.problem.code, result.problem.detail, result.problem.retryable),
289
- htmlOutcome: originOutcome,
255
+ bodyOutcome: originOutcome,
290
256
  };
291
257
  }
292
258
  return WebFetcher.#materialized(projected, {
293
- html,
259
+ source: html,
294
260
  header: fetched.header,
295
261
  materializerIdentity: `local-fallback:${identity}`,
296
262
  additionalEvidence: result.evidence.map(({ name, value }) => `${name}: ${value}`),
297
- bodyOutcome: originOutcome.failure === undefined
263
+ readableOutcome: originOutcome.failure === undefined
298
264
  ? success(203)
299
265
  : originOutcome,
300
- htmlOutcome: originOutcome,
266
+ bodyOutcome: originOutcome,
301
267
  });
302
268
  }
303
269
  if (html === undefined) {
@@ -305,9 +271,10 @@ export default class WebFetcher {
305
271
  // own failure, the source first.
306
272
  const unavailable = WebFetcher.#sourceUnavailable(fetched);
307
273
  return {
274
+ body: { content: "", mimetype: "text/html" },
308
275
  ...(fetched.header === undefined ? {} : { header: fetched.header }),
309
276
  bodyOutcome: unavailable,
310
- htmlOutcome: unavailable,
277
+ readableOutcome: unavailable,
311
278
  };
312
279
  }
313
280
  const projected = await WebFetcher.#project(html, projection);
@@ -316,20 +283,20 @@ export default class WebFetcher {
316
283
  : LOCAL_INELIGIBLE_MATERIALIZER_ID;
317
284
  if (projected === null) {
318
285
  return {
319
- html,
286
+ body: html,
320
287
  header: WebFetcher.#appendEvidence(fetched.header, [
321
288
  WebFetcher.materializerEvidence(materializerIdentity),
322
289
  ]),
323
- bodyOutcome: failure(422, "no-readable-projection", `The HTML representation of ${fetched.url} produced no readable body.`, false),
324
- htmlOutcome: originOutcome,
290
+ readableOutcome: failure(422, "no-readable-projection", `The HTML representation of ${fetched.url} produced no readable body.`, false),
291
+ bodyOutcome: originOutcome,
325
292
  };
326
293
  }
327
294
  return WebFetcher.#materialized(projected, {
328
- html,
295
+ source: html,
329
296
  header: fetched.header,
330
297
  materializerIdentity,
331
298
  bodyOutcome: originOutcome,
332
- htmlOutcome: originOutcome,
299
+ readableOutcome: originOutcome,
333
300
  });
334
301
  }
335
302
  // The source channel's outcome when the origin supplied nothing: its own recorded failure,
@@ -341,10 +308,11 @@ export default class WebFetcher {
341
308
  }
342
309
  static #originOutcome(fetched) {
343
310
  const status = fetched.status ?? 200;
344
- if (status < 400)
345
- return success(status);
311
+ if (status >= 200 && status < 400)
312
+ return success();
346
313
  const statusText = fetched.statusText?.trim() ?? "";
347
- return failure(status, "http-response-status", `HTTP GET ${fetched.url} returned ${status}${statusText === "" ? "" : ` ${statusText}`}.`, status === 408 || status === 425 || status === 429 || status >= 500, {
314
+ const invalidStatus = status < 200 || status > 599;
315
+ return failure(invalidStatus ? 502 : status, invalidStatus ? "invalid-response-status" : "http-response-status", `HTTP GET ${fetched.url} returned ${status}${statusText === "" ? "" : ` ${statusText}`}.`, status === 408 || status === 425 || status === 429 || status >= 500, {
348
316
  originStatus: status,
349
317
  ...(statusText === "" ? {} : { originStatusText: statusText }),
350
318
  });
@@ -360,7 +328,7 @@ export default class WebFetcher {
360
328
  static async projectBytes(body, mimetype, projection) {
361
329
  let projected;
362
330
  try {
363
- projected = await projection.readableBytes(body.chunks, mimetype);
331
+ projected = await projection.binary(body.chunks, mimetype);
364
332
  }
365
333
  catch (cause) {
366
334
  return await WebFetcher.#projectionFailure(body, mimetype, cause);
@@ -379,7 +347,10 @@ export default class WebFetcher {
379
347
  await body.cancel();
380
348
  }
381
349
  catch (cleanupCause) {
382
- failureCause = new AggregateError([cause, cleanupCause], `Projection and response-body cleanup both failed for ${mimetype}.`);
350
+ // A cancelled/errored ReadableStream rejects cancel() with its existing error.
351
+ if (cleanupCause !== cause) {
352
+ failureCause = new AggregateError([cause, cleanupCause], `Projection and response-body cleanup both failed for ${mimetype}.`);
353
+ }
383
354
  }
384
355
  throw new WebMaterializationError(mimetype, failureCause);
385
356
  }
@@ -391,28 +362,27 @@ export default class WebFetcher {
391
362
  throw new WebMaterializationError(html.mimetype, cause);
392
363
  }
393
364
  }
394
- static #materialized(projected, options = {}) {
395
- const { html, header, materializerIdentity, additionalEvidence = [], bodyOutcome = success(), htmlOutcome = success(), } = options;
365
+ static #materialized(projected, options) {
366
+ const { source, projectionIdentity = projected?.projectionIdentity, header, materializerIdentity, additionalEvidence = [], bodyOutcome = success(), readableOutcome = success(), } = options;
396
367
  const evidence = [
397
368
  ...(materializerIdentity === undefined
398
369
  ? []
399
370
  : [WebFetcher.materializerEvidence(materializerIdentity)]),
400
371
  ...additionalEvidence,
401
- WebFetcher.projectionEvidence(projected.projectionIdentity),
372
+ ...(projectionIdentity === undefined ? [] : [WebFetcher.projectionEvidence(projectionIdentity)]),
402
373
  ];
403
374
  const materializedHeader = WebFetcher.#appendEvidence(header, evidence);
404
375
  return {
405
- body: { content: projected.content, mimetype: projected.mimetype },
406
- ...(html === undefined ? {} : { html }),
376
+ body: source,
377
+ ...(projected === null ? {} : { readable: { content: projected.content, mimetype: projected.mimetype }, readableOutcome }),
407
378
  ...(materializedHeader === undefined
408
379
  ? {}
409
380
  : { header: materializedHeader }),
410
381
  bodyOutcome,
411
- ...(html === undefined ? {} : { htmlOutcome }),
412
- projection: {
413
- sourceMimetype: projected.sourceMimetype,
414
- identity: projected.projectionIdentity,
415
- },
382
+ ...(projected === null ? {} : { projection: {
383
+ sourceMimetype: projected.sourceMimetype,
384
+ identity: projected.projectionIdentity,
385
+ } }),
416
386
  };
417
387
  }
418
388
  static #appendEvidence(header, evidence) {
@@ -439,6 +409,9 @@ export default class WebFetcher {
439
409
  async fetch(url, opts) {
440
410
  opts?.signal?.throwIfAborted();
441
411
  const target = rewriteAcquisitionTarget(url);
412
+ // {§http-host-policy} — the entry check and, after unguarded redirects, the final URL.
413
+ if (!HostPolicy.permits(target))
414
+ return null;
442
415
  const requestHeaders = opts?.headers ?? [];
443
416
  const conditionalHeaders = opts?.conditionalHeaders ?? [];
444
417
  let transportHeaders = requestHeaders.map(([name, value]) => [name, value]);
@@ -446,7 +419,7 @@ export default class WebFetcher {
446
419
  transportHeaders = [["Accept", MARKDOWN_ACCEPT], ...transportHeaders];
447
420
  }
448
421
  if (!hasHeader(transportHeaders, "user-agent")) {
449
- transportHeaders = [["User-Agent", DEFAULT_WEB_UA], ...transportHeaders];
422
+ transportHeaders = [["User-Agent", webUserAgent()], ...transportHeaders];
450
423
  }
451
424
  transportHeaders.push(...conditionalHeaders.map(([name, value]) => [name, value]));
452
425
  const fetchTimeout = requirePositiveIntegerEnv("PLURNK_SCHEMES_HTTP_FETCH_TIMEOUT");
@@ -477,6 +450,10 @@ export default class WebFetcher {
477
450
  ? WebFetcher.unavailable(url, cause, allowConfiguredMaterializer)
478
451
  : null;
479
452
  }
453
+ if (response.url !== "" && !HostPolicy.permits(response.url)) {
454
+ await response.body?.cancel();
455
+ return null;
456
+ }
480
457
  if (opts?.acceptHttpErrors !== true && !response.ok) {
481
458
  await response.body?.cancel();
482
459
  return null;
@@ -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, RepresentationPreparationRequest, RepresentationPreparationResult, ResolvedEditStatement, SendStatement, KillStatement } from "@plurnk/plurnk-schemes";
1
+ import type { SchemeCtx, PassthroughResult, SchemeManifest, SchemeHandler, RepresentationPreparationRequest, RepresentationPreparationResult, ResolvedEditStatement, SendStatement, KillStatement, ProposalResult, ProposalApplyRequest, ProposalApplyResult } from "@plurnk/plurnk-schemes";
2
2
  interface SocketEvent {
3
3
  readonly data?: unknown;
4
4
  readonly code?: number;
@@ -20,8 +20,9 @@ export default class Ws implements SchemeHandler {
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>;
24
- send(statement: SendStatement, ctx: SchemeCtx): Promise<PassthroughResult>;
23
+ editBatch(statements: readonly ResolvedEditStatement[], ctx: SchemeCtx): Promise<PassthroughResult | ProposalResult>;
24
+ send(statement: SendStatement, ctx: SchemeCtx): Promise<PassthroughResult | ProposalResult>;
25
+ applyResolution(request: ProposalApplyRequest, ctx: SchemeCtx): Promise<ProposalApplyResult>;
25
26
  kill(statement: KillStatement, ctx: SchemeCtx): Promise<PassthroughResult>;
26
27
  }
27
28
  export {};
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,EAIT,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;AAyB7C,MAAM,CAAC,OAAO,OAAO,EAAG,YAAW,aAAa;;IAC5C,MAAM,CAAC,QAAQ,EAAE,cAAc,CAY7B;IAOF,YAAY,OAAO,GAAE,aAA6B,EAEjD;IAKK,qBAAqB,CACvB,OAAO,EAAE,gCAAgC,EACzC,GAAG,EAAE,SAAS,GACf,OAAO,CAAC,+BAA+B,CAAC,CAkS1C;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,CAoCxG;IAGK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU/E;IA4DK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkD/E;CA+EJ"}
1
+ {"version":3,"file":"Ws.d.ts","sourceRoot":"","sources":["../src/Ws.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,SAAS,EAIT,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gCAAgC,EAChC,+BAA+B,EAC/B,qBAAqB,EACrB,aAAa,EACb,aAAa,EAGb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,wBAAwB,CAAC;AAahC,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;AA4B7C,MAAM,CAAC,OAAO,OAAO,EAAG,YAAW,aAAa;;IAC5C,MAAM,CAAC,QAAQ,EAAE,cAAc,CAY7B;IAOF,YAAY,OAAO,GAAE,aAA6B,EAEjD;IAKK,qBAAqB,CACvB,OAAO,EAAE,gCAAgC,EACzC,GAAG,EAAE,SAAS,GACf,OAAO,CAAC,+BAA+B,CAAC,CAkS1C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB3B;IAIK,SAAS,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,GAAG,cAAc,CAAC,CAsCzH;IAGK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,GAAG,cAAc,CAAC,CAYhG;IAeK,eAAe,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAYjG;IAuEK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkD/E;CAuFJ"}
package/dist/Ws.js CHANGED
@@ -4,6 +4,7 @@
4
4
  var _a;
5
5
  import { NetworkAddress, Results } from "@plurnk/plurnk-schemes";
6
6
  import { readFile } from "node:fs/promises";
7
+ import HostPolicy from "./HostPolicy.js";
7
8
  // The inbound-frame channel - every message the origin pushes streams here.
8
9
  const MESSAGES = "messages";
9
10
  const documentation = await readFile(new URL("../docs/wss.md", import.meta.url), "utf-8");
@@ -363,7 +364,10 @@ class Ws {
363
364
  retryable: false,
364
365
  });
365
366
  }
366
- return this.#write(statement.target, statement.body ?? "", ctx, "EDIT");
367
+ const open = this.#openFor(statement.target, ctx, "EDIT");
368
+ if (!open.ok)
369
+ return open.result;
370
+ return _a.#propose("EDIT", statement.target, statement.body ?? "");
367
371
  }
368
372
  // {§turn-disposition} — SEND is messaging; a KILL closes the owner.
369
373
  async send(statement, ctx) {
@@ -376,20 +380,48 @@ class Ws {
376
380
  retryable: false,
377
381
  });
378
382
  }
379
- return this.#write(statement.target, statement.body?.raw ?? "", ctx, "SEND");
383
+ const open = this.#openFor(statement.target, ctx, "SEND");
384
+ if (!open.ok)
385
+ return open.result;
386
+ return _a.#propose("SEND", statement.target, statement.body?.raw ?? "");
380
387
  }
381
- async #write(target, body, ctx, operation) {
388
+ // {§http-outbound-proposes} — a frame is data leaving the process, so EDIT and SEND propose
389
+ // and write on the settlement. The socket is live, so this admission runs twice: once before
390
+ // the proposal, so nobody is asked to approve a frame on a socket that is not open, and again
391
+ // at apply, because it may have closed while the question was open.
392
+ static #propose(operation, target, body) {
393
+ return {
394
+ shape: "proposal",
395
+ status: 202,
396
+ body: `${operation} ${target.raw}`,
397
+ attrs: { effect: "host", operation, target, body },
398
+ };
399
+ }
400
+ async applyResolution(request, ctx) {
401
+ const attrs = request.attrs;
402
+ const { operation, target } = attrs;
403
+ if (typeof target !== "object" || target === null) {
404
+ throw new Error("A WebSocket proposal is missing its target.");
405
+ }
406
+ // This scheme proposes exactly two operations; a settlement never widens that set.
407
+ if (operation !== "EDIT" && operation !== "SEND") {
408
+ throw new Error(`A WebSocket proposal named an operation this scheme never proposes: ${String(operation)}.`);
409
+ }
410
+ const body = request.body ?? (typeof attrs.body === "string" ? attrs.body : "");
411
+ return this.#write(target, body, ctx, operation);
412
+ }
413
+ #openFor(target, ctx, operation) {
382
414
  const address = _a.#address(target);
383
415
  if (!(address instanceof NetworkAddress))
384
- return address;
416
+ return { ok: false, result: address };
385
417
  const owner = this.#sockets.get(_a.#key(ctx.workspaceId, address));
386
418
  if (owner === undefined) {
387
- return _a.#bad(409, "no-open-socket", `No WebSocket connection is open for ${address.url}.`, {
388
- target: address.url,
389
- stage: "connection",
390
- recovery: "READ the WebSocket URL before sending a message.",
391
- retryable: false,
392
- });
419
+ return { ok: false, result: _a.#bad(409, "no-open-socket", `No WebSocket connection is open for ${address.url}.`, {
420
+ target: address.url,
421
+ stage: "connection",
422
+ recovery: "READ the WebSocket URL before sending a message.",
423
+ retryable: false,
424
+ }) };
393
425
  }
394
426
  const socket = owner.socket;
395
427
  if (owner.state !== "open" || socket === null || socket.readyState !== SOCKET_OPEN) {
@@ -398,16 +430,23 @@ class Ws {
398
430
  : owner.state;
399
431
  if (connectionState === "settling")
400
432
  owner.state = "settling";
401
- return _a.#bad(409, "socket-not-open", `The WebSocket connection to ${address.url} is ${connectionState}; ${operation} requires open.`, {
402
- target: address.url,
403
- connectionState,
404
- stage: "connection",
405
- recovery: connectionState === "settling"
406
- ? "Wait for the current READ to settle, then READ the WebSocket URL again."
407
- : "Wait for the connection's active stream event before sending.",
408
- retryable: connectionState !== "settling",
409
- });
433
+ return { ok: false, result: _a.#bad(409, "socket-not-open", `The WebSocket connection to ${address.url} is ${connectionState}; ${operation} requires open.`, {
434
+ target: address.url,
435
+ connectionState,
436
+ stage: "connection",
437
+ recovery: connectionState === "settling"
438
+ ? "Wait for the current READ to settle, then READ the WebSocket URL again."
439
+ : "Wait for the connection's active stream event before sending.",
440
+ retryable: connectionState !== "settling",
441
+ }) };
410
442
  }
443
+ return { ok: true, address, socket };
444
+ }
445
+ async #write(target, body, ctx, operation) {
446
+ const open = this.#openFor(target, ctx, operation);
447
+ if (!open.ok)
448
+ return open.result;
449
+ const { address, socket } = open;
411
450
  try {
412
451
  socket.send(body);
413
452
  return { shape: "passthrough", status: 200 };
@@ -504,6 +543,14 @@ class Ws {
504
543
  retryable: false,
505
544
  });
506
545
  }
546
+ // {§http-host-policy} — an operator-confined deployment refuses other hosts before any I/O.
547
+ if (!HostPolicy.permits(address.url)) {
548
+ return _a.#bad(403, "host-not-permitted", `${new URL(address.url).hostname} is outside the operator's web host policy.`, {
549
+ target: address.url,
550
+ stage: "target-validation",
551
+ retryable: false,
552
+ });
553
+ }
507
554
  return address;
508
555
  }
509
556
  // {§ws-lifecycle} open() binds an existing entry, so seed the manifest shape.