@fedify/fedify 2.4.0-dev.1508 → 2.4.0-dev.1528
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-DvVHoIZ0.mjs → assert-OguE97r2.mjs} +1 -1
- package/dist/{assert_instance_of-CxoC8bVq.mjs → assert_instance_of-DBC5X09g.mjs} +1 -1
- package/dist/{assert_not_equals-C8vcTTA3.mjs → assert_not_equals-DkVK8oqV.mjs} +1 -1
- package/dist/{assert_rejects-DAdaaIWM.mjs → assert_rejects-DN60FHPX.mjs} +2 -2
- package/dist/{assert_strict_equals-BzqyKuYL.mjs → assert_strict_equals-XEgZAlrj.mjs} +1 -1
- package/dist/{assert_throws-zN79lgIC.mjs → assert_throws-BOkhLGYc.mjs} +1 -1
- package/dist/{builder-DlWCek6Z.mjs → builder-B6myMguW.mjs} +3 -23
- package/dist/compat/mod.d.cts +1 -1
- package/dist/compat/mod.d.ts +1 -1
- package/dist/compat/outgoing-jsonld.test.mjs +3 -3
- package/dist/compat/public-audience.test.mjs +3 -3
- package/dist/compat/transformers.test.mjs +5 -5
- package/dist/{context-CYF8X0ft.d.cts → context-BBVLF7lx.d.cts} +272 -543
- package/dist/{context-BF5B4ZDk.d.ts → context-BU6jSQdo.d.ts} +272 -542
- package/dist/{context-BBRTgkrs.mjs → context-DVoTs_wM.mjs} +2 -8
- package/dist/{deno-nexucTAX.mjs → deno-CVNsRJe9.mjs} +1 -1
- package/dist/{docloader-DAdEN549.mjs → docloader-CB8AGpw3.mjs} +3 -3
- package/dist/federation/builder.test.mjs +5 -5
- package/dist/federation/circuit-breaker.test.mjs +5 -5
- package/dist/federation/collection.test.mjs +3 -3
- package/dist/federation/handler.test.mjs +13 -13
- package/dist/federation/idempotency.test.mjs +6 -6
- package/dist/federation/inbox.test.mjs +3 -3
- package/dist/federation/keycache.test.mjs +5 -5
- package/dist/federation/kv.test.mjs +3 -3
- package/dist/federation/metrics.test.mjs +4 -4
- package/dist/federation/middleware.test.mjs +19 -200
- package/dist/federation/mod.cjs +259 -3
- package/dist/federation/mod.d.cts +4 -4
- package/dist/federation/mod.d.ts +4 -4
- package/dist/federation/mod.js +257 -1
- package/dist/federation/mq.test.mjs +261 -103
- package/dist/federation/negotiation.test.mjs +4 -4
- package/dist/federation/retry.test.mjs +3 -3
- package/dist/federation/router.test.mjs +5 -5
- package/dist/federation/send.test.mjs +10 -10
- package/dist/federation/temporal.test.mjs +4 -4
- package/dist/federation/webfinger.test.mjs +6 -6
- package/dist/{http-Dv3147TL.js → http-B0-9u_1F.js} +1 -1
- package/dist/{http-BCj9dlA_.cjs → http-EkV7OslM.cjs} +1 -1
- package/dist/{http-inQqS3yx.mjs → http-L7wqkbZR.mjs} +4 -4
- package/dist/{key-CGrr6-I2.mjs → key-Ct8zNgGk.mjs} +2 -2
- package/dist/{kv-cache-C3qkFkbt.mjs → kv-cache-CUT9OGpX.mjs} +1 -1
- package/dist/{kv-cache-c8X6svwE.cjs → kv-cache-CbB50co6.cjs} +1 -1
- package/dist/{kv-cache-C2oTEXyb.js → kv-cache-Dh8ZoQfC.js} +1 -1
- package/dist/{ld-fnWaNT8y.mjs → ld-D6I7H18J.mjs} +3 -3
- package/dist/{metrics-C5hMINAa.mjs → metrics-DvClPYaE.mjs} +1 -1
- package/dist/{middleware-DeVzbg1I.cjs → middleware-B0ujKP-0.cjs} +30 -690
- package/dist/{middleware-CQlq6ykI.mjs → middleware-CGqUj4XY.mjs} +1 -1
- package/dist/{middleware-vQ_ZpgcX.js → middleware-DX9Fd37u.js} +31 -679
- package/dist/{middleware-Dl2nyVgB.mjs → middleware-RxFBNV2C.mjs} +46 -306
- package/dist/{mod-BHEB3xhE.d.cts → mod-C0F6kvgS.d.cts} +1 -1
- package/dist/{mod-4WGAuR6X.d.ts → mod-vPYVoa5n.d.ts} +1 -1
- package/dist/mod.cjs +6 -6
- package/dist/mod.d.cts +5 -5
- package/dist/mod.d.ts +5 -5
- package/dist/mod.js +5 -5
- package/dist/{mq-DXMt_qCY.d.cts → mq-D-nlpY04.d.ts} +0 -34
- package/dist/{mq-B5_hohs7.d.ts → mq-D8uSFzxe.d.cts} +0 -34
- package/dist/nodeinfo/client.test.mjs +3 -3
- package/dist/nodeinfo/handler.test.mjs +5 -5
- package/dist/nodeinfo/types.test.mjs +4 -4
- package/dist/otel/exporter.test.mjs +3 -3
- package/dist/{outgoing-jsonld-BNL8AC14.mjs → outgoing-jsonld-L_DbOaFe.mjs} +1 -1
- package/dist/{owner-Bq2eZyO_.mjs → owner-BqPUA8Z6.mjs} +2 -2
- package/dist/{proof-DZCjcFCd.mjs → proof-BJKoRFBc.mjs} +5 -5
- package/dist/{proof-CTG9azxN.js → proof-DCCmmEuJ.js} +1 -1
- package/dist/{proof-Buz7I8wj.cjs → proof-eZme7HYR.cjs} +1 -1
- package/dist/{send-B253S5gN.mjs → send-DVtEjoJ6.mjs} +3 -3
- package/dist/sig/accept.test.mjs +1 -1
- package/dist/sig/http.test.mjs +8 -8
- package/dist/sig/key.test.mjs +6 -6
- package/dist/sig/ld.test.mjs +7 -7
- package/dist/sig/mod.cjs +2 -2
- package/dist/sig/mod.js +2 -2
- package/dist/sig/owner.test.mjs +6 -6
- package/dist/sig/proof.test.mjs +8 -8
- package/dist/{std__assert-Dh6uLf_q.mjs → std__assert-BBjXFNOb.mjs} +4 -4
- package/dist/{temporal-d6TshGjq.mjs → temporal-B06FcmVK.mjs} +1 -1
- package/dist/testing/mod.d.mts +8 -1037
- package/dist/testing/mod.mjs +2 -3
- package/dist/utils/docloader.test.mjs +6 -6
- 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 -9
- package/dist/codec-CmlPqjNX.mjs +0 -103
- package/dist/federation/tasks/codec.test.d.mts +0 -2
- package/dist/federation/tasks/codec.test.mjs +0 -292
- package/dist/federation/tasks/enqueue.test.d.mts +0 -2
- package/dist/federation/tasks/enqueue.test.mjs +0 -992
- package/dist/federation/tasks/tasks.test.d.mts +0 -2
- package/dist/federation/tasks/tasks.test.mjs +0 -555
- package/dist/mq-03vS-C9P.mjs +0 -276
- package/dist/testing-Dy-WhqpN.mjs +0 -77
- /package/dist/{accept-CgDcxvjV.mjs → accept-CPkZzmGN.mjs} +0 -0
- /package/dist/{activity-listener-BeTGV3wc.mjs → activity-listener-tztVvlNb.mjs} +0 -0
- /package/dist/{assert_equals-PBVKNMJd.mjs → assert_equals-C-ZRDbaf.mjs} +0 -0
- /package/dist/{circuit-breaker-hJBB6jwA.mjs → circuit-breaker-CSWsyoef.mjs} +0 -0
- /package/dist/{client-B_A6mfn3.mjs → client-ByXmQhYD.mjs} +0 -0
- /package/dist/{collection-Dp5ky45w.mjs → collection-Cc3DVAhE.mjs} +0 -0
- /package/dist/{keycache-CaOR6NYg.mjs → keycache-BeU0LCII.mjs} +0 -0
- /package/dist/{keys-CSYsOMFG.mjs → keys-DGu1NFwu.mjs} +0 -0
- /package/dist/{kv-CIvR3Non.mjs → kv-rV3vodCc.mjs} +0 -0
- /package/dist/{negotiation-m_L2nyS3.mjs → negotiation-DDstyBvc.mjs} +0 -0
- /package/dist/{public-audience-c9zmYKgA.mjs → public-audience-Cvbr2Gzt.mjs} +0 -0
- /package/dist/{retry-DI4O-zYl.mjs → retry-CXg_MBI-.mjs} +0 -0
- /package/dist/{types-BFowWFTT.mjs → types-J53Kw7so.mjs} +0 -0
|
@@ -66,7 +66,7 @@ const testDefinitions = [];
|
|
|
66
66
|
//#endregion
|
|
67
67
|
//#region src/testing/context.ts
|
|
68
68
|
function createContext(values) {
|
|
69
|
-
const { federation, url = new URL("http://example.com/"), canonicalOrigin, data, documentLoader, contextLoader, meterProvider, tracerProvider, clone, getNodeInfoUri, getActorUri, getObjectUri, getCollectionUri, getOutboxUri, getInboxUri, getFollowingUri, getFollowersUri, getLikedUri, getFeaturedUri, getFeaturedTagsUri, parseUri, getActorKeyPairs, getDocumentLoader, lookupObject: lookupObject$1, traverseCollection: traverseCollection$1, lookupNodeInfo, lookupWebFinger: lookupWebFinger$1, sendActivity, routeActivity
|
|
69
|
+
const { federation, url = new URL("http://example.com/"), canonicalOrigin, data, documentLoader, contextLoader, meterProvider, tracerProvider, clone, getNodeInfoUri, getActorUri, getObjectUri, getCollectionUri, getOutboxUri, getInboxUri, getFollowingUri, getFollowersUri, getLikedUri, getFeaturedUri, getFeaturedTagsUri, parseUri, getActorKeyPairs, getDocumentLoader, lookupObject: lookupObject$1, traverseCollection: traverseCollection$1, lookupNodeInfo, lookupWebFinger: lookupWebFinger$1, sendActivity, routeActivity } = values;
|
|
70
70
|
function throwRouterError() {
|
|
71
71
|
throw new RouterError("Not implemented");
|
|
72
72
|
}
|
|
@@ -126,12 +126,6 @@ function createContext(values) {
|
|
|
126
126
|
}),
|
|
127
127
|
routeActivity: routeActivity ?? ((_params) => {
|
|
128
128
|
throw new Error("Not implemented");
|
|
129
|
-
}),
|
|
130
|
-
enqueueTask: enqueueTask ?? ((_task, _data, _options) => {
|
|
131
|
-
throw new Error("Not implemented");
|
|
132
|
-
}),
|
|
133
|
-
enqueueTaskMany: enqueueTaskMany ?? ((_task, _payloads, _options) => {
|
|
134
|
-
throw new Error("Not implemented");
|
|
135
129
|
})
|
|
136
130
|
};
|
|
137
131
|
}
|
|
@@ -182,4 +176,4 @@ function createOutboxContext(args) {
|
|
|
182
176
|
};
|
|
183
177
|
}
|
|
184
178
|
//#endregion
|
|
185
|
-
export { testDefinitions as
|
|
179
|
+
export { testDefinitions as i, createOutboxContext as n, createRequestContext as r, createInboxContext as t };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { o as validateCryptoKey } from "./key-
|
|
5
|
-
import { n as doubleKnock } from "./http-
|
|
4
|
+
import { o as validateCryptoKey } from "./key-Ct8zNgGk.mjs";
|
|
5
|
+
import { n as doubleKnock } from "./http-L7wqkbZR.mjs";
|
|
6
6
|
import { getLogger } from "@logtape/logtape";
|
|
7
|
-
import { curry } from "es-toolkit";
|
|
8
7
|
import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, validatePublicUrl } from "@fedify/vocab-runtime";
|
|
8
|
+
import { curry } from "es-toolkit";
|
|
9
9
|
//#region src/utils/docloader.ts
|
|
10
10
|
const logger = getLogger([
|
|
11
11
|
"fedify",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
8
|
-
import { r as createFederationBuilder } from "../builder-
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import { r as assertExists } from "../std__assert-BBjXFNOb.mjs";
|
|
6
|
+
import { t as assertThrows } from "../assert_throws-BOkhLGYc.mjs";
|
|
7
|
+
import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
|
|
8
|
+
import { r as createFederationBuilder } from "../builder-B6myMguW.mjs";
|
|
9
9
|
import { DisallowedOperatorError, DisallowedVarSpecModifierError, DuplicateRouteVariableError, RouteTemplateOptionsNotMatchedError, RouterError } from "@fedify/uri-template";
|
|
10
10
|
import { Activity, Note, Person } from "@fedify/vocab";
|
|
11
11
|
import { test } from "@fedify/fixture";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as
|
|
5
|
-
import
|
|
6
|
-
import "../
|
|
7
|
-
import { t as
|
|
8
|
-
import { n as normalizeCircuitBreakerOptions, r as parseCircuitBreakerKvState, t as CircuitBreaker } from "../circuit-breaker-
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import "../std__assert-BBjXFNOb.mjs";
|
|
6
|
+
import { t as assertThrows } from "../assert_throws-BOkhLGYc.mjs";
|
|
7
|
+
import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
|
|
8
|
+
import { n as normalizeCircuitBreakerOptions, r as parseCircuitBreakerKvState, t as CircuitBreaker } from "../circuit-breaker-CSWsyoef.mjs";
|
|
9
9
|
import { test } from "@fedify/fixture";
|
|
10
10
|
//#region src/federation/circuit-breaker.test.ts
|
|
11
11
|
var AlwaysConflictingKvStore = class extends MemoryKvStore {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as assertEquals } from "../assert_equals-
|
|
5
|
-
import "../std__assert-
|
|
6
|
-
import { n as digest, t as buildCollectionSynchronizationHeader } from "../collection-
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import "../std__assert-BBjXFNOb.mjs";
|
|
6
|
+
import { n as digest, t as buildCollectionSynchronizationHeader } from "../collection-Cc3DVAhE.mjs";
|
|
7
7
|
import { test } from "@fedify/fixture";
|
|
8
8
|
import { decodeHex } from "byte-encodings/hex";
|
|
9
9
|
//#region src/federation/collection.test.ts
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as createOutboxContext, r as createRequestContext, t as createInboxContext } from "../context-
|
|
5
|
-
import { t as
|
|
6
|
-
import
|
|
7
|
-
import "../
|
|
8
|
-
import {
|
|
9
|
-
import { t as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { s as
|
|
13
|
-
import { a as
|
|
14
|
-
import {
|
|
15
|
-
import { c as handleActor, d as handleInbox, f as handleObject, h as respondWithObjectIfAcceptable, l as handleCollection, m as respondWithObject, o as createFederation, p as handleOutbox, u as handleCustomCollection } from "../middleware-
|
|
16
|
-
import { t as ActivityListenerSet } from "../activity-listener-
|
|
4
|
+
import { n as createOutboxContext, r as createRequestContext, t as createInboxContext } from "../context-DVoTs_wM.mjs";
|
|
5
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
6
|
+
import "../std__assert-BBjXFNOb.mjs";
|
|
7
|
+
import { n as assertGreaterOrEqual, t as assertRejects } from "../assert_rejects-DN60FHPX.mjs";
|
|
8
|
+
import { t as assertInstanceOf } from "../assert_instance_of-DBC5X09g.mjs";
|
|
9
|
+
import { t as assert } from "../assert-OguE97r2.mjs";
|
|
10
|
+
import { r as parseAcceptSignature } from "../accept-CPkZzmGN.mjs";
|
|
11
|
+
import { s as signRequest } from "../http-L7wqkbZR.mjs";
|
|
12
|
+
import { a as rsaPrivateKey3, c as rsaPublicKey3, s as rsaPublicKey2 } from "../keys-DGu1NFwu.mjs";
|
|
13
|
+
import { a as compactJsonLd, p as signJsonLd } from "../ld-D6I7H18J.mjs";
|
|
14
|
+
import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
|
|
15
|
+
import { c as handleActor, d as handleInbox, f as handleObject, h as respondWithObjectIfAcceptable, l as handleCollection, m as respondWithObject, o as createFederation, p as handleOutbox, u as handleCustomCollection } from "../middleware-RxFBNV2C.mjs";
|
|
16
|
+
import { t as ActivityListenerSet } from "../activity-listener-tztVvlNb.mjs";
|
|
17
17
|
import { Activity, Create, Note, Person, Tombstone } from "@fedify/vocab";
|
|
18
18
|
import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
19
19
|
import { FetchError } from "@fedify/vocab-runtime";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as
|
|
5
|
-
import
|
|
6
|
-
import "../
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { o as createFederation } from "../middleware-
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import "../std__assert-BBjXFNOb.mjs";
|
|
6
|
+
import { n as ed25519PrivateKey, r as ed25519PublicKey, t as ed25519Multikey } from "../keys-DGu1NFwu.mjs";
|
|
7
|
+
import { r as signObject } from "../proof-BJKoRFBc.mjs";
|
|
8
|
+
import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
|
|
9
|
+
import { o as createFederation } from "../middleware-RxFBNV2C.mjs";
|
|
10
10
|
import { Create, Follow, Person } from "@fedify/vocab";
|
|
11
11
|
import { mockDocumentLoader, test } from "@fedify/fixture";
|
|
12
12
|
//#region src/federation/idempotency.test.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as assertEquals } from "../assert_equals-
|
|
5
|
-
import { t as assertThrows } from "../assert_throws-
|
|
6
|
-
import { t as ActivityListenerSet } from "../activity-listener-
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import { t as assertThrows } from "../assert_throws-BOkhLGYc.mjs";
|
|
6
|
+
import { t as ActivityListenerSet } from "../activity-listener-tztVvlNb.mjs";
|
|
7
7
|
import { Activity, Create, Invite, Offer, Update } from "@fedify/vocab";
|
|
8
8
|
import { test } from "@fedify/fixture";
|
|
9
9
|
//#region src/federation/inbox.test.ts
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import { t as KvKeyCache } from "../keycache-
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import { t as assertInstanceOf } from "../assert_instance_of-DBC5X09g.mjs";
|
|
6
|
+
import { t as assert } from "../assert-OguE97r2.mjs";
|
|
7
|
+
import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
|
|
8
|
+
import { t as KvKeyCache } from "../keycache-BeU0LCII.mjs";
|
|
9
9
|
import { CryptographicKey, Multikey } from "@fedify/vocab";
|
|
10
10
|
import { test } from "@fedify/fixture";
|
|
11
11
|
//#region src/federation/keycache.test.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as
|
|
5
|
-
import
|
|
6
|
-
import "../
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import "../std__assert-BBjXFNOb.mjs";
|
|
6
|
+
import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
|
|
7
7
|
import { test } from "@fedify/fixture";
|
|
8
8
|
//#region src/federation/kv.test.ts
|
|
9
9
|
test("MemoryKvStore", async (t) => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { t as assertEquals } from "../assert_equals-
|
|
5
|
-
import "../std__assert-
|
|
6
|
-
import { t as assertRejects } from "../assert_rejects-
|
|
7
|
-
import { _ as recordKeyLookup, 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, m as recordDocumentFetch, p as recordDocumentCache, r as getFederationMetrics, t as classifyFetchError, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "../metrics-
|
|
4
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
5
|
+
import "../std__assert-BBjXFNOb.mjs";
|
|
6
|
+
import { t as assertRejects } from "../assert_rejects-DN60FHPX.mjs";
|
|
7
|
+
import { _ as recordKeyLookup, 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, m as recordDocumentFetch, p as recordDocumentCache, r as getFederationMetrics, t as classifyFetchError, u as recordCollectionPageItems, v as recordOutboxActivity, x as registerQueueDepthGauge, y as recordOutboxEnqueue } from "../metrics-DvClPYaE.mjs";
|
|
8
8
|
import { createTestMeterProvider, test } from "@fedify/fixture";
|
|
9
9
|
import { FetchError } from "@fedify/vocab-runtime";
|
|
10
10
|
import { DataPointType, MeterProvider, MetricReader } from "@opentelemetry/sdk-metrics";
|
|
@@ -2,34 +2,31 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { t as esm_default } from "../esm-vrlUxr60.mjs";
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { t as
|
|
11
|
-
import { t as
|
|
12
|
-
import { t as
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { a as
|
|
18
|
-
import { t as
|
|
19
|
-
import {
|
|
20
|
-
import { t as
|
|
21
|
-
import { i as
|
|
22
|
-
import {
|
|
23
|
-
import { t as CircuitBreaker } from "../circuit-breaker-hJBB6jwA.mjs";
|
|
24
|
-
import { t as TaskCodec } from "../codec-CmlPqjNX.mjs";
|
|
5
|
+
import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
|
|
6
|
+
import { r as assertExists } from "../std__assert-BBjXFNOb.mjs";
|
|
7
|
+
import { r as assertFalse, t as assertRejects } from "../assert_rejects-DN60FHPX.mjs";
|
|
8
|
+
import { t as assertInstanceOf } from "../assert_instance_of-DBC5X09g.mjs";
|
|
9
|
+
import { t as assertThrows } from "../assert_throws-BOkhLGYc.mjs";
|
|
10
|
+
import { t as assertNotEquals } from "../assert_not_equals-DkVK8oqV.mjs";
|
|
11
|
+
import { t as assertStrictEquals } from "../assert_strict_equals-XEgZAlrj.mjs";
|
|
12
|
+
import { t as assert } from "../assert-OguE97r2.mjs";
|
|
13
|
+
import { g as recordInboxActivity } from "../metrics-DvClPYaE.mjs";
|
|
14
|
+
import { l as verifyRequest, s as signRequest } from "../http-L7wqkbZR.mjs";
|
|
15
|
+
import { a as rsaPrivateKey3, c as rsaPublicKey3, i as rsaPrivateKey2, n as ed25519PrivateKey, r as ed25519PublicKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-DGu1NFwu.mjs";
|
|
16
|
+
import { t as getAuthenticatedDocumentLoader } from "../docloader-CB8AGpw3.mjs";
|
|
17
|
+
import { a as compactJsonLd, h as verifyJsonLd, p as signJsonLd, s as detachSignature } from "../ld-D6I7H18J.mjs";
|
|
18
|
+
import { t as doesActorOwnKey } from "../owner-BqPUA8Z6.mjs";
|
|
19
|
+
import { i as verifyObject, r as signObject } from "../proof-BJKoRFBc.mjs";
|
|
20
|
+
import { t as MemoryKvStore } from "../kv-rV3vodCc.mjs";
|
|
21
|
+
import { g as handleBenchmarkTrigger, i as KvSpecDeterminer, n as FederationImpl, o as createFederation, r as InboxContextImpl, t as ContextImpl } from "../middleware-RxFBNV2C.mjs";
|
|
22
|
+
import { t as CircuitBreaker } from "../circuit-breaker-CSWsyoef.mjs";
|
|
25
23
|
import { configure, reset } from "@logtape/logtape";
|
|
26
24
|
import { RouterError } from "@fedify/uri-template";
|
|
27
25
|
import * as vocab from "@fedify/vocab";
|
|
28
|
-
import { Create,
|
|
26
|
+
import { Create, Offer, Person, getTypeId, lookupObject } from "@fedify/vocab";
|
|
29
27
|
import { SpanStatusCode, metrics } from "@opentelemetry/api";
|
|
30
28
|
import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
31
29
|
import { FetchError, getDocumentLoader } from "@fedify/vocab-runtime";
|
|
32
|
-
import { deepStrictEqual, ok, rejects, strictEqual } from "node:assert/strict";
|
|
33
30
|
import serialize from "json-canon";
|
|
34
31
|
import { DataPointType, MeterProvider as MeterProvider$1, MetricReader } from "@opentelemetry/sdk-metrics";
|
|
35
32
|
//#region ../fixture/src/fixtures/example.com/create.json
|
|
@@ -6959,183 +6956,5 @@ test("createFederation() omits instrumentation when no meterProvider is set", ()
|
|
|
6959
6956
|
assertStrictEquals(ctx.documentLoader, mockDocumentLoader);
|
|
6960
6957
|
assertStrictEquals(ctx.contextLoader, mockDocumentLoader);
|
|
6961
6958
|
});
|
|
6962
|
-
const taskCodec = new TaskCodec({ contextLoader: mockDocumentLoader });
|
|
6963
|
-
const decodeEnvelope = (message) => taskCodec.decode(envelopeSchema, message.data);
|
|
6964
|
-
const envelope = (title) => ({
|
|
6965
|
-
note: new Note({ content: title }),
|
|
6966
|
-
title
|
|
6967
|
-
});
|
|
6968
|
-
var RendezvousQueue = class {
|
|
6969
|
-
expected;
|
|
6970
|
-
enqueued = [];
|
|
6971
|
-
#count = 0;
|
|
6972
|
-
#markDispatched;
|
|
6973
|
-
#openGate;
|
|
6974
|
-
dispatched;
|
|
6975
|
-
#gate;
|
|
6976
|
-
constructor(expected) {
|
|
6977
|
-
this.expected = expected;
|
|
6978
|
-
this.dispatched = new Promise((resolve) => {
|
|
6979
|
-
this.#markDispatched = resolve;
|
|
6980
|
-
});
|
|
6981
|
-
this.#gate = new Promise((resolve) => {
|
|
6982
|
-
this.#openGate = resolve;
|
|
6983
|
-
});
|
|
6984
|
-
}
|
|
6985
|
-
release() {
|
|
6986
|
-
this.#openGate();
|
|
6987
|
-
}
|
|
6988
|
-
enqueue(message, options) {
|
|
6989
|
-
this.enqueued.push({
|
|
6990
|
-
message,
|
|
6991
|
-
options
|
|
6992
|
-
});
|
|
6993
|
-
if (++this.#count >= this.expected) this.#markDispatched();
|
|
6994
|
-
return this.#gate;
|
|
6995
|
-
}
|
|
6996
|
-
listen(_handler, _options) {
|
|
6997
|
-
return new Promise(() => {});
|
|
6998
|
-
}
|
|
6999
|
-
};
|
|
7000
|
-
const withTimeout = (promise, ms, message) => {
|
|
7001
|
-
let timer;
|
|
7002
|
-
const timeout = new Promise((_, reject) => {
|
|
7003
|
-
timer = setTimeout(() => reject(new Error(message)), ms);
|
|
7004
|
-
});
|
|
7005
|
-
return Promise.race([promise, timeout]).finally(() => clearTimeout(timer));
|
|
7006
|
-
};
|
|
7007
|
-
const mockOptions = () => ({
|
|
7008
|
-
kv: new MemoryKvStore(),
|
|
7009
|
-
documentLoaderFactory: () => mockDocumentLoader,
|
|
7010
|
-
contextLoaderFactory: () => mockDocumentLoader,
|
|
7011
|
-
manuallyStartQueue: true
|
|
7012
|
-
});
|
|
7013
|
-
test("ContextImpl.enqueueTask()", async (t) => {
|
|
7014
|
-
await t.step("builds the task message envelope and round-trips a vocab payload", async () => {
|
|
7015
|
-
const queue = new MockQueue({ supportsEnqueueMany: true });
|
|
7016
|
-
const federation = createFederation({
|
|
7017
|
-
...mockOptions(),
|
|
7018
|
-
queue: { task: queue }
|
|
7019
|
-
});
|
|
7020
|
-
const task = federation.defineTask("greet", {
|
|
7021
|
-
schema: envelopeSchema,
|
|
7022
|
-
handler: () => {}
|
|
7023
|
-
});
|
|
7024
|
-
const ctx = federation.createContext(new URL("https://example.com/"), void 0);
|
|
7025
|
-
ok(ctx instanceof ContextImpl);
|
|
7026
|
-
await ctx.enqueueTask(task, envelope("greeting"));
|
|
7027
|
-
strictEqual(queue.enqueuedMany.length, 0);
|
|
7028
|
-
strictEqual(queue.enqueued.length, 1);
|
|
7029
|
-
const { message } = queue.enqueued[0];
|
|
7030
|
-
strictEqual(message.type, "task");
|
|
7031
|
-
strictEqual(message.taskName, "greet");
|
|
7032
|
-
strictEqual(message.baseUrl, "https://example.com");
|
|
7033
|
-
strictEqual(message.attempt, 0);
|
|
7034
|
-
ok(/^[0-9a-f-]{36}$/i.test(message.id));
|
|
7035
|
-
ok(Temporal.Instant.from(message.started) instanceof Temporal.Instant);
|
|
7036
|
-
strictEqual(typeof message.traceContext, "object");
|
|
7037
|
-
ok(message.traceContext != null);
|
|
7038
|
-
const decoded = await decodeEnvelope(message);
|
|
7039
|
-
ok(decoded.note instanceof Note);
|
|
7040
|
-
strictEqual(decoded.note.content?.toString(), "greeting");
|
|
7041
|
-
strictEqual(decoded.title, "greeting");
|
|
7042
|
-
});
|
|
7043
|
-
});
|
|
7044
|
-
test("ContextImpl.enqueueTaskMany()", async (t) => {
|
|
7045
|
-
await t.step("round-trips every payload through enqueueMany in order, forwarding options", async () => {
|
|
7046
|
-
const queue = new MockQueue({ supportsEnqueueMany: true });
|
|
7047
|
-
const federation = createFederation({
|
|
7048
|
-
...mockOptions(),
|
|
7049
|
-
queue: { task: queue }
|
|
7050
|
-
});
|
|
7051
|
-
const task = federation.defineTask("bulk", {
|
|
7052
|
-
schema: envelopeSchema,
|
|
7053
|
-
handler: () => {}
|
|
7054
|
-
});
|
|
7055
|
-
const ctx = federation.createContext(new URL("https://example.com/"), void 0);
|
|
7056
|
-
const payloads = [
|
|
7057
|
-
envelope("a"),
|
|
7058
|
-
envelope("b"),
|
|
7059
|
-
envelope("c")
|
|
7060
|
-
];
|
|
7061
|
-
await ctx.enqueueTaskMany(task, payloads, {
|
|
7062
|
-
delay: { seconds: 30 },
|
|
7063
|
-
orderingKey: "batch"
|
|
7064
|
-
});
|
|
7065
|
-
strictEqual(queue.enqueued.length, 0);
|
|
7066
|
-
strictEqual(queue.enqueuedMany.length, 1);
|
|
7067
|
-
const { messages, options } = queue.enqueuedMany[0];
|
|
7068
|
-
ok(options?.delay instanceof Temporal.Duration);
|
|
7069
|
-
strictEqual(options.delay.total("second"), 30);
|
|
7070
|
-
strictEqual(options.orderingKey, "batch");
|
|
7071
|
-
deepStrictEqual((await Promise.all(messages.map(decodeEnvelope))).map((d) => d.title), [
|
|
7072
|
-
"a",
|
|
7073
|
-
"b",
|
|
7074
|
-
"c"
|
|
7075
|
-
]);
|
|
7076
|
-
for (const message of messages) strictEqual(message.orderingKey, "batch");
|
|
7077
|
-
});
|
|
7078
|
-
await t.step("with a single payload uses enqueue() instead of enqueueMany", async () => {
|
|
7079
|
-
const queue = new MockQueue({ supportsEnqueueMany: true });
|
|
7080
|
-
const federation = createFederation({
|
|
7081
|
-
...mockOptions(),
|
|
7082
|
-
queue: { task: queue }
|
|
7083
|
-
});
|
|
7084
|
-
const task = federation.defineTask("bulk-single", {
|
|
7085
|
-
schema: envelopeSchema,
|
|
7086
|
-
handler: () => {}
|
|
7087
|
-
});
|
|
7088
|
-
await federation.createContext(new URL("https://example.com/"), void 0).enqueueTaskMany(task, [envelope("solo")]);
|
|
7089
|
-
strictEqual(queue.enqueuedMany.length, 0);
|
|
7090
|
-
strictEqual(queue.enqueued.length, 1);
|
|
7091
|
-
});
|
|
7092
|
-
await t.step("falls back to concurrent single enqueues, preserving order and options", async () => {
|
|
7093
|
-
const queue = new RendezvousQueue(2);
|
|
7094
|
-
const federation = createFederation({
|
|
7095
|
-
...mockOptions(),
|
|
7096
|
-
queue: { task: queue }
|
|
7097
|
-
});
|
|
7098
|
-
const task = federation.defineTask("bulk-fallback", {
|
|
7099
|
-
schema: envelopeSchema,
|
|
7100
|
-
handler: () => {}
|
|
7101
|
-
});
|
|
7102
|
-
const ctx = federation.createContext(new URL("https://example.com/"), void 0);
|
|
7103
|
-
const payloads = [envelope("x"), envelope("y")];
|
|
7104
|
-
const pending = ctx.enqueueTaskMany(task, payloads, { orderingKey: "batch" });
|
|
7105
|
-
try {
|
|
7106
|
-
await withTimeout(queue.dispatched, 2e3, "fallback did not dispatch enqueues concurrently");
|
|
7107
|
-
strictEqual(queue.enqueued.length, 2);
|
|
7108
|
-
} finally {
|
|
7109
|
-
queue.release();
|
|
7110
|
-
await pending;
|
|
7111
|
-
}
|
|
7112
|
-
deepStrictEqual((await Promise.all(queue.enqueued.map(({ message }) => decodeEnvelope(message)))).map((d) => d.title), ["x", "y"]);
|
|
7113
|
-
for (const { message, options } of queue.enqueued) {
|
|
7114
|
-
strictEqual(message.orderingKey, "batch");
|
|
7115
|
-
strictEqual(options?.orderingKey, "batch");
|
|
7116
|
-
}
|
|
7117
|
-
});
|
|
7118
|
-
await t.step("fallback path aborts the whole batch when one payload is invalid", async () => {
|
|
7119
|
-
const queue = new MockQueue();
|
|
7120
|
-
const federation = createFederation({
|
|
7121
|
-
...mockOptions(),
|
|
7122
|
-
queue: { task: queue }
|
|
7123
|
-
});
|
|
7124
|
-
const task = federation.defineTask("bulk-typed", {
|
|
7125
|
-
schema: numberSchema,
|
|
7126
|
-
handler: () => {}
|
|
7127
|
-
});
|
|
7128
|
-
const ctx = federation.createContext(new URL("https://example.com/"), void 0);
|
|
7129
|
-
await rejects(() => ctx.enqueueTaskMany(task, [
|
|
7130
|
-
1,
|
|
7131
|
-
"two",
|
|
7132
|
-
3
|
|
7133
|
-
]), {
|
|
7134
|
-
name: "TypeError",
|
|
7135
|
-
message: /Task data failed schema validation/
|
|
7136
|
-
});
|
|
7137
|
-
strictEqual(queue.enqueued.length, 0);
|
|
7138
|
-
});
|
|
7139
|
-
});
|
|
7140
6959
|
//#endregion
|
|
7141
6960
|
export {};
|