firefish/packages/backend/src/remote/activitypub/misc/contexts.ts

574 lines
14 KiB
TypeScript

const id_v1 = {
"@context": {
id: "@id",
type: "@type",
cred: "https://w3id.org/credentials#",
dc: "http://purl.org/dc/terms/",
identity: "https://w3id.org/identity#",
perm: "https://w3id.org/permissions#",
ps: "https://w3id.org/payswarm#",
rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
rdfs: "http://www.w3.org/2000/01/rdf-schema#",
sec: "https://w3id.org/security#",
schema: "http://schema.org/",
xsd: "http://www.w3.org/2001/XMLSchema#",
Group: "https://www.w3.org/ns/activitystreams#Group",
claim: { "@id": "cred:claim", "@type": "@id" },
credential: { "@id": "cred:credential", "@type": "@id" },
issued: { "@id": "cred:issued", "@type": "xsd:dateTime" },
issuer: { "@id": "cred:issuer", "@type": "@id" },
recipient: { "@id": "cred:recipient", "@type": "@id" },
Credential: "cred:Credential",
CryptographicKeyCredential: "cred:CryptographicKeyCredential",
about: { "@id": "schema:about", "@type": "@id" },
address: { "@id": "schema:address", "@type": "@id" },
addressCountry: "schema:addressCountry",
addressLocality: "schema:addressLocality",
addressRegion: "schema:addressRegion",
comment: "rdfs:comment",
created: { "@id": "dc:created", "@type": "xsd:dateTime" },
creator: { "@id": "dc:creator", "@type": "@id" },
description: "schema:description",
email: "schema:email",
familyName: "schema:familyName",
givenName: "schema:givenName",
image: { "@id": "schema:image", "@type": "@id" },
label: "rdfs:label",
name: "schema:name",
postalCode: "schema:postalCode",
streetAddress: "schema:streetAddress",
title: "dc:title",
url: { "@id": "schema:url", "@type": "@id" },
Person: "schema:Person",
PostalAddress: "schema:PostalAddress",
Organization: "schema:Organization",
identityService: { "@id": "identity:identityService", "@type": "@id" },
idp: { "@id": "identity:idp", "@type": "@id" },
Identity: "identity:Identity",
paymentProcessor: "ps:processor",
preferences: { "@id": "ps:preferences", "@type": "@vocab" },
cipherAlgorithm: "sec:cipherAlgorithm",
cipherData: "sec:cipherData",
cipherKey: "sec:cipherKey",
digestAlgorithm: "sec:digestAlgorithm",
digestValue: "sec:digestValue",
domain: "sec:domain",
expires: { "@id": "sec:expiration", "@type": "xsd:dateTime" },
initializationVector: "sec:initializationVector",
member: { "@id": "schema:member", "@type": "@id" },
memberOf: { "@id": "schema:memberOf", "@type": "@id" },
nonce: "sec:nonce",
normalizationAlgorithm: "sec:normalizationAlgorithm",
owner: { "@id": "sec:owner", "@type": "@id" },
password: "sec:password",
privateKey: { "@id": "sec:privateKey", "@type": "@id" },
privateKeyPem: "sec:privateKeyPem",
publicKey: { "@id": "sec:publicKey", "@type": "@id" },
publicKeyPem: "sec:publicKeyPem",
publicKeyService: { "@id": "sec:publicKeyService", "@type": "@id" },
revoked: { "@id": "sec:revoked", "@type": "xsd:dateTime" },
signature: "sec:signature",
signatureAlgorithm: "sec:signatureAlgorithm",
signatureValue: "sec:signatureValue",
CryptographicKey: "sec:Key",
EncryptedMessage: "sec:EncryptedMessage",
GraphSignature2012: "sec:GraphSignature2012",
LinkedDataSignature2015: "sec:LinkedDataSignature2015",
accessControl: { "@id": "perm:accessControl", "@type": "@id" },
writePermission: { "@id": "perm:writePermission", "@type": "@id" },
},
};
const security_v1 = {
"@context": {
id: "@id",
type: "@type",
dc: "http://purl.org/dc/terms/",
sec: "https://w3id.org/security#",
xsd: "http://www.w3.org/2001/XMLSchema#",
EcdsaKoblitzSignature2016: "sec:EcdsaKoblitzSignature2016",
Ed25519Signature2018: "sec:Ed25519Signature2018",
EncryptedMessage: "sec:EncryptedMessage",
GraphSignature2012: "sec:GraphSignature2012",
LinkedDataSignature2015: "sec:LinkedDataSignature2015",
LinkedDataSignature2016: "sec:LinkedDataSignature2016",
CryptographicKey: "sec:Key",
authenticationTag: "sec:authenticationTag",
canonicalizationAlgorithm: "sec:canonicalizationAlgorithm",
cipherAlgorithm: "sec:cipherAlgorithm",
cipherData: "sec:cipherData",
cipherKey: "sec:cipherKey",
created: { "@id": "dc:created", "@type": "xsd:dateTime" },
creator: { "@id": "dc:creator", "@type": "@id" },
digestAlgorithm: "sec:digestAlgorithm",
digestValue: "sec:digestValue",
domain: "sec:domain",
encryptionKey: "sec:encryptionKey",
expiration: { "@id": "sec:expiration", "@type": "xsd:dateTime" },
expires: { "@id": "sec:expiration", "@type": "xsd:dateTime" },
initializationVector: "sec:initializationVector",
iterationCount: "sec:iterationCount",
nonce: "sec:nonce",
normalizationAlgorithm: "sec:normalizationAlgorithm",
owner: { "@id": "sec:owner", "@type": "@id" },
password: "sec:password",
privateKey: { "@id": "sec:privateKey", "@type": "@id" },
privateKeyPem: "sec:privateKeyPem",
publicKey: { "@id": "sec:publicKey", "@type": "@id" },
publicKeyBase58: "sec:publicKeyBase58",
publicKeyPem: "sec:publicKeyPem",
publicKeyWif: "sec:publicKeyWif",
publicKeyService: { "@id": "sec:publicKeyService", "@type": "@id" },
revoked: { "@id": "sec:revoked", "@type": "xsd:dateTime" },
salt: "sec:salt",
signature: "sec:signature",
signatureAlgorithm: "sec:signingAlgorithm",
signatureValue: "sec:signatureValue",
},
};
const activitystreams = {
"@context": {
"@vocab": "_:",
xsd: "http://www.w3.org/2001/XMLSchema#",
as: "https://www.w3.org/ns/activitystreams#",
ldp: "http://www.w3.org/ns/ldp#",
vcard: "http://www.w3.org/2006/vcard/ns#",
id: "@id",
type: "@type",
Accept: "as:Accept",
Activity: "as:Activity",
IntransitiveActivity: "as:IntransitiveActivity",
Add: "as:Add",
Announce: "as:Announce",
Application: "as:Application",
Arrive: "as:Arrive",
Article: "as:Article",
Audio: "as:Audio",
Block: "as:Block",
Collection: "as:Collection",
CollectionPage: "as:CollectionPage",
Relationship: "as:Relationship",
Create: "as:Create",
Delete: "as:Delete",
Dislike: "as:Dislike",
Document: "as:Document",
Event: "as:Event",
Follow: "as:Follow",
Flag: "as:Flag",
Group: "as:Group",
Ignore: "as:Ignore",
Image: "as:Image",
Invite: "as:Invite",
Join: "as:Join",
Leave: "as:Leave",
Like: "as:Like",
Link: "as:Link",
Mention: "as:Mention",
Note: "as:Note",
Object: "as:Object",
Offer: "as:Offer",
OrderedCollection: "as:OrderedCollection",
OrderedCollectionPage: "as:OrderedCollectionPage",
Organization: "as:Organization",
Page: "as:Page",
Person: "as:Person",
Place: "as:Place",
Profile: "as:Profile",
Question: "as:Question",
Reject: "as:Reject",
Remove: "as:Remove",
Service: "as:Service",
TentativeAccept: "as:TentativeAccept",
TentativeReject: "as:TentativeReject",
Tombstone: "as:Tombstone",
Undo: "as:Undo",
Update: "as:Update",
Video: "as:Video",
View: "as:View",
Listen: "as:Listen",
Read: "as:Read",
Move: "as:Move",
Travel: "as:Travel",
IsFollowing: "as:IsFollowing",
IsFollowedBy: "as:IsFollowedBy",
IsContact: "as:IsContact",
IsMember: "as:IsMember",
subject: {
"@id": "as:subject",
"@type": "@id",
},
relationship: {
"@id": "as:relationship",
"@type": "@id",
},
actor: {
"@id": "as:actor",
"@type": "@id",
},
attributedTo: {
"@id": "as:attributedTo",
"@type": "@id",
},
attachment: {
"@id": "as:attachment",
"@type": "@id",
},
bcc: {
"@id": "as:bcc",
"@type": "@id",
},
bto: {
"@id": "as:bto",
"@type": "@id",
},
cc: {
"@id": "as:cc",
"@type": "@id",
},
context: {
"@id": "as:context",
"@type": "@id",
},
current: {
"@id": "as:current",
"@type": "@id",
},
first: {
"@id": "as:first",
"@type": "@id",
},
generator: {
"@id": "as:generator",
"@type": "@id",
},
icon: {
"@id": "as:icon",
"@type": "@id",
},
image: {
"@id": "as:image",
"@type": "@id",
},
inReplyTo: {
"@id": "as:inReplyTo",
"@type": "@id",
},
items: {
"@id": "as:items",
"@type": "@id",
},
instrument: {
"@id": "as:instrument",
"@type": "@id",
},
orderedItems: {
"@id": "as:items",
"@type": "@id",
"@container": "@list",
},
last: {
"@id": "as:last",
"@type": "@id",
},
location: {
"@id": "as:location",
"@type": "@id",
},
next: {
"@id": "as:next",
"@type": "@id",
},
object: {
"@id": "as:object",
"@type": "@id",
},
oneOf: {
"@id": "as:oneOf",
"@type": "@id",
},
anyOf: {
"@id": "as:anyOf",
"@type": "@id",
},
closed: {
"@id": "as:closed",
"@type": "xsd:dateTime",
},
origin: {
"@id": "as:origin",
"@type": "@id",
},
accuracy: {
"@id": "as:accuracy",
"@type": "xsd:float",
},
prev: {
"@id": "as:prev",
"@type": "@id",
},
preview: {
"@id": "as:preview",
"@type": "@id",
},
replies: {
"@id": "as:replies",
"@type": "@id",
},
result: {
"@id": "as:result",
"@type": "@id",
},
audience: {
"@id": "as:audience",
"@type": "@id",
},
partOf: {
"@id": "as:partOf",
"@type": "@id",
},
tag: {
"@id": "as:tag",
"@type": "@id",
},
target: {
"@id": "as:target",
"@type": "@id",
},
to: {
"@id": "as:to",
"@type": "@id",
},
url: {
"@id": "as:url",
"@type": "@id",
},
altitude: {
"@id": "as:altitude",
"@type": "xsd:float",
},
content: "as:content",
contentMap: {
"@id": "as:content",
"@container": "@language",
},
name: "as:name",
nameMap: {
"@id": "as:name",
"@container": "@language",
},
duration: {
"@id": "as:duration",
"@type": "xsd:duration",
},
endTime: {
"@id": "as:endTime",
"@type": "xsd:dateTime",
},
height: {
"@id": "as:height",
"@type": "xsd:nonNegativeInteger",
},
href: {
"@id": "as:href",
"@type": "@id",
},
hreflang: "as:hreflang",
latitude: {
"@id": "as:latitude",
"@type": "xsd:float",
},
longitude: {
"@id": "as:longitude",
"@type": "xsd:float",
},
mediaType: "as:mediaType",
published: {
"@id": "as:published",
"@type": "xsd:dateTime",
},
radius: {
"@id": "as:radius",
"@type": "xsd:float",
},
rel: "as:rel",
startIndex: {
"@id": "as:startIndex",
"@type": "xsd:nonNegativeInteger",
},
startTime: {
"@id": "as:startTime",
"@type": "xsd:dateTime",
},
summary: "as:summary",
summaryMap: {
"@id": "as:summary",
"@container": "@language",
},
totalItems: {
"@id": "as:totalItems",
"@type": "xsd:nonNegativeInteger",
},
units: "as:units",
updated: {
"@id": "as:updated",
"@type": "xsd:dateTime",
},
width: {
"@id": "as:width",
"@type": "xsd:nonNegativeInteger",
},
describes: {
"@id": "as:describes",
"@type": "@id",
},
formerType: {
"@id": "as:formerType",
"@type": "@id",
},
deleted: {
"@id": "as:deleted",
"@type": "xsd:dateTime",
},
inbox: {
"@id": "ldp:inbox",
"@type": "@id",
},
outbox: {
"@id": "as:outbox",
"@type": "@id",
},
following: {
"@id": "as:following",
"@type": "@id",
},
followers: {
"@id": "as:followers",
"@type": "@id",
},
streams: {
"@id": "as:streams",
"@type": "@id",
},
preferredUsername: "as:preferredUsername",
endpoints: {
"@id": "as:endpoints",
"@type": "@id",
},
uploadMedia: {
"@id": "as:uploadMedia",
"@type": "@id",
},
proxyUrl: {
"@id": "as:proxyUrl",
"@type": "@id",
},
liked: {
"@id": "as:liked",
"@type": "@id",
},
oauthAuthorizationEndpoint: {
"@id": "as:oauthAuthorizationEndpoint",
"@type": "@id",
},
oauthTokenEndpoint: {
"@id": "as:oauthTokenEndpoint",
"@type": "@id",
},
provideClientKey: {
"@id": "as:provideClientKey",
"@type": "@id",
},
signClientKey: {
"@id": "as:signClientKey",
"@type": "@id",
},
sharedInbox: {
"@id": "as:sharedInbox",
"@type": "@id",
},
Public: {
"@id": "as:Public",
"@type": "@id",
},
source: "as:source",
likes: {
"@id": "as:likes",
"@type": "@id",
},
shares: {
"@id": "as:shares",
"@type": "@id",
},
alsoKnownAs: {
"@id": "as:alsoKnownAs",
"@type": "@id",
},
},
};
export const WellKnownContext = {
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
// as non-standards
manuallyApprovesFollowers: "as:manuallyApprovesFollowers",
movedTo: {
"@id": "https://www.w3.org/ns/activitystreams#movedTo",
"@type": "@id",
},
movedToUri: "as:movedTo",
sensitive: "as:sensitive",
Hashtag: "as:Hashtag",
quoteUri: "fedibird:quoteUri",
quoteUrl: "as:quoteUrl",
// Mastodon
toot: "http://joinmastodon.org/ns#",
Emoji: "toot:Emoji",
featured: "toot:featured",
discoverable: "toot:discoverable",
indexable: "toot:indexable",
// schema
schema: "http://schema.org#",
PropertyValue: "schema:PropertyValue",
value: "schema:value",
// Firefish
firefish: "https://firefish.dev/ns#",
speakAsCat: "firefish:speakAsCat",
// Misskey
misskey: "https://misskey-hub.net/ns#",
_misskey_talk: "misskey:_misskey_talk",
_misskey_reaction: "misskey:_misskey_reaction",
_misskey_votes: "misskey:_misskey_votes",
_misskey_summary: "misskey:_misskey_summary",
isCat: "misskey:isCat",
// Fedibird
fedibird: "http://fedibird.com/ns#",
// vcard
vcard: "http://www.w3.org/2006/vcard/ns#",
// litepub
litepub: "http://litepub.social/ns#",
ChatMessage: "litepub:ChatMessage",
directMessage: "litepub:directMessage",
},
],
};
export const CONTEXTS: Record<string, unknown> = {
"https://w3id.org/identity/v1": id_v1,
"https://w3id.org/security/v1": security_v1,
"https://www.w3.org/ns/activitystreams": activitystreams,
};