@fedify/fedify 0.11.0-dev.237 → 0.11.0-dev.239

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGES.md CHANGED
@@ -13,7 +13,14 @@ To be released.
13
13
  - Added `suppressError` option to dereferencing accessors of Activity
14
14
  Vocabulary classes.
15
15
 
16
- - Added `Federation.setInboxDispatcher()` method. [[#71]]
16
+ - Added more collection dispatchers. [[#78]]
17
+
18
+ - Added `Federation.setInboxDispatcher()` method. [[#71]]
19
+ - Added `Federation.setLikedDispatcher()` method.
20
+ - Added `Context.getLikedUri()` method.
21
+ - Added `{ type: "liked"; handle: string }` case to `ParseUriResult` type.
22
+ - Renamed `linked` property (which was a typo) to `liked` in
23
+ `Application`, `Group`, `Organization`, `Person`, and `Service` classes.
17
24
 
18
25
  - Frequently used JSON-LD contexts are now preloaded. [[74]]
19
26
 
@@ -44,6 +51,7 @@ To be released.
44
51
  [#71]: https://github.com/dahlia/fedify/issues/71
45
52
  [#74]: https://github.com/dahlia/fedify/issues/74
46
53
  [#76]: https://github.com/dahlia/fedify/pull/76
54
+ [#78]: https://github.com/dahlia/fedify/issues/78
47
55
  [#79]: https://github.com/dahlia/fedify/issues/79
48
56
 
49
57
 
@@ -5,7 +5,7 @@ import { fetchDocumentLoader, getAuthenticatedDocumentLoader, kvCache, } from ".
5
5
  import { verifyRequest } from "../sig/http.js";
6
6
  import { exportJwk, importJwk, validateCryptoKey } from "../sig/key.js";
7
7
  import { getKeyOwner } from "../sig/owner.js";
8
- import { Activity, CryptographicKey, Multikey, } from "../vocab/mod.js";
8
+ import { Activity, CryptographicKey, Multikey, } from "../vocab/vocab.js";
9
9
  import { handleWebFinger } from "../webfinger/handler.js";
10
10
  import { buildCollectionSynchronizationHeader } from "./collection.js";
11
11
  import { handleActor, handleCollection, handleInbox, handleObject, } from "./handler.js";
@@ -47,6 +47,7 @@ export class Federation {
47
47
  #outboxCallbacks;
48
48
  #followingCallbacks;
49
49
  #followersCallbacks;
50
+ #likedCallbacks;
50
51
  #inboxListeners;
51
52
  #inboxErrorHandler;
52
53
  #sharedInboxKeyDispatcher;
@@ -600,6 +601,50 @@ export class Federation {
600
601
  };
601
602
  return setters;
602
603
  }
604
+ /**
605
+ * Registers a liked collection dispatcher.
606
+ * @param path The URI path pattern for the liked collection. The syntax
607
+ * is based on URI Template
608
+ * ([RFC 6570](https://tools.ietf.org/html/rfc6570)). The path
609
+ * must have one variable: `{handle}`.
610
+ * @param dispatcher A liked collection callback to register.
611
+ * @returns An object with methods to set other liked collection
612
+ * callbacks.
613
+ * @throws {@link RouterError} Thrown if the path pattern is invalid.
614
+ * @since 0.11.0
615
+ */
616
+ setLikedDispatcher(path, dispatcher) {
617
+ if (this.#router.has("liked")) {
618
+ throw new RouterError("Liked collection dispatcher already set.");
619
+ }
620
+ const variables = this.#router.add(path, "liked");
621
+ if (variables.size !== 1 || !variables.has("handle")) {
622
+ throw new RouterError("Path for liked collection dispatcher must have one variable: {handle}");
623
+ }
624
+ const callbacks = {
625
+ dispatcher,
626
+ };
627
+ this.#likedCallbacks = callbacks;
628
+ const setters = {
629
+ setCounter(counter) {
630
+ callbacks.counter = counter;
631
+ return setters;
632
+ },
633
+ setFirstCursor(cursor) {
634
+ callbacks.firstCursor = cursor;
635
+ return setters;
636
+ },
637
+ setLastCursor(cursor) {
638
+ callbacks.lastCursor = cursor;
639
+ return setters;
640
+ },
641
+ authorize(predicate) {
642
+ callbacks.authorizePredicate = predicate;
643
+ return setters;
644
+ },
645
+ };
646
+ return setters;
647
+ }
603
648
  /**
604
649
  * Assigns the URL path for the inbox and starts setting inbox listeners.
605
650
  *
@@ -926,6 +971,16 @@ export class Federation {
926
971
  onNotAcceptable,
927
972
  });
928
973
  }
974
+ case "liked":
975
+ return await handleCollection(request, {
976
+ name: "liked",
977
+ handle: route.values.handle,
978
+ context,
979
+ collectionCallbacks: this.#likedCallbacks,
980
+ onUnauthorized,
981
+ onNotFound,
982
+ onNotAcceptable,
983
+ });
929
984
  default: {
930
985
  const response = onNotFound(request);
931
986
  return response instanceof Promise ? await response : response;
@@ -1024,6 +1079,13 @@ class ContextImpl {
1024
1079
  }
1025
1080
  return new URL(path, this.#url);
1026
1081
  }
1082
+ getLikedUri(handle) {
1083
+ const path = this.#router.build("liked", { handle });
1084
+ if (path == null) {
1085
+ throw new RouterError("No liked collection path registered.");
1086
+ }
1087
+ return new URL(path, this.#url);
1088
+ }
1027
1089
  parseUri(uri) {
1028
1090
  if (uri.origin !== this.#url.origin)
1029
1091
  return null;
@@ -1057,6 +1119,9 @@ class ContextImpl {
1057
1119
  else if (route.name === "followers") {
1058
1120
  return { type: "followers", handle: route.values.handle };
1059
1121
  }
1122
+ else if (route.name === "liked") {
1123
+ return { type: "liked", handle: route.values.handle };
1124
+ }
1060
1125
  return null;
1061
1126
  }
1062
1127
  getHandleFromActorUri(actorUri) {
@@ -130,7 +130,7 @@ properties:
130
130
  range:
131
131
  - "https://www.w3.org/ns/activitystreams#Collection"
132
132
 
133
- - singularName: linked
133
+ - singularName: liked
134
134
  functional: true
135
135
  uri: "https://www.w3.org/ns/activitystreams#liked"
136
136
  description: |
@@ -130,7 +130,7 @@ properties:
130
130
  range:
131
131
  - "https://www.w3.org/ns/activitystreams#Collection"
132
132
 
133
- - singularName: linked
133
+ - singularName: liked
134
134
  functional: true
135
135
  uri: "https://www.w3.org/ns/activitystreams#liked"
136
136
  description: |
@@ -130,7 +130,7 @@ properties:
130
130
  range:
131
131
  - "https://www.w3.org/ns/activitystreams#Collection"
132
132
 
133
- - singularName: linked
133
+ - singularName: liked
134
134
  functional: true
135
135
  uri: "https://www.w3.org/ns/activitystreams#liked"
136
136
  description: |
@@ -130,7 +130,7 @@ properties:
130
130
  range:
131
131
  - "https://www.w3.org/ns/activitystreams#Collection"
132
132
 
133
- - singularName: linked
133
+ - singularName: liked
134
134
  functional: true
135
135
  uri: "https://www.w3.org/ns/activitystreams#liked"
136
136
  description: |
@@ -130,7 +130,7 @@ properties:
130
130
  range:
131
131
  - "https://www.w3.org/ns/activitystreams#Collection"
132
132
 
133
- - singularName: linked
133
+ - singularName: liked
134
134
  functional: true
135
135
  uri: "https://www.w3.org/ns/activitystreams#liked"
136
136
  description: |
@@ -7159,13 +7159,13 @@ export class Application extends Object {
7159
7159
  "Collection | URL" + ".");
7160
7160
  }
7161
7161
  }
7162
- if ("linked" in values && values.linked != null) {
7163
- if (values.linked instanceof Collection || values.linked instanceof URL) {
7162
+ if ("liked" in values && values.liked != null) {
7163
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
7164
7164
  // @ts-ignore: type is checked above.
7165
- this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
7165
+ this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
7166
7166
  }
7167
7167
  else {
7168
- throw new TypeError("The linked must be of type " +
7168
+ throw new TypeError("The liked must be of type " +
7169
7169
  "Collection | URL" + ".");
7170
7170
  }
7171
7171
  }
@@ -7385,13 +7385,13 @@ export class Application extends Object {
7385
7385
  }
7386
7386
  }
7387
7387
  clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU;
7388
- if ("linked" in values && values.linked != null) {
7389
- if (values.linked instanceof Collection || values.linked instanceof URL) {
7388
+ if ("liked" in values && values.liked != null) {
7389
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
7390
7390
  // @ts-ignore: type is checked above.
7391
- clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
7391
+ clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
7392
7392
  }
7393
7393
  else {
7394
- throw new TypeError("The linked must be of type " +
7394
+ throw new TypeError("The liked must be of type " +
7395
7395
  "Collection | URL" + ".");
7396
7396
  }
7397
7397
  }
@@ -7908,7 +7908,7 @@ export class Application extends Object {
7908
7908
  }
7909
7909
  return v;
7910
7910
  }
7911
- async #fetchLinked(url, options = {}) {
7911
+ async #fetchLiked(url, options = {}) {
7912
7912
  const documentLoader = options.documentLoader ?? this._documentLoader ??
7913
7913
  fetchDocumentLoader;
7914
7914
  const contextLoader = options.contextLoader ?? this._contextLoader ??
@@ -7937,10 +7937,10 @@ export class Application extends Object {
7937
7937
  }
7938
7938
  /**
7939
7939
  * Similar to
7940
- * {@link Application.getLinked},
7940
+ * {@link Application.getLiked},
7941
7941
  * but returns its `@id` URL instead of the object itself.
7942
7942
  */
7943
- get linkedId() {
7943
+ get likedId() {
7944
7944
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
7945
7945
  return null;
7946
7946
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
@@ -7955,12 +7955,12 @@ export class Application extends Object {
7955
7955
  * a {@link Collection} and MAY be filtered on privileges of an authenticated
7956
7956
  * user or as appropriate when no authentication is given.
7957
7957
  */
7958
- async getLinked(options = {}) {
7958
+ async getLiked(options = {}) {
7959
7959
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
7960
7960
  return null;
7961
7961
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
7962
7962
  if (v instanceof URL) {
7963
- const fetched = await this.#fetchLinked(v, options);
7963
+ const fetched = await this.#fetchLiked(v, options);
7964
7964
  if (fetched == null)
7965
7965
  return null;
7966
7966
  this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0] = fetched;
@@ -8552,7 +8552,7 @@ export class Application extends Object {
8552
8552
  }
8553
8553
  : v);
8554
8554
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
8555
- proxy.linked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
8555
+ proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
8556
8556
  }
8557
8557
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
8558
8558
  // deno-lint-ignore no-explicit-any
@@ -12231,13 +12231,13 @@ export class Group extends Object {
12231
12231
  "Collection | URL" + ".");
12232
12232
  }
12233
12233
  }
12234
- if ("linked" in values && values.linked != null) {
12235
- if (values.linked instanceof Collection || values.linked instanceof URL) {
12234
+ if ("liked" in values && values.liked != null) {
12235
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
12236
12236
  // @ts-ignore: type is checked above.
12237
- this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
12237
+ this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
12238
12238
  }
12239
12239
  else {
12240
- throw new TypeError("The linked must be of type " +
12240
+ throw new TypeError("The liked must be of type " +
12241
12241
  "Collection | URL" + ".");
12242
12242
  }
12243
12243
  }
@@ -12457,13 +12457,13 @@ export class Group extends Object {
12457
12457
  }
12458
12458
  }
12459
12459
  clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU;
12460
- if ("linked" in values && values.linked != null) {
12461
- if (values.linked instanceof Collection || values.linked instanceof URL) {
12460
+ if ("liked" in values && values.liked != null) {
12461
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
12462
12462
  // @ts-ignore: type is checked above.
12463
- clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
12463
+ clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
12464
12464
  }
12465
12465
  else {
12466
- throw new TypeError("The linked must be of type " +
12466
+ throw new TypeError("The liked must be of type " +
12467
12467
  "Collection | URL" + ".");
12468
12468
  }
12469
12469
  }
@@ -12980,7 +12980,7 @@ export class Group extends Object {
12980
12980
  }
12981
12981
  return v;
12982
12982
  }
12983
- async #fetchLinked(url, options = {}) {
12983
+ async #fetchLiked(url, options = {}) {
12984
12984
  const documentLoader = options.documentLoader ?? this._documentLoader ??
12985
12985
  fetchDocumentLoader;
12986
12986
  const contextLoader = options.contextLoader ?? this._contextLoader ??
@@ -13009,10 +13009,10 @@ export class Group extends Object {
13009
13009
  }
13010
13010
  /**
13011
13011
  * Similar to
13012
- * {@link Group.getLinked},
13012
+ * {@link Group.getLiked},
13013
13013
  * but returns its `@id` URL instead of the object itself.
13014
13014
  */
13015
- get linkedId() {
13015
+ get likedId() {
13016
13016
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
13017
13017
  return null;
13018
13018
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
@@ -13027,12 +13027,12 @@ export class Group extends Object {
13027
13027
  * a {@link Collection} and MAY be filtered on privileges of an authenticated
13028
13028
  * user or as appropriate when no authentication is given.
13029
13029
  */
13030
- async getLinked(options = {}) {
13030
+ async getLiked(options = {}) {
13031
13031
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
13032
13032
  return null;
13033
13033
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
13034
13034
  if (v instanceof URL) {
13035
- const fetched = await this.#fetchLinked(v, options);
13035
+ const fetched = await this.#fetchLiked(v, options);
13036
13036
  if (fetched == null)
13037
13037
  return null;
13038
13038
  this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0] = fetched;
@@ -13624,7 +13624,7 @@ export class Group extends Object {
13624
13624
  }
13625
13625
  : v);
13626
13626
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
13627
- proxy.linked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
13627
+ proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
13628
13628
  }
13629
13629
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
13630
13630
  // deno-lint-ignore no-explicit-any
@@ -15643,13 +15643,13 @@ export class Organization extends Object {
15643
15643
  "Collection | URL" + ".");
15644
15644
  }
15645
15645
  }
15646
- if ("linked" in values && values.linked != null) {
15647
- if (values.linked instanceof Collection || values.linked instanceof URL) {
15646
+ if ("liked" in values && values.liked != null) {
15647
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
15648
15648
  // @ts-ignore: type is checked above.
15649
- this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
15649
+ this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
15650
15650
  }
15651
15651
  else {
15652
- throw new TypeError("The linked must be of type " +
15652
+ throw new TypeError("The liked must be of type " +
15653
15653
  "Collection | URL" + ".");
15654
15654
  }
15655
15655
  }
@@ -15869,13 +15869,13 @@ export class Organization extends Object {
15869
15869
  }
15870
15870
  }
15871
15871
  clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU;
15872
- if ("linked" in values && values.linked != null) {
15873
- if (values.linked instanceof Collection || values.linked instanceof URL) {
15872
+ if ("liked" in values && values.liked != null) {
15873
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
15874
15874
  // @ts-ignore: type is checked above.
15875
- clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
15875
+ clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
15876
15876
  }
15877
15877
  else {
15878
- throw new TypeError("The linked must be of type " +
15878
+ throw new TypeError("The liked must be of type " +
15879
15879
  "Collection | URL" + ".");
15880
15880
  }
15881
15881
  }
@@ -16392,7 +16392,7 @@ export class Organization extends Object {
16392
16392
  }
16393
16393
  return v;
16394
16394
  }
16395
- async #fetchLinked(url, options = {}) {
16395
+ async #fetchLiked(url, options = {}) {
16396
16396
  const documentLoader = options.documentLoader ?? this._documentLoader ??
16397
16397
  fetchDocumentLoader;
16398
16398
  const contextLoader = options.contextLoader ?? this._contextLoader ??
@@ -16421,10 +16421,10 @@ export class Organization extends Object {
16421
16421
  }
16422
16422
  /**
16423
16423
  * Similar to
16424
- * {@link Organization.getLinked},
16424
+ * {@link Organization.getLiked},
16425
16425
  * but returns its `@id` URL instead of the object itself.
16426
16426
  */
16427
- get linkedId() {
16427
+ get likedId() {
16428
16428
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
16429
16429
  return null;
16430
16430
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
@@ -16439,12 +16439,12 @@ export class Organization extends Object {
16439
16439
  * a {@link Collection} and MAY be filtered on privileges of an authenticated
16440
16440
  * user or as appropriate when no authentication is given.
16441
16441
  */
16442
- async getLinked(options = {}) {
16442
+ async getLiked(options = {}) {
16443
16443
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
16444
16444
  return null;
16445
16445
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
16446
16446
  if (v instanceof URL) {
16447
- const fetched = await this.#fetchLinked(v, options);
16447
+ const fetched = await this.#fetchLiked(v, options);
16448
16448
  if (fetched == null)
16449
16449
  return null;
16450
16450
  this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0] = fetched;
@@ -17036,7 +17036,7 @@ export class Organization extends Object {
17036
17036
  }
17037
17037
  : v);
17038
17038
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
17039
- proxy.linked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
17039
+ proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
17040
17040
  }
17041
17041
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
17042
17042
  // deno-lint-ignore no-explicit-any
@@ -17393,13 +17393,13 @@ export class Person extends Object {
17393
17393
  "Collection | URL" + ".");
17394
17394
  }
17395
17395
  }
17396
- if ("linked" in values && values.linked != null) {
17397
- if (values.linked instanceof Collection || values.linked instanceof URL) {
17396
+ if ("liked" in values && values.liked != null) {
17397
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
17398
17398
  // @ts-ignore: type is checked above.
17399
- this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
17399
+ this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
17400
17400
  }
17401
17401
  else {
17402
- throw new TypeError("The linked must be of type " +
17402
+ throw new TypeError("The liked must be of type " +
17403
17403
  "Collection | URL" + ".");
17404
17404
  }
17405
17405
  }
@@ -17619,13 +17619,13 @@ export class Person extends Object {
17619
17619
  }
17620
17620
  }
17621
17621
  clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU;
17622
- if ("linked" in values && values.linked != null) {
17623
- if (values.linked instanceof Collection || values.linked instanceof URL) {
17622
+ if ("liked" in values && values.liked != null) {
17623
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
17624
17624
  // @ts-ignore: type is checked above.
17625
- clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
17625
+ clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
17626
17626
  }
17627
17627
  else {
17628
- throw new TypeError("The linked must be of type " +
17628
+ throw new TypeError("The liked must be of type " +
17629
17629
  "Collection | URL" + ".");
17630
17630
  }
17631
17631
  }
@@ -18142,7 +18142,7 @@ export class Person extends Object {
18142
18142
  }
18143
18143
  return v;
18144
18144
  }
18145
- async #fetchLinked(url, options = {}) {
18145
+ async #fetchLiked(url, options = {}) {
18146
18146
  const documentLoader = options.documentLoader ?? this._documentLoader ??
18147
18147
  fetchDocumentLoader;
18148
18148
  const contextLoader = options.contextLoader ?? this._contextLoader ??
@@ -18171,10 +18171,10 @@ export class Person extends Object {
18171
18171
  }
18172
18172
  /**
18173
18173
  * Similar to
18174
- * {@link Person.getLinked},
18174
+ * {@link Person.getLiked},
18175
18175
  * but returns its `@id` URL instead of the object itself.
18176
18176
  */
18177
- get linkedId() {
18177
+ get likedId() {
18178
18178
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
18179
18179
  return null;
18180
18180
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
@@ -18189,12 +18189,12 @@ export class Person extends Object {
18189
18189
  * a {@link Collection} and MAY be filtered on privileges of an authenticated
18190
18190
  * user or as appropriate when no authentication is given.
18191
18191
  */
18192
- async getLinked(options = {}) {
18192
+ async getLiked(options = {}) {
18193
18193
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
18194
18194
  return null;
18195
18195
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
18196
18196
  if (v instanceof URL) {
18197
- const fetched = await this.#fetchLinked(v, options);
18197
+ const fetched = await this.#fetchLiked(v, options);
18198
18198
  if (fetched == null)
18199
18199
  return null;
18200
18200
  this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0] = fetched;
@@ -18786,7 +18786,7 @@ export class Person extends Object {
18786
18786
  }
18787
18787
  : v);
18788
18788
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
18789
- proxy.linked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
18789
+ proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
18790
18790
  }
18791
18791
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
18792
18792
  // deno-lint-ignore no-explicit-any
@@ -20893,13 +20893,13 @@ export class Service extends Object {
20893
20893
  "Collection | URL" + ".");
20894
20894
  }
20895
20895
  }
20896
- if ("linked" in values && values.linked != null) {
20897
- if (values.linked instanceof Collection || values.linked instanceof URL) {
20896
+ if ("liked" in values && values.liked != null) {
20897
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
20898
20898
  // @ts-ignore: type is checked above.
20899
- this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
20899
+ this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
20900
20900
  }
20901
20901
  else {
20902
- throw new TypeError("The linked must be of type " +
20902
+ throw new TypeError("The liked must be of type " +
20903
20903
  "Collection | URL" + ".");
20904
20904
  }
20905
20905
  }
@@ -21119,13 +21119,13 @@ export class Service extends Object {
21119
21119
  }
21120
21120
  }
21121
21121
  clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU;
21122
- if ("linked" in values && values.linked != null) {
21123
- if (values.linked instanceof Collection || values.linked instanceof URL) {
21122
+ if ("liked" in values && values.liked != null) {
21123
+ if (values.liked instanceof Collection || values.liked instanceof URL) {
21124
21124
  // @ts-ignore: type is checked above.
21125
- clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.linked];
21125
+ clone.#_3bgkPwJanyTCoVFM9ovRcus8tKkU = [values.liked];
21126
21126
  }
21127
21127
  else {
21128
- throw new TypeError("The linked must be of type " +
21128
+ throw new TypeError("The liked must be of type " +
21129
21129
  "Collection | URL" + ".");
21130
21130
  }
21131
21131
  }
@@ -21642,7 +21642,7 @@ export class Service extends Object {
21642
21642
  }
21643
21643
  return v;
21644
21644
  }
21645
- async #fetchLinked(url, options = {}) {
21645
+ async #fetchLiked(url, options = {}) {
21646
21646
  const documentLoader = options.documentLoader ?? this._documentLoader ??
21647
21647
  fetchDocumentLoader;
21648
21648
  const contextLoader = options.contextLoader ?? this._contextLoader ??
@@ -21671,10 +21671,10 @@ export class Service extends Object {
21671
21671
  }
21672
21672
  /**
21673
21673
  * Similar to
21674
- * {@link Service.getLinked},
21674
+ * {@link Service.getLiked},
21675
21675
  * but returns its `@id` URL instead of the object itself.
21676
21676
  */
21677
- get linkedId() {
21677
+ get likedId() {
21678
21678
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
21679
21679
  return null;
21680
21680
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
@@ -21689,12 +21689,12 @@ export class Service extends Object {
21689
21689
  * a {@link Collection} and MAY be filtered on privileges of an authenticated
21690
21690
  * user or as appropriate when no authentication is given.
21691
21691
  */
21692
- async getLinked(options = {}) {
21692
+ async getLiked(options = {}) {
21693
21693
  if (this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU.length < 1)
21694
21694
  return null;
21695
21695
  const v = this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
21696
21696
  if (v instanceof URL) {
21697
- const fetched = await this.#fetchLinked(v, options);
21697
+ const fetched = await this.#fetchLiked(v, options);
21698
21698
  if (fetched == null)
21699
21699
  return null;
21700
21700
  this.#_3bgkPwJanyTCoVFM9ovRcus8tKkU[0] = fetched;
@@ -22286,7 +22286,7 @@ export class Service extends Object {
22286
22286
  }
22287
22287
  : v);
22288
22288
  if (_3bgkPwJanyTCoVFM9ovRcus8tKkU.length == 1) {
22289
- proxy.linked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
22289
+ proxy.liked = _3bgkPwJanyTCoVFM9ovRcus8tKkU[0];
22290
22290
  }
22291
22291
  const _3sG2Hdwn9qzKGu9mpYkqakAMUkH9 = this.#_3sG2Hdwn9qzKGu9mpYkqakAMUkH9
22292
22292
  // deno-lint-ignore no-explicit-any
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/fedify",
3
- "version": "0.11.0-dev.237+00522be8",
3
+ "version": "0.11.0-dev.239+558eb733",
4
4
  "description": "An ActivityPub server framework",
5
5
  "keywords": [
6
6
  "ActivityPub",
@@ -81,6 +81,14 @@ export interface Context<TContextData> {
81
81
  * @throws {RouterError} If no followers collection is available.
82
82
  */
83
83
  getFollowersUri(handle: string): URL;
84
+ /**
85
+ * Builds the URI of an actor's liked collection with the given handle.
86
+ * @param handle The actor's handle.
87
+ * @returns The actor's liked collection URI.
88
+ * @throws {RouterError} If no liked collection is available.
89
+ * @since 0.11.0
90
+ */
91
+ getLikedUri(handle: string): URL;
84
92
  /**
85
93
  * Determines the type of the URI and extracts the associated data.
86
94
  * @param uri The URI to parse.
@@ -281,6 +289,14 @@ export type ParseUriResult =
281
289
  | {
282
290
  type: "followers";
283
291
  handle: string;
292
+ }
293
+ /**
294
+ * The case of a liked collection URI.
295
+ * @since 0.11.0
296
+ */
297
+ | {
298
+ type: "liked";
299
+ handle: string;
284
300
  };
285
301
  /**
286
302
  * Options for {@link Context.sendActivity} method and
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/federation/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/federation/context.ts"],"names":[],"mappings":"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"}