@fedify/fedify 2.0.0-dev.1604 → 2.0.0-dev.161
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/LICENSE +1 -1
- package/README.md +66 -30
- package/dist/{assert_rejects-7UF4R_Qs.js → assert_rejects-Ce45JcFg.js} +1 -1
- package/dist/{assert_is_error-B035L3om.js → assert_throws-BNXdRGWP.js} +31 -1
- package/dist/{builder-D9zidAqR.js → builder-CulJ6Oa9.js} +15 -8
- package/dist/chunk-DqRYRqnO.cjs +34 -0
- package/dist/client-94iWEfQa.d.cts +222 -0
- package/dist/{client-bgSdkFa2.d.ts → client-BivSNrEg.d.ts} +1 -1
- package/dist/{client-Bsj0vQPr.js → client-CgMTXmAD.js} +1 -1
- package/dist/compat/mod.cjs +10 -0
- package/dist/compat/mod.d.cts +7 -0
- package/dist/compat/mod.d.ts +6 -12
- package/dist/compat/mod.js +5 -5
- package/dist/compat/transformers.test.js +21 -19
- package/dist/compat-DmDDELst.cjs +4 -0
- package/dist/compat-nxUqe4Z-.js +4 -0
- package/dist/context-Bns6uTJq.js +109 -0
- package/dist/{context-CDSZdQHD.d.ts → context-CYZ2i00R.d.ts} +321 -129
- package/dist/context-D2MrtLch.d.cts +2447 -0
- package/dist/deno-DIwNGswC.js +117 -0
- package/dist/{testing-CdBSI4xF.js → dist-B5f6a8Tt.js} +90 -111
- package/dist/{authdocloader-CzpPQC01.js → docloader-D2992pGD.js} +17 -8
- package/dist/{esm-CXF1VoeR.js → esm-DGl7uK1r.js} +32 -17
- package/dist/federation/builder.test.js +9 -9
- package/dist/federation/collection.test.js +3 -6
- package/dist/federation/handler.test.js +113 -145
- package/dist/federation/idempotency.test.js +202 -0
- package/dist/federation/inbox.test.js +5 -6
- package/dist/federation/keycache.test.js +4 -5
- package/dist/federation/kv.test.js +59 -7
- package/dist/federation/middleware.test.js +306 -111
- package/dist/federation/mod.cjs +25 -0
- package/dist/federation/mod.d.cts +7 -0
- package/dist/federation/mod.d.ts +7 -13
- package/dist/federation/mod.js +11 -16
- package/dist/federation/mq.test.js +7 -8
- package/dist/federation/negotiation.test.js +25 -0
- package/dist/federation/retry.test.js +2 -4
- package/dist/federation/router.test.js +4 -6
- package/dist/federation/send.test.js +53 -13
- package/dist/{webfinger/handler.test.js → federation/webfinger.test.js} +25 -23
- package/dist/federation-B431K2gm.cjs +266 -0
- package/dist/{federation-CMX7WzeL.js → federation-BbZwNNWj.js} +31 -9
- package/dist/{http-B_pxY5of.js → http-3fEbsHa0.js} +374 -14
- package/dist/{http-CSYNybkH.js → http-BV9SKFK0.js} +3 -2
- package/dist/http-C06iL_Qv.cjs +1222 -0
- package/dist/http-ClB3pLcL.d.cts +253 -0
- package/dist/{http-DqSNLFNY.d.ts → http-DLBDPal9.d.ts} +2 -2
- package/dist/{inbox-DoJlwIE4.js → inbox-DCV2fS3F.js} +25 -7
- package/dist/{key-BOzqiGbl.js → key-Bdc11xlQ.js} +3 -2
- package/dist/{keycache--NYDYifd.js → keycache-DRxpZ5r9.js} +1 -1
- package/dist/{keys-MacD9GP6.js → keys-ZbcByPg9.js} +2 -1
- package/dist/{kv-C7sopW2E.d.ts → kv-CtOmTRNc.d.ts} +30 -1
- package/dist/kv-D8q9fLkA.d.cts +110 -0
- package/dist/{kv-CRZrzyXm.js → kv-QzKcOQgP.js} +22 -0
- package/dist/kv-cache-B4-ASVht.js +122 -0
- package/dist/kv-cache-BEeqyGER.js +107 -0
- package/dist/kv-cache-CQjPwWHu.cjs +134 -0
- package/dist/{ld-D9oTBLrs.js → ld-C7be04RF.js} +4 -2
- package/dist/middleware-9RlUwILK.js +12 -0
- package/dist/middleware-B_mOdzoC.cjs +4242 -0
- package/dist/{middleware-CgNm3XOJ.js → middleware-C3xnTI2Z.js} +230 -327
- package/dist/{middleware-C0w2M0tb.js → middleware-C4_a2DNI.js} +272 -271
- package/dist/middleware-C9iGBAP1.cjs +12 -0
- package/dist/middleware-CYlahvpt.js +26 -0
- package/dist/mod-BrS8tiad.d.cts +266 -0
- package/dist/mod-C81L6_lQ.d.cts +1 -0
- package/dist/mod-CJgbdSqb.d.ts +109 -0
- package/dist/mod-CNNTHyBC.d.cts +80 -0
- package/dist/mod-CS-MS7gZ.d.cts +62 -0
- package/dist/{mod-RI3-KvUI.d.ts → mod-D_cmv2il.d.ts} +4 -4
- package/dist/mod-DcPRcifg.d.cts +107 -0
- package/dist/mod-DqFSzJA0.d.ts +64 -0
- package/dist/{mod-Drmz72EK.d.ts → mod-jOa7W503.d.ts} +3 -3
- package/dist/mod.cjs +55 -0
- package/dist/mod.d.cts +11 -0
- package/dist/mod.d.ts +11 -17
- package/dist/mod.js +15 -21
- package/dist/negotiation-5NPJL6zp.js +71 -0
- package/dist/nodeinfo/client.test.js +5 -8
- package/dist/nodeinfo/handler.test.js +23 -22
- package/dist/nodeinfo/mod.cjs +10 -0
- package/dist/nodeinfo/mod.d.cts +3 -0
- package/dist/nodeinfo/mod.d.ts +2 -4
- package/dist/nodeinfo/mod.js +5 -6
- package/dist/nodeinfo/types.test.js +4 -7
- package/dist/nodeinfo-BlLsRSiT.js +4 -0
- package/dist/nodeinfo-DuMYTpbZ.cjs +4 -0
- package/dist/otel/exporter.test.js +899 -0
- package/dist/otel/mod.cjs +262 -0
- package/dist/otel/mod.d.cts +230 -0
- package/dist/otel/mod.d.ts +232 -0
- package/dist/otel/mod.js +261 -0
- package/dist/{owner-CQPnQVtf.d.ts → owner-BgI8C-VY.d.ts} +2 -3
- package/dist/{owner-gB-pDKA-.js → owner-Bs5Y5twE.js} +45 -8
- package/dist/owner-C-zfmVAD.d.cts +66 -0
- package/dist/{proof-VPikK_0V.js → proof-C-751PeN.js} +50 -14
- package/dist/{proof-CScVkkIT.js → proof-CFwktc0B.js} +3 -2
- package/dist/proof-CaA7ysDp.cjs +709 -0
- package/dist/router-D9eI0s4b.js +118 -0
- package/dist/{send-flZ7H10-.js → send-C288Vw8b.js} +9 -4
- package/dist/sig/http.test.js +9 -11
- package/dist/sig/key.test.js +7 -9
- package/dist/sig/ld.test.js +8 -10
- package/dist/sig/mod.cjs +26 -0
- package/dist/sig/mod.d.cts +4 -0
- package/dist/sig/mod.d.ts +3 -7
- package/dist/sig/mod.js +6 -10
- package/dist/sig/owner.test.js +31 -10
- package/dist/sig/proof.test.js +11 -12
- package/dist/sig-CwuONEzF.js +4 -0
- package/dist/sig-DeXX2xnj.cjs +4 -0
- package/dist/testing/mod.d.ts +179 -6918
- package/dist/testing/mod.js +4 -4
- package/dist/transformers-BjBg6Lag.cjs +116 -0
- package/dist/{transformers-Dna8Fg7k.js → transformers-N_ip_y4P.js} +5 -5
- package/dist/types-Q-qkJXBV.cjs +315 -0
- package/dist/{types-Vo0qKhN7.js → types-hKTi53FO.js} +4 -4
- package/dist/{runtime/authdocloader.test.js → utils/docloader.test.js} +11 -13
- package/dist/utils/kv-cache.test.js +211 -0
- package/dist/utils/mod.cjs +10 -0
- package/dist/utils/mod.d.cts +4 -0
- package/dist/utils/mod.d.ts +6 -0
- package/dist/utils/mod.js +9 -0
- package/dist/utils-Db0ZmjcD.cjs +4 -0
- package/dist/utils-Wranxuoe.js +4 -0
- package/package.json +69 -55
- package/dist/actor-BC3XtGTj.js +0 -37312
- package/dist/actor-C22bXuuC.d.ts +0 -130
- package/dist/actor-CmRlosMl.js +0 -146
- package/dist/assert_throws-53_pKeP3.js +0 -39
- package/dist/authdocloader-D-DICGXT.js +0 -52
- package/dist/compat-Bb5myD13.js +0 -4
- package/dist/denokv-jZ0Z2h0M.js +0 -57
- package/dist/docloader-CkASOfZ5.js +0 -4615
- package/dist/docloader-CxWcuWqQ.d.ts +0 -221
- package/dist/fixtures/activitypub.academy/users/brauca_darradiul.json +0 -83
- package/dist/fixtures/example.com/announce.json +0 -6
- package/dist/fixtures/example.com/collection.json +0 -19
- package/dist/fixtures/example.com/create.json +0 -6
- package/dist/fixtures/example.com/cross-origin-actor.json +0 -6
- package/dist/fixtures/example.com/hong-gildong.json +0 -11
- package/dist/fixtures/example.com/invite.json +0 -7
- package/dist/fixtures/example.com/key.json +0 -7
- package/dist/fixtures/example.com/key2.json +0 -6
- package/dist/fixtures/example.com/object.json +0 -6
- package/dist/fixtures/example.com/orderedcollectionpage.json +0 -24
- package/dist/fixtures/example.com/paged/a.json +0 -13
- package/dist/fixtures/example.com/paged/b.json +0 -16
- package/dist/fixtures/example.com/paged-collection.json +0 -6
- package/dist/fixtures/example.com/person.json +0 -22
- package/dist/fixtures/example.com/person2.json +0 -40
- package/dist/fixtures/example.com/test.json +0 -5
- package/dist/fixtures/example.com/users/handle.json +0 -16
- package/dist/fixtures/example.com/wrong-type.json +0 -3
- package/dist/fixtures/oeee.cafe/ap/users/3609fd4e-d51d-4db8-9f04-4189815864dd.json +0 -24
- package/dist/fixtures/remote.domain/users/bob.json +0 -20
- package/dist/fixtures/server.example/users/alice.json +0 -20
- package/dist/fixtures/w3id.org/identity/v1.json +0 -152
- package/dist/fixtures/w3id.org/security/data-integrity/v1.json +0 -74
- package/dist/fixtures/w3id.org/security/multikey/v1.json +0 -35
- package/dist/fixtures/w3id.org/security/v1.json +0 -50
- package/dist/fixtures/wizard.casa/users/hongminhee.json +0 -69
- package/dist/fixtures/www.w3.org/ns/activitystreams.json +0 -379
- package/dist/fixtures/www.w3.org/ns/did/v1.json +0 -58
- package/dist/key-Bif4eMj7.js +0 -260
- package/dist/key-BteSu1lX.js +0 -10
- package/dist/key-DWWqeyaq.js +0 -10
- package/dist/lookup-Cz9VSYxw.js +0 -131
- package/dist/lookup-DuzrBbTj.js +0 -322
- package/dist/middleware-CNfiKLIZ.js +0 -25
- package/dist/middleware-CnvU63kV.js +0 -17
- package/dist/mod-Cxt4Kpf6.d.ts +0 -291
- package/dist/mod-DBzN0aCM.d.ts +0 -115
- package/dist/mod-TFoH2Ql8.d.ts +0 -104
- package/dist/mod-g0xFzAP9.d.ts +0 -2
- package/dist/mq-CRGm1e_F.d.ts +0 -143
- package/dist/nodeinfo-CyEbLjHs.js +0 -4
- package/dist/runtime/docloader.test.js +0 -522
- package/dist/runtime/key.test.js +0 -103
- package/dist/runtime/langstr.test.js +0 -39
- package/dist/runtime/mod.d.ts +0 -8
- package/dist/runtime/mod.js +0 -13
- package/dist/runtime/multibase/multibase.test.js +0 -358
- package/dist/runtime/url.test.d.ts +0 -3
- package/dist/runtime/url.test.js +0 -45
- package/dist/runtime-BSkOVUWM.js +0 -4
- package/dist/sig-BXJO--F9.js +0 -4
- package/dist/src/vocab/accept.yaml +0 -15
- package/dist/src/vocab/activity.yaml +0 -98
- package/dist/src/vocab/add.yaml +0 -16
- package/dist/src/vocab/announce.yaml +0 -30
- package/dist/src/vocab/application.yaml +0 -324
- package/dist/src/vocab/arrive.yaml +0 -15
- package/dist/src/vocab/article.yaml +0 -46
- package/dist/src/vocab/audio.yaml +0 -11
- package/dist/src/vocab/block.yaml +0 -16
- package/dist/src/vocab/chatmessage.yaml +0 -50
- package/dist/src/vocab/collection.yaml +0 -154
- package/dist/src/vocab/collectionpage.yaml +0 -55
- package/dist/src/vocab/create.yaml +0 -28
- package/dist/src/vocab/dataintegrityproof.yaml +0 -56
- package/dist/src/vocab/delete.yaml +0 -27
- package/dist/src/vocab/didservice.yaml +0 -22
- package/dist/src/vocab/dislike.yaml +0 -14
- package/dist/src/vocab/document.yaml +0 -31
- package/dist/src/vocab/emoji.yaml +0 -12
- package/dist/src/vocab/emojireact.yaml +0 -17
- package/dist/src/vocab/endpoints.yaml +0 -85
- package/dist/src/vocab/event.yaml +0 -11
- package/dist/src/vocab/export.yaml +0 -9
- package/dist/src/vocab/flag.yaml +0 -15
- package/dist/src/vocab/follow.yaml +0 -19
- package/dist/src/vocab/group.yaml +0 -324
- package/dist/src/vocab/hashtag.yaml +0 -14
- package/dist/src/vocab/ignore.yaml +0 -14
- package/dist/src/vocab/image.yaml +0 -9
- package/dist/src/vocab/intransitiveactivity.yaml +0 -15
- package/dist/src/vocab/invite.yaml +0 -14
- package/dist/src/vocab/join.yaml +0 -14
- package/dist/src/vocab/key.yaml +0 -28
- package/dist/src/vocab/leave.yaml +0 -14
- package/dist/src/vocab/like.yaml +0 -16
- package/dist/src/vocab/link.yaml +0 -101
- package/dist/src/vocab/listen.yaml +0 -12
- package/dist/src/vocab/mention.yaml +0 -9
- package/dist/src/vocab/move.yaml +0 -15
- package/dist/src/vocab/multikey.yaml +0 -36
- package/dist/src/vocab/note.yaml +0 -48
- package/dist/src/vocab/object.yaml +0 -404
- package/dist/src/vocab/offer.yaml +0 -15
- package/dist/src/vocab/orderedcollection.yaml +0 -39
- package/dist/src/vocab/orderedcollectionpage.yaml +0 -50
- package/dist/src/vocab/organization.yaml +0 -324
- package/dist/src/vocab/page.yaml +0 -11
- package/dist/src/vocab/person.yaml +0 -324
- package/dist/src/vocab/place.yaml +0 -75
- package/dist/src/vocab/profile.yaml +0 -26
- package/dist/src/vocab/propertyvalue.yaml +0 -32
- package/dist/src/vocab/question.yaml +0 -103
- package/dist/src/vocab/read.yaml +0 -13
- package/dist/src/vocab/reject.yaml +0 -14
- package/dist/src/vocab/relationship.yaml +0 -52
- package/dist/src/vocab/remove.yaml +0 -14
- package/dist/src/vocab/service.yaml +0 -324
- package/dist/src/vocab/source.yaml +0 -26
- package/dist/src/vocab/tentativeaccept.yaml +0 -14
- package/dist/src/vocab/tentativereject.yaml +0 -14
- package/dist/src/vocab/tombstone.yaml +0 -24
- package/dist/src/vocab/travel.yaml +0 -16
- package/dist/src/vocab/undo.yaml +0 -26
- package/dist/src/vocab/update.yaml +0 -58
- package/dist/src/vocab/video.yaml +0 -11
- package/dist/src/vocab/view.yaml +0 -13
- package/dist/testing/docloader.test.js +0 -24
- package/dist/type-CAteiET0.js +0 -42007
- package/dist/vocab/actor.test.d.ts +0 -3
- package/dist/vocab/actor.test.js +0 -5965
- package/dist/vocab/lookup.test.d.ts +0 -3
- package/dist/vocab/lookup.test.js +0 -206
- package/dist/vocab/mod.d.ts +0 -8
- package/dist/vocab/mod.js +0 -10
- package/dist/vocab/schema.yaml +0 -247
- package/dist/vocab/type.test.d.ts +0 -3
- package/dist/vocab/type.test.js +0 -25
- package/dist/vocab/vocab.test.d.ts +0 -3
- package/dist/vocab/vocab.test.js +0 -3363
- package/dist/vocab-89qErSc9.js +0 -246
- package/dist/vocab-SOE1ifCr.d.ts +0 -14634
- package/dist/webfinger/handler.test.d.ts +0 -3
- package/dist/webfinger/lookup.test.d.ts +0 -3
- package/dist/webfinger/lookup.test.js +0 -195
- package/dist/webfinger/mod.d.ts +0 -6
- package/dist/webfinger/mod.js +0 -9
- package/dist/webfinger-C3GIyXIg.js +0 -4
- package/dist/x/cfworkers.d.ts +0 -61
- package/dist/x/cfworkers.js +0 -98
- package/dist/x/cfworkers.test.d.ts +0 -3
- package/dist/x/cfworkers.test.js +0 -179
- package/dist/x/hono.d.ts +0 -56
- package/dist/x/hono.js +0 -60
- package/dist/x/sveltekit.d.ts +0 -48
- package/dist/x/sveltekit.js +0 -68
- /package/dist/{runtime/authdocloader.test.d.ts → federation/idempotency.test.d.ts} +0 -0
- /package/dist/{runtime/docloader.test.d.ts → federation/negotiation.test.d.ts} +0 -0
- /package/dist/{runtime/key.test.d.ts → federation/webfinger.test.d.ts} +0 -0
- /package/dist/{mod-1pDWKvUL.d.ts → mod-1E3W847c.d.ts} +0 -0
- /package/dist/{runtime/langstr.test.d.ts → otel/exporter.test.d.ts} +0 -0
- /package/dist/{retry-CfF8Gn4d.js → retry-D4GJ670a.js} +0 -0
- /package/dist/{types-BSuWJsOm.js → types-BEdCLHqP.js} +0 -0
- /package/dist/{testing → utils}/docloader.test.d.ts +0 -0
- /package/dist/{runtime/multibase/multibase.test.d.ts → utils/kv-cache.test.d.ts} +0 -0
package/dist/testing/mod.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import "../
|
|
7
|
-
import "../
|
|
8
|
-
import { createInboxContext, createRequestContext
|
|
6
|
+
import { testDefinitions } from "../dist-B5f6a8Tt.js";
|
|
7
|
+
import "../router-D9eI0s4b.js";
|
|
8
|
+
import { createInboxContext, createRequestContext } from "../context-Bns6uTJq.js";
|
|
9
9
|
|
|
10
|
-
export { createInboxContext, createRequestContext,
|
|
10
|
+
export { createInboxContext, createRequestContext, testDefinitions };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
|
|
2
|
+
const { Temporal } = require("@js-temporal/polyfill");
|
|
3
|
+
const { URLPattern } = require("urlpattern-polyfill");
|
|
4
|
+
|
|
5
|
+
const require_chunk = require('./chunk-DqRYRqnO.cjs');
|
|
6
|
+
const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
|
|
7
|
+
|
|
8
|
+
//#region src/compat/transformers.ts
|
|
9
|
+
const logger = (0, __logtape_logtape.getLogger)([
|
|
10
|
+
"fedify",
|
|
11
|
+
"compat",
|
|
12
|
+
"transformers"
|
|
13
|
+
]);
|
|
14
|
+
/**
|
|
15
|
+
* An activity transformer that assigns a new random ID to an activity if it
|
|
16
|
+
* does not already have one. This is useful for ensuring that activities
|
|
17
|
+
* have an ID before they are sent to other servers.
|
|
18
|
+
*
|
|
19
|
+
* The generated ID is an origin URI with a fragment which contains an activity
|
|
20
|
+
* type name with a random UUID:
|
|
21
|
+
*
|
|
22
|
+
* ```
|
|
23
|
+
* https://example.com/#Follow/12345678-1234-5678-1234-567812345678
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @template TContextData The type of the context data.
|
|
27
|
+
* @param activity The activity to assign an ID to.
|
|
28
|
+
* @param context The context of the activity.
|
|
29
|
+
* @return The activity with an ID assigned.
|
|
30
|
+
* @since 1.4.0
|
|
31
|
+
*/
|
|
32
|
+
function autoIdAssigner(activity, context) {
|
|
33
|
+
if (activity.id != null) return activity;
|
|
34
|
+
const id = new URL(`/#${activity.constructor.name}/${crypto.randomUUID()}`, context.origin);
|
|
35
|
+
logger.warn("As the activity to send does not have an id, a new id {id} has been generated for it. However, it is recommended to explicitly set the id for the activity.", { id: id.href });
|
|
36
|
+
return activity.clone({ id });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* An activity transformer that dehydrates the actor property of an activity
|
|
40
|
+
* so that it only contains the actor's URI. For example, suppose we have an
|
|
41
|
+
* activity like this:
|
|
42
|
+
*
|
|
43
|
+
* ```typescript
|
|
44
|
+
* import { Follow, Person } from "@fedify/vocab";
|
|
45
|
+
* const input = new Follow({
|
|
46
|
+
* id: new URL("http://example.com/activities/1"),
|
|
47
|
+
* actor: new Person({
|
|
48
|
+
* id: new URL("http://example.com/actors/1"),
|
|
49
|
+
* name: "Alice",
|
|
50
|
+
* preferredUsername: "alice",
|
|
51
|
+
* }),
|
|
52
|
+
* object: new Person({
|
|
53
|
+
* id: new URL("http://example.com/actors/2"),
|
|
54
|
+
* name: "Bob",
|
|
55
|
+
* preferredUsername: "bob",
|
|
56
|
+
* }),
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* The result of applying this transformer would be:
|
|
61
|
+
*
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import { Follow, Person } from "@fedify/vocab";
|
|
64
|
+
* const output = new Follow({
|
|
65
|
+
* id: new URL("http://example.com/activities/1"),
|
|
66
|
+
* actor: new URL("http://example.com/actors/1"),
|
|
67
|
+
* object: new Person({
|
|
68
|
+
* id: new URL("http://example.com/actors/2"),
|
|
69
|
+
* name: "Bob",
|
|
70
|
+
* preferredUsername: "bob",
|
|
71
|
+
* }),
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* As some ActivityPub implementations like Threads fail to deal with inlined
|
|
76
|
+
* actor objects, this transformer can be used to work around this issue.
|
|
77
|
+
* @template TContextData The type of the context data.
|
|
78
|
+
* @param activity The activity to dehydrate the actor property of.
|
|
79
|
+
* @param context The context of the activity.
|
|
80
|
+
* @returns The dehydrated activity.
|
|
81
|
+
* @since 1.4.0
|
|
82
|
+
*/
|
|
83
|
+
function actorDehydrator(activity, _context) {
|
|
84
|
+
if (activity.actorIds.length < 1) return activity;
|
|
85
|
+
return activity.clone({ actors: activity.actorIds });
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Gets the default activity transformers that are applied to all outgoing
|
|
89
|
+
* activities.
|
|
90
|
+
* @template TContextData The type of the context data.
|
|
91
|
+
* @returns The default activity transformers.
|
|
92
|
+
* @since 1.4.0
|
|
93
|
+
*/
|
|
94
|
+
function getDefaultActivityTransformers() {
|
|
95
|
+
return [autoIdAssigner, actorDehydrator];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
//#endregion
|
|
99
|
+
Object.defineProperty(exports, 'actorDehydrator', {
|
|
100
|
+
enumerable: true,
|
|
101
|
+
get: function () {
|
|
102
|
+
return actorDehydrator;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
Object.defineProperty(exports, 'autoIdAssigner', {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: function () {
|
|
108
|
+
return autoIdAssigner;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
Object.defineProperty(exports, 'getDefaultActivityTransformers', {
|
|
112
|
+
enumerable: true,
|
|
113
|
+
get: function () {
|
|
114
|
+
return getDefaultActivityTransformers;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
+
import { URLPattern } from "urlpattern-polyfill";
|
|
4
|
+
|
|
5
5
|
import { getLogger } from "@logtape/logtape";
|
|
6
6
|
|
|
7
7
|
//#region src/compat/transformers.ts
|
|
@@ -40,7 +40,7 @@ function autoIdAssigner(activity, context) {
|
|
|
40
40
|
* activity like this:
|
|
41
41
|
*
|
|
42
42
|
* ```typescript
|
|
43
|
-
* import { Follow, Person } from "@fedify/
|
|
43
|
+
* import { Follow, Person } from "@fedify/vocab";
|
|
44
44
|
* const input = new Follow({
|
|
45
45
|
* id: new URL("http://example.com/activities/1"),
|
|
46
46
|
* actor: new Person({
|
|
@@ -59,7 +59,7 @@ function autoIdAssigner(activity, context) {
|
|
|
59
59
|
* The result of applying this transformer would be:
|
|
60
60
|
*
|
|
61
61
|
* ```typescript
|
|
62
|
-
* import { Follow, Person } from "@fedify/
|
|
62
|
+
* import { Follow, Person } from "@fedify/vocab";
|
|
63
63
|
* const output = new Follow({
|
|
64
64
|
* id: new URL("http://example.com/activities/1"),
|
|
65
65
|
* actor: new URL("http://example.com/actors/1"),
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
|
|
2
|
+
const { Temporal } = require("@js-temporal/polyfill");
|
|
3
|
+
const { URLPattern } = require("urlpattern-polyfill");
|
|
4
|
+
|
|
5
|
+
const require_chunk = require('./chunk-DqRYRqnO.cjs');
|
|
6
|
+
const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
|
|
7
|
+
const __fedify_vocab_runtime = require_chunk.__toESM(require("@fedify/vocab-runtime"));
|
|
8
|
+
|
|
9
|
+
//#region src/nodeinfo/client.ts
|
|
10
|
+
const logger = (0, __logtape_logtape.getLogger)([
|
|
11
|
+
"fedify",
|
|
12
|
+
"nodeinfo",
|
|
13
|
+
"client"
|
|
14
|
+
]);
|
|
15
|
+
async function getNodeInfo(url, options = {}) {
|
|
16
|
+
try {
|
|
17
|
+
let nodeInfoUrl = url;
|
|
18
|
+
if (!options.direct) {
|
|
19
|
+
const wellKnownUrl = new URL("/.well-known/nodeinfo", url);
|
|
20
|
+
const wellKnownResponse = await fetch(wellKnownUrl, { headers: {
|
|
21
|
+
Accept: "application/json",
|
|
22
|
+
"User-Agent": typeof options.userAgent === "string" ? options.userAgent : (0, __fedify_vocab_runtime.getUserAgent)(options.userAgent)
|
|
23
|
+
} });
|
|
24
|
+
if (!wellKnownResponse.ok) {
|
|
25
|
+
logger.error("Failed to fetch {url}: {status} {statusText}", {
|
|
26
|
+
url: wellKnownUrl.href,
|
|
27
|
+
status: wellKnownResponse.status,
|
|
28
|
+
statusText: wellKnownResponse.statusText
|
|
29
|
+
});
|
|
30
|
+
return void 0;
|
|
31
|
+
}
|
|
32
|
+
const wellKnownRd = await wellKnownResponse.json();
|
|
33
|
+
const link = wellKnownRd?.links?.find((link$1) => link$1 != null && "rel" in link$1 && (link$1.rel === "http://nodeinfo.diaspora.software/ns/schema/2.0" || link$1.rel === "http://nodeinfo.diaspora.software/ns/schema/2.1") && "href" in link$1 && link$1.href != null);
|
|
34
|
+
if (link == null || link.href == null) {
|
|
35
|
+
logger.error("Failed to find a NodeInfo document link from {url}: {resourceDescriptor}", {
|
|
36
|
+
url: wellKnownUrl.href,
|
|
37
|
+
resourceDescriptor: wellKnownRd
|
|
38
|
+
});
|
|
39
|
+
return void 0;
|
|
40
|
+
}
|
|
41
|
+
nodeInfoUrl = link.href;
|
|
42
|
+
}
|
|
43
|
+
const response = await fetch(nodeInfoUrl, { headers: {
|
|
44
|
+
Accept: "application/json",
|
|
45
|
+
"User-Agent": typeof options.userAgent === "string" ? options.userAgent : (0, __fedify_vocab_runtime.getUserAgent)(options.userAgent)
|
|
46
|
+
} });
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
logger.error("Failed to fetch NodeInfo document from {url}: {status} {statusText}", {
|
|
49
|
+
url: nodeInfoUrl.toString(),
|
|
50
|
+
status: response.status,
|
|
51
|
+
statusText: response.statusText
|
|
52
|
+
});
|
|
53
|
+
return void 0;
|
|
54
|
+
}
|
|
55
|
+
const data = await response.json();
|
|
56
|
+
if (options.parse === "none") return data;
|
|
57
|
+
return parseNodeInfo(data, { tryBestEffort: options.parse === "best-effort" }) ?? void 0;
|
|
58
|
+
} catch (error) {
|
|
59
|
+
logger.error("Failed to fetch NodeInfo document from {url}: {error}", {
|
|
60
|
+
url: url.toString(),
|
|
61
|
+
error
|
|
62
|
+
});
|
|
63
|
+
return void 0;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parses a NodeInfo document.
|
|
68
|
+
* @param data A JSON value that complies with the NodeInfo schema.
|
|
69
|
+
* @param options Options for parsing the NodeInfo document.
|
|
70
|
+
* @returns The parsed NodeInfo document if it is valid. Otherwise, `null`
|
|
71
|
+
* is returned.
|
|
72
|
+
* @since 1.2.0
|
|
73
|
+
*/
|
|
74
|
+
function parseNodeInfo(data, options = {}) {
|
|
75
|
+
if (typeof data !== "object" || data == null || !("software" in data)) return null;
|
|
76
|
+
const software = parseSoftware(data.software, options);
|
|
77
|
+
if (software == null) return null;
|
|
78
|
+
let protocols = [];
|
|
79
|
+
if ("protocols" in data && Array.isArray(data.protocols)) {
|
|
80
|
+
const ps = data.protocols.map(parseProtocol);
|
|
81
|
+
protocols = ps.filter((p) => p != null);
|
|
82
|
+
if (ps.length != protocols.length && !options.tryBestEffort) return null;
|
|
83
|
+
} else if (!options.tryBestEffort) return null;
|
|
84
|
+
let services;
|
|
85
|
+
if ("services" in data) {
|
|
86
|
+
if (typeof data.services === "object" && data.services != null) {
|
|
87
|
+
const ss = parseServices(data.services, options);
|
|
88
|
+
if (ss == null) {
|
|
89
|
+
if (!options.tryBestEffort) return null;
|
|
90
|
+
} else services = ss;
|
|
91
|
+
} else if (!options.tryBestEffort) return null;
|
|
92
|
+
}
|
|
93
|
+
let openRegistrations;
|
|
94
|
+
if ("openRegistrations" in data) {
|
|
95
|
+
if (typeof data.openRegistrations === "boolean") openRegistrations = data.openRegistrations;
|
|
96
|
+
else if (!options.tryBestEffort) return null;
|
|
97
|
+
}
|
|
98
|
+
let usage = {
|
|
99
|
+
users: {},
|
|
100
|
+
localPosts: 0,
|
|
101
|
+
localComments: 0
|
|
102
|
+
};
|
|
103
|
+
if ("usage" in data) {
|
|
104
|
+
const u = parseUsage(data.usage, options);
|
|
105
|
+
if (u == null) {
|
|
106
|
+
if (!options.tryBestEffort) return null;
|
|
107
|
+
} else usage = u;
|
|
108
|
+
}
|
|
109
|
+
let metadata;
|
|
110
|
+
if ("metadata" in data) {
|
|
111
|
+
if (typeof data.metadata === "object" && data.metadata != null) metadata = Object.fromEntries(Object.entries(data.metadata));
|
|
112
|
+
else if (!options.tryBestEffort) return null;
|
|
113
|
+
}
|
|
114
|
+
const result = {
|
|
115
|
+
software,
|
|
116
|
+
protocols,
|
|
117
|
+
usage
|
|
118
|
+
};
|
|
119
|
+
if (services != null) result.services = services;
|
|
120
|
+
if (openRegistrations != null) result.openRegistrations = openRegistrations;
|
|
121
|
+
if (metadata != null) result.metadata = metadata;
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
function parseSoftware(data, options = {}) {
|
|
125
|
+
if (typeof data !== "object" || data == null) {
|
|
126
|
+
if (!options.tryBestEffort) data = {};
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
let name;
|
|
130
|
+
if ("name" in data && typeof data.name === "string" && data.name.match(/^\s*[A-Za-z0-9-]+\s*$/)) {
|
|
131
|
+
if (!data.name.match(/^[a-z0-9-]+$/) && !options.tryBestEffort) return null;
|
|
132
|
+
name = data.name.trim().toLowerCase();
|
|
133
|
+
} else return null;
|
|
134
|
+
let version;
|
|
135
|
+
if ("version" in data) version = String(data.version);
|
|
136
|
+
else {
|
|
137
|
+
if (!options.tryBestEffort) return null;
|
|
138
|
+
version = "0.0.0";
|
|
139
|
+
}
|
|
140
|
+
let repository;
|
|
141
|
+
if ("repository" in data) {
|
|
142
|
+
if (typeof data.repository === "string") try {
|
|
143
|
+
repository = new URL(data.repository);
|
|
144
|
+
} catch {
|
|
145
|
+
if (!options.tryBestEffort) return null;
|
|
146
|
+
}
|
|
147
|
+
else if (!options.tryBestEffort) return null;
|
|
148
|
+
}
|
|
149
|
+
let homepage;
|
|
150
|
+
if ("homepage" in data) {
|
|
151
|
+
if (typeof data.homepage === "string") try {
|
|
152
|
+
homepage = new URL(data.homepage);
|
|
153
|
+
} catch {
|
|
154
|
+
if (!options.tryBestEffort) return null;
|
|
155
|
+
}
|
|
156
|
+
else if (!options.tryBestEffort) return null;
|
|
157
|
+
}
|
|
158
|
+
const result = {
|
|
159
|
+
name,
|
|
160
|
+
version
|
|
161
|
+
};
|
|
162
|
+
if (repository != null) result.repository = repository;
|
|
163
|
+
if (homepage != null) result.homepage = homepage;
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
function parseProtocol(data) {
|
|
167
|
+
if (data === "activitypub" || data === "buddycloud" || data === "dfrn" || data === "diaspora" || data === "libertree" || data === "ostatus" || data === "pumpio" || data === "tent" || data === "xmpp" || data === "zot") return data;
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
function parseServices(data, options = {}) {
|
|
171
|
+
if (!(typeof data === "object") || data == null) {
|
|
172
|
+
if (options.tryBestEffort) return {};
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
let inbound;
|
|
176
|
+
if ("inbound" in data && Array.isArray(data.inbound)) {
|
|
177
|
+
const is = data.inbound.map(parseInboundService);
|
|
178
|
+
inbound = is.filter((i) => i != null);
|
|
179
|
+
if (is.length > inbound.length && !options.tryBestEffort) return null;
|
|
180
|
+
}
|
|
181
|
+
let outbound;
|
|
182
|
+
if ("outbound" in data && Array.isArray(data.outbound)) {
|
|
183
|
+
const os = data.outbound.map(parseOutboundService);
|
|
184
|
+
outbound = os.filter((o) => o != null);
|
|
185
|
+
if (os.length > outbound.length && !options.tryBestEffort) return null;
|
|
186
|
+
}
|
|
187
|
+
const result = {};
|
|
188
|
+
if (inbound != null) result.inbound = inbound;
|
|
189
|
+
if (outbound != null) result.outbound = outbound;
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
function parseInboundService(data) {
|
|
193
|
+
if (data === "atom1.0" || data === "gnusocial" || data === "imap" || data === "pnut" || data === "pop3" || data === "pumpio" || data === "rss2.0" || data === "twitter") return data;
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
function parseOutboundService(data) {
|
|
197
|
+
if (data === "atom1.0" || data === "blogger" || data === "buddycloud" || data === "diaspora" || data === "dreamwidth" || data === "drupal" || data === "facebook" || data === "friendica" || data === "gnusocial" || data === "google" || data === "insanejournal" || data === "libertree" || data === "linkedin" || data === "livejournal" || data === "mediagoblin" || data === "myspace" || data === "pinterest" || data === "pnut" || data === "posterous" || data === "pumpio" || data === "redmatrix" || data === "rss2.0" || data === "smtp" || data === "tent" || data === "tumblr" || data === "twitter" || data === "wordpress" || data === "xmpp") return data;
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
function parseUsage(data, options = {}) {
|
|
201
|
+
if (typeof data !== "object" || data == null) return null;
|
|
202
|
+
const users = {};
|
|
203
|
+
if ("users" in data && typeof data.users === "object" && data.users != null) {
|
|
204
|
+
if ("total" in data.users) if (typeof data.users.total === "number") users.total = data.users.total;
|
|
205
|
+
else {
|
|
206
|
+
if (!options.tryBestEffort) return null;
|
|
207
|
+
if (typeof data.users.total === "string") {
|
|
208
|
+
const n = parseInt(data.users.total);
|
|
209
|
+
if (!isNaN(n)) users.total = n;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if ("activeHalfyear" in data.users) if (typeof data.users.activeHalfyear === "number") users.activeHalfyear = data.users.activeHalfyear;
|
|
213
|
+
else {
|
|
214
|
+
if (!options.tryBestEffort) return null;
|
|
215
|
+
if (typeof data.users.activeHalfyear === "string") {
|
|
216
|
+
const n = parseInt(data.users.activeHalfyear);
|
|
217
|
+
if (!isNaN(n)) users.activeHalfyear = n;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if ("activeMonth" in data.users) if (typeof data.users.activeMonth === "number") users.activeMonth = data.users.activeMonth;
|
|
221
|
+
else {
|
|
222
|
+
if (!options.tryBestEffort) return null;
|
|
223
|
+
if (typeof data.users.activeMonth === "string") {
|
|
224
|
+
const n = parseInt(data.users.activeMonth);
|
|
225
|
+
if (!isNaN(n)) users.activeMonth = n;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
} else if (!options.tryBestEffort) return null;
|
|
229
|
+
let localPosts = 0;
|
|
230
|
+
if ("localPosts" in data) if (typeof data.localPosts === "number") localPosts = data.localPosts;
|
|
231
|
+
else {
|
|
232
|
+
if (!options.tryBestEffort) return null;
|
|
233
|
+
if (typeof data.localPosts === "string") {
|
|
234
|
+
const n = parseInt(data.localPosts);
|
|
235
|
+
if (!isNaN(n)) localPosts = n;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
let localComments = 0;
|
|
239
|
+
if ("localComments" in data) if (typeof data.localComments === "number") localComments = data.localComments;
|
|
240
|
+
else {
|
|
241
|
+
if (!options.tryBestEffort) return null;
|
|
242
|
+
if (typeof data.localComments === "string") {
|
|
243
|
+
const n = parseInt(data.localComments);
|
|
244
|
+
if (!isNaN(n)) localComments = n;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
users,
|
|
249
|
+
localPosts,
|
|
250
|
+
localComments
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
//#endregion
|
|
255
|
+
//#region src/nodeinfo/types.ts
|
|
256
|
+
/**
|
|
257
|
+
* Converts a {@link NodeInfo} object to a JSON value.
|
|
258
|
+
* @param nodeInfo The {@link NodeInfo} object to convert.
|
|
259
|
+
* @returns The JSON value that complies with the NodeInfo schema.
|
|
260
|
+
* @throws {TypeError} If the {@link NodeInfo} object is invalid.
|
|
261
|
+
*/
|
|
262
|
+
function nodeInfoToJson(nodeInfo) {
|
|
263
|
+
if (!nodeInfo.software.name.match(/^[a-z0-9-]+$/)) throw new TypeError("Invalid software name.");
|
|
264
|
+
if (nodeInfo.protocols.length < 1) throw new TypeError("At least one protocol must be supported.");
|
|
265
|
+
if (nodeInfo.usage.users.total != null && (nodeInfo.usage.users.total < 0 || !Number.isInteger(nodeInfo.usage.users.total))) throw new TypeError("Invalid total users.");
|
|
266
|
+
if (nodeInfo.usage.users.activeHalfyear != null && (nodeInfo.usage.users.activeHalfyear < 0 || !Number.isInteger(nodeInfo.usage.users.activeHalfyear))) throw new TypeError("Invalid active halfyear users.");
|
|
267
|
+
if (nodeInfo.usage.users.activeMonth != null && (nodeInfo.usage.users.activeMonth < 0 || !Number.isInteger(nodeInfo.usage.users.activeMonth))) throw new TypeError("Invalid active month users.");
|
|
268
|
+
if (nodeInfo.usage.localPosts < 0 || !Number.isInteger(nodeInfo.usage.localPosts)) throw new TypeError("Invalid local posts.");
|
|
269
|
+
if (nodeInfo.usage.localComments < 0 || !Number.isInteger(nodeInfo.usage.localComments)) throw new TypeError("Invalid local comments.");
|
|
270
|
+
return {
|
|
271
|
+
"$schema": "http://nodeinfo.diaspora.software/ns/schema/2.1#",
|
|
272
|
+
version: "2.1",
|
|
273
|
+
software: {
|
|
274
|
+
name: nodeInfo.software.name,
|
|
275
|
+
version: nodeInfo.software.version,
|
|
276
|
+
repository: nodeInfo.software.repository?.href,
|
|
277
|
+
homepage: nodeInfo.software.homepage?.href
|
|
278
|
+
},
|
|
279
|
+
protocols: nodeInfo.protocols,
|
|
280
|
+
services: nodeInfo.services == null ? {
|
|
281
|
+
inbound: [],
|
|
282
|
+
outbound: []
|
|
283
|
+
} : {
|
|
284
|
+
inbound: nodeInfo.services.inbound ?? [],
|
|
285
|
+
outbound: nodeInfo.services.outbound ?? []
|
|
286
|
+
},
|
|
287
|
+
openRegistrations: nodeInfo.openRegistrations ?? false,
|
|
288
|
+
usage: {
|
|
289
|
+
users: nodeInfo.usage.users,
|
|
290
|
+
localPosts: nodeInfo.usage.localPosts,
|
|
291
|
+
localComments: nodeInfo.usage.localComments
|
|
292
|
+
},
|
|
293
|
+
metadata: nodeInfo.metadata ?? {}
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
//#endregion
|
|
298
|
+
Object.defineProperty(exports, 'getNodeInfo', {
|
|
299
|
+
enumerable: true,
|
|
300
|
+
get: function () {
|
|
301
|
+
return getNodeInfo;
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
Object.defineProperty(exports, 'nodeInfoToJson', {
|
|
305
|
+
enumerable: true,
|
|
306
|
+
get: function () {
|
|
307
|
+
return nodeInfoToJson;
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
Object.defineProperty(exports, 'parseNodeInfo', {
|
|
311
|
+
enumerable: true,
|
|
312
|
+
get: function () {
|
|
313
|
+
return parseNodeInfo;
|
|
314
|
+
}
|
|
315
|
+
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { getUserAgent } from "./docloader-CkASOfZ5.js";
|
|
2
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
+
import { URLPattern } from "urlpattern-polyfill";
|
|
4
|
+
|
|
6
5
|
import { getLogger } from "@logtape/logtape";
|
|
6
|
+
import { getUserAgent } from "@fedify/vocab-runtime";
|
|
7
7
|
|
|
8
8
|
//#region src/nodeinfo/client.ts
|
|
9
9
|
const logger = getLogger([
|
|
@@ -3,25 +3,23 @@
|
|
|
3
3
|
import { URLPattern } from "urlpattern-polyfill";
|
|
4
4
|
globalThis.addEventListener = () => {};
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { mockDocumentLoader, test } from "../dist-B5f6a8Tt.js";
|
|
7
7
|
import { assertEquals } from "../assert_equals-DSbWqCm3.js";
|
|
8
8
|
import "../assert-MZs1qjMx.js";
|
|
9
9
|
import "../assert_instance_of-DHz7EHNU.js";
|
|
10
|
-
import "../
|
|
11
|
-
import "../
|
|
12
|
-
import "../
|
|
13
|
-
import {
|
|
14
|
-
import { getAuthenticatedDocumentLoader } from "../authdocloader-CzpPQC01.js";
|
|
15
|
-
import { mockDocumentLoader, test } from "../testing-CdBSI4xF.js";
|
|
10
|
+
import "../deno-DIwNGswC.js";
|
|
11
|
+
import "../key-Bdc11xlQ.js";
|
|
12
|
+
import { verifyRequest } from "../http-BV9SKFK0.js";
|
|
13
|
+
import { getAuthenticatedDocumentLoader } from "../docloader-D2992pGD.js";
|
|
16
14
|
import "../std__assert-DWivtrGR.js";
|
|
17
|
-
import { assertRejects } from "../assert_rejects-
|
|
18
|
-
import "../
|
|
15
|
+
import { assertRejects } from "../assert_rejects-Ce45JcFg.js";
|
|
16
|
+
import "../assert_throws-BNXdRGWP.js";
|
|
19
17
|
import "../assert_not_equals-C80BG-_5.js";
|
|
20
|
-
import "../
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
18
|
+
import { rsaPrivateKey2 } from "../keys-ZbcByPg9.js";
|
|
19
|
+
import { esm_default } from "../esm-DGl7uK1r.js";
|
|
20
|
+
import { UrlError } from "@fedify/vocab-runtime";
|
|
23
21
|
|
|
24
|
-
//#region src/
|
|
22
|
+
//#region src/utils/docloader.test.ts
|
|
25
23
|
test("getAuthenticatedDocumentLoader()", async (t) => {
|
|
26
24
|
esm_default.spyGlobal();
|
|
27
25
|
esm_default.get("begin:https://example.com/object", async (cl) => {
|