useyuva 0.0.15 → 0.0.17

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.
@@ -301,10 +301,12 @@ export interface paths {
301
301
  /**
302
302
  * Register a push subscription
303
303
  * @description Saves the browser's `PushSubscription` (`subscription.toJSON()`) for the current session.
304
- * Registering an endpoint that is already saved updates it and moves it to this session and
305
- * person, so call it on every panel start while notification permission is granted. The
306
- * endpoint must be an `https` URL on a public address. At most 20 subscriptions per person.
307
- * 404 `push_disabled` when the server has no VAPID keys.
304
+ * Registering an endpoint the caller already saved updates it and moves it to this session,
305
+ * so call it on every panel start while notification permission is granted. An endpoint
306
+ * saved by another person is never taken over: 409 `push_endpoint_taken`. Signing out or
307
+ * removing the subscription frees the endpoint. The endpoint must be an `https` URL on a
308
+ * public address. At most 20 subscriptions per person. 404 `push_disabled` when the server
309
+ * has no VAPID keys.
308
310
  */
309
311
  post: operations["createPushSubscription"];
310
312
  delete?: never;
@@ -2455,8 +2457,9 @@ export interface paths {
2455
2457
  * from the public (its author no longer sees it either). On the opening post this approves or
2456
2458
  * hides the whole thread. Approving a reply notifies the thread's followers.
2457
2459
  *
2458
- * `body` (and `title` on the opening post) edits a post the calling member wrote; other
2459
- * posts answer `403 forbidden`. Member sessions only.
2460
+ * `state` needs an owner or admin; an agent answers `403 forbidden`. `body` (and `title` on
2461
+ * the opening post) edits a post the calling member wrote, any role; other posts answer
2462
+ * `403 forbidden`. Member sessions only.
2460
2463
  */
2461
2464
  patch: operations["updateDiscussionPost"];
2462
2465
  trace?: never;
@@ -2474,8 +2477,8 @@ export interface paths {
2474
2477
  * Mark a post as spam
2475
2478
  * @description Hides the post (the thread, for an opening post) and every post of its author in the
2476
2479
  * workspace still waiting for approval, and makes the author's later posts wait for a member
2477
- * whatever the channel's setting. A member's post answers `400 validation_failed`.
2478
- * Member sessions only.
2480
+ * whatever the channel's setting. A member's post answers `400 validation_failed`. Needs an
2481
+ * owner or admin; an agent answers `403 forbidden`. Member sessions only.
2479
2482
  */
2480
2483
  post: operations["markDiscussionPostSpam"];
2481
2484
  delete?: never;
@@ -6486,17 +6489,25 @@ export interface paths {
6486
6489
  /**
6487
6490
  * Receive an e-mail
6488
6491
  * @description Called by the edge Email Worker or any MTA with the raw message and its envelope. The
6489
- * signature is `v2=` and the lowercase hex HMAC-SHA256, keyed with the server's
6490
- * `YUVA_INGRESS_SECRET`, over
6491
- * `<X-Yuva-Timestamp>.<X-Yuva-Envelope-To>.<X-Yuva-Envelope-From>.<raw body>` (an empty
6492
- * envelope sender leaves its place empty). The deprecated `v1=`, over
6493
- * `<X-Yuva-Timestamp>.<X-Yuva-Envelope-To>.<raw body>`, is accepted only when
6494
- * `YUVA_INGRESS_ACCEPT_V1` is set, and then the envelope sender is not trusted (it never marks
6495
- * a delivery report or automatic mail). The headers and the timestamp, which must be within 5
6496
- * minutes of the server's clock, are checked before the body is read. A message with a
6497
- * Message-ID seen before on the same channel is accepted again without being stored twice.
6498
- * At most `YUVA_INGRESS_MAX_CONCURRENT` messages are processed at once; more are answered
6499
- * `503 unavailable`.
6492
+ * signature is `v3=<head MAC>.<body MAC>`, both lowercase hex HMAC-SHA256 keyed with the
6493
+ * server's `YUVA_INGRESS_SECRET`. The head MAC covers
6494
+ * `v3\n<X-Yuva-Timestamp>\n<X-Yuva-Envelope-To>\n<X-Yuva-Envelope-From>\n<Content-Length>`
6495
+ * (fields joined by a newline, the length in decimal without leading zeros, an empty envelope
6496
+ * sender leaving its place empty); the body MAC covers the same text, a newline and the raw
6497
+ * body. `Content-Length` is required. The headers, the timestamp, which must be within 5
6498
+ * minutes of the server's clock, and the head MAC are checked before the body is read; the
6499
+ * body must arrive within 30 seconds.
6500
+ *
6501
+ * The deprecated `v2=`, the hex HMAC over
6502
+ * `<X-Yuva-Timestamp>.<X-Yuva-Envelope-To>.<X-Yuva-Envelope-From>.<raw body>`, is accepted
6503
+ * while `YUVA_INGRESS_ACCEPT_V2` is on (the default for now); its body is read before it is
6504
+ * authenticated. The deprecated `v1=`, over `<X-Yuva-Timestamp>.<X-Yuva-Envelope-To>.<raw body>`,
6505
+ * is accepted only when `YUVA_INGRESS_ACCEPT_V1` is set, and then the envelope sender is not
6506
+ * trusted (it never marks a delivery report or automatic mail). A version that is not accepted
6507
+ * is refused before the body is read. A message with a Message-ID seen before on the same
6508
+ * channel is accepted again without being stored twice. At most `YUVA_INGRESS_MAX_CONCURRENT`
6509
+ * messages are processed at once, counted from the signature header check, before the body is
6510
+ * read; more are answered `503 unavailable` without the body being read.
6500
6511
  *
6501
6512
  * The recipient selects the channel: its exact address, then `local@` for `local+tag@`, then
6502
6513
  * the domain's catch-all channel (`*@domain`). Volume never bounces mail: a sender over the
@@ -15546,6 +15557,7 @@ export interface operations {
15546
15557
  400: components["responses"]["Problem"];
15547
15558
  401: components["responses"]["Problem"];
15548
15559
  404: components["responses"]["Problem"];
15560
+ 409: components["responses"]["Problem"];
15549
15561
  };
15550
15562
  };
15551
15563
  deletePushSubscription: {
@@ -24736,6 +24748,8 @@ export interface operations {
24736
24748
  /** @description Unix time in seconds. */
24737
24749
  "X-Yuva-Timestamp": string;
24738
24750
  "X-Yuva-Signature": string;
24751
+ /** @description The body length in bytes; covered by the `v3` head MAC. */
24752
+ "Content-Length": number;
24739
24753
  };
24740
24754
  path?: never;
24741
24755
  cookie?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "useyuva",
3
- "version": "0.0.15",
3
+ "version": "0.0.17",
4
4
  "description": "Yuva for the web: a headless client for contacts, the <yuva-chat> element, documentation page feedback and discussions, the <yuva-subscribe> mailing list form, cookieless web analytics, React hooks, a Nuxt module, a typed /v1 client and server helpers for identity tokens, webhooks and server-side analytics.",
5
5
  "license": "MIT",
6
6
  "repository": {