@sdxc/activitypub 0.0.0-pre.1

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 (73) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +711 -0
  3. package/dist/collections.d.ts +67 -0
  4. package/dist/collections.js +38 -0
  5. package/dist/conformance.d.ts +80 -0
  6. package/dist/conformance.js +313 -0
  7. package/dist/discovery.d.ts +46 -0
  8. package/dist/discovery.js +105 -0
  9. package/dist/errors.d.ts +115 -0
  10. package/dist/errors.js +124 -0
  11. package/dist/federation.d.ts +281 -0
  12. package/dist/federation.js +513 -0
  13. package/dist/fixtures/gotosocial.d.ts +114 -0
  14. package/dist/fixtures/gotosocial.js +115 -0
  15. package/dist/fixtures/index.d.ts +15 -0
  16. package/dist/fixtures/index.js +50 -0
  17. package/dist/fixtures/mastodon.d.ts +489 -0
  18. package/dist/fixtures/mastodon.js +334 -0
  19. package/dist/fixtures/misskey.d.ts +254 -0
  20. package/dist/fixtures/misskey.js +163 -0
  21. package/dist/fixtures/pixelfed.d.ts +118 -0
  22. package/dist/fixtures/pixelfed.js +126 -0
  23. package/dist/fixtures/shared.d.ts +14 -0
  24. package/dist/fixtures/shared.js +14 -0
  25. package/dist/fixtures/threads.d.ts +82 -0
  26. package/dist/fixtures/threads.js +88 -0
  27. package/dist/index.d.ts +33 -0
  28. package/dist/index.js +22 -0
  29. package/dist/keys.d.ts +100 -0
  30. package/dist/keys.js +147 -0
  31. package/dist/lib/availability.d.ts +37 -0
  32. package/dist/lib/availability.js +52 -0
  33. package/dist/lib/compact.d.ts +145 -0
  34. package/dist/lib/compact.js +514 -0
  35. package/dist/lib/constants.d.ts +35 -0
  36. package/dist/lib/constants.js +65 -0
  37. package/dist/lib/delivery-fan-out.d.ts +72 -0
  38. package/dist/lib/delivery-fan-out.js +202 -0
  39. package/dist/lib/delivery-post.d.ts +108 -0
  40. package/dist/lib/delivery-post.js +318 -0
  41. package/dist/lib/fetch.d.ts +64 -0
  42. package/dist/lib/fetch.js +103 -0
  43. package/dist/lib/inbox-error.d.ts +45 -0
  44. package/dist/lib/inbox-error.js +74 -0
  45. package/dist/lib/inbox-handle.d.ts +119 -0
  46. package/dist/lib/inbox-handle.js +587 -0
  47. package/dist/lib/inbox-receive.d.ts +117 -0
  48. package/dist/lib/inbox-receive.js +233 -0
  49. package/dist/lib/inbox-signature.d.ts +61 -0
  50. package/dist/lib/inbox-signature.js +156 -0
  51. package/dist/lib/inbox-summarize.d.ts +41 -0
  52. package/dist/lib/inbox-summarize.js +97 -0
  53. package/dist/lib/messages.d.ts +36 -0
  54. package/dist/lib/messages.js +35 -0
  55. package/dist/lib/parse.d.ts +42 -0
  56. package/dist/lib/parse.js +348 -0
  57. package/dist/lib/response.d.ts +45 -0
  58. package/dist/lib/response.js +59 -0
  59. package/dist/lib/stringify.d.ts +51 -0
  60. package/dist/lib/stringify.js +122 -0
  61. package/dist/lib/tombstone.d.ts +24 -0
  62. package/dist/lib/tombstone.js +15 -0
  63. package/dist/lib/types.d.ts +249 -0
  64. package/dist/lib/types.js +0 -0
  65. package/dist/memory.d.ts +77 -0
  66. package/dist/memory.js +146 -0
  67. package/dist/remote.d.ts +105 -0
  68. package/dist/remote.js +262 -0
  69. package/dist/store.d.ts +78 -0
  70. package/dist/store.js +8 -0
  71. package/dist/testing.d.ts +12 -0
  72. package/dist/testing.js +10 -0
  73. package/package.json +54 -0
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Documents in the shapes Mastodon 4.x emits: its actor, a reply with media, mentions,
3
+ * hashtags and custom emoji, the follow lifecycle, Like, Announce, Delete, a 4.5 quote
4
+ * post, and its collections. Ids are made up; every member and nesting is Mastodon's.
5
+ *
6
+ * @author [Sergio Xalambrí](https://sergiodxa.com)
7
+ * @copyright Sergio Xalambrí 2026
8
+ */
9
+ import { FAKE_PUBLIC_KEY_PEM, LOCAL_ACTOR, LOCAL_ARTICLE } from "./shared.js";
10
+ /** The `@context` Mastodon writes on an actor, embedded term map included. */
11
+ const ACTOR_CONTEXT = [
12
+ "https://www.w3.org/ns/activitystreams",
13
+ "https://w3id.org/security/v1",
14
+ {
15
+ manuallyApprovesFollowers: "as:manuallyApprovesFollowers",
16
+ toot: "http://joinmastodon.org/ns#",
17
+ featured: { "@id": "toot:featured", "@type": "@id" },
18
+ featuredTags: { "@id": "toot:featuredTags", "@type": "@id" },
19
+ alsoKnownAs: { "@id": "as:alsoKnownAs", "@type": "@id" },
20
+ movedTo: { "@id": "as:movedTo", "@type": "@id" },
21
+ schema: "http://schema.org#",
22
+ PropertyValue: "schema:PropertyValue",
23
+ value: "schema:value",
24
+ discoverable: "toot:discoverable",
25
+ suspended: "toot:suspended",
26
+ memorial: "toot:memorial",
27
+ indexable: "toot:indexable",
28
+ attributionDomains: { "@id": "toot:attributionDomains", "@type": "@id" },
29
+ focalPoint: { "@container": "@list", "@id": "toot:focalPoint" },
30
+ },
31
+ ];
32
+ /** The `@context` Mastodon writes on a status and the activities that carry one. */
33
+ const STATUS_CONTEXT = [
34
+ "https://www.w3.org/ns/activitystreams",
35
+ {
36
+ ostatus: "http://ostatus.org#",
37
+ atomUri: "ostatus:atomUri",
38
+ inReplyToAtomUri: "ostatus:inReplyToAtomUri",
39
+ conversation: "ostatus:conversation",
40
+ sensitive: "as:sensitive",
41
+ toot: "http://joinmastodon.org/ns#",
42
+ votersCount: "toot:votersCount",
43
+ blurhash: "toot:blurhash",
44
+ focalPoint: { "@container": "@list", "@id": "toot:focalPoint" },
45
+ Hashtag: "as:Hashtag",
46
+ Emoji: "toot:Emoji",
47
+ quote: { "@id": "https://w3id.org/fep/044f#quote", "@type": "@id" },
48
+ quoteUri: "http://fedibird.com/ns#quoteUri",
49
+ _misskey_quote: "https://misskey-hub.net/ns#_misskey_quote",
50
+ },
51
+ ];
52
+ /** A Mastodon account: profile fields, featured collection, a shared inbox and `#main-key`. */
53
+ export const MASTODON_ACTOR = {
54
+ "@context": ACTOR_CONTEXT,
55
+ id: "https://mastodon.social/users/alice",
56
+ type: "Person",
57
+ following: "https://mastodon.social/users/alice/following",
58
+ followers: "https://mastodon.social/users/alice/followers",
59
+ inbox: "https://mastodon.social/users/alice/inbox",
60
+ outbox: "https://mastodon.social/users/alice/outbox",
61
+ featured: "https://mastodon.social/users/alice/collections/featured",
62
+ featuredTags: "https://mastodon.social/users/alice/collections/tags",
63
+ preferredUsername: "alice",
64
+ name: "Alice :blobcat:",
65
+ summary: '<p>Writes about the web. Mostly <a href="https://mastodon.social/tags/remix" class="mention hashtag" rel="tag">#<span>remix</span></a>.</p>',
66
+ url: "https://mastodon.social/@alice",
67
+ manuallyApprovesFollowers: false,
68
+ discoverable: true,
69
+ indexable: true,
70
+ published: "2022-11-05T00:00:00Z",
71
+ memorial: false,
72
+ devices: "https://mastodon.social/users/alice/collections/devices",
73
+ alsoKnownAs: ["https://hachyderm.io/users/alice"],
74
+ publicKey: {
75
+ id: "https://mastodon.social/users/alice#main-key",
76
+ owner: "https://mastodon.social/users/alice",
77
+ publicKeyPem: FAKE_PUBLIC_KEY_PEM,
78
+ },
79
+ tag: [
80
+ {
81
+ id: "https://mastodon.social/emojis/23661",
82
+ type: "Emoji",
83
+ name: ":blobcat:",
84
+ updated: "2023-03-14T09:12:00Z",
85
+ icon: {
86
+ type: "Image",
87
+ mediaType: "image/png",
88
+ url: "https://files.mastodon.social/custom_emojis/images/000/023/661/original/blobcat.png",
89
+ },
90
+ },
91
+ ],
92
+ attachment: [
93
+ {
94
+ type: "PropertyValue",
95
+ name: "Website",
96
+ value: '<a href="https://alice.blog" target="_blank" rel="nofollow noopener me" translate="no"><span class="invisible">https://</span><span class="">alice.blog</span><span class="invisible"></span></a>',
97
+ },
98
+ { type: "PropertyValue", name: "Pronouns", value: "she/her" },
99
+ ],
100
+ endpoints: { sharedInbox: "https://mastodon.social/inbox" },
101
+ icon: {
102
+ type: "Image",
103
+ mediaType: "image/png",
104
+ url: "https://files.mastodon.social/accounts/avatars/109/301/000/000/000/001/original/avatar.png",
105
+ },
106
+ image: {
107
+ type: "Image",
108
+ mediaType: "image/jpeg",
109
+ url: "https://files.mastodon.social/accounts/headers/109/301/000/000/000/001/original/header.jpg",
110
+ },
111
+ };
112
+ /** A public reply to a local article, with an image, a mention, a hashtag and an emoji. */
113
+ export const MASTODON_CREATE_NOTE = {
114
+ "@context": STATUS_CONTEXT,
115
+ id: "https://mastodon.social/users/alice/statuses/113250000000000001/activity",
116
+ type: "Create",
117
+ actor: "https://mastodon.social/users/alice",
118
+ published: "2026-10-01T12:34:56Z",
119
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
120
+ cc: ["https://mastodon.social/users/alice/followers", LOCAL_ACTOR],
121
+ object: {
122
+ id: "https://mastodon.social/users/alice/statuses/113250000000000001",
123
+ type: "Note",
124
+ summary: null,
125
+ inReplyTo: LOCAL_ARTICLE,
126
+ published: "2026-10-01T12:34:56Z",
127
+ url: "https://mastodon.social/@alice/113250000000000001",
128
+ attributedTo: "https://mastodon.social/users/alice",
129
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
130
+ cc: ["https://mastodon.social/users/alice/followers", LOCAL_ACTOR],
131
+ sensitive: false,
132
+ atomUri: "https://mastodon.social/users/alice/statuses/113250000000000001",
133
+ inReplyToAtomUri: LOCAL_ARTICLE,
134
+ conversation: "tag:mastodon.social,2026-10-01:objectId=880000001:objectType=Conversation",
135
+ content: '<p><span class="h-card" translate="no"><a href="https://letters.blog/@hello" class="u-url mention">@<span>hello</span></a></span> Great write-up :blobcat: <a href="https://mastodon.social/tags/remix" class="mention hashtag" rel="tag">#<span>remix</span></a></p>',
136
+ contentMap: {
137
+ en: '<p><span class="h-card" translate="no"><a href="https://letters.blog/@hello" class="u-url mention">@<span>hello</span></a></span> Great write-up :blobcat: <a href="https://mastodon.social/tags/remix" class="mention hashtag" rel="tag">#<span>remix</span></a></p>',
138
+ },
139
+ updated: "2026-10-01T12:40:00Z",
140
+ attachment: [
141
+ {
142
+ type: "Document",
143
+ mediaType: "image/jpeg",
144
+ url: "https://files.mastodon.social/media_attachments/files/113/250/000/000/000/001/original/photo.jpeg",
145
+ name: "A whiteboard covered in route diagrams",
146
+ blurhash: "UBL_:rOpGG-oBUNG,qRj2so|=eE1w^n4S5NH",
147
+ focalPoint: [0.1, -0.25],
148
+ width: 1600,
149
+ height: 1200,
150
+ },
151
+ ],
152
+ tag: [
153
+ { type: "Mention", href: LOCAL_ACTOR, name: "@hello@letters.blog" },
154
+ { type: "Hashtag", href: "https://mastodon.social/tags/remix", name: "#remix" },
155
+ {
156
+ id: "https://mastodon.social/emojis/23661",
157
+ type: "Emoji",
158
+ name: ":blobcat:",
159
+ updated: "2023-03-14T09:12:00Z",
160
+ icon: {
161
+ type: "Image",
162
+ mediaType: "image/png",
163
+ url: "https://files.mastodon.social/custom_emojis/images/000/023/661/original/blobcat.png",
164
+ },
165
+ },
166
+ ],
167
+ replies: {
168
+ id: "https://mastodon.social/users/alice/statuses/113250000000000001/replies",
169
+ type: "Collection",
170
+ first: {
171
+ type: "CollectionPage",
172
+ next: "https://mastodon.social/users/alice/statuses/113250000000000001/replies?only_other_accounts=true&page=true",
173
+ partOf: "https://mastodon.social/users/alice/statuses/113250000000000001/replies",
174
+ items: [],
175
+ },
176
+ },
177
+ likes: {
178
+ id: "https://mastodon.social/users/alice/statuses/113250000000000001/likes",
179
+ type: "Collection",
180
+ totalItems: 0,
181
+ },
182
+ shares: {
183
+ id: "https://mastodon.social/users/alice/statuses/113250000000000001/shares",
184
+ type: "Collection",
185
+ totalItems: 0,
186
+ },
187
+ },
188
+ signature: {
189
+ type: "RsaSignature2017",
190
+ creator: "https://mastodon.social/users/alice#main-key",
191
+ created: "2026-10-01T12:34:57Z",
192
+ signatureValue: "ZmFrZS1zaWduYXR1cmU=",
193
+ },
194
+ };
195
+ /** A favourite of a local article; Mastodon's Like ids are fragments of the actor. */
196
+ export const MASTODON_LIKE = {
197
+ "@context": "https://www.w3.org/ns/activitystreams",
198
+ id: "https://mastodon.social/users/alice#likes/4400123",
199
+ type: "Like",
200
+ actor: "https://mastodon.social/users/alice",
201
+ object: LOCAL_ARTICLE,
202
+ };
203
+ /** A boost of a local article. */
204
+ export const MASTODON_ANNOUNCE = {
205
+ "@context": "https://www.w3.org/ns/activitystreams",
206
+ id: "https://mastodon.social/users/alice/statuses/113250000000000002/activity",
207
+ type: "Announce",
208
+ actor: "https://mastodon.social/users/alice",
209
+ published: "2026-10-01T13:00:00Z",
210
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
211
+ cc: [LOCAL_ACTOR, "https://mastodon.social/users/alice/followers"],
212
+ object: LOCAL_ARTICLE,
213
+ };
214
+ /** A follow of the local actor; Mastodon ids a Follow with a bare UUID path. */
215
+ export const MASTODON_FOLLOW = {
216
+ "@context": "https://www.w3.org/ns/activitystreams",
217
+ id: "https://mastodon.social/5e3a8a0f-6c1d-4b8e-9a43-1f2c7d9e0b11",
218
+ type: "Follow",
219
+ actor: "https://mastodon.social/users/alice",
220
+ object: LOCAL_ACTOR,
221
+ };
222
+ /** An unfollow, embedding the Follow it undoes. */
223
+ export const MASTODON_UNDO_FOLLOW = {
224
+ "@context": "https://www.w3.org/ns/activitystreams",
225
+ id: "https://mastodon.social/users/alice#follows/880123/undo",
226
+ type: "Undo",
227
+ actor: "https://mastodon.social/users/alice",
228
+ object: {
229
+ id: "https://mastodon.social/5e3a8a0f-6c1d-4b8e-9a43-1f2c7d9e0b11",
230
+ type: "Follow",
231
+ actor: "https://mastodon.social/users/alice",
232
+ object: LOCAL_ACTOR,
233
+ },
234
+ };
235
+ /** Mastodon accepting a follow the local actor sent, with the Follow embedded. */
236
+ export const MASTODON_ACCEPT = {
237
+ "@context": "https://www.w3.org/ns/activitystreams",
238
+ id: "https://mastodon.social/users/alice#accepts/follows/880124",
239
+ type: "Accept",
240
+ actor: "https://mastodon.social/users/alice",
241
+ object: {
242
+ id: "https://letters.blog/activitypub/follows/1",
243
+ type: "Follow",
244
+ actor: LOCAL_ACTOR,
245
+ object: "https://mastodon.social/users/alice",
246
+ },
247
+ };
248
+ /** A deleted status, sent as a Delete of its Tombstone. */
249
+ export const MASTODON_DELETE_NOTE = {
250
+ "@context": [
251
+ "https://www.w3.org/ns/activitystreams",
252
+ { ostatus: "http://ostatus.org#", atomUri: "ostatus:atomUri" },
253
+ ],
254
+ id: "https://mastodon.social/users/alice/statuses/113250000000000001#delete",
255
+ type: "Delete",
256
+ actor: "https://mastodon.social/users/alice",
257
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
258
+ object: {
259
+ id: "https://mastodon.social/users/alice/statuses/113250000000000001",
260
+ type: "Tombstone",
261
+ atomUri: "https://mastodon.social/users/alice/statuses/113250000000000001",
262
+ },
263
+ };
264
+ /** A deleted account, which Mastodon sends to every server it ever talked to. */
265
+ export const MASTODON_DELETE_ACTOR = {
266
+ "@context": "https://www.w3.org/ns/activitystreams",
267
+ id: "https://mastodon.social/users/bob#delete",
268
+ type: "Delete",
269
+ actor: "https://mastodon.social/users/bob",
270
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
271
+ object: "https://mastodon.social/users/bob",
272
+ };
273
+ /** A Mastodon 4.5 quote post, with the FEP-044f `quote` and the names older servers read. */
274
+ export const MASTODON_QUOTE = {
275
+ "@context": STATUS_CONTEXT,
276
+ id: "https://mastodon.social/users/alice/statuses/113250000000000003/activity",
277
+ type: "Create",
278
+ actor: "https://mastodon.social/users/alice",
279
+ published: "2026-10-02T09:00:00Z",
280
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
281
+ cc: ["https://mastodon.social/users/alice/followers"],
282
+ object: {
283
+ id: "https://mastodon.social/users/alice/statuses/113250000000000003",
284
+ type: "Note",
285
+ summary: null,
286
+ inReplyTo: null,
287
+ published: "2026-10-02T09:00:00Z",
288
+ url: "https://mastodon.social/@alice/113250000000000003",
289
+ attributedTo: "https://mastodon.social/users/alice",
290
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
291
+ cc: ["https://mastodon.social/users/alice/followers"],
292
+ sensitive: false,
293
+ content: '<p>Everyone should read this.</p><p class="quote-inline">RE: <a href="https://letters.blog/articles/remix-v3">https://letters.blog/articles/remix-v3</a></p>',
294
+ contentMap: {
295
+ en: '<p>Everyone should read this.</p><p class="quote-inline">RE: <a href="https://letters.blog/articles/remix-v3">https://letters.blog/articles/remix-v3</a></p>',
296
+ },
297
+ quote: LOCAL_ARTICLE,
298
+ _misskey_quote: LOCAL_ARTICLE,
299
+ quoteUri: LOCAL_ARTICLE,
300
+ attachment: [],
301
+ tag: [],
302
+ },
303
+ };
304
+ /** A followers collection that shows its count and pages its members. */
305
+ export const MASTODON_FOLLOWERS = {
306
+ "@context": "https://www.w3.org/ns/activitystreams",
307
+ id: "https://mastodon.social/users/alice/followers",
308
+ type: "OrderedCollection",
309
+ totalItems: 1234,
310
+ first: "https://mastodon.social/users/alice/followers?page=1",
311
+ };
312
+ /** The first page of an outbox, its items each a Create with the Note embedded. */
313
+ export const MASTODON_OUTBOX_PAGE = {
314
+ "@context": STATUS_CONTEXT,
315
+ id: "https://mastodon.social/users/alice/outbox?page=true",
316
+ type: "OrderedCollectionPage",
317
+ next: "https://mastodon.social/users/alice/outbox?max_id=113250000000000001&page=true",
318
+ prev: "https://mastodon.social/users/alice/outbox?min_id=113250000000000003&page=true",
319
+ partOf: "https://mastodon.social/users/alice/outbox",
320
+ orderedItems: [
321
+ {
322
+ id: "https://mastodon.social/users/alice/statuses/113250000000000002/activity",
323
+ type: "Announce",
324
+ actor: "https://mastodon.social/users/alice",
325
+ published: "2026-10-01T13:00:00Z",
326
+ to: ["https://www.w3.org/ns/activitystreams#Public"],
327
+ cc: [LOCAL_ACTOR, "https://mastodon.social/users/alice/followers"],
328
+ object: LOCAL_ARTICLE,
329
+ },
330
+ MASTODON_CREATE_NOTE,
331
+ ],
332
+ };
333
+ /** A status's replies: a Collection whose first page is embedded without an id. */
334
+ export const MASTODON_REPLIES = MASTODON_CREATE_NOTE.object.replies;
@@ -0,0 +1,254 @@
1
+ /** A Misskey account: a separate `sharedInbox` member, a typed `Key`, and `isCat`. */
2
+ export declare const MISSKEY_ACTOR: {
3
+ "@context": (string | {
4
+ Key: string;
5
+ manuallyApprovesFollowers: string;
6
+ sensitive: string;
7
+ Hashtag: string;
8
+ quoteUrl: string;
9
+ toot: string;
10
+ Emoji: string;
11
+ featured: string;
12
+ discoverable: string;
13
+ schema: string;
14
+ PropertyValue: string;
15
+ value: string;
16
+ misskey: string;
17
+ _misskey_content: string;
18
+ _misskey_quote: string;
19
+ _misskey_reaction: string;
20
+ _misskey_votes: string;
21
+ _misskey_summary: string;
22
+ isCat: string;
23
+ vcard: string;
24
+ })[];
25
+ type: string;
26
+ id: string;
27
+ inbox: string;
28
+ outbox: string;
29
+ followers: string;
30
+ following: string;
31
+ featured: string;
32
+ sharedInbox: string;
33
+ endpoints: {
34
+ sharedInbox: string;
35
+ };
36
+ url: string;
37
+ preferredUsername: string;
38
+ name: string;
39
+ summary: string;
40
+ _misskey_summary: string;
41
+ icon: {
42
+ type: string;
43
+ url: string;
44
+ sensitive: boolean;
45
+ name: null;
46
+ };
47
+ image: null;
48
+ tag: {
49
+ id: string;
50
+ type: string;
51
+ name: string;
52
+ updated: string;
53
+ icon: {
54
+ type: string;
55
+ mediaType: string;
56
+ url: string;
57
+ };
58
+ }[];
59
+ manuallyApprovesFollowers: boolean;
60
+ discoverable: boolean;
61
+ publicKey: {
62
+ id: string;
63
+ type: string;
64
+ owner: string;
65
+ publicKeyPem: string;
66
+ };
67
+ isCat: boolean;
68
+ attachment: {
69
+ type: string;
70
+ name: string;
71
+ value: string;
72
+ }[];
73
+ };
74
+ /** A reply to a local article, with Misskey's markdown source kept beside the HTML. */
75
+ export declare const MISSKEY_CREATE_NOTE: {
76
+ "@context": (string | {
77
+ Key: string;
78
+ manuallyApprovesFollowers: string;
79
+ sensitive: string;
80
+ Hashtag: string;
81
+ quoteUrl: string;
82
+ toot: string;
83
+ Emoji: string;
84
+ featured: string;
85
+ discoverable: string;
86
+ schema: string;
87
+ PropertyValue: string;
88
+ value: string;
89
+ misskey: string;
90
+ _misskey_content: string;
91
+ _misskey_quote: string;
92
+ _misskey_reaction: string;
93
+ _misskey_votes: string;
94
+ _misskey_summary: string;
95
+ isCat: string;
96
+ vcard: string;
97
+ })[];
98
+ id: string;
99
+ actor: string;
100
+ type: string;
101
+ published: string;
102
+ object: {
103
+ id: string;
104
+ type: string;
105
+ attributedTo: string;
106
+ content: string;
107
+ _misskey_content: string;
108
+ source: {
109
+ content: string;
110
+ mediaType: string;
111
+ };
112
+ published: string;
113
+ to: string[];
114
+ cc: string[];
115
+ inReplyTo: string;
116
+ attachment: never[];
117
+ sensitive: boolean;
118
+ tag: ({
119
+ id: string;
120
+ type: string;
121
+ name: string;
122
+ updated: string;
123
+ icon: {
124
+ type: string;
125
+ mediaType: string;
126
+ url: string;
127
+ };
128
+ } | {
129
+ type: string;
130
+ href: string;
131
+ name: string;
132
+ })[];
133
+ };
134
+ to: string[];
135
+ cc: string[];
136
+ };
137
+ /** An emoji reaction: a Like whose `content` and `_misskey_reaction` name the emoji. */
138
+ export declare const MISSKEY_REACTION: {
139
+ "@context": (string | {
140
+ Key: string;
141
+ manuallyApprovesFollowers: string;
142
+ sensitive: string;
143
+ Hashtag: string;
144
+ quoteUrl: string;
145
+ toot: string;
146
+ Emoji: string;
147
+ featured: string;
148
+ discoverable: string;
149
+ schema: string;
150
+ PropertyValue: string;
151
+ value: string;
152
+ misskey: string;
153
+ _misskey_content: string;
154
+ _misskey_quote: string;
155
+ _misskey_reaction: string;
156
+ _misskey_votes: string;
157
+ _misskey_summary: string;
158
+ isCat: string;
159
+ vcard: string;
160
+ })[];
161
+ type: string;
162
+ id: string;
163
+ actor: string;
164
+ object: string;
165
+ content: string;
166
+ _misskey_reaction: string;
167
+ tag: {
168
+ id: string;
169
+ type: string;
170
+ name: string;
171
+ updated: string;
172
+ icon: {
173
+ type: string;
174
+ mediaType: string;
175
+ url: string;
176
+ };
177
+ }[];
178
+ };
179
+ /** A quote of a local article, named by `_misskey_quote` and `quoteUrl`. */
180
+ export declare const MISSKEY_QUOTE: {
181
+ "@context": (string | {
182
+ Key: string;
183
+ manuallyApprovesFollowers: string;
184
+ sensitive: string;
185
+ Hashtag: string;
186
+ quoteUrl: string;
187
+ toot: string;
188
+ Emoji: string;
189
+ featured: string;
190
+ discoverable: string;
191
+ schema: string;
192
+ PropertyValue: string;
193
+ value: string;
194
+ misskey: string;
195
+ _misskey_content: string;
196
+ _misskey_quote: string;
197
+ _misskey_reaction: string;
198
+ _misskey_votes: string;
199
+ _misskey_summary: string;
200
+ isCat: string;
201
+ vcard: string;
202
+ })[];
203
+ id: string;
204
+ actor: string;
205
+ type: string;
206
+ published: string;
207
+ object: {
208
+ id: string;
209
+ type: string;
210
+ attributedTo: string;
211
+ content: string;
212
+ _misskey_content: string;
213
+ _misskey_quote: string;
214
+ quoteUrl: string;
215
+ published: string;
216
+ to: string[];
217
+ cc: string[];
218
+ inReplyTo: null;
219
+ attachment: never[];
220
+ sensitive: boolean;
221
+ tag: never[];
222
+ };
223
+ to: string[];
224
+ cc: string[];
225
+ };
226
+ /** A follow of the local actor; Misskey ids it by follower and followee. */
227
+ export declare const MISSKEY_FOLLOW: {
228
+ "@context": (string | {
229
+ Key: string;
230
+ manuallyApprovesFollowers: string;
231
+ sensitive: string;
232
+ Hashtag: string;
233
+ quoteUrl: string;
234
+ toot: string;
235
+ Emoji: string;
236
+ featured: string;
237
+ discoverable: string;
238
+ schema: string;
239
+ PropertyValue: string;
240
+ value: string;
241
+ misskey: string;
242
+ _misskey_content: string;
243
+ _misskey_quote: string;
244
+ _misskey_reaction: string;
245
+ _misskey_votes: string;
246
+ _misskey_summary: string;
247
+ isCat: string;
248
+ vcard: string;
249
+ })[];
250
+ id: string;
251
+ type: string;
252
+ actor: string;
253
+ object: string;
254
+ };