@fedify/fedify 2.1.28 → 2.1.30
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/{assert_rejects-B-qJtC9Z.mjs → assert_rejects-WyYSTDDX.mjs} +2 -20
- package/dist/{assert_throws-4NwKEy2q.mjs → assert_throws-D4DNWrux.mjs} +19 -1
- package/dist/{builder-CW1BrLbm.mjs → builder-CTpfuuVp.mjs} +3 -3
- package/dist/compat/transformers.test.mjs +1 -1
- package/dist/{deno-CJgU2mcr.mjs → deno-BATJ1hq6.mjs} +1 -1
- package/dist/{docloader-o3fCIlIa.mjs → docloader-OLWc7P2D.mjs} +6 -2
- package/dist/federation/builder.test.mjs +3 -3
- package/dist/federation/collection.test.mjs +1 -1
- package/dist/federation/handler.test.mjs +262 -9
- package/dist/federation/idempotency.test.mjs +3 -3
- package/dist/federation/inbox.test.mjs +25 -2
- package/dist/federation/keycache.test.mjs +18 -7
- package/dist/federation/kv.test.mjs +1 -1
- package/dist/federation/middleware.test.mjs +128 -10
- package/dist/federation/mod.cjs +1 -1
- package/dist/federation/mod.js +1 -1
- package/dist/federation/mq.test.mjs +2 -2
- package/dist/federation/negotiation.test.mjs +2 -2
- package/dist/federation/retry.test.mjs +1 -1
- package/dist/federation/router.test.mjs +2 -3
- package/dist/federation/send.test.mjs +7 -6
- package/dist/federation/temporal.test.mjs +3 -3
- package/dist/federation/webfinger.test.mjs +2 -2
- package/dist/{http-Dcj1ulAh.mjs → http-Bjd6I92u.mjs} +2 -2
- package/dist/{http-EEfKB8Qb.cjs → http-BoR1M3W7.cjs} +17 -3
- package/dist/{http-DtypHuuK.js → http-CK3efjgM.js} +17 -3
- package/dist/{inbox-CVYVJI0M.mjs → inbox-9MlBGgs9.mjs} +23 -10
- package/dist/{key-DRLvwDTh.mjs → key-ClQh9Qqh.mjs} +17 -3
- package/dist/{keycache-RFlZObU3.mjs → keycache-DahCaG_m.mjs} +1 -1
- package/dist/{kv-cache-BWVKAAmc.cjs → kv-cache-BxSx_Iyp.cjs} +5 -1
- package/dist/{kv-cache-CEJCaF4E.js → kv-cache-ImApO425.js} +5 -1
- package/dist/{ld-C5BZ98YK.mjs → ld-Crg0Xmwr.mjs} +2 -2
- package/dist/{middleware-CqQoREZ9.mjs → middleware-Bi5D6DBT.mjs} +1 -1
- package/dist/{middleware-wCgWm4Eh.js → middleware-C2AJFk8W.js} +96 -26
- package/dist/{middleware-SSrXiJIV.mjs → middleware-CE0b69gj.mjs} +83 -26
- package/dist/{middleware-Dw9sPiec.cjs → middleware-CmD3lpy4.cjs} +97 -27
- package/dist/{middleware-DZxmsbPB.cjs → middleware-jL9p9V9G.cjs} +1 -1
- package/dist/mod.cjs +4 -4
- package/dist/mod.js +4 -4
- package/dist/nodeinfo/client.test.mjs +1 -1
- package/dist/nodeinfo/handler.test.mjs +2 -2
- package/dist/nodeinfo/types.test.mjs +2 -2
- package/dist/otel/exporter.test.mjs +1 -1
- package/dist/{owner-cPOoPvmr.mjs → owner-BRoKojK1.mjs} +2 -2
- package/dist/{proof-DPU3poip.js → proof-7R4s10TJ.js} +1 -1
- package/dist/{proof-De1y2j-e.cjs → proof-CHXVlsH_.cjs} +1 -1
- package/dist/{proof-BTknCsN7.mjs → proof-DMIAezxz.mjs} +2 -2
- package/dist/{send-DDuHNgHz.mjs → send-BHIt_8ia.mjs} +2 -2
- package/dist/sig/http.test.mjs +6 -6
- package/dist/sig/key.test.mjs +199 -5
- package/dist/sig/ld.test.mjs +49 -4
- package/dist/sig/mod.cjs +2 -2
- package/dist/sig/mod.js +2 -2
- package/dist/sig/owner.test.mjs +48 -3
- package/dist/sig/proof.test.mjs +54 -3
- package/dist/{std__assert-BUOJXi-Z.mjs → std__assert-DflMZha5.mjs} +2 -2
- package/dist/{temporal-CxXY--ZL.mjs → temporal-DR0JahMu.mjs} +1 -1
- package/dist/utils/docloader.test.mjs +178 -39
- package/dist/utils/mod.cjs +1 -1
- package/dist/utils/mod.js +1 -1
- package/package.json +5 -5
- /package/dist/{assert_not_equals--wG9hV7u.mjs → assert_not_equals-BkxW5QJI.mjs} +0 -0
|
@@ -2,10 +2,10 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
3
|
import { t as __exportAll } from "./chunk-CRNNMoPX.js";
|
|
4
4
|
import { r as getDefaultActivityTransformers } from "./transformers-BGMIq1cs.js";
|
|
5
|
-
import { a as verifyRequestDetailed, d as importJwk, f as validateCryptoKey, i as verifyRequest, m as formatAcceptSignature, n as parseRfc9421SignatureInput, o as exportJwk, t as doubleKnock, v as name, y as version } from "./http-
|
|
5
|
+
import { a as verifyRequestDetailed, d as importJwk, f as validateCryptoKey, i as verifyRequest, m as formatAcceptSignature, n as parseRfc9421SignatureInput, o as exportJwk, t as doubleKnock, v as name, y as version } from "./http-CK3efjgM.js";
|
|
6
6
|
import { a as MAX_BODY_SIZE, i as BodyTooLargeError, n as getNodeInfo, o as readBoundedText, t as nodeInfoToJson } from "./types-miAYfiGO.js";
|
|
7
|
-
import { _ as signJsonLd, a as doesActorOwnKey, c as assertSafeJsonLd, f as detachSignature, g as isInvalidUrlTypeError, h as isClearlyMalformedContextReference, m as hasSignature, n as signObject, o as getKeyOwner, p as getNormalizationContextLoader, r as verifyObject, s as InvalidContextReferenceError, u as compactJsonLd, v as verifyCompactJsonLd, x as wrapContextLoaderForJsonLd } from "./proof-
|
|
8
|
-
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-
|
|
7
|
+
import { _ as signJsonLd, a as doesActorOwnKey, c as assertSafeJsonLd, f as detachSignature, g as isInvalidUrlTypeError, h as isClearlyMalformedContextReference, m as hasSignature, n as signObject, o as getKeyOwner, p as getNormalizationContextLoader, r as verifyObject, s as InvalidContextReferenceError, u as compactJsonLd, v as verifyCompactJsonLd, x as wrapContextLoaderForJsonLd } from "./proof-7R4s10TJ.js";
|
|
8
|
+
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-ImApO425.js";
|
|
9
9
|
import { getLogger, withContext } from "@logtape/logtape";
|
|
10
10
|
import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
|
|
11
11
|
import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
|
|
@@ -52,12 +52,33 @@ var InboxListenerSet = class InboxListenerSet {
|
|
|
52
52
|
return this.dispatchWithClass(activity)?.listener ?? null;
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Checks whether an activity's ID and all of its actor IDs have the same
|
|
57
|
+
* non-opaque origin. Activities without an ID have no origin to authenticate.
|
|
58
|
+
*
|
|
59
|
+
* The caller is responsible for rejecting a missing primary actor ID before
|
|
60
|
+
* relying on this check.
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
function actorsHaveSameOrigin(activity) {
|
|
64
|
+
if (activity.id == null) return true;
|
|
65
|
+
const origin = activity.id.origin;
|
|
66
|
+
return origin !== "null" && activity.actorIds.every((actor) => actor.origin === origin);
|
|
67
|
+
}
|
|
55
68
|
async function routeActivity({ context: ctx, json, originalJson, normalizedActivity, ldSignatureVerified, activity, recipient, inboxListeners, inboxContextFactory, listenerInboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider, idempotencyStrategy }) {
|
|
56
69
|
const logger = getLogger([
|
|
57
70
|
"fedify",
|
|
58
71
|
"federation",
|
|
59
72
|
"inbox"
|
|
60
73
|
]);
|
|
74
|
+
if (activity.actorId == null) {
|
|
75
|
+
logger.error("Missing actor.", { activity: json });
|
|
76
|
+
span.setStatus({
|
|
77
|
+
code: SpanStatusCode.ERROR,
|
|
78
|
+
message: "Missing actor."
|
|
79
|
+
});
|
|
80
|
+
return "missingActor";
|
|
81
|
+
}
|
|
61
82
|
let cacheKey = null;
|
|
62
83
|
if (activity.id != null) {
|
|
63
84
|
const inboxContext = inboxContextFactory(recipient, json, activity.id?.href, getTypeId(activity).href);
|
|
@@ -92,14 +113,6 @@ async function routeActivity({ context: ctx, json, originalJson, normalizedActiv
|
|
|
92
113
|
return "alreadyProcessed";
|
|
93
114
|
}
|
|
94
115
|
}
|
|
95
|
-
if (activity.actorId == null) {
|
|
96
|
-
logger.error("Missing actor.", { activity: json });
|
|
97
|
-
span.setStatus({
|
|
98
|
-
code: SpanStatusCode.ERROR,
|
|
99
|
-
message: "Missing actor."
|
|
100
|
-
});
|
|
101
|
-
return "missingActor";
|
|
102
|
-
}
|
|
103
116
|
span.setAttribute("activitypub.actor.id", activity.actorId.href);
|
|
104
117
|
if (queue != null) {
|
|
105
118
|
const carrier = {};
|
|
@@ -869,7 +882,7 @@ async function buildCollectionSynchronizationHeader(collectionId, actorIds) {
|
|
|
869
882
|
}
|
|
870
883
|
//#endregion
|
|
871
884
|
//#region src/federation/keycache.ts
|
|
872
|
-
const KEY_CACHE_GENERATION = "
|
|
885
|
+
const KEY_CACHE_GENERATION = "3";
|
|
873
886
|
var KvKeyCache = class {
|
|
874
887
|
kv;
|
|
875
888
|
prefix;
|
|
@@ -1798,6 +1811,36 @@ async function handleInboxInternal(request, parameters, span) {
|
|
|
1798
1811
|
return await getFailedSignatureResponse(inboxChallengePolicy, kv, kvPrefixes);
|
|
1799
1812
|
}
|
|
1800
1813
|
}
|
|
1814
|
+
if (activity.actorId == null) {
|
|
1815
|
+
logger.error("Missing actor.", {
|
|
1816
|
+
activity: json,
|
|
1817
|
+
recipient
|
|
1818
|
+
});
|
|
1819
|
+
span.setStatus({
|
|
1820
|
+
code: SpanStatusCode.ERROR,
|
|
1821
|
+
message: "Missing actor."
|
|
1822
|
+
});
|
|
1823
|
+
return new Response("Missing actor.", {
|
|
1824
|
+
status: 400,
|
|
1825
|
+
headers: { "Content-Type": "text/plain; charset=utf-8" }
|
|
1826
|
+
});
|
|
1827
|
+
}
|
|
1828
|
+
if (!skipSignatureVerification && activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
1829
|
+
logger.error("The activity ({activityId}) and its actors do not have the same origin.", {
|
|
1830
|
+
activity: json,
|
|
1831
|
+
recipient,
|
|
1832
|
+
activityId: activity.id.href,
|
|
1833
|
+
actorIds: activity.actorIds.map((actor) => actor.href)
|
|
1834
|
+
});
|
|
1835
|
+
span.setStatus({
|
|
1836
|
+
code: SpanStatusCode.ERROR,
|
|
1837
|
+
message: `The activity (${activity.id.href}) and its actors do not have the same origin.`
|
|
1838
|
+
});
|
|
1839
|
+
return new Response("The activity and its actors do not have the same origin.", {
|
|
1840
|
+
status: 401,
|
|
1841
|
+
headers: { "Content-Type": "text/plain; charset=utf-8" }
|
|
1842
|
+
});
|
|
1843
|
+
}
|
|
1801
1844
|
const routeResult = await routeActivity({
|
|
1802
1845
|
context: ctx,
|
|
1803
1846
|
json,
|
|
@@ -3316,6 +3359,33 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3316
3359
|
activity = await Activity.fromJsonLd(parseInput, parseContext);
|
|
3317
3360
|
span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
|
|
3318
3361
|
if (activity.id != null) span.setAttribute("activitypub.activity.id", activity.id.href);
|
|
3362
|
+
if (activity.actorId == null) {
|
|
3363
|
+
logger.error("Missing actor in queued incoming activity.", {
|
|
3364
|
+
activityId: activity.id?.href,
|
|
3365
|
+
activity: message.activity,
|
|
3366
|
+
recipient: message.identifier
|
|
3367
|
+
});
|
|
3368
|
+
span.setStatus({
|
|
3369
|
+
code: SpanStatusCode.ERROR,
|
|
3370
|
+
message: "Missing actor."
|
|
3371
|
+
});
|
|
3372
|
+
span.end();
|
|
3373
|
+
return;
|
|
3374
|
+
}
|
|
3375
|
+
if (!this.skipSignatureVerification && activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
3376
|
+
logger.error("The queued activity ({activityId}) and its actors do not have the same origin.", {
|
|
3377
|
+
activityId: activity.id.href,
|
|
3378
|
+
actorIds: activity.actorIds.map((actor) => actor.href),
|
|
3379
|
+
activity: message.activity,
|
|
3380
|
+
recipient: message.identifier
|
|
3381
|
+
});
|
|
3382
|
+
span.setStatus({
|
|
3383
|
+
code: SpanStatusCode.ERROR,
|
|
3384
|
+
message: `The activity (${activity.id.href}) and its actors do not have the same origin.`
|
|
3385
|
+
});
|
|
3386
|
+
span.end();
|
|
3387
|
+
return;
|
|
3388
|
+
}
|
|
3319
3389
|
cacheKey = activity.id == null ? null : [
|
|
3320
3390
|
...this.kvPrefixes.activityIdempotence,
|
|
3321
3391
|
context.origin,
|
|
@@ -4428,20 +4498,6 @@ var ContextImpl = class ContextImpl {
|
|
|
4428
4498
|
activity: await fetched.toJsonLd({ contextLoader })
|
|
4429
4499
|
});
|
|
4430
4500
|
return false;
|
|
4431
|
-
} else if (fetched.actorIds.length < 1) {
|
|
4432
|
-
logger.debug("Fetched activity object is missing an actor; unable to verify.", {
|
|
4433
|
-
recipient,
|
|
4434
|
-
activity: await fetched.toJsonLd({ contextLoader })
|
|
4435
|
-
});
|
|
4436
|
-
return false;
|
|
4437
|
-
}
|
|
4438
|
-
const activityId = fetched.id;
|
|
4439
|
-
if (!fetched.actorIds.every((actor) => actor.origin === activityId.origin)) {
|
|
4440
|
-
logger.debug("Fetched activity object has actors from different origins; unable to verify.", {
|
|
4441
|
-
recipient,
|
|
4442
|
-
activity: await fetched.toJsonLd({ contextLoader })
|
|
4443
|
-
});
|
|
4444
|
-
return false;
|
|
4445
4501
|
}
|
|
4446
4502
|
logger.debug("Successfully fetched the remote activity object {activityId}; ignore the original activity and use the fetched one, which is trustworthy.");
|
|
4447
4503
|
activity = fetched;
|
|
@@ -4450,6 +4506,20 @@ var ContextImpl = class ContextImpl {
|
|
|
4450
4506
|
recipient,
|
|
4451
4507
|
activity: json
|
|
4452
4508
|
});
|
|
4509
|
+
if (activity.actorId == null) {
|
|
4510
|
+
logger.debug("Activity is missing an actor; unable to verify.", {
|
|
4511
|
+
recipient,
|
|
4512
|
+
activity: json
|
|
4513
|
+
});
|
|
4514
|
+
return false;
|
|
4515
|
+
}
|
|
4516
|
+
if (activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
4517
|
+
logger.debug("Activity has actors from different origins; unable to verify.", {
|
|
4518
|
+
recipient,
|
|
4519
|
+
activity: json
|
|
4520
|
+
});
|
|
4521
|
+
return false;
|
|
4522
|
+
}
|
|
4453
4523
|
const routeResult = await routeActivity({
|
|
4454
4524
|
context: this,
|
|
4455
4525
|
json,
|
|
@@ -2,25 +2,25 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { n as RouterError } from "./router-CrMLXoOr.mjs";
|
|
5
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
+
import { n as version, t as name } from "./deno-BATJ1hq6.mjs";
|
|
6
6
|
import { t as formatAcceptSignature } from "./accept-BavzedPB.mjs";
|
|
7
|
-
import { o as importJwk, s as validateCryptoKey, t as exportJwk } from "./key-
|
|
8
|
-
import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-
|
|
9
|
-
import { t as getAuthenticatedDocumentLoader } from "./docloader-
|
|
7
|
+
import { o as importJwk, s as validateCryptoKey, t as exportJwk } from "./key-ClQh9Qqh.mjs";
|
|
8
|
+
import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-Bjd6I92u.mjs";
|
|
9
|
+
import { t as getAuthenticatedDocumentLoader } from "./docloader-OLWc7P2D.mjs";
|
|
10
10
|
import { n as kvCache } from "./kv-cache-DqEKe5E0.mjs";
|
|
11
|
-
import { t as KvKeyCache } from "./keycache-
|
|
12
|
-
import { a as compactJsonLd, c as getNormalizationContextLoader, d as isInvalidUrlTypeError, f as signJsonLd, g as wrapContextLoaderForJsonLd, l as hasSignature, p as verifyCompactJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as isClearlyMalformedContextReference } from "./ld-
|
|
13
|
-
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-
|
|
14
|
-
import { n as signObject, r as verifyObject } from "./proof-
|
|
11
|
+
import { t as KvKeyCache } from "./keycache-DahCaG_m.mjs";
|
|
12
|
+
import { a as compactJsonLd, c as getNormalizationContextLoader, d as isInvalidUrlTypeError, f as signJsonLd, g as wrapContextLoaderForJsonLd, l as hasSignature, p as verifyCompactJsonLd, r as assertSafeJsonLd, s as detachSignature, t as InvalidContextReferenceError, u as isClearlyMalformedContextReference } from "./ld-Crg0Xmwr.mjs";
|
|
13
|
+
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-BRoKojK1.mjs";
|
|
14
|
+
import { n as signObject, r as verifyObject } from "./proof-DMIAezxz.mjs";
|
|
15
15
|
import { d as readBoundedText, l as BodyTooLargeError, t as getNodeInfo, u as MAX_BODY_SIZE } from "./client-CjDMsn4a.mjs";
|
|
16
16
|
import { t as nodeInfoToJson } from "./types-DCP0WLdt.mjs";
|
|
17
|
-
import { n as routeActivity } from "./inbox-
|
|
18
|
-
import { t as FederationBuilderImpl } from "./builder-
|
|
17
|
+
import { n as actorsHaveSameOrigin, r as routeActivity } from "./inbox-9MlBGgs9.mjs";
|
|
18
|
+
import { t as FederationBuilderImpl } from "./builder-CTpfuuVp.mjs";
|
|
19
19
|
import { t as buildCollectionSynchronizationHeader } from "./collection-BD6-SZ6O.mjs";
|
|
20
20
|
import { t as acceptsJsonLd } from "./negotiation-BehA2uul.mjs";
|
|
21
|
-
import { t as hasMalformedKnownTemporalLiteral } from "./temporal-
|
|
21
|
+
import { t as hasMalformedKnownTemporalLiteral } from "./temporal-DR0JahMu.mjs";
|
|
22
22
|
import { t as createExponentialBackoffPolicy } from "./retry-B_E3V_Dx.mjs";
|
|
23
|
-
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-
|
|
23
|
+
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-BHIt_8ia.mjs";
|
|
24
24
|
import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
|
|
25
25
|
import { lookupWebFinger } from "@fedify/webfinger";
|
|
26
26
|
import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
|
|
@@ -812,6 +812,36 @@ async function handleInboxInternal(request, parameters, span) {
|
|
|
812
812
|
return await getFailedSignatureResponse(inboxChallengePolicy, kv, kvPrefixes);
|
|
813
813
|
}
|
|
814
814
|
}
|
|
815
|
+
if (activity.actorId == null) {
|
|
816
|
+
logger.error("Missing actor.", {
|
|
817
|
+
activity: json,
|
|
818
|
+
recipient
|
|
819
|
+
});
|
|
820
|
+
span.setStatus({
|
|
821
|
+
code: SpanStatusCode.ERROR,
|
|
822
|
+
message: "Missing actor."
|
|
823
|
+
});
|
|
824
|
+
return new Response("Missing actor.", {
|
|
825
|
+
status: 400,
|
|
826
|
+
headers: { "Content-Type": "text/plain; charset=utf-8" }
|
|
827
|
+
});
|
|
828
|
+
}
|
|
829
|
+
if (!skipSignatureVerification && activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
830
|
+
logger.error("The activity ({activityId}) and its actors do not have the same origin.", {
|
|
831
|
+
activity: json,
|
|
832
|
+
recipient,
|
|
833
|
+
activityId: activity.id.href,
|
|
834
|
+
actorIds: activity.actorIds.map((actor) => actor.href)
|
|
835
|
+
});
|
|
836
|
+
span.setStatus({
|
|
837
|
+
code: SpanStatusCode.ERROR,
|
|
838
|
+
message: `The activity (${activity.id.href}) and its actors do not have the same origin.`
|
|
839
|
+
});
|
|
840
|
+
return new Response("The activity and its actors do not have the same origin.", {
|
|
841
|
+
status: 401,
|
|
842
|
+
headers: { "Content-Type": "text/plain; charset=utf-8" }
|
|
843
|
+
});
|
|
844
|
+
}
|
|
815
845
|
const routeResult = await routeActivity({
|
|
816
846
|
context: ctx,
|
|
817
847
|
json,
|
|
@@ -2007,6 +2037,33 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
2007
2037
|
activity = await Activity.fromJsonLd(parseInput, parseContext);
|
|
2008
2038
|
span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
|
|
2009
2039
|
if (activity.id != null) span.setAttribute("activitypub.activity.id", activity.id.href);
|
|
2040
|
+
if (activity.actorId == null) {
|
|
2041
|
+
logger.error("Missing actor in queued incoming activity.", {
|
|
2042
|
+
activityId: activity.id?.href,
|
|
2043
|
+
activity: message.activity,
|
|
2044
|
+
recipient: message.identifier
|
|
2045
|
+
});
|
|
2046
|
+
span.setStatus({
|
|
2047
|
+
code: SpanStatusCode.ERROR,
|
|
2048
|
+
message: "Missing actor."
|
|
2049
|
+
});
|
|
2050
|
+
span.end();
|
|
2051
|
+
return;
|
|
2052
|
+
}
|
|
2053
|
+
if (!this.skipSignatureVerification && activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
2054
|
+
logger.error("The queued activity ({activityId}) and its actors do not have the same origin.", {
|
|
2055
|
+
activityId: activity.id.href,
|
|
2056
|
+
actorIds: activity.actorIds.map((actor) => actor.href),
|
|
2057
|
+
activity: message.activity,
|
|
2058
|
+
recipient: message.identifier
|
|
2059
|
+
});
|
|
2060
|
+
span.setStatus({
|
|
2061
|
+
code: SpanStatusCode.ERROR,
|
|
2062
|
+
message: `The activity (${activity.id.href}) and its actors do not have the same origin.`
|
|
2063
|
+
});
|
|
2064
|
+
span.end();
|
|
2065
|
+
return;
|
|
2066
|
+
}
|
|
2010
2067
|
cacheKey = activity.id == null ? null : [
|
|
2011
2068
|
...this.kvPrefixes.activityIdempotence,
|
|
2012
2069
|
context.origin,
|
|
@@ -3119,20 +3176,6 @@ var ContextImpl = class ContextImpl {
|
|
|
3119
3176
|
activity: await fetched.toJsonLd({ contextLoader })
|
|
3120
3177
|
});
|
|
3121
3178
|
return false;
|
|
3122
|
-
} else if (fetched.actorIds.length < 1) {
|
|
3123
|
-
logger.debug("Fetched activity object is missing an actor; unable to verify.", {
|
|
3124
|
-
recipient,
|
|
3125
|
-
activity: await fetched.toJsonLd({ contextLoader })
|
|
3126
|
-
});
|
|
3127
|
-
return false;
|
|
3128
|
-
}
|
|
3129
|
-
const activityId = fetched.id;
|
|
3130
|
-
if (!fetched.actorIds.every((actor) => actor.origin === activityId.origin)) {
|
|
3131
|
-
logger.debug("Fetched activity object has actors from different origins; unable to verify.", {
|
|
3132
|
-
recipient,
|
|
3133
|
-
activity: await fetched.toJsonLd({ contextLoader })
|
|
3134
|
-
});
|
|
3135
|
-
return false;
|
|
3136
3179
|
}
|
|
3137
3180
|
logger.debug("Successfully fetched the remote activity object {activityId}; ignore the original activity and use the fetched one, which is trustworthy.");
|
|
3138
3181
|
activity = fetched;
|
|
@@ -3141,6 +3184,20 @@ var ContextImpl = class ContextImpl {
|
|
|
3141
3184
|
recipient,
|
|
3142
3185
|
activity: json
|
|
3143
3186
|
});
|
|
3187
|
+
if (activity.actorId == null) {
|
|
3188
|
+
logger.debug("Activity is missing an actor; unable to verify.", {
|
|
3189
|
+
recipient,
|
|
3190
|
+
activity: json
|
|
3191
|
+
});
|
|
3192
|
+
return false;
|
|
3193
|
+
}
|
|
3194
|
+
if (activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
3195
|
+
logger.debug("Activity has actors from different origins; unable to verify.", {
|
|
3196
|
+
recipient,
|
|
3197
|
+
activity: json
|
|
3198
|
+
});
|
|
3199
|
+
return false;
|
|
3200
|
+
}
|
|
3144
3201
|
const routeResult = await routeActivity({
|
|
3145
3202
|
context: this,
|
|
3146
3203
|
json,
|
|
@@ -2,10 +2,10 @@ const { Temporal } = require("@js-temporal/polyfill");
|
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
const require_chunk = require("./chunk-DDcVe30Y.cjs");
|
|
4
4
|
const require_transformers = require("./transformers-NeAONrAq.cjs");
|
|
5
|
-
const require_http = require("./http-
|
|
5
|
+
const require_http = require("./http-BoR1M3W7.cjs");
|
|
6
6
|
const require_types = require("./types-DRPjmHVV.cjs");
|
|
7
|
-
const require_proof = require("./proof-
|
|
8
|
-
const require_kv_cache = require("./kv-cache-
|
|
7
|
+
const require_proof = require("./proof-CHXVlsH_.cjs");
|
|
8
|
+
const require_kv_cache = require("./kv-cache-BxSx_Iyp.cjs");
|
|
9
9
|
let _logtape_logtape = require("@logtape/logtape");
|
|
10
10
|
let _fedify_vocab = require("@fedify/vocab");
|
|
11
11
|
let _opentelemetry_api = require("@opentelemetry/api");
|
|
@@ -53,12 +53,33 @@ var InboxListenerSet = class InboxListenerSet {
|
|
|
53
53
|
return this.dispatchWithClass(activity)?.listener ?? null;
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Checks whether an activity's ID and all of its actor IDs have the same
|
|
58
|
+
* non-opaque origin. Activities without an ID have no origin to authenticate.
|
|
59
|
+
*
|
|
60
|
+
* The caller is responsible for rejecting a missing primary actor ID before
|
|
61
|
+
* relying on this check.
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
function actorsHaveSameOrigin(activity) {
|
|
65
|
+
if (activity.id == null) return true;
|
|
66
|
+
const origin = activity.id.origin;
|
|
67
|
+
return origin !== "null" && activity.actorIds.every((actor) => actor.origin === origin);
|
|
68
|
+
}
|
|
56
69
|
async function routeActivity({ context: ctx, json, originalJson, normalizedActivity, ldSignatureVerified, activity, recipient, inboxListeners, inboxContextFactory, listenerInboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider, idempotencyStrategy }) {
|
|
57
70
|
const logger = (0, _logtape_logtape.getLogger)([
|
|
58
71
|
"fedify",
|
|
59
72
|
"federation",
|
|
60
73
|
"inbox"
|
|
61
74
|
]);
|
|
75
|
+
if (activity.actorId == null) {
|
|
76
|
+
logger.error("Missing actor.", { activity: json });
|
|
77
|
+
span.setStatus({
|
|
78
|
+
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
79
|
+
message: "Missing actor."
|
|
80
|
+
});
|
|
81
|
+
return "missingActor";
|
|
82
|
+
}
|
|
62
83
|
let cacheKey = null;
|
|
63
84
|
if (activity.id != null) {
|
|
64
85
|
const inboxContext = inboxContextFactory(recipient, json, activity.id?.href, (0, _fedify_vocab.getTypeId)(activity).href);
|
|
@@ -93,14 +114,6 @@ async function routeActivity({ context: ctx, json, originalJson, normalizedActiv
|
|
|
93
114
|
return "alreadyProcessed";
|
|
94
115
|
}
|
|
95
116
|
}
|
|
96
|
-
if (activity.actorId == null) {
|
|
97
|
-
logger.error("Missing actor.", { activity: json });
|
|
98
|
-
span.setStatus({
|
|
99
|
-
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
100
|
-
message: "Missing actor."
|
|
101
|
-
});
|
|
102
|
-
return "missingActor";
|
|
103
|
-
}
|
|
104
117
|
span.setAttribute("activitypub.actor.id", activity.actorId.href);
|
|
105
118
|
if (queue != null) {
|
|
106
119
|
const carrier = {};
|
|
@@ -337,7 +350,7 @@ var FederationBuilderImpl = class {
|
|
|
337
350
|
this.collectionTypeIds = {};
|
|
338
351
|
}
|
|
339
352
|
async build(options) {
|
|
340
|
-
const { FederationImpl } = await Promise.resolve().then(() => require("./middleware-
|
|
353
|
+
const { FederationImpl } = await Promise.resolve().then(() => require("./middleware-jL9p9V9G.cjs"));
|
|
341
354
|
const f = new FederationImpl(options);
|
|
342
355
|
const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
|
|
343
356
|
f.router = this.router.clone();
|
|
@@ -870,7 +883,7 @@ async function buildCollectionSynchronizationHeader(collectionId, actorIds) {
|
|
|
870
883
|
}
|
|
871
884
|
//#endregion
|
|
872
885
|
//#region src/federation/keycache.ts
|
|
873
|
-
const KEY_CACHE_GENERATION = "
|
|
886
|
+
const KEY_CACHE_GENERATION = "3";
|
|
874
887
|
var KvKeyCache = class {
|
|
875
888
|
kv;
|
|
876
889
|
prefix;
|
|
@@ -1799,6 +1812,36 @@ async function handleInboxInternal(request, parameters, span) {
|
|
|
1799
1812
|
return await getFailedSignatureResponse(inboxChallengePolicy, kv, kvPrefixes);
|
|
1800
1813
|
}
|
|
1801
1814
|
}
|
|
1815
|
+
if (activity.actorId == null) {
|
|
1816
|
+
logger.error("Missing actor.", {
|
|
1817
|
+
activity: json,
|
|
1818
|
+
recipient
|
|
1819
|
+
});
|
|
1820
|
+
span.setStatus({
|
|
1821
|
+
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
1822
|
+
message: "Missing actor."
|
|
1823
|
+
});
|
|
1824
|
+
return new Response("Missing actor.", {
|
|
1825
|
+
status: 400,
|
|
1826
|
+
headers: { "Content-Type": "text/plain; charset=utf-8" }
|
|
1827
|
+
});
|
|
1828
|
+
}
|
|
1829
|
+
if (!skipSignatureVerification && activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
1830
|
+
logger.error("The activity ({activityId}) and its actors do not have the same origin.", {
|
|
1831
|
+
activity: json,
|
|
1832
|
+
recipient,
|
|
1833
|
+
activityId: activity.id.href,
|
|
1834
|
+
actorIds: activity.actorIds.map((actor) => actor.href)
|
|
1835
|
+
});
|
|
1836
|
+
span.setStatus({
|
|
1837
|
+
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
1838
|
+
message: `The activity (${activity.id.href}) and its actors do not have the same origin.`
|
|
1839
|
+
});
|
|
1840
|
+
return new Response("The activity and its actors do not have the same origin.", {
|
|
1841
|
+
status: 401,
|
|
1842
|
+
headers: { "Content-Type": "text/plain; charset=utf-8" }
|
|
1843
|
+
});
|
|
1844
|
+
}
|
|
1802
1845
|
const routeResult = await routeActivity({
|
|
1803
1846
|
context: ctx,
|
|
1804
1847
|
json,
|
|
@@ -3310,6 +3353,33 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3310
3353
|
activity = await _fedify_vocab.Activity.fromJsonLd(parseInput, parseContext);
|
|
3311
3354
|
span.setAttribute("activitypub.activity.type", (0, _fedify_vocab.getTypeId)(activity).href);
|
|
3312
3355
|
if (activity.id != null) span.setAttribute("activitypub.activity.id", activity.id.href);
|
|
3356
|
+
if (activity.actorId == null) {
|
|
3357
|
+
logger.error("Missing actor in queued incoming activity.", {
|
|
3358
|
+
activityId: activity.id?.href,
|
|
3359
|
+
activity: message.activity,
|
|
3360
|
+
recipient: message.identifier
|
|
3361
|
+
});
|
|
3362
|
+
span.setStatus({
|
|
3363
|
+
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
3364
|
+
message: "Missing actor."
|
|
3365
|
+
});
|
|
3366
|
+
span.end();
|
|
3367
|
+
return;
|
|
3368
|
+
}
|
|
3369
|
+
if (!this.skipSignatureVerification && activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
3370
|
+
logger.error("The queued activity ({activityId}) and its actors do not have the same origin.", {
|
|
3371
|
+
activityId: activity.id.href,
|
|
3372
|
+
actorIds: activity.actorIds.map((actor) => actor.href),
|
|
3373
|
+
activity: message.activity,
|
|
3374
|
+
recipient: message.identifier
|
|
3375
|
+
});
|
|
3376
|
+
span.setStatus({
|
|
3377
|
+
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
3378
|
+
message: `The activity (${activity.id.href}) and its actors do not have the same origin.`
|
|
3379
|
+
});
|
|
3380
|
+
span.end();
|
|
3381
|
+
return;
|
|
3382
|
+
}
|
|
3313
3383
|
cacheKey = activity.id == null ? null : [
|
|
3314
3384
|
...this.kvPrefixes.activityIdempotence,
|
|
3315
3385
|
context.origin,
|
|
@@ -4422,20 +4492,6 @@ var ContextImpl = class ContextImpl {
|
|
|
4422
4492
|
activity: await fetched.toJsonLd({ contextLoader })
|
|
4423
4493
|
});
|
|
4424
4494
|
return false;
|
|
4425
|
-
} else if (fetched.actorIds.length < 1) {
|
|
4426
|
-
logger.debug("Fetched activity object is missing an actor; unable to verify.", {
|
|
4427
|
-
recipient,
|
|
4428
|
-
activity: await fetched.toJsonLd({ contextLoader })
|
|
4429
|
-
});
|
|
4430
|
-
return false;
|
|
4431
|
-
}
|
|
4432
|
-
const activityId = fetched.id;
|
|
4433
|
-
if (!fetched.actorIds.every((actor) => actor.origin === activityId.origin)) {
|
|
4434
|
-
logger.debug("Fetched activity object has actors from different origins; unable to verify.", {
|
|
4435
|
-
recipient,
|
|
4436
|
-
activity: await fetched.toJsonLd({ contextLoader })
|
|
4437
|
-
});
|
|
4438
|
-
return false;
|
|
4439
4495
|
}
|
|
4440
4496
|
logger.debug("Successfully fetched the remote activity object {activityId}; ignore the original activity and use the fetched one, which is trustworthy.");
|
|
4441
4497
|
activity = fetched;
|
|
@@ -4444,6 +4500,20 @@ var ContextImpl = class ContextImpl {
|
|
|
4444
4500
|
recipient,
|
|
4445
4501
|
activity: json
|
|
4446
4502
|
});
|
|
4503
|
+
if (activity.actorId == null) {
|
|
4504
|
+
logger.debug("Activity is missing an actor; unable to verify.", {
|
|
4505
|
+
recipient,
|
|
4506
|
+
activity: json
|
|
4507
|
+
});
|
|
4508
|
+
return false;
|
|
4509
|
+
}
|
|
4510
|
+
if (activity.id != null && !actorsHaveSameOrigin(activity)) {
|
|
4511
|
+
logger.debug("Activity has actors from different origins; unable to verify.", {
|
|
4512
|
+
recipient,
|
|
4513
|
+
activity: json
|
|
4514
|
+
});
|
|
4515
|
+
return false;
|
|
4516
|
+
}
|
|
4447
4517
|
const routeResult = await routeActivity({
|
|
4448
4518
|
context: this,
|
|
4449
4519
|
json,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
|
-
const require_middleware = require("./middleware-
|
|
3
|
+
const require_middleware = require("./middleware-CmD3lpy4.cjs");
|
|
4
4
|
exports.FederationImpl = require_middleware.FederationImpl;
|
package/dist/mod.cjs
CHANGED
|
@@ -4,11 +4,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
4
4
|
require("./chunk-DDcVe30Y.cjs");
|
|
5
5
|
const require_transformers = require("./transformers-NeAONrAq.cjs");
|
|
6
6
|
require("./compat/mod.cjs");
|
|
7
|
-
const require_http = require("./http-
|
|
8
|
-
const require_middleware = require("./middleware-
|
|
7
|
+
const require_http = require("./http-BoR1M3W7.cjs");
|
|
8
|
+
const require_middleware = require("./middleware-CmD3lpy4.cjs");
|
|
9
9
|
const require_types = require("./types-DRPjmHVV.cjs");
|
|
10
|
-
const require_proof = require("./proof-
|
|
11
|
-
const require_kv_cache = require("./kv-cache-
|
|
10
|
+
const require_proof = require("./proof-CHXVlsH_.cjs");
|
|
11
|
+
const require_kv_cache = require("./kv-cache-BxSx_Iyp.cjs");
|
|
12
12
|
const require_federation_mod = require("./federation/mod.cjs");
|
|
13
13
|
require("./nodeinfo/mod.cjs");
|
|
14
14
|
require("./runtime/mod.cjs");
|
package/dist/mod.js
CHANGED
|
@@ -3,11 +3,11 @@ import { URLPattern } from "urlpattern-polyfill";
|
|
|
3
3
|
import "./chunk-CRNNMoPX.js";
|
|
4
4
|
import { n as autoIdAssigner, r as getDefaultActivityTransformers, t as actorDehydrator } from "./transformers-BGMIq1cs.js";
|
|
5
5
|
import "./compat/mod.js";
|
|
6
|
-
import { _ as validateAcceptSignature, a as verifyRequestDetailed, c as fetchKey, d as importJwk, g as parseAcceptSignature, h as fulfillAcceptSignature, i as verifyRequest, l as fetchKeyDetailed, m as formatAcceptSignature, o as exportJwk, r as signRequest, u as generateCryptoKeyPair } from "./http-
|
|
7
|
-
import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "./middleware-
|
|
6
|
+
import { _ as validateAcceptSignature, a as verifyRequestDetailed, c as fetchKey, d as importJwk, g as parseAcceptSignature, h as fulfillAcceptSignature, i as verifyRequest, l as fetchKeyDetailed, m as formatAcceptSignature, o as exportJwk, r as signRequest, u as generateCryptoKeyPair } from "./http-CK3efjgM.js";
|
|
7
|
+
import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "./middleware-C2AJFk8W.js";
|
|
8
8
|
import { n as getNodeInfo, r as parseNodeInfo, t as nodeInfoToJson } from "./types-miAYfiGO.js";
|
|
9
|
-
import { _ as signJsonLd, a as doesActorOwnKey, b as verifySignature, d as createSignature, f as detachSignature, i as verifyProof, l as attachSignature, n as signObject, o as getKeyOwner, r as verifyObject, t as createProof, y as verifyJsonLd } from "./proof-
|
|
10
|
-
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-
|
|
9
|
+
import { _ as signJsonLd, a as doesActorOwnKey, b as verifySignature, d as createSignature, f as detachSignature, i as verifyProof, l as attachSignature, n as signObject, o as getKeyOwner, r as verifyObject, t as createProof, y as verifyJsonLd } from "./proof-7R4s10TJ.js";
|
|
10
|
+
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-ImApO425.js";
|
|
11
11
|
import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation/mod.js";
|
|
12
12
|
import "./nodeinfo/mod.js";
|
|
13
13
|
import "./runtime/mod.js";
|
|
@@ -3,7 +3,7 @@ import "urlpattern-polyfill";
|
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { t as esm_default } from "../esm-DVILvP5e.mjs";
|
|
5
5
|
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
6
|
-
import "../std__assert-
|
|
6
|
+
import "../std__assert-DflMZha5.mjs";
|
|
7
7
|
import { n as assertInstanceOf } from "../assert-BhQd8QHP.mjs";
|
|
8
8
|
import { a as parseProtocol, c as parseUsage, i as parseOutboundService, n as parseInboundService, o as parseServices, r as parseNodeInfo, s as parseSoftware, t as getNodeInfo } from "../client-CjDMsn4a.mjs";
|
|
9
9
|
import { test } from "@fedify/fixture";
|
|
@@ -3,9 +3,9 @@ import "urlpattern-polyfill";
|
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { n as createRequestContext } from "../context-Juj6bdHC.mjs";
|
|
5
5
|
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
6
|
-
import "../std__assert-
|
|
6
|
+
import "../std__assert-DflMZha5.mjs";
|
|
7
7
|
import { t as MemoryKvStore } from "../kv-HvthQAHr.mjs";
|
|
8
|
-
import { a as createFederation, h as handleNodeInfoJrd, m as handleNodeInfo } from "../middleware-
|
|
8
|
+
import { a as createFederation, h as handleNodeInfoJrd, m as handleNodeInfo } from "../middleware-CE0b69gj.mjs";
|
|
9
9
|
import { test } from "@fedify/fixture";
|
|
10
10
|
//#region src/nodeinfo/handler.test.ts
|
|
11
11
|
test("handleNodeInfo()", async () => {
|
|
@@ -2,8 +2,8 @@ import "@js-temporal/polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
5
|
-
import "../std__assert-
|
|
6
|
-
import { t as assertThrows } from "../assert_throws-
|
|
5
|
+
import "../std__assert-DflMZha5.mjs";
|
|
6
|
+
import { t as assertThrows } from "../assert_throws-D4DNWrux.mjs";
|
|
7
7
|
import { t as nodeInfoToJson } from "../types-DCP0WLdt.mjs";
|
|
8
8
|
import { test } from "@fedify/fixture";
|
|
9
9
|
//#region src/nodeinfo/types.test.ts
|
|
@@ -2,7 +2,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
5
|
-
import "../std__assert-
|
|
5
|
+
import "../std__assert-DflMZha5.mjs";
|
|
6
6
|
import { t as MemoryKvStore } from "../kv-HvthQAHr.mjs";
|
|
7
7
|
import { test } from "@fedify/fixture";
|
|
8
8
|
import { SpanKind, SpanStatusCode, TraceFlags } from "@opentelemetry/api";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { c as verifyKeyOwnership, n as fetchActorDocument, t as exportJwk } from "./key-
|
|
4
|
+
import { n as version, t as name } from "./deno-BATJ1hq6.mjs";
|
|
5
|
+
import { c as verifyKeyOwnership, n as fetchActorDocument, t as exportJwk } from "./key-ClQh9Qqh.mjs";
|
|
6
6
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
7
7
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
8
8
|
import { getDocumentLoader } from "@fedify/vocab-runtime";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import { c as fetchKey, f as validateCryptoKey, o as exportJwk, p as verifyKeyOwnership, s as fetchActorDocument, v as name, y as version } from "./http-
|
|
3
|
+
import { c as fetchKey, f as validateCryptoKey, o as exportJwk, p as verifyKeyOwnership, s as fetchActorDocument, v as name, y as version } from "./http-CK3efjgM.js";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
5
5
|
import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, getTypeId, isActor } from "@fedify/vocab";
|
|
6
6
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
const require_chunk = require("./chunk-DDcVe30Y.cjs");
|
|
4
|
-
const require_http = require("./http-
|
|
4
|
+
const require_http = require("./http-BoR1M3W7.cjs");
|
|
5
5
|
let _logtape_logtape = require("@logtape/logtape");
|
|
6
6
|
let _fedify_vocab = require("@fedify/vocab");
|
|
7
7
|
let _opentelemetry_api = require("@opentelemetry/api");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { r as fetchKey, s as validateCryptoKey } from "./key-
|
|
4
|
+
import { n as version, t as name } from "./deno-BATJ1hq6.mjs";
|
|
5
|
+
import { r as fetchKey, s as validateCryptoKey } from "./key-ClQh9Qqh.mjs";
|
|
6
6
|
import { Activity, DataIntegrityProof, Multikey, getTypeId } from "@fedify/vocab";
|
|
7
7
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
8
8
|
import { getLogger } from "@logtape/logtape";
|