@fedify/fedify 1.1.4 → 1.1.6

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.
Files changed (66) hide show
  1. package/CHANGES.md +232 -0
  2. package/esm/federation/handler.js +15 -1
  3. package/esm/runtime/key.js +1 -1
  4. package/esm/sig/http.js +9 -1
  5. package/esm/testing/fixtures/example.com/orderedcollectionpage +24 -0
  6. package/esm/vocab/application.yaml +2 -0
  7. package/esm/vocab/group.yaml +2 -0
  8. package/esm/vocab/organization.yaml +2 -0
  9. package/esm/vocab/person.yaml +2 -0
  10. package/esm/vocab/service.yaml +2 -0
  11. package/esm/vocab/vocab.js +450 -110
  12. package/package.json +1 -1
  13. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/concat.d.ts.map +1 -1
  14. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/copy.d.ts.map +1 -1
  15. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/ends_with.d.ts.map +1 -1
  16. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/equals.d.ts.map +1 -1
  17. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/includes_needle.d.ts.map +1 -1
  18. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/index_of_needle.d.ts.map +1 -1
  19. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/last_index_of_needle.d.ts.map +1 -1
  20. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/mod.d.ts.map +1 -1
  21. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/repeat.d.ts.map +1 -1
  22. package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/starts_with.d.ts.map +1 -1
  23. package/types/deps/jsr.io/@std/http/1.0.10/_negotiation/common.d.ts.map +1 -0
  24. package/types/deps/jsr.io/@std/http/1.0.10/_negotiation/encoding.d.ts.map +1 -0
  25. package/types/deps/jsr.io/@std/http/1.0.10/_negotiation/language.d.ts.map +1 -0
  26. package/types/deps/jsr.io/@std/http/1.0.10/_negotiation/media_type.d.ts.map +1 -0
  27. package/types/deps/jsr.io/@std/http/1.0.10/negotiation.d.ts.map +1 -0
  28. package/types/federation/handler.d.ts.map +1 -1
  29. package/types/sig/http.d.ts.map +1 -1
  30. package/types/vocab/vocab.d.ts +30 -30
  31. package/types/vocab/vocab.d.ts.map +1 -1
  32. package/types/deps/jsr.io/@std/http/1.0.9/_negotiation/common.d.ts.map +0 -1
  33. package/types/deps/jsr.io/@std/http/1.0.9/_negotiation/encoding.d.ts.map +0 -1
  34. package/types/deps/jsr.io/@std/http/1.0.9/_negotiation/language.d.ts.map +0 -1
  35. package/types/deps/jsr.io/@std/http/1.0.9/_negotiation/media_type.d.ts.map +0 -1
  36. package/types/deps/jsr.io/@std/http/1.0.9/negotiation.d.ts.map +0 -1
  37. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/concat.js +0 -0
  38. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/copy.js +0 -0
  39. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/ends_with.js +0 -0
  40. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/equals.js +0 -0
  41. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/includes_needle.js +0 -0
  42. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/index_of_needle.js +0 -0
  43. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/last_index_of_needle.js +0 -0
  44. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/mod.js +0 -0
  45. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/repeat.js +0 -0
  46. /package/esm/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/starts_with.js +0 -0
  47. /package/esm/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/common.js +0 -0
  48. /package/esm/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/encoding.js +0 -0
  49. /package/esm/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/language.js +0 -0
  50. /package/esm/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/media_type.js +0 -0
  51. /package/esm/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/negotiation.js +0 -0
  52. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/concat.d.ts +0 -0
  53. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/copy.d.ts +0 -0
  54. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/ends_with.d.ts +0 -0
  55. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/equals.d.ts +0 -0
  56. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/includes_needle.d.ts +0 -0
  57. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/index_of_needle.d.ts +0 -0
  58. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/last_index_of_needle.d.ts +0 -0
  59. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/mod.d.ts +0 -0
  60. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/repeat.d.ts +0 -0
  61. /package/types/deps/jsr.io/@std/bytes/{1.0.3 → 1.0.4}/starts_with.d.ts +0 -0
  62. /package/types/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/common.d.ts +0 -0
  63. /package/types/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/encoding.d.ts +0 -0
  64. /package/types/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/language.d.ts +0 -0
  65. /package/types/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/_negotiation/media_type.d.ts +0 -0
  66. /package/types/deps/jsr.io/@std/http/{1.0.9 → 1.0.10}/negotiation.d.ts +0 -0
package/CHANGES.md CHANGED
@@ -3,6 +3,82 @@
3
3
  Fedify changelog
