@fedify/fedify 2.2.0-dev.606 → 2.2.0-dev.610
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-CELIfoB4.js → builder-Bkqx5fo0.js} +3 -3
- package/dist/compat/transformers.test.js +11 -11
- package/dist/{deno-BOsDbqu7.js → deno-CMcbjYDs.js} +1 -1
- package/dist/{docloader-BcEPmNUR.js → docloader-ORTT1bPi.js} +4 -3
- package/dist/federation/builder.test.js +3 -3
- package/dist/federation/handler.test.js +11 -11
- package/dist/federation/idempotency.test.js +11 -11
- package/dist/federation/inbox.test.js +2 -2
- package/dist/federation/middleware.test.js +11 -11
- package/dist/federation/mod.cjs +4 -4
- package/dist/federation/mod.js +4 -4
- package/dist/federation/send.test.js +5 -5
- package/dist/federation/webfinger.test.js +11 -11
- package/dist/{http-BVFyeQBR.cjs → http-BDf1pBmE.cjs} +18 -6
- package/dist/{http-Cfw-SN_z.js → http-By9CCocC.js} +19 -6
- package/dist/{http-tl74Wmu6.js → http-DLQMXj_1.js} +18 -6
- package/dist/{inbox-Z8XmcoSP.js → inbox-CTJeEur6.js} +1 -1
- package/dist/{key-CZwef9_o.js → key-OaS_196P.js} +1 -1
- package/dist/{kv-cache-BHtrhC_A.js → kv-cache-COnBmjEC.js} +3 -2
- package/dist/{kv-cache-CeTLZBik.cjs → kv-cache-DG491NbS.cjs} +3 -2
- package/dist/{ld-BqCzzscX.js → ld-5udwE1JY.js} +2 -2
- package/dist/{middleware-Dw4qprvi.js → middleware-3FSu2a2W.js} +5 -5
- package/dist/{middleware-lJSoi8yV.js → middleware-BzcyJjau.js} +4 -4
- package/dist/{middleware-D0hhdxhW.cjs → middleware-CFuio6Y_.cjs} +5 -5
- package/dist/{middleware-C35-lW8-.js → middleware-DRWIaDqh.js} +10 -10
- package/dist/{middleware-DwgaVw-g.js → middleware-HlNnBIDX.js} +11 -11
- package/dist/middleware-i-8IYJwY.cjs +12 -0
- package/dist/{mod-Cs2dYEwI.d.ts → mod-DCbh1JQ5.d.ts} +1 -0
- package/dist/{mod-Bx9jcLB8.d.cts → mod-jfnweK2w.d.cts} +1 -0
- package/dist/mod.cjs +4 -4
- package/dist/mod.d.cts +1 -1
- package/dist/mod.d.ts +1 -1
- package/dist/mod.js +4 -4
- package/dist/nodeinfo/handler.test.js +11 -11
- package/dist/{owner-Bx4dZ83W.js → owner-DuRG_QYg.js} +1 -1
- package/dist/{proof-Fy5Gl4Ca.js → proof-DFffIwhK.js} +2 -2
- package/dist/{proof-CeR_dKsx.js → proof-DG0_Hm4d.js} +2 -2
- package/dist/{proof-BYXeAOLF.cjs → proof-WJjJMjvC.cjs} +2 -2
- package/dist/{send-CGZHxQYq.js → send-CJAMZwWu.js} +2 -2
- package/dist/sig/http.test.js +66 -3
- package/dist/sig/key.test.js +2 -2
- package/dist/sig/ld.test.js +3 -3
- package/dist/sig/mod.cjs +2 -2
- package/dist/sig/mod.js +2 -2
- package/dist/sig/owner.test.js +3 -3
- package/dist/sig/proof.test.js +3 -3
- package/dist/utils/docloader.test.js +20 -4
- package/dist/utils/mod.cjs +2 -2
- package/dist/utils/mod.d.cts +1 -1
- package/dist/utils/mod.d.ts +1 -1
- package/dist/utils/mod.js +2 -2
- package/package.json +5 -5
- package/dist/middleware-BdQCsXP6.cjs +0 -12
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { deno_default } from "./deno-
|
|
6
|
+
import { deno_default } from "./deno-CMcbjYDs.js";
|
|
7
7
|
import { Router, RouterError } from "./router-D9eI0s4b.js";
|
|
8
|
-
import { InboxListenerSet } from "./inbox-
|
|
8
|
+
import { InboxListenerSet } from "./inbox-CTJeEur6.js";
|
|
9
9
|
import { getTypeId } from "@fedify/vocab";
|
|
10
10
|
import { getLogger } from "@logtape/logtape";
|
|
11
11
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -46,7 +46,7 @@ var FederationBuilderImpl = class {
|
|
|
46
46
|
this.collectionTypeIds = {};
|
|
47
47
|
}
|
|
48
48
|
async build(options) {
|
|
49
|
-
const { FederationImpl } = await import("./middleware-
|
|
49
|
+
const { FederationImpl } = await import("./middleware-HlNnBIDX.js");
|
|
50
50
|
const f = new FederationImpl(options);
|
|
51
51
|
const trailingSlashInsensitiveValue = f.router.trailingSlashInsensitive;
|
|
52
52
|
f.router = this.router.clone();
|
|
@@ -7,26 +7,26 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
7
7
|
import { assert } from "../assert-MZs1qjMx.js";
|
|
8
8
|
import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
10
|
-
import "../deno-
|
|
11
|
-
import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-
|
|
10
|
+
import "../deno-CMcbjYDs.js";
|
|
11
|
+
import { FederationImpl, actorDehydrator, autoIdAssigner } from "../middleware-DRWIaDqh.js";
|
|
12
12
|
import "../client-CoCIaTNO.js";
|
|
13
13
|
import "../router-D9eI0s4b.js";
|
|
14
14
|
import "../types-CPz01LGH.js";
|
|
15
15
|
import "../accept-D7sAxyNa.js";
|
|
16
|
-
import "../key-
|
|
17
|
-
import "../http-
|
|
18
|
-
import "../ld-
|
|
19
|
-
import "../owner-
|
|
20
|
-
import "../proof-
|
|
21
|
-
import "../docloader-
|
|
16
|
+
import "../key-OaS_196P.js";
|
|
17
|
+
import "../http-By9CCocC.js";
|
|
18
|
+
import "../ld-5udwE1JY.js";
|
|
19
|
+
import "../owner-DuRG_QYg.js";
|
|
20
|
+
import "../proof-DFffIwhK.js";
|
|
21
|
+
import "../docloader-ORTT1bPi.js";
|
|
22
22
|
import "../kv-cache-Bw2F2ABq.js";
|
|
23
|
-
import "../inbox-
|
|
24
|
-
import "../builder-
|
|
23
|
+
import "../inbox-CTJeEur6.js";
|
|
24
|
+
import "../builder-Bkqx5fo0.js";
|
|
25
25
|
import "../collection-CSzG2j1P.js";
|
|
26
26
|
import "../keycache-CpGWAUbj.js";
|
|
27
27
|
import "../negotiation-BlAuS_nr.js";
|
|
28
28
|
import "../retry-mqLf4b-R.js";
|
|
29
|
-
import "../send-
|
|
29
|
+
import "../send-CJAMZwWu.js";
|
|
30
30
|
import { test } from "@fedify/fixture";
|
|
31
31
|
import { Follow, Person } from "@fedify/vocab";
|
|
32
32
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { validateCryptoKey } from "./key-
|
|
7
|
-
import { doubleKnock } from "./http-
|
|
6
|
+
import { validateCryptoKey } from "./key-OaS_196P.js";
|
|
7
|
+
import { doubleKnock } from "./http-By9CCocC.js";
|
|
8
8
|
import { curry } from "es-toolkit";
|
|
9
9
|
import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, validatePublicUrl } from "@fedify/vocab-runtime";
|
|
10
10
|
import { getLogger } from "@logtape/logtape";
|
|
@@ -26,7 +26,7 @@ const logger = getLogger([
|
|
|
26
26
|
* @throws {TypeError} If the key is invalid or unsupported.
|
|
27
27
|
* @since 0.4.0
|
|
28
28
|
*/
|
|
29
|
-
function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAgent, specDeterminer, tracerProvider } = {}) {
|
|
29
|
+
function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, maxRedirection, userAgent, specDeterminer, tracerProvider } = {}) {
|
|
30
30
|
validateCryptoKey(identity.privateKey);
|
|
31
31
|
async function load(url, options) {
|
|
32
32
|
if (!allowPrivateAddress) try {
|
|
@@ -40,6 +40,7 @@ function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAge
|
|
|
40
40
|
}
|
|
41
41
|
const originalRequest = createActivityPubRequest(url, { userAgent });
|
|
42
42
|
const response = await doubleKnock(originalRequest, identity, {
|
|
43
|
+
maxRedirection,
|
|
43
44
|
specDeterminer,
|
|
44
45
|
log: curry(logRequest)(logger),
|
|
45
46
|
tracerProvider,
|
|
@@ -7,10 +7,10 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
7
7
|
import "../assert-MZs1qjMx.js";
|
|
8
8
|
import "../assert_instance_of-DHz7EHNU.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
10
|
-
import "../deno-
|
|
10
|
+
import "../deno-CMcbjYDs.js";
|
|
11
11
|
import "../router-D9eI0s4b.js";
|
|
12
|
-
import "../inbox-
|
|
13
|
-
import { createFederationBuilder } from "../builder-
|
|
12
|
+
import "../inbox-CTJeEur6.js";
|
|
13
|
+
import { createFederationBuilder } from "../builder-Bkqx5fo0.js";
|
|
14
14
|
import { assertExists } from "../std__assert-X-_kMxKM.js";
|
|
15
15
|
import "../assert_rejects-0h7I2Esa.js";
|
|
16
16
|
import { assertThrows } from "../assert_throws-rjdMBf31.js";
|
|
@@ -7,26 +7,26 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
7
7
|
import { assert } from "../assert-MZs1qjMx.js";
|
|
8
8
|
import "../assert_instance_of-DHz7EHNU.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
10
|
-
import "../deno-
|
|
11
|
-
import { createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-
|
|
10
|
+
import "../deno-CMcbjYDs.js";
|
|
11
|
+
import { createFederation, handleActor, handleCollection, handleCustomCollection, handleInbox, handleObject, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-DRWIaDqh.js";
|
|
12
12
|
import "../client-CoCIaTNO.js";
|
|
13
13
|
import "../router-D9eI0s4b.js";
|
|
14
14
|
import "../types-CPz01LGH.js";
|
|
15
15
|
import { parseAcceptSignature } from "../accept-D7sAxyNa.js";
|
|
16
|
-
import "../key-
|
|
17
|
-
import { signRequest } from "../http-
|
|
18
|
-
import "../ld-
|
|
19
|
-
import "../owner-
|
|
20
|
-
import "../proof-
|
|
21
|
-
import "../docloader-
|
|
16
|
+
import "../key-OaS_196P.js";
|
|
17
|
+
import { signRequest } from "../http-By9CCocC.js";
|
|
18
|
+
import "../ld-5udwE1JY.js";
|
|
19
|
+
import "../owner-DuRG_QYg.js";
|
|
20
|
+
import "../proof-DFffIwhK.js";
|
|
21
|
+
import "../docloader-ORTT1bPi.js";
|
|
22
22
|
import "../kv-cache-Bw2F2ABq.js";
|
|
23
|
-
import { InboxListenerSet } from "../inbox-
|
|
24
|
-
import "../builder-
|
|
23
|
+
import { InboxListenerSet } from "../inbox-CTJeEur6.js";
|
|
24
|
+
import "../builder-Bkqx5fo0.js";
|
|
25
25
|
import "../collection-CSzG2j1P.js";
|
|
26
26
|
import "../keycache-CpGWAUbj.js";
|
|
27
27
|
import "../negotiation-BlAuS_nr.js";
|
|
28
28
|
import "../retry-mqLf4b-R.js";
|
|
29
|
-
import "../send-
|
|
29
|
+
import "../send-CJAMZwWu.js";
|
|
30
30
|
import "../std__assert-X-_kMxKM.js";
|
|
31
31
|
import "../assert_rejects-0h7I2Esa.js";
|
|
32
32
|
import "../assert_throws-rjdMBf31.js";
|
|
@@ -7,26 +7,26 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
7
7
|
import "../assert-MZs1qjMx.js";
|
|
8
8
|
import "../assert_instance_of-DHz7EHNU.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
10
|
-
import "../deno-
|
|
11
|
-
import { createFederation } from "../middleware-
|
|
10
|
+
import "../deno-CMcbjYDs.js";
|
|
11
|
+
import { createFederation } from "../middleware-DRWIaDqh.js";
|
|
12
12
|
import "../client-CoCIaTNO.js";
|
|
13
13
|
import "../router-D9eI0s4b.js";
|
|
14
14
|
import "../types-CPz01LGH.js";
|
|
15
15
|
import "../accept-D7sAxyNa.js";
|
|
16
|
-
import "../key-
|
|
17
|
-
import "../http-
|
|
18
|
-
import "../ld-
|
|
19
|
-
import "../owner-
|
|
20
|
-
import { signObject } from "../proof-
|
|
21
|
-
import "../docloader-
|
|
16
|
+
import "../key-OaS_196P.js";
|
|
17
|
+
import "../http-By9CCocC.js";
|
|
18
|
+
import "../ld-5udwE1JY.js";
|
|
19
|
+
import "../owner-DuRG_QYg.js";
|
|
20
|
+
import { signObject } from "../proof-DFffIwhK.js";
|
|
21
|
+
import "../docloader-ORTT1bPi.js";
|
|
22
22
|
import "../kv-cache-Bw2F2ABq.js";
|
|
23
|
-
import "../inbox-
|
|
24
|
-
import "../builder-
|
|
23
|
+
import "../inbox-CTJeEur6.js";
|
|
24
|
+
import "../builder-Bkqx5fo0.js";
|
|
25
25
|
import "../collection-CSzG2j1P.js";
|
|
26
26
|
import "../keycache-CpGWAUbj.js";
|
|
27
27
|
import "../negotiation-BlAuS_nr.js";
|
|
28
28
|
import "../retry-mqLf4b-R.js";
|
|
29
|
-
import "../send-
|
|
29
|
+
import "../send-CJAMZwWu.js";
|
|
30
30
|
import "../std__assert-X-_kMxKM.js";
|
|
31
31
|
import "../assert_rejects-0h7I2Esa.js";
|
|
32
32
|
import "../assert_throws-rjdMBf31.js";
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
6
|
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
7
|
-
import "../deno-
|
|
8
|
-
import { InboxListenerSet } from "../inbox-
|
|
7
|
+
import "../deno-CMcbjYDs.js";
|
|
8
|
+
import { InboxListenerSet } from "../inbox-CTJeEur6.js";
|
|
9
9
|
import { assertThrows } from "../assert_throws-rjdMBf31.js";
|
|
10
10
|
import { test } from "@fedify/fixture";
|
|
11
11
|
import { Activity, Create, Invite, Offer, Update } from "@fedify/vocab";
|
|
@@ -8,26 +8,26 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
8
8
|
import { assert } from "../assert-MZs1qjMx.js";
|
|
9
9
|
import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
|
|
10
10
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
11
|
-
import "../deno-
|
|
12
|
-
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-
|
|
11
|
+
import "../deno-CMcbjYDs.js";
|
|
12
|
+
import { ContextImpl, FederationImpl, InboxContextImpl, KvSpecDeterminer, createFederation } from "../middleware-DRWIaDqh.js";
|
|
13
13
|
import "../client-CoCIaTNO.js";
|
|
14
14
|
import { RouterError } from "../router-D9eI0s4b.js";
|
|
15
15
|
import "../types-CPz01LGH.js";
|
|
16
16
|
import "../accept-D7sAxyNa.js";
|
|
17
|
-
import "../key-
|
|
18
|
-
import { signRequest, verifyRequest } from "../http-
|
|
19
|
-
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-
|
|
20
|
-
import { doesActorOwnKey } from "../owner-
|
|
21
|
-
import { signObject, verifyObject } from "../proof-
|
|
22
|
-
import { getAuthenticatedDocumentLoader } from "../docloader-
|
|
17
|
+
import "../key-OaS_196P.js";
|
|
18
|
+
import { signRequest, verifyRequest } from "../http-By9CCocC.js";
|
|
19
|
+
import { detachSignature, signJsonLd, verifyJsonLd } from "../ld-5udwE1JY.js";
|
|
20
|
+
import { doesActorOwnKey } from "../owner-DuRG_QYg.js";
|
|
21
|
+
import { signObject, verifyObject } from "../proof-DFffIwhK.js";
|
|
22
|
+
import { getAuthenticatedDocumentLoader } from "../docloader-ORTT1bPi.js";
|
|
23
23
|
import "../kv-cache-Bw2F2ABq.js";
|
|
24
|
-
import "../inbox-
|
|
25
|
-
import "../builder-
|
|
24
|
+
import "../inbox-CTJeEur6.js";
|
|
25
|
+
import "../builder-Bkqx5fo0.js";
|
|
26
26
|
import "../collection-CSzG2j1P.js";
|
|
27
27
|
import "../keycache-CpGWAUbj.js";
|
|
28
28
|
import "../negotiation-BlAuS_nr.js";
|
|
29
29
|
import "../retry-mqLf4b-R.js";
|
|
30
|
-
import "../send-
|
|
30
|
+
import "../send-CJAMZwWu.js";
|
|
31
31
|
import { assertStrictEquals } from "../std__assert-X-_kMxKM.js";
|
|
32
32
|
import { assertFalse, assertRejects } from "../assert_rejects-0h7I2Esa.js";
|
|
33
33
|
import { assertThrows } from "../assert_throws-rjdMBf31.js";
|
package/dist/federation/mod.cjs
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
4
4
|
|
|
5
5
|
require('../transformers-3g8GZwkZ.cjs');
|
|
6
|
-
require('../http-
|
|
7
|
-
const require_middleware = require('../middleware-
|
|
8
|
-
require('../proof-
|
|
6
|
+
require('../http-BDf1pBmE.cjs');
|
|
7
|
+
const require_middleware = require('../middleware-CFuio6Y_.cjs');
|
|
8
|
+
require('../proof-WJjJMjvC.cjs');
|
|
9
9
|
const require_federation = require('../federation-Bp3HI26G.cjs');
|
|
10
10
|
require('../types-Cd_hszr_.cjs');
|
|
11
|
-
require('../kv-cache-
|
|
11
|
+
require('../kv-cache-DG491NbS.cjs');
|
|
12
12
|
|
|
13
13
|
exports.InProcessMessageQueue = require_federation.InProcessMessageQueue;
|
|
14
14
|
exports.MemoryKvStore = require_federation.MemoryKvStore;
|
package/dist/federation/mod.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
|
|
5
5
|
import "../transformers-C3FLHUd6.js";
|
|
6
|
-
import "../http-
|
|
7
|
-
import { Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-
|
|
8
|
-
import "../proof-
|
|
6
|
+
import "../http-DLQMXj_1.js";
|
|
7
|
+
import { Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable } from "../middleware-3FSu2a2W.js";
|
|
8
|
+
import "../proof-DG0_Hm4d.js";
|
|
9
9
|
import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "../federation-DaMfqRm4.js";
|
|
10
10
|
import "../types-C93Ob9cU.js";
|
|
11
|
-
import "../kv-cache-
|
|
11
|
+
import "../kv-cache-COnBmjEC.js";
|
|
12
12
|
|
|
13
13
|
export { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue, Router, RouterError, SendActivityError, buildCollectionSynchronizationHeader, createExponentialBackoffPolicy, createFederation, createFederationBuilder, digest, handleWebFinger, respondWithObject, respondWithObjectIfAcceptable };
|
|
@@ -7,12 +7,12 @@ import { esm_default } from "../esm-nLm00z9V.js";
|
|
|
7
7
|
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
8
|
import { assert } from "../assert-MZs1qjMx.js";
|
|
9
9
|
import { assertInstanceOf } from "../assert_instance_of-DHz7EHNU.js";
|
|
10
|
-
import "../deno-
|
|
10
|
+
import "../deno-CMcbjYDs.js";
|
|
11
11
|
import "../accept-D7sAxyNa.js";
|
|
12
|
-
import "../key-
|
|
13
|
-
import { verifyRequest } from "../http-
|
|
14
|
-
import { doesActorOwnKey } from "../owner-
|
|
15
|
-
import { SendActivityError, extractInboxes, sendActivity } from "../send-
|
|
12
|
+
import "../key-OaS_196P.js";
|
|
13
|
+
import { verifyRequest } from "../http-By9CCocC.js";
|
|
14
|
+
import { doesActorOwnKey } from "../owner-DuRG_QYg.js";
|
|
15
|
+
import { SendActivityError, extractInboxes, sendActivity } from "../send-CJAMZwWu.js";
|
|
16
16
|
import "../std__assert-X-_kMxKM.js";
|
|
17
17
|
import { assertFalse, assertRejects } from "../assert_rejects-0h7I2Esa.js";
|
|
18
18
|
import "../assert_throws-rjdMBf31.js";
|
|
@@ -7,26 +7,26 @@ import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
|
7
7
|
import "../assert-MZs1qjMx.js";
|
|
8
8
|
import "../assert_instance_of-DHz7EHNU.js";
|
|
9
9
|
import { MemoryKvStore } from "../kv-QzKcOQgP.js";
|
|
10
|
-
import "../deno-
|
|
11
|
-
import { createFederation, handleWebFinger } from "../middleware-
|
|
10
|
+
import "../deno-CMcbjYDs.js";
|
|
11
|
+
import { createFederation, handleWebFinger } from "../middleware-DRWIaDqh.js";
|
|
12
12
|
import "../client-CoCIaTNO.js";
|
|
13
13
|
import "../router-D9eI0s4b.js";
|
|
14
14
|
import "../types-CPz01LGH.js";
|
|
15
15
|
import "../accept-D7sAxyNa.js";
|
|
16
|
-
import "../key-
|
|
17
|
-
import "../http-
|
|
18
|
-
import "../ld-
|
|
19
|
-
import "../owner-
|
|
20
|
-
import "../proof-
|
|
21
|
-
import "../docloader-
|
|
16
|
+
import "../key-OaS_196P.js";
|
|
17
|
+
import "../http-By9CCocC.js";
|
|
18
|
+
import "../ld-5udwE1JY.js";
|
|
19
|
+
import "../owner-DuRG_QYg.js";
|
|
20
|
+
import "../proof-DFffIwhK.js";
|
|
21
|
+
import "../docloader-ORTT1bPi.js";
|
|
22
22
|
import "../kv-cache-Bw2F2ABq.js";
|
|
23
|
-
import "../inbox-
|
|
24
|
-
import "../builder-
|
|
23
|
+
import "../inbox-CTJeEur6.js";
|
|
24
|
+
import "../builder-Bkqx5fo0.js";
|
|
25
25
|
import "../collection-CSzG2j1P.js";
|
|
26
26
|
import "../keycache-CpGWAUbj.js";
|
|
27
27
|
import "../negotiation-BlAuS_nr.js";
|
|
28
28
|
import "../retry-mqLf4b-R.js";
|
|
29
|
-
import "../send-
|
|
29
|
+
import "../send-CJAMZwWu.js";
|
|
30
30
|
import "../std__assert-X-_kMxKM.js";
|
|
31
31
|
import "../assert_rejects-0h7I2Esa.js";
|
|
32
32
|
import "../assert_throws-rjdMBf31.js";
|
|
@@ -8,13 +8,13 @@ const __fedify_vocab = require_chunk.__toESM(require("@fedify/vocab"));
|
|
|
8
8
|
const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
|
|
9
9
|
const byte_encodings_hex = require_chunk.__toESM(require("byte-encodings/hex"));
|
|
10
10
|
const structured_field_values = require_chunk.__toESM(require("structured-field-values"));
|
|
11
|
+
const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
|
|
11
12
|
const __opentelemetry_semantic_conventions = require_chunk.__toESM(require("@opentelemetry/semantic-conventions"));
|
|
12
13
|
const byte_encodings_base64 = require_chunk.__toESM(require("byte-encodings/base64"));
|
|
13
|
-
const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
|
|
14
14
|
|
|
15
15
|
//#region deno.json
|
|
16
16
|
var name = "@fedify/fedify";
|
|
17
|
-
var version = "2.2.0-dev.
|
|
17
|
+
var version = "2.2.0-dev.610+2d418352";
|
|
18
18
|
var license = "MIT";
|
|
19
19
|
var exports$1 = {
|
|
20
20
|
".": "./src/mod.ts",
|
|
@@ -610,6 +610,7 @@ async function fetchKeyInternal(keyId, cls, options = {}) {
|
|
|
610
610
|
|
|
611
611
|
//#endregion
|
|
612
612
|
//#region src/sig/http.ts
|
|
613
|
+
const DEFAULT_MAX_REDIRECTION = 20;
|
|
613
614
|
/**
|
|
614
615
|
* Signs a request using the given private key.
|
|
615
616
|
* @param request The request to sign.
|
|
@@ -1460,7 +1461,12 @@ function createRedirectRequest(request, location, body) {
|
|
|
1460
1461
|
* @since 1.6.0
|
|
1461
1462
|
*/
|
|
1462
1463
|
async function doubleKnock(request, identity, options = {}) {
|
|
1464
|
+
return await doubleKnockInternal(request, identity, options);
|
|
1465
|
+
}
|
|
1466
|
+
async function doubleKnockInternal(request, identity, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
1463
1467
|
const { specDeterminer, log, tracerProvider, signal } = options;
|
|
1468
|
+
const maximumRedirection = options.maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
1469
|
+
visited.add(request.url);
|
|
1464
1470
|
const origin = new URL(request.url).origin;
|
|
1465
1471
|
const firstTrySpec = specDeterminer == null ? "rfc9421" : await specDeterminer.determineSpec(origin);
|
|
1466
1472
|
const body = options.body !== void 0 ? options.body : request.method !== "GET" && request.method !== "HEAD" ? await request.clone().arrayBuffer() : null;
|
|
@@ -1475,11 +1481,14 @@ async function doubleKnock(request, identity, options = {}) {
|
|
|
1475
1481
|
signal
|
|
1476
1482
|
});
|
|
1477
1483
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1484
|
+
if (redirected >= maximumRedirection) throw new __fedify_vocab_runtime.FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1478
1485
|
const location = response.headers.get("Location");
|
|
1479
|
-
|
|
1486
|
+
const redirectRequest = createRedirectRequest(request, location, body);
|
|
1487
|
+
if (visited.has(redirectRequest.url)) throw new __fedify_vocab_runtime.FetchError(request.url, `Redirect loop detected: ${redirectRequest.url}`);
|
|
1488
|
+
return doubleKnockInternal(redirectRequest, identity, {
|
|
1480
1489
|
...options,
|
|
1481
1490
|
body
|
|
1482
|
-
});
|
|
1491
|
+
}, redirected + 1, visited);
|
|
1483
1492
|
} else if (response.status === 400 || response.status === 401 || response.status > 401) {
|
|
1484
1493
|
const logger = (0, __logtape_logtape.getLogger)([
|
|
1485
1494
|
"fedify",
|
|
@@ -1554,11 +1563,14 @@ async function doubleKnock(request, identity, options = {}) {
|
|
|
1554
1563
|
signal
|
|
1555
1564
|
});
|
|
1556
1565
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1566
|
+
if (redirected >= maximumRedirection) throw new __fedify_vocab_runtime.FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1557
1567
|
const location = response.headers.get("Location");
|
|
1558
|
-
|
|
1568
|
+
const redirectRequest = createRedirectRequest(request, location, body);
|
|
1569
|
+
if (visited.has(redirectRequest.url)) throw new __fedify_vocab_runtime.FetchError(request.url, `Redirect loop detected: ${redirectRequest.url}`);
|
|
1570
|
+
return doubleKnockInternal(redirectRequest, identity, {
|
|
1559
1571
|
...options,
|
|
1560
1572
|
body
|
|
1561
|
-
});
|
|
1573
|
+
}, redirected + 1, visited);
|
|
1562
1574
|
} else if (response.status !== 400 && response.status !== 401) await specDeterminer?.rememberSpec(origin, spec);
|
|
1563
1575
|
} else await specDeterminer?.rememberSpec(origin, firstTrySpec);
|
|
1564
1576
|
return response;
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { deno_default } from "./deno-
|
|
6
|
+
import { deno_default } from "./deno-CMcbjYDs.js";
|
|
7
7
|
import { fulfillAcceptSignature, parseAcceptSignature, validateAcceptSignature } from "./accept-D7sAxyNa.js";
|
|
8
|
-
import { fetchKeyDetailed, validateCryptoKey } from "./key-
|
|
8
|
+
import { fetchKeyDetailed, validateCryptoKey } from "./key-OaS_196P.js";
|
|
9
9
|
import { CryptographicKey } from "@fedify/vocab";
|
|
10
|
+
import { FetchError } from "@fedify/vocab-runtime";
|
|
10
11
|
import { getLogger } from "@logtape/logtape";
|
|
11
12
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
12
13
|
import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
|
|
@@ -15,6 +16,7 @@ import { encodeHex } from "byte-encodings/hex";
|
|
|
15
16
|
import { Item, decodeDict, encodeItem } from "structured-field-values";
|
|
16
17
|
|
|
17
18
|
//#region src/sig/http.ts
|
|
19
|
+
const DEFAULT_MAX_REDIRECTION = 20;
|
|
18
20
|
/**
|
|
19
21
|
* Signs a request using the given private key.
|
|
20
22
|
* @param request The request to sign.
|
|
@@ -865,7 +867,12 @@ function createRedirectRequest(request, location, body) {
|
|
|
865
867
|
* @since 1.6.0
|
|
866
868
|
*/
|
|
867
869
|
async function doubleKnock(request, identity, options = {}) {
|
|
870
|
+
return await doubleKnockInternal(request, identity, options);
|
|
871
|
+
}
|
|
872
|
+
async function doubleKnockInternal(request, identity, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
868
873
|
const { specDeterminer, log, tracerProvider, signal } = options;
|
|
874
|
+
const maximumRedirection = options.maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
875
|
+
visited.add(request.url);
|
|
869
876
|
const origin = new URL(request.url).origin;
|
|
870
877
|
const firstTrySpec = specDeterminer == null ? "rfc9421" : await specDeterminer.determineSpec(origin);
|
|
871
878
|
const body = options.body !== void 0 ? options.body : request.method !== "GET" && request.method !== "HEAD" ? await request.clone().arrayBuffer() : null;
|
|
@@ -880,11 +887,14 @@ async function doubleKnock(request, identity, options = {}) {
|
|
|
880
887
|
signal
|
|
881
888
|
});
|
|
882
889
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
890
|
+
if (redirected >= maximumRedirection) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
883
891
|
const location = response.headers.get("Location");
|
|
884
|
-
|
|
892
|
+
const redirectRequest = createRedirectRequest(request, location, body);
|
|
893
|
+
if (visited.has(redirectRequest.url)) throw new FetchError(request.url, `Redirect loop detected: ${redirectRequest.url}`);
|
|
894
|
+
return doubleKnockInternal(redirectRequest, identity, {
|
|
885
895
|
...options,
|
|
886
896
|
body
|
|
887
|
-
});
|
|
897
|
+
}, redirected + 1, visited);
|
|
888
898
|
} else if (response.status === 400 || response.status === 401 || response.status > 401) {
|
|
889
899
|
const logger = getLogger([
|
|
890
900
|
"fedify",
|
|
@@ -959,11 +969,14 @@ async function doubleKnock(request, identity, options = {}) {
|
|
|
959
969
|
signal
|
|
960
970
|
});
|
|
961
971
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
972
|
+
if (redirected >= maximumRedirection) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
962
973
|
const location = response.headers.get("Location");
|
|
963
|
-
|
|
974
|
+
const redirectRequest = createRedirectRequest(request, location, body);
|
|
975
|
+
if (visited.has(redirectRequest.url)) throw new FetchError(request.url, `Redirect loop detected: ${redirectRequest.url}`);
|
|
976
|
+
return doubleKnockInternal(redirectRequest, identity, {
|
|
964
977
|
...options,
|
|
965
978
|
body
|
|
966
|
-
});
|
|
979
|
+
}, redirected + 1, visited);
|
|
967
980
|
} else if (response.status !== 400 && response.status !== 401) await specDeterminer?.rememberSpec(origin, spec);
|
|
968
981
|
} else await specDeterminer?.rememberSpec(origin, firstTrySpec);
|
|
969
982
|
return response;
|
|
@@ -7,13 +7,13 @@ import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
|
7
7
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
8
8
|
import { encodeHex } from "byte-encodings/hex";
|
|
9
9
|
import { Item, decodeDict, encodeDict, encodeItem } from "structured-field-values";
|
|
10
|
+
import { FetchError, getDocumentLoader } from "@fedify/vocab-runtime";
|
|
10
11
|
import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from "@opentelemetry/semantic-conventions";
|
|
11
12
|
import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
|
|
12
|
-
import { FetchError, getDocumentLoader } from "@fedify/vocab-runtime";
|
|
13
13
|
|
|
14
14
|
//#region deno.json
|
|
15
15
|
var name = "@fedify/fedify";
|
|
16
|
-
var version = "2.2.0-dev.
|
|
16
|
+
var version = "2.2.0-dev.610+2d418352";
|
|
17
17
|
var license = "MIT";
|
|
18
18
|
var exports = {
|
|
19
19
|
".": "./src/mod.ts",
|
|
@@ -609,6 +609,7 @@ async function fetchKeyInternal(keyId, cls, options = {}) {
|
|
|
609
609
|
|
|
610
610
|
//#endregion
|
|
611
611
|
//#region src/sig/http.ts
|
|
612
|
+
const DEFAULT_MAX_REDIRECTION = 20;
|
|
612
613
|
/**
|
|
613
614
|
* Signs a request using the given private key.
|
|
614
615
|
* @param request The request to sign.
|
|
@@ -1459,7 +1460,12 @@ function createRedirectRequest(request, location, body) {
|
|
|
1459
1460
|
* @since 1.6.0
|
|
1460
1461
|
*/
|
|
1461
1462
|
async function doubleKnock(request, identity, options = {}) {
|
|
1463
|
+
return await doubleKnockInternal(request, identity, options);
|
|
1464
|
+
}
|
|
1465
|
+
async function doubleKnockInternal(request, identity, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
1462
1466
|
const { specDeterminer, log, tracerProvider, signal } = options;
|
|
1467
|
+
const maximumRedirection = options.maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
1468
|
+
visited.add(request.url);
|
|
1463
1469
|
const origin = new URL(request.url).origin;
|
|
1464
1470
|
const firstTrySpec = specDeterminer == null ? "rfc9421" : await specDeterminer.determineSpec(origin);
|
|
1465
1471
|
const body = options.body !== void 0 ? options.body : request.method !== "GET" && request.method !== "HEAD" ? await request.clone().arrayBuffer() : null;
|
|
@@ -1474,11 +1480,14 @@ async function doubleKnock(request, identity, options = {}) {
|
|
|
1474
1480
|
signal
|
|
1475
1481
|
});
|
|
1476
1482
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1483
|
+
if (redirected >= maximumRedirection) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1477
1484
|
const location = response.headers.get("Location");
|
|
1478
|
-
|
|
1485
|
+
const redirectRequest = createRedirectRequest(request, location, body);
|
|
1486
|
+
if (visited.has(redirectRequest.url)) throw new FetchError(request.url, `Redirect loop detected: ${redirectRequest.url}`);
|
|
1487
|
+
return doubleKnockInternal(redirectRequest, identity, {
|
|
1479
1488
|
...options,
|
|
1480
1489
|
body
|
|
1481
|
-
});
|
|
1490
|
+
}, redirected + 1, visited);
|
|
1482
1491
|
} else if (response.status === 400 || response.status === 401 || response.status > 401) {
|
|
1483
1492
|
const logger = getLogger([
|
|
1484
1493
|
"fedify",
|
|
@@ -1553,11 +1562,14 @@ async function doubleKnock(request, identity, options = {}) {
|
|
|
1553
1562
|
signal
|
|
1554
1563
|
});
|
|
1555
1564
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
1565
|
+
if (redirected >= maximumRedirection) throw new FetchError(request.url, `Too many redirections (${redirected + 1})`);
|
|
1556
1566
|
const location = response.headers.get("Location");
|
|
1557
|
-
|
|
1567
|
+
const redirectRequest = createRedirectRequest(request, location, body);
|
|
1568
|
+
if (visited.has(redirectRequest.url)) throw new FetchError(request.url, `Redirect loop detected: ${redirectRequest.url}`);
|
|
1569
|
+
return doubleKnockInternal(redirectRequest, identity, {
|
|
1558
1570
|
...options,
|
|
1559
1571
|
body
|
|
1560
|
-
});
|
|
1572
|
+
}, redirected + 1, visited);
|
|
1561
1573
|
} else if (response.status !== 400 && response.status !== 401) await specDeterminer?.rememberSpec(origin, spec);
|
|
1562
1574
|
} else await specDeterminer?.rememberSpec(origin, firstTrySpec);
|
|
1563
1575
|
return response;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { deno_default } from "./deno-
|
|
6
|
+
import { deno_default } from "./deno-CMcbjYDs.js";
|
|
7
7
|
import { Activity, getTypeId } from "@fedify/vocab";
|
|
8
8
|
import { getLogger } from "@logtape/logtape";
|
|
9
9
|
import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { deno_default } from "./deno-
|
|
6
|
+
import { deno_default } from "./deno-CMcbjYDs.js";
|
|
7
7
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
8
8
|
import { FetchError, getDocumentLoader } from "@fedify/vocab-runtime";
|
|
9
9
|
import { getLogger } from "@logtape/logtape";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
|
|
5
|
-
import { doubleKnock, validateCryptoKey } from "./http-
|
|
5
|
+
import { doubleKnock, validateCryptoKey } from "./http-DLQMXj_1.js";
|
|
6
6
|
import { getLogger } from "@logtape/logtape";
|
|
7
7
|
import { curry } from "es-toolkit";
|
|
8
8
|
import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
|
|
@@ -24,7 +24,7 @@ const logger$1 = getLogger([
|
|
|
24
24
|
* @throws {TypeError} If the key is invalid or unsupported.
|
|
25
25
|
* @since 0.4.0
|
|
26
26
|
*/
|
|
27
|
-
function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAgent, specDeterminer, tracerProvider } = {}) {
|
|
27
|
+
function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, maxRedirection, userAgent, specDeterminer, tracerProvider } = {}) {
|
|
28
28
|
validateCryptoKey(identity.privateKey);
|
|
29
29
|
async function load(url, options) {
|
|
30
30
|
if (!allowPrivateAddress) try {
|
|
@@ -38,6 +38,7 @@ function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAge
|
|
|
38
38
|
}
|
|
39
39
|
const originalRequest = createActivityPubRequest(url, { userAgent });
|
|
40
40
|
const response = await doubleKnock(originalRequest, identity, {
|
|
41
|
+
maxRedirection,
|
|
41
42
|
specDeterminer,
|
|
42
43
|
log: curry(logRequest)(logger$1),
|
|
43
44
|
tracerProvider,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
4
4
|
|
|
5
5
|
const require_chunk = require('./chunk-CGaQZ11T.cjs');
|
|
6
|
-
const require_http = require('./http-
|
|
6
|
+
const require_http = require('./http-BDf1pBmE.cjs');
|
|
7
7
|
const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
|
|
8
8
|
const es_toolkit = require_chunk.__toESM(require("es-toolkit"));
|
|
9
9
|
const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
|
|
@@ -25,7 +25,7 @@ const logger$1 = (0, __logtape_logtape.getLogger)([
|
|
|
25
25
|
* @throws {TypeError} If the key is invalid or unsupported.
|
|
26
26
|
* @since 0.4.0
|
|
27
27
|
*/
|
|
28
|
-
function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAgent, specDeterminer, tracerProvider } = {}) {
|
|
28
|
+
function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, maxRedirection, userAgent, specDeterminer, tracerProvider } = {}) {
|
|
29
29
|
require_http.validateCryptoKey(identity.privateKey);
|
|
30
30
|
async function load(url, options) {
|
|
31
31
|
if (!allowPrivateAddress) try {
|
|
@@ -39,6 +39,7 @@ function getAuthenticatedDocumentLoader(identity, { allowPrivateAddress, userAge
|
|
|
39
39
|
}
|
|
40
40
|
const originalRequest = (0, __fedify_vocab_runtime.createActivityPubRequest)(url, { userAgent });
|
|
41
41
|
const response = await require_http.doubleKnock(originalRequest, identity, {
|
|
42
|
+
maxRedirection,
|
|
42
43
|
specDeterminer,
|
|
43
44
|
log: (0, es_toolkit.curry)(__fedify_vocab_runtime.logRequest)(logger$1),
|
|
44
45
|
tracerProvider,
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import { deno_default } from "./deno-
|
|
7
|
-
import { fetchKey, validateCryptoKey } from "./key-
|
|
6
|
+
import { deno_default } from "./deno-CMcbjYDs.js";
|
|
7
|
+
import { fetchKey, validateCryptoKey } from "./key-OaS_196P.js";
|
|
8
8
|
import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
|
|
9
9
|
import { getDocumentLoader } from "@fedify/vocab-runtime";
|
|
10
10
|
import { getLogger } from "@logtape/logtape";
|