@fedify/fedify 0.10.0-dev.194 → 0.10.0-dev.196

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.
Files changed (179) hide show
  1. package/CHANGES.md +41 -1
  2. package/esm/deps/jsr.io/@std/encoding/0.224.3/base64url.js +83 -0
  3. package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/mod.js +1 -1
  4. package/esm/federation/handler.js +1 -1
  5. package/esm/federation/middleware.js +18 -1
  6. package/esm/nodeinfo/types.js +1 -1
  7. package/esm/runtime/key.js +82 -0
  8. package/esm/testing/fixtures/w3id.org/security/multikey/v1 +35 -0
  9. package/esm/testing/fixtures/www.w3.org/ns/did/v1 +58 -0
  10. package/esm/vocab/application.yaml +15 -1
  11. package/esm/vocab/group.yaml +15 -1
  12. package/esm/vocab/multikey.yaml +33 -0
  13. package/esm/vocab/organization.yaml +15 -1
  14. package/esm/vocab/person.yaml +15 -1
  15. package/esm/vocab/service.yaml +15 -1
  16. package/esm/vocab/vocab.js +986 -13
  17. package/package.json +4 -1
  18. package/types/codegen/type.d.ts.map +1 -1
  19. package/types/deps/jsr.io/@std/async/{0.224.1 → 0.224.2}/delay.d.ts.map +1 -1
  20. package/types/deps/jsr.io/@std/encoding/0.224.3/base64url.d.ts +38 -0
  21. package/types/deps/jsr.io/@std/encoding/0.224.3/base64url.d.ts.map +1 -0
  22. package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/common.d.ts.map +1 -1
  23. package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/encoding.d.ts.map +1 -1
  24. package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/language.d.ts.map +1 -1
  25. package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/media_type.d.ts.map +1 -1
  26. package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/negotiation.d.ts.map +1 -1
  27. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/_common/assert_path.d.ts.map +1 -0
  28. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/_common/basename.d.ts.map +1 -0
  29. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/_common/constants.d.ts.map +1 -0
  30. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/_common/dirname.d.ts.map +1 -0
  31. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/_common/normalize.d.ts.map +1 -0
  32. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/_common/normalize_string.d.ts.map +1 -0
  33. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/_common/strip_trailing_separators.d.ts.map +1 -0
  34. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/posix/_util.d.ts.map +1 -0
  35. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/posix/basename.d.ts.map +1 -0
  36. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/posix/dirname.d.ts.map +1 -0
  37. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/posix/extname.d.ts.map +1 -0
  38. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/posix/join.d.ts.map +1 -0
  39. package/types/deps/jsr.io/@std/path/1.0.0-rc.1/posix/normalize.d.ts.map +1 -0
  40. package/types/deps/jsr.io/@std/semver/0.224.3/_constants.d.ts.map +1 -0
  41. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_shared.d.ts.map +1 -1
  42. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_test_comparator_set.d.ts.map +1 -1
  43. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/can_parse.d.ts.map +1 -1
  44. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/compare.d.ts.map +1 -1
  45. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/constants.d.ts.map +1 -1
  46. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/difference.d.ts.map +1 -1
  47. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/equals.d.ts.map +1 -1
  48. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/format.d.ts.map +1 -1
  49. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/format_range.d.ts.map +1 -1
  50. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_or_equal.d.ts.map +1 -1
  51. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_than.d.ts.map +1 -1
  52. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_than_range.d.ts.map +1 -1
  53. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/increment.d.ts.map +1 -1
  54. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/is_range.d.ts.map +1 -1
  55. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/is_semver.d.ts.map +1 -1
  56. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_or_equal.d.ts.map +1 -1
  57. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_than.d.ts.map +1 -1
  58. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_than_range.d.ts.map +1 -1
  59. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/max_satisfying.d.ts.map +1 -1
  60. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/min_satisfying.d.ts.map +1 -1
  61. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/mod.d.ts +1 -1
  62. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/mod.d.ts.map +1 -1
  63. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/not_equals.d.ts.map +1 -1
  64. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/parse.d.ts.map +1 -1
  65. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/parse_range.d.ts.map +1 -1
  66. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_intersects.d.ts.map +1 -1
  67. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_max.d.ts.map +1 -1
  68. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_min.d.ts.map +1 -1
  69. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/satisfies.d.ts.map +1 -1
  70. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/test_range.d.ts.map +1 -1
  71. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/try_parse.d.ts.map +1 -1
  72. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/try_parse_range.d.ts.map +1 -1
  73. package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/types.d.ts.map +1 -1
  74. package/types/deps/jsr.io/@std/text/{0.224.2 → 0.224.3}/_util.d.ts.map +1 -1
  75. package/types/deps/jsr.io/@std/text/{0.224.2 → 0.224.3}/case.d.ts.map +1 -1
  76. package/types/deps/jsr.io/@std/text/{0.224.2 → 0.224.3}/closest_string.d.ts.map +1 -1
  77. package/types/deps/jsr.io/@std/text/{0.224.2 → 0.224.3}/compare_similarity.d.ts.map +1 -1
  78. package/types/deps/jsr.io/@std/text/{0.224.2 → 0.224.3}/levenshtein_distance.d.ts.map +1 -1
  79. package/types/deps/jsr.io/@std/text/0.224.3/mod.d.ts.map +1 -0
  80. package/types/deps/jsr.io/@std/text/{0.224.2 → 0.224.3}/word_similarity_sort.d.ts.map +1 -1
  81. package/types/deps/jsr.io/@std/url/{0.224.0 → 0.224.1}/_strip.d.ts.map +1 -1
  82. package/types/deps/jsr.io/@std/url/0.224.1/basename.d.ts.map +1 -0
  83. package/types/deps/jsr.io/@std/url/0.224.1/dirname.d.ts.map +1 -0
  84. package/types/deps/jsr.io/@std/url/0.224.1/extname.d.ts.map +1 -0
  85. package/types/deps/jsr.io/@std/url/0.224.1/join.d.ts.map +1 -0
  86. package/types/deps/jsr.io/@std/url/0.224.1/mod.d.ts.map +1 -0
  87. package/types/deps/jsr.io/@std/url/0.224.1/normalize.d.ts.map +1 -0
  88. package/types/federation/context.d.ts +6 -1
  89. package/types/federation/context.d.ts.map +1 -1
  90. package/types/federation/middleware.d.ts.map +1 -1
  91. package/types/nodeinfo/types.d.ts +1 -1
  92. package/types/runtime/key.d.ts +20 -0
  93. package/types/runtime/key.d.ts.map +1 -1
  94. package/types/vocab/vocab.d.ts +249 -0
  95. package/types/vocab/vocab.d.ts.map +1 -1
  96. package/types/deps/jsr.io/@std/assert/0.226.0/assert.d.ts.map +0 -1
  97. package/types/deps/jsr.io/@std/assert/0.226.0/assertion_error.d.ts.map +0 -1
  98. package/types/deps/jsr.io/@std/semver/0.224.2/_constants.d.ts.map +0 -1
  99. package/types/deps/jsr.io/@std/text/0.224.2/mod.d.ts.map +0 -1
  100. package/types/deps/jsr.io/@std/url/0.224.0/basename.d.ts.map +0 -1
  101. package/types/deps/jsr.io/@std/url/0.224.0/dirname.d.ts.map +0 -1
  102. package/types/deps/jsr.io/@std/url/0.224.0/extname.d.ts.map +0 -1
  103. package/types/deps/jsr.io/@std/url/0.224.0/join.d.ts.map +0 -1
  104. package/types/deps/jsr.io/@std/url/0.224.0/mod.d.ts.map +0 -1
  105. package/types/deps/jsr.io/@std/url/0.224.0/normalize.d.ts.map +0 -1
  106. /package/esm/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/common.js +0 -0
  107. /package/esm/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/encoding.js +0 -0
  108. /package/esm/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/language.js +0 -0
  109. /package/esm/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/media_type.js +0 -0
  110. /package/esm/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/negotiation.js +0 -0
  111. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_constants.js +0 -0
  112. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_shared.js +0 -0
  113. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_test_comparator_set.js +0 -0
  114. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/can_parse.js +0 -0
  115. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/compare.js +0 -0
  116. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/constants.js +0 -0
  117. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/difference.js +0 -0
  118. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/equals.js +0 -0
  119. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/format.js +0 -0
  120. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/format_range.js +0 -0
  121. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_or_equal.js +0 -0
  122. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_than.js +0 -0
  123. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_than_range.js +0 -0
  124. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/increment.js +0 -0
  125. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/is_range.js +0 -0
  126. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/is_semver.js +0 -0
  127. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_or_equal.js +0 -0
  128. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_than.js +0 -0
  129. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_than_range.js +0 -0
  130. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/max_satisfying.js +0 -0
  131. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/min_satisfying.js +0 -0
  132. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/not_equals.js +0 -0
  133. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/parse.js +0 -0
  134. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/parse_range.js +0 -0
  135. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_intersects.js +0 -0
  136. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_max.js +0 -0
  137. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_min.js +0 -0
  138. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/satisfies.js +0 -0
  139. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/test_range.js +0 -0
  140. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/try_parse.js +0 -0
  141. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/try_parse_range.js +0 -0
  142. /package/esm/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/types.js +0 -0
  143. /package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/common.d.ts +0 -0
  144. /package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/encoding.d.ts +0 -0
  145. /package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/language.d.ts +0 -0
  146. /package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/_negotiation/media_type.d.ts +0 -0
  147. /package/types/deps/jsr.io/@std/http/{0.224.3 → 0.224.4}/negotiation.d.ts +0 -0
  148. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_constants.d.ts +0 -0
  149. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_shared.d.ts +0 -0
  150. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/_test_comparator_set.d.ts +0 -0
  151. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/can_parse.d.ts +0 -0
  152. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/compare.d.ts +0 -0
  153. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/constants.d.ts +0 -0
  154. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/difference.d.ts +0 -0
  155. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/equals.d.ts +0 -0
  156. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/format.d.ts +0 -0
  157. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/format_range.d.ts +0 -0
  158. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_or_equal.d.ts +0 -0
  159. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_than.d.ts +0 -0
  160. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/greater_than_range.d.ts +0 -0
  161. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/increment.d.ts +0 -0
  162. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/is_range.d.ts +0 -0
  163. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/is_semver.d.ts +0 -0
  164. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_or_equal.d.ts +0 -0
  165. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_than.d.ts +0 -0
  166. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/less_than_range.d.ts +0 -0
  167. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/max_satisfying.d.ts +0 -0
  168. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/min_satisfying.d.ts +0 -0
  169. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/not_equals.d.ts +0 -0
  170. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/parse.d.ts +0 -0
  171. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/parse_range.d.ts +0 -0
  172. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_intersects.d.ts +0 -0
  173. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_max.d.ts +0 -0
  174. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/range_min.d.ts +0 -0
  175. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/satisfies.d.ts +0 -0
  176. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/test_range.d.ts +0 -0
  177. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/try_parse.d.ts +0 -0
  178. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/try_parse_range.d.ts +0 -0
  179. /package/types/deps/jsr.io/@std/semver/{0.224.2 → 0.224.3}/types.d.ts +0 -0
