@fedify/fedify 0.15.0-dev.372 → 0.15.0-dev.375

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGES.md CHANGED
@@ -8,6 +8,15 @@ Version 0.15.0
8
8
 
9
9
  To be released.
10
10
 
11
+ - Removed `expand` option of `Object.toJsonLd()` method, which was deprecated
12
+ in version 0.14.0. Use `format: "expand"` option instead.
13
+ - Added `Context.lookupObject()` method.
14
+ - Added `allowPrivateAddress` option to `CreateFederationOptions` interface.
15
+ - Renamed the short option `-c` for `--compact` of `fedify lookup` command to
16
+ `-C` to avoid conflict with the short option `-c` for `--cache-dir`.
17
+ - Added `-r`/`--raw` option to `fedify lookup` command to output the raw JSON
18
+ object.
19
+
11
20
 
12
21
  Version 0.14.3
13
22
  --------------
@@ -5,6 +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 { lookupObject } from "../vocab/lookup.js";
8
9
  import { Activity, CryptographicKey, Multikey, } from "../vocab/vocab.js";
9
10
  import { handleWebFinger } from "../webfinger/handler.js";
10
11
  import { buildCollectionSynchronizationHeader } from "./collection.js";
@@ -72,15 +73,31 @@ class FederationImpl {
72
73
  this.router.add("/.well-known/nodeinfo", "nodeInfoJrd");
73
74
  this.objectCallbacks = {};
74
75
  this.objectTypeIds = {};
76
+ if (options.allowPrivateAddress) {
77
+ if (options.documentLoader != null) {
78
+ throw new TypeError("Cannot set documentLoader with allowPrivateAddress turned on.");
79
+ }
80
+ else if (options.contextLoader != null) {
81
+ throw new TypeError("Cannot set contextLoader with allowPrivateAddress turned on.");
82
+ }
83
+ else if (options.authenticatedDocumentLoaderFactory != null) {
84
+ throw new TypeError("Cannot set authenticatedDocumentLoaderFactory with " +
85
+ "allowPrivateAddress turned on.");
86
+ }
87
+ }
75
88
  this.documentLoader = options.documentLoader ?? kvCache({
76
- loader: fetchDocumentLoader,
89
+ loader: options.allowPrivateAddress
90
+ ? (url) => fetchDocumentLoader(url, true)
91
+ : fetchDocumentLoader,
77
92
  kv: options.kv,
78
93
  prefix: this.kvPrefixes.remoteDocument,
79
94
  });
80
95
  this.contextLoader = options.contextLoader ?? this.documentLoader;
81
96
  this.authenticatedDocumentLoaderFactory =
82
97
  options.authenticatedDocumentLoaderFactory ??
83
- getAuthenticatedDocumentLoader;
98
+ (options.allowPrivateAddress
99
+ ? (identity) => getAuthenticatedDocumentLoader(identity, true)
100
+ : getAuthenticatedDocumentLoader);
84
101
  this.onOutboxError = options.onOutboxError;
85
102
  this.signatureTimeWindow = options.signatureTimeWindow ?? { minutes: 1 };
86
103
  this.skipSignatureVerification = options.skipSignatureVerification ?? false;
@@ -323,6 +340,15 @@ class FederationImpl {
323
340
  if (actor == null)
324
341
  return null;
325
342
  const logger = getLogger(["fedify", "federation", "actor"]);
343
+ if (actor.id == null) {
344
+ logger.warn("Actor dispatcher returned an actor without an id property. " +
345
+ "Set the property with Context.getActorUri(handle).");
346
+ }
347
+ else if (actor.id.href != context.getActorUri(handle).href) {
348
+ logger.warn("Actor dispatcher returned an actor with an id property that " +
349
+ "does not match the actor URI. Set the property with " +
350
+ "Context.getActorUri(handle).");
351
+ }
326
352
  if (this.followingCallbacks != null &&
327
353
  this.followingCallbacks.dispatcher != null) {
328
354
  if (actor.followingId == null) {
@@ -1269,6 +1295,12 @@ class ContextImpl {
1269
1295
  }
1270
1296
  return this.federation.authenticatedDocumentLoaderFactory(identity);
1271
1297
  }
1298
+ lookupObject(identifier, options = {}) {
1299
+ return lookupObject(identifier, {
1300
+ documentLoader: options.documentLoader ?? this.documentLoader,
1301
+ contextLoader: options.contextLoader ?? this.contextLoader,
1302
+ });
1303
+ }
1272
1304
  async sendActivity(sender, recipients, activity, options = {}) {
1273
1305
  let keys;
1274
1306
  if ("handle" in sender) {