@fedify/fedify 2.1.12 → 2.1.14
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-D9hlyCx5.mjs → builder-BBifZZ5G.mjs} +3 -3
- package/dist/{chunk-nlSIicah.js → chunk-CRNNMoPX.js} +2 -2
- package/dist/{client-z-8dc-e1.d.cts → client-CAM_bQXx.d.cts} +1 -0
- package/dist/{client-AtlibPOU.d.ts → client-CSddvgWN.d.ts} +1 -2
- package/dist/compat/mod.d.cts +2 -1
- package/dist/compat/mod.d.ts +2 -3
- package/dist/compat/mod.js +3 -3
- package/dist/compat/transformers.test.mjs +1 -1
- package/dist/{context-C0fssarc.d.ts → context-_l9t359k.d.ts} +53 -12
- package/dist/{context-LmrZPwti.d.cts → context-o22vjzS2.d.cts} +53 -10
- package/dist/{deno-Ddb3P7G7.mjs → deno-bqnW1QlD.mjs} +1 -1
- package/dist/{docloader-CK8tewt1.mjs → docloader-D-Fu0kBF.mjs} +2 -2
- package/dist/federation/builder.test.mjs +1 -1
- package/dist/federation/handler.test.mjs +1361 -41
- package/dist/federation/idempotency.test.mjs +2 -2
- package/dist/federation/inbox.test.mjs +1 -1
- package/dist/federation/middleware.test.mjs +1588 -84
- package/dist/federation/mod.cjs +1 -1
- package/dist/federation/mod.d.cts +4 -3
- package/dist/federation/mod.d.ts +4 -5
- package/dist/federation/mod.js +2 -2
- package/dist/federation/retry.test.mjs +1 -1
- package/dist/federation/send.test.mjs +3 -3
- package/dist/federation/temporal.test.d.mts +2 -0
- package/dist/federation/temporal.test.mjs +71 -0
- package/dist/federation/webfinger.test.mjs +1 -1
- package/dist/{http-CrGuipxe.d.cts → http-BDZeS5om.d.ts} +2 -1
- package/dist/{http-aQzN9Ayi.d.ts → http-C87EWkO0.d.cts} +2 -3
- package/dist/{http-CmDErAnD.cjs → http-CEXtUHix.cjs} +57 -9
- package/dist/{http-qKyJKSnF.js → http-Cw1EorUA.js} +58 -10
- package/dist/{http-DRDpStn2.mjs → http-DvhFwy2E.mjs} +58 -10
- package/dist/{inbox-DTuPJEma.mjs → inbox-7b3VYnec.mjs} +7 -4
- package/dist/{key-WSedbAA-.mjs → key-B3OBz6A_.mjs} +1 -1
- package/dist/{kv-CbLNp3zQ.d.cts → kv-D6hNiMTK.d.ts} +1 -0
- package/dist/{kv-cache-9cdQDeT0.cjs → kv-cache-BIapFiSV.cjs} +2 -2
- package/dist/{kv-cache-DNNRFY8u.js → kv-cache-C6nynGhh.js} +2 -2
- package/dist/{kv-cache-B01V7s3h.mjs → kv-cache-FsT1ljhs.mjs} +1 -1
- package/dist/{kv-GFYnFoOl.d.ts → kv-gJ8LYbxX.d.cts} +1 -3
- package/dist/ld-DTxYKZTT.mjs +550 -0
- package/dist/{middleware-UThUK30x.js → middleware-0vceVN10.js} +407 -82
- package/dist/{middleware-DFcgN1cH.cjs → middleware-BcbU5lKS.cjs} +406 -80
- package/dist/{middleware-8P6Z15Wq.cjs → middleware-DUT--Qen.cjs} +1 -1
- package/dist/{middleware-DDsnRvFC.mjs → middleware-DmT9t0BJ.mjs} +317 -84
- package/dist/{middleware-C2c1rlmE.mjs → middleware-Li_g_vqz.mjs} +1 -1
- package/dist/{mod-CnwZoDzx.d.ts → mod-0dF0OeGw.d.cts} +2 -3
- package/dist/{mod-B505FZBC.d.cts → mod-BTWFtZwa.d.ts} +4 -3
- package/dist/{mod-Cgpc49fA.d.cts → mod-Bv1elC-b.d.ts} +2 -1
- package/dist/{mod-DoJBjjnO.d.cts → mod-CjiK2zrW.d.ts} +3 -2
- package/dist/{mod-DvxszxXC.d.ts → mod-D5YlzzP3.d.cts} +3 -4
- package/dist/{mod-D7PAuO6k.d.ts → mod-dxOnKp2Y.d.cts} +4 -5
- package/dist/mod.cjs +4 -4
- package/dist/mod.d.cts +9 -8
- package/dist/mod.d.ts +9 -10
- package/dist/mod.js +9 -9
- package/dist/nodeinfo/handler.test.mjs +1 -1
- package/dist/nodeinfo/mod.d.cts +2 -1
- package/dist/nodeinfo/mod.d.ts +2 -3
- package/dist/nodeinfo/mod.js +3 -3
- package/dist/otel/mod.d.cts +2 -1
- package/dist/otel/mod.d.ts +2 -3
- package/dist/otel/mod.js +2 -2
- package/dist/{owner-CptqhsOy.d.cts → owner-CnngXDNJ.d.ts} +2 -1
- package/dist/{owner-74ARJ5TL.d.ts → owner-DEvZuyOE.d.cts} +2 -3
- package/dist/{owner-BceqCVOs.mjs → owner-DzcnuWYo.mjs} +2 -2
- package/dist/{proof-4NUQlbQV.js → proof-CtTT8A7y.js} +299 -5
- package/dist/{proof-BojC8L94.mjs → proof-DmVGi7mI.mjs} +2 -2
- package/dist/{proof-kuTIVfyZ.cjs → proof-JEoW3ODq.cjs} +345 -3
- package/dist/runtime/mod.d.cts +1 -0
- package/dist/runtime/mod.d.ts +1 -2
- package/dist/runtime/mod.js +3 -3
- package/dist/{send-Buz5Gy8x.mjs → send-5ulOKVCW.mjs} +2 -2
- package/dist/sig/http.test.mjs +120 -2
- package/dist/sig/key.test.mjs +1 -1
- package/dist/sig/ld.test.mjs +558 -2
- package/dist/sig/mod.cjs +2 -2
- package/dist/sig/mod.d.cts +4 -3
- package/dist/sig/mod.d.ts +4 -5
- package/dist/sig/mod.js +4 -4
- package/dist/sig/owner.test.mjs +1 -1
- package/dist/sig/proof.test.mjs +1 -1
- package/dist/temporal-CmJkd-25.mjs +95 -0
- package/dist/testing/mod.d.mts +48 -6
- package/dist/{transformers-ve6e2xcg.js → transformers-BGMIq1cs.js} +2 -2
- package/dist/{types-hvL8ElAs.js → types-CAY3OdLq.js} +2 -2
- 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.d.cts +2 -1
- package/dist/utils/mod.d.ts +2 -3
- package/dist/utils/mod.js +3 -3
- package/dist/vocab/mod.d.cts +1 -0
- package/dist/vocab/mod.d.ts +1 -2
- package/dist/vocab/mod.js +2 -2
- package/package.json +7 -7
- package/dist/ld-OBpaLfHR.mjs +0 -256
- /package/dist/{retry-B_E3V_Dx.mjs → retry-CJL0poaU.mjs} +0 -0
package/dist/federation/mod.cjs
CHANGED
|
@@ -2,7 +2,7 @@ const { Temporal } = require("@js-temporal/polyfill");
|
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
4
|
require("../chunk-DDcVe30Y.cjs");
|
|
5
|
-
const require_middleware = require("../middleware-
|
|
5
|
+
const require_middleware = require("../middleware-BcbU5lKS.cjs");
|
|
6
6
|
let es_toolkit = require("es-toolkit");
|
|
7
7
|
//#region src/federation/kv.ts
|
|
8
8
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { a as
|
|
3
|
-
import { n as
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "../context-o22vjzS2.cjs";
|
|
3
|
+
import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "../kv-gJ8LYbxX.cjs";
|
|
4
|
+
import { n as handleWebFinger, t as WebFingerHandlerParameters } from "../mod-0dF0OeGw.cjs";
|
|
4
5
|
export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxChallengePolicy, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
package/dist/federation/mod.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { n as handleWebFinger, t as WebFingerHandlerParameters } from "../mod-CnwZoDzx.js";
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { $ as ActorKeyPairsDispatcher, A as createFederation, B as RouterRouteResult, C as InboxChallengePolicy, D as FederationKvPrefixes, E as Rfc6570Expression, F as Message, G as InProcessMessageQueueOptions, H as respondWithObject, I as createFederationBuilder, J as MessageQueueListenOptions, K as MessageQueue, L as Router, M as RetryContext, N as RetryPolicy, O as FederationOrigin, P as createExponentialBackoffPolicy, Q as ActorHandleMapper, R as RouterError, S as IdempotencyStrategy, St as digest, T as ObjectCallbackSetters, U as respondWithObjectIfAcceptable, V as RespondWithObjectOptions, W as InProcessMessageQueue, X as ActorAliasMapper, Y as ParallelMessageQueue, Z as ActorDispatcher, _ as FederationBuilder, _t as WebFingerLinksDispatcher, a as InboxContext, at as CustomCollectionCursor, b as FederationStartQueueOptions, bt as PageItems, c as RouteActivityOptions, ct as InboxListener, d as ActorCallbackSetters, dt as ObjectDispatcher, et as AuthorizePredicate, f as CollectionCallbackSetters, ft as OutboxErrorHandler, g as Federation, gt as UnverifiedActivityReason, h as Federatable, ht as UnverifiedActivityHandler, i as GetSignedKeyOptions, it as CustomCollectionCounter, j as CreateExponentialBackoffPolicyOptions, k as FederationQueueOptions, l as SendActivityOptions, lt as NodeInfoDispatcher, m as CustomCollectionCallbackSetters, mt as SharedInboxKeyDispatcher, n as Context, nt as CollectionCursor, o as ParseUriResult, ot as CustomCollectionDispatcher, p as ConstructorWithTypeId, pt as OutboxPermanentFailureHandler, q as MessageQueueEnqueueOptions, r as ForwardActivityOptions, rt as CollectionDispatcher, s as RequestContext, st as InboxErrorHandler, t as ActorKeyPair, tt as CollectionCounter, u as SendActivityOptionsForCollection, ut as ObjectAuthorizePredicate, v as FederationFetchOptions, vt as SendActivityError, w as InboxListenerSetters, x as IdempotencyKeyCallback, xt as buildCollectionSynchronizationHeader, y as FederationOptions, yt as SenderKeyPair, z as RouterOptions } from "../context-_l9t359k.js";
|
|
3
|
+
import { a as MemoryKvStore, i as KvStoreSetOptions, n as KvStore, r as KvStoreListEntry, t as KvKey } from "../kv-D6hNiMTK.js";
|
|
4
|
+
import { n as handleWebFinger, t as WebFingerHandlerParameters } from "../mod-Bv1elC-b.js";
|
|
6
5
|
export { ActorAliasMapper, ActorCallbackSetters, ActorDispatcher, ActorHandleMapper, ActorKeyPair, ActorKeyPairsDispatcher, AuthorizePredicate, CollectionCallbackSetters, CollectionCounter, CollectionCursor, CollectionDispatcher, ConstructorWithTypeId, Context, CreateExponentialBackoffPolicyOptions, CustomCollectionCallbackSetters, CustomCollectionCounter, CustomCollectionCursor, CustomCollectionDispatcher, Federatable, Federation, FederationBuilder, FederationFetchOptions, FederationKvPrefixes, FederationOptions, FederationOrigin, FederationQueueOptions, FederationStartQueueOptions, ForwardActivityOptions, GetSignedKeyOptions, IdempotencyKeyCallback, IdempotencyStrategy, InProcessMessageQueue, InProcessMessageQueueOptions, InboxChallengePolicy, InboxContext, InboxErrorHandler, InboxListener, InboxListenerSetters, KvKey, KvStore, KvStoreListEntry, KvStoreSetOptions, MemoryKvStore, Message, MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions, NodeInfoDispatcher, ObjectAuthorizePredicate, ObjectCallbackSetters, ObjectDispatcher, OutboxErrorHandler, OutboxPermanentFailureHandler, PageItems, ParallelMessageQueue, ParseUriResult, RequestContext, RespondWithObjectOptions, RetryContext, RetryPolicy, Rfc6570Expression, RouteActivityOptions, Router, RouterError, RouterOptions, RouterRouteResult, SendActivityError, SendActivityOptions, SendActivityOptionsForCollection, SenderKeyPair, SharedInboxKeyDispatcher, UnverifiedActivityHandler, UnverifiedActivityReason, WebFingerHandlerParameters, WebFingerLinksDispatcher, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
package/dist/federation/mod.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import "urlpattern-polyfill";
|
|
3
|
-
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-
|
|
2
|
+
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
+
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-0vceVN10.js";
|
|
4
4
|
import { isEqual } from "es-toolkit";
|
|
5
5
|
//#region src/federation/kv.ts
|
|
6
6
|
/**
|
|
@@ -3,7 +3,7 @@ import "urlpattern-polyfill";
|
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { l as AssertionError, t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
5
5
|
import { t as assertNotEquals } from "../assert_not_equals--wG9hV7u.mjs";
|
|
6
|
-
import { t as createExponentialBackoffPolicy } from "../retry-
|
|
6
|
+
import { t as createExponentialBackoffPolicy } from "../retry-CJL0poaU.mjs";
|
|
7
7
|
import { test } from "@fedify/fixture";
|
|
8
8
|
//#region src/federation/retry.test.ts
|
|
9
9
|
test("createExponentialBackoffPolicy()", () => {
|
|
@@ -8,10 +8,10 @@ import { n as assertFalse, t as assertRejects } from "../assert_rejects-B-qJtC9Z
|
|
|
8
8
|
import { t as assertInstanceOf } from "../assert_instance_of-C4Ri6VuN.mjs";
|
|
9
9
|
import { t as assertNotEquals } from "../assert_not_equals--wG9hV7u.mjs";
|
|
10
10
|
import { t as assert } from "../assert-ddO5KLpe.mjs";
|
|
11
|
-
import { l as verifyRequest } from "../http-
|
|
11
|
+
import { l as verifyRequest } from "../http-DvhFwy2E.mjs";
|
|
12
12
|
import { i as rsaPrivateKey2, n as ed25519PrivateKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-BAK-tUlf.mjs";
|
|
13
|
-
import { t as doesActorOwnKey } from "../owner-
|
|
14
|
-
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "../send-
|
|
13
|
+
import { t as doesActorOwnKey } from "../owner-DzcnuWYo.mjs";
|
|
14
|
+
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "../send-5ulOKVCW.mjs";
|
|
15
15
|
import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
16
16
|
import { Activity, Application, Endpoints, Group, Person, Service } from "@fedify/vocab";
|
|
17
17
|
//#region src/federation/send.test.ts
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import "@js-temporal/polyfill";
|
|
2
|
+
import "urlpattern-polyfill";
|
|
3
|
+
globalThis.addEventListener = () => {};
|
|
4
|
+
import "../std__assert-Duiq_YC9.mjs";
|
|
5
|
+
import { n as assertFalse } from "../assert_rejects-B-qJtC9Z.mjs";
|
|
6
|
+
import { t as assert } from "../assert-ddO5KLpe.mjs";
|
|
7
|
+
import { t as hasMalformedKnownTemporalLiteral } from "../temporal-CmJkd-25.mjs";
|
|
8
|
+
import { test } from "@fedify/fixture";
|
|
9
|
+
//#region src/federation/temporal.test.ts
|
|
10
|
+
test("hasMalformedKnownTemporalLiteral() detects expanded proof timestamps", async () => {
|
|
11
|
+
assert(await hasMalformedKnownTemporalLiteral({
|
|
12
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
13
|
+
id: "https://example.com/activities/invalid-proof-created",
|
|
14
|
+
type: "Create",
|
|
15
|
+
actor: "https://example.com/person2",
|
|
16
|
+
object: {
|
|
17
|
+
id: "https://example.com/notes/invalid-proof-created",
|
|
18
|
+
type: "Note",
|
|
19
|
+
attributedTo: "https://example.com/person2",
|
|
20
|
+
content: "Hello, world!"
|
|
21
|
+
},
|
|
22
|
+
proof: {
|
|
23
|
+
type: "DataIntegrityProof",
|
|
24
|
+
cryptosuite: "eddsa-jcs-2022",
|
|
25
|
+
verificationMethod: "https://example.com/person2#main-key",
|
|
26
|
+
proofPurpose: "assertionMethod",
|
|
27
|
+
created: { "@value": "not-a-date" },
|
|
28
|
+
proofValue: "zLaewdp4H9kqtwyrLatK4cjY5oRHwVcw4gibPSUDYDMhi4M49v8pcYk3ZB6D69dNpAPbUmY8ocuJ3m9KhKJEEg7z"
|
|
29
|
+
}
|
|
30
|
+
}, void 0));
|
|
31
|
+
});
|
|
32
|
+
test("hasMalformedKnownTemporalLiteral() follows aliases in nested objects", async () => {
|
|
33
|
+
assert(await hasMalformedKnownTemporalLiteral({
|
|
34
|
+
"@context": ["https://www.w3.org/ns/activitystreams", { publishedAt: "as:published" }],
|
|
35
|
+
id: "https://example.com/activities/invalid-nested-published",
|
|
36
|
+
type: "Create",
|
|
37
|
+
actor: "https://example.com/person2",
|
|
38
|
+
object: {
|
|
39
|
+
id: "https://example.com/notes/invalid-nested-published",
|
|
40
|
+
type: "Note",
|
|
41
|
+
attributedTo: "https://example.com/person2",
|
|
42
|
+
content: "Hello, world!"
|
|
43
|
+
},
|
|
44
|
+
audience: {
|
|
45
|
+
type: "Note",
|
|
46
|
+
publishedAt: { "@value": "not-a-date" }
|
|
47
|
+
}
|
|
48
|
+
}, void 0));
|
|
49
|
+
});
|
|
50
|
+
test("hasMalformedKnownTemporalLiteral() does not over-classify ignored as:closed values", async () => {
|
|
51
|
+
assertFalse(await hasMalformedKnownTemporalLiteral({
|
|
52
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
53
|
+
type: "Question",
|
|
54
|
+
closed: "not-a-date"
|
|
55
|
+
}, void 0));
|
|
56
|
+
});
|
|
57
|
+
test("hasMalformedKnownTemporalLiteral() detects date-like invalid as:closed values", async () => {
|
|
58
|
+
assert(await hasMalformedKnownTemporalLiteral({
|
|
59
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
60
|
+
type: "Question",
|
|
61
|
+
closed: "2024-02-31T00:00:00Z"
|
|
62
|
+
}, void 0));
|
|
63
|
+
});
|
|
64
|
+
test("hasMalformedKnownTemporalLiteral() ignores custom-typed as:closed values", async () => {
|
|
65
|
+
assertFalse(await hasMalformedKnownTemporalLiteral({ "https://www.w3.org/ns/activitystreams#closed": [{
|
|
66
|
+
"@value": "2024-02-31T00:00:00Z",
|
|
67
|
+
"@type": "https://example.com/ns#customDateTime"
|
|
68
|
+
}] }, void 0));
|
|
69
|
+
});
|
|
70
|
+
//#endregion
|
|
71
|
+
export {};
|
|
@@ -5,7 +5,7 @@ import { n as createRequestContext } from "../context-Juj6bdHC.mjs";
|
|
|
5
5
|
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
6
6
|
import "../std__assert-Duiq_YC9.mjs";
|
|
7
7
|
import { t as MemoryKvStore } from "../kv-tL2TOE9X.mjs";
|
|
8
|
-
import { a as createFederation, o as handleWebFinger } from "../middleware-
|
|
8
|
+
import { a as createFederation, o as handleWebFinger } from "../middleware-DmT9t0BJ.mjs";
|
|
9
9
|
import { test } from "@fedify/fixture";
|
|
10
10
|
import { Image, Link, Person } from "@fedify/vocab";
|
|
11
11
|
//#region src/federation/webfinger.test.ts
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
1
2
|
import { CryptographicKey, Multikey } from "@fedify/vocab";
|
|
2
|
-
import { DocumentLoader } from "@fedify/vocab-runtime";
|
|
3
3
|
import { TracerProvider } from "@opentelemetry/api";
|
|
4
|
+
import { DocumentLoader } from "@fedify/vocab-runtime";
|
|
4
5
|
|
|
5
6
|
//#region src/sig/key.d.ts
|
|
6
7
|
/**
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import { URLPattern } from "urlpattern-polyfill";
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
3
2
|
import { CryptographicKey, Multikey } from "@fedify/vocab";
|
|
4
|
-
import { TracerProvider } from "@opentelemetry/api";
|
|
5
3
|
import { DocumentLoader } from "@fedify/vocab-runtime";
|
|
4
|
+
import { TracerProvider } from "@opentelemetry/api";
|
|
6
5
|
|
|
7
6
|
//#region src/sig/key.d.ts
|
|
8
7
|
/**
|
|
@@ -11,7 +11,7 @@ let _opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conve
|
|
|
11
11
|
let byte_encodings_base64 = require("byte-encodings/base64");
|
|
12
12
|
//#region deno.json
|
|
13
13
|
var name = "@fedify/fedify";
|
|
14
|
-
var version = "2.1.
|
|
14
|
+
var version = "2.1.14";
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region src/sig/accept.ts
|
|
17
17
|
/**
|
|
@@ -497,6 +497,7 @@ async function fetchKeyInternal(keyId, cls, options = {}) {
|
|
|
497
497
|
//#endregion
|
|
498
498
|
//#region src/sig/http.ts
|
|
499
499
|
const DEFAULT_MAX_REDIRECTION = 20;
|
|
500
|
+
const DOUBLE_KNOCK_TRANSPORT_RETRY_DELAY_MS = 100;
|
|
500
501
|
/**
|
|
501
502
|
* Signs a request using the given private key.
|
|
502
503
|
* @param request The request to sign.
|
|
@@ -1325,6 +1326,59 @@ function createRedirectRequest(request, location, body) {
|
|
|
1325
1326
|
cache: request.cache
|
|
1326
1327
|
});
|
|
1327
1328
|
}
|
|
1329
|
+
async function fetchDoubleKnockRequest(request, signedRequest, signal) {
|
|
1330
|
+
const maxAttempts = request.method === "GET" || request.method === "HEAD" ? 2 : 1;
|
|
1331
|
+
for (let attempt = 1;; attempt++) try {
|
|
1332
|
+
return await fetch(signedRequest, {
|
|
1333
|
+
redirect: "manual",
|
|
1334
|
+
signal
|
|
1335
|
+
});
|
|
1336
|
+
} catch (error) {
|
|
1337
|
+
const abortedSignal = getAbortedSignal(signal, request.signal, signedRequest.signal);
|
|
1338
|
+
if (abortedSignal != null) throw getAbortReason(abortedSignal);
|
|
1339
|
+
if (isAbortError(error)) throw error;
|
|
1340
|
+
if (attempt >= maxAttempts) throw createFetchError(request.url, error);
|
|
1341
|
+
await sleep(DOUBLE_KNOCK_TRANSPORT_RETRY_DELAY_MS, signal, request.signal, signedRequest.signal);
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
function createFetchError(url, cause) {
|
|
1345
|
+
const error = new _fedify_vocab_runtime.FetchError(url, cause instanceof Error ? cause.message : String(cause));
|
|
1346
|
+
error.cause = cause;
|
|
1347
|
+
return error;
|
|
1348
|
+
}
|
|
1349
|
+
function isAbortError(error) {
|
|
1350
|
+
return error instanceof Error && error.name === "AbortError";
|
|
1351
|
+
}
|
|
1352
|
+
async function sleep(ms, ...signals) {
|
|
1353
|
+
const abortSignals = signals.filter((signal) => signal != null);
|
|
1354
|
+
const abortedSignal = getAbortedSignal(...abortSignals);
|
|
1355
|
+
if (abortedSignal != null) throw getAbortReason(abortedSignal);
|
|
1356
|
+
if (abortSignals.length < 1) {
|
|
1357
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
1358
|
+
return;
|
|
1359
|
+
}
|
|
1360
|
+
await new Promise((resolve, reject) => {
|
|
1361
|
+
const removeAbortListeners = () => {
|
|
1362
|
+
for (const signal of abortSignals) signal.removeEventListener("abort", handleAbort);
|
|
1363
|
+
};
|
|
1364
|
+
const timeout = setTimeout(() => {
|
|
1365
|
+
removeAbortListeners();
|
|
1366
|
+
resolve();
|
|
1367
|
+
}, ms);
|
|
1368
|
+
function handleAbort(event) {
|
|
1369
|
+
clearTimeout(timeout);
|
|
1370
|
+
removeAbortListeners();
|
|
1371
|
+
reject(getAbortReason(event.currentTarget));
|
|
1372
|
+
}
|
|
1373
|
+
for (const signal of abortSignals) signal.addEventListener("abort", handleAbort, { once: true });
|
|
1374
|
+
});
|
|
1375
|
+
}
|
|
1376
|
+
function getAbortedSignal(...signals) {
|
|
1377
|
+
return signals.find((signal) => signal?.aborted);
|
|
1378
|
+
}
|
|
1379
|
+
function getAbortReason(signal) {
|
|
1380
|
+
return signal.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
1381
|
+
}
|
|
1328
1382
|
/**
|
|
1329
1383
|
* Performs a double-knock request to the given URL. For the details of
|
|
1330
1384
|
* double-knocking, see
|
|
@@ -1350,10 +1404,7 @@ async function doubleKnockInternal(request, identity, options, redirected = 0, v
|
|
|
1350
1404
|
body
|
|
1351
1405
|
});
|
|
1352
1406
|
log?.(signedRequest);
|
|
1353
|
-
let response = await
|
|
1354
|
-
redirect: "manual",
|
|
1355
|
-
signal
|
|
1356
|
-
});
|
|
1407
|
+
let response = await fetchDoubleKnockRequest(request, signedRequest, signal);
|
|
1357
1408
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1358
1409
|
if (redirected >= DEFAULT_MAX_REDIRECTION) throw new _fedify_vocab_runtime.FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1359
1410
|
const redirectRequest = createRedirectRequest(request, response.headers.get("Location"), body);
|
|
@@ -1428,10 +1479,7 @@ async function doubleKnockInternal(request, identity, options, redirected = 0, v
|
|
|
1428
1479
|
body
|
|
1429
1480
|
});
|
|
1430
1481
|
log?.(signedRequest);
|
|
1431
|
-
response = await
|
|
1432
|
-
redirect: "manual",
|
|
1433
|
-
signal
|
|
1434
|
-
});
|
|
1482
|
+
response = await fetchDoubleKnockRequest(request, signedRequest, signal);
|
|
1435
1483
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1436
1484
|
if (redirected >= DEFAULT_MAX_REDIRECTION) throw new _fedify_vocab_runtime.FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1437
1485
|
const redirectRequest = createRedirectRequest(request, response.headers.get("Location"), body);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import "urlpattern-polyfill";
|
|
2
|
+
import { URLPattern } from "urlpattern-polyfill";
|
|
3
3
|
import { getLogger } from "@logtape/logtape";
|
|
4
4
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
5
5
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -10,7 +10,7 @@ import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } fro
|
|
|
10
10
|
import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
|
|
11
11
|
//#region deno.json
|
|
12
12
|
var name = "@fedify/fedify";
|
|
13
|
-
var version = "2.1.
|
|
13
|
+
var version = "2.1.14";
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/sig/accept.ts
|
|
16
16
|
/**
|
|
@@ -496,6 +496,7 @@ async function fetchKeyInternal(keyId, cls, options = {}) {
|
|
|
496
496
|
//#endregion
|
|
497
497
|
//#region src/sig/http.ts
|
|
498
498
|
const DEFAULT_MAX_REDIRECTION = 20;
|
|
499
|
+
const DOUBLE_KNOCK_TRANSPORT_RETRY_DELAY_MS = 100;
|
|
499
500
|
/**
|
|
500
501
|
* Signs a request using the given private key.
|
|
501
502
|
* @param request The request to sign.
|
|
@@ -1324,6 +1325,59 @@ function createRedirectRequest(request, location, body) {
|
|
|
1324
1325
|
cache: request.cache
|
|
1325
1326
|
});
|
|
1326
1327
|
}
|
|
1328
|
+
async function fetchDoubleKnockRequest(request, signedRequest, signal) {
|
|
1329
|
+
const maxAttempts = request.method === "GET" || request.method === "HEAD" ? 2 : 1;
|
|
1330
|
+
for (let attempt = 1;; attempt++) try {
|
|
1331
|
+
return await fetch(signedRequest, {
|
|
1332
|
+
redirect: "manual",
|
|
1333
|
+
signal
|
|
1334
|
+
});
|
|
1335
|
+
} catch (error) {
|
|
1336
|
+
const abortedSignal = getAbortedSignal(signal, request.signal, signedRequest.signal);
|
|
1337
|
+
if (abortedSignal != null) throw getAbortReason(abortedSignal);
|
|
1338
|
+
if (isAbortError(error)) throw error;
|
|
1339
|
+
if (attempt >= maxAttempts) throw createFetchError(request.url, error);
|
|
1340
|
+
await sleep(DOUBLE_KNOCK_TRANSPORT_RETRY_DELAY_MS, signal, request.signal, signedRequest.signal);
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
function createFetchError(url, cause) {
|
|
1344
|
+
const error = new FetchError(url, cause instanceof Error ? cause.message : String(cause));
|
|
1345
|
+
error.cause = cause;
|
|
1346
|
+
return error;
|
|
1347
|
+
}
|
|
1348
|
+
function isAbortError(error) {
|
|
1349
|
+
return error instanceof Error && error.name === "AbortError";
|
|
1350
|
+
}
|
|
1351
|
+
async function sleep(ms, ...signals) {
|
|
1352
|
+
const abortSignals = signals.filter((signal) => signal != null);
|
|
1353
|
+
const abortedSignal = getAbortedSignal(...abortSignals);
|
|
1354
|
+
if (abortedSignal != null) throw getAbortReason(abortedSignal);
|
|
1355
|
+
if (abortSignals.length < 1) {
|
|
1356
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
1357
|
+
return;
|
|
1358
|
+
}
|
|
1359
|
+
await new Promise((resolve, reject) => {
|
|
1360
|
+
const removeAbortListeners = () => {
|
|
1361
|
+
for (const signal of abortSignals) signal.removeEventListener("abort", handleAbort);
|
|
1362
|
+
};
|
|
1363
|
+
const timeout = setTimeout(() => {
|
|
1364
|
+
removeAbortListeners();
|
|
1365
|
+
resolve();
|
|
1366
|
+
}, ms);
|
|
1367
|
+
function handleAbort(event) {
|
|
1368
|
+
clearTimeout(timeout);
|
|
1369
|
+
removeAbortListeners();
|
|
1370
|
+
reject(getAbortReason(event.currentTarget));
|
|
1371
|
+
}
|
|
1372
|
+
for (const signal of abortSignals) signal.addEventListener("abort", handleAbort, { once: true });
|
|
1373
|
+
});
|
|
1374
|
+
}
|
|
1375
|
+
function getAbortedSignal(...signals) {
|
|
1376
|
+
return signals.find((signal) => signal?.aborted);
|
|
1377
|
+
}
|
|
1378
|
+
function getAbortReason(signal) {
|
|
1379
|
+
return signal.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
1380
|
+
}
|
|
1327
1381
|
/**
|
|
1328
1382
|
* Performs a double-knock request to the given URL. For the details of
|
|
1329
1383
|
* double-knocking, see
|
|
@@ -1349,10 +1403,7 @@ async function doubleKnockInternal(request, identity, options, redirected = 0, v
|
|
|
1349
1403
|
body
|
|
1350
1404
|
});
|
|
1351
1405
|
log?.(signedRequest);
|
|
1352
|
-
let response = await
|
|
1353
|
-
redirect: "manual",
|
|
1354
|
-
signal
|
|
1355
|
-
});
|
|
1406
|
+
let response = await fetchDoubleKnockRequest(request, signedRequest, signal);
|
|
1356
1407
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1357
1408
|
if (redirected >= DEFAULT_MAX_REDIRECTION) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1358
1409
|
const redirectRequest = createRedirectRequest(request, response.headers.get("Location"), body);
|
|
@@ -1427,10 +1478,7 @@ async function doubleKnockInternal(request, identity, options, redirected = 0, v
|
|
|
1427
1478
|
body
|
|
1428
1479
|
});
|
|
1429
1480
|
log?.(signedRequest);
|
|
1430
|
-
response = await
|
|
1431
|
-
redirect: "manual",
|
|
1432
|
-
signal
|
|
1433
|
-
});
|
|
1481
|
+
response = await fetchDoubleKnockRequest(request, signedRequest, signal);
|
|
1434
1482
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1435
1483
|
if (redirected >= DEFAULT_MAX_REDIRECTION) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1436
1484
|
const redirectRequest = createRedirectRequest(request, response.headers.get("Location"), body);
|
|
@@ -1,9 +1,9 @@
|
|
|
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-
|
|
4
|
+
import { n as version, t as name } from "./deno-bqnW1QlD.mjs";
|
|
5
5
|
import { i as validateAcceptSignature, n as fulfillAcceptSignature, r as parseAcceptSignature } from "./accept-Dd__NiUL.mjs";
|
|
6
|
-
import { o as validateCryptoKey, r as fetchKeyDetailed } from "./key-
|
|
6
|
+
import { o as validateCryptoKey, r as fetchKeyDetailed } from "./key-B3OBz6A_.mjs";
|
|
7
7
|
import { CryptographicKey } from "@fedify/vocab";
|
|
8
8
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
9
9
|
import { FetchError } from "@fedify/vocab-runtime";
|
|
@@ -14,6 +14,7 @@ import { encodeHex } from "byte-encodings/hex";
|
|
|
14
14
|
import { Item, decodeDict, encodeItem } from "structured-field-values";
|
|
15
15
|
//#region src/sig/http.ts
|
|
16
16
|
const DEFAULT_MAX_REDIRECTION = 20;
|
|
17
|
+
const DOUBLE_KNOCK_TRANSPORT_RETRY_DELAY_MS = 100;
|
|
17
18
|
/**
|
|
18
19
|
* Signs a request using the given private key.
|
|
19
20
|
* @param request The request to sign.
|
|
@@ -842,6 +843,59 @@ function createRedirectRequest(request, location, body) {
|
|
|
842
843
|
cache: request.cache
|
|
843
844
|
});
|
|
844
845
|
}
|
|
846
|
+
async function fetchDoubleKnockRequest(request, signedRequest, signal) {
|
|
847
|
+
const maxAttempts = request.method === "GET" || request.method === "HEAD" ? 2 : 1;
|
|
848
|
+
for (let attempt = 1;; attempt++) try {
|
|
849
|
+
return await fetch(signedRequest, {
|
|
850
|
+
redirect: "manual",
|
|
851
|
+
signal
|
|
852
|
+
});
|
|
853
|
+
} catch (error) {
|
|
854
|
+
const abortedSignal = getAbortedSignal(signal, request.signal, signedRequest.signal);
|
|
855
|
+
if (abortedSignal != null) throw getAbortReason(abortedSignal);
|
|
856
|
+
if (isAbortError(error)) throw error;
|
|
857
|
+
if (attempt >= maxAttempts) throw createFetchError(request.url, error);
|
|
858
|
+
await sleep(DOUBLE_KNOCK_TRANSPORT_RETRY_DELAY_MS, signal, request.signal, signedRequest.signal);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
function createFetchError(url, cause) {
|
|
862
|
+
const error = new FetchError(url, cause instanceof Error ? cause.message : String(cause));
|
|
863
|
+
error.cause = cause;
|
|
864
|
+
return error;
|
|
865
|
+
}
|
|
866
|
+
function isAbortError(error) {
|
|
867
|
+
return error instanceof Error && error.name === "AbortError";
|
|
868
|
+
}
|
|
869
|
+
async function sleep(ms, ...signals) {
|
|
870
|
+
const abortSignals = signals.filter((signal) => signal != null);
|
|
871
|
+
const abortedSignal = getAbortedSignal(...abortSignals);
|
|
872
|
+
if (abortedSignal != null) throw getAbortReason(abortedSignal);
|
|
873
|
+
if (abortSignals.length < 1) {
|
|
874
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
875
|
+
return;
|
|
876
|
+
}
|
|
877
|
+
await new Promise((resolve, reject) => {
|
|
878
|
+
const removeAbortListeners = () => {
|
|
879
|
+
for (const signal of abortSignals) signal.removeEventListener("abort", handleAbort);
|
|
880
|
+
};
|
|
881
|
+
const timeout = setTimeout(() => {
|
|
882
|
+
removeAbortListeners();
|
|
883
|
+
resolve();
|
|
884
|
+
}, ms);
|
|
885
|
+
function handleAbort(event) {
|
|
886
|
+
clearTimeout(timeout);
|
|
887
|
+
removeAbortListeners();
|
|
888
|
+
reject(getAbortReason(event.currentTarget));
|
|
889
|
+
}
|
|
890
|
+
for (const signal of abortSignals) signal.addEventListener("abort", handleAbort, { once: true });
|
|
891
|
+
});
|
|
892
|
+
}
|
|
893
|
+
function getAbortedSignal(...signals) {
|
|
894
|
+
return signals.find((signal) => signal?.aborted);
|
|
895
|
+
}
|
|
896
|
+
function getAbortReason(signal) {
|
|
897
|
+
return signal.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
898
|
+
}
|
|
845
899
|
/**
|
|
846
900
|
* Performs a double-knock request to the given URL. For the details of
|
|
847
901
|
* double-knocking, see
|
|
@@ -867,10 +921,7 @@ async function doubleKnockInternal(request, identity, options, redirected = 0, v
|
|
|
867
921
|
body
|
|
868
922
|
});
|
|
869
923
|
log?.(signedRequest);
|
|
870
|
-
let response = await
|
|
871
|
-
redirect: "manual",
|
|
872
|
-
signal
|
|
873
|
-
});
|
|
924
|
+
let response = await fetchDoubleKnockRequest(request, signedRequest, signal);
|
|
874
925
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
875
926
|
if (redirected >= DEFAULT_MAX_REDIRECTION) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
876
927
|
const redirectRequest = createRedirectRequest(request, response.headers.get("Location"), body);
|
|
@@ -945,10 +996,7 @@ async function doubleKnockInternal(request, identity, options, redirected = 0, v
|
|
|
945
996
|
body
|
|
946
997
|
});
|
|
947
998
|
log?.(signedRequest);
|
|
948
|
-
response = await
|
|
949
|
-
redirect: "manual",
|
|
950
|
-
signal
|
|
951
|
-
});
|
|
999
|
+
response = await fetchDoubleKnockRequest(request, signedRequest, signal);
|
|
952
1000
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
953
1001
|
if (redirected >= DEFAULT_MAX_REDIRECTION) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
954
1002
|
const redirectRequest = createRedirectRequest(request, response.headers.get("Location"), body);
|
|
@@ -1,7 +1,7 @@
|
|
|
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-
|
|
4
|
+
import { n as version, t as name } from "./deno-bqnW1QlD.mjs";
|
|
5
5
|
import { Activity, getTypeId } from "@fedify/vocab";
|
|
6
6
|
import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
|
|
7
7
|
import { getLogger } from "@logtape/logtape";
|
|
@@ -39,7 +39,7 @@ var InboxListenerSet = class InboxListenerSet {
|
|
|
39
39
|
return this.dispatchWithClass(activity)?.listener ?? null;
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
-
async function routeActivity({ context: ctx, json, activity, recipient, inboxListeners, inboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider, idempotencyStrategy }) {
|
|
42
|
+
async function routeActivity({ context: ctx, json, originalJson, normalizedActivity, ldSignatureVerified, activity, recipient, inboxListeners, inboxContextFactory, listenerInboxContextFactory, inboxErrorHandler, kv, kvPrefixes, queue, span, tracerProvider, idempotencyStrategy }) {
|
|
43
43
|
const logger = getLogger([
|
|
44
44
|
"fedify",
|
|
45
45
|
"federation",
|
|
@@ -96,7 +96,9 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
96
96
|
type: "inbox",
|
|
97
97
|
id: crypto.randomUUID(),
|
|
98
98
|
baseUrl: ctx.origin,
|
|
99
|
-
activity: json,
|
|
99
|
+
activity: originalJson ?? json,
|
|
100
|
+
...normalizedActivity == null ? {} : { normalizedActivity },
|
|
101
|
+
...ldSignatureVerified == null ? {} : { ldSignatureVerified },
|
|
100
102
|
identifier: recipient,
|
|
101
103
|
attempt: 0,
|
|
102
104
|
started: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -140,7 +142,8 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
140
142
|
const { class: cls, listener } = dispatched;
|
|
141
143
|
span.updateName(`activitypub.dispatch_inbox_listener ${cls.name}`);
|
|
142
144
|
try {
|
|
143
|
-
|
|
145
|
+
const contextFactory = listenerInboxContextFactory ?? inboxContextFactory;
|
|
146
|
+
await listener(contextFactory(recipient, contextFactory === inboxContextFactory ? json : originalJson ?? json, activity?.id?.href, getTypeId(activity).href), activity);
|
|
144
147
|
} catch (error) {
|
|
145
148
|
try {
|
|
146
149
|
await inboxErrorHandler?.(ctx, error);
|
|
@@ -1,7 +1,7 @@
|
|
|
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-
|
|
4
|
+
import { n as version, t as name } from "./deno-bqnW1QlD.mjs";
|
|
5
5
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
6
6
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
7
7
|
import { FetchError, getDocumentLoader } from "@fedify/vocab-runtime";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
require("./chunk-DDcVe30Y.cjs");
|
|
4
|
-
const require_http = require("./http-
|
|
4
|
+
const require_http = require("./http-CEXtUHix.cjs");
|
|
5
5
|
let _logtape_logtape = require("@logtape/logtape");
|
|
6
6
|
let es_toolkit = require("es-toolkit");
|
|
7
7
|
let _fedify_vocab_runtime = require("@fedify/vocab-runtime");
|
|
@@ -97,7 +97,7 @@ function kvCache({ loader, kv, prefix, rules }) {
|
|
|
97
97
|
}
|
|
98
98
|
function matchRule(url, rules) {
|
|
99
99
|
for (const [pattern, d] of rules) {
|
|
100
|
-
const duration =
|
|
100
|
+
const duration = Temporal.Duration.from(d);
|
|
101
101
|
if (typeof pattern === "string") {
|
|
102
102
|
if (url === pattern) return duration;
|
|
103
103
|
continue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import { d as validateCryptoKey, t as doubleKnock } from "./http-
|
|
3
|
+
import { d as validateCryptoKey, t as doubleKnock } from "./http-Cw1EorUA.js";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
5
5
|
import { curry } from "es-toolkit";
|
|
6
6
|
import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
|
|
@@ -96,7 +96,7 @@ function kvCache({ loader, kv, prefix, rules }) {
|
|
|
96
96
|
}
|
|
97
97
|
function matchRule(url, rules) {
|
|
98
98
|
for (const [pattern, d] of rules) {
|
|
99
|
-
const duration =
|
|
99
|
+
const duration = Temporal.Duration.from(d);
|
|
100
100
|
if (typeof pattern === "string") {
|
|
101
101
|
if (url === pattern) return duration;
|
|
102
102
|
continue;
|
|
@@ -86,7 +86,7 @@ function kvCache({ loader, kv, prefix, rules }) {
|
|
|
86
86
|
}
|
|
87
87
|
function matchRule(url, rules) {
|
|
88
88
|
for (const [pattern, d] of rules) {
|
|
89
|
-
const duration =
|
|
89
|
+
const duration = Temporal.Duration.from(d);
|
|
90
90
|
if (typeof pattern === "string") {
|
|
91
91
|
if (url === pattern) return duration;
|
|
92
92
|
continue;
|