@@ -5,7 +5,7 @@ import * as dntShim from "../_dnt.shims.js";
5
5
  import jsonld from "jsonld";
6
6
  import { parseLanguageTag } from "@phensley/language-tag";
7
7
  import { fetchDocumentLoader, } from "../runtime/docloader.js";
8
- import { exportSpki, importSpki } from "../runtime/key.js";
8
+ import { exportMultibaseKey, exportSpki, importMultibaseKey, importSpki, } from "../runtime/key.js";
9
9
  import { LanguageString } from "../runtime/langstr.js";
10
10
  /** Describes an object of any kind. The Object type serves as the base type for
11
11
  * most of the other kinds of objects defined in the Activity Vocabulary,
@@ -3934,6 +3934,319 @@ export class CryptographicKey {
3934
3934
  return "CryptographicKey " + inspect(proxy, options);
3935
3935
  }
3936
3936
  }
3937
+ /** Represents a key owned by an actor according to [FEP-521a: Representing
3938
+ * actor's public keys.][1]
3939
+ *
3940
+ * [1]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
3941
+ */
3942
+ export class Multikey {
3943
+ #documentLoader;
3944
+ #contextLoader;
3945
+ id;
3946
+ get _documentLoader() {
3947
+ return this.#documentLoader;
3948
+ }
3949
+ get _contextLoader() {
3950
+ return this.#contextLoader;
3951
+ }
3952
+ /**
3953
+ * The type URI of {@link Multikey}: `https://w3id.org/security#Multikey`.
3954
+ */
3955
+ static get typeId() {
3956
+ return new URL("https://w3id.org/security#Multikey");
3957
+ }
3958
+ #_2yr3eUBTP6cNcyaxKzAXWjFsnGzN = [];
3959
+ #_4XLHbsR2gLVWU3NpEqKt9wANzn4F = [];
3960
+ /**
3961
+ * Constructs a new instance of Multikey with the given values.
3962
+ * @param values The values to initialize the instance with.
3963
+ * @param options The options to use for initialization.
3964
+ */
3965
+ constructor(values, { documentLoader, contextLoader, } = {}) {
3966
+ this.#documentLoader = documentLoader;
3967
+ this.#contextLoader = contextLoader;
3968
+ this.id = values.id ?? null;
3969
+ if ("controller" in values && values.controller != null) {
3970
+ this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN = [values.controller];
3971
+ }
3972
+ if ("publicKey" in values && values.publicKey != null) {
3973
+ this.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F = [values.publicKey];
3974
+ }
3975
+ }
3976
+ /**
3977
+ * Clones this instance, optionally updating it with the given values.
3978
+ * @param values The values to update the clone with.
3979
+ * @options The options to use for cloning.
3980
+ * @returns The cloned instance.
3981
+ */
3982
+ clone(values = {}, options = {}) {
3983
+ // @ts-ignore: this.constructor is not recognized as a constructor, but it is.
3984
+ const clone = new this.constructor({ id: values.id }, options);
3985
+ clone.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN = this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN;
3986
+ if ("controller" in values && values.controller != null) {
3987
+ clone.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN = [values.controller];
3988
+ }
3989
+ clone.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F = this.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F;
3990
+ if ("publicKey" in values && values.publicKey != null) {
3991
+ clone.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F = [values.publicKey];
3992
+ }
3993
+ return clone;
3994
+ }
3995
+ async #fetchController(url, options = {}) {
3996
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
3997
+ fetchDocumentLoader;
3998
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
3999
+ fetchDocumentLoader;
4000
+ const { document } = await documentLoader(url.href);
4001
+ try {
4002
+ return await Application.fromJsonLd(document, { documentLoader, contextLoader });
4003
+ }
4004
+ catch (e) {
4005
+ if (!(e instanceof TypeError))
4006
+ throw e;
4007
+ }
4008
+ try {
4009
+ return await Group.fromJsonLd(document, { documentLoader, contextLoader });
4010
+ }
4011
+ catch (e) {
4012
+ if (!(e instanceof TypeError))
4013
+ throw e;
4014
+ }
4015
+ try {
4016
+ return await Organization.fromJsonLd(document, { documentLoader, contextLoader });
4017
+ }
4018
+ catch (e) {
4019
+ if (!(e instanceof TypeError))
4020
+ throw e;
4021
+ }
4022
+ try {
4023
+ return await Person.fromJsonLd(document, { documentLoader, contextLoader });
4024
+ }
4025
+ catch (e) {
4026
+ if (!(e instanceof TypeError))
4027
+ throw e;
4028
+ }
4029
+ try {
4030
+ return await Service.fromJsonLd(document, { documentLoader, contextLoader });
4031
+ }
4032
+ catch (e) {
4033
+ if (!(e instanceof TypeError))
4034
+ throw e;
4035
+ }
4036
+ throw new TypeError("Expected an object of any type of: " +
4037
+ [
4038
+ "https://www.w3.org/ns/activitystreams#Application",
4039
+ "https://www.w3.org/ns/activitystreams#Group",
4040
+ "https://www.w3.org/ns/activitystreams#Organization",
4041
+ "https://www.w3.org/ns/activitystreams#Person",
4042
+ "https://www.w3.org/ns/activitystreams#Service",
4043
+ ].join(", "));
4044
+ }
4045
+ /**
4046
+ * Similar to
4047
+ * {@link Multikey.getController},
4048
+ * but returns its `@id` URL instead of the object itself.
4049
+ */
4050
+ get controllerId() {
4051
+ if (this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN.length < 1)
4052
+ return null;
4053
+ const v = this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN[0];
4054
+ if (v instanceof URL)
4055
+ return v;
4056
+ return v.id;
4057
+ }
4058
+ /** An actor who owns this key.
4059
+ */
4060
+ async getController(options = {}) {
4061
+ if (this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN.length < 1)
4062
+ return null;
4063
+ const v = this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN[0];
4064
+ if (v instanceof URL) {
4065
+ const fetched = await this.#fetchController(v, options);
4066
+ this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN[0] = fetched;
4067
+ return fetched;
4068
+ }
4069
+ return v;
4070
+ }
4071
+ /** A [Multibase]-encoded value of a [Multicodec] prefix and the key.
4072
+ *
4073
+ * [Multibase]: https://www.w3.org/TR/vc-data-integrity/#multibase-0
4074
+ * [Multicodec]: https://github.com/multiformats/multicodec/
4075
+ */
4076
+ get publicKey() {
4077
+ if (this.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F.length < 1)
4078
+ return null;
4079
+ return this.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F[0];
4080
+ }
4081
+ /**
4082
+ * Converts this object to a JSON-LD structure.
4083
+ * @returns The JSON-LD representation of this object.
4084
+ */
4085
+ async toJsonLd(options = {}) {
4086
+ options = {
4087
+ ...options,
4088
+ contextLoader: options.contextLoader ?? fetchDocumentLoader,
4089
+ };
4090
+ // deno-lint-ignore no-unused-vars prefer-const
4091
+ let array;
4092
+ const values = {};
4093
+ array = [];
4094
+ for (const v of this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN) {
4095
+ array.push(v instanceof URL
4096
+ ? { "@id": v.href }
4097
+ : v instanceof Application
4098
+ ? await v.toJsonLd(options)
4099
+ : v instanceof Group
4100
+ ? await v.toJsonLd(options)
4101
+ : v instanceof Organization
4102
+ ? await v.toJsonLd(options)
4103
+ : v instanceof Person
4104
+ ? await v.toJsonLd(options)
4105
+ : await v.toJsonLd(options));
4106
+ }
4107
+ if (array.length > 0) {
4108
+ values["https://w3id.org/security#controller"] = array;
4109
+ }
4110
+ array = [];
4111
+ for (const v of this.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F) {
4112
+ array.push({
4113
+ "@type": "https://w3id.org/security#multibase",
4114
+ "@value": await exportMultibaseKey(v),
4115
+ });
4116
+ }
4117
+ if (array.length > 0) {
4118
+ values["https://w3id.org/security#publicKeyMultibase"] = array;
4119
+ }
4120
+ values["@type"] = ["https://w3id.org/security#Multikey"];
4121
+ if (this.id)
4122
+ values["@id"] = this.id.href;
4123
+ if (options.expand) {
4124
+ return await jsonld.expand(values, { documentLoader: options.contextLoader });
4125
+ }
4126
+ return await jsonld.compact(values, "https://w3id.org/security/multikey/v1", { documentLoader: options.contextLoader });
4127
+ }
4128
+ /**
4129
+ * Converts a JSON-LD structure to an object of this type.
4130
+ * @param json The JSON-LD structure to convert.
4131
+ * @returns The object of this type.
4132
+ * @throws {TypeError} If the given `json` is invalid.
4133
+ */
4134
+ static async fromJsonLd(json, options = {}) {
4135
+ if (typeof json === "undefined") {
4136
+ throw new TypeError("Invalid JSON-LD: undefined.");
4137
+ }
4138
+ else if (json === null)
4139
+ throw new TypeError("Invalid JSON-LD: null.");
4140
+ options = {
4141
+ ...options,
4142
+ documentLoader: options.documentLoader ?? fetchDocumentLoader,
4143
+ contextLoader: options.contextLoader ?? fetchDocumentLoader,
4144
+ };
4145
+ // deno-lint-ignore no-explicit-any
4146
+ let values;
4147
+ if (globalThis.Object.keys(json).length == 0) {
4148
+ values = {};
4149
+ }
4150
+ else {
4151
+ const expanded = await jsonld.expand(json, {
4152
+ documentLoader: options.contextLoader,
4153
+ keepFreeFloatingNodes: true,
4154
+ });
4155
+ values =
4156
+ // deno-lint-ignore no-explicit-any
4157
+ (expanded[0] ?? {});
4158
+ }
4159
+ if ("@type" in values) {
4160
+ if (!values["@type"].includes("https://w3id.org/security#Multikey")) {
4161
+ throw new TypeError("Invalid type: " + values["@type"]);
4162
+ }
4163
+ }
4164
+ const instance = new this({ id: "@id" in values ? new URL(values["@id"]) : undefined }, options);
4165
+ const _2yr3eUBTP6cNcyaxKzAXWjFsnGzN = [];
4166
+ for (const v of values["https://w3id.org/security#controller"] ?? []) {
4167
+ if (v == null)
4168
+ continue;
4169
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
4170
+ globalThis.Object.keys(v).length === 1) {
4171
+ _2yr3eUBTP6cNcyaxKzAXWjFsnGzN.push(new URL(v["@id"]));
4172
+ continue;
4173
+ }
4174
+ const decoded = typeof v === "object" && "@type" in v &&
4175
+ Array.isArray(v["@type"]) &&
4176
+ v["@type"].includes("https://www.w3.org/ns/activitystreams#Application")
4177
+ ? await Application.fromJsonLd(v, options)
4178
+ : typeof v === "object" && "@type" in v &&
4179
+ Array.isArray(v["@type"]) &&
4180
+ v["@type"].includes("https://www.w3.org/ns/activitystreams#Group")
4181
+ ? await Group.fromJsonLd(v, options)
4182
+ : typeof v === "object" && "@type" in v &&
4183
+ Array.isArray(v["@type"]) &&
4184
+ v["@type"].includes("https://www.w3.org/ns/activitystreams#Organization")
4185
+ ? await Organization.fromJsonLd(v, options)
4186
+ : typeof v === "object" && "@type" in v &&
4187
+ Array.isArray(v["@type"]) &&
4188
+ v["@type"].includes("https://www.w3.org/ns/activitystreams#Person")
4189
+ ? await Person.fromJsonLd(v, options)
4190
+ : typeof v === "object" && "@type" in v &&
4191
+ Array.isArray(v["@type"]) &&
4192
+ v["@type"].includes("https://www.w3.org/ns/activitystreams#Service")
4193
+ ? await Service.fromJsonLd(v, options)
4194
+ : undefined;
4195
+ if (typeof decoded === "undefined")
4196
+ continue;
4197
+ _2yr3eUBTP6cNcyaxKzAXWjFsnGzN.push(decoded);
4198
+ }
4199
+ instance.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN = _2yr3eUBTP6cNcyaxKzAXWjFsnGzN;
4200
+ const _4XLHbsR2gLVWU3NpEqKt9wANzn4F = [];
4201
+ for (const v of values["https://w3id.org/security#publicKeyMultibase"] ?? []) {
4202
+ if (v == null)
4203
+ continue;
4204
+ _4XLHbsR2gLVWU3NpEqKt9wANzn4F.push(await importMultibaseKey(v["@value"]));
4205
+ }
4206
+ instance.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F = _4XLHbsR2gLVWU3NpEqKt9wANzn4F;
4207
+ return instance;
4208
+ }
4209
+ _getCustomInspectProxy() {
4210
+ const proxy = {};
4211
+ if (this.id != null) {
4212
+ proxy.id = {
4213
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(this.id.href, options),
4214
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(this.id.href, options),
4215
+ };
4216
+ }
4217
+ const _2yr3eUBTP6cNcyaxKzAXWjFsnGzN = this.#_2yr3eUBTP6cNcyaxKzAXWjFsnGzN
4218
+ // deno-lint-ignore no-explicit-any
4219
+ .map((v) => v instanceof URL
4220
+ ? {
4221
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
4222
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
4223
+ }
4224
+ : v);
4225
+ if (_2yr3eUBTP6cNcyaxKzAXWjFsnGzN.length == 1) {
4226
+ proxy.controller = _2yr3eUBTP6cNcyaxKzAXWjFsnGzN[0];
4227
+ }
4228
+ const _4XLHbsR2gLVWU3NpEqKt9wANzn4F = this.#_4XLHbsR2gLVWU3NpEqKt9wANzn4F
4229
+ // deno-lint-ignore no-explicit-any
4230
+ .map((v) => v instanceof URL
4231
+ ? {
4232
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
4233
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
4234
+ }
4235
+ : v);
4236
+ if (_4XLHbsR2gLVWU3NpEqKt9wANzn4F.length == 1) {
4237
+ proxy.publicKey = _4XLHbsR2gLVWU3NpEqKt9wANzn4F[0];
4238
+ }
4239
+ return proxy;
4240
+ }
4241
+ [Symbol.for("Deno.customInspect")](inspect, options) {
4242
+ const proxy = this._getCustomInspectProxy();
4243
+ return "Multikey " + inspect(proxy, options);
4244
+ }
4245
+ [Symbol.for("nodejs.util.inspect.custom")](_depth, options, inspect) {
4246
+ const proxy = this._getCustomInspectProxy();
4247
+ return "Multikey " + inspect(proxy, options);
4248
+ }
4249
+ }
3937
4250
  /** An Activity is a subtype of {@link Object} that describes some form of action
3938
4251
  * that may happen, is currently happening, or has already happened.
3939
4252
  * The {@link Activity} type itself serves as an abstract base type for all types
@@ -4772,6 +5085,7 @@ export class Application extends Object {
4772
5085
  }
4773
5086
  #_3isuDgRAKSntq9XdbjiNxjwyPZAf = [];
4774
5087
  #_axq166E2eZADq34V4MYUc8KMZdC = [];
5088
+ #_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
4775
5089
  #_36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
4776
5090
  #_3ghX3VfZXXbLvhCRH7QJqpzLrXjB = [];
4777
5091
  #_41QwhqJouoLg3h8dRPKat21brynC = [];
@@ -4813,6 +5127,17 @@ export class Application extends Object {
4813
5127
  }
4814
5128
  this.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
4815
5129
  }
5130
+ if ("assertionMethod" in values && values.assertionMethod != null) {
5131
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
5132
+ }
5133
+ if ("assertionMethods" in values && values.assertionMethods != null) {
5134
+ if ("assertionMethod" in values &&
5135
+ values.assertionMethod != null) {
5136
+ throw new TypeError("Cannot initialize both assertionMethod and " +
5137
+ "assertionMethods at the same time.");
5138
+ }
5139
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
5140
+ }
4816
5141
  if ("manuallyApprovesFollowers" in values &&
4817
5142
  values.manuallyApprovesFollowers != null) {
4818
5143
  this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = [values.manuallyApprovesFollowers];
@@ -4883,6 +5208,18 @@ export class Application extends Object {
4883
5208
  }
4884
5209
  clone.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
4885
5210
  }
5211
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
5212
+ if ("assertionMethod" in values && values.assertionMethod != null) {
5213
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
5214
+ }
5215
+ if ("assertionMethods" in values && values.assertionMethods != null) {
5216
+ if ("assertionMethod" in values &&
5217
+ values.assertionMethod != null) {
5218
+ throw new TypeError("Cannot update both assertionMethod and " +
5219
+ "assertionMethods at the same time.");
5220
+ }
5221
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
5222
+ }
4886
5223
  clone.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA;
4887
5224
  if ("manuallyApprovesFollowers" in values &&
4888
5225
  values.manuallyApprovesFollowers != null) {
@@ -5013,6 +5350,77 @@ export class Application extends Object {
5013
5350
  yield v;
5014
5351
  }
5015
5352
  }
5353
+ async #fetchAssertionMethod(url, options = {}) {
5354
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
5355
+ fetchDocumentLoader;
5356
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
5357
+ fetchDocumentLoader;
5358
+ const { document } = await documentLoader(url.href);
5359
+ try {
5360
+ return await Multikey.fromJsonLd(document, { documentLoader, contextLoader });
5361
+ }
5362
+ catch (e) {
5363
+ if (!(e instanceof TypeError))
5364
+ throw e;
5365
+ }
5366
+ throw new TypeError("Expected an object of any type of: " +
5367
+ ["https://w3id.org/security#Multikey"].join(", "));
5368
+ }
5369
+ /**
5370
+ * Similar to
5371
+ * {@link Application.getAssertionMethod},
5372
+ * but returns its `@id` URL instead of the object itself.
5373
+ */
5374
+ get assertionMethodId() {
5375
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
5376
+ return null;
5377
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
5378
+ if (v instanceof URL)
5379
+ return v;
5380
+ return v.id;
5381
+ }
5382
+ /** Represents this actor's public keys. It serves as equivalent to
5383
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
5384
+ *
5385
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
5386
+ */
5387
+ async getAssertionMethod(options = {}) {
5388
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
5389
+ return null;
5390
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
5391
+ if (v instanceof URL) {
5392
+ const fetched = await this.#fetchAssertionMethod(v, options);
5393
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0] = fetched;
5394
+ return fetched;
5395
+ }
5396
+ return v;
5397
+ }
5398
+ /**
5399
+ * Similar to
5400
+ * {@link Application.getAssertionMethods},
5401
+ * but returns their `@id`s instead of the objects themselves.
5402
+ */
5403
+ get assertionMethodIds() {
5404
+ return this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
5405
+ }
5406
+ /** Represents this actor's public keys. It serves as equivalent to
5407
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
5408
+ *
5409
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
5410
+ */
5411
+ async *getAssertionMethods(options = {}) {
5412
+ const vs = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
5413
+ for (let i = 0; i < vs.length; i++) {
5414
+ const v = vs[i];
5415
+ if (v instanceof URL) {
5416
+ const fetched = await this.#fetchAssertionMethod(v, options);
5417
+ vs[i] = fetched;
5418
+ yield fetched;
5419
+ continue;
5420
+ }
5421
+ yield v;
5422
+ }
5423
+ }
5016
5424
  /** When `true`, conveys that for this actor, follow requests are not usually
5017
5425
  * automatically approved, but instead are examined by a person who may accept
5018
5426
  * or reject the request, at some time in the future. Setting of `false`
@@ -5386,6 +5794,13 @@ export class Application extends Object {
5386
5794
  if (array.length > 0)
5387
5795
  values["https://w3id.org/security#publicKey"] = array;
5388
5796
  array = [];
5797
+ for (const v of this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3) {
5798
+ array.push(v instanceof URL ? { "@id": v.href } : await v.toJsonLd(options));
5799
+ }
5800
+ if (array.length > 0) {
5801
+ values["https://w3id.org/security#assertionMethod"] = array;
5802
+ }
5803
+ array = [];
5389
5804
  for (const v of this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA) {
5390
5805
  array.push({ "@value": v });
5391
5806
  }
@@ -5476,6 +5891,8 @@ export class Application extends Object {
5476
5891
  return await jsonld.compact(values, [
5477
5892
  "https://www.w3.org/ns/activitystreams",
5478
5893
  "https://w3id.org/security/v1",
5894
+ "https://www.w3.org/ns/did/v1",
5895
+ "https://w3id.org/security/multikey/v1",
5479
5896
  {
5480
5897
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
5481
5898
  "toot": "http://joinmastodon.org/ns#",
@@ -5559,6 +5976,18 @@ export class Application extends Object {
5559
5976
  _axq166E2eZADq34V4MYUc8KMZdC.push(await CryptographicKey.fromJsonLd(v, options));
5560
5977
  }
5561
5978
  instance.#_axq166E2eZADq34V4MYUc8KMZdC = _axq166E2eZADq34V4MYUc8KMZdC;
5979
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
5980
+ for (const v of values["https://w3id.org/security#assertionMethod"] ?? []) {
5981
+ if (v == null)
5982
+ continue;
5983
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
5984
+ globalThis.Object.keys(v).length === 1) {
5985
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(new URL(v["@id"]));
5986
+ continue;
5987
+ }
5988
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(await Multikey.fromJsonLd(v, options));
5989
+ }
5990
+ instance.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
5562
5991
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
5563
5992
  for (const v of values["https://www.w3.org/ns/activitystreams#manuallyApprovesFollowers"] ?? []) {
5564
5993
  if (v == null)
@@ -5709,6 +6138,22 @@ export class Application extends Object {
5709
6138
  _axq166E2eZADq34V4MYUc8KMZdC.length > 0) {
5710
6139
  proxy.publicKeys = _axq166E2eZADq34V4MYUc8KMZdC;
5711
6140
  }
6141
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3
6142
+ // deno-lint-ignore no-explicit-any
6143
+ .map((v) => v instanceof URL
6144
+ ? {
6145
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
6146
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
6147
+ }
6148
+ : v);
6149
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length == 1) {
6150
+ proxy.assertionMethod = _4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
6151
+ }
6152
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 1 ||
6153
+ !("assertionMethod" in proxy) &&
6154
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 0) {
6155
+ proxy.assertionMethods = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
6156
+ }
5712
6157
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA
5713
6158
  // deno-lint-ignore no-explicit-any
5714
6159
  .map((v) => v instanceof URL
@@ -8656,6 +9101,7 @@ export class Group extends Object {
8656
9101
  }
8657
9102
  #_3isuDgRAKSntq9XdbjiNxjwyPZAf = [];
8658
9103
  #_axq166E2eZADq34V4MYUc8KMZdC = [];
9104
+ #_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
8659
9105
  #_36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
8660
9106
  #_3ghX3VfZXXbLvhCRH7QJqpzLrXjB = [];
8661
9107
  #_41QwhqJouoLg3h8dRPKat21brynC = [];
@@ -8697,6 +9143,17 @@ export class Group extends Object {
8697
9143
  }
8698
9144
  this.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
8699
9145
  }
9146
+ if ("assertionMethod" in values && values.assertionMethod != null) {
9147
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
9148
+ }
9149
+ if ("assertionMethods" in values && values.assertionMethods != null) {
9150
+ if ("assertionMethod" in values &&
9151
+ values.assertionMethod != null) {
9152
+ throw new TypeError("Cannot initialize both assertionMethod and " +
9153
+ "assertionMethods at the same time.");
9154
+ }
9155
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
9156
+ }
8700
9157
  if ("manuallyApprovesFollowers" in values &&
8701
9158
  values.manuallyApprovesFollowers != null) {
8702
9159
  this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = [values.manuallyApprovesFollowers];
@@ -8767,6 +9224,18 @@ export class Group extends Object {
8767
9224
  }
8768
9225
  clone.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
8769
9226
  }
9227
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
9228
+ if ("assertionMethod" in values && values.assertionMethod != null) {
9229
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
9230
+ }
9231
+ if ("assertionMethods" in values && values.assertionMethods != null) {
9232
+ if ("assertionMethod" in values &&
9233
+ values.assertionMethod != null) {
9234
+ throw new TypeError("Cannot update both assertionMethod and " +
9235
+ "assertionMethods at the same time.");
9236
+ }
9237
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
9238
+ }
8770
9239
  clone.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA;
8771
9240
  if ("manuallyApprovesFollowers" in values &&
8772
9241
  values.manuallyApprovesFollowers != null) {
@@ -8863,33 +9332,104 @@ export class Group extends Object {
8863
9332
  }
8864
9333
  /** A public part of the key pair owned by this actor.
8865
9334
  */
