@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.
@@ -1,6 +1,6 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
2
  globalThis.addEventListener = () => {};
3
- import { B as Tombstone, C as Link, D as Object$1, E as Note, F as QuoteAuthorization, I as QuoteRequest, L as Reject, M as Place, N as Proposal, O as Offer, P as Question, S as InteractionRule, T as Multikey, U as vocab_exports, _ as Follow, b as Intent, c as Create, d as Document, f as Endpoints, g as FeaturedItem, h as FeaturedCollection, i as Announce, j as Person, k as OrderedCollectionPage, l as CryptographicKey, m as FeatureRequest, n as Activity, o as Collection, p as FeatureAuthorization, r as Agreement, s as Commitment, t as Accept, u as Delete, w as Measure, x as InteractionPolicy, y as Hashtag, z as Source } from "./vocab-OU5GYbNg.mjs";
3
+ import { A as OrderedCollectionPage, B as Source, C as InteractionRule, D as Note, E as Multikey, F as Question, I as QuoteAuthorization, L as QuoteRequest, M as Person, N as Place, O as Object$1, P as Proposal, R as Reject, S as InteractionPolicy, T as Measure, V as Tombstone, W as vocab_exports, _ as Follow, a as Application, b as Image, c as Create, d as Document, f as Endpoints, g as FeaturedItem, h as FeaturedCollection, i as Announce, j as Organization, k as Offer, l as CryptographicKey, m as FeatureRequest, n as Activity, o as Collection, p as FeatureAuthorization, r as Agreement, s as Commitment, t as Accept, u as Delete, v as Group, w as Link, x as Intent, y as Hashtag, z as Service } from "./vocab-Bjwctrxn.mjs";
4
4
  import { t as assertInstanceOf } from "./utils-CQjrpUkt.mjs";
5
5
  import { mockDocumentLoader, test } from "@fedify/fixture";
6
6
  import { deepStrictEqual, notDeepStrictEqual, ok, rejects, throws } from "node:assert/strict";
@@ -380,6 +380,154 @@ test("fromJsonLd() handles portable ActivityPub IRIs", async () => {
380
380
  deepStrictEqual(pageJson.next, "ap+ef61://did:key:z6Mkabc/actor/outbox?page=2");
381
381
  deepStrictEqual(pageJson.prev, "ap+ef61://did:key:z6Mkabc/actor/outbox?page=1");
382
382
  });
