@fedify/fedify 2.4.0-dev.2115 → 2.4.0-dev.2122
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.
- package/dist/{builder-CZcBWrBd.mjs → builder-BCXywsZF.mjs} +3 -3
- package/dist/compat/transformers.test.mjs +1 -1
- package/dist/{compound-proof-CDuP9MIX.mjs → compound-proof-Fxd45Oy5.mjs} +2 -2
- package/dist/{deno-CCABdw7r.mjs → deno-BZrnW0Qz.mjs} +1 -1
- package/dist/{docloader-Bby5g2iu.mjs → docloader-3BHaS20Z.mjs} +2 -2
- package/dist/federation/builder.test.mjs +1 -1
- package/dist/federation/compound-fanout.test.mjs +3 -3
- package/dist/federation/handler-compound-proof.test.mjs +3 -3
- package/dist/federation/handler.test.mjs +5 -5
- package/dist/federation/hashlink-media.test.mjs +2 -2
- package/dist/federation/idempotency.test.mjs +2 -2
- package/dist/federation/metrics.test.mjs +1 -1
- package/dist/federation/middleware.test.mjs +7 -7
- package/dist/federation/mod.cjs +1 -1
- package/dist/federation/mod.js +1 -1
- package/dist/federation/outgoing-proof.test.mjs +5 -5
- package/dist/federation/portable-actor.test.mjs +52 -5
- package/dist/federation/portable-gateway-keys.test.mjs +3 -3
- package/dist/federation/portable-inbox.test.mjs +4 -4
- package/dist/federation/portable.test.mjs +127 -30
- package/dist/federation/send.test.mjs +3 -3
- package/dist/federation/tasks/enqueue.test.mjs +1 -1
- package/dist/federation/tasks/tasks.test.mjs +2 -2
- package/dist/federation/temporal.test.mjs +1 -1
- package/dist/federation/webfinger.test.mjs +1 -1
- package/dist/{federation-DYr384xz.cjs → federation-Ml6NrgRV.cjs} +30 -18
- package/dist/{http-B4mQvNcv.cjs → http-4bmgw-mA.cjs} +1 -1
- package/dist/{http-BcLnr2do.mjs → http-B9BQDNIy.mjs} +4 -4
- package/dist/{http-Ce6_Lf7k.js → http-BETASGl0.js} +1 -1
- package/dist/{key-CkNxztNV.mjs → key-PyYvun0F.mjs} +2 -2
- package/dist/{kv-cache-DwzXzchj.js → kv-cache-C4mv2ZFQ.js} +1 -1
- package/dist/{kv-cache-iFaRIcIL.mjs → kv-cache-CPqUxRL3.mjs} +1 -1
- package/dist/{kv-cache-Dqp_E-1g.cjs → kv-cache-D2Bz6t_c.cjs} +1 -1
- package/dist/{ld-CnT0f1nU.mjs → ld-u4JOD4iO.mjs} +3 -3
- package/dist/{metrics-em_7lwhG.mjs → metrics-DCLoLvLz.mjs} +1 -1
- package/dist/{middleware-U9IuzvDO.mjs → middleware-B7bmtONC.mjs} +1 -1
- package/dist/{middleware-BpwKvOpU.mjs → middleware-CgOqRkK-.mjs} +47 -35
- package/dist/{middleware-DhIBngkj.js → middleware-DWlAGlyP.js} +38 -26
- package/dist/mod.cjs +5 -5
- package/dist/mod.js +5 -5
- package/dist/nodeinfo/handler.test.mjs +1 -1
- package/dist/{owner-9LiHmOv1.mjs → owner-CPFM-sqo.mjs} +3 -3
- package/dist/{owner-BtoMCv6Z.cjs → owner-DkA0Lz7v.cjs} +1 -1
- package/dist/{owner-Cb3ytrlq.js → owner-wNinn7RK.js} +1 -1
- package/dist/{portable-key-9ck61lI0.mjs → portable-key-DyylakVV.mjs} +1 -1
- package/dist/{proof-xdPYGPaA.mjs → proof-BCOg7Njv.mjs} +4 -4
- package/dist/{send-Bf8rSWch.mjs → send-C8eOPat3.mjs} +3 -3
- package/dist/sig/compound-proof-discovery.test.mjs +1 -1
- package/dist/sig/compound-proof-producer.test.mjs +1 -1
- package/dist/sig/compound-proof-verification.test.mjs +2 -2
- package/dist/sig/compound-proof.test.mjs +2 -2
- package/dist/sig/http.test.mjs +2 -2
- package/dist/sig/key.test.mjs +1 -1
- package/dist/sig/ld.test.mjs +2 -2
- package/dist/sig/mod.cjs +3 -3
- package/dist/sig/mod.js +3 -3
- package/dist/sig/owner.test.mjs +1 -1
- package/dist/sig/portable-collection.test.mjs +2 -2
- package/dist/sig/portable-key.test.mjs +5 -5
- package/dist/sig/proof.test.mjs +3 -3
- package/dist/{sig-DN9pOglI.js → sig-C1xOA4ml.js} +2 -2
- package/dist/{sig-Bj3fHnv0.cjs → sig-Cb9VSeiF.cjs} +2 -2
- package/dist/{temporal-tAtwv6vX.mjs → temporal-vjHOhBpy.mjs} +1 -1
- package/dist/testing/kv.test.mjs +1 -1
- package/dist/utils/docloader.test.mjs +2 -2
- package/dist/utils/kv-cache.test.mjs +1 -1
- package/dist/utils/mod.cjs +1 -1
- package/dist/utils/mod.js +1 -1
- package/package.json +7 -7
|
@@ -6,7 +6,7 @@ import { t as MemoryKvStore } from "../kv-DCHkaJ9-.mjs";
|
|
|
6
6
|
import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
|
|
7
7
|
import { t as assertNotEquals } from "../assert_not_equals-CpPK2t89.mjs";
|
|
8
8
|
import "../std__assert-DvMDRPes.mjs";
|
|
9
|
-
import { o as createFederation, s as handleWebFinger } from "../middleware-
|
|
9
|
+
import { o as createFederation, s as handleWebFinger } from "../middleware-CgOqRkK-.mjs";
|
|
10
10
|
import { Image, Link, Person, Tombstone } from "@fedify/vocab";
|
|
11
11
|
import { createTestMeterProvider, test } from "@fedify/fixture";
|
|
12
12
|
import { parseIri } from "@fedify/vocab-runtime";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
2
2
|
const require_rolldown_runtime = require("./rolldown-runtime-Dmm3t92W.cjs");
|
|
3
3
|
const require_transformers = require("./transformers-BalCrSsr.cjs");
|
|
4
|
-
const require_http = require("./http-
|
|
4
|
+
const require_http = require("./http-4bmgw-mA.cjs");
|
|
5
5
|
const require_types = require("./types-Be2zbyeG.cjs");
|
|
6
|
-
const require_owner = require("./owner-
|
|
7
|
-
const require_kv_cache = require("./kv-cache-
|
|
6
|
+
const require_owner = require("./owner-DkA0Lz7v.cjs");
|
|
7
|
+
const require_kv_cache = require("./kv-cache-D2Bz6t_c.cjs");
|
|
8
8
|
let _logtape_logtape = require("@logtape/logtape");
|
|
9
9
|
let _fedify_uri_template = require("@fedify/uri-template");
|
|
10
10
|
let _fedify_vocab = require("@fedify/vocab");
|
|
@@ -750,7 +750,7 @@ function warnMismatchedTombstoneId(context, cls, values, tombstone) {
|
|
|
750
750
|
});
|
|
751
751
|
return;
|
|
752
752
|
}
|
|
753
|
-
if (
|
|
753
|
+
if (require_http.isPortableId(tombstone.id)) return;
|
|
754
754
|
const expected = context.getObjectUri(cls, values);
|
|
755
755
|
if (tombstone.id.href !== expected.href) logger.warn("Object dispatcher for {class} returned a tombstone with an id property {tombstoneId} that does not match the object URI {objectUri}. Set the property with Context.getObjectUri().", {
|
|
756
756
|
class: cls.name,
|
|
@@ -3536,6 +3536,11 @@ async function handleObject(request, { values, context, objectDispatcher, author
|
|
|
3536
3536
|
* dispatcher, or the actor dispatcher adapted to one. The object is served
|
|
3537
3537
|
* only if its ID canonically matches the requested portable ID and it
|
|
3538
3538
|
* satisfies the FEP-ef61 proof policy.
|
|
3539
|
+
*
|
|
3540
|
+
* A {@link Tombstone} is served with `410 Gone` if it has an Object Integrity
|
|
3541
|
+
* Proof made with a key of the DID in its ID. An unsigned tombstone cannot
|
|
3542
|
+
* be served as a portable object, so the response is the same as for
|
|
3543
|
+
* an object that this server does not store, i.e., `404 Not Found`.
|
|
3539
3544
|
* @template TContextData The context data to pass to the context.
|
|
3540
3545
|
* @param request The HTTP request.
|
|
3541
3546
|
* @param parameters The parameters for handling the portable object.
|
|
@@ -3583,17 +3588,27 @@ async function handlePortableObject(request, { values, context, objectDispatcher
|
|
|
3583
3588
|
logger.debug("The serialized object does not match the requested portable object {portableId}.", { portableId: canonicalId });
|
|
3584
3589
|
return await onNotFound(request);
|
|
3585
3590
|
}
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3591
|
+
const tombstone = object instanceof _fedify_vocab.Tombstone;
|
|
3592
|
+
if (!result.verified) {
|
|
3593
|
+
if (tombstone && result.reason.type === "missingProof") {
|
|
3594
|
+
logger.debug("Not serving the tombstone of the portable object {portableId}, as it has no Object Integrity Proof; responding as if this server did not store the object.", { portableId: canonicalId });
|
|
3595
|
+
return await onNotFound(request);
|
|
3596
|
+
}
|
|
3597
|
+
if (tombstone || result.reason.type !== "unsecuredCollection" && result.reason.type !== "unsupportedObjectType") {
|
|
3598
|
+
logger.error("Refusing to serve the portable object {portableId}, as it does not satisfy the FEP-ef61 proof policy: {reason}. Portable actors, activities, objects, and tombstones need an Object Integrity Proof made with a key of the DID in their ID.", {
|
|
3599
|
+
portableId: canonicalId,
|
|
3600
|
+
reason: result.reason.type
|
|
3601
|
+
});
|
|
3602
|
+
return portableObjectInternalServerError(request);
|
|
3603
|
+
}
|
|
3592
3604
|
}
|
|
3593
|
-
return new Response(request.method === "HEAD" ? null : JSON.stringify(jsonLd), {
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3605
|
+
return new Response(request.method === "HEAD" ? null : JSON.stringify(jsonLd), {
|
|
3606
|
+
status: tombstone ? 410 : 200,
|
|
3607
|
+
headers: {
|
|
3608
|
+
"Content-Type": PORTABLE_OBJECT_CONTENT_TYPE,
|
|
3609
|
+
Vary: "Accept"
|
|
3610
|
+
}
|
|
3611
|
+
});
|
|
3597
3612
|
}
|
|
3598
3613
|
function isRequestedPortableObject(object, canonicalId) {
|
|
3599
3614
|
return object.id != null && require_http.getCanonicalPortableId(object.id) === canonicalId;
|
|
@@ -8388,10 +8403,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
8388
8403
|
return await handlePortableObject(request, {
|
|
8389
8404
|
values: { identifier },
|
|
8390
8405
|
context,
|
|
8391
|
-
objectDispatcher: actorDispatcher == null ? void 0 :
|
|
8392
|
-
const actor = await actorDispatcher(ctx, identifier);
|
|
8393
|
-
return actor instanceof _fedify_vocab.Tombstone ? null : actor;
|
|
8394
|
-
},
|
|
8406
|
+
objectDispatcher: actorDispatcher == null ? void 0 : (ctx) => actorDispatcher(ctx, identifier),
|
|
8395
8407
|
authorizePredicate: authorizePredicate == null ? void 0 : (ctx) => authorizePredicate(ctx, identifier),
|
|
8396
8408
|
canonicalId: portable.canonicalId,
|
|
8397
8409
|
onUnauthorized,
|
|
@@ -16,7 +16,7 @@ json_canon = require_rolldown_runtime.__toESM(json_canon, 1);
|
|
|
16
16
|
let _opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conventions");
|
|
17
17
|
//#region deno.json
|
|
18
18
|
var name = "@fedify/fedify";
|
|
19
|
-
var version = "2.4.0-dev.
|
|
19
|
+
var version = "2.4.0-dev.2122+bdc0ce8d";
|
|
20
20
|
//#endregion
|
|
21
21
|
//#region src/sig/portable-key-id.ts
|
|
22
22
|
const COMPATIBLE_KEY_ID_PATH_PATTERN = /^\/\.well-known\/apgateway\/did(?::|%3A)/i;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-
|
|
4
|
+
import { n as version, t as name } from "./deno-BZrnW0Qz.mjs";
|
|
5
|
+
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-DCLoLvLz.mjs";
|
|
6
6
|
import { i as validateAcceptSignature, n as fulfillAcceptSignature, r as parseAcceptSignature } from "./accept-CPVqki78.mjs";
|
|
7
|
-
import { a as fetchKeyDetailed, c as validateCryptoKey, t as bypassKeyCacheReads } from "./key-
|
|
8
|
-
import { n as verifyPortableGatewayKeyDocument } from "./portable-key-
|
|
7
|
+
import { a as fetchKeyDetailed, c as validateCryptoKey, t as bypassKeyCacheReads } from "./key-PyYvun0F.mjs";
|
|
8
|
+
import { n as verifyPortableGatewayKeyDocument } from "./portable-key-DyylakVV.mjs";
|
|
9
9
|
import { getLogger } from "@logtape/logtape";
|
|
10
10
|
import { CryptographicKey } from "@fedify/vocab";
|
|
11
11
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -14,7 +14,7 @@ import serialize from "json-canon";
|
|
|
14
14
|
import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
|
|
15
15
|
//#region deno.json
|
|
16
16
|
var name = "@fedify/fedify";
|
|
17
|
-
var version = "2.4.0-dev.
|
|
17
|
+
var version = "2.4.0-dev.2122+bdc0ce8d";
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region src/sig/portable-key-id.ts
|
|
20
20
|
const COMPATIBLE_KEY_ID_PATH_PATTERN = /^\/\.well-known\/apgateway\/did(?::|%3A)/i;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { _ as recordKeyLookup, n as getDurationMs, t as classifyFetchError } from "./metrics-
|
|
4
|
+
import { n as version, t as name } from "./deno-BZrnW0Qz.mjs";
|
|
5
|
+
import { _ as recordKeyLookup, n as getDurationMs, t as classifyFetchError } from "./metrics-DCLoLvLz.mjs";
|
|
6
6
|
import { a as isCompatibleKeyId, o as isPortableActorDocument, s as isPortableId } from "./portable-key-id-T7lecIbt.mjs";
|
|
7
7
|
import { getLogger } from "@logtape/logtape";
|
|
8
8
|
import { CryptographicKey, Multikey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import { H as validateCryptoKey, et as recordDocumentCache, t as doubleKnock } from "./http-
|
|
3
|
+
import { H as validateCryptoKey, et as recordDocumentCache, t as doubleKnock } from "./http-BETASGl0.js";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
5
5
|
import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
|
|
6
6
|
import { curry } from "es-toolkit";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { p as recordDocumentCache } from "./metrics-
|
|
4
|
+
import { p as recordDocumentCache } from "./metrics-DCLoLvLz.mjs";
|
|
5
5
|
import { getLogger } from "@logtape/logtape";
|
|
6
6
|
import { preloadedContexts } from "@fedify/vocab-runtime";
|
|
7
7
|
//#region src/utils/kv-cache.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
2
|
-
const require_http = require("./http-
|
|
2
|
+
const require_http = require("./http-4bmgw-mA.cjs");
|
|
3
3
|
let _logtape_logtape = require("@logtape/logtape");
|
|
4
4
|
let _fedify_vocab_runtime = require("@fedify/vocab-runtime");
|
|
5
5
|
let es_toolkit = require("es-toolkit");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-
|
|
6
|
-
import { c as validateCryptoKey, i as fetchKey, t as bypassKeyCacheReads } from "./key-
|
|
4
|
+
import { n as version, t as name } from "./deno-BZrnW0Qz.mjs";
|
|
5
|
+
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-DCLoLvLz.mjs";
|
|
6
|
+
import { c as validateCryptoKey, i as fetchKey, t as bypassKeyCacheReads } from "./key-PyYvun0F.mjs";
|
|
7
7
|
import { getLogger } from "@logtape/logtape";
|
|
8
8
|
import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
|
|
9
9
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
4
|
+
import { n as version, t as name } from "./deno-BZrnW0Qz.mjs";
|
|
5
5
|
import { metrics } from "@opentelemetry/api";
|
|
6
6
|
import { FetchError } from "@fedify/vocab-runtime";
|
|
7
7
|
//#region src/federation/metrics.ts
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { a as instrumentDocumentLoader, b as recordWebFingerHandle, c as recordCircuitBreakerStateChange, d as recordCollectionRequest, f as recordCollectionTotalItems, g as recordInboxActivity, h as recordFanoutRecipients, i as getRemoteHost, l as recordCollectionDispatchDuration, n as getDurationMs, o as isAbortError, r as getFederationMetrics, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "./metrics-
|
|
4
|
+
import { n as version, t as name } from "./deno-BZrnW0Qz.mjs";
|
|
5
|
+
import { a as instrumentDocumentLoader, b as recordWebFingerHandle, c as recordCircuitBreakerStateChange, d as recordCollectionRequest, f as recordCollectionTotalItems, g as recordInboxActivity, h as recordFanoutRecipients, i as getRemoteHost, l as recordCollectionDispatchDuration, n as getDurationMs, o as isAbortError, r as getFederationMetrics, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "./metrics-DCLoLvLz.mjs";
|
|
6
6
|
import { t as formatAcceptSignature } from "./accept-CPVqki78.mjs";
|
|
7
7
|
import { a as isCompatibleKeyId, c as isPortableUri, i as hasPortableActor, n as getGatewayKeyBase, r as getPortableDid, s as isPortableId, t as getCanonicalPortableId } from "./portable-key-id-T7lecIbt.mjs";
|
|
8
|
-
import { c as validateCryptoKey, n as exportJwk, s as importJwk } from "./key-
|
|
8
|
+
import { c as validateCryptoKey, n as exportJwk, s as importJwk } from "./key-PyYvun0F.mjs";
|
|
9
9
|
import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-4IJqPYos.mjs";
|
|
10
|
-
import { _ as wrapContextLoaderForJsonLd, a as compactJsonLd, c as getNormalizationContextLoader, d as isClearlyMalformedContextReference, f as isInvalidUrlTypeError, l as hasSignature, m as verifyCompactJsonLd, p as signJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as hasSignatureLike } from "./ld-
|
|
11
|
-
import { i as signObject, l as verifyPortableObjectProofWithRoot, o as verifyObject, r as hasProofLike, s as verifyPortableObjectProof, t as InvalidPortableObjectIdError } from "./proof-
|
|
12
|
-
import { a as listRequestSignatures, c as selectRequestSignature, d as verifyRequest, f as verifyRequestDetailed, s as parseRfc9421SignatureInput } from "./http-
|
|
13
|
-
import { t as getAuthenticatedDocumentLoader } from "./docloader-
|
|
14
|
-
import { n as kvCache } from "./kv-cache-
|
|
10
|
+
import { _ as wrapContextLoaderForJsonLd, a as compactJsonLd, c as getNormalizationContextLoader, d as isClearlyMalformedContextReference, f as isInvalidUrlTypeError, l as hasSignature, m as verifyCompactJsonLd, p as signJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as hasSignatureLike } from "./ld-u4JOD4iO.mjs";
|
|
11
|
+
import { i as signObject, l as verifyPortableObjectProofWithRoot, o as verifyObject, r as hasProofLike, s as verifyPortableObjectProof, t as InvalidPortableObjectIdError } from "./proof-BCOg7Njv.mjs";
|
|
12
|
+
import { a as listRequestSignatures, c as selectRequestSignature, d as verifyRequest, f as verifyRequestDetailed, s as parseRfc9421SignatureInput } from "./http-B9BQDNIy.mjs";
|
|
13
|
+
import { t as getAuthenticatedDocumentLoader } from "./docloader-3BHaS20Z.mjs";
|
|
14
|
+
import { n as kvCache } from "./kv-cache-CPqUxRL3.mjs";
|
|
15
15
|
import { d as readBoundedText, l as BodyTooLargeError, t as getNodeInfo, u as MAX_BODY_SIZE } from "./client-DpnpgjyX.mjs";
|
|
16
16
|
import { t as nodeInfoToJson } from "./types-DE_LV1JB.mjs";
|
|
17
|
-
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-
|
|
18
|
-
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-
|
|
19
|
-
import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-
|
|
17
|
+
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-CPFM-sqo.mjs";
|
|
18
|
+
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-C8eOPat3.mjs";
|
|
19
|
+
import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-BCXywsZF.mjs";
|
|
20
20
|
import { t as CircuitBreaker } from "./circuit-breaker-C5NqoLBJ.mjs";
|
|
21
21
|
import { t as buildCollectionSynchronizationHeader } from "./collection-CnnP1UAv.mjs";
|
|
22
|
-
import { a as verifyCompoundPortableObjectProofs, i as inspectCompoundPortableObjectApplicability, r as findUnsupportedCompoundProofShape, t as containsCompoundPortableObject } from "./compound-proof-
|
|
22
|
+
import { a as verifyCompoundPortableObjectProofs, i as inspectCompoundPortableObjectApplicability, r as findUnsupportedCompoundProofShape, t as containsCompoundPortableObject } from "./compound-proof-Fxd45Oy5.mjs";
|
|
23
23
|
import { t as KvKeyCache } from "./keycache-BInaECGj.mjs";
|
|
24
24
|
import { t as acceptsJsonLd } from "./negotiation-CCocWT_N.mjs";
|
|
25
|
-
import { t as hasMalformedKnownTemporalLiteral } from "./temporal-
|
|
25
|
+
import { t as hasMalformedKnownTemporalLiteral } from "./temporal-vjHOhBpy.mjs";
|
|
26
26
|
import { t as createExponentialBackoffPolicy } from "./retry-zX5xw5e0.mjs";
|
|
27
27
|
import { t as TaskCodec } from "./codec-C6rTrpIp.mjs";
|
|
28
28
|
import { getLogger, withContext } from "@logtape/logtape";
|
|
@@ -1173,6 +1173,11 @@ async function handleObject(request, { values, context, objectDispatcher, author
|
|
|
1173
1173
|
* dispatcher, or the actor dispatcher adapted to one. The object is served
|
|
1174
1174
|
* only if its ID canonically matches the requested portable ID and it
|
|
1175
1175
|
* satisfies the FEP-ef61 proof policy.
|
|
1176
|
+
*
|
|
1177
|
+
* A {@link Tombstone} is served with `410 Gone` if it has an Object Integrity
|
|
1178
|
+
* Proof made with a key of the DID in its ID. An unsigned tombstone cannot
|
|
1179
|
+
* be served as a portable object, so the response is the same as for
|
|
1180
|
+
* an object that this server does not store, i.e., `404 Not Found`.
|
|
1176
1181
|
* @template TContextData The context data to pass to the context.
|
|
1177
1182
|
* @param request The HTTP request.
|
|
1178
1183
|
* @param parameters The parameters for handling the portable object.
|
|
@@ -1220,17 +1225,27 @@ async function handlePortableObject(request, { values, context, objectDispatcher
|
|
|
1220
1225
|
logger.debug("The serialized object does not match the requested portable object {portableId}.", { portableId: canonicalId });
|
|
1221
1226
|
return await onNotFound(request);
|
|
1222
1227
|
}
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1228
|
+
const tombstone = object instanceof Tombstone;
|
|
1229
|
+
if (!result.verified) {
|
|
1230
|
+
if (tombstone && result.reason.type === "missingProof") {
|
|
1231
|
+
logger.debug("Not serving the tombstone of the portable object {portableId}, as it has no Object Integrity Proof; responding as if this server did not store the object.", { portableId: canonicalId });
|
|
1232
|
+
return await onNotFound(request);
|
|
1233
|
+
}
|
|
1234
|
+
if (tombstone || result.reason.type !== "unsecuredCollection" && result.reason.type !== "unsupportedObjectType") {
|
|
1235
|
+
logger.error("Refusing to serve the portable object {portableId}, as it does not satisfy the FEP-ef61 proof policy: {reason}. Portable actors, activities, objects, and tombstones need an Object Integrity Proof made with a key of the DID in their ID.", {
|
|
1236
|
+
portableId: canonicalId,
|
|
1237
|
+
reason: result.reason.type
|
|
1238
|
+
});
|
|
1239
|
+
return portableObjectInternalServerError(request);
|
|
1240
|
+
}
|
|
1229
1241
|
}
|
|
1230
|
-
return new Response(request.method === "HEAD" ? null : JSON.stringify(jsonLd), {
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1242
|
+
return new Response(request.method === "HEAD" ? null : JSON.stringify(jsonLd), {
|
|
1243
|
+
status: tombstone ? 410 : 200,
|
|
1244
|
+
headers: {
|
|
1245
|
+
"Content-Type": PORTABLE_OBJECT_CONTENT_TYPE,
|
|
1246
|
+
Vary: "Accept"
|
|
1247
|
+
}
|
|
1248
|
+
});
|
|
1234
1249
|
}
|
|
1235
1250
|
function isRequestedPortableObject(object, canonicalId) {
|
|
1236
1251
|
return object.id != null && getCanonicalPortableId(object.id) === canonicalId;
|
|
@@ -1296,13 +1311,13 @@ function recordCollectionMetrics(meterProvider, base, result, options = {}) {
|
|
|
1296
1311
|
* @param parameters The parameters for handling the collection.
|
|
1297
1312
|
* @returns A promise that resolves to an HTTP response.
|
|
1298
1313
|
*/
|
|
1299
|
-
async function handleCollection(request, { name: name$
|
|
1300
|
-
const spanName = name$
|
|
1314
|
+
async function handleCollection(request, { name: name$1, identifier, uriGetter, filter, filterPredicate, context, collectionCallbacks, tracerProvider, meterProvider, onUnauthorized, onNotFound }) {
|
|
1315
|
+
const spanName = name$1.trim().replace(/\s+/g, "_");
|
|
1301
1316
|
tracerProvider = tracerProvider ?? trace.getTracerProvider();
|
|
1302
1317
|
const tracer = tracerProvider.getTracer(name, version);
|
|
1303
1318
|
const cursor = new URL(request.url).searchParams.get("cursor");
|
|
1304
1319
|
const metricBase = {
|
|
1305
|
-
kind: getCollectionMetricKind(name$
|
|
1320
|
+
kind: getCollectionMetricKind(name$1),
|
|
1306
1321
|
page: cursor != null,
|
|
1307
1322
|
dispatcher: "built_in"
|
|
1308
1323
|
};
|
|
@@ -1343,7 +1358,7 @@ async function handleCollection(request, { name: name$2, identifier, uriGetter,
|
|
|
1343
1358
|
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
1344
1359
|
return await onNotFound(request);
|
|
1345
1360
|
}
|
|
1346
|
-
const items = filterCollectionItems(page.items, name$
|
|
1361
|
+
const items = filterCollectionItems(page.items, name$1, filterPredicate);
|
|
1347
1362
|
itemCount = items.length;
|
|
1348
1363
|
span.setAttribute("fedify.collection.items", itemCount);
|
|
1349
1364
|
return items;
|
|
@@ -1383,7 +1398,7 @@ async function handleCollection(request, { name: name$2, identifier, uriGetter,
|
|
|
1383
1398
|
} else {
|
|
1384
1399
|
const uri = new URL(baseUri);
|
|
1385
1400
|
uri.searchParams.set("cursor", cursor);
|
|
1386
|
-
const pageOrResponse = await tracer.startActiveSpan(`activitypub.dispatch_collection_page ${name$
|
|
1401
|
+
const pageOrResponse = await tracer.startActiveSpan(`activitypub.dispatch_collection_page ${name$1}`, {
|
|
1387
1402
|
kind: SpanKind.SERVER,
|
|
1388
1403
|
attributes: {
|
|
1389
1404
|
"activitypub.collection.id": uri.href,
|
|
@@ -1399,7 +1414,7 @@ async function handleCollection(request, { name: name$2, identifier, uriGetter,
|
|
|
1399
1414
|
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
1400
1415
|
return await onNotFound(request);
|
|
1401
1416
|
}
|
|
1402
|
-
const items = filterCollectionItems(page.items, name$
|
|
1417
|
+
const items = filterCollectionItems(page.items, name$1, filterPredicate);
|
|
1403
1418
|
itemCount = items.length;
|
|
1404
1419
|
span.setAttribute("fedify.collection.items", itemCount);
|
|
1405
1420
|
return {
|
|
@@ -2587,8 +2602,8 @@ var CustomCollectionHandler = class {
|
|
|
2587
2602
|
* @param CollectionPage The CollectionPage constructor.
|
|
2588
2603
|
* @param filterPredicate Optional filter predicate for items.
|
|
2589
2604
|
*/
|
|
2590
|
-
constructor(name$
|
|
2591
|
-
this.name = name$
|
|
2605
|
+
constructor(name$2, values, context, callbacks, tracerProvider = trace.getTracerProvider(), meterProvider, Collection, CollectionPage, filterPredicate) {
|
|
2606
|
+
this.name = name$2;
|
|
2592
2607
|
this.values = values;
|
|
2593
2608
|
this.context = context;
|
|
2594
2609
|
this.callbacks = callbacks;
|
|
@@ -5525,10 +5540,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
5525
5540
|
return await handlePortableObject(request, {
|
|
5526
5541
|
values: { identifier },
|
|
5527
5542
|
context,
|
|
5528
|
-
objectDispatcher: actorDispatcher == null ? void 0 :
|
|
5529
|
-
const actor = await actorDispatcher(ctx, identifier);
|
|
5530
|
-
return actor instanceof Tombstone ? null : actor;
|
|
5531
|
-
},
|
|
5543
|
+
objectDispatcher: actorDispatcher == null ? void 0 : (ctx) => actorDispatcher(ctx, identifier),
|
|
5532
5544
|
authorizePredicate: authorizePredicate == null ? void 0 : (ctx) => authorizePredicate(ctx, identifier),
|
|
5533
5545
|
canonicalId: portable.canonicalId,
|
|
5534
5546
|
onUnauthorized,
|
|
@@ -2,10 +2,10 @@ import { Temporal } from "temporal-polyfill";
|
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
3
|
import { t as __exportAll } from "./rolldown-runtime-BC-Eo5Mj.js";
|
|
4
4
|
import { r as getDefaultActivityTransformers } from "./transformers-DAtXl_Kc.js";
|
|
5
|
-
import { $ as recordCollectionTotalItems, A as isInvalidUrlTypeError, C as compactJsonLd, D as hasSignature, E as getNormalizationContextLoader, F as wrapContextLoaderForJsonLd, G as getFederationMetrics, H as validateCryptoKey, I as exportJwk, J as isAbortError, K as getRemoteHost, M as verifyCompactJsonLd, O as hasSignatureLike, Q as recordCollectionRequest, T as detachSignature, V as importJwk, W as getDurationMs, X as recordCollectionDispatchDuration, Y as recordCircuitBreakerStateChange, Z as recordCollectionPageItems, _ as verifyPortableObjectProofWithRoot, _t as isPortableId, at as recordWebFingerHandle, b as InvalidContextReferenceError, bt as name, ct as formatAcceptSignature, d as hasProofLike, f as signObject, ft as getCanonicalPortableId, g as verifyPortableObjectProofPolicy, gt as isCompatibleKeyId, h as verifyPortableObjectProof, ht as hasPortableActor, i as selectRequestSignature, it as recordOutboxEnqueue, j as signJsonLd, k as isClearlyMalformedContextReference, l as InvalidPortableObjectIdError, m as verifyObject, mt as getPortableDid, n as listRequestSignatures, nt as recordInboxActivity, o as verifyRequest, ot as registerQueueDepthGauge, p as verifyMapLocalProof, pt as getGatewayKeyBase, q as instrumentDocumentLoader, r as parseRfc9421SignatureInput, rt as recordOutboxActivity, s as verifyRequestDetailed, st as preloadedOnlyDocumentLoader, t as doubleKnock, tt as recordFanoutRecipients, vt as isPortableUri, x as assertSafeJsonLd, xt as version, y as normalizeOutgoingActivityJsonLd } from "./http-
|
|
5
|
+
import { $ as recordCollectionTotalItems, A as isInvalidUrlTypeError, C as compactJsonLd, D as hasSignature, E as getNormalizationContextLoader, F as wrapContextLoaderForJsonLd, G as getFederationMetrics, H as validateCryptoKey, I as exportJwk, J as isAbortError, K as getRemoteHost, M as verifyCompactJsonLd, O as hasSignatureLike, Q as recordCollectionRequest, T as detachSignature, V as importJwk, W as getDurationMs, X as recordCollectionDispatchDuration, Y as recordCircuitBreakerStateChange, Z as recordCollectionPageItems, _ as verifyPortableObjectProofWithRoot, _t as isPortableId, at as recordWebFingerHandle, b as InvalidContextReferenceError, bt as name, ct as formatAcceptSignature, d as hasProofLike, f as signObject, ft as getCanonicalPortableId, g as verifyPortableObjectProofPolicy, gt as isCompatibleKeyId, h as verifyPortableObjectProof, ht as hasPortableActor, i as selectRequestSignature, it as recordOutboxEnqueue, j as signJsonLd, k as isClearlyMalformedContextReference, l as InvalidPortableObjectIdError, m as verifyObject, mt as getPortableDid, n as listRequestSignatures, nt as recordInboxActivity, o as verifyRequest, ot as registerQueueDepthGauge, p as verifyMapLocalProof, pt as getGatewayKeyBase, q as instrumentDocumentLoader, r as parseRfc9421SignatureInput, rt as recordOutboxActivity, s as verifyRequestDetailed, st as preloadedOnlyDocumentLoader, t as doubleKnock, tt as recordFanoutRecipients, vt as isPortableUri, x as assertSafeJsonLd, xt as version, y as normalizeOutgoingActivityJsonLd } from "./http-BETASGl0.js";
|
|
6
6
|
import { a as MAX_BODY_SIZE, i as BodyTooLargeError, n as getNodeInfo, o as readBoundedText, t as nodeInfoToJson } from "./types-C_cNlNVK.js";
|
|
7
|
-
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-
|
|
8
|
-
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-
|
|
7
|
+
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-wNinn7RK.js";
|
|
8
|
+
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-C4mv2ZFQ.js";
|
|
9
9
|
import { getLogger, withContext } from "@logtape/logtape";
|
|
10
10
|
import { Router, RouterError, assertPath } from "@fedify/uri-template";
|
|
11
11
|
import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, Tombstone, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
|
|
@@ -750,7 +750,7 @@ function warnMismatchedTombstoneId(context, cls, values, tombstone) {
|
|
|
750
750
|
});
|
|
751
751
|
return;
|
|
752
752
|
}
|
|
753
|
-
if (tombstone.id
|
|
753
|
+
if (isPortableId(tombstone.id)) return;
|
|
754
754
|
const expected = context.getObjectUri(cls, values);
|
|
755
755
|
if (tombstone.id.href !== expected.href) logger.warn("Object dispatcher for {class} returned a tombstone with an id property {tombstoneId} that does not match the object URI {objectUri}. Set the property with Context.getObjectUri().", {
|
|
756
756
|
class: cls.name,
|
|
@@ -3530,6 +3530,11 @@ async function handleObject(request, { values, context, objectDispatcher, author
|
|
|
3530
3530
|
* dispatcher, or the actor dispatcher adapted to one. The object is served
|
|
3531
3531
|
* only if its ID canonically matches the requested portable ID and it
|
|
3532
3532
|
* satisfies the FEP-ef61 proof policy.
|
|
3533
|
+
*
|
|
3534
|
+
* A {@link Tombstone} is served with `410 Gone` if it has an Object Integrity
|
|
3535
|
+
* Proof made with a key of the DID in its ID. An unsigned tombstone cannot
|
|
3536
|
+
* be served as a portable object, so the response is the same as for
|
|
3537
|
+
* an object that this server does not store, i.e., `404 Not Found`.
|
|
3533
3538
|
* @template TContextData The context data to pass to the context.
|
|
3534
3539
|
* @param request The HTTP request.
|
|
3535
3540
|
* @param parameters The parameters for handling the portable object.
|
|
@@ -3577,17 +3582,27 @@ async function handlePortableObject(request, { values, context, objectDispatcher
|
|
|
3577
3582
|
logger.debug("The serialized object does not match the requested portable object {portableId}.", { portableId: canonicalId });
|
|
3578
3583
|
return await onNotFound(request);
|
|
3579
3584
|
}
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3585
|
+
const tombstone = object instanceof Tombstone;
|
|
3586
|
+
if (!result.verified) {
|
|
3587
|
+
if (tombstone && result.reason.type === "missingProof") {
|
|
3588
|
+
logger.debug("Not serving the tombstone of the portable object {portableId}, as it has no Object Integrity Proof; responding as if this server did not store the object.", { portableId: canonicalId });
|
|
3589
|
+
return await onNotFound(request);
|
|
3590
|
+
}
|
|
3591
|
+
if (tombstone || result.reason.type !== "unsecuredCollection" && result.reason.type !== "unsupportedObjectType") {
|
|
3592
|
+
logger.error("Refusing to serve the portable object {portableId}, as it does not satisfy the FEP-ef61 proof policy: {reason}. Portable actors, activities, objects, and tombstones need an Object Integrity Proof made with a key of the DID in their ID.", {
|
|
3593
|
+
portableId: canonicalId,
|
|
3594
|
+
reason: result.reason.type
|
|
3595
|
+
});
|
|
3596
|
+
return portableObjectInternalServerError(request);
|
|
3597
|
+
}
|
|
3586
3598
|
}
|
|
3587
|
-
return new Response(request.method === "HEAD" ? null : JSON.stringify(jsonLd), {
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3599
|
+
return new Response(request.method === "HEAD" ? null : JSON.stringify(jsonLd), {
|
|
3600
|
+
status: tombstone ? 410 : 200,
|
|
3601
|
+
headers: {
|
|
3602
|
+
"Content-Type": PORTABLE_OBJECT_CONTENT_TYPE,
|
|
3603
|
+
Vary: "Accept"
|
|
3604
|
+
}
|
|
3605
|
+
});
|
|
3591
3606
|
}
|
|
3592
3607
|
function isRequestedPortableObject(object, canonicalId) {
|
|
3593
3608
|
return object.id != null && getCanonicalPortableId(object.id) === canonicalId;
|
|
@@ -3653,13 +3668,13 @@ function recordCollectionMetrics(meterProvider, base, result, options = {}) {
|
|
|
3653
3668
|
* @param parameters The parameters for handling the collection.
|
|
3654
3669
|
* @returns A promise that resolves to an HTTP response.
|
|
3655
3670
|
*/
|
|
3656
|
-
async function handleCollection(request, { name: name$
|
|
3657
|
-
const spanName = name$
|
|
3671
|
+
async function handleCollection(request, { name: name$1, identifier, uriGetter, filter, filterPredicate, context, collectionCallbacks, tracerProvider, meterProvider, onUnauthorized, onNotFound }) {
|
|
3672
|
+
const spanName = name$1.trim().replace(/\s+/g, "_");
|
|
3658
3673
|
tracerProvider = tracerProvider ?? trace.getTracerProvider();
|
|
3659
3674
|
const tracer = tracerProvider.getTracer(name, version);
|
|
3660
3675
|
const cursor = new URL(request.url).searchParams.get("cursor");
|
|
3661
3676
|
const metricBase = {
|
|
3662
|
-
kind: getCollectionMetricKind(name$
|
|
3677
|
+
kind: getCollectionMetricKind(name$1),
|
|
3663
3678
|
page: cursor != null,
|
|
3664
3679
|
dispatcher: "built_in"
|
|
3665
3680
|
};
|
|
@@ -3700,7 +3715,7 @@ async function handleCollection(request, { name: name$2, identifier, uriGetter,
|
|
|
3700
3715
|
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
3701
3716
|
return await onNotFound(request);
|
|
3702
3717
|
}
|
|
3703
|
-
const items = filterCollectionItems(page.items, name$
|
|
3718
|
+
const items = filterCollectionItems(page.items, name$1, filterPredicate);
|
|
3704
3719
|
itemCount = items.length;
|
|
3705
3720
|
span.setAttribute("fedify.collection.items", itemCount);
|
|
3706
3721
|
return items;
|
|
@@ -3740,7 +3755,7 @@ async function handleCollection(request, { name: name$2, identifier, uriGetter,
|
|
|
3740
3755
|
} else {
|
|
3741
3756
|
const uri = new URL(baseUri);
|
|
3742
3757
|
uri.searchParams.set("cursor", cursor);
|
|
3743
|
-
const pageOrResponse = await tracer.startActiveSpan(`activitypub.dispatch_collection_page ${name$
|
|
3758
|
+
const pageOrResponse = await tracer.startActiveSpan(`activitypub.dispatch_collection_page ${name$1}`, {
|
|
3744
3759
|
kind: SpanKind.SERVER,
|
|
3745
3760
|
attributes: {
|
|
3746
3761
|
"activitypub.collection.id": uri.href,
|
|
@@ -3756,7 +3771,7 @@ async function handleCollection(request, { name: name$2, identifier, uriGetter,
|
|
|
3756
3771
|
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
3757
3772
|
return await onNotFound(request);
|
|
3758
3773
|
}
|
|
3759
|
-
const items = filterCollectionItems(page.items, name$
|
|
3774
|
+
const items = filterCollectionItems(page.items, name$1, filterPredicate);
|
|
3760
3775
|
itemCount = items.length;
|
|
3761
3776
|
span.setAttribute("fedify.collection.items", itemCount);
|
|
3762
3777
|
return {
|
|
@@ -4944,8 +4959,8 @@ var CustomCollectionHandler = class {
|
|
|
4944
4959
|
* @param CollectionPage The CollectionPage constructor.
|
|
4945
4960
|
* @param filterPredicate Optional filter predicate for items.
|
|
4946
4961
|
*/
|
|
4947
|
-
constructor(name$
|
|
4948
|
-
this.name = name$
|
|
4962
|
+
constructor(name$2, values, context, callbacks, tracerProvider = trace.getTracerProvider(), meterProvider, Collection, CollectionPage, filterPredicate) {
|
|
4963
|
+
this.name = name$2;
|
|
4949
4964
|
this.values = values;
|
|
4950
4965
|
this.context = context;
|
|
4951
4966
|
this.callbacks = callbacks;
|
|
@@ -8291,10 +8306,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
8291
8306
|
return await handlePortableObject(request, {
|
|
8292
8307
|
values: { identifier },
|
|
8293
8308
|
context,
|
|
8294
|
-
objectDispatcher: actorDispatcher == null ? void 0 :
|
|
8295
|
-
const actor = await actorDispatcher(ctx, identifier);
|
|
8296
|
-
return actor instanceof Tombstone ? null : actor;
|
|
8297
|
-
},
|
|
8309
|
+
objectDispatcher: actorDispatcher == null ? void 0 : (ctx) => actorDispatcher(ctx, identifier),
|
|
8298
8310
|
authorizePredicate: authorizePredicate == null ? void 0 : (ctx) => authorizePredicate(ctx, identifier),
|
|
8299
8311
|
canonicalId: portable.canonicalId,
|
|
8300
8312
|
onUnauthorized,
|
package/dist/mod.cjs
CHANGED
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
require("./rolldown-runtime-Dmm3t92W.cjs");
|
|
4
4
|
const require_transformers = require("./transformers-BalCrSsr.cjs");
|
|
5
5
|
require("./compat/mod.cjs");
|
|
6
|
-
const require_http = require("./http-
|
|
7
|
-
const require_federation = require("./federation-
|
|
6
|
+
const require_http = require("./http-4bmgw-mA.cjs");
|
|
7
|
+
const require_federation = require("./federation-Ml6NrgRV.cjs");
|
|
8
8
|
const require_types = require("./types-Be2zbyeG.cjs");
|
|
9
|
-
const require_owner = require("./owner-
|
|
10
|
-
const require_kv_cache = require("./kv-cache-
|
|
9
|
+
const require_owner = require("./owner-DkA0Lz7v.cjs");
|
|
10
|
+
const require_kv_cache = require("./kv-cache-D2Bz6t_c.cjs");
|
|
11
11
|
require("./nodeinfo/mod.cjs");
|
|
12
12
|
require("./runtime/mod.cjs");
|
|
13
|
-
const require_sig = require("./sig-
|
|
13
|
+
const require_sig = require("./sig-Cb9VSeiF.cjs");
|
|
14
14
|
require("./utils/mod.cjs");
|
|
15
15
|
//#endregion
|
|
16
16
|
exports.CircuitBreaker = require_federation.CircuitBreaker;
|
package/dist/mod.js
CHANGED
|
@@ -3,15 +3,15 @@ import { URLPattern } from "urlpattern-polyfill";
|
|
|
3
3
|
import "./rolldown-runtime-BC-Eo5Mj.js";
|
|
4
4
|
import { n as autoIdAssigner, r as getDefaultActivityTransformers, t as actorDehydrator } from "./transformers-DAtXl_Kc.js";
|
|
5
5
|
import "./compat/mod.js";
|
|
6
|
-
import { B as generateCryptoKeyPair, I as exportJwk, N as verifyJsonLd, O as hasSignatureLike, P as verifySignature, R as fetchKey, S as attachSignature, T as detachSignature, V as importJwk, a as signRequest, ct as formatAcceptSignature, d as hasProofLike, dt as validateAcceptSignature, f as signObject, h as verifyPortableObjectProof, j as signJsonLd, lt as fulfillAcceptSignature, m as verifyObject, o as verifyRequest, s as verifyRequestDetailed, u as createProof, ut as parseAcceptSignature, v as verifyProof, w as createSignature, z as fetchKeyDetailed } from "./http-
|
|
7
|
-
import { a as respondWithObjectIfAcceptable, c as digest, d as parseCircuitBreakerKvState, f as createFederationBuilder, i as respondWithObject, l as CircuitBreaker, n as handleWebFinger, o as SendActivityError, r as createExponentialBackoffPolicy, s as buildCollectionSynchronizationHeader, t as createFederation, u as normalizeCircuitBreakerOptions } from "./middleware-
|
|
6
|
+
import { B as generateCryptoKeyPair, I as exportJwk, N as verifyJsonLd, O as hasSignatureLike, P as verifySignature, R as fetchKey, S as attachSignature, T as detachSignature, V as importJwk, a as signRequest, ct as formatAcceptSignature, d as hasProofLike, dt as validateAcceptSignature, f as signObject, h as verifyPortableObjectProof, j as signJsonLd, lt as fulfillAcceptSignature, m as verifyObject, o as verifyRequest, s as verifyRequestDetailed, u as createProof, ut as parseAcceptSignature, v as verifyProof, w as createSignature, z as fetchKeyDetailed } from "./http-BETASGl0.js";
|
|
7
|
+
import { a as respondWithObjectIfAcceptable, c as digest, d as parseCircuitBreakerKvState, f as createFederationBuilder, i as respondWithObject, l as CircuitBreaker, n as handleWebFinger, o as SendActivityError, r as createExponentialBackoffPolicy, s as buildCollectionSynchronizationHeader, t as createFederation, u as normalizeCircuitBreakerOptions } from "./middleware-DWlAGlyP.js";
|
|
8
8
|
import { n as getNodeInfo, r as parseNodeInfo, t as nodeInfoToJson } from "./types-C_cNlNVK.js";
|
|
9
|
-
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-
|
|
10
|
-
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-
|
|
9
|
+
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-wNinn7RK.js";
|
|
10
|
+
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-C4mv2ZFQ.js";
|
|
11
11
|
import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError } from "./federation/mod.js";
|
|
12
12
|
import "./nodeinfo/mod.js";
|
|
13
13
|
import "./runtime/mod.js";
|
|
14
|
-
import { t as verifyPortableObject } from "./sig-
|
|
14
|
+
import { t as verifyPortableObject } from "./sig-C1xOA4ml.js";
|
|
15
15
|
import "./utils/mod.js";
|
|
16
16
|
export * from "@fedify/vocab-runtime";
|
|
17
17
|
//#endregion
|
|
@@ -5,7 +5,7 @@ import { r as createRequestContext } from "../context-CoNRxGYp.mjs";
|
|
|
5
5
|
import { t as MemoryKvStore } from "../kv-DCHkaJ9-.mjs";
|
|
6
6
|
import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
|
|
7
7
|
import "../std__assert-DvMDRPes.mjs";
|
|
8
|
-
import { C as handleNodeInfo, o as createFederation, w as handleNodeInfoJrd } from "../middleware-
|
|
8
|
+
import { C as handleNodeInfo, o as createFederation, w as handleNodeInfoJrd } from "../middleware-CgOqRkK-.mjs";
|
|
9
9
|
import { test } from "@fedify/fixture";
|
|
10
10
|
//#region src/nodeinfo/handler.test.ts
|
|
11
11
|
test("handleNodeInfo()", async () => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
4
|
+
import { n as version, t as name } from "./deno-BZrnW0Qz.mjs";
|
|
5
5
|
import { a as isCompatibleKeyId, l as isSamePublicKey$1, s as isPortableId, t as getCanonicalPortableId } from "./portable-key-id-T7lecIbt.mjs";
|
|
6
|
-
import { l as verifyKeyOwnership, n as exportJwk, r as fetchActorDocument } from "./key-
|
|
7
|
-
import { t as fetchPortableGatewayKey } from "./portable-key-
|
|
6
|
+
import { l as verifyKeyOwnership, n as exportJwk, r as fetchActorDocument } from "./key-PyYvun0F.mjs";
|
|
7
|
+
import { t as fetchPortableGatewayKey } from "./portable-key-DyylakVV.mjs";
|
|
8
8
|
import { getLogger } from "@logtape/logtape";
|
|
9
9
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
10
10
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
2
|
-
const require_http = require("./http-
|
|
2
|
+
const require_http = require("./http-4bmgw-mA.cjs");
|
|
3
3
|
let _logtape_logtape = require("@logtape/logtape");
|
|
4
4
|
let _fedify_vocab = require("@fedify/vocab");
|
|
5
5
|
let _opentelemetry_api = require("@opentelemetry/api");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import { I as exportJwk, L as fetchActorDocument, U as verifyKeyOwnership, _t as isPortableId, bt as name, c as fetchPortableGatewayKey, ft as getCanonicalPortableId, gt as isCompatibleKeyId, xt as version, yt as isSamePublicKey$1 } from "./http-
|
|
3
|
+
import { I as exportJwk, L as fetchActorDocument, U as verifyKeyOwnership, _t as isPortableId, bt as name, c as fetchPortableGatewayKey, ft as getCanonicalPortableId, gt as isCompatibleKeyId, xt as version, yt as isSamePublicKey$1 } from "./http-BETASGl0.js";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
5
5
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
6
6
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -2,7 +2,7 @@ import "temporal-polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { l as isSamePublicKey, o as isPortableActorDocument, t as getCanonicalPortableId } from "./portable-key-id-T7lecIbt.mjs";
|
|
5
|
-
import { l as verifyPortableObjectProofWithRoot } from "./proof-
|
|
5
|
+
import { l as verifyPortableObjectProofWithRoot } from "./proof-BCOg7Njv.mjs";
|
|
6
6
|
import { getLogger } from "@logtape/logtape";
|
|
7
7
|
import { CryptographicKey, Multikey, Object as Object$1 } from "@fedify/vocab";
|
|
8
8
|
import { getDocumentLoader, isGatewayUrl } from "@fedify/vocab-runtime";
|