4
4
  ================
5
5
 
6
+ Version 1.1.6
7
+ -------------
8
+
9
+ Released on November 19, 2024.
10
+
11
+ - Fix a bug where `Actor`'s `inbox` and `outbox` properties had not been
12
+ able to be set to an `OrderedCollectionPage` object, even though it is
13
+ a subtype of `OrderedCollection` according to Activity Vocabulary
14
+ specification. [[#165]]
15
+
16
+ - The type of `Application()` constructor's `inbox` and `outbox` options
17
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
18
+ (was `OrderedCollection | null | undefined`).
19
+ - The type of `Application.clone()` method's `inbox` and `outbox` options
20
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
21
+ (was `OrderedCollection | null | undefined`).
22
+ - The return type of `Application.getInbox()` and
23
+ `Application.getOutbox()` methods is now `OrderedCollection |
24
+ OrderedCollectionPage | null` (was `OrderedCollection | null`).
25
+ - The type of `Group()` constructor's `inbox` and `outbox` options is
26
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
27
+ `OrderedCollection | null | undefined`).
28
+ - The type of `Group.clone()` method's `inbox` and `outbox` options is
29
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
30
+ `OrderedCollection | null | undefined`).
31
+ - The return type of `Group.getInbox()` and `Group.getOutbox()` methods
32
+ is now `OrderedCollection | OrderedCollectionPage | null` (was
33
+ `OrderedCollection | null`).
34
+ - The type of `Organization()` constructor's `inbox` and `outbox` options
35
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
36
+ (was `OrderedCollection | null | undefined`).
37
+ - The type of `Organization.clone()` method's `inbox` and `outbox` options
38
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
39
+ (was `OrderedCollection | null | undefined`).
40
+ - The return type of `Organization.getInbox()` and
41
+ `Organization.getOutbox()` methods is now `OrderedCollection |
42
+ OrderedCollectionPage | null` (was `OrderedCollection | null`).
43
+ - The type of `Person()` constructor's `inbox` and `outbox` options is
44
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
45
+ `OrderedCollection | null | undefined`).
46
+ - The type of `Person.clone()` method's `inbox` and `outbox` options is
47
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
48
+ `OrderedCollection | null | undefined`).
49
+ - The return type of `Person.getInbox()` and `Person.getOutbox()` methods
50
+ is now `OrderedCollection | OrderedCollectionPage | null` (was
51
+ `OrderedCollection | null`).
52
+ - The type of `Service()` constructor's `inbox` and `outbox` options is
53
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
54
+ `OrderedCollection | null | undefined`).
55
+ - The type of `Service.clone()` method's `inbox` and `outbox` options is
56
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
57
+ `OrderedCollection | null | undefined`).
58
+ - The return type of `Service.getInbox()` and `Service.getOutbox()`
59
+ methods is now `OrderedCollection | OrderedCollectionPage | null` (was
60
+ `OrderedCollection | null`).
61
+
62
+
63
+ Version 1.1.5
64
+ -------------
65
+
66
+ Released on December 14, 2024.
67
+
68
+ - Suppressed a `TypeError` with a message <q>unusable</q> due to Node.js's
69
+ mysterious behavior. [[#159]]
70
+
71
+ - The `verifyRequest()` function no longer throws a `TypeError`
72
+ when a given `Request` object's body is already consumed or locked.
73
+ Instead, it logs an error message to the `["fedify", "sig", "http"]`
74
+ logger category and returns `null`.
75
+ - The `Federation.fetch()` method no longer throws a `TypeError`
76
+ when a given `Request` object's body is already consumed or locked.
77
+ Instead, it logs an error message to the `["fedify", "federation",
78
+ "inbox"]` logger category and responds with a `500 Internal Server
79
+ Error`.
80
+
81
+
6
82
  Version 1.1.4
7
83
  -------------
8
84
 
@@ -149,6 +225,82 @@ Released on October 20, 2024.
149
225
  [#150]: https://github.com/dahlia/fedify/issues/150
150
226
 
151
227
 
228
+ Version 1.0.10
229
+ --------------
230
+
231
+ Released on December 19, 2024.
232
+
233
+ - Fix a bug where `Actor`'s `inbox` and `outbox` properties had not been
234
+ able to be set to an `OrderedCollectionPage` object, even though it is
235
+ a subtype of `OrderedCollection` according to Activity Vocabulary
236
+ specification. [[#165]]
237
+
238
+ - The type of `Application()` constructor's `inbox` and `outbox` options
239
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
240
+ (was `OrderedCollection | null | undefined`).
241
+ - The type of `Application.clone()` method's `inbox` and `outbox` options
242
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
243
+ (was `OrderedCollection | null | undefined`).
244
+ - The return type of `Application.getInbox()` and
245
+ `Application.getOutbox()` methods is now `OrderedCollection |
246
+ OrderedCollectionPage | null` (was `OrderedCollection | null`).
247
+ - The type of `Group()` constructor's `inbox` and `outbox` options is
248
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
249
+ `OrderedCollection | null | undefined`).
250
+ - The type of `Group.clone()` method's `inbox` and `outbox` options is
251
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
252
+ `OrderedCollection | null | undefined`).
253
+ - The return type of `Group.getInbox()` and `Group.getOutbox()` methods
254
+ is now `OrderedCollection | OrderedCollectionPage | null` (was
255
+ `OrderedCollection | null`).
256
+ - The type of `Organization()` constructor's `inbox` and `outbox` options
257
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
258
+ (was `OrderedCollection | null | undefined`).
259
+ - The type of `Organization.clone()` method's `inbox` and `outbox` options
260
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
261
+ (was `OrderedCollection | null | undefined`).
262
+ - The return type of `Organization.getInbox()` and
263
+ `Organization.getOutbox()` methods is now `OrderedCollection |
264
+ OrderedCollectionPage | null` (was `OrderedCollection | null`).
265
+ - The type of `Person()` constructor's `inbox` and `outbox` options is
266
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
267
+ `OrderedCollection | null | undefined`).
268
+ - The type of `Person.clone()` method's `inbox` and `outbox` options is
269
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
270
+ `OrderedCollection | null | undefined`).
271
+ - The return type of `Person.getInbox()` and `Person.getOutbox()` methods
272
+ is now `OrderedCollection | OrderedCollectionPage | null` (was
273
+ `OrderedCollection | null`).
274
+ - The type of `Service()` constructor's `inbox` and `outbox` options is
275
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
276
+ `OrderedCollection | null | undefined`).
277
+ - The type of `Service.clone()` method's `inbox` and `outbox` options is
278
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
279
+ `OrderedCollection | null | undefined`).
280
+ - The return type of `Service.getInbox()` and `Service.getOutbox()`
281
+ methods is now `OrderedCollection | OrderedCollectionPage | null` (was
282
+ `OrderedCollection | null`).
283
+
284
+
285
+ Version 1.0.9
286
+ -------------
287
+
288
+ Released on December 14, 2024.
289
+
290
+ - Suppressed a `TypeError` with a message <q>unusable</q> due to Node.js's
291
+ mysterious behavior. [[#159]]
292
+
293
+ - The `verifyRequest()` function no longer throws a `TypeError`
294
+ when a given `Request` object's body is already consumed or locked.
295
+ Instead, it logs an error message to the `["fedify", "sig", "http"]`
296
+ logger category and returns `null`.
297
+ - The `Federation.fetch()` method no longer throws a `TypeError`
298
+ when a given `Request` object's body is already consumed or locked.
299
+ Instead, it logs an error message to the `["fedify", "federation",
300
+ "inbox"]` logger category and responds with a `500 Internal Server
301
+ Error`.
302
+
303
+
152
304
  Version 1.0.8
153
305
  -------------
154
306
 
@@ -414,6 +566,86 @@ Released on September 26, 2024.
414
566
  [#137]: https://github.com/dahlia/fedify/issues/137
415
567
 
416
568
 
569
+ Version 0.15.8
570
+ --------------
571
+
572
+ Released on November 159, 2024.
573
+
574
+ - Fix a bug where `Actor`'s `inbox` and `outbox` properties had not been
575
+ able to be set to an `OrderedCollectionPage` object, even though it is
576
+ a subtype of `OrderedCollection` according to Activity Vocabulary
577
+ specification. [[#165]]
578
+
579
+ - The type of `Application()` constructor's `inbox` and `outbox` options
580
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
581
+ (was `OrderedCollection | null | undefined`).
582
+ - The type of `Application.clone()` method's `inbox` and `outbox` options
583
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
584
+ (was `OrderedCollection | null | undefined`).
585
+ - The return type of `Application.getInbox()` and
586
+ `Application.getOutbox()` methods is now `OrderedCollection |
587
+ OrderedCollectionPage | null` (was `OrderedCollection | null`).
588
+ - The type of `Group()` constructor's `inbox` and `outbox` options is
589
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
590
+ `OrderedCollection | null | undefined`).
591
+ - The type of `Group.clone()` method's `inbox` and `outbox` options is
592
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
593
+ `OrderedCollection | null | undefined`).
594
+ - The return type of `Group.getInbox()` and `Group.getOutbox()` methods
595
+ is now `OrderedCollection | OrderedCollectionPage | null` (was
596
+ `OrderedCollection | null`).
597
+ - The type of `Organization()` constructor's `inbox` and `outbox` options
598
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
599
+ (was `OrderedCollection | null | undefined`).
600
+ - The type of `Organization.clone()` method's `inbox` and `outbox` options
601
+ is now `OrderedCollection | OrderedCollectionPage | null | undefined`
602
+ (was `OrderedCollection | null | undefined`).
603
+ - The return type of `Organization.getInbox()` and
604
+ `Organization.getOutbox()` methods is now `OrderedCollection |
605
+ OrderedCollectionPage | null` (was `OrderedCollection | null`).
606
+ - The type of `Person()` constructor's `inbox` and `outbox` options is
607
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
608
+ `OrderedCollection | null | undefined`).
609
+ - The type of `Person.clone()` method's `inbox` and `outbox` options is
610
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
611
+ `OrderedCollection | null | undefined`).
612
+ - The return type of `Person.getInbox()` and `Person.getOutbox()` methods
613
+ is now `OrderedCollection | OrderedCollectionPage | null` (was
614
+ `OrderedCollection | null`).
615
+ - The type of `Service()` constructor's `inbox` and `outbox` options is
616
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
617
+ `OrderedCollection | null | undefined`).
618
+ - The type of `Service.clone()` method's `inbox` and `outbox` options is
619
+ now `OrderedCollection | OrderedCollectionPage | null | undefined` (was
620
+ `OrderedCollection | null | undefined`).
621
+ - The return type of `Service.getInbox()` and `Service.getOutbox()`
622
+ methods is now `OrderedCollection | OrderedCollectionPage | null` (was
623
+ `OrderedCollection | null`).
624
+
625
+ [#165]: https://github.com/dahlia/fedify/issues/165
626
+
627
+
628
+ Version 0.15.7
629
+ --------------
630
+
631
+ Released on November 14, 2024.
632
+
633
+ - Suppressed a `TypeError` with a message <q>unusable</q> due to Node.js's
634
+ mysterious behavior. [[#159]]
635
+
636
+ - The `verifyRequest()` function no longer throws a `TypeError`
637
+ when a given `Request` object's body is already consumed or locked.
638
+ Instead, it logs an error message to the `["fedify", "sig", "http"]`
639
+ logger category and returns `null`.
640
+ - The `Federation.fetch()` method no longer throws a `TypeError`
641
+ when a given `Request` object's body is already consumed or locked.
642
+ Instead, it logs an error message to the `["fedify", "federation",
643
+ "inbox"]` logger category and responds with a `500 Internal Server
644
+ Error`.
645
+
646
+ [#159]: https://github.com/dahlia/fedify/issues/159
647
+
648
+
417
649
  Version 0.15.6
418
650
  --------------
419
651
 
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
- import { accepts } from "../deps/jsr.io/@std/http/1.0.9/negotiation.js";
3
+ import { accepts } from "../deps/jsr.io/@std/http/1.0.10/negotiation.js";
4
4
  import { verifyRequest } from "../sig/http.js";
5
5
  import { detachSignature, verifyJsonLd } from "../sig/ld.js";
6
6
  import { doesActorOwnKey } from "../sig/owner.js";
@@ -188,6 +188,20 @@ export async function handleInbox(request, { identifier, context, inboxContextFa
188
188
  return await onNotFound(request);
189
189
  }
190
190
  }
191
+ if (request.bodyUsed) {
192
+ logger.error("Request body has already been read.", { identifier });
193
+ return new Response("Internal server error.", {
194
+ status: 500,
195
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
196
+ });
197
+ }
198
+ else if (request.body?.locked) {
199
+ logger.error("Request body is locked.", { identifier });
200
+ return new Response("Internal server error.", {
201
+ status: 500,
202
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
203
+ });
204
+ }
191
205
  let json;
192
206
  try {
193
207
  json = await request.clone().json();
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { createPublicKey } from "node:crypto";
3
- import { concat } from "../deps/jsr.io/@std/bytes/1.0.3/concat.js";
3
+ import { concat } from "../deps/jsr.io/@std/bytes/1.0.4/concat.js";
4
4
  import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/1.0.5/base64.js";
5
5
  import { decodeBase64Url } from "../deps/jsr.io/@std/encoding/1.0.5/base64url.js";
6
6
  import { decodeHex } from "../deps/jsr.io/@std/encoding/1.0.5/hex.js";
package/esm/sig/http.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
- import { equals } from "../deps/jsr.io/@std/bytes/1.0.3/mod.js";
3
+ import { equals } from "../deps/jsr.io/@std/bytes/1.0.4/mod.js";
4
4
  import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/1.0.5/base64.js";
5
5
  import { CryptographicKey } from "../vocab/vocab.js";
6
6
  import { fetchKey, validateCryptoKey } from "./key.js";
@@ -69,6 +69,14 @@ const supportedHashAlgorithms = {
69
69
  */
70
70
  export async function verifyRequest(request, { documentLoader, contextLoader, timeWindow, currentTime, keyCache } = {}) {
71
71
  const logger = getLogger(["fedify", "sig", "http"]);
72
+ if (request.bodyUsed) {
73
+ logger.error("Failed to verify; the request body is already consumed.", { url: request.url });
74
+ return null;
75
+ }
76
+ else if (request.body?.locked) {
77
+ logger.error("Failed to verify; the request body is locked.", { url: request.url });
78
+ return null;
79
+ }
72
80
  const originalRequest = request;
73
81
  request = request.clone();
74
82
  const dateHeader = request.headers.get("Date");
@@ -0,0 +1,24 @@
1
+ {
2
+ "@context": "https://www.w3.org/ns/activitystreams",
3
+ "id": "https://example.com/orderedcollectionpage",
4
+ "type": "OrderedCollectionPage",
5
+ "partOf": "https://example.com/orderedcollectionpage",
6
+ "totalItems": 1,
7
+ "orderedItems": [
8
+ {
9
+ "id": "https://example.com/activities/1",
10
+ "type": "Create",
11
+ "published": "2024-11-19T15:24:56Z",
12
+ "actor": "https://example.com/users/1",
13
+ "to": "https://www.w3.org/ns/activitystreams#Public",
14
+ "object": {
15
+ "id": "https://example.com/notes/1",
16
+ "type": "Note",
17
+ "content": "This is a simple note",
18
+ "attributedTo": "https://example.com/users/1",
19
+ "to": "https://www.w3.org/ns/activitystreams#Public",
20
+ "published": "2024-11-19T15:24:56Z"
21
+ }
22
+ }
23
+ ]
24
+ }
@@ -105,6 +105,7 @@ properties:
105
105
  and dropping any activities already seen.
106
106
  range:
107
107
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
108
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
108
109
 
109
110
  - singularName: outbox
110
111
  functional: true
@@ -123,6 +124,7 @@ properties:
123
124
  implementing and deploying the server.
124
125
  range:
125
126
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
127
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
126
128
 
127
129
  - singularName: following
128
130
  functional: true
@@ -105,6 +105,7 @@ properties:
105
105
  and dropping any activities already seen.
106
106
  range:
107
107
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
108
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
108
109
 
109
110
  - singularName: outbox
110
111
  functional: true
@@ -123,6 +124,7 @@ properties:
123
124
  implementing and deploying the server.
124
125
  range:
125
126
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
127
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
126
128
 
127
129
  - singularName: following
128
130
  functional: true
@@ -105,6 +105,7 @@ properties:
105
105
  and dropping any activities already seen.
106
106
  range:
107
107
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
108
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
108
109
 
109
110
  - singularName: outbox
110
111
  functional: true
@@ -123,6 +124,7 @@ properties:
123
124
  implementing and deploying the server.
124
125
  range:
125
126
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
127
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
126
128
 
127
129
  - singularName: following
128
130
  functional: true
@@ -105,6 +105,7 @@ properties:
105
105
  and dropping any activities already seen.
106
106
  range:
107
107
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
108
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
108
109
 
109
110
  - singularName: outbox
110
111
  functional: true
@@ -123,6 +124,7 @@ properties:
123
124
  implementing and deploying the server.
124
125
  range:
125
126
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
127
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
126
128
 
127
129
  - singularName: following
128
130
  functional: true
@@ -105,6 +105,7 @@ properties:
105
105
  and dropping any activities already seen.
106
106
  range:
107
107
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
108
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
108
109
 
109
110
  - singularName: outbox
110
111
  functional: true
@@ -123,6 +124,7 @@ properties:
123
124
  implementing and deploying the server.
124
125
  range:
125
126
  - "https://www.w3.org/ns/activitystreams#OrderedCollection"
127
+ - "https://www.w3.org/ns/activitystreams#OrderedCollectionPage"
126
128
 
127
129
  - singularName: following
128
130
  functional: true