8866
- async getPublicKey(options = {}) {
8867
- if (this.#_axq166E2eZADq34V4MYUc8KMZdC.length < 1)
9335
+ async getPublicKey(options = {}) {
9336
+ if (this.#_axq166E2eZADq34V4MYUc8KMZdC.length < 1)
9337
+ return null;
9338
+ const v = this.#_axq166E2eZADq34V4MYUc8KMZdC[0];
9339
+ if (v instanceof URL) {
9340
+ const fetched = await this.#fetchPublicKey(v, options);
9341
+ this.#_axq166E2eZADq34V4MYUc8KMZdC[0] = fetched;
9342
+ return fetched;
9343
+ }
9344
+ return v;
9345
+ }
9346
+ /**
9347
+ * Similar to
9348
+ * {@link Group.getPublicKeys},
9349
+ * but returns their `@id`s instead of the objects themselves.
9350
+ */
9351
+ get publicKeyIds() {
9352
+ return this.#_axq166E2eZADq34V4MYUc8KMZdC.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
9353
+ }
9354
+ /** A public part of the key pair owned by this actor.
9355
+ */
9356
+ async *getPublicKeys(options = {}) {
9357
+ const vs = this.#_axq166E2eZADq34V4MYUc8KMZdC;
9358
+ for (let i = 0; i < vs.length; i++) {
9359
+ const v = vs[i];
9360
+ if (v instanceof URL) {
9361
+ const fetched = await this.#fetchPublicKey(v, options);
9362
+ vs[i] = fetched;
9363
+ yield fetched;
9364
+ continue;
9365
+ }
9366
+ yield v;
9367
+ }
9368
+ }
9369
+ async #fetchAssertionMethod(url, options = {}) {
9370
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
9371
+ fetchDocumentLoader;
9372
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
9373
+ fetchDocumentLoader;
9374
+ const { document } = await documentLoader(url.href);
9375
+ try {
9376
+ return await Multikey.fromJsonLd(document, { documentLoader, contextLoader });
9377
+ }
9378
+ catch (e) {
9379
+ if (!(e instanceof TypeError))
9380
+ throw e;
9381
+ }
9382
+ throw new TypeError("Expected an object of any type of: " +
9383
+ ["https://w3id.org/security#Multikey"].join(", "));
9384
+ }
9385
+ /**
9386
+ * Similar to
9387
+ * {@link Group.getAssertionMethod},
9388
+ * but returns its `@id` URL instead of the object itself.
9389
+ */
9390
+ get assertionMethodId() {
9391
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
9392
+ return null;
9393
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
9394
+ if (v instanceof URL)
9395
+ return v;
9396
+ return v.id;
9397
+ }
9398
+ /** Represents this actor's public keys. It serves as equivalent to
9399
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
9400
+ *
9401
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
9402
+ */
9403
+ async getAssertionMethod(options = {}) {
9404
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
8868
9405
  return null;
8869
- const v = this.#_axq166E2eZADq34V4MYUc8KMZdC[0];
9406
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
8870
9407
  if (v instanceof URL) {
8871
- const fetched = await this.#fetchPublicKey(v, options);
8872
- this.#_axq166E2eZADq34V4MYUc8KMZdC[0] = fetched;
9408
+ const fetched = await this.#fetchAssertionMethod(v, options);
9409
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0] = fetched;
8873
9410
  return fetched;
8874
9411
  }
8875
9412
  return v;
8876
9413
  }
8877
9414
  /**
8878
9415
  * Similar to
8879
- * {@link Group.getPublicKeys},
9416
+ * {@link Group.getAssertionMethods},
8880
9417
  * but returns their `@id`s instead of the objects themselves.
8881
9418
  */
8882
- get publicKeyIds() {
8883
- return this.#_axq166E2eZADq34V4MYUc8KMZdC.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
9419
+ get assertionMethodIds() {
9420
+ return this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
8884
9421
  }
8885
- /** A public part of the key pair owned by this actor.
9422
+ /** Represents this actor's public keys. It serves as equivalent to
9423
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
9424
+ *
9425
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
8886
9426
  */
8887
- async *getPublicKeys(options = {}) {
8888
- const vs = this.#_axq166E2eZADq34V4MYUc8KMZdC;
9427
+ async *getAssertionMethods(options = {}) {
9428
+ const vs = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
8889
9429
  for (let i = 0; i < vs.length; i++) {
8890
9430
  const v = vs[i];
8891
9431
  if (v instanceof URL) {
8892
- const fetched = await this.#fetchPublicKey(v, options);
9432
+ const fetched = await this.#fetchAssertionMethod(v, options);
8893
9433
  vs[i] = fetched;
8894
9434
  yield fetched;
8895
9435
  continue;
@@ -9270,6 +9810,13 @@ export class Group extends Object {
9270
9810
  if (array.length > 0)
9271
9811
  values["https://w3id.org/security#publicKey"] = array;
9272
9812
  array = [];
9813
+ for (const v of this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3) {
9814
+ array.push(v instanceof URL ? { "@id": v.href } : await v.toJsonLd(options));
9815
+ }
9816
+ if (array.length > 0) {
9817
+ values["https://w3id.org/security#assertionMethod"] = array;
9818
+ }
9819
+ array = [];
9273
9820
  for (const v of this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA) {
9274
9821
  array.push({ "@value": v });
9275
9822
  }
@@ -9360,6 +9907,8 @@ export class Group extends Object {
9360
9907
  return await jsonld.compact(values, [
9361
9908
  "https://www.w3.org/ns/activitystreams",
9362
9909
  "https://w3id.org/security/v1",
9910
+ "https://www.w3.org/ns/did/v1",
9911
+ "https://w3id.org/security/multikey/v1",
9363
9912
  {
9364
9913
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
9365
9914
  "toot": "http://joinmastodon.org/ns#",
@@ -9443,6 +9992,18 @@ export class Group extends Object {
9443
9992
  _axq166E2eZADq34V4MYUc8KMZdC.push(await CryptographicKey.fromJsonLd(v, options));
9444
9993
  }
9445
9994
  instance.#_axq166E2eZADq34V4MYUc8KMZdC = _axq166E2eZADq34V4MYUc8KMZdC;
9995
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
9996
+ for (const v of values["https://w3id.org/security#assertionMethod"] ?? []) {
9997
+ if (v == null)
9998
+ continue;
9999
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
10000
+ globalThis.Object.keys(v).length === 1) {
10001
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(new URL(v["@id"]));
10002
+ continue;
10003
+ }
10004
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(await Multikey.fromJsonLd(v, options));
10005
+ }
10006
+ instance.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
9446
10007
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
9447
10008
  for (const v of values["https://www.w3.org/ns/activitystreams#manuallyApprovesFollowers"] ?? []) {
9448
10009
  if (v == null)
@@ -9593,6 +10154,22 @@ export class Group extends Object {
9593
10154
  _axq166E2eZADq34V4MYUc8KMZdC.length > 0) {
9594
10155
  proxy.publicKeys = _axq166E2eZADq34V4MYUc8KMZdC;
9595
10156
  }
10157
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3
10158
+ // deno-lint-ignore no-explicit-any
10159
+ .map((v) => v instanceof URL
10160
+ ? {
10161
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
10162
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
10163
+ }
10164
+ : v);
10165
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length == 1) {
10166
+ proxy.assertionMethod = _4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
10167
+ }
10168
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 1 ||
10169
+ !("assertionMethod" in proxy) &&
10170
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 0) {
10171
+ proxy.assertionMethods = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
10172
+ }
9596
10173
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA
9597
10174
  // deno-lint-ignore no-explicit-any
9598
10175
  .map((v) => v instanceof URL
@@ -11313,6 +11890,7 @@ export class Organization extends Object {
11313
11890
  }
11314
11891
  #_3isuDgRAKSntq9XdbjiNxjwyPZAf = [];
11315
11892
  #_axq166E2eZADq34V4MYUc8KMZdC = [];
11893
+ #_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
11316
11894
  #_36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
11317
11895
  #_3ghX3VfZXXbLvhCRH7QJqpzLrXjB = [];
11318
11896
  #_41QwhqJouoLg3h8dRPKat21brynC = [];
@@ -11354,6 +11932,17 @@ export class Organization extends Object {
11354
11932
  }
11355
11933
  this.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
11356
11934
  }
11935
+ if ("assertionMethod" in values && values.assertionMethod != null) {
11936
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
11937
+ }
11938
+ if ("assertionMethods" in values && values.assertionMethods != null) {
11939
+ if ("assertionMethod" in values &&
11940
+ values.assertionMethod != null) {
11941
+ throw new TypeError("Cannot initialize both assertionMethod and " +
11942
+ "assertionMethods at the same time.");
11943
+ }
11944
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
11945
+ }
11357
11946
  if ("manuallyApprovesFollowers" in values &&
11358
11947
  values.manuallyApprovesFollowers != null) {
11359
11948
  this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = [values.manuallyApprovesFollowers];
@@ -11424,6 +12013,18 @@ export class Organization extends Object {
11424
12013
  }
11425
12014
  clone.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
11426
12015
  }
12016
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
12017
+ if ("assertionMethod" in values && values.assertionMethod != null) {
12018
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
12019
+ }
12020
+ if ("assertionMethods" in values && values.assertionMethods != null) {
12021
+ if ("assertionMethod" in values &&
12022
+ values.assertionMethod != null) {
12023
+ throw new TypeError("Cannot update both assertionMethod and " +
12024
+ "assertionMethods at the same time.");
12025
+ }
12026
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
12027
+ }
11427
12028
  clone.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA;
11428
12029
  if ("manuallyApprovesFollowers" in values &&
11429
12030
  values.manuallyApprovesFollowers != null) {
@@ -11554,6 +12155,77 @@ export class Organization extends Object {
11554
12155
  yield v;
11555
12156
  }
11556
12157
  }
12158
+ async #fetchAssertionMethod(url, options = {}) {
12159
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
12160
+ fetchDocumentLoader;
12161
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
12162
+ fetchDocumentLoader;
12163
+ const { document } = await documentLoader(url.href);
12164
+ try {
12165
+ return await Multikey.fromJsonLd(document, { documentLoader, contextLoader });
12166
+ }
12167
+ catch (e) {
12168
+ if (!(e instanceof TypeError))
12169
+ throw e;
12170
+ }
12171
+ throw new TypeError("Expected an object of any type of: " +
12172
+ ["https://w3id.org/security#Multikey"].join(", "));
12173
+ }
12174
+ /**
12175
+ * Similar to
12176
+ * {@link Organization.getAssertionMethod},
12177
+ * but returns its `@id` URL instead of the object itself.
12178
+ */
12179
+ get assertionMethodId() {
12180
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
12181
+ return null;
12182
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
12183
+ if (v instanceof URL)
12184
+ return v;
12185
+ return v.id;
12186
+ }
12187
+ /** Represents this actor's public keys. It serves as equivalent to
12188
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
12189
+ *
12190
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
12191
+ */
12192
+ async getAssertionMethod(options = {}) {
12193
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
12194
+ return null;
12195
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
12196
+ if (v instanceof URL) {
12197
+ const fetched = await this.#fetchAssertionMethod(v, options);
12198
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0] = fetched;
12199
+ return fetched;
12200
+ }
12201
+ return v;
12202
+ }
12203
+ /**
12204
+ * Similar to
12205
+ * {@link Organization.getAssertionMethods},
12206
+ * but returns their `@id`s instead of the objects themselves.
12207
+ */
12208
+ get assertionMethodIds() {
12209
+ return this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
12210
+ }
12211
+ /** Represents this actor's public keys. It serves as equivalent to
12212
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
12213
+ *
12214
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
12215
+ */
12216
+ async *getAssertionMethods(options = {}) {
12217
+ const vs = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
12218
+ for (let i = 0; i < vs.length; i++) {
12219
+ const v = vs[i];
12220
+ if (v instanceof URL) {
12221
+ const fetched = await this.#fetchAssertionMethod(v, options);
12222
+ vs[i] = fetched;
12223
+ yield fetched;
12224
+ continue;
12225
+ }
12226
+ yield v;
12227
+ }
12228
+ }
11557
12229
  /** When `true`, conveys that for this actor, follow requests are not usually
11558
12230
  * automatically approved, but instead are examined by a person who may accept
11559
12231
  * or reject the request, at some time in the future. Setting of `false`
@@ -11927,6 +12599,13 @@ export class Organization extends Object {
11927
12599
  if (array.length > 0)
11928
12600
  values["https://w3id.org/security#publicKey"] = array;
11929
12601
  array = [];
12602
+ for (const v of this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3) {
12603
+ array.push(v instanceof URL ? { "@id": v.href } : await v.toJsonLd(options));
12604
+ }
12605
+ if (array.length > 0) {
12606
+ values["https://w3id.org/security#assertionMethod"] = array;
12607
+ }
12608
+ array = [];
11930
12609
  for (const v of this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA) {
11931
12610
  array.push({ "@value": v });
11932
12611
  }
@@ -12017,6 +12696,8 @@ export class Organization extends Object {
12017
12696
  return await jsonld.compact(values, [
12018
12697
  "https://www.w3.org/ns/activitystreams",
12019
12698
  "https://w3id.org/security/v1",
12699
+ "https://www.w3.org/ns/did/v1",
12700
+ "https://w3id.org/security/multikey/v1",
12020
12701
  {
12021
12702
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
12022
12703
  "toot": "http://joinmastodon.org/ns#",
@@ -12100,6 +12781,18 @@ export class Organization extends Object {
12100
12781
  _axq166E2eZADq34V4MYUc8KMZdC.push(await CryptographicKey.fromJsonLd(v, options));
12101
12782
  }
12102
12783
  instance.#_axq166E2eZADq34V4MYUc8KMZdC = _axq166E2eZADq34V4MYUc8KMZdC;
12784
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
12785
+ for (const v of values["https://w3id.org/security#assertionMethod"] ?? []) {
12786
+ if (v == null)
12787
+ continue;
12788
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
12789
+ globalThis.Object.keys(v).length === 1) {
12790
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(new URL(v["@id"]));
12791
+ continue;
12792
+ }
12793
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(await Multikey.fromJsonLd(v, options));
12794
+ }
12795
+ instance.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
12103
12796
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
12104
12797
  for (const v of values["https://www.w3.org/ns/activitystreams#manuallyApprovesFollowers"] ?? []) {
12105
12798
  if (v == null)
@@ -12250,6 +12943,22 @@ export class Organization extends Object {
12250
12943
  _axq166E2eZADq34V4MYUc8KMZdC.length > 0) {
12251
12944
  proxy.publicKeys = _axq166E2eZADq34V4MYUc8KMZdC;
12252
12945
  }
12946
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3
12947
+ // deno-lint-ignore no-explicit-any
12948
+ .map((v) => v instanceof URL
12949
+ ? {
12950
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
12951
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
12952
+ }
12953
+ : v);
12954
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length == 1) {
12955
+ proxy.assertionMethod = _4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
12956
+ }
12957
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 1 ||
12958
+ !("assertionMethod" in proxy) &&
12959
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 0) {
12960
+ proxy.assertionMethods = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
12961
+ }
12253
12962
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA
12254
12963
  // deno-lint-ignore no-explicit-any
12255
12964
  .map((v) => v instanceof URL
@@ -12512,6 +13221,7 @@ export class Person extends Object {
12512
13221
  }
12513
13222
  #_3isuDgRAKSntq9XdbjiNxjwyPZAf = [];
12514
13223
  #_axq166E2eZADq34V4MYUc8KMZdC = [];
13224
+ #_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
12515
13225
  #_36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
12516
13226
  #_3ghX3VfZXXbLvhCRH7QJqpzLrXjB = [];
12517
13227
  #_41QwhqJouoLg3h8dRPKat21brynC = [];
@@ -12553,6 +13263,17 @@ export class Person extends Object {
12553
13263
  }
12554
13264
  this.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
12555
13265
  }
13266
+ if ("assertionMethod" in values && values.assertionMethod != null) {
13267
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
13268
+ }
13269
+ if ("assertionMethods" in values && values.assertionMethods != null) {
13270
+ if ("assertionMethod" in values &&
13271
+ values.assertionMethod != null) {
13272
+ throw new TypeError("Cannot initialize both assertionMethod and " +
13273
+ "assertionMethods at the same time.");
13274
+ }
13275
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
13276
+ }
12556
13277
  if ("manuallyApprovesFollowers" in values &&
12557
13278
  values.manuallyApprovesFollowers != null) {
12558
13279
  this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = [values.manuallyApprovesFollowers];
@@ -12623,6 +13344,18 @@ export class Person extends Object {
12623
13344
  }
12624
13345
  clone.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
12625
13346
  }
13347
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
13348
+ if ("assertionMethod" in values && values.assertionMethod != null) {
13349
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
13350
+ }
13351
+ if ("assertionMethods" in values && values.assertionMethods != null) {
13352
+ if ("assertionMethod" in values &&
13353
+ values.assertionMethod != null) {
13354
+ throw new TypeError("Cannot update both assertionMethod and " +
13355
+ "assertionMethods at the same time.");
13356
+ }
13357
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
13358
+ }
12626
13359
  clone.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA;
12627
13360
  if ("manuallyApprovesFollowers" in values &&
12628
13361
  values.manuallyApprovesFollowers != null) {
@@ -12753,6 +13486,77 @@ export class Person extends Object {
12753
13486
  yield v;
12754
13487
  }
12755
13488
  }
13489
+ async #fetchAssertionMethod(url, options = {}) {
13490
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
13491
+ fetchDocumentLoader;
13492
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
13493
+ fetchDocumentLoader;
13494
+ const { document } = await documentLoader(url.href);
13495
+ try {
13496
+ return await Multikey.fromJsonLd(document, { documentLoader, contextLoader });
13497
+ }
13498
+ catch (e) {
13499
+ if (!(e instanceof TypeError))
13500
+ throw e;
13501
+ }
13502
+ throw new TypeError("Expected an object of any type of: " +
13503
+ ["https://w3id.org/security#Multikey"].join(", "));
13504
+ }
13505
+ /**
13506
+ * Similar to
13507
+ * {@link Person.getAssertionMethod},
13508
+ * but returns its `@id` URL instead of the object itself.
13509
+ */
13510
+ get assertionMethodId() {
13511
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
13512
+ return null;
13513
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
13514
+ if (v instanceof URL)
13515
+ return v;
13516
+ return v.id;
13517
+ }
13518
+ /** Represents this actor's public keys. It serves as equivalent to
13519
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
13520
+ *
13521
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
13522
+ */
13523
+ async getAssertionMethod(options = {}) {
13524
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
13525
+ return null;
13526
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
13527
+ if (v instanceof URL) {
13528
+ const fetched = await this.#fetchAssertionMethod(v, options);
13529
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0] = fetched;
13530
+ return fetched;
13531
+ }
13532
+ return v;
13533
+ }
13534
+ /**
13535
+ * Similar to
13536
+ * {@link Person.getAssertionMethods},
13537
+ * but returns their `@id`s instead of the objects themselves.
13538
+ */
13539
+ get assertionMethodIds() {
13540
+ return this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
13541
+ }
13542
+ /** Represents this actor's public keys. It serves as equivalent to
13543
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
13544
+ *
13545
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
13546
+ */
13547
+ async *getAssertionMethods(options = {}) {
13548
+ const vs = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
13549
+ for (let i = 0; i < vs.length; i++) {
13550
+ const v = vs[i];
13551
+ if (v instanceof URL) {
13552
+ const fetched = await this.#fetchAssertionMethod(v, options);
13553
+ vs[i] = fetched;
13554
+ yield fetched;
13555
+ continue;
13556
+ }
13557
+ yield v;
13558
+ }
13559
+ }
12756
13560
  /** When `true`, conveys that for this actor, follow requests are not usually
12757
13561
  * automatically approved, but instead are examined by a person who may accept
12758
13562
  * or reject the request, at some time in the future. Setting of `false`
@@ -13126,6 +13930,13 @@ export class Person extends Object {
13126
13930
  if (array.length > 0)
13127
13931
  values["https://w3id.org/security#publicKey"] = array;
13128
13932
  array = [];
13933
+ for (const v of this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3) {
13934
+ array.push(v instanceof URL ? { "@id": v.href } : await v.toJsonLd(options));
13935
+ }
13936
+ if (array.length > 0) {
13937
+ values["https://w3id.org/security#assertionMethod"] = array;
13938
+ }
13939
+ array = [];
13129
13940
  for (const v of this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA) {
13130
13941
  array.push({ "@value": v });
13131
13942
  }
@@ -13216,6 +14027,8 @@ export class Person extends Object {
13216
14027
  return await jsonld.compact(values, [
13217
14028
  "https://www.w3.org/ns/activitystreams",
13218
14029
  "https://w3id.org/security/v1",
14030
+ "https://www.w3.org/ns/did/v1",
14031
+ "https://w3id.org/security/multikey/v1",
13219
14032
  {
13220
14033
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
13221
14034
  "toot": "http://joinmastodon.org/ns#",
@@ -13299,6 +14112,18 @@ export class Person extends Object {
13299
14112
  _axq166E2eZADq34V4MYUc8KMZdC.push(await CryptographicKey.fromJsonLd(v, options));
13300
14113
  }
13301
14114
  instance.#_axq166E2eZADq34V4MYUc8KMZdC = _axq166E2eZADq34V4MYUc8KMZdC;
14115
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
14116
+ for (const v of values["https://w3id.org/security#assertionMethod"] ?? []) {
14117
+ if (v == null)
14118
+ continue;
14119
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
14120
+ globalThis.Object.keys(v).length === 1) {
14121
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(new URL(v["@id"]));
14122
+ continue;
14123
+ }
14124
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(await Multikey.fromJsonLd(v, options));
14125
+ }
14126
+ instance.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
13302
14127
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
13303
14128
  for (const v of values["https://www.w3.org/ns/activitystreams#manuallyApprovesFollowers"] ?? []) {
13304
14129
  if (v == null)
@@ -13449,6 +14274,22 @@ export class Person extends Object {
13449
14274
  _axq166E2eZADq34V4MYUc8KMZdC.length > 0) {
13450
14275
  proxy.publicKeys = _axq166E2eZADq34V4MYUc8KMZdC;
13451
14276
  }
14277
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3
14278
+ // deno-lint-ignore no-explicit-any
14279
+ .map((v) => v instanceof URL
14280
+ ? {
14281
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
14282
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
14283
+ }
14284
+ : v);
14285
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length == 1) {
14286
+ proxy.assertionMethod = _4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
14287
+ }
14288
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 1 ||
14289
+ !("assertionMethod" in proxy) &&
14290
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 0) {
14291
+ proxy.assertionMethods = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
14292
+ }
13452
14293
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA
13453
14294
  // deno-lint-ignore no-explicit-any
13454
14295
  .map((v) => v instanceof URL
@@ -14843,6 +15684,7 @@ export class Service extends Object {
14843
15684
  }
14844
15685
  #_3isuDgRAKSntq9XdbjiNxjwyPZAf = [];
14845
15686
  #_axq166E2eZADq34V4MYUc8KMZdC = [];
15687
+ #_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
14846
15688
  #_36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
14847
15689
  #_3ghX3VfZXXbLvhCRH7QJqpzLrXjB = [];
14848
15690
  #_41QwhqJouoLg3h8dRPKat21brynC = [];
@@ -14884,6 +15726,17 @@ export class Service extends Object {
14884
15726
  }
14885
15727
  this.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
14886
15728
  }
15729
+ if ("assertionMethod" in values && values.assertionMethod != null) {
15730
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
15731
+ }
15732
+ if ("assertionMethods" in values && values.assertionMethods != null) {
15733
+ if ("assertionMethod" in values &&
15734
+ values.assertionMethod != null) {
15735
+ throw new TypeError("Cannot initialize both assertionMethod and " +
15736
+ "assertionMethods at the same time.");
15737
+ }
15738
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
15739
+ }
14887
15740
  if ("manuallyApprovesFollowers" in values &&
14888
15741
  values.manuallyApprovesFollowers != null) {
14889
15742
  this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = [values.manuallyApprovesFollowers];
@@ -14954,6 +15807,18 @@ export class Service extends Object {
14954
15807
  }
14955
15808
  clone.#_axq166E2eZADq34V4MYUc8KMZdC = values.publicKeys;
14956
15809
  }
15810
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
15811
+ if ("assertionMethod" in values && values.assertionMethod != null) {
15812
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [values.assertionMethod];
15813
+ }
15814
+ if ("assertionMethods" in values && values.assertionMethods != null) {
15815
+ if ("assertionMethod" in values &&
15816
+ values.assertionMethod != null) {
15817
+ throw new TypeError("Cannot update both assertionMethod and " +
15818
+ "assertionMethods at the same time.");
15819
+ }
15820
+ clone.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = values.assertionMethods;
15821
+ }
14957
15822
  clone.#_36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA;
14958
15823
  if ("manuallyApprovesFollowers" in values &&
14959
15824
  values.manuallyApprovesFollowers != null) {
@@ -15084,6 +15949,77 @@ export class Service extends Object {
15084
15949
  yield v;
15085
15950
  }
15086
15951
  }
15952
+ async #fetchAssertionMethod(url, options = {}) {
15953
+ const documentLoader = options.documentLoader ?? this._documentLoader ??
15954
+ fetchDocumentLoader;
15955
+ const contextLoader = options.contextLoader ?? this._contextLoader ??
15956
+ fetchDocumentLoader;
15957
+ const { document } = await documentLoader(url.href);
15958
+ try {
15959
+ return await Multikey.fromJsonLd(document, { documentLoader, contextLoader });
15960
+ }
15961
+ catch (e) {
15962
+ if (!(e instanceof TypeError))
15963
+ throw e;
15964
+ }
15965
+ throw new TypeError("Expected an object of any type of: " +
15966
+ ["https://w3id.org/security#Multikey"].join(", "));
15967
+ }
15968
+ /**
15969
+ * Similar to
15970
+ * {@link Service.getAssertionMethod},
15971
+ * but returns its `@id` URL instead of the object itself.
15972
+ */
15973
+ get assertionMethodId() {
15974
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
15975
+ return null;
15976
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
15977
+ if (v instanceof URL)
15978
+ return v;
15979
+ return v.id;
15980
+ }
15981
+ /** Represents this actor's public keys. It serves as equivalent to
15982
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
15983
+ *
15984
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
15985
+ */
15986
+ async getAssertionMethod(options = {}) {
15987
+ if (this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length < 1)
15988
+ return null;
15989
+ const v = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
15990
+ if (v instanceof URL) {
15991
+ const fetched = await this.#fetchAssertionMethod(v, options);
15992
+ this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3[0] = fetched;
15993
+ return fetched;
15994
+ }
15995
+ return v;
15996
+ }
15997
+ /**
15998
+ * Similar to
15999
+ * {@link Service.getAssertionMethods},
16000
+ * but returns their `@id`s instead of the objects themselves.
16001
+ */
16002
+ get assertionMethodIds() {
16003
+ return this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3.map((v) => v instanceof URL ? v : v.id).filter((id) => id !== null);
16004
+ }
16005
+ /** Represents this actor's public keys. It serves as equivalent to
16006
+ * the `publicKeys` property, but is used for [FEP-521a] compliance.
16007
+ *
16008
+ * [FEP-521a]: https://codeberg.org/fediverse/fep/src/branch/main/fep/521a/fep-521a.md
16009
+ */
16010
+ async *getAssertionMethods(options = {}) {
16011
+ const vs = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3;
16012
+ for (let i = 0; i < vs.length; i++) {
16013
+ const v = vs[i];
16014
+ if (v instanceof URL) {
16015
+ const fetched = await this.#fetchAssertionMethod(v, options);
16016
+ vs[i] = fetched;
16017
+ yield fetched;
16018
+ continue;
16019
+ }
16020
+ yield v;
16021
+ }
16022
+ }
15087
16023
  /** When `true`, conveys that for this actor, follow requests are not usually
15088
16024
  * automatically approved, but instead are examined by a person who may accept
15089
16025
  * or reject the request, at some time in the future. Setting of `false`
@@ -15457,6 +16393,13 @@ export class Service extends Object {
15457
16393
  if (array.length > 0)
15458
16394
  values["https://w3id.org/security#publicKey"] = array;
15459
16395
  array = [];
16396
+ for (const v of this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3) {
16397
+ array.push(v instanceof URL ? { "@id": v.href } : await v.toJsonLd(options));
16398
+ }
16399
+ if (array.length > 0) {
16400
+ values["https://w3id.org/security#assertionMethod"] = array;
16401
+ }
16402
+ array = [];
15460
16403
  for (const v of this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA) {
15461
16404
  array.push({ "@value": v });
15462
16405
  }
@@ -15547,6 +16490,8 @@ export class Service extends Object {
15547
16490
  return await jsonld.compact(values, [
15548
16491
  "https://www.w3.org/ns/activitystreams",
15549
16492
  "https://w3id.org/security/v1",
16493
+ "https://www.w3.org/ns/did/v1",
16494
+ "https://w3id.org/security/multikey/v1",
15550
16495
  {
15551
16496
  "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
15552
16497
  "toot": "http://joinmastodon.org/ns#",
@@ -15630,6 +16575,18 @@ export class Service extends Object {
15630
16575
  _axq166E2eZADq34V4MYUc8KMZdC.push(await CryptographicKey.fromJsonLd(v, options));
15631
16576
  }
15632
16577
  instance.#_axq166E2eZADq34V4MYUc8KMZdC = _axq166E2eZADq34V4MYUc8KMZdC;
16578
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = [];
16579
+ for (const v of values["https://w3id.org/security#assertionMethod"] ?? []) {
16580
+ if (v == null)
16581
+ continue;
16582
+ if (typeof v === "object" && "@id" in v && !("@type" in v) &&
16583
+ globalThis.Object.keys(v).length === 1) {
16584
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(new URL(v["@id"]));
16585
+ continue;
16586
+ }
16587
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.push(await Multikey.fromJsonLd(v, options));
16588
+ }
16589
+ instance.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3 = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
15633
16590
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = [];
15634
16591
  for (const v of values["https://www.w3.org/ns/activitystreams#manuallyApprovesFollowers"] ?? []) {
15635
16592
  if (v == null)
@@ -15780,6 +16737,22 @@ export class Service extends Object {
15780
16737
  _axq166E2eZADq34V4MYUc8KMZdC.length > 0) {
15781
16738
  proxy.publicKeys = _axq166E2eZADq34V4MYUc8KMZdC;
15782
16739
  }
16740
+ const _4EHQFWZSz1k1d4LmPrQiMba2GbP3 = this.#_4EHQFWZSz1k1d4LmPrQiMba2GbP3
16741
+ // deno-lint-ignore no-explicit-any
16742
+ .map((v) => v instanceof URL
16743
+ ? {
16744
+ [Symbol.for("Deno.customInspect")]: (inspect, options) => "URL " + inspect(v.href, options),
16745
+ [Symbol.for("nodejs.util.inspect.custom")]: (_depth, options, inspect) => "URL " + inspect(v.href, options),
16746
+ }
16747
+ : v);
16748
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length == 1) {
16749
+ proxy.assertionMethod = _4EHQFWZSz1k1d4LmPrQiMba2GbP3[0];
16750
+ }
16751
+ if (_4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 1 ||
16752
+ !("assertionMethod" in proxy) &&
16753
+ _4EHQFWZSz1k1d4LmPrQiMba2GbP3.length > 0) {
16754
+ proxy.assertionMethods = _4EHQFWZSz1k1d4LmPrQiMba2GbP3;
16755
+ }
15783
16756
  const _36QNc9MxfkKf6h8sEUQSHnV9NZA = this.#_36QNc9MxfkKf6h8sEUQSHnV9NZA
15784
16757
  // deno-lint-ignore no-explicit-any
15785
16758
  .map((v) => v instanceof URL