@fedify/vocab 2.4.0-dev.1618 → 2.4.0-dev.1655
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/deno.json +1 -1
- package/dist/mod.cjs +425 -15
- package/dist/mod.d.cts +109 -1
- package/dist/mod.d.ts +109 -1
- package/dist/mod.js +426 -16
- package/dist-tests/{actor-COnJgcOw.mjs → actor-D_oGj9t4.mjs} +2 -2
- package/dist-tests/actor.test.mjs +2 -2
- package/dist-tests/application.yaml +15 -0
- package/dist-tests/audio.yaml +2 -1
- package/dist-tests/document.yaml +14 -1
- package/dist-tests/group.yaml +15 -0
- package/dist-tests/image.yaml +2 -1
- package/dist-tests/link.yaml +14 -1
- package/dist-tests/lookup.test.mjs +2 -2
- package/dist-tests/organization.yaml +15 -0
- package/dist-tests/page.yaml +2 -1
- package/dist-tests/person.yaml +15 -0
- package/dist-tests/service.yaml +15 -0
- package/dist-tests/type.test.mjs +1 -1
- package/dist-tests/video.yaml +2 -1
- package/dist-tests/{vocab-OU5GYbNg.mjs → vocab-Bjwctrxn.mjs} +426 -16
- package/dist-tests/vocab.test.mjs +152 -1
- package/package.json +4 -4
- package/src/__snapshots__/vocab.test.ts.snap +54 -15
- package/src/application.yaml +15 -0
- package/src/audio.yaml +2 -1
- package/src/document.yaml +14 -1
- package/src/group.yaml +15 -0
- package/src/image.yaml +2 -1
- package/src/link.yaml +14 -1
- package/src/organization.yaml +15 -0
- package/src/page.yaml +2 -1
- package/src/person.yaml +15 -0
- package/src/preprocessors.ts +3 -1
- package/src/service.yaml +15 -0
- package/src/video.yaml +2 -1
- package/src/vocab.test.ts +244 -0
package/src/organization.yaml
CHANGED
|
@@ -7,6 +7,7 @@ entity: true
|
|
|
7
7
|
description: Represents an organization.
|
|
8
8
|
defaultContext:
|
|
9
9
|
- "https://www.w3.org/ns/activitystreams"
|
|
10
|
+
- "https://w3id.org/fep/ef61"
|
|
10
11
|
- "https://w3id.org/security/v1"
|
|
11
12
|
- "https://w3id.org/security/data-integrity/v1"
|
|
12
13
|
- "https://www.w3.org/ns/did/v1"
|
|
@@ -78,6 +79,20 @@ properties:
|
|
|
78
79
|
range:
|
|
79
80
|
- "https://w3id.org/security#Multikey"
|
|
80
81
|
|
|
82
|
+
- pluralName: gateways
|
|
83
|
+
singularName: gateway
|
|
84
|
+
singularAccessor: true
|
|
85
|
+
compactName: gateways
|
|
86
|
+
uri: "https://w3id.org/fep/ef61/gateways"
|
|
87
|
+
container: list
|
|
88
|
+
description: |
|
|
89
|
+
Gateways where the latest version of this portable actor object can be
|
|
90
|
+
retrieved.
|
|
91
|
+
|
|
92
|
+
See [FEP-ef61](https://w3id.org/fep/ef61) for details.
|
|
93
|
+
range:
|
|
94
|
+
- "fedify:gatewayUrl"
|
|
95
|
+
|
|
81
96
|
- singularName: manuallyApprovesFollowers
|
|
82
97
|
functional: true
|
|
83
98
|
compactName: manuallyApprovesFollowers
|
package/src/page.yaml
CHANGED
|
@@ -7,6 +7,7 @@ entity: true
|
|
|
7
7
|
description: Represents a Web Page.
|
|
8
8
|
defaultContext:
|
|
9
9
|
- "https://www.w3.org/ns/activitystreams"
|
|
10
|
-
- "https://w3id.org/security/data-integrity/
|
|
10
|
+
- "https://w3id.org/security/data-integrity/v2"
|
|
11
|
+
- digestMultibase: "https://www.w3.org/ns/credentials/v2#digestMultibase"
|
|
11
12
|
- "https://gotosocial.org/ns"
|
|
12
13
|
properties: []
|
package/src/person.yaml
CHANGED
|
@@ -7,6 +7,7 @@ entity: true
|
|
|
7
7
|
description: Represents an individual person.
|
|
8
8
|
defaultContext:
|
|
9
9
|
- "https://www.w3.org/ns/activitystreams"
|
|
10
|
+
- "https://w3id.org/fep/ef61"
|
|
10
11
|
- "https://w3id.org/security/v1"
|
|
11
12
|
- "https://w3id.org/security/data-integrity/v1"
|
|
12
13
|
- "https://www.w3.org/ns/did/v1"
|
|
@@ -78,6 +79,20 @@ properties:
|
|
|
78
79
|
range:
|
|
79
80
|
- "https://w3id.org/security#Multikey"
|
|
80
81
|
|
|
82
|
+
- pluralName: gateways
|
|
83
|
+
singularName: gateway
|
|
84
|
+
singularAccessor: true
|
|
85
|
+
compactName: gateways
|
|
86
|
+
uri: "https://w3id.org/fep/ef61/gateways"
|
|
87
|
+
container: list
|
|
88
|
+
description: |
|
|
89
|
+
Gateways where the latest version of this portable actor object can be
|
|
90
|
+
retrieved.
|
|
91
|
+
|
|
92
|
+
See [FEP-ef61](https://w3id.org/fep/ef61) for details.
|
|
93
|
+
range:
|
|
94
|
+
- "fedify:gatewayUrl"
|
|
95
|
+
|
|
81
96
|
- singularName: manuallyApprovesFollowers
|
|
82
97
|
functional: true
|
|
83
98
|
compactName: manuallyApprovesFollowers
|
package/src/preprocessors.ts
CHANGED
|
@@ -7,7 +7,8 @@ import { Image, Link } from "./vocab.ts";
|
|
|
7
7
|
* When an `icon` or `image` property on a vocabulary object contains an
|
|
8
8
|
* explicit ActivityStreams `Link` rather than an `Image`, this preprocessor
|
|
9
9
|
* converts it into an `Image` by mapping `href` to `url`, copying
|
|
10
|
-
* `mediaType`, `name`, `width`,
|
|
10
|
+
* `mediaType`, `name`, `width`, `height`, and `digestMultibase`, and
|
|
11
|
+
* discarding the rest.
|
|
11
12
|
*
|
|
12
13
|
* If the value is not a Link, or the Link has no `href`, it returns
|
|
13
14
|
* `undefined` so the normal range decoder continues.
|
|
@@ -44,5 +45,6 @@ export const normalizeLinkToImage: PropertyPreprocessor<Image> = async (
|
|
|
44
45
|
names: link.names != null && link.names.length > 0 ? link.names : undefined,
|
|
45
46
|
width: link.width,
|
|
46
47
|
height: link.height,
|
|
48
|
+
digestMultibase: link.digestMultibase,
|
|
47
49
|
});
|
|
48
50
|
};
|
package/src/service.yaml
CHANGED
|
@@ -7,6 +7,7 @@ entity: true
|
|
|
7
7
|
description: Represents a service of any kind.
|
|
8
8
|
defaultContext:
|
|
9
9
|
- "https://www.w3.org/ns/activitystreams"
|
|
10
|
+
- "https://w3id.org/fep/ef61"
|
|
10
11
|
- "https://w3id.org/security/v1"
|
|
11
12
|
- "https://w3id.org/security/data-integrity/v1"
|
|
12
13
|
- "https://www.w3.org/ns/did/v1"
|
|
@@ -78,6 +79,20 @@ properties:
|
|
|
78
79
|
range:
|
|
79
80
|
- "https://w3id.org/security#Multikey"
|
|
80
81
|
|
|
82
|
+
- pluralName: gateways
|
|
83
|
+
singularName: gateway
|
|
84
|
+
singularAccessor: true
|
|
85
|
+
compactName: gateways
|
|
86
|
+
uri: "https://w3id.org/fep/ef61/gateways"
|
|
87
|
+
container: list
|
|
88
|
+
description: |
|
|
89
|
+
Gateways where the latest version of this portable actor object can be
|
|
90
|
+
retrieved.
|
|
91
|
+
|
|
92
|
+
See [FEP-ef61](https://w3id.org/fep/ef61) for details.
|
|
93
|
+
range:
|
|
94
|
+
- "fedify:gatewayUrl"
|
|
95
|
+
|
|
81
96
|
- singularName: manuallyApprovesFollowers
|
|
82
97
|
functional: true
|
|
83
98
|
compactName: manuallyApprovesFollowers
|
package/src/video.yaml
CHANGED
|
@@ -7,6 +7,7 @@ entity: true
|
|
|
7
7
|
description: Represents a video document of any kind.
|
|
8
8
|
defaultContext:
|
|
9
9
|
- "https://www.w3.org/ns/activitystreams"
|
|
10
|
-
- "https://w3id.org/security/data-integrity/
|
|
10
|
+
- "https://w3id.org/security/data-integrity/v2"
|
|
11
|
+
- digestMultibase: "https://www.w3.org/ns/credentials/v2#digestMultibase"
|
|
11
12
|
- "https://gotosocial.org/ns"
|
|
12
13
|
properties: []
|
package/src/vocab.test.ts
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
Activity,
|
|
29
29
|
Agreement,
|
|
30
30
|
Announce,
|
|
31
|
+
Application,
|
|
31
32
|
Collection,
|
|
32
33
|
Commitment,
|
|
33
34
|
Create,
|
|
@@ -41,7 +42,9 @@ import {
|
|
|
41
42
|
FeaturedItem,
|
|
42
43
|
FeatureRequest,
|
|
43
44
|
Follow,
|
|
45
|
+
Group,
|
|
44
46
|
Hashtag,
|
|
47
|
+
Image,
|
|
45
48
|
Intent,
|
|
46
49
|
InteractionPolicy,
|
|
47
50
|
InteractionRule,
|
|
@@ -52,6 +55,7 @@ import {
|
|
|
52
55
|
Object,
|
|
53
56
|
Offer,
|
|
54
57
|
OrderedCollectionPage,
|
|
58
|
+
Organization,
|
|
55
59
|
Person,
|
|
56
60
|
Place,
|
|
57
61
|
Proposal,
|
|
@@ -59,6 +63,7 @@ import {
|
|
|
59
63
|
QuoteAuthorization,
|
|
60
64
|
QuoteRequest,
|
|
61
65
|
Reject,
|
|
66
|
+
Service,
|
|
62
67
|
Source,
|
|
63
68
|
Tombstone,
|
|
64
69
|
} from "./vocab.ts";
|
|
@@ -623,6 +628,242 @@ test("fromJsonLd() handles portable ActivityPub IRIs", async () => {
|
|
|
623
628
|
);
|
|
624
629
|
});
|
|
625
630
|
|
|
631
|
+
test("FEP-ef61: actor gateways round-trip as an ordered URI list", async () => {
|
|
632
|
+
const actorClasses = [Application, Group, Organization, Person, Service];
|
|
633
|
+
const gateways = [
|
|
634
|
+
new URL("https://server1.example/"),
|
|
635
|
+
new URL("https://server2.example/"),
|
|
636
|
+
];
|
|
637
|
+
|
|
638
|
+
for (const ActorClass of actorClasses) {
|
|
639
|
+
const actor = await ActorClass.fromJsonLd({
|
|
640
|
+
"@context": [
|
|
641
|
+
"https://www.w3.org/ns/activitystreams",
|
|
642
|
+
"https://w3id.org/fep/ef61",
|
|
643
|
+
],
|
|
644
|
+
type: ActorClass.name,
|
|
645
|
+
id: "ap+ef61://did:key:z6Mkabc/actor",
|
|
646
|
+
gateways: gateways.map((gateway) => gateway.href),
|
|
647
|
+
});
|
|
648
|
+
deepStrictEqual(actor.gateways, gateways);
|
|
649
|
+
|
|
650
|
+
const jsonLd = await actor.toJsonLd() as Record<string, unknown>;
|
|
651
|
+
deepStrictEqual(jsonLd.type, ActorClass.name);
|
|
652
|
+
deepStrictEqual(jsonLd.gateways, gateways.map((gateway) => gateway.href));
|
|
653
|
+
|
|
654
|
+
const restored = await ActorClass.fromJsonLd(jsonLd);
|
|
655
|
+
deepStrictEqual(restored.gateways, gateways);
|
|
656
|
+
}
|
|
657
|
+
});
|
|
658
|
+
|
|
659
|
+
test("FEP-ef61: actor gateways preserve single, empty, and invalid cases", async () => {
|
|
660
|
+
const singleGateway = new Person({
|
|
661
|
+
id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
|
|
662
|
+
gateways: [new URL("https://server.example/")],
|
|
663
|
+
});
|
|
664
|
+
deepStrictEqual(
|
|
665
|
+
(await singleGateway.toJsonLd() as Record<string, unknown>).gateways,
|
|
666
|
+
["https://server.example/"],
|
|
667
|
+
);
|
|
668
|
+
|
|
669
|
+
const noGateways = new Person({
|
|
670
|
+
id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
|
|
671
|
+
gateways: [],
|
|
672
|
+
});
|
|
673
|
+
ok(!("gateways" in (await noGateways.toJsonLd() as Record<string, unknown>)));
|
|
674
|
+
|
|
675
|
+
await rejects(
|
|
676
|
+
() =>
|
|
677
|
+
Person.fromJsonLd({
|
|
678
|
+
"@context": [
|
|
679
|
+
"https://www.w3.org/ns/activitystreams",
|
|
680
|
+
"https://w3id.org/fep/ef61",
|
|
681
|
+
],
|
|
682
|
+
type: "Person",
|
|
683
|
+
gateways: ["not a uri"],
|
|
684
|
+
}),
|
|
685
|
+
TypeError,
|
|
686
|
+
);
|
|
687
|
+
});
|
|
688
|
+
|
|
689
|
+
test("FEP-ef61: actor gateways accept @id typed JSON-LD references", async () => {
|
|
690
|
+
const actor = await Person.fromJsonLd({
|
|
691
|
+
"@context": [
|
|
692
|
+
"https://www.w3.org/ns/activitystreams",
|
|
693
|
+
{
|
|
694
|
+
gateways: {
|
|
695
|
+
"@id": "https://w3id.org/fep/ef61/gateways",
|
|
696
|
+
"@type": "@id",
|
|
697
|
+
"@container": "@list",
|
|
698
|
+
},
|
|
699
|
+
},
|
|
700
|
+
],
|
|
701
|
+
type: "Person",
|
|
702
|
+
id: "ap+ef61://did:key:z6Mkabc/actor",
|
|
703
|
+
gateways: ["https://gateway.example/"],
|
|
704
|
+
});
|
|
705
|
+
|
|
706
|
+
deepStrictEqual(actor.gateways, [new URL("https://gateway.example/")]);
|
|
707
|
+
});
|
|
708
|
+
|
|
709
|
+
test("FEP-ef61: actor gateways must be HTTP(S) base URIs", async () => {
|
|
710
|
+
const validGateways = [
|
|
711
|
+
new URL("https://server.example/"),
|
|
712
|
+
new URL("http://server.example/"),
|
|
713
|
+
];
|
|
714
|
+
const actor = new Person({
|
|
715
|
+
id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
|
|
716
|
+
gateways: validGateways,
|
|
717
|
+
});
|
|
718
|
+
deepStrictEqual(actor.gateways, validGateways);
|
|
719
|
+
|
|
720
|
+
for (
|
|
721
|
+
const gateway of [
|
|
722
|
+
"ftp://server.example/",
|
|
723
|
+
"https://user:pass@server.example/",
|
|
724
|
+
"https://user@server.example/",
|
|
725
|
+
"https://server.example/path",
|
|
726
|
+
"https://server.example/?x=1",
|
|
727
|
+
"https://server.example/#fragment",
|
|
728
|
+
]
|
|
729
|
+
) {
|
|
730
|
+
throws(
|
|
731
|
+
() =>
|
|
732
|
+
new Person({
|
|
733
|
+
id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
|
|
734
|
+
gateways: [new URL(gateway)],
|
|
735
|
+
}),
|
|
736
|
+
TypeError,
|
|
737
|
+
);
|
|
738
|
+
|
|
739
|
+
await rejects(
|
|
740
|
+
() =>
|
|
741
|
+
Person.fromJsonLd({
|
|
742
|
+
"@context": [
|
|
743
|
+
"https://www.w3.org/ns/activitystreams",
|
|
744
|
+
"https://w3id.org/fep/ef61",
|
|
745
|
+
],
|
|
746
|
+
type: "Person",
|
|
747
|
+
gateways: [gateway],
|
|
748
|
+
}),
|
|
749
|
+
TypeError,
|
|
750
|
+
);
|
|
751
|
+
}
|
|
752
|
+
});
|
|
753
|
+
|
|
754
|
+
test("FEP-ef61: digestMultibase round-trips on links and media objects", async () => {
|
|
755
|
+
const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
|
|
756
|
+
|
|
757
|
+
const link = await Link.fromJsonLd({
|
|
758
|
+
"@context": [
|
|
759
|
+
"https://www.w3.org/ns/activitystreams",
|
|
760
|
+
"https://w3id.org/fep/ef61",
|
|
761
|
+
],
|
|
762
|
+
type: "Link",
|
|
763
|
+
href: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
|
|
764
|
+
digestMultibase,
|
|
765
|
+
});
|
|
766
|
+
deepStrictEqual(link.digestMultibase, digestMultibase);
|
|
767
|
+
deepStrictEqual(
|
|
768
|
+
(await link.toJsonLd() as Record<string, unknown>).digestMultibase,
|
|
769
|
+
digestMultibase,
|
|
770
|
+
);
|
|
771
|
+
|
|
772
|
+
for (const cls of [Document, Image]) {
|
|
773
|
+
const media = await cls.fromJsonLd({
|
|
774
|
+
"@context": [
|
|
775
|
+
"https://www.w3.org/ns/activitystreams",
|
|
776
|
+
"https://w3id.org/fep/ef61",
|
|
777
|
+
],
|
|
778
|
+
type: cls.name,
|
|
779
|
+
url: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
|
|
780
|
+
mediaType: "image/png",
|
|
781
|
+
digestMultibase,
|
|
782
|
+
});
|
|
783
|
+
deepStrictEqual(media.digestMultibase, digestMultibase);
|
|
784
|
+
const jsonLd = await media.toJsonLd() as Record<string, unknown>;
|
|
785
|
+
deepStrictEqual(jsonLd.type, cls.name);
|
|
786
|
+
deepStrictEqual(jsonLd.digestMultibase, digestMultibase);
|
|
787
|
+
}
|
|
788
|
+
});
|
|
789
|
+
|
|
790
|
+
test("FEP-ef61: digestMultibase avoids Data Integrity context conflicts", async () => {
|
|
791
|
+
const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
|
|
792
|
+
const image = new Image({
|
|
793
|
+
url: new URL("hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n"),
|
|
794
|
+
mediaType: "image/png",
|
|
795
|
+
digestMultibase,
|
|
796
|
+
});
|
|
797
|
+
|
|
798
|
+
const expanded = await image.toJsonLd({ format: "expand" });
|
|
799
|
+
deepStrictEqual(
|
|
800
|
+
(expanded as Record<string, unknown>[])[0][
|
|
801
|
+
"https://www.w3.org/ns/credentials/v2#digestMultibase"
|
|
802
|
+
],
|
|
803
|
+
[{ "@value": digestMultibase }],
|
|
804
|
+
);
|
|
805
|
+
ok(
|
|
806
|
+
!(
|
|
807
|
+
"https://w3id.org/security#digestMultibase" in
|
|
808
|
+
(expanded as Record<string, unknown>[])[0]
|
|
809
|
+
),
|
|
810
|
+
);
|
|
811
|
+
|
|
812
|
+
const compact = await image.toJsonLd() as Record<string, unknown>;
|
|
813
|
+
deepStrictEqual(compact.digestMultibase, digestMultibase);
|
|
814
|
+
ok(
|
|
815
|
+
!(compact["@context"] as unknown[]).includes("https://w3id.org/fep/ef61"),
|
|
816
|
+
);
|
|
817
|
+
ok(
|
|
818
|
+
(compact["@context"] as unknown[]).some((context) =>
|
|
819
|
+
context != null && typeof context === "object" &&
|
|
820
|
+
(context as Record<string, unknown>).digestMultibase ===
|
|
821
|
+
"https://www.w3.org/ns/credentials/v2#digestMultibase"
|
|
822
|
+
),
|
|
823
|
+
);
|
|
824
|
+
});
|
|
825
|
+
|
|
826
|
+
test("FEP-ef61: digestMultibase parses after Data Integrity v1 contexts", async () => {
|
|
827
|
+
const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
|
|
828
|
+
const image = await Image.fromJsonLd({
|
|
829
|
+
"@context": [
|
|
830
|
+
"https://www.w3.org/ns/activitystreams",
|
|
831
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
832
|
+
"https://w3id.org/fep/ef61",
|
|
833
|
+
],
|
|
834
|
+
type: "Image",
|
|
835
|
+
url: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
|
|
836
|
+
mediaType: "image/png",
|
|
837
|
+
digestMultibase,
|
|
838
|
+
});
|
|
839
|
+
|
|
840
|
+
deepStrictEqual(image.digestMultibase, digestMultibase);
|
|
841
|
+
});
|
|
842
|
+
|
|
843
|
+
test("FEP-ef61: Link image normalization preserves digestMultibase", async () => {
|
|
844
|
+
const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
|
|
845
|
+
const obj = await Object.fromJsonLd({
|
|
846
|
+
"@context": [
|
|
847
|
+
"https://www.w3.org/ns/activitystreams",
|
|
848
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
849
|
+
"https://w3id.org/fep/ef61",
|
|
850
|
+
],
|
|
851
|
+
type: "Note",
|
|
852
|
+
image: {
|
|
853
|
+
type: "Link",
|
|
854
|
+
href: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
|
|
855
|
+
mediaType: "image/png",
|
|
856
|
+
digestMultibase,
|
|
857
|
+
},
|
|
858
|
+
});
|
|
859
|
+
const images = [];
|
|
860
|
+
for await (const img of obj.getImages()) {
|
|
861
|
+
images.push(img);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
deepStrictEqual(images[0]?.digestMultibase, digestMultibase);
|
|
865
|
+
});
|
|
866
|
+
|
|
626
867
|
test("fromJsonLd() caches text that mentions portable ActivityPub IRIs", async () => {
|
|
627
868
|
const noteJson = {
|
|
628
869
|
"@context": [
|
|
@@ -1751,6 +1992,7 @@ test("Person.toJsonLd()", async () => {
|
|
|
1751
1992
|
deepStrictEqual(await person.toJsonLd(), {
|
|
1752
1993
|
"@context": [
|
|
1753
1994
|
"https://www.w3.org/ns/activitystreams",
|
|
1995
|
+
"https://w3id.org/fep/ef61",
|
|
1754
1996
|
"https://w3id.org/security/v1",
|
|
1755
1997
|
"https://w3id.org/security/data-integrity/v1",
|
|
1756
1998
|
"https://www.w3.org/ns/did/v1",
|
|
@@ -2531,6 +2773,7 @@ test("InteractionPolicy.canFeature", async () => {
|
|
|
2531
2773
|
const expected = {
|
|
2532
2774
|
"@context": [
|
|
2533
2775
|
"https://www.w3.org/ns/activitystreams",
|
|
2776
|
+
"https://w3id.org/fep/ef61",
|
|
2534
2777
|
"https://w3id.org/security/v1",
|
|
2535
2778
|
"https://w3id.org/security/data-integrity/v1",
|
|
2536
2779
|
"https://www.w3.org/ns/did/v1",
|
|
@@ -4780,6 +5023,7 @@ const sampleValues: Record<string, any> = {
|
|
|
4780
5023
|
]),
|
|
4781
5024
|
"fedify:langTag": new Intl.Locale("en-Latn-US"),
|
|
4782
5025
|
"fedify:url": new URL("https://fedify.dev/"),
|
|
5026
|
+
"fedify:gatewayUrl": new URL("https://gateway.example/"),
|
|
4783
5027
|
"fedify:publicKey": rsaPublicKey.publicKey,
|
|
4784
5028
|
"fedify:multibaseKey": ed25519PublicKey.publicKey,
|
|
4785
5029
|
"fedify:proofPurpose": "assertionMethod",
|