383
+ test("FEP-ef61: actor gateways round-trip as an ordered URI list", async () => {
384
+ const actorClasses = [
385
+ Application,
386
+ Group,
387
+ Organization,
388
+ Person,
389
+ Service
390
+ ];
391
+ const gateways = [new URL("https://server1.example/"), new URL("https://server2.example/")];
392
+ for (const ActorClass of actorClasses) {
393
+ const actor = await ActorClass.fromJsonLd({
394
+ "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/fep/ef61"],
395
+ type: ActorClass.name,
396
+ id: "ap+ef61://did:key:z6Mkabc/actor",
397
+ gateways: gateways.map((gateway) => gateway.href)
398
+ });
399
+ deepStrictEqual(actor.gateways, gateways);
400
+ const jsonLd = await actor.toJsonLd();
401
+ deepStrictEqual(jsonLd.type, ActorClass.name);
402
+ deepStrictEqual(jsonLd.gateways, gateways.map((gateway) => gateway.href));
403
+ deepStrictEqual((await ActorClass.fromJsonLd(jsonLd)).gateways, gateways);
404
+ }
405
+ });
406
+ test("FEP-ef61: actor gateways preserve single, empty, and invalid cases", async () => {
407
+ deepStrictEqual((await new Person({
408
+ id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
409
+ gateways: [new URL("https://server.example/")]
410
+ }).toJsonLd()).gateways, ["https://server.example/"]);
411
+ ok(!("gateways" in await new Person({
412
+ id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
413
+ gateways: []
414
+ }).toJsonLd()));
415
+ await rejects(() => Person.fromJsonLd({
416
+ "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/fep/ef61"],
417
+ type: "Person",
418
+ gateways: ["not a uri"]
419
+ }), TypeError);
420
+ });
421
+ test("FEP-ef61: actor gateways accept @id typed JSON-LD references", async () => {
422
+ deepStrictEqual((await Person.fromJsonLd({
423
+ "@context": ["https://www.w3.org/ns/activitystreams", { gateways: {
424
+ "@id": "https://w3id.org/fep/ef61/gateways",
425
+ "@type": "@id",
426
+ "@container": "@list"
427
+ } }],
428
+ type: "Person",
429
+ id: "ap+ef61://did:key:z6Mkabc/actor",
430
+ gateways: ["https://gateway.example/"]
431
+ })).gateways, [new URL("https://gateway.example/")]);
432
+ });
433
+ test("FEP-ef61: actor gateways must be HTTP(S) base URIs", async () => {
434
+ const validGateways = [new URL("https://server.example/"), new URL("http://server.example/")];
435
+ deepStrictEqual(new Person({
436
+ id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
437
+ gateways: validGateways
438
+ }).gateways, validGateways);
439
+ for (const gateway of [
440
+ "ftp://server.example/",
441
+ "https://user:pass@server.example/",
442
+ "https://user@server.example/",
443
+ "https://server.example/path",
444
+ "https://server.example/?x=1",
445
+ "https://server.example/#fragment"
446
+ ]) {
447
+ throws(() => new Person({
448
+ id: new URL("ap+ef61://did%3Akey%3Az6Mkabc/actor"),
449
+ gateways: [new URL(gateway)]
450
+ }), TypeError);
451
+ await rejects(() => Person.fromJsonLd({
452
+ "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/fep/ef61"],
453
+ type: "Person",
454
+ gateways: [gateway]
455
+ }), TypeError);
456
+ }
457
+ });
458
+ test("FEP-ef61: digestMultibase round-trips on links and media objects", async () => {
459
+ const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
460
+ const link = await Link.fromJsonLd({
461
+ "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/fep/ef61"],
462
+ type: "Link",
463
+ href: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
464
+ digestMultibase
465
+ });
466
+ deepStrictEqual(link.digestMultibase, digestMultibase);
467
+ deepStrictEqual((await link.toJsonLd()).digestMultibase, digestMultibase);
468
+ for (const cls of [Document, Image]) {
469
+ const media = await cls.fromJsonLd({
470
+ "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/fep/ef61"],
471
+ type: cls.name,
472
+ url: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
473
+ mediaType: "image/png",
474
+ digestMultibase
475
+ });
476
+ deepStrictEqual(media.digestMultibase, digestMultibase);
477
+ const jsonLd = await media.toJsonLd();
478
+ deepStrictEqual(jsonLd.type, cls.name);
479
+ deepStrictEqual(jsonLd.digestMultibase, digestMultibase);
480
+ }
481
+ });
482
+ test("FEP-ef61: digestMultibase avoids Data Integrity context conflicts", async () => {
483
+ const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
484
+ const image = new Image({
485
+ url: new URL("hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n"),
486
+ mediaType: "image/png",
487
+ digestMultibase
488
+ });
489
+ const expanded = await image.toJsonLd({ format: "expand" });
490
+ deepStrictEqual(expanded[0]["https://www.w3.org/ns/credentials/v2#digestMultibase"], [{ "@value": digestMultibase }]);
491
+ ok(!("https://w3id.org/security#digestMultibase" in expanded[0]));
492
+ const compact = await image.toJsonLd();
493
+ deepStrictEqual(compact.digestMultibase, digestMultibase);
494
+ ok(!compact["@context"].includes("https://w3id.org/fep/ef61"));
495
+ ok(compact["@context"].some((context) => context != null && typeof context === "object" && context.digestMultibase === "https://www.w3.org/ns/credentials/v2#digestMultibase"));
496
+ });
497
+ test("FEP-ef61: digestMultibase parses after Data Integrity v1 contexts", async () => {
498
+ const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
499
+ deepStrictEqual((await Image.fromJsonLd({
500
+ "@context": [
501
+ "https://www.w3.org/ns/activitystreams",
502
+ "https://w3id.org/security/data-integrity/v1",
503
+ "https://w3id.org/fep/ef61"
504
+ ],
505
+ type: "Image",
506
+ url: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
507
+ mediaType: "image/png",
508
+ digestMultibase
509
+ })).digestMultibase, digestMultibase);
510
+ });
511
+ test("FEP-ef61: Link image normalization preserves digestMultibase", async () => {
512
+ const digestMultibase = "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n";
513
+ const obj = await Object$1.fromJsonLd({
514
+ "@context": [
515
+ "https://www.w3.org/ns/activitystreams",
516
+ "https://w3id.org/security/data-integrity/v1",
517
+ "https://w3id.org/fep/ef61"
518
+ ],
519
+ type: "Note",
520
+ image: {
521
+ type: "Link",
522
+ href: "hl:zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
523
+ mediaType: "image/png",
524
+ digestMultibase
525
+ }
526
+ });
527
+ const images = [];
528
+ for await (const img of obj.getImages()) images.push(img);
529
+ deepStrictEqual(images[0]?.digestMultibase, digestMultibase);
530
+ });
383
531
  test("fromJsonLd() caches text that mentions portable ActivityPub IRIs", async () => {
384
532
  const noteJson = {
385
533
  "@context": ["https://www.w3.org/ns/activitystreams", { extra: "https://example.com/ns#extra" }],
@@ -1156,6 +1304,7 @@ test("Person.toJsonLd()", async () => {
1156
1304
  deepStrictEqual(await new Person({ aliases: [new URL("https://example.com/alias")] }).toJsonLd(), {
1157
1305
  "@context": [
1158
1306
  "https://www.w3.org/ns/activitystreams",
1307
+ "https://w3id.org/fep/ef61",
1159
1308
  "https://w3id.org/security/v1",
1160
1309
  "https://w3id.org/security/data-integrity/v1",
1161
1310
  "https://www.w3.org/ns/did/v1",
@@ -1657,6 +1806,7 @@ test("InteractionPolicy.canFeature", async () => {
1657
1806
  const expected = {
1658
1807
  "@context": [
1659
1808
  "https://www.w3.org/ns/activitystreams",
1809
+ "https://w3id.org/fep/ef61",
1660
1810
  "https://w3id.org/security/v1",
1661
1811
  "https://w3id.org/security/data-integrity/v1",
1662
1812
  "https://www.w3.org/ns/did/v1",
@@ -3234,6 +3384,7 @@ const sampleValues = {
3234
3384
  ]),
3235
3385
  "fedify:langTag": new Intl.Locale("en-Latn-US"),
3236
3386
  "fedify:url": new URL("https://fedify.dev/"),
3387
+ "fedify:gatewayUrl": new URL("https://gateway.example/"),
3237
3388
  "fedify:publicKey": rsaPublicKey.publicKey,
3238
3389
  "fedify:multibaseKey": ed25519PublicKey.publicKey,
3239
3390
  "fedify:proofPurpose": "assertionMethod",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/vocab",
3
- "version": "2.4.0-dev.1618+58858243",
3
+ "version": "2.4.0-dev.1655+b8f3c3d5",
4
4
  "homepage": "https://fedify.dev/",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,9 +43,9 @@
43
43
  "jsonld": "^9.0.0",
44
44
  "pkijs": "^3.3.3",
45
45
  "temporal-polyfill": "^1.0.1",
46
- "@fedify/vocab-tools": "2.4.0-dev.1618+58858243",
47
- "@fedify/webfinger": "2.4.0-dev.1618+58858243",
48
- "@fedify/vocab-runtime": "2.4.0-dev.1618+58858243"
46
+ "@fedify/vocab-tools": "2.4.0-dev.1655+b8f3c3d5",
47
+ "@fedify/webfinger": "2.4.0-dev.1655+b8f3c3d5",
48
+ "@fedify/vocab-runtime": "2.4.0-dev.1655+b8f3c3d5"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/node": "^22.17.0",
@@ -3352,6 +3352,7 @@ snapshot[`Deno.inspect(Application) [auto] 1`] = `
3352
3352
  preferredUsernames: [ "hello", <en> "hello" ],
3353
3353
  publicKey: CryptographicKey {},
3354
3354
  assertionMethod: Multikey {},
3355
+ gateway: URL "https://gateway.example/",
3355
3356
  manuallyApprovesFollowers: true,
3356
3357
  inbox: OrderedCollection {},
3357
3358
  outbox: OrderedCollection {},
@@ -3418,6 +3419,7 @@ snapshot[`Deno.inspect(Application) [auto] 2`] = `
3418
3419
  preferredUsernames: [ "hello", <en> "hello" ],
3419
3420
  publicKey: URL "https://example.com/",
3420
3421
  assertionMethod: URL "https://example.com/",
3422
+ gateway: URL "https://gateway.example/",
3421
3423
  manuallyApprovesFollowers: true,
3422
3424
  inbox: URL "https://example.com/",
3423
3425
  outbox: URL "https://example.com/",
@@ -3484,6 +3486,7 @@ snapshot[`Deno.inspect(Application) [auto] 3`] = `
3484
3486
  preferredUsernames: [ "hello", "hello" ],
3485
3487
  publicKeys: [ CryptographicKey {}, CryptographicKey {} ],
3486
3488
  assertionMethods: [ Multikey {}, Multikey {} ],
3489
+ gateways: [ URL "https://gateway.example/", URL "https://gateway.example/" ],
3487
3490
  manuallyApprovesFollowers: true,
3488
3491
  inbox: OrderedCollection {},
3489
3492
  outbox: OrderedCollection {},
@@ -3833,7 +3836,8 @@ snapshot[`Deno.inspect(Audio) [auto] 1`] = `
3833
3836
  replyAuthorization: ReplyAuthorization {},
3834
3837
  announceAuthorization: AnnounceAuthorization {},
3835
3838
  width: 123,
3836
- height: 123
3839
+ height: 123,
3840
+ digestMultibase: "hello"
3837
3841
  }'
3838
3842
  `;
3839
3843
 
@@ -3878,7 +3882,8 @@ snapshot[`Deno.inspect(Audio) [auto] 2`] = `
3878
3882
  replyAuthorization: URL "https://example.com/",
3879
3883
  announceAuthorization: URL "https://example.com/",
3880
3884
  width: 123,
3881
- height: 123
3885
+ height: 123,
3886
+ digestMultibase: "hello"
3882
3887
  }'
3883
3888
  `;
3884
3889
 
@@ -3923,7 +3928,8 @@ snapshot[`Deno.inspect(Audio) [auto] 3`] = `
3923
3928
  replyAuthorization: ReplyAuthorization {},
3924
3929
  announceAuthorization: AnnounceAuthorization {},
3925
3930
  width: 123,
3926
- height: 123
3931
+ height: 123,
3932
+ digestMultibase: "hello"
3927
3933
  }'
3928
3934
  `;
3929
3935
 
@@ -4901,7 +4907,8 @@ snapshot[`Deno.inspect(Document) [auto] 1`] = `
4901
4907
  replyAuthorization: ReplyAuthorization {},
4902
4908
  announceAuthorization: AnnounceAuthorization {},
4903
4909
  width: 123,
4904
- height: 123
4910
+ height: 123,
4911
+ digestMultibase: "hello"
4905
4912
  }'
4906
4913
  `;
4907
4914
 
@@ -4946,7 +4953,8 @@ snapshot[`Deno.inspect(Document) [auto] 2`] = `
4946
4953
  replyAuthorization: URL "https://example.com/",
4947
4954
  announceAuthorization: URL "https://example.com/",
4948
4955
  width: 123,
4949
- height: 123
4956
+ height: 123,
4957
+ digestMultibase: "hello"
4950
4958
  }'
4951
4959
  `;
4952
4960
 
@@ -4991,7 +4999,8 @@ snapshot[`Deno.inspect(Document) [auto] 3`] = `
4991
4999
  replyAuthorization: ReplyAuthorization {},
4992
5000
  announceAuthorization: AnnounceAuthorization {},
4993
5001
  width: 123,
4994
- height: 123
5002
+ height: 123,
5003
+ digestMultibase: "hello"
4995
5004
  }'
4996
5005
  `;
4997
5006
 
@@ -5500,6 +5509,7 @@ snapshot[`Deno.inspect(Group) [auto] 1`] = `
5500
5509
  preferredUsernames: [ "hello", <en> "hello" ],
5501
5510
  publicKey: CryptographicKey {},
5502
5511
  assertionMethod: Multikey {},
5512
+ gateway: URL "https://gateway.example/",
5503
5513
  manuallyApprovesFollowers: true,
5504
5514
  inbox: OrderedCollection {},
5505
5515
  outbox: OrderedCollection {},
@@ -5566,6 +5576,7 @@ snapshot[`Deno.inspect(Group) [auto] 2`] = `
5566
5576
  preferredUsernames: [ "hello", <en> "hello" ],
5567
5577
  publicKey: URL "https://example.com/",
5568
5578
  assertionMethod: URL "https://example.com/",
5579
+ gateway: URL "https://gateway.example/",
5569
5580
  manuallyApprovesFollowers: true,
5570
5581
  inbox: URL "https://example.com/",
5571
5582
  outbox: URL "https://example.com/",
@@ -5632,6 +5643,7 @@ snapshot[`Deno.inspect(Group) [auto] 3`] = `
5632
5643
  preferredUsernames: [ "hello", "hello" ],
5633
5644
  publicKeys: [ CryptographicKey {}, CryptographicKey {} ],
5634
5645
  assertionMethods: [ Multikey {}, Multikey {} ],
5646
+ gateways: [ URL "https://gateway.example/", URL "https://gateway.example/" ],
5635
5647
  manuallyApprovesFollowers: true,
5636
5648
  inbox: OrderedCollection {},
5637
5649
  outbox: OrderedCollection {},
@@ -5661,6 +5673,7 @@ snapshot[`Deno.inspect(Hashtag) [auto] 1`] = `
5661
5673
  href: URL "https://example.com/",
5662
5674
  rel: "hello",
5663
5675
  mediaType: "hello",
5676
+ digestMultibase: "hello",
5664
5677
  names: [ "hello", <en> "hello" ],
5665
5678
  language: Locale [Intl.Locale] {
5666
5679
  baseName: "en-Latn-US",
@@ -5686,6 +5699,7 @@ snapshot[`Deno.inspect(Hashtag) [auto] 2`] = `
5686
5699
  href: URL "https://example.com/",
5687
5700
  rel: "hello",
5688
5701
  mediaType: "hello",
5702
+ digestMultibase: "hello",
5689
5703
  names: [ "hello", <en> "hello" ],
5690
5704
  language: Locale [Intl.Locale] {
5691
5705
  baseName: "en-Latn-US",
@@ -5711,6 +5725,7 @@ snapshot[`Deno.inspect(Hashtag) [auto] 3`] = `
5711
5725
  href: URL "https://example.com/",
5712
5726
  rels: [ "hello", "hello" ],
5713
5727
  mediaType: "hello",
5728
+ digestMultibase: "hello",
5714
5729
  names: [ "hello", "hello" ],
5715
5730
  language: Locale [Intl.Locale] {
5716
5731
  baseName: "en-Latn-US",
@@ -5918,7 +5933,8 @@ snapshot[`Deno.inspect(Image) [auto] 1`] = `
5918
5933
  replyAuthorization: ReplyAuthorization {},
5919
5934
  announceAuthorization: AnnounceAuthorization {},
5920
5935
  width: 123,
5921
- height: 123
5936
+ height: 123,
5937
+ digestMultibase: "hello"
5922
5938
  }'
5923
5939
  `;
5924
5940
 
@@ -5963,7 +5979,8 @@ snapshot[`Deno.inspect(Image) [auto] 2`] = `
5963
5979
  replyAuthorization: URL "https://example.com/",
5964
5980
  announceAuthorization: URL "https://example.com/",
5965
5981
  width: 123,
5966
- height: 123
5982
+ height: 123,
5983
+ digestMultibase: "hello"
5967
5984
  }'
5968
5985
  `;
5969
5986
 
@@ -6008,7 +6025,8 @@ snapshot[`Deno.inspect(Image) [auto] 3`] = `
6008
6025
  replyAuthorization: ReplyAuthorization {},
6009
6026
  announceAuthorization: AnnounceAuthorization {},
6010
6027
  width: 123,
6011
- height: 123
6028
+ height: 123,
6029
+ digestMultibase: "hello"
6012
6030
  }'
6013
6031
  `;
6014
6032
 
@@ -6753,6 +6771,7 @@ snapshot[`Deno.inspect(Link) [auto] 1`] = `
6753
6771
  href: URL "https://example.com/",
6754
6772
  rel: "hello",
6755
6773
  mediaType: "hello",
6774
+ digestMultibase: "hello",
6756
6775
  names: [ "hello", <en> "hello" ],
6757
6776
  language: Locale [Intl.Locale] {
6758
6777
  baseName: "en-Latn-US",
@@ -6778,6 +6797,7 @@ snapshot[`Deno.inspect(Link) [auto] 2`] = `
6778
6797
  href: URL "https://example.com/",
6779
6798
  rel: "hello",
6780
6799
  mediaType: "hello",
6800
+ digestMultibase: "hello",
6781
6801
  names: [ "hello", <en> "hello" ],
6782
6802
  language: Locale [Intl.Locale] {
6783
6803
  baseName: "en-Latn-US",
@@ -6803,6 +6823,7 @@ snapshot[`Deno.inspect(Link) [auto] 3`] = `
6803
6823
  href: URL "https://example.com/",
6804
6824
  rels: [ "hello", "hello" ],
6805
6825
  mediaType: "hello",
6826
+ digestMultibase: "hello",
6806
6827
  names: [ "hello", "hello" ],
6807
6828
  language: Locale [Intl.Locale] {
6808
6829
  baseName: "en-Latn-US",
@@ -6975,6 +6996,7 @@ snapshot[`Deno.inspect(Mention) [auto] 1`] = `
6975
6996
  href: URL "https://example.com/",
6976
6997
  rel: "hello",
6977
6998
  mediaType: "hello",
6999
+ digestMultibase: "hello",
6978
7000
  names: [ "hello", <en> "hello" ],
6979
7001
  language: Locale [Intl.Locale] {
6980
7002
  baseName: "en-Latn-US",
@@ -7000,6 +7022,7 @@ snapshot[`Deno.inspect(Mention) [auto] 2`] = `
7000
7022
  href: URL "https://example.com/",
7001
7023
  rel: "hello",
7002
7024
  mediaType: "hello",
7025
+ digestMultibase: "hello",
7003
7026
  names: [ "hello", <en> "hello" ],
7004
7027
  language: Locale [Intl.Locale] {
7005
7028
  baseName: "en-Latn-US",
@@ -7025,6 +7048,7 @@ snapshot[`Deno.inspect(Mention) [auto] 3`] = `
7025
7048
  href: URL "https://example.com/",
7026
7049
  rels: [ "hello", "hello" ],
7027
7050
  mediaType: "hello",
7051
+ digestMultibase: "hello",
7028
7052
  names: [ "hello", "hello" ],
7029
7053
  language: Locale [Intl.Locale] {
7030
7054
  baseName: "en-Latn-US",
@@ -7996,6 +8020,7 @@ snapshot[`Deno.inspect(Organization) [auto] 1`] = `
7996
8020
  preferredUsernames: [ "hello", <en> "hello" ],
7997
8021
  publicKey: CryptographicKey {},
7998
8022
  assertionMethod: Multikey {},
8023
+ gateway: URL "https://gateway.example/",
7999
8024
  manuallyApprovesFollowers: true,
8000
8025
  inbox: OrderedCollection {},
8001
8026
  outbox: OrderedCollection {},
@@ -8062,6 +8087,7 @@ snapshot[`Deno.inspect(Organization) [auto] 2`] = `
8062
8087
  preferredUsernames: [ "hello", <en> "hello" ],
8063
8088
  publicKey: URL "https://example.com/",
8064
8089
  assertionMethod: URL "https://example.com/",
8090
+ gateway: URL "https://gateway.example/",
8065
8091
  manuallyApprovesFollowers: true,
8066
8092
  inbox: URL "https://example.com/",
8067
8093
  outbox: URL "https://example.com/",
@@ -8128,6 +8154,7 @@ snapshot[`Deno.inspect(Organization) [auto] 3`] = `
8128
8154
  preferredUsernames: [ "hello", "hello" ],
8129
8155
  publicKeys: [ CryptographicKey {}, CryptographicKey {} ],
8130
8156
  assertionMethods: [ Multikey {}, Multikey {} ],
8157
+ gateways: [ URL "https://gateway.example/", URL "https://gateway.example/" ],
8131
8158
  manuallyApprovesFollowers: true,
8132
8159
  inbox: OrderedCollection {},
8133
8160
  outbox: OrderedCollection {},
@@ -8192,7 +8219,8 @@ snapshot[`Deno.inspect(Page) [auto] 1`] = `
8192
8219
  replyAuthorization: ReplyAuthorization {},
8193
8220
  announceAuthorization: AnnounceAuthorization {},
8194
8221
  width: 123,
8195
- height: 123
8222
+ height: 123,
8223
+ digestMultibase: "hello"
8196
8224
  }'
8197
8225
  `;
8198
8226
 
@@ -8237,7 +8265,8 @@ snapshot[`Deno.inspect(Page) [auto] 2`] = `
8237
8265
  replyAuthorization: URL "https://example.com/",
8238
8266
  announceAuthorization: URL "https://example.com/",
8239
8267
  width: 123,
8240
- height: 123
8268
+ height: 123,
8269
+ digestMultibase: "hello"
8241
8270
  }'
8242
8271
  `;
8243
8272
 
@@ -8282,7 +8311,8 @@ snapshot[`Deno.inspect(Page) [auto] 3`] = `
8282
8311
  replyAuthorization: ReplyAuthorization {},
8283
8312
  announceAuthorization: AnnounceAuthorization {},
8284
8313
  width: 123,
8285
- height: 123
8314
+ height: 123,
8315
+ digestMultibase: "hello"
8286
8316
  }'
8287
8317
  `;
8288
8318
 
@@ -8329,6 +8359,7 @@ snapshot[`Deno.inspect(Person) [auto] 1`] = `
8329
8359
  preferredUsernames: [ "hello", <en> "hello" ],
8330
8360
  publicKey: CryptographicKey {},
8331
8361
  assertionMethod: Multikey {},
8362
+ gateway: URL "https://gateway.example/",
8332
8363
  manuallyApprovesFollowers: true,
8333
8364
  inbox: OrderedCollection {},
8334
8365
  outbox: OrderedCollection {},
@@ -8395,6 +8426,7 @@ snapshot[`Deno.inspect(Person) [auto] 2`] = `
8395
8426
  preferredUsernames: [ "hello", <en> "hello" ],
8396
8427
  publicKey: URL "https://example.com/",
8397
8428
  assertionMethod: URL "https://example.com/",
8429
+ gateway: URL "https://gateway.example/",
8398
8430
  manuallyApprovesFollowers: true,
8399
8431
  inbox: URL "https://example.com/",
8400
8432
  outbox: URL "https://example.com/",
@@ -8461,6 +8493,7 @@ snapshot[`Deno.inspect(Person) [auto] 3`] = `
8461
8493
  preferredUsernames: [ "hello", "hello" ],
8462
8494
  publicKeys: [ CryptographicKey {}, CryptographicKey {} ],
8463
8495
  assertionMethods: [ Multikey {}, Multikey {} ],
8496
+ gateways: [ URL "https://gateway.example/", URL "https://gateway.example/" ],
8464
8497
  manuallyApprovesFollowers: true,
8465
8498
  inbox: OrderedCollection {},
8466
8499
  outbox: OrderedCollection {},
@@ -9553,6 +9586,7 @@ snapshot[`Deno.inspect(Service) [auto] 1`] = `
9553
9586
  preferredUsernames: [ "hello", <en> "hello" ],
9554
9587
  publicKey: CryptographicKey {},
9555
9588
  assertionMethod: Multikey {},
9589
+ gateway: URL "https://gateway.example/",
9556
9590
  manuallyApprovesFollowers: true,
9557
9591
  inbox: OrderedCollection {},
9558
9592
  outbox: OrderedCollection {},
@@ -9619,6 +9653,7 @@ snapshot[`Deno.inspect(Service) [auto] 2`] = `
9619
9653
  preferredUsernames: [ "hello", <en> "hello" ],
9620
9654
  publicKey: URL "https://example.com/",
9621
9655
  assertionMethod: URL "https://example.com/",
9656
+ gateway: URL "https://gateway.example/",
9622
9657
  manuallyApprovesFollowers: true,
9623
9658
  inbox: URL "https://example.com/",
9624
9659
  outbox: URL "https://example.com/",
@@ -9685,6 +9720,7 @@ snapshot[`Deno.inspect(Service) [auto] 3`] = `
9685
9720
  preferredUsernames: [ "hello", "hello" ],
9686
9721
  publicKeys: [ CryptographicKey {}, CryptographicKey {} ],
9687
9722
  assertionMethods: [ Multikey {}, Multikey {} ],
9723
+ gateways: [ URL "https://gateway.example/", URL "https://gateway.example/" ],
9688
9724
  manuallyApprovesFollowers: true,
9689
9725
  inbox: OrderedCollection {},
9690
9726
  outbox: OrderedCollection {},
@@ -10643,7 +10679,8 @@ snapshot[`Deno.inspect(Video) [auto] 1`] = `
10643
10679
  replyAuthorization: ReplyAuthorization {},
10644
10680
  announceAuthorization: AnnounceAuthorization {},
10645
10681
  width: 123,
10646
- height: 123
10682
+ height: 123,
10683
+ digestMultibase: "hello"
10647
10684
  }'
10648
10685
  `;
10649
10686
 
@@ -10688,7 +10725,8 @@ snapshot[`Deno.inspect(Video) [auto] 2`] = `
10688
10725
  replyAuthorization: URL "https://example.com/",
10689
10726
  announceAuthorization: URL "https://example.com/",
10690
10727
  width: 123,
10691
- height: 123
10728
+ height: 123,
10729
+ digestMultibase: "hello"
10692
10730
  }'
10693
10731
  `;
10694
10732
 
@@ -10733,7 +10771,8 @@ snapshot[`Deno.inspect(Video) [auto] 3`] = `
10733
10771
  replyAuthorization: ReplyAuthorization {},
10734
10772
  announceAuthorization: AnnounceAuthorization {},
10735
10773
  width: 123,
10736
- height: 123
10774
+ height: 123,
10775
+ digestMultibase: "hello"
10737
10776
  }'
10738
10777
  `;
10739
10778
 
@@ -7,6 +7,7 @@ entity: true
7
7
  description: Describes a software application.
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/audio.yaml CHANGED
@@ -7,6 +7,7 @@ entity: true
7
7
  description: Represents an audio document of any kind.
8
8
  defaultContext:
9
9
  - "https://www.w3.org/ns/activitystreams"
10
- - "https://w3id.org/security/data-integrity/v1"
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/document.yaml CHANGED
@@ -7,7 +7,8 @@ entity: true
7
7
  description: Represents a document of any kind.
8
8
  defaultContext:
9
9
  - "https://www.w3.org/ns/activitystreams"
10
- - "https://w3id.org/security/data-integrity/v1"
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
 
13
14
  properties:
@@ -30,3 +31,15 @@ properties:
30
31
  device-independent pixels of the linked resource.
31
32
  range:
32
33
  - "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
34
+
35
+ - singularName: digestMultibase
36
+ functional: true
37
+ compactName: digestMultibase
38
+ uri: "https://www.w3.org/ns/credentials/v2#digestMultibase"
39
+ description: |
40
+ The multibase-encoded integrity digest of an external resource represented
41
+ by this document.
42
+
43
+ See [FEP-ef61](https://w3id.org/fep/ef61) for details.
44
+ range:
45
+ - "http://www.w3.org/2001/XMLSchema#string"
package/src/group.yaml CHANGED
@@ -7,6 +7,7 @@ entity: true
7
7
  description: Represents a formal or informal collective of Actors.
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/image.yaml CHANGED
@@ -7,6 +7,7 @@ entity: true
7
7
  description: An image document of any kind.
8
8
  defaultContext:
9
9
  - "https://www.w3.org/ns/activitystreams"
10
- - "https://w3id.org/security/data-integrity/v1"
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/link.yaml CHANGED
@@ -12,7 +12,9 @@ description: |
12
12
  object) to the resource identified by the `href`. Properties of
13
13
  the {@link Link} are properties of the reference as opposed to properties of
14
14
  the resource.
15
- defaultContext: "https://www.w3.org/ns/activitystreams"
15
+ defaultContext:
16
+ - "https://www.w3.org/ns/activitystreams"
17
+ - "https://w3id.org/fep/ef61"
16
18
 
17
19
  properties:
18
20
  - singularName: href
@@ -48,6 +50,17 @@ properties:
48
50
  range:
49
51
  - "http://www.w3.org/2001/XMLSchema#string"
50
52
 
53
+ - singularName: digestMultibase
54
+ functional: true
55
+ compactName: digestMultibase
56
+ uri: "https://www.w3.org/ns/credentials/v2#digestMultibase"
57
+ description: |
58
+ The multibase-encoded integrity digest of the linked resource.
59
+
60
+ See [FEP-ef61](https://w3id.org/fep/ef61) for details.
61
+ range:
62
+ - "http://www.w3.org/2001/XMLSchema#string"
63
+
51
64
  - pluralName: names
52
65
  singularName: name
53
66
  singularAccessor: true